Logo ROOT   6.19/01
Reference Guide
TTree.h
Go to the documentation of this file.
1 // @(#)root/tree:$Id$
2 // Author: Rene Brun 12/01/96
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT_TTree
13 #define ROOT_TTree
14 
15 //////////////////////////////////////////////////////////////////////////
16 // //
17 // TTree //
18 // //
19 // A TTree object is a list of TBranch. //
20 // To Create a TTree object one must: //
21 // - Create the TTree header via the TTree constructor //
22 // - Call the TBranch constructor for every branch. //
23 // //
24 // To Fill this object, use member function Fill with no parameters. //
25 // The Fill function loops on all defined TBranch. //
26 // //
27 //////////////////////////////////////////////////////////////////////////
28 
29 #include "Compression.h"
30 #include "ROOT/TIOFeatures.hxx"
31 #include "TArrayD.h"
32 #include "TArrayI.h"
33 #include "TAttFill.h"
34 #include "TAttLine.h"
35 #include "TAttMarker.h"
36 #include "TBranch.h"
37 #include "TBuffer.h"
38 #include "TClass.h"
39 #include "TDataType.h"
40 #include "TDirectory.h"
41 #include "TObjArray.h"
42 #include "TVirtualTreePlayer.h"
43 
44 #include <array>
45 #include <atomic>
46 
47 
48 class TBranch;
49 class TBrowser;
50 class TFile;
51 class TLeaf;
52 class TH1;
53 class TTreeFormula;
54 class TPolyMarker;
55 class TEventList;
56 class TEntryList;
57 class TList;
58 class TSQLResult;
59 class TSelector;
60 class TPrincipal;
61 class TFriendElement;
62 class TCut;
63 class TVirtualIndex;
64 class TBranchRef;
65 class TBasket;
66 class TStreamerInfo;
67 class TTreeCache;
68 class TTreeCloner;
69 class TFileMergeInfo;
70 class TVirtualPerfStats;
71 
72 class TTree : public TNamed, public TAttLine, public TAttFill, public TAttMarker {
73 
75 
76 protected:
77  Long64_t fEntries; ///< Number of entries
78 // NOTE: cannot use std::atomic for these counters as it cannot be serialized.
79  Long64_t fTotBytes; ///< Total number of bytes in all branches before compression
80  Long64_t fZipBytes; ///< Total number of bytes in all branches after compression
81  Long64_t fSavedBytes; ///< Number of autosaved bytes
82  Long64_t fFlushedBytes; ///< Number of auto-flushed bytes
83  Double_t fWeight; ///< Tree weight (see TTree::SetWeight)
84  Int_t fTimerInterval; ///< Timer interval in milliseconds
85  Int_t fScanField; ///< Number of runs before prompting in Scan
86  Int_t fUpdate; ///< Update frequency for EntryLoop
87  Int_t fDefaultEntryOffsetLen; ///< Initial Length of fEntryOffset table in the basket buffers
88  Int_t fNClusterRange; ///< Number of Cluster range in addition to the one defined by 'AutoFlush'
89  Int_t fMaxClusterRange; ///<! Memory allocated for the cluster range.
90  Long64_t fMaxEntries; ///< Maximum number of entries in case of circular buffers
91  Long64_t fMaxEntryLoop; ///< Maximum number of entries to process
92  Long64_t fMaxVirtualSize; ///< Maximum total size of buffers kept in memory
93  Long64_t fAutoSave; ///< Autosave tree when fAutoSave entries written or -fAutoSave (compressed) bytes produced
94  Long64_t fAutoFlush; ///< Auto-flush tree when fAutoFlush entries written or -fAutoFlush (compressed) bytes produced
95  Long64_t fEstimate; ///< Number of entries to estimate histogram limits
96  Long64_t *fClusterRangeEnd; ///<[fNClusterRange] Last entry of a cluster range.
97  Long64_t *fClusterSize; ///<[fNClusterRange] Number of entries in each cluster for a given range.
98  Long64_t fCacheSize; ///<! Maximum size of file buffers
99  Long64_t fChainOffset; ///<! Offset of 1st entry of this Tree in a TChain
100  Long64_t fReadEntry; ///<! Number of the entry being processed
101  std::atomic<Long64_t> fTotalBuffers; ///<! Total number of bytes in branch buffers
102  Int_t fPacketSize; ///<! Number of entries in one packet for parallel root
103  Int_t fNfill; ///<! Local for EntryLoop
104  Int_t fDebug; ///<! Debug level
105  Long64_t fDebugMin; ///<! First entry number to debug
106  Long64_t fDebugMax; ///<! Last entry number to debug
107  TIOFeatures fIOFeatures{0}; ///< IO features to define for newly-written baskets and branches.
108  Int_t fMakeClass; ///<! not zero when processing code generated by MakeClass
109  Int_t fFileNumber; ///<! current file number (if file extensions)
110  TObject *fNotify; ///<! Object to be notified when loading a Tree
111  TDirectory *fDirectory; ///<! Pointer to directory holding this tree
112  TObjArray fBranches; ///< List of Branches
113  TObjArray fLeaves; ///< Direct pointers to individual branch leaves
114  TList *fAliases; ///< List of aliases for expressions based on the tree branches.
115  TEventList *fEventList; ///<! Pointer to event selection list (if one)
116  TEntryList *fEntryList; ///<! Pointer to event selection list (if one)
117  TArrayD fIndexValues; ///< Sorted index values
118  TArrayI fIndex; ///< Index of sorted values
119  TVirtualIndex *fTreeIndex; ///< Pointer to the tree Index (if any)
120  TList *fFriends; ///< pointer to list of friend elements
121  TVirtualPerfStats *fPerfStats; ///<! pointer to the current perf stats object
122  TList *fUserInfo; ///< pointer to a list of user objects associated to this Tree
123  TVirtualTreePlayer *fPlayer; ///<! Pointer to current Tree player
124  TList *fClones; ///<! List of cloned trees which share our addresses
125  TBranchRef *fBranchRef; ///< Branch supporting the TRefTable (if any)
126  UInt_t fFriendLockStatus; ///<! Record which method is locking the friend recursion
127  TBuffer *fTransientBuffer; ///<! Pointer to the current transient buffer.
128  Bool_t fCacheDoAutoInit; ///<! true if cache auto creation or resize check is needed
129  Bool_t fCacheDoClusterPrefetch;///<! true if cache is prefetching whole clusters
130  Bool_t fCacheUserSet; ///<! true if the cache setting was explicitly given by user
131  Bool_t fIMTEnabled; ///<! true if implicit multi-threading is enabled for this tree
132  UInt_t fNEntriesSinceSorting; ///<! Number of entries processed since the last re-sorting of branches
133  std::vector<std::pair<Long64_t,TBranch*>> fSortedBranches; ///<! Branches to be processed in parallel when IMT is on, sorted by average task time
134  std::vector<TBranch*> fSeqBranches; ///<! Branches to be processed sequentially when IMT is on
135  Float_t fTargetMemoryRatio{1.1f}; ///<! Ratio for memory usage in uncompressed buffers versus actual occupancy. 1.0
136  /// indicates basket should be resized to exact memory usage, but causes significant
137 /// memory churn.
138 #ifdef R__TRACK_BASKET_ALLOC_TIME
139  mutable std::atomic<ULong64_t> fAllocationTime{0}; ///<! Time spent reallocating basket memory buffers, in microseconds.
140 #endif
141  mutable std::atomic<UInt_t> fAllocationCount{0}; ///<! Number of reallocations basket memory buffers.
142 
143  static Int_t fgBranchStyle; ///< Old/New branch style
144  static Long64_t fgMaxTreeSize; ///< Maximum size of a file containing a Tree
145 
146 private:
147  // For simplicity, although fIMTFlush is always disabled in non-IMT builds, we don't #ifdef it out.
148  mutable Bool_t fIMTFlush{false}; ///<! True if we are doing a multithreaded flush.
149  mutable std::atomic<Long64_t> fIMTTotBytes; ///<! Total bytes for the IMT flush baskets
150  mutable std::atomic<Long64_t> fIMTZipBytes; ///<! Zip bytes for the IMT flush baskets.
151 
152  void InitializeBranchLists(bool checkLeafCount);
153  void SortBranchesByTime();
154  Int_t FlushBasketsImpl() const;
155  void MarkEventCluster();
156 
157 protected:
158  virtual void KeepCircular();
159  virtual TBranch *BranchImp(const char* branchname, const char* classname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
160  virtual TBranch *BranchImp(const char* branchname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
161  virtual TBranch *BranchImpRef(const char* branchname, const char* classname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
162  virtual TBranch *BranchImpRef(const char* branchname, TClass* ptrClass, EDataType datatype, void* addobj, Int_t bufsize, Int_t splitlevel);
163  virtual TBranch *BranchImpArr(const char* branchname, EDataType datatype, std::size_t N, void* addobj, Int_t bufsize, Int_t splitlevel);
164  virtual Int_t CheckBranchAddressType(TBranch* branch, TClass* ptrClass, EDataType datatype, Bool_t ptr);
165  virtual TBranch *BronchExec(const char* name, const char* classname, void* addobj, Bool_t isptrptr, Int_t bufsize, Int_t splitlevel);
166  friend TBranch *TTreeBranchImpRef(TTree *tree, const char* branchname, TClass* ptrClass, EDataType datatype, void* addobj, Int_t bufsize, Int_t splitlevel);
167  Int_t SetBranchAddressImp(TBranch *branch, void* addr, TBranch** ptr);
168  virtual TLeaf *GetLeafImpl(const char* branchname, const char* leafname);
169 
170  Long64_t GetCacheAutoSize(Bool_t withDefault = kFALSE) const;
171  char GetNewlineValue(std::istream &inputStream);
172  void ImportClusterRanges(TTree *fromtree);
173  void MoveReadCache(TFile *src, TDirectory *dir);
174  Int_t SetCacheSizeAux(Bool_t autocache = kTRUE, Long64_t cacheSize = 0);
175 
176  class TFriendLock {
177  // Helper class to prevent infinite recursion in the
178  // usage of TTree Friends. Implemented in TTree.cxx.
179  TTree *fTree; // Pointer to the locked tree
180  UInt_t fMethodBit; // BIT for the locked method
181  Bool_t fPrevious; // Previous value of the BIT.
182 
183  protected:
184  TFriendLock(const TFriendLock&);
186 
187  public:
188  TFriendLock(TTree* tree, UInt_t methodbit);
189  ~TFriendLock();
190  };
191  friend class TFriendLock;
192  // So that the index class can use TFriendLock:
193  friend class TTreeIndex;
194  friend class TChainIndex;
195  // So that the TTreeCloner can access the protected interfaces
196  friend class TTreeCloner;
197 
198  // use to update fFriendLockStatus
208  kGetLeaf = BIT(8),
210  kPrint = BIT(10),
213  };
214 
215 public:
216  // Used as the max value for any TTree range operation.
218 
219  // SetBranchAddress return values
224  kMismatch = -2,
226  kMatch = 0,
230  kVoidPtr = 4,
232  };
233 
234  // TTree status bits
235  enum EStatusBits {
237  kCircular = BIT(12),
238  kOnlyFlushAtCluster = BIT(14) // If set, the branch's buffers will grow until an event cluster boundary is hit,
239  // guaranteeing a basket per cluster. This mode does not provide any guarantee on the
240  // memory bounds in the case of extremely large events.
241  };
242 
243  // Split level modifier
244  enum {
246  };
247 
249  {
250  private:
251  TTree *fTree; // TTree upon which we are iterating.
252  Int_t fClusterRange; // Which cluster range are we looking at.
253  Long64_t fStartEntry; // Where does the cluster start.
254  Long64_t fNextEntry; // Where does the cluster end (exclusive).
255  Long64_t fEstimatedSize; // If positive, the calculated estimated tree size.
256 
258 
259  protected:
260  friend class TTree;
261  TClusterIterator(TTree *tree, Long64_t firstEntry);
262 
263  public:
264  // Intentionally used the default copy constructor and default destructor
265  // as the TClusterIterator does not own the TTree.
266  // TClusterIterator(const TClusterIterator&);
267  // ~TClusterIterator();
268 
269  // No public constructors, the iterator must be
270  // created via TTree::GetClusterIterator
271 
272  // Move on to the next cluster and return the starting entry
273  // of this next cluster
274  Long64_t Next();
275 
276  // Move on to the previous cluster and return the starting entry
277  // of this previous cluster
278  Long64_t Previous();
279 
280  // Return the start entry of the current cluster.
282  return fStartEntry;
283  }
284 
285  // Return the first entry of the next cluster.
287  return fNextEntry;
288  }
289 
290  Long64_t operator()() { return Next(); }
291  };
292 
293  TTree();
294  TTree(const char* name, const char* title, Int_t splitlevel = 99, TDirectory* dir = gDirectory);
295  virtual ~TTree();
296 
297  TTree(const TTree& tt) = delete;
298  TTree& operator=(const TTree& tt) = delete;
299 
300  virtual Int_t AddBranchToCache(const char *bname, Bool_t subbranches = kFALSE);
301  virtual Int_t AddBranchToCache(TBranch *branch, Bool_t subbranches = kFALSE);
302  virtual Int_t DropBranchFromCache(const char *bname, Bool_t subbranches = kFALSE);
303  virtual Int_t DropBranchFromCache(TBranch *branch, Bool_t subbranches = kFALSE);
304  void AddClone(TTree*);
305  virtual TFriendElement *AddFriend(const char* treename, const char* filename = "");
306  virtual TFriendElement *AddFriend(const char* treename, TFile* file);
307  virtual TFriendElement *AddFriend(TTree* tree, const char* alias = "", Bool_t warn = kFALSE);
308  // As the TBasket invokes Add{Tot,Zip}Bytes on its parent tree, we must do these updates in a thread-safe
309  // manner only when we are flushing multiple baskets in parallel.
310  virtual void AddTotBytes(Int_t tot) { if (fIMTFlush) { fIMTTotBytes += tot; } else { fTotBytes += tot; } }
311  virtual void AddZipBytes(Int_t zip) { if (fIMTFlush) { fIMTZipBytes += zip; } else { fZipBytes += zip; } }
312 // NOTE: these counters aren't thread safe like the ones above.
313 #ifdef R__TRACK_BASKET_ALLOC_TIME
314  void AddAllocationTime(ULong64_t time) { fAllocationTime += time; }
315 #endif
316  void AddAllocationCount(UInt_t count) { fAllocationCount += count; }
317  virtual Long64_t AutoSave(Option_t* option = "");
318 
319  /// Add a new branch, and infer the data type from the type of `obj` being passed.
320  ///
321  /// \note This and the next overload should cover most cases for creating a branch. Try to use these two whenever
322  /// possible, unless e.g. type conversions are needed.
323  ///
324  /// \param[in] name Name of the branch to be created.
325  /// \param[in] obj Address of the object to be added. Make sure to pass a pointer to the actual type/class that
326  /// should be stored in the tree (no pointers to base classes). When calling Fill(), the current value of the type/object will be saved.
327  /// \param[in] bufsize The buffer size in bytes for this branch. When the buffer is full, it is compressed and written to disc.
328  /// The default value of 32000 bytes and should be ok for most simple types. Larger buffers (e.g. 256000) if your Tree is not split and each entry is large (Megabytes).
329  /// A small value for bufsize is beneficial if entries in the Tree are accessed randomly and the Tree is in split mode.
330  /// \param[in] splitlevel If T is a class or struct and splitlevel > 0, the members of the object are serialised as separate branches.
331  /// \return Pointer to the TBranch that was created. The branch is owned by the tree.
332  template <class T> TBranch *Branch(const char* name, T* obj, Int_t bufsize = 32000, Int_t splitlevel = 99)
333  {
334  return BranchImpRef(name, TClass::GetClass<T>(), TDataType::GetType(typeid(T)), obj, bufsize, splitlevel);
335  }
336 
337  /// Add a new branch, and infer the data type from the array `addobj` being passed.
338  ///
339  /// \note This and the previous overload should cover most cases for creating a branch. Try to use these two whenever
340  /// possible, unless e.g. type conversions are needed.
341  ///
342  /// \param[in] name Name of the branch to be created.
343  /// \param[in] obj Array of the objects to be added. When calling Fill(), the current value of the type/object will be saved.
344  /// \param[in] bufsize he buffer size in bytes for this branch. When the buffer is full, it is compressed and written to disc.
345  /// The default value of 32000 bytes and should be ok for most simple types. Larger buffers (e.g. 256000) if your Tree is not split and each entry is large (Megabytes).
346  /// A small value for bufsize is beneficial if entries in the Tree are accessed randomly and the Tree is in split mode.
347  /// \param[in] splitlevel If T is a class or struct and splitlevel > 0, the members of the object are serialised as separate branches.
348  /// \return Pointer to the TBranch that was created. The branch is owned by the tree.
349  template <class T> TBranch *Branch(const char* name, T** addobj, Int_t bufsize = 32000, Int_t splitlevel = 99)
350  {
351  return BranchImp(name, TClass::GetClass<T>(), addobj, bufsize, splitlevel);
352  }
353 
354  virtual Int_t Branch(TCollection* list, Int_t bufsize = 32000, Int_t splitlevel = 99, const char* name = "");
355  virtual Int_t Branch(TList* list, Int_t bufsize = 32000, Int_t splitlevel = 99);
356  virtual Int_t Branch(const char* folder, Int_t bufsize = 32000, Int_t splitlevel = 99);
357  virtual TBranch *Branch(const char* name, void* address, const char* leaflist, Int_t bufsize = 32000);
358  TBranch *Branch(const char* name, char* address, const char* leaflist, Int_t bufsize = 32000)
359  {
360  // Overload to avoid confusion between this signature and the template instance.
361  return Branch(name,(void*)address,leaflist,bufsize);
362  }
363  TBranch *Branch(const char* name, Long_t address, const char* leaflist, Int_t bufsize = 32000)
364  {
365  // Overload to avoid confusion between this signature and the template instance.
366  return Branch(name,(void*)address,leaflist,bufsize);
367  }
368  TBranch *Branch(const char* name, int address, const char* leaflist, Int_t bufsize = 32000)
369  {
370  // Overload to avoid confusion between this signature and the template instance.
371  return Branch(name,(void*)(Long_t)address,leaflist,bufsize);
372  }
373  virtual TBranch *Branch(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 99);
374  template <class T> TBranch *Branch(const char* name, const char* classname, T* obj, Int_t bufsize = 32000, Int_t splitlevel = 99)
375  {
376  // See BranchImpRed for details. Here we __ignore
377  return BranchImpRef(name, classname, TClass::GetClass<T>(), obj, bufsize, splitlevel);
378  }
379  template <class T> TBranch *Branch(const char* name, const char* classname, T** addobj, Int_t bufsize = 32000, Int_t splitlevel = 99)
380  {
381  // See BranchImp for details
382  return BranchImp(name, classname, TClass::GetClass<T>(), addobj, bufsize, splitlevel);
383  }
384  template <typename T, std::size_t N> TBranch *Branch(const char* name, std::array<T, N> *obj, Int_t bufsize = 32000, Int_t splitlevel = 99)
385  {
386  TClass *cl = TClass::GetClass<T>();
387  if (cl) {
388  TClass *arrCl = TClass::GetClass<std::array<T, N>>();
389  Error("Branch","std::array of objects not yet supported as top level branch object (the class is %s)",
390  arrCl ? arrCl->GetName() : cl->GetName());
391  return nullptr;
392  }
393  return BranchImpArr(name, TDataType::GetType(typeid(T)), N, obj, bufsize, splitlevel);
394  }
395  virtual TBranch *Bronch(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 99);
396  virtual TBranch *BranchOld(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 1);
397  virtual TBranch *BranchRef();
398  virtual void Browse(TBrowser*);
399  virtual Int_t BuildIndex(const char* majorname, const char* minorname = "0");
400  TStreamerInfo *BuildStreamerInfo(TClass* cl, void* pointer = 0, Bool_t canOptimize = kTRUE);
401  virtual TFile *ChangeFile(TFile* file);
402  virtual TTree *CloneTree(Long64_t nentries = -1, Option_t* option = "");
403  virtual void CopyAddresses(TTree*,Bool_t undo = kFALSE);
404  virtual Long64_t CopyEntries(TTree* tree, Long64_t nentries = -1, Option_t *option = "");
405  virtual TTree *CopyTree(const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
406  virtual TBasket *CreateBasket(TBranch*);
407  virtual void DirectoryAutoAdd(TDirectory *);
408  Int_t Debug() const { return fDebug; }
409  virtual void Delete(Option_t* option = ""); // *MENU*
410  virtual void Draw(Option_t* opt) { Draw(opt, "", "", kMaxEntries, 0); }
411  virtual Long64_t Draw(const char* varexp, const TCut& selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
412  virtual Long64_t Draw(const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
413  virtual void DropBaskets();
414  virtual void DropBuffers(Int_t nbytes);
415  virtual Int_t Fill();
416  virtual TBranch *FindBranch(const char* name);
417  virtual TLeaf *FindLeaf(const char* name);
418  virtual Int_t Fit(const char* funcname, const char* varexp, const char* selection = "", Option_t* option = "", Option_t* goption = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
419  virtual Int_t FlushBaskets(Bool_t create_cluster = true) const;
420  virtual const char *GetAlias(const char* aliasName) const;
422 #ifdef R__TRACK_BASKET_ALLOC_TIME
423  ULong64_t GetAllocationTime() const { return fAllocationTime; }
424 #endif
425  virtual Long64_t GetAutoFlush() const {return fAutoFlush;}
426  virtual Long64_t GetAutoSave() const {return fAutoSave;}
427  virtual TBranch *GetBranch(const char* name);
428  virtual TBranchRef *GetBranchRef() const { return fBranchRef; };
429  virtual Bool_t GetBranchStatus(const char* branchname) const;
430  static Int_t GetBranchStyle();
431  virtual Long64_t GetCacheSize() const { return fCacheSize; }
432  virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
433  virtual Long64_t GetChainEntryNumber(Long64_t entry) const { return entry; }
434  virtual Long64_t GetChainOffset() const { return fChainOffset; }
436  TFile *GetCurrentFile() const;
438  Long64_t GetDebugMax() const { return fDebugMax; }
439  Long64_t GetDebugMin() const { return fDebugMin; }
440  TDirectory *GetDirectory() const { return fDirectory; }
441  virtual Long64_t GetEntries() const { return fEntries; }
442  virtual Long64_t GetEntries(const char *selection);
443  virtual Long64_t GetEntriesFast() const { return fEntries; }
444  virtual Long64_t GetEntriesFriend() const;
445  virtual Long64_t GetEstimate() const { return fEstimate; }
446  virtual Int_t GetEntry(Long64_t entry = 0, Int_t getall = 0);
447  Int_t GetEvent(Long64_t entry = 0, Int_t getall = 0) { return GetEntry(entry, getall); }
448  virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor = 0);
449  virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor = 0) const;
450  virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor = 0) const;
451  TEventList *GetEventList() const { return fEventList; }
452  virtual TEntryList *GetEntryList();
453  virtual Long64_t GetEntryNumber(Long64_t entry) const;
454  virtual Int_t GetFileNumber() const { return fFileNumber; }
455  virtual TTree *GetFriend(const char*) const;
456  virtual const char *GetFriendAlias(TTree*) const;
458  virtual Bool_t GetImplicitMT() { return fIMTEnabled; }
459  virtual Int_t *GetIndex() { return &fIndex.fArray[0]; }
460  virtual Double_t *GetIndexValues() { return &fIndexValues.fArray[0]; }
463  virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
464  virtual TLeaf *GetLeaf(const char* name);
465  virtual TList *GetListOfClones() { return fClones; }
466  virtual TObjArray *GetListOfBranches() { return &fBranches; }
467  virtual TObjArray *GetListOfLeaves() { return &fLeaves; }
468  virtual TList *GetListOfFriends() const { return fFriends; }
469  virtual TList *GetListOfAliases() const { return fAliases; }
470 
471  // GetMakeClass is left non-virtual for efficiency reason.
472  // Making it virtual affects the performance of the I/O
473  Int_t GetMakeClass() const { return fMakeClass; }
474 
475  virtual Long64_t GetMaxEntryLoop() const { return fMaxEntryLoop; }
476  virtual Double_t GetMaximum(const char* columname);
477  static Long64_t GetMaxTreeSize();
478  virtual Long64_t GetMaxVirtualSize() const { return fMaxVirtualSize; }
479  virtual Double_t GetMinimum(const char* columname);
480  virtual Int_t GetNbranches() { return fBranches.GetEntriesFast(); }
481  TObject *GetNotify() const { return fNotify; }
483  virtual Int_t GetPacketSize() const { return fPacketSize; }
484  virtual TVirtualPerfStats *GetPerfStats() const { return fPerfStats; }
487  virtual Long64_t GetReadEntry() const { return fReadEntry; }
488  virtual Long64_t GetReadEvent() const { return fReadEntry; }
489  virtual Int_t GetScanField() const { return fScanField; }
492  virtual Int_t GetTimerInterval() const { return fTimerInterval; }
494  virtual Long64_t GetTotBytes() const { return fTotBytes; }
495  virtual TTree *GetTree() const { return const_cast<TTree*>(this); }
496  virtual TVirtualIndex *GetTreeIndex() const { return fTreeIndex; }
497  virtual Int_t GetTreeNumber() const { return 0; }
499  virtual Int_t GetUpdate() const { return fUpdate; }
500  virtual TList *GetUserInfo();
501  // See TSelectorDraw::GetVar
502  TTreeFormula *GetVar(Int_t i) { return GetPlayer()->GetVar(i); }
503  // See TSelectorDraw::GetVar
504  TTreeFormula *GetVar1() { return GetPlayer()->GetVar1(); }
505  // See TSelectorDraw::GetVar
506  TTreeFormula *GetVar2() { return GetPlayer()->GetVar2(); }
507  // See TSelectorDraw::GetVar
508  TTreeFormula *GetVar3() { return GetPlayer()->GetVar3(); }
509  // See TSelectorDraw::GetVar
510  TTreeFormula *GetVar4() { return GetPlayer()->GetVar4(); }
511  // See TSelectorDraw::GetVal
512  virtual Double_t *GetVal(Int_t i) { return GetPlayer()->GetVal(i); }
513  // See TSelectorDraw::GetVal
514  virtual Double_t *GetV1() { return GetPlayer()->GetV1(); }
515  // See TSelectorDraw::GetVal
516  virtual Double_t *GetV2() { return GetPlayer()->GetV2(); }
517  // See TSelectorDraw::GetVal
518  virtual Double_t *GetV3() { return GetPlayer()->GetV3(); }
519  // See TSelectorDraw::GetVal
520  virtual Double_t *GetV4() { return GetPlayer()->GetV4(); }
521  virtual Double_t *GetW() { return GetPlayer()->GetW(); }
522  virtual Double_t GetWeight() const { return fWeight; }
523  virtual Long64_t GetZipBytes() const { return fZipBytes; }
524  virtual void IncrementTotalBuffers(Int_t nbytes) { fTotalBuffers += nbytes; }
525  Bool_t IsFolder() const { return kTRUE; }
526  virtual Int_t LoadBaskets(Long64_t maxmemory = 2000000000);
527  virtual Long64_t LoadTree(Long64_t entry);
528  virtual Long64_t LoadTreeFriend(Long64_t entry, TTree* T);
529  virtual Int_t MakeClass(const char* classname = 0, Option_t* option = "");
530  virtual Int_t MakeCode(const char* filename = 0);
531  virtual Int_t MakeProxy(const char* classname, const char* macrofilename = 0, const char* cutfilename = 0, const char* option = 0, Int_t maxUnrolling = 3);
532  virtual Int_t MakeSelector(const char* selector = 0, Option_t* option = "");
533  Bool_t MemoryFull(Int_t nbytes);
534  virtual Long64_t Merge(TCollection* list, Option_t* option = "");
535  virtual Long64_t Merge(TCollection* list, TFileMergeInfo *info);
536  static TTree *MergeTrees(TList* list, Option_t* option = "");
537  virtual Bool_t Notify();
538  virtual void OptimizeBaskets(ULong64_t maxMemory=10000000, Float_t minComp=1.1, Option_t *option="");
539  TPrincipal *Principal(const char* varexp = "", const char* selection = "", Option_t* option = "np", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
540  virtual void Print(Option_t* option = "") const; // *MENU*
541  virtual void PrintCacheStats(Option_t* option = "") const;
542  virtual Long64_t Process(const char* filename, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
543  virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
544  virtual Long64_t Project(const char* hname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
545  virtual TSQLResult *Query(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
546  virtual Long64_t ReadFile(const char* filename, const char* branchDescriptor = "", char delimiter = ' ');
547  virtual Long64_t ReadStream(std::istream& inputStream, const char* branchDescriptor = "", char delimiter = ' ');
548  virtual void Refresh();
549  virtual void RecursiveRemove(TObject *obj);
550  virtual void RemoveFriend(TTree*);
551  virtual void Reset(Option_t* option = "");
552  virtual void ResetAfterMerge(TFileMergeInfo *);
553  virtual void ResetBranchAddress(TBranch *);
554  virtual void ResetBranchAddresses();
555  virtual Long64_t Scan(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
556  virtual Bool_t SetAlias(const char* aliasName, const char* aliasFormula);
557  virtual void SetAutoSave(Long64_t autos = -300000000);
558  virtual void SetAutoFlush(Long64_t autof = -30000000);
559  virtual void SetBasketSize(const char* bname, Int_t buffsize = 16000);
560  virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = 0);
561  virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
562  virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
563  template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = 0) {
564  TClass *cl = TClass::GetClass<T>();
566  if (cl==0) type = TDataType::GetType(typeid(T));
567  return SetBranchAddress(bname,add,ptr,cl,type,true);
568  }
569 #ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
570  // This can only be used when the template overload resolution can distinguish between
571  // T* and T**
572  template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = 0) {
573  TClass *cl = TClass::GetClass<T>();
575  if (cl==0) type = TDataType::GetType(typeid(T));
576  return SetBranchAddress(bname,add,ptr,cl,type,false);
577  }
578 #endif
579  virtual void SetBranchStatus(const char* bname, Bool_t status = 1, UInt_t* found = 0);
580  static void SetBranchStyle(Int_t style = 1); //style=0 for old branch, =1 for new branch style
581  virtual Int_t SetCacheSize(Long64_t cachesize = -1);
583  virtual void SetCacheLearnEntries(Int_t n=10);
584  virtual void SetChainOffset(Long64_t offset = 0) { fChainOffset=offset; }
585  virtual void SetCircular(Long64_t maxEntries);
586  virtual void SetClusterPrefetch(Bool_t enabled) { fCacheDoClusterPrefetch = enabled; }
587  virtual void SetDebug(Int_t level = 1, Long64_t min = 0, Long64_t max = 9999999); // *MENU*
588  virtual void SetDefaultEntryOffsetLen(Int_t newdefault, Bool_t updateExisting = kFALSE);
589  virtual void SetDirectory(TDirectory* dir);
590  virtual Long64_t SetEntries(Long64_t n = -1);
591  virtual void SetEstimate(Long64_t nentries = 1000000);
593  virtual void SetFileNumber(Int_t number = 0);
594  virtual void SetEventList(TEventList* list);
595  virtual void SetEntryList(TEntryList* list, Option_t *opt="");
596  virtual void SetImplicitMT(Bool_t enabled) { fIMTEnabled = enabled; }
597  virtual void SetMakeClass(Int_t make);
598  virtual void SetMaxEntryLoop(Long64_t maxev = kMaxEntries) { fMaxEntryLoop = maxev; } // *MENU*
599  static void SetMaxTreeSize(Long64_t maxsize = 100000000000LL);
600  virtual void SetMaxVirtualSize(Long64_t size = 0) { fMaxVirtualSize = size; } // *MENU*
601  virtual void SetName(const char* name); // *MENU*
602 
603  /**
604  * @brief Sets the address of the object to be notified when the tree is loaded.
605  *
606  * The method TObject::Notify is called for the given object when the tree
607  * is loaded. Specifically this occurs in the TTree::LoadTree method. To
608  * remove the notification call this method with nullptr:
609  * @code tree->SetNotify(nullptr); @endcode
610  *
611  * @param[in] obj Pointer to a TObject to be notified.
612  */
613  virtual void SetNotify(TObject* obj) { fNotify = obj; }
614 
615  virtual void SetObject(const char* name, const char* title);
616  virtual void SetParallelUnzip(Bool_t opt=kTRUE, Float_t RelSize=-1);
617  virtual void SetPerfStats(TVirtualPerfStats* perf);
618  virtual void SetScanField(Int_t n = 50) { fScanField = n; } // *MENU*
620  virtual void SetTimerInterval(Int_t msec = 333) { fTimerInterval=msec; }
621  virtual void SetTreeIndex(TVirtualIndex* index);
622  virtual void SetWeight(Double_t w = 1, Option_t* option = "");
623  virtual void SetUpdate(Int_t freq = 0) { fUpdate = freq; }
624  virtual void Show(Long64_t entry = -1, Int_t lenmax = 20);
625  virtual void StartViewer(); // *MENU*
626  virtual Int_t StopCacheLearningPhase();
627  virtual Int_t UnbinnedFit(const char* funcname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
628  void UseCurrentStyle();
629  virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0);
630  virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0) const;
631 
632  ClassDef(TTree, 20) // Tree descriptor (the main ROOT I/O class)
633 };
634 
635 //////////////////////////////////////////////////////////////////////////
636 // //
637 // TTreeFriendLeafIter //
638 // //
639 // Iterator on all the leaves in a TTree and its friend //
640 // //
641 //////////////////////////////////////////////////////////////////////////
642 
644 
645 protected:
646  TTree *fTree; ///< tree being iterated
647  TIterator *fLeafIter; ///< current leaf sub-iterator.
648  TIterator *fTreeIter; ///< current tree sub-iterator.
649  Bool_t fDirection; ///< iteration direction
650 
652  fDirection(0) { }
653 
654 public:
655  TTreeFriendLeafIter(const TTree* t, Bool_t dir = kIterForward);
658  TIterator &operator=(const TIterator &rhs);
660 
661  const TCollection *GetCollection() const { return 0; }
662  Option_t *GetOption() const;
663  TObject *Next();
665  Bool_t operator !=(const TIterator&) const {
666  // TODO: Implement me
667  return false;
668  }
670  // TODO: Implement me
671  return false;
672  }
673  TObject *operator*() const {
674  // TODO: Implement me
675  return nullptr;
676  }
677  ClassDef(TTreeFriendLeafIter,0) //Linked list iterator
678  };
679 
680 
681 #endif
virtual Double_t * GetV3()
Definition: TTree.h:518
TBranch * Branch(const char *name, const char *classname, T **addobj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition: TTree.h:379
Describe Streamer information for one class version
Definition: TStreamerInfo.h:43
virtual TBranch * FindBranch(const char *name)
Return the branch that correspond to the path &#39;branchname&#39;, which can include the name of the tree or...
Definition: TTree.cxx:4666
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
Double_t fWeight
Tree weight (see TTree::SetWeight)
Definition: TTree.h:83
Int_t GetDefaultEntryOffsetLen() const
Definition: TTree.h:437
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:49
Long64_t Previous()
Move on to the previous cluster and return the starting entry of this previous cluster.
Definition: TTree.cxx:677
TTreeCache * GetReadCache(TFile *file) const
Find and return the TTreeCache registered with the file and which may contain branches for us...
Definition: TTree.cxx:6107
virtual void AddTotBytes(Int_t tot)
Definition: TTree.h:310
virtual TList * GetListOfClones()
Definition: TTree.h:465
UInt_t GetAllocationCount() const
Definition: TTree.h:421
TStreamerInfo * BuildStreamerInfo(TClass *cl, void *pointer=0, Bool_t canOptimize=kTRUE)
Build StreamerInfo for class cl.
Definition: TTree.cxx:2574
An array of TObjects.
Definition: TObjArray.h:37
Long64_t fDebugMin
! First entry number to debug
Definition: TTree.h:105
TBranch * Branch(const char *name, T **addobj, Int_t bufsize=32000, Int_t splitlevel=99)
Add a new branch, and infer the data type from the array addobj being passed.
Definition: TTree.h:349
Principal Components Analysis (PCA)
Definition: TPrincipal.h:20
TTree * fTree
tree being iterated
Definition: TTree.h:646
Long64_t GetNextEntry()
Definition: TTree.h:286
Bool_t fPrevious
Definition: TTree.h:181
auto * tt
Definition: textangle.C:16
virtual void OptimizeBaskets(ULong64_t maxMemory=10000000, Float_t minComp=1.1, Option_t *option="")
This function may be called after having filled some entries in a Tree.
Definition: TTree.cxx:6836
Bool_t MemoryFull(Int_t nbytes)
Check if adding nbytes to memory we are still below MaxVirtualsize.
Definition: TTree.cxx:6638
virtual TBranch * BranchImpRef(const char *branchname, const char *classname, TClass *ptrClass, void *addobj, Int_t bufsize, Int_t splitlevel)
Same as TTree::Branch but automatic detection of the class name.
Definition: TTree.cxx:1560
virtual Int_t MakeCode(const char *filename=0)
Generate a skeleton function for this tree.
Definition: TTree.cxx:6441
long long Long64_t
Definition: RtypesCore.h:69
TTreeFormula * GetVar2()
Definition: TTree.h:506
TIterator * fTreeIter
current tree sub-iterator.
Definition: TTree.h:648
Abstract interface for Tree Index.
Definition: TVirtualIndex.h:29
virtual Int_t GetScanField() const
Definition: TTree.h:489
virtual TTreeFormula * GetVar1() const =0
virtual Long64_t ReadStream(std::istream &inputStream, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from an input stream.
Definition: TTree.cxx:7358
static constexpr Long64_t kMaxEntries
virtual Int_t StopCacheLearningPhase()
Stop the cache learning phase.
Definition: TTree.cxx:9115
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=0)
Set branch status to Process or DoNotProcess.
Definition: TTree.cxx:8206
virtual void IncrementTotalBuffers(Int_t nbytes)
Definition: TTree.h:524
virtual void Delete(Option_t *option="")
Delete this tree from memory or/and disk.
Definition: TTree.cxx:3606
virtual Int_t FlushBaskets(Bool_t create_cluster=true) const
Write to disk all the basket that have not yet been individually written and create an event cluster ...
Definition: TTree.cxx:4948
TTree & operator=(const TTree &tt)=delete
static Int_t fgBranchStyle
Old/New branch style.
Definition: TTree.h:143
virtual void AddZipBytes(Int_t zip)
Definition: TTree.h:311
virtual Double_t * GetV4()
Definition: TTree.h:520
virtual Int_t LoadBaskets(Long64_t maxmemory=2000000000)
Read in memory all baskets from all branches up to the limit of maxmemory bytes.
Definition: TTree.cxx:6240
float Float_t
Definition: RtypesCore.h:53
static Long64_t GetMaxTreeSize()
Static function which returns the tree file size limit in bytes.
Definition: TTree.cxx:6054
virtual void SetParallelUnzip(Bool_t opt=kTRUE, Float_t RelSize=-1)
Enable or disable parallel unzipping of Tree buffers.
Definition: TTree.cxx:8932
Provides the interface for the PROOF internal performance measurement and event tracing.
const char Option_t
Definition: RtypesCore.h:62
virtual Bool_t Notify()
Function called when loading a new class library.
Definition: TTree.cxx:6812
TTree()
Default constructor and I/O constructor.
Definition: TTree.cxx:720
virtual TTree * GetFriend(const char *) const
Return a pointer to the TTree friend whose name or alias is &#39;friendname.
Definition: TTree.cxx:5771
virtual Long64_t GetEntriesFast() const
Definition: TTree.h:443
TBuffer * fTransientBuffer
! Pointer to the current transient buffer.
Definition: TTree.h:127
virtual void Print(Option_t *option="") const
Print a summary of the tree contents.
Definition: TTree.cxx:6998
double T(double x)
Definition: ChebyshevPol.h:34
virtual Bool_t GetClusterPrefetch() const
Definition: TTree.h:435
virtual Int_t Fit(const char *funcname, const char *varexp, const char *selection="", Option_t *option="", Option_t *goption="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Fit a projected item(s) from a tree.
Definition: TTree.cxx:4898
TIterator * fLeafIter
current leaf sub-iterator.
Definition: TTree.h:647
TList * fFriends
pointer to list of friend elements
Definition: TTree.h:120
virtual Double_t * GetV3() const =0
TPrincipal * Principal(const char *varexp="", const char *selection="", Option_t *option="np", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Interface to the Principal Components Analysis class.
Definition: TTree.cxx:6979
virtual TH1 * GetHistogram() const =0
virtual Int_t Fill()
Fill all branches.
Definition: TTree.cxx:4430
Int_t GetMakeClass() const
Definition: TTree.h:473
virtual TEntryList * GetEntryList()
Returns the entry list assigned to this tree.
Definition: TTree.cxx:5650
ROOT::TIOFeatures SetIOFeatures(const ROOT::TIOFeatures &)
Provide the end-user with the ability to enable/disable various experimental IO features for this TTr...
Definition: TTree.cxx:8797
virtual void SetMaxEntryLoop(Long64_t maxev=kMaxEntries)
Definition: TTree.h:598
#define BIT(n)
Definition: Rtypes.h:83
virtual Int_t GetPacketSize() const
Definition: TTree.h:483
static void SetBranchStyle(Int_t style=1)
Set the current branch style.
Definition: TTree.cxx:8337
A cache to speed-up the reading of ROOT datasets.
Definition: TTreeCache.h:35
virtual TLeaf * GetLeaf(const char *branchname, const char *leafname)
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
Definition: TTree.cxx:5984
TTree * fTree
Definition: TTree.h:179
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format...
Definition: TFile.h:48
virtual TLeaf * GetLeafImpl(const char *branchname, const char *leafname)
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
Definition: TTree.cxx:5894
virtual TList * GetListOfFriends() const
Definition: TTree.h:468
TTreeFormula * GetSelect()
Definition: TTree.h:490
virtual Long64_t GetAutoFlush() const
Definition: TTree.h:425
Buffer base class used for serializing objects.
Definition: TBuffer.h:42
TDirectory * fDirectory
! Pointer to directory holding this tree
Definition: TTree.h:111
Int_t fMakeClass
! not zero when processing code generated by MakeClass
Definition: TTree.h:108
virtual TBasket * CreateBasket(TBranch *)
Create a basket for this tree and given branch.
Definition: TTree.cxx:3590
#define N
Long64_t GetDebugMin() const
Definition: TTree.h:439
virtual void SetAutoSave(Long64_t autos=-300000000)
This function may be called at the start of a program to change the default value for fAutoSave (and ...
Definition: TTree.cxx:8017
Long64_t fEstimatedSize
Definition: TTree.h:255
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
Definition: TTree.cxx:5433
virtual TTreeFormula * GetVar(Int_t) const =0
virtual TList * GetListOfAliases() const
Definition: TTree.h:469
virtual Int_t MakeProxy(const char *classname, const char *macrofilename=0, const char *cutfilename=0, const char *option=0, Int_t maxUnrolling=3)
Generate a skeleton analysis class for this Tree using TBranchProxy.
Definition: TTree.cxx:6569
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
virtual Long64_t GetMaxEntryLoop() const
Definition: TTree.h:475
virtual void Browse(TBrowser *)
Browse content of the TTree.
Definition: TTree.cxx:2531
constexpr std::array< decltype(std::declval< F >)(std::declval< int >))), N > make(F f)
static void SetMaxTreeSize(Long64_t maxsize=100000000000LL)
Set the maximum size in bytes of a Tree file (static function).
Definition: TTree.cxx:8864
TIOFeatures provides the end-user with the ability to change the IO behavior of data written via a TT...
Definition: TIOFeatures.hxx:62
Int_t fScanField
Number of runs before prompting in Scan.
Definition: TTree.h:85
virtual Double_t * GetV4() const =0
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
Definition: TTree.cxx:3027
virtual TTree * CopyTree(const char *selection, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Copy a tree with selection.
Definition: TTree.cxx:3578
const TCollection * GetCollection() const
Definition: TTree.h:661
virtual void KeepCircular()
Keep a maximum of fMaxEntries in memory.
Definition: TTree.cxx:6204
TArrayD fIndexValues
Sorted index values.
Definition: TTree.h:117
Long64_t fMaxEntryLoop
Maximum number of entries to process.
Definition: TTree.h:91
TVirtualTreePlayer * GetPlayer()
Load the TTreePlayer (if not already done).
Definition: TTree.cxx:6094
virtual void SetMaxVirtualSize(Long64_t size=0)
Definition: TTree.h:600
virtual TSQLResult * Query(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Loop over entries and return a TSQLResult object containing entries following selection.
Definition: TTree.cxx:7261
A Tree Index with majorname and minorname.
Definition: TTreeIndex.h:29
ELockStatusBits
Definition: TTree.h:199
Long64_t fStartEntry
Definition: TTree.h:253
virtual Int_t GetFileNumber() const
Definition: TTree.h:454
Iterator abstract base class.
Definition: TIterator.h:30
Array of integers (32 bits per element).
Definition: TArrayI.h:27
virtual TTreeFormula * GetSelect() const =0
virtual void Refresh()
Refresh contents of this tree and its branches from the current status on disk.
Definition: TTree.cxx:7655
virtual void SetFileNumber(Int_t number=0)
Set fFileNumber to number.
Definition: TTree.cxx:8820
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition: TTree.cxx:6064
virtual void DirectoryAutoAdd(TDirectory *)
Called by TKey and TObject::Clone to automatically add us to a directory when we are read from a file...
Definition: TTree.cxx:3678
Bool_t fIMTFlush
! True if we are doing a multithreaded flush.
Definition: TTree.h:148
virtual Double_t GetWeight() const
Definition: TTree.h:522
virtual void StartViewer()
Start the TTreeViewer on this tree.
Definition: TTree.cxx:9100
virtual Long64_t Merge(TCollection *list, Option_t *option="")
Merge the trees in the TList into this tree.
Definition: TTree.cxx:6695
Marker Attributes class.
Definition: TAttMarker.h:19
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Read entry corresponding to major and minor number.
Definition: TTree.cxx:5723
TList * fAliases
List of aliases for expressions based on the tree branches.
Definition: TTree.h:114
TBranch * Branch(const char *name, Long_t address, const char *leaflist, Int_t bufsize=32000)
Definition: TTree.h:363
virtual TTreeFormula * GetVar3() const =0
Bool_t fCacheDoClusterPrefetch
! true if cache is prefetching whole clusters
Definition: TTree.h:129
virtual Long64_t GetCacheSize() const
Definition: TTree.h:431
virtual TObjArray * GetListOfBranches()
Definition: TTree.h:466
Helper class to iterate over cluster of baskets.
Definition: TTree.h:248
TVirtualTreePlayer * fPlayer
! Pointer to current Tree player
Definition: TTree.h:123
Fill Area Attributes class.
Definition: TAttFill.h:19
void ImportClusterRanges(TTree *fromtree)
Appends the cluster range information stored in &#39;fromtree&#39; to this tree, including the value of fAuto...
Definition: TTree.cxx:6161
virtual void SetAutoFlush(Long64_t autof=-30000000)
This function may be called at the start of a program to change the default value for fAutoFlush...
Definition: TTree.cxx:7908
#define ClassDef(name, id)
Definition: Rtypes.h:326
virtual Long64_t GetSelectedRows()
Definition: TTree.h:491
TTreeFormula * GetVar(Int_t i)
Definition: TTree.h:502
virtual Long64_t GetReadEvent() const
Definition: TTree.h:488
virtual Long64_t CopyEntries(TTree *tree, Long64_t nentries=-1, Option_t *option="")
Copy nentries from given tree to this tree.
Definition: TTree.cxx:3409
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=0)
Change branch address, dealing with clone trees properly.
Definition: TTree.cxx:8060
Int_t fNfill
! Local for EntryLoop
Definition: TTree.h:103
std::atomic< UInt_t > fAllocationCount
indicates basket should be resized to exact memory usage, but causes significant
Definition: TTree.h:141
Float_t fTargetMemoryRatio
! Ratio for memory usage in uncompressed buffers versus actual occupancy.
Definition: TTree.h:135
virtual void SetObject(const char *name, const char *title)
Change the name and title of this tree.
Definition: TTree.cxx:8901
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition: TTree.cxx:5686
virtual Long64_t GetReadEntry() const
Definition: TTree.h:487
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition: TTree.cxx:5045
virtual Long64_t LoadTree(Long64_t entry)
Set current entry.
Definition: TTree.cxx:6262
Bool_t fCacheUserSet
! true if the cache setting was explicitly given by user
Definition: TTree.h:130
virtual void SetTreeIndex(TVirtualIndex *index)
The current TreeIndex is replaced by the new index.
Definition: TTree.cxx:8987
Int_t fMaxClusterRange
! Memory allocated for the cluster range.
Definition: TTree.h:89
static Int_t GetBranchStyle()
Static function returning the current branch style.
Definition: TTree.cxx:5200
virtual Int_t BuildIndex(const char *majorname, const char *minorname="0")
Build a Tree Index (default is TTreeIndex).
Definition: TTree.cxx:2559
virtual Int_t UnbinnedFit(const char *funcname, const char *varexp, const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Unbinned fit of one or more variable(s) from a tree.
Definition: TTree.cxx:9366
virtual TBranch * BranchOld(const char *name, const char *classname, void *addobj, Int_t bufsize=32000, Int_t splitlevel=1)
Create a new TTree BranchObject.
Definition: TTree.cxx:1996
virtual Int_t GetNbranches()
Definition: TTree.h:480
virtual TVirtualPerfStats * GetPerfStats() const
Definition: TTree.h:484
virtual void Show(Long64_t entry=-1, Int_t lenmax=20)
Print values of all active leaves for entry.
Definition: TTree.cxx:9026
TBranchRef * fBranchRef
Branch supporting the TRefTable (if any)
Definition: TTree.h:125
virtual Int_t MakeClass(const char *classname=0, Option_t *option="")
Generate a skeleton analysis class for this tree.
Definition: TTree.cxx:6408
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition: TTree.cxx:5262
UInt_t fFriendLockStatus
! Record which method is locking the friend recursion
Definition: TTree.h:126
Double_t * fArray
Definition: TArrayD.h:30
Int_t fTimerInterval
Timer interval in milliseconds.
Definition: TTree.h:84
virtual TFriendElement * AddFriend(const char *treename, const char *filename="")
Add a TFriendElement to the list of friends.
Definition: TTree.cxx:1273
const Bool_t kIterForward
Definition: TCollection.h:40
virtual Long64_t Scan(const char *varexp="", const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Loop over tree entries and print entries passing selection.
Definition: TTree.cxx:7811
Long64_t fFlushedBytes
Number of auto-flushed bytes.
Definition: TTree.h:82
TObject * GetNotify() const
Definition: TTree.h:481
UInt_t fNEntriesSinceSorting
! Number of entries processed since the last re-sorting of branches
Definition: TTree.h:132
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition: TTree.cxx:6024
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition: TTree.cxx:7694
virtual Double_t * GetW() const =0
Float_t GetTargetMemoryRatio() const
Definition: TTree.h:498
virtual TList * GetUserInfo()
Return a pointer to the list containing user objects associated to this tree.
Definition: TTree.cxx:6145
std::atomic< Long64_t > fIMTZipBytes
! Zip bytes for the IMT flush baskets.
Definition: TTree.h:150
virtual void SetCacheLearnEntries(Int_t n=10)
Interface to TTreeCache to set the number of entries for the learning phase.
Definition: TTree.cxx:8532
A branch containing and managing a TRefTable for TRef autoloading.
Definition: TBranchRef.h:29
Long64_t fZipBytes
Total number of bytes in all branches after compression.
Definition: TTree.h:80
Long64_t fDebugMax
! Last entry number to debug
Definition: TTree.h:106
virtual TBranch * BranchImp(const char *branchname, const char *classname, TClass *ptrClass, void *addobj, Int_t bufsize, Int_t splitlevel)
Same as TTree::Branch() with added check that addobj matches className.
Definition: TTree.cxx:1479
TBranch * Branch(const char *name, char *address, const char *leaflist, Int_t bufsize=32000)
Definition: TTree.h:358
TTreeFormula * GetVar4()
Definition: TTree.h:510
Used to pass a selection expression to the Tree drawing routine.
Definition: TTreeFormula.h:58
virtual TTree * GetTree() const
Definition: TTree.h:495
virtual void SetEventList(TEventList *list)
This function transfroms the given TEventList into a TEntryList The new TEntryList is owned by the TT...
Definition: TTree.cxx:8736
virtual Int_t GetTreeNumber() const
Definition: TTree.h:497
void UseCurrentStyle()
Replace current attributes by current style.
Definition: TTree.cxx:9378
A specialized string object used for TTree selections.
Definition: TCut.h:25
A doubly linked list.
Definition: TList.h:44
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
Definition: TTree.cxx:5086
Bool_t fCacheDoAutoInit
! true if cache auto creation or resize check is needed
Definition: TTree.h:128
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=0)
Definition: TTree.h:563
TH1 * GetHistogram()
Definition: TTree.h:457
Int_t GetType() const
Definition: TDataType.h:68
TObjArray fLeaves
Direct pointers to individual branch leaves.
Definition: TTree.h:113
Long64_t * fClusterRangeEnd
[fNClusterRange] Last entry of a cluster range.
Definition: TTree.h:96
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
Int_t fNClusterRange
Number of Cluster range in addition to the one defined by &#39;AutoFlush&#39;.
Definition: TTree.h:88
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition: TTree.cxx:5661
TEntryList * fEntryList
! Pointer to event selection list (if one)
Definition: TTree.h:116
virtual Long64_t GetAutoSave() const
Definition: TTree.h:426
void SetTargetMemoryRatio(Float_t ratio)
Definition: TTree.h:619
virtual TTreeFormula * GetVar4() const =0
TBranch * Branch(const char *name, int address, const char *leaflist, Int_t bufsize=32000)
Definition: TTree.h:368
virtual Long64_t GetChainOffset() const
Definition: TTree.h:434
virtual Int_t Write(const char *name=0, Int_t option=0, Int_t bufsize=0)
Write this object to the current directory.
Definition: TTree.cxx:9415
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
Definition: TTree.cxx:8777
virtual Double_t * GetV2() const =0
ESetBranchAddressStatus
Definition: TTree.h:220
Long64_t fChainOffset
! Offset of 1st entry of this Tree in a TChain
Definition: TTree.h:99
~TFriendLock()
Restore the state of tree the same as before we set the lock.
Definition: TTree.cxx:528
Long64_t * fClusterSize
[fNClusterRange] Number of entries in each cluster for a given range.
Definition: TTree.h:97
virtual Double_t * GetV2()
Definition: TTree.h:516
virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition: TTree.cxx:5706
virtual void SetUpdate(Int_t freq=0)
Definition: TTree.h:623
TVirtualPerfStats * fPerfStats
! pointer to the current perf stats object
Definition: TTree.h:121
TObject * operator*() const
Return current object or nullptr.
Definition: TTree.h:673
Long64_t fReadEntry
! Number of the entry being processed
Definition: TTree.h:100
virtual TVirtualIndex * GetTreeIndex() const
Definition: TTree.h:496
virtual ~TTree()
Destructor.
Definition: TTree.cxx:901
Collection abstract base class.
Definition: TCollection.h:63
TList * fUserInfo
pointer to a list of user objects associated to this Tree
Definition: TTree.h:122
TObjArray fBranches
List of Branches.
Definition: TTree.h:112
virtual void SetNotify(TObject *obj)
Sets the address of the object to be notified when the tree is loaded.
Definition: TTree.h:613
unsigned int UInt_t
Definition: RtypesCore.h:42
friend TBranch * TTreeBranchImpRef(TTree *tree, const char *branchname, TClass *ptrClass, EDataType datatype, void *addobj, Int_t bufsize, Int_t splitlevel)
Int_t GetEntriesFast() const
Definition: TObjArray.h:64
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:880
TFile * GetCurrentFile() const
Return pointer to the current file.
Definition: TTree.cxx:5274
Int_t Debug() const
Definition: TTree.h:408
Manages buffers for branches of a Tree.
Definition: TBasket.h:34
TTreeFormula * GetVar3()
Definition: TTree.h:508
A TEventList object is a list of selected events (entries) in a TTree.
Definition: TEventList.h:31
virtual TLeaf * FindLeaf(const char *name)
Find leaf..
Definition: TTree.cxx:4738
TArrayI fIndex
Index of sorted values.
Definition: TTree.h:118
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:75
virtual Long64_t GetEstimate() const
Definition: TTree.h:445
void AddAllocationCount(UInt_t count)
Definition: TTree.h:316
Bool_t fIMTEnabled
! true if implicit multi-threading is enabled for this tree
Definition: TTree.h:131
Option_t * GetOption() const
Returns the object option stored in the list.
Definition: TTree.cxx:9516
virtual TBranchRef * GetBranchRef() const
Definition: TTree.h:428
TBranch * Branch(const char *name, std::array< T, N > *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition: TTree.h:384
virtual void ResetBranchAddress(TBranch *)
Tell all of our branches to set their addresses to zero.
Definition: TTree.cxx:7782
ROOT::TIOFeatures GetIOFeatures() const
Returns the current set of IO settings.
Definition: TTree.cxx:5870
Bool_t fDirection
iteration direction
Definition: TTree.h:649
virtual Double_t * GetVal(Int_t) const =0
TEventList * fEventList
! Pointer to event selection list (if one)
Definition: TTree.h:115
virtual TBranch * Bronch(const char *name, const char *classname, void *addobj, Int_t bufsize=32000, Int_t splitlevel=99)
Create a new TTree BranchElement.
Definition: TTree.cxx:2326
virtual Bool_t GetBranchStatus(const char *branchname) const
Return status of branch with name branchname.
Definition: TTree.cxx:5185
Bool_t operator!=(const TIterator &) const
Compare two iterator objects.
Definition: TTree.h:665
Long64_t fMaxEntries
Maximum number of entries in case of circular buffers.
Definition: TTree.h:90
void AddClone(TTree *)
Add a cloned tree to our list of trees to be notified whenever we change our branch addresses or when...
Definition: TTree.cxx:1185
void MarkEventCluster()
Mark the previous event as being at the end of the event cluster.
Definition: TTree.cxx:7970
char GetNewlineValue(std::istream &inputStream)
Determine which newline this file is using.
Definition: TTree.cxx:7331
virtual Int_t DropBranchFromCache(const char *bname, Bool_t subbranches=kFALSE)
Remove the branch with name &#39;bname&#39; from the Tree cache.
Definition: TTree.cxx:1108
void InitializeBranchLists(bool checkLeafCount)
Divides the top-level branches into two vectors: (i) branches to be processed sequentially and (ii) b...
Definition: TTree.cxx:5577
virtual Int_t * GetIndex()
Definition: TTree.h:459
Long64_t fAutoSave
Autosave tree when fAutoSave entries written or -fAutoSave (compressed) bytes produced.
Definition: TTree.h:93
Bool_t IsFolder() const
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects)...
Definition: TTree.h:525
const Bool_t kFALSE
Definition: RtypesCore.h:88
virtual Int_t CheckBranchAddressType(TBranch *branch, TClass *ptrClass, EDataType datatype, Bool_t ptr)
Check whether or not the address described by the last 3 parameters matches the content of the branch...
Definition: TTree.cxx:2763
virtual void SetDebug(Int_t level=1, Long64_t min=0, Long64_t max=9999999)
Set the debug level and the debug range.
Definition: TTree.cxx:8595
virtual Long64_t Process(const char *filename, Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Process this tree executing the TSelector code in the specified filename.
Definition: TTree.cxx:7198
TBranch * Branch(const char *name, T *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Add a new branch, and infer the data type from the type of obj being passed.
Definition: TTree.h:332
#define SafeDelete(p)
Definition: RConfig.hxx:550
long Long_t
Definition: RtypesCore.h:50
virtual void DropBuffers(Int_t nbytes)
Drop branch buffers to accommodate nbytes below MaxVirtualsize.
Definition: TTree.cxx:4362
virtual Int_t GetTimerInterval() const
Definition: TTree.h:492
virtual void SetMakeClass(Int_t make)
Set all the branches in this TTree to be in decomposed object mode (also known as MakeClass mode)...
Definition: TTree.cxx:8844
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set tree weight.
Definition: TTree.cxx:9015
TBranch * Branch(const char *name, const char *classname, T *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition: TTree.h:374
A PolyMarker is defined by an array on N points in a 2-D space.
Definition: TPolyMarker.h:31
Long64_t Next()
Move on to the next cluster and return the starting entry of this next cluster.
Definition: TTree.cxx:633
virtual void SetDirectory(TDirectory *dir)
Change the tree&#39;s directory.
Definition: TTree.cxx:8633
virtual Long64_t LoadTreeFriend(Long64_t entry, TTree *T)
Load entry on behalf of our master tree, we may use an index.
Definition: TTree.cxx:6358
virtual Int_t GetUpdate() const
Definition: TTree.h:499
Long64_t fMaxVirtualSize
Maximum total size of buffers kept in memory.
Definition: TTree.h:92
Int_t GetEvent(Long64_t entry=0, Int_t getall=0)
Definition: TTree.h:447
virtual void SetEntryList(TEntryList *list, Option_t *opt="")
Set an EntryList.
Definition: TTree.cxx:8713
TIterator & operator=(const TIterator &rhs)
Overridden assignment operator. Does NOT copy the &#39;cursor&#39; location!
Definition: TTree.cxx:9454
double Double_t
Definition: RtypesCore.h:55
Long64_t GetStartEntry()
Definition: TTree.h:281
Long64_t GetCacheAutoSize(Bool_t withDefault=kFALSE) const
Used for automatic sizing of the cache.
Definition: TTree.cxx:5212
virtual Double_t * GetW()
Definition: TTree.h:521
Int_t * fArray
Definition: TArrayI.h:30
Long64_t fTotBytes
Total number of bytes in all branches before compression.
Definition: TTree.h:79
std::vector< TBranch * > fSeqBranches
! Branches to be processed sequentially when IMT is on
Definition: TTree.h:134
Describe directory structure in memory.
Definition: TDirectory.h:34
virtual void SetPerfStats(TVirtualPerfStats *perf)
Set perf stats.
Definition: TTree.cxx:8970
std::vector< std::pair< Long64_t, TBranch * > > fSortedBranches
! Branches to be processed in parallel when IMT is on, sorted by average task time ...
Definition: TTree.h:133
TDirectory * GetDirectory() const
Definition: TTree.h:440
EStatusBits
Definition: TObject.h:57
void SortBranchesByTime()
Sorts top-level branches by the last average task time recorded per branch.
Definition: TTree.cxx:5630
int type
Definition: TGX11.cxx:120
unsigned long long ULong64_t
Definition: RtypesCore.h:70
virtual Long64_t ReadFile(const char *filename, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from filename.
Definition: TTree.cxx:7312
Long64_t fAutoFlush
Auto-flush tree when fAutoFlush entries written or -fAutoFlush (compressed) bytes produced...
Definition: TTree.h:94
virtual Bool_t GetImplicitMT()
Definition: TTree.h:458
virtual void ResetBranchAddresses()
Tell all of our branches to drop their current objects and allocate new ones.
Definition: TTree.cxx:7792
virtual void Draw(Option_t *opt)
Default Draw method for all objects.
Definition: TTree.h:410
TCanvas * style()
Definition: style.C:1
int nentries
Definition: THbookFile.cxx:89
EDataType
Definition: TDataType.h:28
Int_t fDefaultEntryOffsetLen
Initial Length of fEntryOffset table in the basket buffers.
Definition: TTree.h:87
The TH1 histogram class.
Definition: TH1.h:56
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Definition: TTree.h:433
Long64_t fEstimate
Number of entries to estimate histogram limits.
Definition: TTree.h:95
UInt_t fMethodBit
Definition: TTree.h:180
Helper class to prevent infinite recursion in the usage of TTree Friends.
Definition: TTree.h:176
virtual Int_t SetCacheSize(Long64_t cachesize=-1)
Set maximum size of the file cache .
Definition: TTree.cxx:8353
Int_t fDebug
! Debug level
Definition: TTree.h:104
Int_t SetCacheSizeAux(Bool_t autocache=kTRUE, Long64_t cacheSize=0)
Set the size of the file cache and create it if possible.
Definition: TTree.cxx:8379
Array of doubles (64 bits per element).
Definition: TArrayD.h:27
virtual Long64_t GetEntries() const
Definition: TTree.h:441
virtual void SetBasketSize(const char *bname, Int_t buffsize=16000)
Set a branch&#39;s basket size.
Definition: TTree.cxx:8033
virtual TBranch * BranchRef()
Build the optional branch supporting the TRefTable.
Definition: TTree.cxx:2250
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this TTree after a merge (keep the customization but forget the data)...
Definition: TTree.cxx:7751
virtual Bool_t SetAlias(const char *aliasName, const char *aliasFormula)
Set a tree variable alias.
Definition: TTree.cxx:7853
Int_t fFileNumber
! current file number (if file extensions)
Definition: TTree.h:109
virtual TBranch * BranchImpArr(const char *branchname, EDataType datatype, std::size_t N, void *addobj, Int_t bufsize, Int_t splitlevel)
Definition: TTree.cxx:1656
Mother of all ROOT objects.
Definition: TObject.h:37
Int_t fUpdate
Update frequency for EntryLoop.
Definition: TTree.h:86
Long64_t operator()()
Definition: TTree.h:290
Long64_t fEntries
Number of entries.
Definition: TTree.h:77
TList * fClones
! List of cloned trees which share our addresses
Definition: TTree.h:124
virtual Int_t MakeSelector(const char *selector=0, Option_t *option="")
Generate skeleton selector class for this tree.
Definition: TTree.cxx:6623
TBuffer * GetTransientBuffer(Int_t size)
Returns the transient buffer currently used by this TTree for reading/writing baskets.
Definition: TTree.cxx:1003
virtual Long64_t GetTotBytes() const
Definition: TTree.h:494
virtual Long64_t GetSelectedRows() const =0
Class implementing or helping the various TTree cloning method.
Definition: TTreeCloner.h:38
virtual Double_t * GetVal(Int_t i)
Definition: TTree.h:512
Abstract base class defining the interface for the plugins that implement Draw, Scan, Process, MakeProxy, etc.
Long64_t GetDebugMax() const
Definition: TTree.h:438
TClusterIterator(TTree *tree, Long64_t firstEntry)
Regular constructor.
Definition: TTree.cxx:545
Definition: file.py:1
A TFriendElement TF describes a TTree object TF in a file.
virtual Long64_t GetZipBytes() const
Definition: TTree.h:523
Long64_t fNextEntry
Definition: TTree.h:254
Iterator on all the leaves in a TTree and its friend.
Definition: TTree.h:643
virtual TBranch * BronchExec(const char *name, const char *classname, void *addobj, Bool_t isptrptr, Int_t bufsize, Int_t splitlevel)
Helper function implementing TTree::Bronch and TTree::Branch(const char *name, T &obj);.
Definition: TTree.cxx:2334
virtual void RecursiveRemove(TObject *obj)
Make sure that obj (which is being deleted or will soon be) is no longer referenced by this TTree...
Definition: TTree.cxx:7624
virtual void SetCircular(Long64_t maxEntries)
Enable/Disable circularity for this tree.
Definition: TTree.cxx:8559
virtual void Reset(Option_t *option="")
Reset baskets, buffers and entries count in all branches and leaves.
Definition: TTree.cxx:7720
virtual void SetClusterPrefetch(Bool_t enabled)
Definition: TTree.h:586
Definition: tree.py:1
std::atomic< Long64_t > fTotalBuffers
! Total number of bytes in branch buffers
Definition: TTree.h:101
virtual void SetTimerInterval(Int_t msec=333)
Definition: TTree.h:620
virtual TTreeFormula * GetVar2() const =0
TObject * fNotify
! Object to be notified when loading a Tree
Definition: TTree.h:110
virtual Int_t SetCacheEntryRange(Long64_t first, Long64_t last)
interface to TTreeCache to set the cache entry range
Definition: TTree.cxx:8498
TTreeFormula * GetVar1()
Definition: TTree.h:504
A TTree represents a columnar dataset.
Definition: TTree.h:72
#define gDirectory
Definition: TDirectory.h:223
TVirtualIndex * fTreeIndex
Pointer to the tree Index (if any)
Definition: TTree.h:119
TFriendLock & operator=(const TFriendLock &)
Assignment operator.
Definition: TTree.cxx:515
Int_t SetBranchAddressImp(TBranch *branch, void *addr, TBranch **ptr)
Change branch address, dealing with clone trees properly.
Definition: TTree.cxx:8117
TEventList * GetEventList() const
Definition: TTree.h:451
virtual void SetDefaultEntryOffsetLen(Int_t newdefault, Bool_t updateExisting=kFALSE)
Update the default value for the branch&#39;s fEntryOffsetLen.
Definition: TTree.cxx:8607
TObject * Next()
Go the next friend element.
Definition: TTree.cxx:9477
Definition: first.py:1
virtual void DropBaskets()
Remove some baskets from memory.
Definition: TTree.cxx:4349
virtual TIterator * GetIteratorOnAllLeaves(Bool_t dir=kIterForward)
Creates a new iterator that will go through all the leaves on the tree itself and its friend...
Definition: TTree.cxx:5878
virtual void SetImplicitMT(Bool_t enabled)
Definition: TTree.h:596
static Long64_t fgMaxTreeSize
Maximum size of a file containing a Tree.
Definition: TTree.h:144
virtual Long64_t SetEntries(Long64_t n=-1)
Change number of entries in the tree.
Definition: TTree.cxx:8678
virtual TFile * ChangeFile(TFile *file)
Called by TTree::Fill() when file has reached its maximum fgMaxTreeSize.
Definition: TTree.cxx:2649
static TTree * MergeTrees(TList *list, Option_t *option="")
Static function merging the trees in the TList into a new tree.
Definition: TTree.cxx:6652
A TTree is a list of TBranches.
Definition: TBranch.h:90
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Definition: TSelector.h:33
Int_t FlushBasketsImpl() const
Internal implementation of the FlushBaskets algorithm.
Definition: TTree.cxx:4965
A List of entry numbers in a TTree or TChain.
Definition: TEntryList.h:25
virtual Int_t AddBranchToCache(const char *bname, Bool_t subbranches=kFALSE)
Add branch with name bname to the Tree cache.
Definition: TTree.cxx:1025
const Bool_t kTRUE
Definition: RtypesCore.h:87
Int_t fPacketSize
! Number of entries in one packet for parallel root
Definition: TTree.h:102
const Int_t n
Definition: legend1.C:16
virtual Long64_t Project(const char *hname, const char *varexp, const char *selection="", Option_t *option="", Long64_t nentries=kMaxEntries, Long64_t firstentry=0)
Make a projection of a tree using selections.
Definition: TTree.cxx:7246
virtual void SetScanField(Int_t n=50)
Definition: TTree.h:618
Line Attributes class.
Definition: TAttLine.h:18
virtual Double_t * GetV1()
Definition: TTree.h:514
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=0)
Definition: TTree.h:572
TIOFeatures fIOFeatures
IO features to define for newly-written baskets and branches.
Definition: TTree.h:107
static constexpr Long64_t kMaxEntries
Definition: TTree.h:217
char name[80]
Definition: TGX11.cxx:109
TFriendLock(const TFriendLock &)
Copy constructor.
Definition: TTree.cxx:505
virtual Long64_t GetEntriesFriend() const
Return pointer to the 1st Leaf named name in any Branch of this Tree or any branch in the list of fri...
Definition: TTree.cxx:5307
virtual void SetName(const char *name)
Change the name of this tree.
Definition: TTree.cxx:8872
Long64_t GetEstimatedClusterSize()
Estimate the cluster size.
Definition: TTree.cxx:596
A Chain Index.
Definition: TChainIndex.h:39
virtual void PrintCacheStats(Option_t *option="") const
Print statistics about the TreeCache for this tree.
Definition: TTree.cxx:7118
void MoveReadCache(TFile *src, TDirectory *dir)
Move a cache from a file to the current file in dir.
Definition: TTree.cxx:6790
virtual void CopyAddresses(TTree *, Bool_t undo=kFALSE)
Set branch addresses of passed tree equal to ours.
Definition: TTree.cxx:3187
virtual TObjArray * GetListOfLeaves()
Definition: TTree.h:467
virtual Long64_t GetMaxVirtualSize() const
Definition: TTree.h:478
Long64_t fSavedBytes
Number of autosaved bytes.
Definition: TTree.h:81
Long64_t fCacheSize
! Maximum size of file buffers
Definition: TTree.h:98
virtual const char * GetFriendAlias(TTree *) const
If the &#39;tree&#39; is a friend, this method returns its alias name.
Definition: TTree.cxx:5828
virtual void SetChainOffset(Long64_t offset=0)
Definition: TTree.h:584
virtual Long64_t AutoSave(Option_t *option="")
AutoSave tree header every fAutoSave bytes.
Definition: TTree.cxx:1425
virtual Double_t * GetIndexValues()
Definition: TTree.h:460
virtual Double_t * GetV1() const =0
std::atomic< Long64_t > fIMTTotBytes
! Total bytes for the IMT flush baskets
Definition: TTree.h:149