Logo ROOT  
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 "TClass.h"
37#include "TDataType.h"
38#include "TDirectory.h"
39#include "TObjArray.h"
40#include "TVirtualTreePlayer.h"
41
42#ifdef R__LESS_INCLUDES
43class TBranch;
44class TList;
45#else
46#include "TBranch.h"
47// #include "TBuffer.h"
48#include "TList.h"
49#endif
50
51#include <array>
52#include <atomic>
53#include <vector>
54#include <utility>
55
56class TBuffer;
57class TBrowser;
58class TFile;
59class TLeaf;
60class TH1;
61class TTreeFormula;
62class TPolyMarker;
63class TEventList;
64class TEntryList;
65class TSQLResult;
66class TSelector;
67class TPrincipal;
68class TFriendElement;
69class TCut;
70class TVirtualIndex;
71class TBranchRef;
72class TBasket;
73class TStreamerInfo;
74class TTreeCache;
75class TTreeCloner;
76class TFileMergeInfo;
78
79class TTree : public TNamed, public TAttLine, public TAttFill, public TAttMarker {
80
82
83protected:
84 Long64_t fEntries; ///< Number of entries
85// NOTE: cannot use std::atomic for these counters as it cannot be serialized.
86 Long64_t fTotBytes; ///< Total number of bytes in all branches before compression
87 Long64_t fZipBytes; ///< Total number of bytes in all branches after compression
88 Long64_t fSavedBytes; ///< Number of autosaved bytes
89 Long64_t fFlushedBytes; ///< Number of auto-flushed bytes
90 Double_t fWeight; ///< Tree weight (see TTree::SetWeight)
91 Int_t fTimerInterval; ///< Timer interval in milliseconds
92 Int_t fScanField; ///< Number of runs before prompting in Scan
93 Int_t fUpdate; ///< Update frequency for EntryLoop
94 Int_t fDefaultEntryOffsetLen; ///< Initial Length of fEntryOffset table in the basket buffers
95 Int_t fNClusterRange; ///< Number of Cluster range in addition to the one defined by 'AutoFlush'
96 Int_t fMaxClusterRange; ///<! Memory allocated for the cluster range.
97 Long64_t fMaxEntries; ///< Maximum number of entries in case of circular buffers
98 Long64_t fMaxEntryLoop; ///< Maximum number of entries to process
99 Long64_t fMaxVirtualSize; ///< Maximum total size of buffers kept in memory
100 Long64_t fAutoSave; ///< Autosave tree when fAutoSave entries written or -fAutoSave (compressed) bytes produced
101 Long64_t fAutoFlush; ///< Auto-flush tree when fAutoFlush entries written or -fAutoFlush (compressed) bytes produced
102 Long64_t fEstimate; ///< Number of entries to estimate histogram limits
103 Long64_t *fClusterRangeEnd; ///<[fNClusterRange] Last entry of a cluster range.
104 Long64_t *fClusterSize; ///<[fNClusterRange] Number of entries in each cluster for a given range.
105 Long64_t fCacheSize; ///<! Maximum size of file buffers
106 Long64_t fChainOffset; ///<! Offset of 1st entry of this Tree in a TChain
107 Long64_t fReadEntry; ///<! Number of the entry being processed
108 std::atomic<Long64_t> fTotalBuffers; ///<! Total number of bytes in branch buffers
109 Int_t fPacketSize; ///<! Number of entries in one packet for parallel root
110 Int_t fNfill; ///<! Local for EntryLoop
111 Int_t fDebug; ///<! Debug level
112 Long64_t fDebugMin; ///<! First entry number to debug
113 Long64_t fDebugMax; ///<! Last entry number to debug
114 TIOFeatures fIOFeatures{0}; ///< IO features to define for newly-written baskets and branches.
115 Int_t fMakeClass; ///<! not zero when processing code generated by MakeClass
116 Int_t fFileNumber; ///<! current file number (if file extensions)
117 TObject *fNotify; ///<! Object to be notified when loading a Tree
118 TDirectory *fDirectory; ///<! Pointer to directory holding this tree
119 TObjArray fBranches; ///< List of Branches
120 TObjArray fLeaves; ///< Direct pointers to individual branch leaves
121 TList *fAliases; ///< List of aliases for expressions based on the tree branches.
122 TEventList *fEventList; ///<! Pointer to event selection list (if one)
123 TEntryList *fEntryList; ///<! Pointer to event selection list (if one)
124 TArrayD fIndexValues; ///< Sorted index values
125 TArrayI fIndex; ///< Index of sorted values
126 TVirtualIndex *fTreeIndex; ///< Pointer to the tree Index (if any)
127 TList *fFriends; ///< pointer to list of friend elements
128 TList *fExternalFriends; ///<! List of TFriendsElement pointing to us and need to be notified of LoadTree. Content not owned.
129 TVirtualPerfStats *fPerfStats; ///<! pointer to the current perf stats object
130 TList *fUserInfo; ///< pointer to a list of user objects associated to this Tree
131 TVirtualTreePlayer *fPlayer; ///<! Pointer to current Tree player
132 TList *fClones; ///<! List of cloned trees which share our addresses
133 TBranchRef *fBranchRef; ///< Branch supporting the TRefTable (if any)
134 UInt_t fFriendLockStatus; ///<! Record which method is locking the friend recursion
135 TBuffer *fTransientBuffer; ///<! Pointer to the current transient buffer.
136 Bool_t fCacheDoAutoInit; ///<! true if cache auto creation or resize check is needed
137 Bool_t fCacheDoClusterPrefetch;///<! true if cache is prefetching whole clusters
138 Bool_t fCacheUserSet; ///<! true if the cache setting was explicitly given by user
139 Bool_t fIMTEnabled; ///<! true if implicit multi-threading is enabled for this tree
140 UInt_t fNEntriesSinceSorting; ///<! Number of entries processed since the last re-sorting of branches
141 std::vector<std::pair<Long64_t,TBranch*>> fSortedBranches; ///<! Branches to be processed in parallel when IMT is on, sorted by average task time
142 std::vector<TBranch*> fSeqBranches; ///<! Branches to be processed sequentially when IMT is on
143 Float_t fTargetMemoryRatio{1.1f}; ///<! Ratio for memory usage in uncompressed buffers versus actual occupancy. 1.0
144 /// indicates basket should be resized to exact memory usage, but causes significant
145/// memory churn.
146#ifdef R__TRACK_BASKET_ALLOC_TIME
147 mutable std::atomic<ULong64_t> fAllocationTime{0}; ///<! Time spent reallocating basket memory buffers, in microseconds.
148#endif
149 mutable std::atomic<UInt_t> fAllocationCount{0}; ///<! Number of reallocations basket memory buffers.
150
151 static Int_t fgBranchStyle; ///< Old/New branch style
152 static Long64_t fgMaxTreeSize; ///< Maximum size of a file containing a Tree
153
154private:
155 // For simplicity, although fIMTFlush is always disabled in non-IMT builds, we don't #ifdef it out.
156 mutable Bool_t fIMTFlush{false}; ///<! True if we are doing a multithreaded flush.
157 mutable std::atomic<Long64_t> fIMTTotBytes; ///<! Total bytes for the IMT flush baskets
158 mutable std::atomic<Long64_t> fIMTZipBytes; ///<! Zip bytes for the IMT flush baskets.
159
160 void InitializeBranchLists(bool checkLeafCount);
161 void SortBranchesByTime();
162 Int_t FlushBasketsImpl() const;
163 void MarkEventCluster();
165
166protected:
167 virtual void KeepCircular();
168 virtual TBranch *BranchImp(const char* branchname, const char* classname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
169 virtual TBranch *BranchImp(const char* branchname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
170 virtual TBranch *BranchImpRef(const char* branchname, const char* classname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
171 virtual TBranch *BranchImpRef(const char* branchname, TClass* ptrClass, EDataType datatype, void* addobj, Int_t bufsize, Int_t splitlevel);
172 virtual TBranch *BranchImpArr(const char* branchname, EDataType datatype, std::size_t N, void* addobj, Int_t bufsize, Int_t splitlevel);
173 virtual Int_t CheckBranchAddressType(TBranch* branch, TClass* ptrClass, EDataType datatype, Bool_t ptr);
174 virtual TBranch *BronchExec(const char* name, const char* classname, void* addobj, Bool_t isptrptr, Int_t bufsize, Int_t splitlevel);
175 friend TBranch *TTreeBranchImpRef(TTree *tree, const char* branchname, TClass* ptrClass, EDataType datatype, void* addobj, Int_t bufsize, Int_t splitlevel);
176 Int_t SetBranchAddressImp(TBranch *branch, void* addr, TBranch** ptr);
177 virtual TLeaf *GetLeafImpl(const char* branchname, const char* leafname);
178
179 Long64_t GetCacheAutoSize(Bool_t withDefault = kFALSE);
180 char GetNewlineValue(std::istream &inputStream);
181 void ImportClusterRanges(TTree *fromtree);
182 void MoveReadCache(TFile *src, TDirectory *dir);
183 Int_t SetCacheSizeAux(Bool_t autocache = kTRUE, Long64_t cacheSize = 0);
184
186 // Helper class to prevent infinite recursion in the
187 // usage of TTree Friends. Implemented in TTree.cxx.
188 TTree *fTree; // Pointer to the locked tree
189 UInt_t fMethodBit; // BIT for the locked method
190 Bool_t fPrevious; // Previous value of the BIT.
191
192 protected:
193 TFriendLock(const TFriendLock&);
195
196 public:
197 TFriendLock(TTree* tree, UInt_t methodbit);
198 ~TFriendLock();
199 };
200 friend class TFriendLock;
201 // So that the index class can use TFriendLock:
202 friend class TTreeIndex;
203 friend class TChainIndex;
204 // So that the TTreeCloner can access the protected interfaces
205 friend class TTreeCloner;
206
207 // use to update fFriendLockStatus
219 kPrint = BIT(10),
222 };
223
224public:
225 // Used as the max value for any TTree range operation.
227
228 // SetBranchAddress return values
241 kNeedEnableDecomposedObj = BIT(29), // DecomposedObj is the newer name of MakeClass mode
244 };
245
246 // TTree status bits
250 /// If set, the branch's buffers will grow until an event cluster boundary is hit,
251 /// guaranteeing a basket per cluster. This mode does not provide any guarantee on the
252 /// memory bounds in the case of extremely large events.
254 /// If set, signals that this TTree is the output of the processing of another TTree, and
255 /// the entries are reshuffled w.r.t. to the original TTree. As a safety measure, a TTree
256 /// with this bit set cannot add friends nor can be added as a friend. If you know what
257 /// you are doing, you can manually unset this bit with `ResetBit(EStatusBits::kEntriesReshuffled)`.
258 kEntriesReshuffled = BIT(19) // bits 15-18 are used by TChain
259 };
260
261 // Split level modifier
262 enum {
264 };
265
267 {
268 private:
269 TTree *fTree; // TTree upon which we are iterating.
270 Int_t fClusterRange; // Which cluster range are we looking at.
271 Long64_t fStartEntry; // Where does the cluster start.
272 Long64_t fNextEntry; // Where does the cluster end (exclusive).
273 Long64_t fEstimatedSize; // If positive, the calculated estimated tree size.
274
276
277 protected:
278 friend class TTree;
279 TClusterIterator(TTree *tree, Long64_t firstEntry);
280
281 public:
282 // Intentionally used the default copy constructor and default destructor
283 // as the TClusterIterator does not own the TTree.
284 // TClusterIterator(const TClusterIterator&);
285 // ~TClusterIterator();
286
287 // No public constructors, the iterator must be
288 // created via TTree::GetClusterIterator
289
290 // Move on to the next cluster and return the starting entry
291 // of this next cluster
292 Long64_t Next();
293
294 // Move on to the previous cluster and return the starting entry
295 // of this previous cluster
297
298 // Return the start entry of the current cluster.
300 return fStartEntry;
301 }
302
303 // Return the first entry of the next cluster.
305 return fNextEntry;
306 }
307
308 Long64_t operator()() { return Next(); }
309 };
310
311 TTree();
312 TTree(const char* name, const char* title, Int_t splitlevel = 99, TDirectory* dir = gDirectory);
313 virtual ~TTree();
314
315 TTree(const TTree& tt) = delete;
316 TTree& operator=(const TTree& tt) = delete;
317
318 virtual Int_t AddBranchToCache(const char *bname, Bool_t subbranches = kFALSE);
319 virtual Int_t AddBranchToCache(TBranch *branch, Bool_t subbranches = kFALSE);
320 virtual Int_t DropBranchFromCache(const char *bname, Bool_t subbranches = kFALSE);
321 virtual Int_t DropBranchFromCache(TBranch *branch, Bool_t subbranches = kFALSE);
322 void AddClone(TTree*);
323 virtual TFriendElement *AddFriend(const char* treename, const char* filename = "");
324 virtual TFriendElement *AddFriend(const char* treename, TFile* file);
325 virtual TFriendElement *AddFriend(TTree* tree, const char* alias = "", Bool_t warn = kFALSE);
326 // As the TBasket invokes Add{Tot,Zip}Bytes on its parent tree, we must do these updates in a thread-safe
327 // manner only when we are flushing multiple baskets in parallel.
328 virtual void AddTotBytes(Int_t tot) { if (fIMTFlush) { fIMTTotBytes += tot; } else { fTotBytes += tot; } }
329 virtual void AddZipBytes(Int_t zip) { if (fIMTFlush) { fIMTZipBytes += zip; } else { fZipBytes += zip; } }
330// NOTE: these counters aren't thread safe like the ones above.
331#ifdef R__TRACK_BASKET_ALLOC_TIME
332 void AddAllocationTime(ULong64_t time) { fAllocationTime += time; }
333#endif
335 virtual Long64_t AutoSave(Option_t* option = "");
336
337 /// Add a new branch, and infer the data type from the type of `obj` being passed.
338 ///
339 /// \note This and the next 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 Address of the object to be added. Make sure to pass a pointer to the actual type/class that
344 /// should be stored in the tree (no pointers to base classes). When calling Fill(), the current value of the type/object will be saved.
345 /// \param[in] bufsize The buffer size in bytes for this branch. When the buffer is full, it is compressed and written to disc.
346 /// 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).
347 /// A small value for bufsize is beneficial if entries in the Tree are accessed randomly and the Tree is in split mode.
348 /// \param[in] splitlevel If T is a class or struct and splitlevel > 0, the members of the object are serialised as separate branches.
349 /// \return Pointer to the TBranch that was created. The branch is owned by the tree.
350 template <class T> TBranch *Branch(const char* name, T* obj, Int_t bufsize = 32000, Int_t splitlevel = 99)
351 {
352 return BranchImpRef(name, TClass::GetClass<T>(), TDataType::GetType(typeid(T)), obj, bufsize, splitlevel);
353 }
354
355 /// Add a new branch, and infer the data type from the array `addobj` being passed.
356 ///
357 /// \note This and the previous overload should cover most cases for creating a branch. Try to use these two whenever
358 /// possible, unless e.g. type conversions are needed.
359 ///
360 /// \param[in] name Name of the branch to be created.
361 /// \param[in] addobj Array of the objects to be added. When calling Fill(), the current value of the type/object will be saved.
362 /// \param[in] bufsize he buffer size in bytes for this branch. When the buffer is full, it is compressed and written to disc.
363 /// 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).
364 /// A small value for bufsize is beneficial if entries in the Tree are accessed randomly and the Tree is in split mode.
365 /// \param[in] splitlevel If T is a class or struct and splitlevel > 0, the members of the object are serialised as separate branches.
366 /// \return Pointer to the TBranch that was created. The branch is owned by the tree.
367 template <class T> TBranch *Branch(const char* name, T** addobj, Int_t bufsize = 32000, Int_t splitlevel = 99)
368 {
369 return BranchImp(name, TClass::GetClass<T>(), addobj, bufsize, splitlevel);
370 }
371
372 virtual Int_t Branch(TCollection* list, Int_t bufsize = 32000, Int_t splitlevel = 99, const char* name = "");
373 virtual Int_t Branch(TList* list, Int_t bufsize = 32000, Int_t splitlevel = 99);
374 virtual Int_t Branch(const char* folder, Int_t bufsize = 32000, Int_t splitlevel = 99);
375 virtual TBranch *Branch(const char* name, void* address, const char* leaflist, Int_t bufsize = 32000);
376 TBranch *Branch(const char* name, char* address, const char* leaflist, Int_t bufsize = 32000)
377 {
378 // Overload to avoid confusion between this signature and the template instance.
379 return Branch(name,(void*)address,leaflist,bufsize);
380 }
381 TBranch *Branch(const char* name, Longptr_t address, const char* leaflist, Int_t bufsize = 32000)
382 {
383 // Overload to avoid confusion between this signature and the template instance.
384 return Branch(name,(void*)address,leaflist,bufsize);
385 }
386 TBranch *Branch(const char* name, int address, const char* leaflist, Int_t bufsize = 32000)
387 {
388 // Overload to avoid confusion between this signature and the template instance.
389 return Branch(name,(void*)(Longptr_t)address,leaflist,bufsize);
390 }
391 virtual TBranch *Branch(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 99);
392 template <class T> TBranch *Branch(const char* name, const char* classname, T* obj, Int_t bufsize = 32000, Int_t splitlevel = 99)
393 {
394 // See BranchImpRed for details. Here we __ignore
395 return BranchImpRef(name, classname, TClass::GetClass<T>(), obj, bufsize, splitlevel);
396 }
397 template <class T> TBranch *Branch(const char* name, const char* classname, T** addobj, Int_t bufsize = 32000, Int_t splitlevel = 99)
398 {
399 // See BranchImp for details
400 return BranchImp(name, classname, TClass::GetClass<T>(), addobj, bufsize, splitlevel);
401 }
402 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)
403 {
404 TClass *cl = TClass::GetClass<T>();
405 if (cl) {
406 TClass *arrCl = TClass::GetClass<std::array<T, N>>();
407 Error("Branch","std::array of objects not yet supported as top level branch object (the class is %s)",
408 arrCl ? arrCl->GetName() : cl->GetName());
409 return nullptr;
410 }
411 return BranchImpArr(name, TDataType::GetType(typeid(T)), N, obj, bufsize, splitlevel);
412 }
413 virtual TBranch *Bronch(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 99);
414 virtual TBranch *BranchOld(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 1);
415 virtual TBranch *BranchRef();
416 void Browse(TBrowser*) override;
417 virtual Int_t BuildIndex(const char *majorname, const char *minorname = "0");
418 TStreamerInfo *BuildStreamerInfo(TClass* cl, void *pointer = nullptr, Bool_t canOptimize = kTRUE);
419 virtual TFile *ChangeFile(TFile* file);
420 virtual TTree *CloneTree(Long64_t nentries = -1, Option_t* option = "");
421 virtual void CopyAddresses(TTree*,Bool_t undo = kFALSE);
422 virtual Long64_t CopyEntries(TTree* tree, Long64_t nentries = -1, Option_t *option = "", Bool_t needCopyAddresses = false);
423 virtual TTree *CopyTree(const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
424 virtual TBasket *CreateBasket(TBranch*);
425 virtual void DirectoryAutoAdd(TDirectory *);
426 Int_t Debug() const { return fDebug; }
427 void Delete(Option_t* option = "") override; // *MENU*
428 void Draw(Option_t* opt) override { Draw(opt, "", "", kMaxEntries, 0); }
429 virtual Long64_t Draw(const char* varexp, const TCut& selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
430 virtual Long64_t Draw(const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
431 virtual void DropBaskets();
432 virtual void DropBuffers(Int_t nbytes);
433 virtual Int_t Fill();
434 virtual TBranch *FindBranch(const char* name);
435 virtual TLeaf *FindLeaf(const char* name);
436 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*
437 virtual Int_t FlushBaskets(Bool_t create_cluster = true) const;
438 virtual const char *GetAlias(const char* aliasName) const;
440#ifdef R__TRACK_BASKET_ALLOC_TIME
441 ULong64_t GetAllocationTime() const { return fAllocationTime; }
442#endif
443 virtual Long64_t GetAutoFlush() const {return fAutoFlush;}
444 virtual Long64_t GetAutoSave() const {return fAutoSave;}
445 virtual TBranch *GetBranch(const char* name);
446 virtual TBranchRef *GetBranchRef() const { return fBranchRef; };
447 virtual Bool_t GetBranchStatus(const char* branchname) const;
448 static Int_t GetBranchStyle();
449 virtual Long64_t GetCacheSize() const { return fCacheSize; }
450 virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
451 virtual Long64_t GetChainEntryNumber(Long64_t entry) const { return entry; }
452 virtual Long64_t GetChainOffset() const { return fChainOffset; }
454 TFile *GetCurrentFile() const;
456 Long64_t GetDebugMax() const { return fDebugMax; }
457 Long64_t GetDebugMin() const { return fDebugMin; }
458 TDirectory *GetDirectory() const { return fDirectory; }
459 virtual Long64_t GetEntries() const { return fEntries; }
460 virtual Long64_t GetEntries(const char *selection);
461 virtual Long64_t GetEntriesFast() const { return fEntries; }
462 virtual Long64_t GetEntriesFriend() const;
463 virtual Long64_t GetEstimate() const { return fEstimate; }
464 virtual Int_t GetEntry(Long64_t entry, Int_t getall = 0);
465 Int_t GetEvent(Long64_t entry, Int_t getall = 0) { return GetEntry(entry, getall); }
466 virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor = 0);
467 virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor = 0) const;
468 virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor = 0) const;
469 TEventList *GetEventList() const { return fEventList; }
470 virtual TEntryList *GetEntryList();
471 virtual Long64_t GetEntryNumber(Long64_t entry) const;
472 virtual Int_t GetFileNumber() const { return fFileNumber; }
473 virtual TTree *GetFriend(const char*) const;
474 virtual const char *GetFriendAlias(TTree*) const;
476 virtual Bool_t GetImplicitMT() { return fIMTEnabled; }
477 virtual Int_t *GetIndex() { return &fIndex.fArray[0]; }
478 virtual Double_t *GetIndexValues() { return &fIndexValues.fArray[0]; }
481 virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
482 virtual TLeaf *GetLeaf(const char* name);
483 virtual TList *GetListOfClones() { return fClones; }
484 virtual TObjArray *GetListOfBranches() { return &fBranches; }
485 virtual TObjArray *GetListOfLeaves() { return &fLeaves; }
486 virtual TList *GetListOfFriends() const { return fFriends; }
487 virtual TList *GetListOfAliases() const { return fAliases; }
488
489 // GetMakeClass is left non-virtual for efficiency reason.
490 // Making it virtual affects the performance of the I/O
491 Int_t GetMakeClass() const { return fMakeClass; }
492
493 virtual Long64_t GetMaxEntryLoop() const { return fMaxEntryLoop; }
494 virtual Double_t GetMaximum(const char* columname);
495 static Long64_t GetMaxTreeSize();
496 virtual Long64_t GetMaxVirtualSize() const { return fMaxVirtualSize; }
497 virtual Double_t GetMinimum(const char* columname);
499 TObject *GetNotify() const { return fNotify; }
501 virtual Int_t GetPacketSize() const { return fPacketSize; }
502 virtual TVirtualPerfStats *GetPerfStats() const { return fPerfStats; }
505 virtual Long64_t GetReadEntry() const { return fReadEntry; }
506 virtual Long64_t GetReadEvent() const { return fReadEntry; }
507 virtual Int_t GetScanField() const { return fScanField; }
510 virtual Int_t GetTimerInterval() const { return fTimerInterval; }
512 virtual Long64_t GetTotBytes() const { return fTotBytes; }
513 virtual TTree *GetTree() const { return const_cast<TTree*>(this); }
514 virtual TVirtualIndex *GetTreeIndex() const { return fTreeIndex; }
515 virtual Int_t GetTreeNumber() const { return 0; }
517 virtual Int_t GetUpdate() const { return fUpdate; }
518 virtual TList *GetUserInfo();
519 // See TSelectorDraw::GetVar
521 // See TSelectorDraw::GetVar
523 // See TSelectorDraw::GetVar
525 // See TSelectorDraw::GetVar
527 // See TSelectorDraw::GetVar
529 // See TSelectorDraw::GetVal
530 virtual Double_t *GetVal(Int_t i) { return GetPlayer()->GetVal(i); }
531 // See TSelectorDraw::GetVal
532 virtual Double_t *GetV1() { return GetPlayer()->GetV1(); }
533 // See TSelectorDraw::GetVal
534 virtual Double_t *GetV2() { return GetPlayer()->GetV2(); }
535 // See TSelectorDraw::GetVal
536 virtual Double_t *GetV3() { return GetPlayer()->GetV3(); }
537 // See TSelectorDraw::GetVal
538 virtual Double_t *GetV4() { return GetPlayer()->GetV4(); }
539 virtual Double_t *GetW() { return GetPlayer()->GetW(); }
540 virtual Double_t GetWeight() const { return fWeight; }
541 virtual Long64_t GetZipBytes() const { return fZipBytes; }
542 virtual void IncrementTotalBuffers(Int_t nbytes) { fTotalBuffers += nbytes; }
543 Bool_t IsFolder() const override { return kTRUE; }
544 virtual Bool_t InPlaceClone(TDirectory *newdirectory, const char *options = "");
545 virtual Int_t LoadBaskets(Long64_t maxmemory = 2000000000);
546 virtual Long64_t LoadTree(Long64_t entry);
547 virtual Long64_t LoadTreeFriend(Long64_t entry, TTree* T);
548 virtual Int_t MakeClass(const char *classname = nullptr, Option_t* option = "");
549 virtual Int_t MakeCode(const char *filename = nullptr);
550 virtual Int_t MakeProxy(const char* classname, const char* macrofilename = nullptr, const char* cutfilename = nullptr, const char* option = nullptr, Int_t maxUnrolling = 3);
551 virtual Int_t MakeSelector(const char *selector = nullptr, Option_t *option = "");
552 Bool_t MemoryFull(Int_t nbytes);
553 virtual Long64_t Merge(TCollection* list, Option_t* option = "");
554 virtual Long64_t Merge(TCollection* list, TFileMergeInfo *info);
555 static TTree *MergeTrees(TList* list, Option_t* option = "");
556 Bool_t Notify() override;
557 virtual void OptimizeBaskets(ULong64_t maxMemory=10000000, Float_t minComp=1.1, Option_t *option="");
558 TPrincipal *Principal(const char* varexp = "", const char* selection = "", Option_t* option = "np", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
559 void Print(Option_t* option = "") const override; // *MENU*
560 virtual void PrintCacheStats(Option_t* option = "") const;
561 virtual Long64_t Process(const char* filename, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
562 virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
563 virtual Long64_t Project(const char* hname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
564 virtual TSQLResult *Query(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
565 virtual Long64_t ReadFile(const char* filename, const char* branchDescriptor = "", char delimiter = ' ');
566 virtual Long64_t ReadStream(std::istream& inputStream, const char* branchDescriptor = "", char delimiter = ' ');
567 virtual void Refresh();
569 virtual void RemoveExternalFriend(TFriendElement *);
570 virtual void RemoveFriend(TTree*);
571 void RecursiveRemove(TObject *obj) override;
572 virtual void Reset(Option_t* option = "");
573 virtual void ResetAfterMerge(TFileMergeInfo *);
574 virtual void ResetBranchAddress(TBranch *);
575 virtual void ResetBranchAddresses();
576 virtual Long64_t Scan(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
577 virtual Bool_t SetAlias(const char* aliasName, const char* aliasFormula);
578 virtual void SetAutoSave(Long64_t autos = -300000000);
579 virtual void SetAutoFlush(Long64_t autof = -30000000);
580 virtual void SetBasketSize(const char* bname, Int_t buffsize = 16000);
581 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = nullptr);
582 virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
583 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
584 template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = nullptr) {
585 TClass *cl = TClass::GetClass<T>();
587 if (!cl) type = TDataType::GetType(typeid(T));
588 return SetBranchAddress(bname,add,ptr,cl,type,true);
589 }
590#ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
591 // This can only be used when the template overload resolution can distinguish between
592 // T* and T**
593 template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = nullptr) {
594 TClass *cl = TClass::GetClass<T>();
596 if (!cl) type = TDataType::GetType(typeid(T));
597 return SetBranchAddress(bname,add,ptr,cl,type,false);
598 }
599#endif
600 virtual void SetBranchStatus(const char* bname, Bool_t status = 1, UInt_t* found = nullptr);
601 static void SetBranchStyle(Int_t style = 1); //style=0 for old branch, =1 for new branch style
602 virtual Int_t SetCacheSize(Long64_t cachesize = -1);
604 virtual void SetCacheLearnEntries(Int_t n=10);
606 virtual void SetCircular(Long64_t maxEntries);
607 virtual void SetClusterPrefetch(Bool_t enabled) { fCacheDoClusterPrefetch = enabled; }
608 virtual void SetDebug(Int_t level = 1, Long64_t min = 0, Long64_t max = 9999999); // *MENU*
609 virtual void SetDefaultEntryOffsetLen(Int_t newdefault, Bool_t updateExisting = kFALSE);
610 virtual void SetDirectory(TDirectory* dir);
611 virtual Long64_t SetEntries(Long64_t n = -1);
612 virtual void SetEstimate(Long64_t nentries = 1000000);
614 virtual void SetFileNumber(Int_t number = 0);
615 virtual void SetEventList(TEventList* list);
616 virtual void SetEntryList(TEntryList* list, Option_t *opt="");
617 virtual void SetImplicitMT(Bool_t enabled) { fIMTEnabled = enabled; }
618 virtual void SetMakeClass(Int_t make);
619 virtual void SetMaxEntryLoop(Long64_t maxev = kMaxEntries) { fMaxEntryLoop = maxev; } // *MENU*
620 static void SetMaxTreeSize(Long64_t maxsize = 100000000000LL);
621 virtual void SetMaxVirtualSize(Long64_t size = 0) { fMaxVirtualSize = size; } // *MENU*
622 void SetName(const char* name) override; // *MENU*
623
624 /**
625 * @brief Sets the address of the object to be notified when the tree is loaded.
626 *
627 * The method TObject::Notify is called for the given object when the tree
628 * is loaded. Specifically this occurs in the TTree::LoadTree method. To
629 * remove the notification call this method with nullptr:
630 * @code tree->SetNotify(nullptr); @endcode
631 *
632 * @param[in] obj Pointer to a TObject to be notified.
633 */
634 virtual void SetNotify(TObject* obj) { fNotify = obj; }
635
636 virtual void SetObject(const char* name, const char* title);
637 virtual void SetParallelUnzip(Bool_t opt=kTRUE, Float_t RelSize=-1);
638 virtual void SetPerfStats(TVirtualPerfStats* perf);
639 virtual void SetScanField(Int_t n = 50) { fScanField = n; } // *MENU*
641 virtual void SetTimerInterval(Int_t msec = 333) { fTimerInterval=msec; }
642 virtual void SetTreeIndex(TVirtualIndex* index);
643 virtual void SetWeight(Double_t w = 1, Option_t* option = "");
644 virtual void SetUpdate(Int_t freq = 0) { fUpdate = freq; }
645 virtual void Show(Long64_t entry = -1, Int_t lenmax = 20);
646 virtual void StartViewer(); // *MENU*
648 virtual Int_t UnbinnedFit(const char* funcname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
649 void UseCurrentStyle() override;
650 Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) override;
651 Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const override;
652
653 ClassDefOverride(TTree, 20) // Tree descriptor (the main ROOT I/O class)
654};
655
656//////////////////////////////////////////////////////////////////////////
657// //
658// TTreeFriendLeafIter //
659// //
660// Iterator on all the leaves in a TTree and its friend //
661// //
662//////////////////////////////////////////////////////////////////////////
663
665
666protected:
667 TTree *fTree; ///< tree being iterated
668 TIterator *fLeafIter; ///< current leaf sub-iterator.
669 TIterator *fTreeIter; ///< current tree sub-iterator.
670 Bool_t fDirection; ///< iteration direction
671
672 TTreeFriendLeafIter() : fTree(nullptr), fLeafIter(nullptr), fTreeIter(nullptr),
673 fDirection(kFALSE) { }
674
675public:
679 TIterator &operator=(const TIterator &rhs) override;
681
682 const TCollection *GetCollection() const override { return nullptr; }
683 Option_t *GetOption() const override;
684 TObject *Next() override;
686 Bool_t operator !=(const TIterator&) const override {
687 // TODO: Implement me
688 return false;
689 }
691 // TODO: Implement me
692 return false;
693 }
694 TObject *operator*() const override {
695 // TODO: Implement me
696 return nullptr;
697 }
698 ClassDefOverride(TTreeFriendLeafIter,0) //Linked list iterator
699 };
700
701
702#endif
#define SafeDelete(p)
Definition: RConfig.hxx:547
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
bool Bool_t
Definition: RtypesCore.h:63
int Int_t
Definition: RtypesCore.h:45
long Longptr_t
Definition: RtypesCore.h:82
const Bool_t kFALSE
Definition: RtypesCore.h:101
unsigned int UInt_t
Definition: RtypesCore.h:46
float Float_t
Definition: RtypesCore.h:57
double Double_t
Definition: RtypesCore.h:59
long long Long64_t
Definition: RtypesCore.h:80
unsigned long long ULong64_t
Definition: RtypesCore.h:81
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define BIT(n)
Definition: Rtypes.h:85
#define ClassDefOverride(name, id)
Definition: Rtypes.h:339
const Bool_t kIterForward
Definition: TCollection.h:42
EDataType
Definition: TDataType.h:28
@ kOther_t
Definition: TDataType.h:32
#define gDirectory
Definition: TDirectory.h:384
#define N
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char filename
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t index
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t src
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t type
Option_t Option_t style
char name[80]
Definition: TGX11.cxx:110
int nentries
Definition: THbookFile.cxx:91
TIOFeatures provides the end-user with the ability to change the IO behavior of data written via a TT...
Definition: TIOFeatures.hxx:69
Array of doubles (64 bits per element).
Definition: TArrayD.h:27
Double_t * fArray
Definition: TArrayD.h:30
Array of integers (32 bits per element).
Definition: TArrayI.h:27
Int_t * fArray
Definition: TArrayI.h:30
Fill Area Attributes class.
Definition: TAttFill.h:19
Line Attributes class.
Definition: TAttLine.h:18
Marker Attributes class.
Definition: TAttMarker.h:19
Manages buffers for branches of a Tree.
Definition: TBasket.h:34
A branch containing and managing a TRefTable for TRef autoloading.
Definition: TBranchRef.h:34
A TTree is a list of TBranches.
Definition: TBranch.h:89
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
Buffer base class used for serializing objects.
Definition: TBuffer.h:43
A Chain Index.
Definition: TChainIndex.h:40
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:81
Collection abstract base class.
Definition: TCollection.h:65
A specialized string object used for TTree selections.
Definition: TCut.h:25
Int_t GetType() const
Definition: TDataType.h:68
Describe directory structure in memory.
Definition: TDirectory.h:45
A List of entry numbers in a TTree or TChain.
Definition: TEntryList.h:26
A TEventList object is a list of selected events (entries) in a TTree.
Definition: TEventList.h:31
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:54
A TFriendElement TF describes a TTree object TF in a file.
TH1 is the base class of all histogram classes in ROOT.
Definition: TH1.h:58
Iterator abstract base class.
Definition: TIterator.h:30
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:57
A doubly linked list.
Definition: TList.h:38
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
const char * GetName() const override
Returns name of object.
Definition: TNamed.h:47
An array of TObjects.
Definition: TObjArray.h:31
Int_t GetEntriesFast() const
Definition: TObjArray.h:58
Mother of all ROOT objects.
Definition: TObject.h:41
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:970
EStatusBits
Definition: TObject.h:61
A PolyMarker is defined by an array on N points in a 2-D space.
Definition: TPolyMarker.h:31
Principal Components Analysis (PCA)
Definition: TPrincipal.h:21
A TSelector object is used by the TTree::Draw, TTree::Scan, TTree::Process to navigate in a TTree and...
Definition: TSelector.h:31
Describes a persistent version of a class.
Definition: TStreamerInfo.h:39
A cache to speed-up the reading of ROOT datasets.
Definition: TTreeCache.h:32
Class implementing or helping the various TTree cloning method.
Definition: TTreeCloner.h:31
Used to pass a selection expression to the Tree drawing routine.
Definition: TTreeFormula.h:58
Iterator on all the leaves in a TTree and its friend.
Definition: TTree.h:664
const TCollection * GetCollection() const override
Definition: TTree.h:682
TTree * fTree
tree being iterated
Definition: TTree.h:667
TObject * operator*() const override
Return current object or nullptr.
Definition: TTree.h:694
void Reset() override
Definition: TTree.h:685
TIterator & operator=(const TIterator &rhs) override
Overridden assignment operator. Does NOT copy the 'cursor' location!
Definition: TTree.cxx:9753
TObject * Next() override
Go the next friend element.
Definition: TTree.cxx:9776
Bool_t operator!=(const TIterator &) const override
Compare two iterator objects.
Definition: TTree.h:686
TIterator * fLeafIter
current leaf sub-iterator.
Definition: TTree.h:668
Option_t * GetOption() const override
Returns the object option stored in the list.
Definition: TTree.cxx:9815
TIterator * fTreeIter
current tree sub-iterator.
Definition: TTree.h:669
Bool_t fDirection
iteration direction
Definition: TTree.h:670
A Tree Index with majorname and minorname.
Definition: TTreeIndex.h:29
Helper class to iterate over cluster of baskets.
Definition: TTree.h:267
Long64_t GetEstimatedClusterSize()
Estimate the cluster size.
Definition: TTree.cxx:611
Long64_t Previous()
Move on to the previous cluster and return the starting entry of this previous cluster.
Definition: TTree.cxx:694
Long64_t GetStartEntry()
Definition: TTree.h:299
Long64_t fNextEntry
Definition: TTree.h:272
Long64_t operator()()
Definition: TTree.h:308
Long64_t Next()
Move on to the next cluster and return the starting entry of this next cluster.
Definition: TTree.cxx:650
Long64_t GetNextEntry()
Definition: TTree.h:304
Long64_t fStartEntry
Definition: TTree.h:271
Long64_t fEstimatedSize
Definition: TTree.h:273
TClusterIterator(TTree *tree, Long64_t firstEntry)
Regular constructor.
Definition: TTree.cxx:560
Helper class to prevent infinite recursion in the usage of TTree Friends.
Definition: TTree.h:185
TFriendLock & operator=(const TFriendLock &)
Assignment operator.
Definition: TTree.cxx:530
TFriendLock(const TFriendLock &)
Copy constructor.
Definition: TTree.cxx:520
UInt_t fMethodBit
Definition: TTree.h:189
TTree * fTree
Definition: TTree.h:188
~TFriendLock()
Restore the state of tree the same as before we set the lock.
Definition: TTree.cxx:543
Bool_t fPrevious
Definition: TTree.h:190
A TTree represents a columnar dataset.
Definition: TTree.h:79
virtual Int_t Fill()
Fill all branches.
Definition: TTree.cxx:4573
virtual TFriendElement * AddFriend(const char *treename, const char *filename="")
Add a TFriendElement to the list of friends.
Definition: TTree.cxx:1331
TBranchRef * fBranchRef
Branch supporting the TRefTable (if any)
Definition: TTree.h:133
virtual Int_t AddBranchToCache(const char *bname, Bool_t subbranches=kFALSE)
Add branch with name bname to the Tree cache.
Definition: TTree.cxx:1059
virtual TBranch * FindBranch(const char *name)
Return the branch that correspond to the path 'branchname', which can include the name of the tree or...
Definition: TTree.cxx:4811
virtual TVirtualPerfStats * GetPerfStats() const
Definition: TTree.h:502
virtual void SetTimerInterval(Int_t msec=333)
Definition: TTree.h:641
TTreeFormula * GetSelect()
Definition: TTree.h:508
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
Definition: TTree.cxx:5264
virtual Int_t GetScanField() const
Definition: TTree.h:507
static Int_t GetBranchStyle()
Static function returning the current branch style.
Definition: TTree.cxx:5365
TList * fFriends
pointer to list of friend elements
Definition: TTree.h:127
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Definition: TTree.h:451
UInt_t fFriendLockStatus
! Record which method is locking the friend recursion
Definition: TTree.h:134
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:6074
Long64_t fTotBytes
Total number of bytes in all branches before compression.
Definition: TTree.h:86
Int_t GetDefaultEntryOffsetLen() const
Definition: TTree.h:455
Int_t fMaxClusterRange
! Memory allocated for the cluster range.
Definition: TTree.h:96
virtual void Show(Long64_t entry=-1, Int_t lenmax=20)
Print values of all active leaves for entry.
Definition: TTree.cxx:9325
TEventList * fEventList
! Pointer to event selection list (if one)
Definition: TTree.h:122
virtual Long64_t GetAutoSave() const
Definition: TTree.h:444
Long64_t GetCacheAutoSize(Bool_t withDefault=kFALSE)
Used for automatic sizing of the cache.
Definition: TTree.cxx:5377
virtual Int_t StopCacheLearningPhase()
Stop the cache learning phase.
Definition: TTree.cxx:9414
virtual Int_t GetEntry(Long64_t entry, Int_t getall=0)
Read all branches of entry and return total number of bytes read.
Definition: TTree.cxx:5614
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:141
virtual void SetCircular(Long64_t maxEntries)
Enable/Disable circularity for this tree.
Definition: TTree.cxx:8858
virtual Long64_t GetEstimate() const
Definition: TTree.h:463
Long64_t GetDebugMax() const
Definition: TTree.h:456
Long64_t fSavedBytes
Number of autosaved bytes.
Definition: TTree.h:88
Long64_t GetMedianClusterSize()
Estimate the median cluster size for the TTree.
Definition: TTree.cxx:8268
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition: TTree.cxx:5443
virtual void ResetBranchAddress(TBranch *)
Tell all of our branches to set their addresses to zero.
Definition: TTree.cxx:8041
char GetNewlineValue(std::istream &inputStream)
Determine which newline this file is using.
Definition: TTree.cxx:7564
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:2843
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:367
TIOFeatures fIOFeatures
IO features to define for newly-written baskets and branches.
Definition: TTree.h:114
virtual Long64_t GetSelectedRows()
Definition: TTree.h:509
Bool_t Notify() override
Function called when loading a new class library.
Definition: TTree.cxx:7009
void AddAllocationCount(UInt_t count)
Definition: TTree.h:334
virtual void SetMaxEntryLoop(Long64_t maxev=kMaxEntries)
Definition: TTree.h:619
virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition: TTree.cxx:5886
Long64_t fDebugMin
! First entry number to debug
Definition: TTree.h:112
@ kSplitCollectionOfPointers
Definition: TTree.h:263
virtual Long64_t SetEntries(Long64_t n=-1)
Change number of entries in the tree.
Definition: TTree.cxx:8977
virtual TObjArray * GetListOfLeaves()
Definition: TTree.h:485
Bool_t fCacheDoClusterPrefetch
! true if cache is prefetching whole clusters
Definition: TTree.h:137
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:2073
virtual TBranch * BranchRef()
Build the optional branch supporting the TRefTable.
Definition: TTree.cxx:2327
virtual Bool_t InPlaceClone(TDirectory *newdirectory, const char *options="")
Copy the content to a new new file, update this TTree with the new location information and attach th...
Definition: TTree.cxx:6988
TFile * GetCurrentFile() const
Return pointer to the current file.
Definition: TTree.cxx:5455
TObject * GetNotify() const
Definition: TTree.h:499
TList * fAliases
List of aliases for expressions based on the tree branches.
Definition: TTree.h:121
TBranch * Branch(const char *name, Longptr_t address, const char *leaflist, Int_t bufsize=32000)
Definition: TTree.h:381
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:3692
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:5099
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:5049
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:8678
Long64_t * fClusterRangeEnd
[fNClusterRange] Last entry of a cluster range.
Definition: TTree.h:103
std::atomic< Long64_t > fIMTZipBytes
! Zip bytes for the IMT flush baskets.
Definition: TTree.h:158
void RecursiveRemove(TObject *obj) override
Make sure that obj (which is being deleted or will soon be) is no longer referenced by this TTree.
Definition: TTree.cxx:7857
TVirtualTreePlayer * GetPlayer()
Load the TTreePlayer (if not already done).
Definition: TTree.cxx:6281
virtual Int_t MakeProxy(const char *classname, const char *macrofilename=nullptr, const char *cutfilename=nullptr, const char *option=nullptr, Int_t maxUnrolling=3)
Generate a skeleton analysis class for this Tree using TBranchProxy.
Definition: TTree.cxx:6744
Float_t fTargetMemoryRatio
! Ratio for memory usage in uncompressed buffers versus actual occupancy.
Definition: TTree.h:143
virtual Double_t * GetIndexValues()
Definition: TTree.h:478
virtual TList * GetListOfAliases() const
Definition: TTree.h:487
virtual Long64_t ReadStream(std::istream &inputStream, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from an input stream.
Definition: TTree.cxx:7591
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:8894
Int_t fScanField
Number of runs before prompting in Scan.
Definition: TTree.h:92
virtual Double_t GetWeight() const
Definition: TTree.h:540
void Draw(Option_t *opt) override
Default Draw method for all objects.
Definition: TTree.h:428
virtual ~TTree()
Destructor.
Definition: TTree.cxx:920
virtual TTree * GetFriend(const char *) const
Return a pointer to the TTree friend whose name or alias is friendname.
Definition: TTree.cxx:5951
virtual Long64_t CopyEntries(TTree *tree, Long64_t nentries=-1, Option_t *option="", Bool_t needCopyAddresses=false)
Copy nentries from given tree to this tree.
Definition: TTree.cxx:3507
TTreeFormula * GetVar(Int_t i)
Definition: TTree.h:520
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition: TTree.cxx:6211
virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition: TTree.cxx:5866
static void SetMaxTreeSize(Long64_t maxsize=100000000000LL)
Set the maximum size in bytes of a Tree file (static function).
Definition: TTree.cxx:9163
void Print(Option_t *option="") const override
Print a summary of the tree contents.
Definition: TTree.cxx:7195
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:2411
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:9663
Int_t fNClusterRange
Number of Cluster range in addition to the one defined by 'AutoFlush'.
Definition: TTree.h:95
virtual void PrintCacheStats(Option_t *option="") const
Print statistics about the TreeCache for this tree.
Definition: TTree.cxx:7346
virtual Int_t BuildIndex(const char *majorname, const char *minorname="0")
Build a Tree Index (default is TTreeIndex).
Definition: TTree.cxx:2636
TVirtualTreePlayer * fPlayer
! Pointer to current Tree player
Definition: TTree.h:131
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:9143
virtual void IncrementTotalBuffers(Int_t nbytes)
Definition: TTree.h:542
TObjArray fBranches
List of Branches.
Definition: TTree.h:119
TDirectory * GetDirectory() const
Definition: TTree.h:458
TTreeCache * GetReadCache(TFile *file) const
Find and return the TTreeCache registered with the file and which may contain branches for us.
Definition: TTree.cxx:6294
Bool_t fCacheUserSet
! true if the cache setting was explicitly given by user
Definition: TTree.h:138
Long64_t fEntries
Number of entries.
Definition: TTree.h:84
virtual TFile * ChangeFile(TFile *file)
Called by TTree::Fill() when file has reached its maximum fgMaxTreeSize.
Definition: TTree.cxx:2725
virtual Bool_t GetBranchStatus(const char *branchname) const
Return status of branch with name branchname.
Definition: TTree.cxx:5350
virtual TEntryList * GetEntryList()
Returns the entry list assigned to this tree.
Definition: TTree.cxx:5830
TStreamerInfo * BuildStreamerInfo(TClass *cl, void *pointer=nullptr, Bool_t canOptimize=kTRUE)
Build StreamerInfo for class cl.
Definition: TTree.cxx:2651
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set tree weight.
Definition: TTree.cxx:9314
void InitializeBranchLists(bool checkLeafCount)
Divides the top-level branches into two vectors: (i) branches to be processed sequentially and (ii) b...
Definition: TTree.cxx:5757
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=nullptr)
Change branch address, dealing with clone trees properly.
Definition: TTree.cxx:8356
Long64_t * fClusterSize
[fNClusterRange] Number of entries in each cluster for a given range.
Definition: TTree.h:104
virtual Bool_t GetImplicitMT()
Definition: TTree.h:476
Long64_t fFlushedBytes
Number of auto-flushed bytes.
Definition: TTree.h:89
virtual void SetPerfStats(TVirtualPerfStats *perf)
Set perf stats.
Definition: TTree.cxx:9269
TTreeFormula * GetVar2()
Definition: TTree.h:524
std::atomic< Long64_t > fIMTTotBytes
! Total bytes for the IMT flush baskets
Definition: TTree.h:157
virtual void SetCacheLearnEntries(Int_t n=10)
Interface to TTreeCache to set the number of entries for the learning phase.
Definition: TTree.cxx:8831
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=nullptr)
Definition: TTree.h:593
void SetTargetMemoryRatio(Float_t ratio)
Definition: TTree.h:640
TEntryList * fEntryList
! Pointer to event selection list (if one)
Definition: TTree.h:123
virtual TVirtualIndex * GetTreeIndex() const
Definition: TTree.h:514
Int_t Debug() const
Definition: TTree.h:426
TList * fExternalFriends
! List of TFriendsElement pointing to us and need to be notified of LoadTree. Content not owned.
Definition: TTree.h:128
virtual Long64_t Merge(TCollection *list, Option_t *option="")
Merge the trees in the TList into this tree.
Definition: TTree.cxx:6866
virtual void SetMaxVirtualSize(Long64_t size=0)
Definition: TTree.h:621
virtual void DropBaskets()
Remove some baskets from memory.
Definition: TTree.cxx:4488
virtual void SetAutoSave(Long64_t autos=-300000000)
In case of a program crash, it will be possible to recover the data in the tree up to the last AutoSa...
Definition: TTree.cxx:8313
virtual void SetImplicitMT(Bool_t enabled)
Definition: TTree.h:617
TBranch * Branch(const char *name, const char *classname, T **addobj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition: TTree.h:397
Long64_t fMaxEntryLoop
Maximum number of entries to process.
Definition: TTree.h:98
friend TBranch * TTreeBranchImpRef(TTree *tree, const char *branchname, TClass *ptrClass, EDataType datatype, void *addobj, Int_t bufsize, Int_t splitlevel)
Float_t GetTargetMemoryRatio() const
Definition: TTree.h:516
virtual void SetDirectory(TDirectory *dir)
Change the tree's directory.
Definition: TTree.cxx:8932
void SortBranchesByTime()
Sorts top-level branches by the last average task time recorded per branch.
Definition: TTree.cxx:5810
void Delete(Option_t *option="") override
Delete this tree from memory or/and disk.
Definition: TTree.cxx:3720
virtual Int_t * GetIndex()
Definition: TTree.h:477
virtual TBranchRef * GetBranchRef() const
Definition: TTree.h:446
virtual Double_t * GetV3()
Definition: TTree.h:536
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:7426
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:1634
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:9035
TBranch * Branch(const char *name, int address, const char *leaflist, Int_t bufsize=32000)
Definition: TTree.h:386
void MoveReadCache(TFile *src, TDirectory *dir)
Move a cache from a file to the current file in dir.
Definition: TTree.cxx:6959
TTree & operator=(const TTree &tt)=delete
Long64_t fAutoFlush
Auto-flush tree when fAutoFlush entries written or -fAutoFlush (compressed) bytes produced.
Definition: TTree.h:101
Int_t fUpdate
Update frequency for EntryLoop.
Definition: TTree.h:93
virtual void ResetAfterMerge(TFileMergeInfo *)
Resets the state of this TTree after a merge (keep the customization but forget the data).
Definition: TTree.cxx:8010
virtual void CopyAddresses(TTree *, Bool_t undo=kFALSE)
Set branch addresses of passed tree equal to ours.
Definition: TTree.cxx:3272
TBranch * Branch(const char *name, std::array< T, N > *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition: TTree.h:402
virtual Long64_t GetEntries() const
Definition: TTree.h:459
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
Definition: TTree.cxx:9076
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:6058
Int_t fTimerInterval
Timer interval in milliseconds.
Definition: TTree.h:91
Int_t fDebug
! Debug level
Definition: TTree.h:111
virtual Long64_t AutoSave(Option_t *option="")
AutoSave tree header every fAutoSave bytes.
Definition: TTree.cxx:1499
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition: TTree.cxx:5841
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
Definition: TTree.cxx:3112
Int_t fFileNumber
! current file number (if file extensions)
Definition: TTree.h:116
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:6171
virtual Long64_t GetZipBytes() const
Definition: TTree.h:541
TObjArray fLeaves
Direct pointers to individual branch leaves.
Definition: TTree.h:120
virtual void Reset(Option_t *option="")
Reset baskets, buffers and entries count in all branches and leaves.
Definition: TTree.cxx:7979
virtual void KeepCircular()
Keep a maximum of fMaxEntries in memory.
Definition: TTree.cxx:6391
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:3792
virtual Bool_t SetAlias(const char *aliasName, const char *aliasFormula)
Set a tree variable alias.
Definition: TTree.cxx:8112
Long64_t fMaxVirtualSize
Maximum total size of buffers kept in memory.
Definition: TTree.h:99
virtual Long64_t GetTotBytes() const
Definition: TTree.h:512
virtual Int_t MakeSelector(const char *selector=nullptr, Option_t *option="")
Generate skeleton selector class for this tree.
Definition: TTree.cxx:6798
virtual void SetObject(const char *name, const char *title)
Change the name and title of this tree.
Definition: TTree.cxx:9200
TVirtualPerfStats * fPerfStats
! pointer to the current perf stats object
Definition: TTree.h:129
Double_t fWeight
Tree weight (see TTree::SetWeight)
Definition: TTree.h:90
virtual void SetUpdate(Int_t freq=0)
Definition: TTree.h:644
std::vector< TBranch * > fSeqBranches
! Branches to be processed sequentially when IMT is on
Definition: TTree.h:142
Long64_t fDebugMax
! Last entry number to debug
Definition: TTree.h:113
Int_t fDefaultEntryOffsetLen
Initial Length of fEntryOffset table in the basket buffers.
Definition: TTree.h:94
TTree()
Default constructor and I/O constructor.
Definition: TTree.cxx:737
Long64_t fAutoSave
Autosave tree when fAutoSave entries written or -fAutoSave (compressed) bytes produced.
Definition: TTree.h:100
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:350
virtual void SetDefaultEntryOffsetLen(Int_t newdefault, Bool_t updateExisting=kFALSE)
Update the default value for the branch's fEntryOffsetLen.
Definition: TTree.cxx:8906
std::atomic< UInt_t > fAllocationCount
indicates basket should be resized to exact memory usage, but causes significant
Definition: TTree.h:149
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Read entry corresponding to major and minor number.
Definition: TTree.cxx:5903
static TTree * MergeTrees(TList *list, Option_t *option="")
Static function merging the trees in the TList into a new tree.
Definition: TTree.cxx:6827
TTreeFormula * GetVar4()
Definition: TTree.h:528
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=nullptr)
Set branch status to Process or DoNotProcess.
Definition: TTree.cxx:8505
virtual Long64_t GetReadEntry() const
Definition: TTree.h:505
virtual TObjArray * GetListOfBranches()
Definition: TTree.h:484
virtual void SetParallelUnzip(Bool_t opt=kTRUE, Float_t RelSize=-1)
Enable or disable parallel unzipping of Tree buffers.
Definition: TTree.cxx:9231
Long64_t fZipBytes
Total number of bytes in all branches after compression.
Definition: TTree.h:87
virtual TTree * GetTree() const
Definition: TTree.h:513
TBuffer * fTransientBuffer
! Pointer to the current transient buffer.
Definition: TTree.h:135
virtual Double_t * GetVal(Int_t i)
Definition: TTree.h:530
Bool_t fIMTEnabled
! true if implicit multi-threading is enabled for this tree
Definition: TTree.h:139
virtual void SetEntryList(TEntryList *list, Option_t *opt="")
Set an EntryList.
Definition: TTree.cxx:9012
virtual Int_t DropBranchFromCache(const char *bname, Bool_t subbranches=kFALSE)
Remove the branch with name 'bname' from the Tree cache.
Definition: TTree.cxx:1142
virtual void AddZipBytes(Int_t zip)
Definition: TTree.h:329
virtual Long64_t LoadTree(Long64_t entry)
Set current entry.
Definition: TTree.cxx:6449
virtual Long64_t ReadFile(const char *filename, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from filename.
Definition: TTree.cxx:7540
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition: TTree.cxx:5196
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:9096
virtual TBasket * CreateBasket(TBranch *)
Create a basket for this tree and given branch.
Definition: TTree.cxx:3704
TList * fUserInfo
pointer to a list of user objects associated to this Tree
Definition: TTree.h:130
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition: TTree.cxx:6251
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition: TTree.cxx:7953
virtual Long64_t GetEntriesFast() const
Definition: TTree.h:461
void Browse(TBrowser *) override
Browse content of the TTree.
Definition: TTree.cxx:2608
virtual Double_t * GetV1()
Definition: TTree.h:532
virtual TList * GetUserInfo()
Return a pointer to the list containing user objects associated to this tree.
Definition: TTree.cxx:6332
virtual void SetNotify(TObject *obj)
Sets the address of the object to be notified when the tree is loaded.
Definition: TTree.h:634
TEventList * GetEventList() const
Definition: TTree.h:469
Long64_t fChainOffset
! Offset of 1st entry of this Tree in a TChain
Definition: TTree.h:106
@ kOnlyFlushAtCluster
If set, the branch's buffers will grow until an event cluster boundary is hit, guaranteeing a basket ...
Definition: TTree.h:253
@ kEntriesReshuffled
If set, signals that this TTree is the output of the processing of another TTree, and the entries are...
Definition: TTree.h:258
@ kCircular
Definition: TTree.h:249
@ kForceRead
Definition: TTree.h:248
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:5488
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:7489
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:2403
virtual void SetBasketSize(const char *bname, Int_t buffsize=16000)
Set a branch's basket size.
Definition: TTree.cxx:8329
static void SetBranchStyle(Int_t style=1)
Set the current branch style.
Definition: TTree.cxx:8636
virtual Long64_t GetReadEvent() const
Definition: TTree.h:506
void ImportClusterRanges(TTree *fromtree)
Appends the cluster range information stored in 'fromtree' to this tree, including the value of fAuto...
Definition: TTree.cxx:6348
Long64_t fEstimate
Number of entries to estimate histogram limits.
Definition: TTree.h:102
TH1 * GetHistogram()
Definition: TTree.h:475
UInt_t GetAllocationCount() const
Definition: TTree.h:439
Int_t FlushBasketsImpl() const
Internal implementation of the FlushBaskets algorithm.
Definition: TTree.cxx:5116
Long64_t GetDebugMin() const
Definition: TTree.h:457
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:6533
Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) override
Write this object to the current directory.
Definition: TTree.cxx:9714
TVirtualIndex * fTreeIndex
Pointer to the tree Index (if any)
Definition: TTree.h:126
void UseCurrentStyle() override
Replace current attributes by current style.
Definition: TTree.cxx:9675
virtual Int_t GetTreeNumber() const
Definition: TTree.h:515
Int_t GetEvent(Long64_t entry, Int_t getall=0)
Definition: TTree.h:465
TObject * fNotify
! Object to be notified when loading a Tree
Definition: TTree.h:117
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:1553
virtual TList * GetListOfClones()
Definition: TTree.h:483
Long64_t fCacheSize
! Maximum size of file buffers
Definition: TTree.h:105
TList * fClones
! List of cloned trees which share our addresses
Definition: TTree.h:132
std::atomic< Long64_t > fTotalBuffers
! Total number of bytes in branch buffers
Definition: TTree.h:108
Bool_t fCacheDoAutoInit
! true if cache auto creation or resize check is needed
Definition: TTree.h:136
ELockStatusBits
Definition: TTree.h:208
@ kFindBranch
Definition: TTree.h:209
@ kFindLeaf
Definition: TTree.h:210
@ kGetEntryWithIndex
Definition: TTree.h:214
@ kPrint
Definition: TTree.h:219
@ kGetFriend
Definition: TTree.h:215
@ kGetBranch
Definition: TTree.h:212
@ kSetBranchStatus
Definition: TTree.h:221
@ kLoadTree
Definition: TTree.h:218
@ kGetEntry
Definition: TTree.h:213
@ kGetLeaf
Definition: TTree.h:217
@ kRemoveFriend
Definition: TTree.h:220
@ kGetFriendAlias
Definition: TTree.h:216
@ kGetAlias
Definition: TTree.h:211
virtual Double_t * GetV4()
Definition: TTree.h:538
TBranch * Branch(const char *name, const char *classname, T *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition: TTree.h:392
TTreeFormula * GetVar3()
Definition: TTree.h:526
virtual void SetTreeIndex(TVirtualIndex *index)
The current TreeIndex is replaced by the new index.
Definition: TTree.cxx:9286
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:7033
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:7474
virtual Int_t SetCacheEntryRange(Long64_t first, Long64_t last)
interface to TTreeCache to set the cache entry range
Definition: TTree.cxx:8797
static Long64_t GetMaxTreeSize()
Static function which returns the tree file size limit in bytes.
Definition: TTree.cxx:6241
Int_t SetBranchAddressImp(TBranch *branch, void *addr, TBranch **ptr)
Change branch address, dealing with clone trees properly.
Definition: TTree.cxx:8416
virtual Int_t GetTimerInterval() const
Definition: TTree.h:510
virtual void SetScanField(Int_t n=50)
Definition: TTree.h:639
TTree(const TTree &tt)=delete
Long64_t fMaxEntries
Maximum number of entries in case of circular buffers.
Definition: TTree.h:97
Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr=nullptr)
Definition: TTree.h:584
TBranch * Branch(const char *name, char *address, const char *leaflist, Int_t bufsize=32000)
Definition: TTree.h:376
virtual void DropBuffers(Int_t nbytes)
Drop branch buffers to accommodate nbytes below MaxVirtualsize.
Definition: TTree.cxx:4501
virtual TList * GetListOfFriends() const
Definition: TTree.h:486
virtual void Refresh()
Refresh contents of this tree and its branches from the current status on disk.
Definition: TTree.cxx:7892
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:8167
static Long64_t fgMaxTreeSize
Maximum size of a file containing a Tree.
Definition: TTree.h:152
Long64_t fReadEntry
! Number of the entry being processed
Definition: TTree.h:107
TArrayD fIndexValues
Sorted index values.
Definition: TTree.h:124
void MarkEventCluster()
Mark the previous event as being at the end of the event cluster.
Definition: TTree.cxx:8229
virtual Int_t GetNbranches()
Definition: TTree.h:498
UInt_t fNEntriesSinceSorting
! Number of entries processed since the last re-sorting of branches
Definition: TTree.h:140
virtual void SetFileNumber(Int_t number=0)
Set fFileNumber to number.
Definition: TTree.cxx:9119
virtual TLeaf * FindLeaf(const char *name)
Find leaf..
Definition: TTree.cxx:4886
virtual void StartViewer()
Start the TTreeViewer on this tree.
Definition: TTree.cxx:9399
Int_t GetMakeClass() const
Definition: TTree.h:491
virtual Int_t MakeCode(const char *filename=nullptr)
Generate a skeleton function for this tree.
Definition: TTree.cxx:6616
Bool_t IsFolder() const override
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition: TTree.h:543
TDirectory * fDirectory
! Pointer to directory holding this tree
Definition: TTree.h:118
ESetBranchAddressStatus
Definition: TTree.h:229
@ kNeedEnableDecomposedObj
Definition: TTree.h:241
@ kClassMismatch
Definition: TTree.h:234
@ kNeedDisableDecomposedObj
Definition: TTree.h:242
@ kVoidPtr
Definition: TTree.h:239
@ kNoCheck
Definition: TTree.h:240
@ kMatchConversionCollection
Definition: TTree.h:237
@ kMissingCompiledCollectionProxy
Definition: TTree.h:232
@ kMismatch
Definition: TTree.h:233
@ kMatchConversion
Definition: TTree.h:236
@ kInternalError
Definition: TTree.h:231
@ kDecomposedObjMask
Definition: TTree.h:243
@ kMatch
Definition: TTree.h:235
@ kMissingBranch
Definition: TTree.h:230
@ kMakeClass
Definition: TTree.h:238
static Int_t fgBranchStyle
Old/New branch style.
Definition: TTree.h:151
virtual void ResetBranchAddresses()
Tell all of our branches to drop their current objects and allocate new ones.
Definition: TTree.cxx:8051
Int_t fNfill
! Local for EntryLoop
Definition: TTree.h:110
void SetName(const char *name) override
Change the name of this tree.
Definition: TTree.cxx:9171
virtual Long64_t GetCacheSize() const
Definition: TTree.h:449
virtual void RegisterExternalFriend(TFriendElement *)
Record a TFriendElement that we need to warn when the chain switches to a new file (typically this is...
Definition: TTree.cxx:7933
TArrayI fIndex
Index of sorted values.
Definition: TTree.h:125
virtual Int_t GetPacketSize() const
Definition: TTree.h:501
virtual Int_t SetCacheSize(Long64_t cachesize=-1)
Set maximum size of the file cache .
Definition: TTree.cxx:8652
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:1219
TBuffer * GetTransientBuffer(Int_t size)
Returns the transient buffer currently used by this TTree for reading/writing baskets.
Definition: TTree.cxx:1037
ROOT::TIOFeatures GetIOFeatures() const
Returns the current set of IO settings.
Definition: TTree.cxx:6050
virtual Int_t MakeClass(const char *classname=nullptr, Option_t *option="")
Generate a skeleton analysis class for this tree.
Definition: TTree.cxx:6583
virtual Int_t GetFileNumber() const
Definition: TTree.h:472
virtual const char * GetFriendAlias(TTree *) const
If the 'tree' is a friend, this method returns its alias name.
Definition: TTree.cxx:6008
virtual void SetChainOffset(Long64_t offset=0)
Definition: TTree.h:605
virtual Bool_t GetClusterPrefetch() const
Definition: TTree.h:453
virtual void RemoveExternalFriend(TFriendElement *)
Removes external friend.
Definition: TTree.cxx:7944
virtual Double_t * GetW()
Definition: TTree.h:539
Bool_t MemoryFull(Int_t nbytes)
Check if adding nbytes to memory we are still below MaxVirtualsize.
Definition: TTree.cxx:6813
TTreeFormula * GetVar1()
Definition: TTree.h:522
virtual Double_t * GetV2()
Definition: TTree.h:534
Int_t fPacketSize
! Number of entries in one packet for parallel root
Definition: TTree.h:109
virtual Int_t GetUpdate() const
Definition: TTree.h:517
virtual Long64_t GetChainOffset() const
Definition: TTree.h:452
virtual TBranch * BranchImpArr(const char *branchname, EDataType datatype, std::size_t N, void *addobj, Int_t bufsize, Int_t splitlevel)
Definition: TTree.cxx:1730
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:8070
virtual Long64_t GetMaxEntryLoop() const
Definition: TTree.h:493
Bool_t fIMTFlush
! True if we are doing a multithreaded flush.
Definition: TTree.h:156
virtual void SetClusterPrefetch(Bool_t enabled)
Definition: TTree.h:607
virtual void AddTotBytes(Int_t tot)
Definition: TTree.h:328
Int_t fMakeClass
! not zero when processing code generated by MakeClass
Definition: TTree.h:115
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:6427
static constexpr Long64_t kMaxEntries
Definition: TTree.h:226
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:7176
virtual Long64_t GetAutoFlush() const
Definition: TTree.h:443
virtual Long64_t GetMaxVirtualSize() const
Definition: TTree.h:496
Abstract interface for Tree Index.
Definition: TVirtualIndex.h:30
Provides the interface for the PROOF internal performance measurement and event tracing.
Abstract base class defining the interface for the plugins that implement Draw, Scan,...
virtual TTreeFormula * GetVar1() const =0
virtual Double_t * GetV4() const =0
virtual Double_t * GetW() const =0
virtual TTreeFormula * GetVar4() const =0
virtual TTreeFormula * GetVar(Int_t) const =0
virtual Double_t * GetVal(Int_t) const =0
virtual TTreeFormula * GetVar2() const =0
virtual Double_t * GetV1() const =0
static constexpr Long64_t kMaxEntries
virtual TTreeFormula * GetVar3() const =0
virtual Double_t * GetV2() const =0
virtual TTreeFormula * GetSelect() const =0
virtual TH1 * GetHistogram() const =0
virtual Long64_t GetSelectedRows() const =0
virtual Double_t * GetV3() const =0
const Int_t n
Definition: legend1.C:16
double T(double x)
Definition: ChebyshevPol.h:34
constexpr std::array< decltype(std::declval< F >()(std::declval< int >())), N > make(F f)
Definition: file.py:1
Definition: first.py:1
Definition: tree.py:1
auto * tt
Definition: textangle.C:16