Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
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);
434 virtual Int_t Fill();
435 virtual TBranch *FindBranch(const char* name);
436 virtual TLeaf *FindLeaf(const char* name);
437 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*
438 virtual Int_t FlushBaskets(Bool_t create_cluster = true) const;
439 virtual const char *GetAlias(const char* aliasName) const;
441#ifdef R__TRACK_BASKET_ALLOC_TIME
442 ULong64_t GetAllocationTime() const { return fAllocationTime; }
443#endif
444 virtual Long64_t GetAutoFlush() const {return fAutoFlush;}
445 virtual Long64_t GetAutoSave() const {return fAutoSave;}
446 virtual TBranch *GetBranch(const char* name);
447 virtual TBranchRef *GetBranchRef() const { return fBranchRef; };
448 virtual Bool_t GetBranchStatus(const char* branchname) const;
449 static Int_t GetBranchStyle();
450 virtual Long64_t GetCacheSize() const { return fCacheSize; }
451 virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
452 virtual Long64_t GetChainEntryNumber(Long64_t entry) const { return entry; }
453 virtual Long64_t GetChainOffset() const { return fChainOffset; }
455 TFile *GetCurrentFile() const;
457 Long64_t GetDebugMax() const { return fDebugMax; }
458 Long64_t GetDebugMin() const { return fDebugMin; }
459 TDirectory *GetDirectory() const { return fDirectory; }
460 virtual Long64_t GetEntries() const { return fEntries; }
461 virtual Long64_t GetEntries(const char *selection);
462 virtual Long64_t GetEntriesFast() const { return fEntries; }
463 virtual Long64_t GetEntriesFriend() const;
464 virtual Long64_t GetEstimate() const { return fEstimate; }
465 virtual Int_t GetEntry(Long64_t entry, Int_t getall = 0);
466 Int_t GetEvent(Long64_t entry, Int_t getall = 0) { return GetEntry(entry, getall); }
467 virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor = 0);
468 virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor = 0) const;
469 virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor = 0) const;
470 TEventList *GetEventList() const { return fEventList; }
471 virtual TEntryList *GetEntryList();
472 virtual Long64_t GetEntryNumber(Long64_t entry) const;
473 virtual Int_t GetFileNumber() const { return fFileNumber; }
474 virtual TTree *GetFriend(const char*) const;
475 virtual const char *GetFriendAlias(TTree*) const;
477 virtual Bool_t GetImplicitMT() { return fIMTEnabled; }
478 virtual Int_t *GetIndex() { return &fIndex.fArray[0]; }
479 virtual Double_t *GetIndexValues() { return &fIndexValues.fArray[0]; }
482 virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
483 virtual TLeaf *GetLeaf(const char* name);
484 virtual TList *GetListOfClones() { return fClones; }
485 virtual TObjArray *GetListOfBranches() { return &fBranches; }
486 virtual TObjArray *GetListOfLeaves() { return &fLeaves; }
487 virtual TList *GetListOfFriends() const { return fFriends; }
488 virtual TList *GetListOfAliases() const { return fAliases; }
489
490 // GetMakeClass is left non-virtual for efficiency reason.
491 // Making it virtual affects the performance of the I/O
492 Int_t GetMakeClass() const { return fMakeClass; }
493
494 virtual Long64_t GetMaxEntryLoop() const { return fMaxEntryLoop; }
495 virtual Double_t GetMaximum(const char* columname);
496 static Long64_t GetMaxTreeSize();
497 virtual Long64_t GetMaxVirtualSize() const { return fMaxVirtualSize; }
498 virtual Double_t GetMinimum(const char* columname);
500 TObject *GetNotify() const { return fNotify; }
502 virtual Int_t GetPacketSize() const { return fPacketSize; }
503 virtual TVirtualPerfStats *GetPerfStats() const { return fPerfStats; }
506 virtual Long64_t GetReadEntry() const { return fReadEntry; }
507 virtual Long64_t GetReadEvent() const { return fReadEntry; }
508 virtual Int_t GetScanField() const { return fScanField; }
511 virtual Int_t GetTimerInterval() const { return fTimerInterval; }
513 virtual Long64_t GetTotBytes() const { return fTotBytes; }
514 virtual TTree *GetTree() const { return const_cast<TTree*>(this); }
515 virtual TVirtualIndex *GetTreeIndex() const { return fTreeIndex; }
516 virtual Int_t GetTreeNumber() const { return 0; }
518 virtual Int_t GetUpdate() const { return fUpdate; }
519 virtual TList *GetUserInfo();
520 // See TSelectorDraw::GetVar
522 // See TSelectorDraw::GetVar
524 // See TSelectorDraw::GetVar
526 // See TSelectorDraw::GetVar
528 // See TSelectorDraw::GetVar
530 // See TSelectorDraw::GetVal
531 virtual Double_t *GetVal(Int_t i) { return GetPlayer()->GetVal(i); }
532 // See TSelectorDraw::GetVal
533 virtual Double_t *GetV1() { return GetPlayer()->GetV1(); }
534 // See TSelectorDraw::GetVal
535 virtual Double_t *GetV2() { return GetPlayer()->GetV2(); }
536 // See TSelectorDraw::GetVal
537 virtual Double_t *GetV3() { return GetPlayer()->GetV3(); }
538 // See TSelectorDraw::GetVal
539 virtual Double_t *GetV4() { return GetPlayer()->GetV4(); }
540 virtual Double_t *GetW() { return GetPlayer()->GetW(); }
541 virtual Double_t GetWeight() const { return fWeight; }
542 virtual Long64_t GetZipBytes() const { return fZipBytes; }
543 virtual void IncrementTotalBuffers(Int_t nbytes) { fTotalBuffers += nbytes; }
544 Bool_t IsFolder() const override { return kTRUE; }
545 virtual Bool_t InPlaceClone(TDirectory *newdirectory, const char *options = "");
546 virtual Int_t LoadBaskets(Long64_t maxmemory = 2000000000);
547 virtual Long64_t LoadTree(Long64_t entry);
548 virtual Long64_t LoadTreeFriend(Long64_t entry, TTree* T);
549 virtual Int_t MakeClass(const char *classname = nullptr, Option_t* option = "");
550 virtual Int_t MakeCode(const char *filename = nullptr);
551 virtual Int_t MakeProxy(const char* classname, const char* macrofilename = nullptr, const char* cutfilename = nullptr, const char* option = nullptr, Int_t maxUnrolling = 3);
552 virtual Int_t MakeSelector(const char *selector = nullptr, Option_t *option = "");
553 Bool_t MemoryFull(Int_t nbytes);
554 virtual Long64_t Merge(TCollection* list, Option_t* option = "");
555 virtual Long64_t Merge(TCollection* list, TFileMergeInfo *info);
556 static TTree *MergeTrees(TList* list, Option_t* option = "");
557 Bool_t Notify() override;
558 virtual void OptimizeBaskets(ULong64_t maxMemory=10000000, Float_t minComp=1.1, Option_t *option="");
559 TPrincipal *Principal(const char* varexp = "", const char* selection = "", Option_t* option = "np", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
560 void Print(Option_t* option = "") const override; // *MENU*
561 virtual void PrintCacheStats(Option_t* option = "") const;
562 virtual Long64_t Process(const char* filename, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
563 virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
564 virtual Long64_t Project(const char* hname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
565 virtual TSQLResult *Query(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
566 virtual Long64_t ReadFile(const char* filename, const char* branchDescriptor = "", char delimiter = ' ');
567 virtual Long64_t ReadStream(std::istream& inputStream, const char* branchDescriptor = "", char delimiter = ' ');
568 virtual void Refresh();
570 virtual void RemoveExternalFriend(TFriendElement *);
571 virtual void RemoveFriend(TTree*);
572 void RecursiveRemove(TObject *obj) override;
573 virtual void Reset(Option_t* option = "");
574 virtual void ResetAfterMerge(TFileMergeInfo *);
575 virtual void ResetBranchAddress(TBranch *);
576 virtual void ResetBranchAddresses();
577 virtual Long64_t Scan(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
578 virtual Bool_t SetAlias(const char* aliasName, const char* aliasFormula);
579 virtual void SetAutoSave(Long64_t autos = -300000000);
580 virtual void SetAutoFlush(Long64_t autof = -30000000);
581 virtual void SetBasketSize(const char* bname, Int_t buffsize = 16000);
582 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = nullptr);
583 virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, Bool_t isptr);
584 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, Bool_t isptr);
585 template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = nullptr) {
586 TClass *cl = TClass::GetClass<T>();
588 if (!cl) type = TDataType::GetType(typeid(T));
589 return SetBranchAddress(bname,add,ptr,cl,type,true);
590 }
591#ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
592 // This can only be used when the template overload resolution can distinguish between
593 // T* and T**
594 template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = nullptr) {
595 TClass *cl = TClass::GetClass<T>();
597 if (!cl) type = TDataType::GetType(typeid(T));
598 return SetBranchAddress(bname,add,ptr,cl,type,false);
599 }
600#endif
601 virtual void SetBranchStatus(const char* bname, Bool_t status = 1, UInt_t* found = nullptr);
602 static void SetBranchStyle(Int_t style = 1); //style=0 for old branch, =1 for new branch style
603 virtual Int_t SetCacheSize(Long64_t cachesize = -1);
605 virtual void SetCacheLearnEntries(Int_t n=10);
607 virtual void SetCircular(Long64_t maxEntries);
608 virtual void SetClusterPrefetch(Bool_t enabled) { fCacheDoClusterPrefetch = enabled; }
609 virtual void SetDebug(Int_t level = 1, Long64_t min = 0, Long64_t max = 9999999); // *MENU*
610 virtual void SetDefaultEntryOffsetLen(Int_t newdefault, Bool_t updateExisting = kFALSE);
611 virtual void SetDirectory(TDirectory* dir);
612 virtual Long64_t SetEntries(Long64_t n = -1);
613 virtual void SetEstimate(Long64_t nentries = 1000000);
615 virtual void SetFileNumber(Int_t number = 0);
616 virtual void SetEventList(TEventList* list);
617 virtual void SetEntryList(TEntryList* list, Option_t *opt="");
618 virtual void SetImplicitMT(Bool_t enabled) { fIMTEnabled = enabled; }
619 virtual void SetMakeClass(Int_t make);
620 virtual void SetMaxEntryLoop(Long64_t maxev = kMaxEntries) { fMaxEntryLoop = maxev; } // *MENU*
621 static void SetMaxTreeSize(Long64_t maxsize = 100000000000LL);
622 virtual void SetMaxVirtualSize(Long64_t size = 0) { fMaxVirtualSize = size; } // *MENU*
623 void SetName(const char* name) override; // *MENU*
624
625 /**
626 * @brief Sets the address of the object to be notified when the tree is loaded.
627 *
628 * The method TObject::Notify is called for the given object when the tree
629 * is loaded. Specifically this occurs in the TTree::LoadTree method. To
630 * remove the notification call this method with nullptr:
631 * @code tree->SetNotify(nullptr); @endcode
632 *
633 * @param[in] obj Pointer to a TObject to be notified.
634 */
635 virtual void SetNotify(TObject* obj) { fNotify = obj; }
636
637 virtual void SetObject(const char* name, const char* title);
638 virtual void SetParallelUnzip(Bool_t opt=kTRUE, Float_t RelSize=-1);
639 virtual void SetPerfStats(TVirtualPerfStats* perf);
640 virtual void SetScanField(Int_t n = 50) { fScanField = n; } // *MENU*
642 virtual void SetTimerInterval(Int_t msec = 333) { fTimerInterval=msec; }
643 virtual void SetTreeIndex(TVirtualIndex* index);
644 virtual void SetWeight(Double_t w = 1, Option_t* option = "");
645 virtual void SetUpdate(Int_t freq = 0) { fUpdate = freq; }
646 virtual void Show(Long64_t entry = -1, Int_t lenmax = 20);
647 virtual void StartViewer(); // *MENU*
649 virtual Int_t UnbinnedFit(const char* funcname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
650 void UseCurrentStyle() override;
651 Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) override;
652 Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const override;
653
654 ClassDefOverride(TTree, 20) // Tree descriptor (the main ROOT I/O class)
655};
656
657//////////////////////////////////////////////////////////////////////////
658// //
659// TTreeFriendLeafIter //
660// //
661// Iterator on all the leaves in a TTree and its friend //
662// //
663//////////////////////////////////////////////////////////////////////////
664
666
667protected:
668 TTree *fTree; ///< tree being iterated
669 TIterator *fLeafIter; ///< current leaf sub-iterator.
670 TIterator *fTreeIter; ///< current tree sub-iterator.
671 Bool_t fDirection; ///< iteration direction
672
673 TTreeFriendLeafIter() : fTree(nullptr), fLeafIter(nullptr), fTreeIter(nullptr),
674 fDirection(kFALSE) { }
675
676public:
680 TIterator &operator=(const TIterator &rhs) override;
682
683 const TCollection *GetCollection() const override { return nullptr; }
684 Option_t *GetOption() const override;
685 TObject *Next() override;
687 Bool_t operator !=(const TIterator&) const override {
688 // TODO: Implement me
689 return false;
690 }
692 // TODO: Implement me
693 return false;
694 }
695 TObject *operator*() const override {
696 // TODO: Implement me
697 return nullptr;
698 }
699 ClassDefOverride(TTreeFriendLeafIter,0) //Linked list iterator
700 };
701
702
703#endif
#define SafeDelete(p)
Definition RConfig.hxx:540
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
unsigned int UInt_t
Definition RtypesCore.h:46
float Float_t
Definition RtypesCore.h:57
constexpr Bool_t kFALSE
Definition RtypesCore.h:101
double Double_t
Definition RtypesCore.h:59
long long Long64_t
Definition RtypesCore.h:80
unsigned long long ULong64_t
Definition RtypesCore.h:81
constexpr 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:341
const Bool_t kIterForward
Definition TCollection.h:42
EDataType
Definition TDataType.h:28
@ kOther_t
Definition TDataType.h:32
#define gDirectory
Definition TDirectory.h:386
#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
TIOFeatures provides the end-user with the ability to change the IO behavior of data written via a TT...
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:51
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
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.
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.
Iterator on all the leaves in a TTree and its friend.
Definition TTree.h:665
const TCollection * GetCollection() const override
Definition TTree.h:683
TTree * fTree
tree being iterated
Definition TTree.h:668
TObject * operator*() const override
Return current object or nullptr.
Definition TTree.h:695
void Reset() override
Definition TTree.h:686
TIterator & operator=(const TIterator &rhs) override
Overridden assignment operator. Does NOT copy the 'cursor' location!
Definition TTree.cxx:9747
TObject * Next() override
Go the next friend element.
Definition TTree.cxx:9770
Bool_t operator!=(const TIterator &) const override
Compare two iterator objects.
Definition TTree.h:687
TIterator * fLeafIter
current leaf sub-iterator.
Definition TTree.h:669
Option_t * GetOption() const override
Returns the object option stored in the list.
Definition TTree.cxx:9809
TIterator * fTreeIter
current tree sub-iterator.
Definition TTree.h:670
Bool_t fDirection
iteration direction
Definition TTree.h:671
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:610
Long64_t Previous()
Move on to the previous cluster and return the starting entry of this previous cluster.
Definition TTree.cxx:693
Long64_t GetStartEntry()
Definition TTree.h:299
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:649
Long64_t GetNextEntry()
Definition TTree.h:304
Long64_t fEstimatedSize
Definition TTree.h:273
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:529
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:542
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:4594
virtual TFriendElement * AddFriend(const char *treename, const char *filename="")
Add a TFriendElement to the list of friends.
Definition TTree.cxx:1330
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:1058
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:4832
virtual TVirtualPerfStats * GetPerfStats() const
Definition TTree.h:503
virtual void SetTimerInterval(Int_t msec=333)
Definition TTree.h:642
TTreeFormula * GetSelect()
Definition TTree.h:509
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
Definition TTree.cxx:5285
virtual Int_t GetScanField() const
Definition TTree.h:508
static Int_t GetBranchStyle()
Static function returning the current branch style.
Definition TTree.cxx:5386
TList * fFriends
pointer to list of friend elements
Definition TTree.h:127
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Definition TTree.h:452
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:6089
Long64_t fTotBytes
Total number of bytes in all branches before compression.
Definition TTree.h:86
Int_t GetDefaultEntryOffsetLen() const
Definition TTree.h:456
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:9340
TEventList * fEventList
! Pointer to event selection list (if one)
Definition TTree.h:122
virtual Long64_t GetAutoSave() const
Definition TTree.h:445
Long64_t GetCacheAutoSize(Bool_t withDefault=kFALSE)
Used for automatic sizing of the cache.
Definition TTree.cxx:5398
virtual Int_t StopCacheLearningPhase()
Stop the cache learning phase.
Definition TTree.cxx:9429
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:5629
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:8873
virtual Long64_t GetEstimate() const
Definition TTree.h:464
Long64_t GetDebugMax() const
Definition TTree.h:457
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:8283
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition TTree.cxx:5458
virtual void ResetBranchAddress(TBranch *)
Tell all of our branches to set their addresses to zero.
Definition TTree.cxx:8056
char GetNewlineValue(std::istream &inputStream)
Determine which newline this file is using.
Definition TTree.cxx:7579
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:2864
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:510
Bool_t Notify() override
Function called when loading a new class library.
Definition TTree.cxx:7024
void AddAllocationCount(UInt_t count)
Definition TTree.h:334
virtual void SetMaxEntryLoop(Long64_t maxev=kMaxEntries)
Definition TTree.h:620
virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition TTree.cxx:5901
Long64_t fDebugMin
! First entry number to debug
Definition TTree.h:112
virtual Long64_t SetEntries(Long64_t n=-1)
Change number of entries in the tree.
Definition TTree.cxx:8992
virtual TObjArray * GetListOfLeaves()
Definition TTree.h:486
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:2071
virtual TBranch * BranchRef()
Build the optional branch supporting the TRefTable.
Definition TTree.cxx:2325
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:7003
TFile * GetCurrentFile() const
Return pointer to the current file.
Definition TTree.cxx:5470
TObject * GetNotify() const
Definition TTree.h:500
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:3713
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:5120
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:5070
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:8693
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:7872
TVirtualTreePlayer * GetPlayer()
Load the TTreePlayer (if not already done).
Definition TTree.cxx:6296
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:6759
Float_t fTargetMemoryRatio
! Ratio for memory usage in uncompressed buffers versus actual occupancy.
Definition TTree.h:143
virtual Double_t * GetIndexValues()
Definition TTree.h:479
virtual TList * GetListOfAliases() const
Definition TTree.h:488
virtual Long64_t ReadStream(std::istream &inputStream, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from an input stream.
Definition TTree.cxx:7606
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:8909
Int_t fScanField
Number of runs before prompting in Scan.
Definition TTree.h:92
virtual Double_t GetWeight() const
Definition TTree.h:541
void Draw(Option_t *opt) override
Default Draw method for all objects.
Definition TTree.h:428
virtual ~TTree()
Destructor.
Definition TTree.cxx:919
virtual TTree * GetFriend(const char *) const
Return a pointer to the TTree friend whose name or alias is friendname.
Definition TTree.cxx:5966
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:3528
TTreeFormula * GetVar(Int_t i)
Definition TTree.h:521
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition TTree.cxx:6226
virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition TTree.cxx:5881
static void SetMaxTreeSize(Long64_t maxsize=100000000000LL)
Set the maximum size in bytes of a Tree file (static function).
Definition TTree.cxx:9178
void Print(Option_t *option="") const override
Print a summary of the tree contents.
Definition TTree.cxx:7210
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:2409
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:9657
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:7361
virtual Int_t BuildIndex(const char *majorname, const char *minorname="0")
Build a Tree Index (default is TTreeIndex).
Definition TTree.cxx:2634
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:9158
virtual void IncrementTotalBuffers(Int_t nbytes)
Definition TTree.h:543
TObjArray fBranches
List of Branches.
Definition TTree.h:119
TDirectory * GetDirectory() const
Definition TTree.h:459
TTreeCache * GetReadCache(TFile *file) const
Find and return the TTreeCache registered with the file and which may contain branches for us.
Definition TTree.cxx:6309
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:2746
virtual Bool_t GetBranchStatus(const char *branchname) const
Return status of branch with name branchname.
Definition TTree.cxx:5371
virtual TEntryList * GetEntryList()
Returns the entry list assigned to this tree.
Definition TTree.cxx:5845
TStreamerInfo * BuildStreamerInfo(TClass *cl, void *pointer=nullptr, Bool_t canOptimize=kTRUE)
Build StreamerInfo for class cl.
Definition TTree.cxx:2649
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set tree weight.
Definition TTree.cxx:9329
void InitializeBranchLists(bool checkLeafCount)
Divides the top-level branches into two vectors: (i) branches to be processed sequentially and (ii) b...
Definition TTree.cxx:5772
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=nullptr)
Change branch address, dealing with clone trees properly.
Definition TTree.cxx:8371
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:477
Long64_t fFlushedBytes
Number of auto-flushed bytes.
Definition TTree.h:89
virtual void SetPerfStats(TVirtualPerfStats *perf)
Set perf stats.
Definition TTree.cxx:9284
TTreeFormula * GetVar2()
Definition TTree.h:525
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:8846
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=nullptr)
Definition TTree.h:594
void SetTargetMemoryRatio(Float_t ratio)
Definition TTree.h:641
TEntryList * fEntryList
! Pointer to event selection list (if one)
Definition TTree.h:123
virtual TVirtualIndex * GetTreeIndex() const
Definition TTree.h:515
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:6881
virtual void SetMaxVirtualSize(Long64_t size=0)
Definition TTree.h:622
virtual void DropBaskets()
Remove some baskets from memory.
Definition TTree.cxx:4509
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:8328
virtual void SetImplicitMT(Bool_t enabled)
Definition TTree.h:618
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:517
virtual void SetDirectory(TDirectory *dir)
Change the tree's directory.
Definition TTree.cxx:8947
void SortBranchesByTime()
Sorts top-level branches by the last average task time recorded per branch.
Definition TTree.cxx:5825
void Delete(Option_t *option="") override
Delete this tree from memory or/and disk.
Definition TTree.cxx:3741
virtual Int_t * GetIndex()
Definition TTree.h:478
virtual TBranchRef * GetBranchRef() const
Definition TTree.h:447
virtual Double_t * GetV3()
Definition TTree.h:537
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:7441
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:1633
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:9050
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:6974
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:8025
virtual void CopyAddresses(TTree *, Bool_t undo=kFALSE)
Set branch addresses of passed tree equal to ours.
Definition TTree.cxx:3293
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:460
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
Definition TTree.cxx:9091
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:6073
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:1498
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition TTree.cxx:5856
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
Definition TTree.cxx:3133
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:6186
virtual Long64_t GetZipBytes() const
Definition TTree.h:542
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:7994
virtual void KeepCircular()
Keep a maximum of fMaxEntries in memory.
Definition TTree.cxx:6406
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:3813
virtual Bool_t SetAlias(const char *aliasName, const char *aliasFormula)
Set a tree variable alias.
Definition TTree.cxx:8127
Long64_t fMaxVirtualSize
Maximum total size of buffers kept in memory.
Definition TTree.h:99
virtual Long64_t GetTotBytes() const
Definition TTree.h:513
virtual Int_t MakeSelector(const char *selector=nullptr, Option_t *option="")
Generate skeleton selector class for this tree.
Definition TTree.cxx:6813
virtual void SetObject(const char *name, const char *title)
Change the name and title of this tree.
Definition TTree.cxx:9215
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:645
std::vector< TBranch * > fSeqBranches
! Branches to be processed sequentially when IMT is on
Definition TTree.h:142
Bool_t EnableCache()
Enable the TTreeCache unless explicitly disabled for this TTree by a prior call to SetCacheSize(0).
Definition TTree.cxx:2682
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:736
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
@ kSplitCollectionOfPointers
Definition TTree.h:263
virtual void SetDefaultEntryOffsetLen(Int_t newdefault, Bool_t updateExisting=kFALSE)
Update the default value for the branch's fEntryOffsetLen.
Definition TTree.cxx:8921
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:5918
static TTree * MergeTrees(TList *list, Option_t *option="")
Static function merging the trees in the TList into a new tree.
Definition TTree.cxx:6842
TTreeFormula * GetVar4()
Definition TTree.h:529
virtual void SetBranchStatus(const char *bname, Bool_t status=1, UInt_t *found=nullptr)
Set branch status to Process or DoNotProcess.
Definition TTree.cxx:8520
virtual Long64_t GetReadEntry() const
Definition TTree.h:506
virtual TObjArray * GetListOfBranches()
Definition TTree.h:485
virtual void SetParallelUnzip(Bool_t opt=kTRUE, Float_t RelSize=-1)
Enable or disable parallel unzipping of Tree buffers.
Definition TTree.cxx:9246
Long64_t fZipBytes
Total number of bytes in all branches after compression.
Definition TTree.h:87
virtual TTree * GetTree() const
Definition TTree.h:514
TBuffer * fTransientBuffer
! Pointer to the current transient buffer.
Definition TTree.h:135
virtual Double_t * GetVal(Int_t i)
Definition TTree.h:531
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:9027
virtual Int_t DropBranchFromCache(const char *bname, Bool_t subbranches=kFALSE)
Remove the branch with name 'bname' from the Tree cache.
Definition TTree.cxx:1141
virtual void AddZipBytes(Int_t zip)
Definition TTree.h:329
virtual Long64_t LoadTree(Long64_t entry)
Set current entry.
Definition TTree.cxx:6464
virtual Long64_t ReadFile(const char *filename, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from filename.
Definition TTree.cxx:7555
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition TTree.cxx:5217
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:9111
virtual TBasket * CreateBasket(TBranch *)
Create a basket for this tree and given branch.
Definition TTree.cxx:3725
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:6266
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition TTree.cxx:7968
virtual Long64_t GetEntriesFast() const
Definition TTree.h:462
void Browse(TBrowser *) override
Browse content of the TTree.
Definition TTree.cxx:2606
virtual Double_t * GetV1()
Definition TTree.h:533
virtual TList * GetUserInfo()
Return a pointer to the list containing user objects associated to this tree.
Definition TTree.cxx:6347
virtual void SetNotify(TObject *obj)
Sets the address of the object to be notified when the tree is loaded.
Definition TTree.h:635
TEventList * GetEventList() const
Definition TTree.h:470
Long64_t fChainOffset
! Offset of 1st entry of this Tree in a TChain
Definition TTree.h:106
EStatusBits
Definition TTree.h:247
@ 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:5503
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:7504
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:2401
virtual void SetBasketSize(const char *bname, Int_t buffsize=16000)
Set a branch's basket size.
Definition TTree.cxx:8344
static void SetBranchStyle(Int_t style=1)
Set the current branch style.
Definition TTree.cxx:8651
virtual Long64_t GetReadEvent() const
Definition TTree.h:507
void ImportClusterRanges(TTree *fromtree)
Appends the cluster range information stored in 'fromtree' to this tree, including the value of fAuto...
Definition TTree.cxx:6363
Long64_t fEstimate
Number of entries to estimate histogram limits.
Definition TTree.h:102
TH1 * GetHistogram()
Definition TTree.h:476
UInt_t GetAllocationCount() const
Definition TTree.h:440
Int_t FlushBasketsImpl() const
Internal implementation of the FlushBaskets algorithm.
Definition TTree.cxx:5137
Long64_t GetDebugMin() const
Definition TTree.h:458
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:6548
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:9708
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:9669
virtual Int_t GetTreeNumber() const
Definition TTree.h:516
Int_t GetEvent(Long64_t entry, Int_t getall=0)
Definition TTree.h:466
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:1552
virtual TList * GetListOfClones()
Definition TTree.h:484
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:539
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:527
virtual void SetTreeIndex(TVirtualIndex *index)
The current TreeIndex is replaced by the new index.
Definition TTree.cxx:9301
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:7048
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:7489
virtual Int_t SetCacheEntryRange(Long64_t first, Long64_t last)
interface to TTreeCache to set the cache entry range
Definition TTree.cxx:8812
static Long64_t GetMaxTreeSize()
Static function which returns the tree file size limit in bytes.
Definition TTree.cxx:6256
Int_t SetBranchAddressImp(TBranch *branch, void *addr, TBranch **ptr)
Change branch address, dealing with clone trees properly.
Definition TTree.cxx:8431
virtual Int_t GetTimerInterval() const
Definition TTree.h:511
virtual void SetScanField(Int_t n=50)
Definition TTree.h:640
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:585
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:4522
virtual TList * GetListOfFriends() const
Definition TTree.h:487
virtual void Refresh()
Refresh contents of this tree and its branches from the current status on disk.
Definition TTree.cxx:7907
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:8182
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:8244
virtual Int_t GetNbranches()
Definition TTree.h:499
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:9134
virtual TLeaf * FindLeaf(const char *name)
Find leaf..
Definition TTree.cxx:4907
virtual void StartViewer()
Start the TTreeViewer on this tree.
Definition TTree.cxx:9414
Int_t GetMakeClass() const
Definition TTree.h:492
virtual Int_t MakeCode(const char *filename=nullptr)
Generate a skeleton function for this tree.
Definition TTree.cxx:6631
Bool_t IsFolder() const override
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition TTree.h:544
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:8066
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:9186
virtual Long64_t GetCacheSize() const
Definition TTree.h:450
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:7948
TArrayI fIndex
Index of sorted values.
Definition TTree.h:125
virtual Int_t GetPacketSize() const
Definition TTree.h:502
virtual Int_t SetCacheSize(Long64_t cachesize=-1)
Set maximum size of the file cache .
Definition TTree.cxx:8667
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:1218
TBuffer * GetTransientBuffer(Int_t size)
Returns the transient buffer currently used by this TTree for reading/writing baskets.
Definition TTree.cxx:1036
ROOT::TIOFeatures GetIOFeatures() const
Returns the current set of IO settings.
Definition TTree.cxx:6065
virtual Int_t MakeClass(const char *classname=nullptr, Option_t *option="")
Generate a skeleton analysis class for this tree.
Definition TTree.cxx:6598
virtual Int_t GetFileNumber() const
Definition TTree.h:473
virtual const char * GetFriendAlias(TTree *) const
If the 'tree' is a friend, this method returns its alias name.
Definition TTree.cxx:6023
virtual void SetChainOffset(Long64_t offset=0)
Definition TTree.h:606
virtual Bool_t GetClusterPrefetch() const
Definition TTree.h:454
virtual void RemoveExternalFriend(TFriendElement *)
Removes external friend.
Definition TTree.cxx:7959
virtual Double_t * GetW()
Definition TTree.h:540
Bool_t MemoryFull(Int_t nbytes)
Check if adding nbytes to memory we are still below MaxVirtualsize.
Definition TTree.cxx:6828
TTreeFormula * GetVar1()
Definition TTree.h:523
virtual Double_t * GetV2()
Definition TTree.h:535
Int_t fPacketSize
! Number of entries in one packet for parallel root
Definition TTree.h:109
virtual Int_t GetUpdate() const
Definition TTree.h:518
virtual Long64_t GetChainOffset() const
Definition TTree.h:453
virtual TBranch * BranchImpArr(const char *branchname, EDataType datatype, std::size_t N, void *addobj, Int_t bufsize, Int_t splitlevel)
Definition TTree.cxx:1729
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:8085
virtual Long64_t GetMaxEntryLoop() const
Definition TTree.h:494
Bool_t fIMTFlush
! True if we are doing a multithreaded flush.
Definition TTree.h:156
virtual void SetClusterPrefetch(Bool_t enabled)
Definition TTree.h:608
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:6442
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:7191
virtual Long64_t GetAutoFlush() const
Definition TTree.h:444
virtual Long64_t GetMaxVirtualSize() const
Definition TTree.h:497
Abstract interface for Tree Index.
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
Definition file.py:1
Definition first.py:1
Definition tree.py:1
th1 Draw()
auto * tt
Definition textangle.C:16