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 /// Object to be notified when loading a Tree.
118 /// TTree::LoadTree() and TChain::LoadTree() will call fNotify->Notify().
119 /// Usually points to a TNotifyLink if this is a TChain.
121 TDirectory *fDirectory; ///<! Pointer to directory holding this tree
122 TObjArray fBranches; ///< List of Branches
123 TObjArray fLeaves; ///< Direct pointers to individual branch leaves
124 TList *fAliases; ///< List of aliases for expressions based on the tree branches.
125 TEventList *fEventList; ///<! Pointer to event selection list (if one)
126 TEntryList *fEntryList; ///<! Pointer to event selection list (if one)
127 TArrayD fIndexValues; ///< Sorted index values
128 TArrayI fIndex; ///< Index of sorted values
129 TVirtualIndex *fTreeIndex; ///< Pointer to the tree Index (if any)
130 TList *fFriends; ///< pointer to list of friend elements
131 TList *fExternalFriends; ///<! List of TFriendsElement pointing to us and need to be notified of LoadTree. Content not owned.
132 TVirtualPerfStats *fPerfStats; ///<! pointer to the current perf stats object
133 TList *fUserInfo; ///< pointer to a list of user objects associated to this Tree
134 TVirtualTreePlayer *fPlayer; ///<! Pointer to current Tree player
135 TList *fClones; ///<! List of cloned trees which share our addresses
136 TBranchRef *fBranchRef; ///< Branch supporting the TRefTable (if any)
137 UInt_t fFriendLockStatus; ///<! Record which method is locking the friend recursion
138 TBuffer *fTransientBuffer; ///<! Pointer to the current transient buffer.
139 bool fCacheDoAutoInit; ///<! true if cache auto creation or resize check is needed
140 bool fCacheDoClusterPrefetch;///<! true if cache is prefetching whole clusters
141 bool fCacheUserSet; ///<! true if the cache setting was explicitly given by user
142 bool fIMTEnabled; ///<! true if implicit multi-threading is enabled for this tree
143 UInt_t fNEntriesSinceSorting; ///<! Number of entries processed since the last re-sorting of branches
144 std::vector<std::pair<Long64_t,TBranch*>> fSortedBranches; ///<! Branches to be processed in parallel when IMT is on, sorted by average task time
145 std::vector<TBranch*> fSeqBranches; ///<! Branches to be processed sequentially when IMT is on
146 Float_t fTargetMemoryRatio{1.1f}; ///<! Ratio for memory usage in uncompressed buffers versus actual occupancy. 1.0
147 /// indicates basket should be resized to exact memory usage, but causes significant
148/// memory churn.
149#ifdef R__TRACK_BASKET_ALLOC_TIME
150 mutable std::atomic<ULong64_t> fAllocationTime{0}; ///<! Time spent reallocating basket memory buffers, in microseconds.
151#endif
152 mutable std::atomic<UInt_t> fAllocationCount{0}; ///<! Number of reallocations basket memory buffers.
153
154 static Int_t fgBranchStyle; ///< Old/New branch style
155 static Long64_t fgMaxTreeSize; ///< Maximum size of a file containing a Tree
156
157private:
158 // For simplicity, although fIMTFlush is always disabled in non-IMT builds, we don't #ifdef it out.
159 mutable bool fIMTFlush{false}; ///<! True if we are doing a multithreaded flush.
160 mutable std::atomic<Long64_t> fIMTTotBytes; ///<! Total bytes for the IMT flush baskets
161 mutable std::atomic<Long64_t> fIMTZipBytes; ///<! Zip bytes for the IMT flush baskets.
162
163 void InitializeBranchLists(bool checkLeafCount);
164 void SortBranchesByTime();
165 Int_t FlushBasketsImpl() const;
166 void MarkEventCluster();
168
169protected:
170 virtual void KeepCircular();
171 virtual TBranch *BranchImp(const char* branchname, const char* classname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
172 virtual TBranch *BranchImp(const char* branchname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
173 virtual TBranch *BranchImpRef(const char* branchname, const char* classname, TClass* ptrClass, void* addobj, Int_t bufsize, Int_t splitlevel);
174 virtual TBranch *BranchImpRef(const char* branchname, TClass* ptrClass, EDataType datatype, void* addobj, Int_t bufsize, Int_t splitlevel);
175 virtual TBranch *BranchImpArr(const char* branchname, EDataType datatype, std::size_t N, void* addobj, Int_t bufsize, Int_t splitlevel);
176 virtual Int_t CheckBranchAddressType(TBranch* branch, TClass* ptrClass, EDataType datatype, bool ptr);
177 virtual TBranch *BronchExec(const char* name, const char* classname, void* addobj, bool isptrptr, Int_t bufsize, Int_t splitlevel);
178 friend TBranch *TTreeBranchImpRef(TTree *tree, const char* branchname, TClass* ptrClass, EDataType datatype, void* addobj, Int_t bufsize, Int_t splitlevel);
179 Int_t SetBranchAddressImp(TBranch *branch, void* addr, TBranch** ptr);
180 virtual TLeaf *GetLeafImpl(const char* branchname, const char* leafname);
181
182 Long64_t GetCacheAutoSize(bool withDefault = false);
183 char GetNewlineValue(std::istream &inputStream);
184 void ImportClusterRanges(TTree *fromtree);
185 void MoveReadCache(TFile *src, TDirectory *dir);
186 Int_t SetCacheSizeAux(bool autocache = true, Long64_t cacheSize = 0);
187
189 // Helper class to prevent infinite recursion in the
190 // usage of TTree Friends. Implemented in TTree.cxx.
191 TTree *fTree; // Pointer to the locked tree
192 UInt_t fMethodBit; // BIT for the locked method
193 bool fPrevious; // Previous value of the BIT.
194
195 protected:
196 TFriendLock(const TFriendLock&);
198
199 public:
200 TFriendLock(TTree* tree, UInt_t methodbit);
201 ~TFriendLock();
202 };
203 friend class TFriendLock;
204 // So that the index class can use TFriendLock:
205 friend class TTreeIndex;
206 friend class TChainIndex;
207 // So that the TTreeCloner can access the protected interfaces
208 friend class TTreeCloner;
209
210 // use to update fFriendLockStatus
222 kPrint = BIT(10),
225 };
226
227public:
228 // Used as the max value for any TTree range operation.
230
231 // SetBranchAddress return values
244 kNeedEnableDecomposedObj = BIT(29), // DecomposedObj is the newer name of MakeClass mode
247 };
248
249 // TTree status bits
253 /// If set, the branch's buffers will grow until an event cluster boundary is hit,
254 /// guaranteeing a basket per cluster. This mode does not provide any guarantee on the
255 /// memory bounds in the case of extremely large events.
257 /// If set, signals that this TTree is the output of the processing of another TTree, and
258 /// the entries are reshuffled w.r.t. to the original TTree. As a safety measure, a TTree
259 /// with this bit set cannot add friends nor can be added as a friend. If you know what
260 /// you are doing, you can manually unset this bit with `ResetBit(EStatusBits::kEntriesReshuffled)`.
261 kEntriesReshuffled = BIT(19) // bits 15-18 are used by TChain
262 };
263
264 // Split level modifier
265 enum {
267 };
268
270 {
271 private:
272 TTree *fTree; // TTree upon which we are iterating.
273 Int_t fClusterRange; // Which cluster range are we looking at.
274 Long64_t fStartEntry; // Where does the cluster start.
275 Long64_t fNextEntry; // Where does the cluster end (exclusive).
276 Long64_t fEstimatedSize; // If positive, the calculated estimated tree size.
277
279
280 protected:
281 friend class TTree;
282 TClusterIterator(TTree *tree, Long64_t firstEntry);
283
284 public:
285 // Intentionally used the default copy constructor and default destructor
286 // as the TClusterIterator does not own the TTree.
287 // TClusterIterator(const TClusterIterator&);
288 // ~TClusterIterator();
289
290 // No public constructors, the iterator must be
291 // created via TTree::GetClusterIterator
292
293 // Move on to the next cluster and return the starting entry
294 // of this next cluster
295 Long64_t Next();
296
297 // Move on to the previous cluster and return the starting entry
298 // of this previous cluster
300
301 // Return the start entry of the current cluster.
303 return fStartEntry;
304 }
305
306 // Return the first entry of the next cluster.
308 return fNextEntry;
309 }
310
311 Long64_t operator()() { return Next(); }
312 };
313
314 TTree();
315 TTree(const char* name, const char* title, Int_t splitlevel = 99, TDirectory* dir = gDirectory);
316 ~TTree() override;
317
318 TTree(const TTree& tt) = delete;
319 TTree& operator=(const TTree& tt) = delete;
320
321 virtual Int_t AddBranchToCache(const char *bname, bool subbranches = false);
322 virtual Int_t AddBranchToCache(TBranch *branch, bool subbranches = false);
323 virtual Int_t DropBranchFromCache(const char *bname, bool subbranches = false);
324 virtual Int_t DropBranchFromCache(TBranch *branch, bool subbranches = false);
325 void AddClone(TTree*);
326 virtual TFriendElement *AddFriend(const char* treename, const char* filename = "");
327 virtual TFriendElement *AddFriend(const char* treename, TFile* file);
328 virtual TFriendElement *AddFriend(TTree* tree, const char* alias = "", bool warn = false);
329 // As the TBasket invokes Add{Tot,Zip}Bytes on its parent tree, we must do these updates in a thread-safe
330 // manner only when we are flushing multiple baskets in parallel.
331 virtual void AddTotBytes(Int_t tot) { if (fIMTFlush) { fIMTTotBytes += tot; } else { fTotBytes += tot; } }
332 virtual void AddZipBytes(Int_t zip) { if (fIMTFlush) { fIMTZipBytes += zip; } else { fZipBytes += zip; } }
333// NOTE: these counters aren't thread safe like the ones above.
334#ifdef R__TRACK_BASKET_ALLOC_TIME
335 void AddAllocationTime(ULong64_t time) { fAllocationTime += time; }
336#endif
338 virtual Long64_t AutoSave(Option_t* option = "");
339
340 /// Add a new branch, and infer the data type from the type of `obj` being passed.
341 ///
342 /// \note This and the next overload should cover most cases for creating a branch. Try to use these two whenever
343 /// possible, unless e.g. type conversions are needed.
344 ///
345 /// \param[in] name Name of the branch to be created.
346 /// \param[in] obj Address of the object to be added. Make sure to pass a pointer to the actual type/class that
347 /// should be stored in the tree (no pointers to base classes). When calling Fill(), the current value of the type/object will be saved.
348 /// \param[in] bufsize The buffer size in bytes for this branch. When the buffer is full, it is compressed and written to disc.
349 /// 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).
350 /// A small value for bufsize is beneficial if entries in the Tree are accessed randomly and the Tree is in split mode.
351 /// \param[in] splitlevel If T is a class or struct and splitlevel > 0, the members of the object are serialised as separate branches.
352 /// \return Pointer to the TBranch that was created. The branch is owned by the tree.
353 template <class T> TBranch *Branch(const char* name, T* obj, Int_t bufsize = 32000, Int_t splitlevel = 99)
354 {
355 return BranchImpRef(name, TClass::GetClass<T>(), TDataType::GetType(typeid(T)), obj, bufsize, splitlevel);
356 }
357
358 /// Add a new branch, and infer the data type from the array `addobj` being passed.
359 ///
360 /// \note This and the previous overload should cover most cases for creating a branch. Try to use these two whenever
361 /// possible, unless e.g. type conversions are needed.
362 ///
363 /// \param[in] name Name of the branch to be created.
364 /// \param[in] addobj Array of the objects to be added. When calling Fill(), the current value of the type/object will be saved.
365 /// \param[in] bufsize he buffer size in bytes for this branch. When the buffer is full, it is compressed and written to disc.
366 /// 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).
367 /// A small value for bufsize is beneficial if entries in the Tree are accessed randomly and the Tree is in split mode.
368 /// \param[in] splitlevel If T is a class or struct and splitlevel > 0, the members of the object are serialised as separate branches.
369 /// \return Pointer to the TBranch that was created. The branch is owned by the tree.
370 template <class T> TBranch *Branch(const char* name, T** addobj, Int_t bufsize = 32000, Int_t splitlevel = 99)
371 {
372 return BranchImp(name, TClass::GetClass<T>(), addobj, bufsize, splitlevel);
373 }
374
375 virtual Int_t Branch(TCollection* list, Int_t bufsize = 32000, Int_t splitlevel = 99, const char* name = "");
376 virtual Int_t Branch(TList* list, Int_t bufsize = 32000, Int_t splitlevel = 99);
377 virtual Int_t Branch(const char* folder, Int_t bufsize = 32000, Int_t splitlevel = 99);
378 virtual TBranch *Branch(const char* name, void* address, const char* leaflist, Int_t bufsize = 32000);
379 TBranch *Branch(const char* name, char* address, const char* leaflist, Int_t bufsize = 32000)
380 {
381 // Overload to avoid confusion between this signature and the template instance.
382 return Branch(name,(void*)address,leaflist,bufsize);
383 }
384 TBranch *Branch(const char* name, Longptr_t address, const char* leaflist, Int_t bufsize = 32000)
385 {
386 // Overload to avoid confusion between this signature and the template instance.
387 return Branch(name,(void*)address,leaflist,bufsize);
388 }
389 TBranch *Branch(const char* name, int address, const char* leaflist, Int_t bufsize = 32000)
390 {
391 // Overload to avoid confusion between this signature and the template instance.
392 return Branch(name,(void*)(Longptr_t)address,leaflist,bufsize);
393 }
394 virtual TBranch *Branch(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 99);
395 template <class T> TBranch *Branch(const char* name, const char* classname, T* obj, Int_t bufsize = 32000, Int_t splitlevel = 99)
396 {
397 // See BranchImpRed for details. Here we __ignore
398 return BranchImpRef(name, classname, TClass::GetClass<T>(), obj, bufsize, splitlevel);
399 }
400 template <class T> TBranch *Branch(const char* name, const char* classname, T** addobj, Int_t bufsize = 32000, Int_t splitlevel = 99)
401 {
402 // See BranchImp for details
403 return BranchImp(name, classname, TClass::GetClass<T>(), addobj, bufsize, splitlevel);
404 }
405 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)
406 {
407 TClass *cl = TClass::GetClass<T>();
408 if (cl) {
409 TClass *arrCl = TClass::GetClass<std::array<T, N>>();
410 Error("Branch","std::array of objects not yet supported as top level branch object (the class is %s)",
411 arrCl ? arrCl->GetName() : cl->GetName());
412 return nullptr;
413 }
414 return BranchImpArr(name, TDataType::GetType(typeid(T)), N, obj, bufsize, splitlevel);
415 }
416 virtual TBranch *Bronch(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 99);
417 virtual TBranch *BranchOld(const char* name, const char* classname, void* addobj, Int_t bufsize = 32000, Int_t splitlevel = 1);
418 virtual TBranch *BranchRef();
419 void Browse(TBrowser*) override;
420 virtual Int_t BuildIndex(const char *majorname, const char *minorname = "0");
421 TStreamerInfo *BuildStreamerInfo(TClass* cl, void *pointer = nullptr, bool canOptimize = true);
422 virtual TFile *ChangeFile(TFile* file);
423 virtual TTree *CloneTree(Long64_t nentries = -1, Option_t* option = "");
424 virtual void CopyAddresses(TTree*,bool undo = false);
425 virtual Long64_t CopyEntries(TTree* tree, Long64_t nentries = -1, Option_t *option = "", bool needCopyAddresses = false);
426 virtual TTree *CopyTree(const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
427 virtual TBasket *CreateBasket(TBranch*);
428 virtual void DirectoryAutoAdd(TDirectory *);
429 Int_t Debug() const { return fDebug; }
430 void Delete(Option_t* option = "") override; // *MENU*
431 void Draw(Option_t* opt) override { Draw(opt, "", "", kMaxEntries, 0); }
432 virtual Long64_t Draw(const char* varexp, const TCut& selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
433 virtual Long64_t Draw(const char* varexp, const char* selection, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
434 virtual void DropBaskets();
435 virtual void DropBuffers(Int_t nbytes);
436 bool EnableCache();
437 virtual Int_t Fill();
438 virtual TBranch *FindBranch(const char* name);
439 virtual TLeaf *FindLeaf(const char* name);
440 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*
441 virtual Int_t FlushBaskets(bool create_cluster = true) const;
442 virtual const char *GetAlias(const char* aliasName) const;
444#ifdef R__TRACK_BASKET_ALLOC_TIME
445 ULong64_t GetAllocationTime() const { return fAllocationTime; }
446#endif
447 virtual Long64_t GetAutoFlush() const {return fAutoFlush;}
448 virtual Long64_t GetAutoSave() const {return fAutoSave;}
449 virtual TBranch *GetBranch(const char* name);
450 virtual TBranchRef *GetBranchRef() const { return fBranchRef; };
451 virtual bool GetBranchStatus(const char* branchname) const;
452 static Int_t GetBranchStyle();
453 virtual Long64_t GetCacheSize() const { return fCacheSize; }
454 virtual TClusterIterator GetClusterIterator(Long64_t firstentry);
455 virtual Long64_t GetChainEntryNumber(Long64_t entry) const { return entry; }
456 virtual Long64_t GetChainOffset() const { return fChainOffset; }
457 virtual bool GetClusterPrefetch() const { return fCacheDoClusterPrefetch; }
458 TFile *GetCurrentFile() const;
460 Long64_t GetDebugMax() const { return fDebugMax; }
461 Long64_t GetDebugMin() const { return fDebugMin; }
462 TDirectory *GetDirectory() const { return fDirectory; }
463 virtual Long64_t GetEntries() const { return fEntries; }
464 virtual Long64_t GetEntries(const char *selection);
465 virtual Long64_t GetEntriesFast() const { return fEntries; }
466 virtual Long64_t GetEntriesFriend() const;
467 virtual Long64_t GetEstimate() const { return fEstimate; }
468 virtual Int_t GetEntry(Long64_t entry, Int_t getall = 0);
469 Int_t GetEvent(Long64_t entry, Int_t getall = 0) { return GetEntry(entry, getall); }
470 virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor = 0);
471 virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor = 0) const;
472 virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor = 0) const;
473 TEventList *GetEventList() const { return fEventList; }
474 virtual TEntryList *GetEntryList();
475 virtual Long64_t GetEntryNumber(Long64_t entry) const;
476 virtual Int_t GetFileNumber() const { return fFileNumber; }
477 virtual TTree *GetFriend(const char*) const;
478 virtual const char *GetFriendAlias(TTree*) const;
480 virtual bool GetImplicitMT() { return fIMTEnabled; }
481 virtual Int_t *GetIndex() { return &fIndex.fArray[0]; }
482 virtual Double_t *GetIndexValues() { return &fIndexValues.fArray[0]; }
484 virtual TIterator *GetIteratorOnAllLeaves(bool dir = kIterForward);
485 virtual TLeaf *GetLeaf(const char* branchname, const char* leafname);
486 virtual TLeaf *GetLeaf(const char* name);
487 virtual TList *GetListOfClones() { return fClones; }
488 virtual TObjArray *GetListOfBranches() { return &fBranches; }
489 virtual TObjArray *GetListOfLeaves() { return &fLeaves; }
490 virtual TList *GetListOfFriends() const { return fFriends; }
491 virtual TList *GetListOfAliases() const { return fAliases; }
492
493 // GetMakeClass is left non-virtual for efficiency reason.
494 // Making it virtual affects the performance of the I/O
495 Int_t GetMakeClass() const { return fMakeClass; }
496
497 virtual Long64_t GetMaxEntryLoop() const { return fMaxEntryLoop; }
498 virtual Double_t GetMaximum(const char* columname);
499 static Long64_t GetMaxTreeSize();
500 virtual Long64_t GetMaxVirtualSize() const { return fMaxVirtualSize; }
501 virtual Double_t GetMinimum(const char* columname);
503 TObject *GetNotify() const { return fNotify; }
505 virtual Int_t GetPacketSize() const { return fPacketSize; }
506 virtual TVirtualPerfStats *GetPerfStats() const { return fPerfStats; }
507 TTreeCache *GetReadCache(TFile *file) const;
508 TTreeCache *GetReadCache(TFile *file, bool create);
509 virtual Long64_t GetReadEntry() const { return fReadEntry; }
510 virtual Long64_t GetReadEvent() const { return fReadEntry; }
511 virtual Int_t GetScanField() const { return fScanField; }
514 virtual Int_t GetTimerInterval() const { return fTimerInterval; }
516 virtual Long64_t GetTotBytes() const { return fTotBytes; }
517 virtual TTree *GetTree() const { return const_cast<TTree*>(this); }
518 virtual TVirtualIndex *GetTreeIndex() const { return fTreeIndex; }
519 virtual Int_t GetTreeNumber() const { return 0; }
521 virtual Int_t GetUpdate() const { return fUpdate; }
522 virtual TList *GetUserInfo();
523 // See TSelectorDraw::GetVar
525 // See TSelectorDraw::GetVar
527 // See TSelectorDraw::GetVar
529 // See TSelectorDraw::GetVar
531 // See TSelectorDraw::GetVar
533 // See TSelectorDraw::GetVal
534 virtual Double_t *GetVal(Int_t i) { return GetPlayer()->GetVal(i); }
535 // See TSelectorDraw::GetVal
536 virtual Double_t *GetV1() { return GetPlayer()->GetV1(); }
537 // See TSelectorDraw::GetVal
538 virtual Double_t *GetV2() { return GetPlayer()->GetV2(); }
539 // See TSelectorDraw::GetVal
540 virtual Double_t *GetV3() { return GetPlayer()->GetV3(); }
541 // See TSelectorDraw::GetVal
542 virtual Double_t *GetV4() { return GetPlayer()->GetV4(); }
543 virtual Double_t *GetW() { return GetPlayer()->GetW(); }
544 virtual Double_t GetWeight() const { return fWeight; }
545 virtual Long64_t GetZipBytes() const { return fZipBytes; }
546 virtual void IncrementTotalBuffers(Int_t nbytes) { fTotalBuffers += nbytes; }
547 bool IsFolder() const override { return true; }
548 virtual bool InPlaceClone(TDirectory *newdirectory, const char *options = "");
549 virtual Int_t LoadBaskets(Long64_t maxmemory = 2000000000);
550 virtual Long64_t LoadTree(Long64_t entry);
551 virtual Long64_t LoadTreeFriend(Long64_t entry, TTree* T);
552 virtual Int_t MakeClass(const char *classname = nullptr, Option_t* option = "");
553 virtual Int_t MakeCode(const char *filename = nullptr);
554 virtual Int_t MakeProxy(const char* classname, const char* macrofilename = nullptr, const char* cutfilename = nullptr, const char* option = nullptr, Int_t maxUnrolling = 3);
555 virtual Int_t MakeSelector(const char *selector = nullptr, Option_t *option = "");
556 bool MemoryFull(Int_t nbytes);
557 virtual Long64_t Merge(TCollection* list, Option_t* option = "");
558 virtual Long64_t Merge(TCollection* list, TFileMergeInfo *info);
559 static TTree *MergeTrees(TList* list, Option_t* option = "");
560 bool Notify() override;
561 virtual void OptimizeBaskets(ULong64_t maxMemory=10000000, Float_t minComp=1.1, Option_t *option="");
562 TPrincipal *Principal(const char* varexp = "", const char* selection = "", Option_t* option = "np", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
563 void Print(Option_t* option = "") const override; // *MENU*
564 virtual void PrintCacheStats(Option_t* option = "") const;
565 virtual Long64_t Process(const char* filename, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
566 virtual Long64_t Process(TSelector* selector, Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
567 virtual Long64_t Project(const char* hname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
568 virtual TSQLResult *Query(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
569 virtual Long64_t ReadFile(const char* filename, const char* branchDescriptor = "", char delimiter = ' ');
570 virtual Long64_t ReadStream(std::istream& inputStream, const char* branchDescriptor = "", char delimiter = ' ');
571 virtual void Refresh();
573 virtual void RemoveExternalFriend(TFriendElement *);
574 virtual void RemoveFriend(TTree*);
575 void RecursiveRemove(TObject *obj) override;
576 virtual void Reset(Option_t* option = "");
577 virtual void ResetAfterMerge(TFileMergeInfo *);
578 virtual void ResetBranchAddress(TBranch *);
579 virtual void ResetBranchAddresses();
580 virtual Long64_t Scan(const char* varexp = "", const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0); // *MENU*
581 virtual bool SetAlias(const char* aliasName, const char* aliasFormula);
582 virtual void SetAutoSave(Long64_t autos = -300000000);
583 virtual void SetAutoFlush(Long64_t autof = -30000000);
584 virtual void SetBasketSize(const char* bname, Int_t buffsize = 16000);
585 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr = nullptr);
586 virtual Int_t SetBranchAddress(const char *bname,void *add, TClass *realClass, EDataType datatype, bool isptr);
587 virtual Int_t SetBranchAddress(const char *bname,void *add, TBranch **ptr, TClass *realClass, EDataType datatype, bool isptr);
588 template <class T> Int_t SetBranchAddress(const char *bname, T **add, TBranch **ptr = nullptr) {
589 TClass *cl = TClass::GetClass<T>();
591 if (!cl) type = TDataType::GetType(typeid(T));
592 return SetBranchAddress(bname,add,ptr,cl,type,true);
593 }
594#ifndef R__NO_CLASS_TEMPLATE_SPECIALIZATION
595 // This can only be used when the template overload resolution can distinguish between
596 // T* and T**
597 template <class T> Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr = nullptr) {
598 TClass *cl = TClass::GetClass<T>();
600 if (!cl) type = TDataType::GetType(typeid(T));
601 return SetBranchAddress(bname,add,ptr,cl,type,false);
602 }
603#endif
604 virtual void SetBranchStatus(const char* bname, bool status = true, UInt_t* found = nullptr);
605 static void SetBranchStyle(Int_t style = 1); //style=0 for old branch, =1 for new branch style
606 virtual Int_t SetCacheSize(Long64_t cachesize = -1);
607 virtual Int_t SetCacheEntryRange(Long64_t first, Long64_t last);
608 virtual void SetCacheLearnEntries(Int_t n=10);
610 virtual void SetCircular(Long64_t maxEntries);
611 virtual void SetClusterPrefetch(bool enabled) { fCacheDoClusterPrefetch = enabled; }
612 virtual void SetDebug(Int_t level = 1, Long64_t min = 0, Long64_t max = 9999999); // *MENU*
613 virtual void SetDefaultEntryOffsetLen(Int_t newdefault, bool updateExisting = false);
614 virtual void SetDirectory(TDirectory* dir);
615 virtual Long64_t SetEntries(Long64_t n = -1);
616 virtual void SetEstimate(Long64_t nentries = 1000000);
618 virtual void SetFileNumber(Int_t number = 0);
619 virtual void SetEventList(TEventList* list);
620 virtual void SetEntryList(TEntryList* list, Option_t *opt="");
621 virtual void SetImplicitMT(bool enabled) { fIMTEnabled = enabled; }
622 virtual void SetMakeClass(Int_t make);
623 virtual void SetMaxEntryLoop(Long64_t maxev = kMaxEntries) { fMaxEntryLoop = maxev; } // *MENU*
624 static void SetMaxTreeSize(Long64_t maxsize = 100000000000LL);
625 virtual void SetMaxVirtualSize(Long64_t size = 0) { fMaxVirtualSize = size; } // *MENU*
626 void SetName(const char* name) override; // *MENU*
627
628 /**
629 * @brief Sets the address of the object to be notified when the tree is loaded.
630 *
631 * The method TObject::Notify is called for the given object when the tree
632 * is loaded. Specifically this occurs in the TTree::LoadTree method. To
633 * remove the notification call this method with nullptr:
634 * @code tree->SetNotify(nullptr); @endcode
635 *
636 * If this is a TChain, `obj` is most often going to be a TNotifyLink.
637 *
638 * @param[in] obj Pointer to a TObject to be notified.
639 */
640 virtual void SetNotify(TObject* obj);
641
642 virtual void SetObject(const char* name, const char* title);
643 virtual void SetParallelUnzip(bool opt=true, Float_t RelSize=-1);
644 virtual void SetPerfStats(TVirtualPerfStats* perf);
645 virtual void SetScanField(Int_t n = 50) { fScanField = n; } // *MENU*
647 virtual void SetTimerInterval(Int_t msec = 333) { fTimerInterval=msec; }
648 virtual void SetTreeIndex(TVirtualIndex* index);
649 virtual void SetWeight(Double_t w = 1, Option_t* option = "");
650 virtual void SetUpdate(Int_t freq = 0) { fUpdate = freq; }
651 virtual void Show(Long64_t entry = -1, Int_t lenmax = 20);
652 virtual void StartViewer(); // *MENU*
654 virtual Int_t UnbinnedFit(const char* funcname, const char* varexp, const char* selection = "", Option_t* option = "", Long64_t nentries = kMaxEntries, Long64_t firstentry = 0);
655 void UseCurrentStyle() override;
656 Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) override;
657 Int_t Write(const char *name=nullptr, Int_t option=0, Int_t bufsize=0) const override;
658
659 ClassDefOverride(TTree, 20) // Tree descriptor (the main ROOT I/O class)
660};
661
662//////////////////////////////////////////////////////////////////////////
663// //
664// TTreeFriendLeafIter //
665// //
666// Iterator on all the leaves in a TTree and its friend //
667// //
668//////////////////////////////////////////////////////////////////////////
669
671
672protected:
673 TTree *fTree; ///< tree being iterated
674 TIterator *fLeafIter; ///< current leaf sub-iterator.
675 TIterator *fTreeIter; ///< current tree sub-iterator.
676 bool fDirection; ///< iteration direction
677
678 TTreeFriendLeafIter() : fTree(nullptr), fLeafIter(nullptr), fTreeIter(nullptr),
679 fDirection(false) { }
680
681public:
682 TTreeFriendLeafIter(const TTree* t, bool dir = kIterForward);
685 TIterator &operator=(const TIterator &rhs) override;
687
688 const TCollection *GetCollection() const override { return nullptr; }
689 Option_t *GetOption() const override;
690 TObject *Next() override;
692 bool operator !=(const TIterator&) const override {
693 // TODO: Implement me
694 return false;
695 }
696 bool operator !=(const TTreeFriendLeafIter&) const {
697 // TODO: Implement me
698 return false;
699 }
700 TObject *operator*() const override {
701 // TODO: Implement me
702 return nullptr;
703 }
704 ClassDefOverride(TTreeFriendLeafIter,0) //Linked list iterator
705 };
706
707
708#endif
#define SafeDelete(p)
Definition RConfig.hxx:550
virtual RooAbsTestStatistic * create(const char *name, const char *title, RooAbsReal &real, RooAbsData &data, const RooArgSet &projDeps, Configuration const &cfg)=0
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
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
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 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: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
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:93
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 composed of a header, followed by consecutive data records (TKey instances) with a wel...
Definition TFile.h:53
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:59
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:976
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:670
bool operator!=(const TIterator &) const override
Compare two iterator objects.
Definition TTree.h:692
const TCollection * GetCollection() const override
Definition TTree.h:688
TTree * fTree
tree being iterated
Definition TTree.h:673
TObject * operator*() const override
Return current object or nullptr.
Definition TTree.h:700
void Reset() override
Definition TTree.h:691
TIterator & operator=(const TIterator &rhs) override
Overridden assignment operator. Does NOT copy the 'cursor' location!
Definition TTree.cxx:9782
~TTreeFriendLeafIter() override
Definition TTree.h:684
TObject * Next() override
Go the next friend element.
Definition TTree.cxx:9805
TIterator * fLeafIter
current leaf sub-iterator.
Definition TTree.h:674
Option_t * GetOption() const override
Returns the object option stored in the list.
Definition TTree.cxx:9844
TIterator * fTreeIter
current tree sub-iterator.
Definition TTree.h:675
bool fDirection
iteration direction
Definition TTree.h:676
A Tree Index with majorname and minorname.
Definition TTreeIndex.h:29
Helper class to iterate over cluster of baskets.
Definition TTree.h:270
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:302
Long64_t operator()()
Definition TTree.h:311
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:307
Long64_t fEstimatedSize
Definition TTree.h:276
Helper class to prevent infinite recursion in the usage of TTree Friends.
Definition TTree.h:188
TFriendLock & operator=(const TFriendLock &)
Assignment operator.
Definition TTree.cxx:530
UInt_t fMethodBit
Definition TTree.h:192
TTree * fTree
Definition TTree.h:191
~TFriendLock()
Restore the state of tree the same as before we set the lock.
Definition TTree.cxx:543
A TTree represents a columnar dataset.
Definition TTree.h:79
virtual Int_t Fill()
Fill all branches.
Definition TTree.cxx:4603
virtual TFriendElement * AddFriend(const char *treename, const char *filename="")
Add a TFriendElement to the list of friends.
Definition TTree.cxx:1332
TBranchRef * fBranchRef
Branch supporting the TRefTable (if any)
Definition TTree.h:136
TStreamerInfo * BuildStreamerInfo(TClass *cl, void *pointer=nullptr, bool canOptimize=true)
Build StreamerInfo for class cl.
Definition TTree.cxx:2652
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:4841
virtual TVirtualPerfStats * GetPerfStats() const
Definition TTree.h:506
virtual void SetTimerInterval(Int_t msec=333)
Definition TTree.h:647
virtual void SetBranchStatus(const char *bname, bool status=true, UInt_t *found=nullptr)
Set branch status to Process or DoNotProcess.
Definition TTree.cxx:8529
TTreeFormula * GetSelect()
Definition TTree.h:512
bool EnableCache()
Enable the TTreeCache unless explicitly disabled for this TTree by a prior call to SetCacheSize(0).
Definition TTree.cxx:2685
@ kSplitCollectionOfPointers
Definition TTree.h:266
virtual TBranch * GetBranch(const char *name)
Return pointer to the branch with the given name in this tree or its friends.
Definition TTree.cxx:5294
virtual Int_t GetScanField() const
Definition TTree.h:511
static Int_t GetBranchStyle()
Static function returning the current branch style.
Definition TTree.cxx:5395
TList * fFriends
pointer to list of friend elements
Definition TTree.h:130
bool fIMTEnabled
! true if implicit multi-threading is enabled for this tree
Definition TTree.h:142
virtual Long64_t GetChainEntryNumber(Long64_t entry) const
Definition TTree.h:455
virtual bool GetBranchStatus(const char *branchname) const
Return status of branch with name branchname.
Definition TTree.cxx:5380
UInt_t fFriendLockStatus
! Record which method is locking the friend recursion
Definition TTree.h:137
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:6098
Long64_t fTotBytes
Total number of bytes in all branches before compression.
Definition TTree.h:86
virtual Int_t FlushBaskets(bool 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:5129
Int_t GetDefaultEntryOffsetLen() const
Definition TTree.h:459
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:9375
TEventList * fEventList
! Pointer to event selection list (if one)
Definition TTree.h:125
virtual Long64_t GetAutoSave() const
Definition TTree.h:448
virtual Int_t StopCacheLearningPhase()
Stop the cache learning phase.
Definition TTree.cxx:9464
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:5638
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:144
virtual void SetCircular(Long64_t maxEntries)
Enable/Disable circularity for this tree.
Definition TTree.cxx:8882
virtual Long64_t GetEstimate() const
Definition TTree.h:467
Long64_t GetDebugMax() const
Definition TTree.h:460
Long64_t fSavedBytes
Number of autosaved bytes.
Definition TTree.h:88
virtual Int_t AddBranchToCache(const char *bname, bool subbranches=false)
Add branch with name bname to the Tree cache.
Definition TTree.cxx:1059
Long64_t GetMedianClusterSize()
Estimate the median cluster size for the TTree.
Definition TTree.cxx:8292
virtual TClusterIterator GetClusterIterator(Long64_t firstentry)
Return an iterator over the cluster of baskets starting at firstentry.
Definition TTree.cxx:5467
virtual void ResetBranchAddress(TBranch *)
Tell all of our branches to set their addresses to zero.
Definition TTree.cxx:8065
bool fCacheUserSet
! true if the cache setting was explicitly given by user
Definition TTree.h:141
char GetNewlineValue(std::istream &inputStream)
Determine which newline this file is using.
Definition TTree.cxx:7588
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:370
TIOFeatures fIOFeatures
IO features to define for newly-written baskets and branches.
Definition TTree.h:114
virtual Long64_t GetSelectedRows()
Definition TTree.h:513
void AddAllocationCount(UInt_t count)
Definition TTree.h:337
virtual void SetMaxEntryLoop(Long64_t maxev=kMaxEntries)
Definition TTree.h:623
virtual Long64_t GetEntryNumberWithIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition TTree.cxx:5910
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:9001
virtual TObjArray * GetListOfLeaves()
Definition TTree.h:489
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:2074
Long64_t GetCacheAutoSize(bool withDefault=false)
Used for automatic sizing of the cache.
Definition TTree.cxx:5407
virtual TBranch * BranchRef()
Build the optional branch supporting the TRefTable.
Definition TTree.cxx:2328
TFile * GetCurrentFile() const
Return pointer to the current file.
Definition TTree.cxx:5479
TObject * GetNotify() const
Definition TTree.h:503
TList * fAliases
List of aliases for expressions based on the tree branches.
Definition TTree.h:124
TBranch * Branch(const char *name, Longptr_t address, const char *leaflist, Int_t bufsize=32000)
Definition TTree.h:384
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:3719
virtual Int_t DropBranchFromCache(const char *bname, bool subbranches=false)
Remove the branch with name 'bname' from the Tree cache.
Definition TTree.cxx:1142
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:5079
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:161
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:7881
TVirtualTreePlayer * GetPlayer()
Load the TTreePlayer (if not already done).
Definition TTree.cxx:6305
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:6768
Float_t fTargetMemoryRatio
! Ratio for memory usage in uncompressed buffers versus actual occupancy.
Definition TTree.h:146
virtual Double_t * GetIndexValues()
Definition TTree.h:482
virtual TList * GetListOfAliases() const
Definition TTree.h:491
virtual Long64_t ReadStream(std::istream &inputStream, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from an input stream.
Definition TTree.cxx:7615
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:8918
Int_t fScanField
Number of runs before prompting in Scan.
Definition TTree.h:92
virtual Double_t GetWeight() const
Definition TTree.h:544
void Draw(Option_t *opt) override
Default Draw method for all objects.
Definition TTree.h:431
virtual TTree * GetFriend(const char *) const
Return a pointer to the TTree friend whose name or alias is friendname.
Definition TTree.cxx:5975
TTreeFormula * GetVar(Int_t i)
Definition TTree.h:524
virtual void SetNotify(TObject *obj)
Sets the address of the object to be notified when the tree is loaded.
Definition TTree.cxx:9221
virtual Double_t GetMaximum(const char *columname)
Return maximum of column with name columname.
Definition TTree.cxx:6235
virtual Long64_t GetEntryNumberWithBestIndex(Long64_t major, Long64_t minor=0) const
Return entry number corresponding to major and minor number.
Definition TTree.cxx:5890
static void SetMaxTreeSize(Long64_t maxsize=100000000000LL)
Set the maximum size in bytes of a Tree file (static function).
Definition TTree.cxx:9187
void Print(Option_t *option="") const override
Print a summary of the tree contents.
Definition TTree.cxx:7219
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:9692
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:7370
virtual Int_t BuildIndex(const char *majorname, const char *minorname="0")
Build a Tree Index (default is TTreeIndex).
Definition TTree.cxx:2637
TVirtualTreePlayer * fPlayer
! Pointer to current Tree player
Definition TTree.h:134
virtual TIterator * GetIteratorOnAllLeaves(bool dir=kIterForward)
Creates a new iterator that will go through all the leaves on the tree itself and its friend.
Definition TTree.cxx:6082
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:9167
virtual bool 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:7012
virtual void IncrementTotalBuffers(Int_t nbytes)
Definition TTree.h:546
TObjArray fBranches
List of Branches.
Definition TTree.h:122
TDirectory * GetDirectory() const
Definition TTree.h:462
bool fCacheDoAutoInit
! true if cache auto creation or resize check is needed
Definition TTree.h:139
TTreeCache * GetReadCache(TFile *file) const
Find and return the TTreeCache registered with the file and which may contain branches for us.
Definition TTree.cxx:6318
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:2749
virtual TEntryList * GetEntryList()
Returns the entry list assigned to this tree.
Definition TTree.cxx:5854
virtual void SetWeight(Double_t w=1, Option_t *option="")
Set tree weight.
Definition TTree.cxx:9364
void InitializeBranchLists(bool checkLeafCount)
Divides the top-level branches into two vectors: (i) branches to be processed sequentially and (ii) b...
Definition TTree.cxx:5781
virtual Int_t SetBranchAddress(const char *bname, void *add, TBranch **ptr=nullptr)
Change branch address, dealing with clone trees properly.
Definition TTree.cxx:8380
Long64_t * fClusterSize
[fNClusterRange] Number of entries in each cluster for a given range.
Definition TTree.h:104
Long64_t fFlushedBytes
Number of auto-flushed bytes.
Definition TTree.h:89
virtual void SetPerfStats(TVirtualPerfStats *perf)
Set perf stats.
Definition TTree.cxx:9319
TTreeFormula * GetVar2()
Definition TTree.h:528
std::atomic< Long64_t > fIMTTotBytes
! Total bytes for the IMT flush baskets
Definition TTree.h:160
virtual void SetCacheLearnEntries(Int_t n=10)
Interface to TTreeCache to set the number of entries for the learning phase.
Definition TTree.cxx:8855
Int_t SetBranchAddress(const char *bname, T *add, TBranch **ptr=nullptr)
Definition TTree.h:597
void SetTargetMemoryRatio(Float_t ratio)
Definition TTree.h:646
TEntryList * fEntryList
! Pointer to event selection list (if one)
Definition TTree.h:126
virtual TVirtualIndex * GetTreeIndex() const
Definition TTree.h:518
Int_t Debug() const
Definition TTree.h:429
TList * fExternalFriends
! List of TFriendsElement pointing to us and need to be notified of LoadTree. Content not owned.
Definition TTree.h:131
virtual Long64_t Merge(TCollection *list, Option_t *option="")
Merge the trees in the TList into this tree.
Definition TTree.cxx:6890
virtual void SetMaxVirtualSize(Long64_t size=0)
Definition TTree.h:625
virtual void DropBaskets()
Remove some baskets from memory.
Definition TTree.cxx:4518
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:8337
virtual bool GetClusterPrefetch() const
Definition TTree.h:457
TBranch * Branch(const char *name, const char *classname, T **addobj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition TTree.h:400
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:520
virtual void SetParallelUnzip(bool opt=true, Float_t RelSize=-1)
Enable or disable parallel unzipping of Tree buffers.
Definition TTree.cxx:9281
virtual void SetDirectory(TDirectory *dir)
Change the tree's directory.
Definition TTree.cxx:8956
void SortBranchesByTime()
Sorts top-level branches by the last average task time recorded per branch.
Definition TTree.cxx:5834
void Delete(Option_t *option="") override
Delete this tree from memory or/and disk.
Definition TTree.cxx:3747
virtual Int_t * GetIndex()
Definition TTree.h:481
virtual TBranchRef * GetBranchRef() const
Definition TTree.h:450
virtual Double_t * GetV3()
Definition TTree.h:540
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:7450
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:1635
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:9059
TBranch * Branch(const char *name, int address, const char *leaflist, Int_t bufsize=32000)
Definition TTree.h:389
void MoveReadCache(TFile *src, TDirectory *dir)
Move a cache from a file to the current file in dir.
Definition TTree.cxx:6983
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:8034
TBranch * Branch(const char *name, std::array< T, N > *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition TTree.h:405
virtual Long64_t GetEntries() const
Definition TTree.h:463
virtual void SetEstimate(Long64_t nentries=1000000)
Set number of entries to estimate variable limits.
Definition TTree.cxx:9100
Int_t fTimerInterval
Timer interval in milliseconds.
Definition TTree.h:91
Int_t fDebug
! Debug level
Definition TTree.h:111
Int_t SetCacheSizeAux(bool autocache=true, Long64_t cacheSize=0)
Set the size of the file cache and create it if possible.
Definition TTree.cxx:8702
virtual Long64_t AutoSave(Option_t *option="")
AutoSave tree header every fAutoSave bytes.
Definition TTree.cxx:1500
virtual Long64_t GetEntryNumber(Long64_t entry) const
Return entry number corresponding to entry.
Definition TTree.cxx:5865
virtual TTree * CloneTree(Long64_t nentries=-1, Option_t *option="")
Create a clone of this tree and copy nentries.
Definition TTree.cxx:3139
virtual bool GetImplicitMT()
Definition TTree.h:480
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:6195
virtual Long64_t GetZipBytes() const
Definition TTree.h:545
TObjArray fLeaves
Direct pointers to individual branch leaves.
Definition TTree.h:123
virtual void Reset(Option_t *option="")
Reset baskets, buffers and entries count in all branches and leaves.
Definition TTree.cxx:8003
virtual void SetImplicitMT(bool enabled)
Definition TTree.h:621
virtual void KeepCircular()
Keep a maximum of fMaxEntries in memory.
Definition TTree.cxx:6415
virtual void SetDefaultEntryOffsetLen(Int_t newdefault, bool updateExisting=false)
Update the default value for the branch's fEntryOffsetLen.
Definition TTree.cxx:8930
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:3819
Long64_t fMaxVirtualSize
Maximum total size of buffers kept in memory.
Definition TTree.h:99
virtual Long64_t GetTotBytes() const
Definition TTree.h:516
virtual Int_t MakeSelector(const char *selector=nullptr, Option_t *option="")
Generate skeleton selector class for this tree.
Definition TTree.cxx:6822
virtual void SetObject(const char *name, const char *title)
Change the name and title of this tree.
Definition TTree.cxx:9250
TVirtualPerfStats * fPerfStats
! pointer to the current perf stats object
Definition TTree.h:132
Double_t fWeight
Tree weight (see TTree::SetWeight)
Definition TTree.h:90
virtual void SetUpdate(Int_t freq=0)
Definition TTree.h:650
std::vector< TBranch * > fSeqBranches
! Branches to be processed sequentially when IMT is on
Definition TTree.h:145
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:353
std::atomic< UInt_t > fAllocationCount
indicates basket should be resized to exact memory usage, but causes significant
Definition TTree.h:152
virtual Int_t GetEntryWithIndex(Int_t major, Int_t minor=0)
Read entry corresponding to major and minor number.
Definition TTree.cxx:5927
static TTree * MergeTrees(TList *list, Option_t *option="")
Static function merging the trees in the TList into a new tree.
Definition TTree.cxx:6851
bool MemoryFull(Int_t nbytes)
Check if adding nbytes to memory we are still below MaxVirtualsize.
Definition TTree.cxx:6837
TTreeFormula * GetVar4()
Definition TTree.h:532
virtual Long64_t GetReadEntry() const
Definition TTree.h:509
virtual TObjArray * GetListOfBranches()
Definition TTree.h:488
Long64_t fZipBytes
Total number of bytes in all branches after compression.
Definition TTree.h:87
virtual TTree * GetTree() const
Definition TTree.h:517
TBuffer * fTransientBuffer
! Pointer to the current transient buffer.
Definition TTree.h:138
virtual Double_t * GetVal(Int_t i)
Definition TTree.h:534
virtual void SetEntryList(TEntryList *list, Option_t *opt="")
Set an EntryList.
Definition TTree.cxx:9036
bool Notify() override
Function called when loading a new class library.
Definition TTree.cxx:7033
virtual void AddZipBytes(Int_t zip)
Definition TTree.h:332
virtual Long64_t LoadTree(Long64_t entry)
Set current entry.
Definition TTree.cxx:6473
virtual Long64_t ReadFile(const char *filename, const char *branchDescriptor="", char delimiter=' ')
Create or simply read branches from filename.
Definition TTree.cxx:7564
virtual const char * GetAlias(const char *aliasName) const
Returns the expanded value of the alias. Search in the friends if any.
Definition TTree.cxx:5226
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:9120
virtual TBasket * CreateBasket(TBranch *)
Create a basket for this tree and given branch.
Definition TTree.cxx:3731
TList * fUserInfo
pointer to a list of user objects associated to this Tree
Definition TTree.h:133
virtual Double_t GetMinimum(const char *columname)
Return minimum of column with name columname.
Definition TTree.cxx:6275
virtual void RemoveFriend(TTree *)
Remove a friend from the list of friends.
Definition TTree.cxx:7977
virtual Long64_t GetEntriesFast() const
Definition TTree.h:465
void Browse(TBrowser *) override
Browse content of the TTree.
Definition TTree.cxx:2609
virtual Double_t * GetV1()
Definition TTree.h:536
virtual TList * GetUserInfo()
Return a pointer to the list containing user objects associated to this tree.
Definition TTree.cxx:6356
TEventList * GetEventList() const
Definition TTree.h:473
Long64_t fChainOffset
! Offset of 1st entry of this Tree in a TChain
Definition TTree.h:106
EStatusBits
Definition TTree.h:250
@ kOnlyFlushAtCluster
If set, the branch's buffers will grow until an event cluster boundary is hit, guaranteeing a basket ...
Definition TTree.h:256
@ kEntriesReshuffled
If set, signals that this TTree is the output of the processing of another TTree, and the entries are...
Definition TTree.h:261
@ kCircular
Definition TTree.h:252
@ kForceRead
Definition TTree.h:251
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:5512
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:7513
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:2404
virtual void SetBasketSize(const char *bname, Int_t buffsize=16000)
Set a branch's basket size.
Definition TTree.cxx:8353
static void SetBranchStyle(Int_t style=1)
Set the current branch style.
Definition TTree.cxx:8660
virtual Long64_t GetReadEvent() const
Definition TTree.h:510
~TTree() override
Destructor.
Definition TTree.cxx:920
bool IsFolder() const override
Returns kTRUE in case object contains browsable objects (like containers or lists of other objects).
Definition TTree.h:547
void ImportClusterRanges(TTree *fromtree)
Appends the cluster range information stored in 'fromtree' to this tree, including the value of fAuto...
Definition TTree.cxx:6372
Long64_t fEstimate
Number of entries to estimate histogram limits.
Definition TTree.h:102
TH1 * GetHistogram()
Definition TTree.h:479
UInt_t GetAllocationCount() const
Definition TTree.h:443
Int_t FlushBasketsImpl() const
Internal implementation of the FlushBaskets algorithm.
Definition TTree.cxx:5146
Long64_t GetDebugMin() const
Definition TTree.h:461
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:6557
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:9743
TVirtualIndex * fTreeIndex
Pointer to the tree Index (if any)
Definition TTree.h:129
void UseCurrentStyle() override
Replace current attributes by current style.
Definition TTree.cxx:9704
virtual Int_t GetTreeNumber() const
Definition TTree.h:519
Int_t GetEvent(Long64_t entry, Int_t getall=0)
Definition TTree.h:469
TObject * fNotify
Object to be notified when loading a Tree.
Definition TTree.h:120
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:1554
virtual TList * GetListOfClones()
Definition TTree.h:487
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:135
std::atomic< Long64_t > fTotalBuffers
! Total number of bytes in branch buffers
Definition TTree.h:108
ELockStatusBits
Definition TTree.h:211
@ kFindBranch
Definition TTree.h:212
@ kFindLeaf
Definition TTree.h:213
@ kGetEntryWithIndex
Definition TTree.h:217
@ kPrint
Definition TTree.h:222
@ kGetFriend
Definition TTree.h:218
@ kGetBranch
Definition TTree.h:215
@ kSetBranchStatus
Definition TTree.h:224
@ kLoadTree
Definition TTree.h:221
@ kGetEntry
Definition TTree.h:216
@ kGetLeaf
Definition TTree.h:220
@ kRemoveFriend
Definition TTree.h:223
@ kGetFriendAlias
Definition TTree.h:219
@ kGetAlias
Definition TTree.h:214
virtual Double_t * GetV4()
Definition TTree.h:542
TBranch * Branch(const char *name, const char *classname, T *obj, Int_t bufsize=32000, Int_t splitlevel=99)
Definition TTree.h:395
TTreeFormula * GetVar3()
Definition TTree.h:530
virtual void SetTreeIndex(TVirtualIndex *index)
The current TreeIndex is replaced by the new index.
Definition TTree.cxx:9336
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:7057
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:7498
virtual Int_t SetCacheEntryRange(Long64_t first, Long64_t last)
interface to TTreeCache to set the cache entry range
Definition TTree.cxx:8821
static Long64_t GetMaxTreeSize()
Static function which returns the tree file size limit in bytes.
Definition TTree.cxx:6265
bool fCacheDoClusterPrefetch
! true if cache is prefetching whole clusters
Definition TTree.h:140
Int_t SetBranchAddressImp(TBranch *branch, void *addr, TBranch **ptr)
Change branch address, dealing with clone trees properly.
Definition TTree.cxx:8440
virtual bool SetAlias(const char *aliasName, const char *aliasFormula)
Set a tree variable alias.
Definition TTree.cxx:8136
virtual Int_t GetTimerInterval() const
Definition TTree.h:514
virtual void CopyAddresses(TTree *, bool undo=false)
Set branch addresses of passed tree equal to ours.
Definition TTree.cxx:3299
virtual void SetScanField(Int_t n=50)
Definition TTree.h:645
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:588
TBranch * Branch(const char *name, char *address, const char *leaflist, Int_t bufsize=32000)
Definition TTree.h:379
virtual void DropBuffers(Int_t nbytes)
Drop branch buffers to accommodate nbytes below MaxVirtualsize.
Definition TTree.cxx:4531
virtual TList * GetListOfFriends() const
Definition TTree.h:490
virtual void Refresh()
Refresh contents of this tree and its branches from the current status on disk.
Definition TTree.cxx:7916
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:8191
static Long64_t fgMaxTreeSize
Maximum size of a file containing a Tree.
Definition TTree.h:155
Long64_t fReadEntry
! Number of the entry being processed
Definition TTree.h:107
TArrayD fIndexValues
Sorted index values.
Definition TTree.h:127
void MarkEventCluster()
Mark the previous event as being at the end of the event cluster.
Definition TTree.cxx:8253
virtual Int_t GetNbranches()
Definition TTree.h:502
UInt_t fNEntriesSinceSorting
! Number of entries processed since the last re-sorting of branches
Definition TTree.h:143
virtual void SetClusterPrefetch(bool enabled)
Definition TTree.h:611
virtual void SetFileNumber(Int_t number=0)
Set fFileNumber to number.
Definition TTree.cxx:9143
virtual TLeaf * FindLeaf(const char *name)
Find leaf..
Definition TTree.cxx:4916
virtual void StartViewer()
Start the TTreeViewer on this tree.
Definition TTree.cxx:9449
Int_t GetMakeClass() const
Definition TTree.h:495
virtual Int_t MakeCode(const char *filename=nullptr)
Generate a skeleton function for this tree.
Definition TTree.cxx:6640
bool fIMTFlush
! True if we are doing a multithreaded flush.
Definition TTree.h:159
TDirectory * fDirectory
! Pointer to directory holding this tree
Definition TTree.h:121
ESetBranchAddressStatus
Definition TTree.h:232
@ kNeedEnableDecomposedObj
Definition TTree.h:244
@ kClassMismatch
Definition TTree.h:237
@ kNeedDisableDecomposedObj
Definition TTree.h:245
@ kVoidPtr
Definition TTree.h:242
@ kNoCheck
Definition TTree.h:243
@ kMatchConversionCollection
Definition TTree.h:240
@ kMissingCompiledCollectionProxy
Definition TTree.h:235
@ kMismatch
Definition TTree.h:236
@ kMatchConversion
Definition TTree.h:239
@ kInternalError
Definition TTree.h:234
@ kDecomposedObjMask
Definition TTree.h:246
@ kMatch
Definition TTree.h:238
@ kMissingBranch
Definition TTree.h:233
@ kMakeClass
Definition TTree.h:241
static Int_t fgBranchStyle
Old/New branch style.
Definition TTree.h:154
virtual void ResetBranchAddresses()
Tell all of our branches to drop their current objects and allocate new ones.
Definition TTree.cxx:8075
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:9195
virtual Long64_t GetCacheSize() const
Definition TTree.h:453
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:7957
TArrayI fIndex
Index of sorted values.
Definition TTree.h:128
virtual Int_t GetPacketSize() const
Definition TTree.h:505
virtual Int_t SetCacheSize(Long64_t cachesize=-1)
Set maximum size of the file cache .
Definition TTree.cxx:8676
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
virtual Int_t CheckBranchAddressType(TBranch *branch, TClass *ptrClass, EDataType datatype, bool ptr)
Check whether or not the address described by the last 3 parameters matches the content of the branch...
Definition TTree.cxx:2867
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:6074
virtual Int_t MakeClass(const char *classname=nullptr, Option_t *option="")
Generate a skeleton analysis class for this tree.
Definition TTree.cxx:6607
virtual Int_t GetFileNumber() const
Definition TTree.h:476
virtual const char * GetFriendAlias(TTree *) const
If the 'tree' is a friend, this method returns its alias name.
Definition TTree.cxx:6032
virtual void SetChainOffset(Long64_t offset=0)
Definition TTree.h:609
virtual void RemoveExternalFriend(TFriendElement *)
Removes external friend.
Definition TTree.cxx:7968
virtual Double_t * GetW()
Definition TTree.h:543
TTreeFormula * GetVar1()
Definition TTree.h:526
virtual Double_t * GetV2()
Definition TTree.h:538
Int_t fPacketSize
! Number of entries in one packet for parallel root
Definition TTree.h:109
virtual Int_t GetUpdate() const
Definition TTree.h:521
virtual Long64_t GetChainOffset() const
Definition TTree.h:456
virtual TBranch * BranchImpArr(const char *branchname, EDataType datatype, std::size_t N, void *addobj, Int_t bufsize, Int_t splitlevel)
Definition TTree.cxx:1731
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:8094
virtual TBranch * BronchExec(const char *name, const char *classname, void *addobj, bool isptrptr, Int_t bufsize, Int_t splitlevel)
Helper function implementing TTree::Bronch and TTree::Branch(const char *name, T &obj);.
Definition TTree.cxx:2412
virtual Long64_t GetMaxEntryLoop() const
Definition TTree.h:497
virtual void AddTotBytes(Int_t tot)
Definition TTree.h:331
virtual Long64_t CopyEntries(TTree *tree, Long64_t nentries=-1, Option_t *option="", bool needCopyAddresses=false)
Copy nentries from given tree to this tree.
Definition TTree.cxx:3534
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:6451
static constexpr Long64_t kMaxEntries
Definition TTree.h:229
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:7200
virtual Long64_t GetAutoFlush() const
Definition TTree.h:447
virtual Long64_t GetMaxVirtualSize() const
Definition TTree.h:500
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
th1 Draw()
auto * tt
Definition textangle.C:16