Logo ROOT  
Reference Guide
TBranch.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_TBranch
13#define ROOT_TBranch
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TBranch //
19// //
20// A TTree object is a list of TBranchs. //
21// A TBranch describes the branch data structure and supports : //
22// the list of TBaskets (branch buffers) associated to this branch. //
23// the list of TLeaves (branch description) //
24//////////////////////////////////////////////////////////////////////////
25
26#include <memory>
27
28#include "Compression.h"
29#include "TAttFill.h"
30#include "TBranchCacheInfo.h"
31#include "TDataType.h"
32#include "TNamed.h"
33#include "TObjArray.h"
34#include "ROOT/TIOFeatures.hxx"
35
36class TTree;
37class TBasket;
38class TBranchElement;
39class TLeaf;
40class TBrowser;
41class TDirectory;
42class TFile;
43class TClonesArray;
44class TTreeCloner;
45class TTreeCache;
46
47namespace ROOT {
48namespace Experimental {
49namespace Internal {
50class TBulkBranchRead;
51}
52}
53namespace Internal {
54class TBranchIMTHelper; ///< A helper class for managing IMT work during TTree:Fill operations.
55}
56}
57
58const Int_t kDoNotProcess = BIT(10); // Active bit for branches
59const Int_t kIsClone = BIT(11); // to indicate a TBranchClones
60const Int_t kBranchObject = BIT(12); // branch is a TObject*
61const Int_t kBranchAny = BIT(17); // branch is an object*
63
64namespace ROOT {
65namespace Experimental {
66namespace Internal {
67
68///\class TBulkBranchRead
69/// Helper class for reading many branch entries at once to optimize throughput.
71
72 friend class ::TBranch;
73
74public:
75 Int_t GetBulkEntries(Long64_t evt, TBuffer &user_buf);
77 Int_t GetEntriesSerialized(Long64_t evt, TBuffer &user_buf, TBuffer *count_buf);
79
80private:
82 : fParent(parent)
83 {}
84
86};
87}
88}
89}
90
91class TBranch : public TNamed , public TAttFill {
93
94protected:
95 friend class TTreeCache;
96 friend class TTreeCloner;
97 friend class TTree;
98 friend class TBranchElement;
100
101 // TBranch status bits
103 kDoNotProcess = ::kDoNotProcess, // Active bit for branches
104 kIsClone = ::kIsClone, // to indicate a TBranchClones
105 kBranchObject = ::kBranchObject, // branch is a TObject*
106 kBranchAny = ::kBranchAny, // branch is an object*
107 // kMapObject = kBranchObject | kBranchAny;
109
110 kDoNotUseBufferMap = BIT(22) // If set, at least one of the entry in the branch will use the buffer's map of classname and objects.
111 };
112
114 static Int_t fgCount; ///<! branch counter
115 Int_t fCompress; ///< Compression level and algorithm
116 Int_t fBasketSize; ///< Initial Size of Basket Buffer
117 Int_t fEntryOffsetLen; ///< Initial Length of fEntryOffset table in the basket buffers
118 Int_t fWriteBasket; ///< Last basket number written
119 Long64_t fEntryNumber; ///< Current entry number (last one filled in this branch)
120 TBasket *fExtraBasket; ///<! Allocated basket not currently holding any data.
121 TIOFeatures fIOFeatures; ///< IO features for newly-created baskets.
122 Int_t fOffset; ///< Offset of this branch
123 Int_t fMaxBaskets; ///< Maximum number of Baskets so far
124 Int_t fNBaskets; ///<! Number of baskets in memory
125 Int_t fSplitLevel; ///< Branch split level
126 Int_t fNleaves; ///<! Number of leaves
127 Int_t fReadBasket; ///<! Current basket number when reading
128 Long64_t fReadEntry; ///<! Current entry number when reading
129 Long64_t fFirstBasketEntry; ///<! First entry in the current basket.
130 Long64_t fNextBasketEntry; ///<! Next entry that will requires us to go to the next basket
131 TBasket *fCurrentBasket; ///<! Pointer to the current basket.
132 Long64_t fEntries; ///< Number of entries
133 Long64_t fFirstEntry; ///< Number of the first entry in this branch
134 Long64_t fTotBytes; ///< Total number of bytes in all leaves before compression
135 Long64_t fZipBytes; ///< Total number of bytes in all leaves after compression
136 TObjArray fBranches; ///< -> List of Branches of this branch
137 TObjArray fLeaves; ///< -> List of leaves of this branch
138 TObjArray fBaskets; ///< -> List of baskets of this branch
139 Int_t *fBasketBytes; ///<[fMaxBaskets] Length of baskets on file
140 Long64_t *fBasketEntry; ///<[fMaxBaskets] Table of first entry in each basket
141 Long64_t *fBasketSeek; ///<[fMaxBaskets] Addresses of baskets on file
142 TTree *fTree; ///<! Pointer to Tree header
143 TBranch *fMother; ///<! Pointer to top-level parent branch in the tree.
144 TBranch *fParent; ///<! Pointer to parent branch.
145 char *fAddress; ///<! Address of 1st leaf (variable or object)
146 TDirectory *fDirectory; ///<! Pointer to directory where this branch buffers are stored
147 TString fFileName; ///< Name of file where buffers are stored ("" if in same file as Tree header)
148 TBuffer *fEntryBuffer; ///<! Buffer used to directly pass the content without streaming
149 TBuffer *fTransientBuffer; ///<! Pointer to the current transient buffer.
150 TList *fBrowsables; ///<! List of TVirtualBranchBrowsables used for Browse()
151 BulkObj fBulk; ///<! Helper for performing bulk IO
152
153 Bool_t fSkipZip; ///<! After being read, the buffer will not be unzipped.
154
156 CacheInfo_t fCacheInfo; ///<! Hold info about which basket are in the cache and if they have been retrieved from the cache.
157
159 ReadLeaves_t fReadLeaves; ///<! Pointer to the ReadLeaves implementation to use.
161 FillLeaves_t fFillLeaves; ///<! Pointer to the FillLeaves implementation to use.
162 void ReadLeavesImpl(TBuffer &b);
166 void FillLeavesImpl(TBuffer &b);
167
168 void SetSkipZip(Bool_t skip = kTRUE) { fSkipZip = skip; }
169 void Init(const char *name, const char *leaflist, Int_t compress);
170
171 TBasket *GetFreshBasket(Int_t basketnumber, TBuffer *user_buffer);
173 Int_t WriteBasket(TBasket* basket, Int_t where) { return WriteBasketImpl(basket, where, nullptr); }
174
175 TString GetRealFileName() const;
176
177 virtual void SetAddressImpl(void *addr, Bool_t /* implied */) { SetAddress(addr); }
178
179private:
180 Int_t GetBasketAndFirst(TBasket*& basket, Long64_t& first, TBuffer* user_buffer);
181 TBasket *GetBasketImpl(Int_t basket, TBuffer* user_buffer);
183 Int_t GetEntriesSerialized(Long64_t N, TBuffer& user_buf) {return GetEntriesSerialized(N, user_buf, nullptr);}
185 Int_t FillEntryBuffer(TBasket* basket,TBuffer* buf, Int_t& lnew);
187 TBranch(const TBranch&) = delete; // not implemented
188 TBranch& operator=(const TBranch&) = delete; // not implemented
189
190public:
191 TBranch();
192 TBranch(TTree *tree, const char *name, void *address, const char *leaflist, Int_t basketsize=32000, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
193 TBranch(TBranch *parent, const char *name, void *address, const char *leaflist, Int_t basketsize=32000, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
194 virtual ~TBranch();
195
196 virtual void AddBasket(TBasket &b, Bool_t ondisk, Long64_t startEntry);
197 virtual void AddLastBasket(Long64_t startEntry);
198 Int_t BackFill();
199 virtual void Browse(TBrowser *b);
200 virtual void DeleteBaskets(Option_t* option="");
201 virtual void DropBaskets(Option_t *option = "");
202 void ExpandBasketArrays();
203 Int_t Fill() { return FillImpl(nullptr); }
205 virtual TBranch *FindBranch(const char *name);
206 virtual TLeaf *FindLeaf(const char *name);
209
210 virtual char *GetAddress() const {return fAddress;}
211 TBasket *GetBasket(Int_t basket) {return GetBasketImpl(basket, nullptr);}
214 virtual Long64_t GetBasketSeek(Int_t basket) const;
215 virtual Int_t GetBasketSize() const {return fBasketSize;}
217 virtual TList *GetBrowsables();
218 virtual const char* GetClassName() const;
223 virtual Int_t GetEntry(Long64_t entry=0, Int_t getall = 0);
224 virtual Int_t GetEntryExport(Long64_t entry, Int_t getall, TClonesArray *list, Int_t n);
226 Int_t GetEvent(Long64_t entry=0) {return GetEntry(entry);}
227 virtual TString GetFullName() const;
228 const char *GetIconName() const;
229 virtual Int_t GetExpectedType(TClass *&clptr,EDataType &type);
230 virtual TLeaf *GetLeaf(const char *name) const;
231 virtual TFile *GetFile(Int_t mode=0);
232 const char *GetFileName() const {return fFileName.Data();}
233 Int_t GetOffset() const {return fOffset;}
237 Long64_t GetTotalSize(Option_t *option="") const;
238 Long64_t GetTotBytes(Option_t *option="") const;
239 Long64_t GetZipBytes(Option_t *option="") const;
247 Int_t GetNleaves() const {return fNleaves;}
249 Long64_t GetEntries() const {return fEntries;}
250 TTree *GetTree() const {return fTree;}
251 virtual Int_t GetRow(Int_t row);
252 virtual Bool_t GetMakeClass() const;
253 TBranch *GetMother() const;
254 TBranch *GetSubBranch(const TBranch *br) const;
256 Bool_t IsAutoDelete() const;
257 Bool_t IsFolder() const;
258 virtual void KeepCircular(Long64_t maxEntries);
259 virtual Int_t LoadBaskets();
260 virtual void Print(Option_t *option="") const;
261 void PrintCacheInfo() const;
262 virtual void ReadBasket(TBuffer &b);
263 virtual void Refresh(TBranch *b);
264 virtual void Reset(Option_t *option="");
265 virtual void ResetAfterMerge(TFileMergeInfo *);
266 virtual void ResetAddress();
267 virtual void ResetReadEntry() {fReadEntry = -1;}
268 virtual void SetAddress(void *add);
269 virtual void SetObject(void *objadd);
270 virtual void SetAutoDelete(Bool_t autodel=kTRUE);
271 virtual void SetBasketSize(Int_t buffsize);
272 virtual void SetBufferAddress(TBuffer *entryBuffer);
276 virtual void SetEntries(Long64_t entries);
277 virtual void SetEntryOffsetLen(Int_t len, Bool_t updateSubBranches = kFALSE);
278 virtual void SetFirstEntry( Long64_t entry );
279 virtual void SetFile(TFile *file=0);
280 virtual void SetFile(const char *filename);
281 void SetIOFeatures(TIOFeatures &features) {fIOFeatures = features;}
282 virtual Bool_t SetMakeClass(Bool_t decomposeObj = kTRUE);
283 virtual void SetOffset(Int_t offset=0) {fOffset=offset;}
284 virtual void SetStatus(Bool_t status=1);
285 virtual void SetTree(TTree *tree) { fTree = tree;}
286 virtual void SetupAddresses();
287 Bool_t SupportsBulkRead() const;
288 virtual void UpdateAddress() {;}
289 virtual void UpdateFile();
290
291 static void ResetCount();
292
293 ClassDef(TBranch, 13); // Branch descriptor
294};
295
296//______________________________________________________________________________
298{
299 return (fCompress < 0) ? -1 : fCompress / 100;
300}
301
302//______________________________________________________________________________
304{
305 return (fCompress < 0) ? -1 : fCompress % 100;
306}
307
308//______________________________________________________________________________
310{
311 return (fCompress < 0) ? -1 : fCompress;
312}
313
314namespace ROOT {
315namespace Experimental {
316namespace Internal {
317
318inline Int_t TBulkBranchRead::GetBulkEntries(Long64_t evt, TBuffer& user_buf) { return fParent.GetBulkEntries(evt, user_buf); }
320inline Int_t TBulkBranchRead::GetEntriesSerialized(Long64_t evt, TBuffer& user_buf, TBuffer* count_buf) { return fParent.GetEntriesSerialized(evt, user_buf, count_buf); }
322
323} // Internal
324} // Experimental
325} // ROOT
326
327#endif
#define b(i)
Definition: RSha256.hxx:100
int Int_t
Definition: RtypesCore.h:41
unsigned int UInt_t
Definition: RtypesCore.h:42
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
long long Long64_t
Definition: RtypesCore.h:69
const Bool_t kTRUE
Definition: RtypesCore.h:87
const char Option_t
Definition: RtypesCore.h:62
#define ClassDef(name, id)
Definition: Rtypes.h:326
#define BIT(n)
Definition: Rtypes.h:83
const Int_t kBranchAny
Definition: TBranch.h:61
const Int_t kMapObject
Definition: TBranch.h:62
const Int_t kBranchObject
Definition: TBranch.h:60
const Int_t kDoNotProcess
Definition: TBranch.h:58
const Int_t kIsClone
Definition: TBranch.h:59
EDataType
Definition: TDataType.h:28
#define N
char name[80]
Definition: TGX11.cxx:109
int type
Definition: TGX11.cxx:120
typedef void((*Func_t)())
Helper class for reading many branch entries at once to optimize throughput.
Definition: TBranch.h:70
Int_t GetEntriesSerialized(Long64_t evt, TBuffer &user_buf)
Definition: TBranch.h:319
Int_t GetBulkEntries(Long64_t evt, TBuffer &user_buf)
Definition: TBranch.h:318
TIOFeatures provides the end-user with the ability to change the IO behavior of data written via a TT...
Definition: TIOFeatures.hxx:62
Fill Area Attributes class.
Definition: TAttFill.h:19
Manages buffers for branches of a Tree.
Definition: TBasket.h:34
A Branch for the case of an object.
A TTree is a list of TBranches.
Definition: TBranch.h:91
virtual TLeaf * GetLeaf(const char *name) const
Return pointer to the 1st Leaf named name in thisBranch.
Definition: TBranch.cxx:1907
void SetSkipZip(Bool_t skip=kTRUE)
Definition: TBranch.h:168
virtual void SetupAddresses()
If the branch address is not set, we set all addresses starting with the top level parent branch.
Definition: TBranch.cxx:3127
virtual void ResetAddress()
Reset the address of the branch.
Definition: TBranch.cxx:2488
virtual void SetAutoDelete(Bool_t autodel=kTRUE)
Set the automatic delete bit.
Definition: TBranch.cxx:2553
TString fFileName
Name of file where buffers are stored ("" if in same file as Tree header)
Definition: TBranch.h:147
virtual const char * GetClassName() const
Return the name of the user class whose content is stored in this branch, if any.
Definition: TBranch.cxx:1300
const char * GetIconName() const
Return icon name depending on type of branch.
Definition: TBranch.cxx:1308
TBasket * GetFreshBasket(Int_t basketnumber, TBuffer *user_buffer)
Return a fresh basket by either resusing an existing basket that needs to be drop (according to TTree...
Definition: TBranch.cxx:1767
TBasket * GetBasketImpl(Int_t basket, TBuffer *user_buffer)
Return pointer to basket basketnumber in this Branch.
Definition: TBranch.cxx:1202
Int_t fEntryOffsetLen
Initial Length of fEntryOffset table in the basket buffers.
Definition: TBranch.h:117
virtual void DeleteBaskets(Option_t *option="")
Loop on all branch baskets.
Definition: TBranch.cxx:703
virtual Long64_t GetBasketSeek(Int_t basket) const
Return address of basket in the file.
Definition: TBranch.cxx:1278
TBranch()
Default constructor. Used for I/O by default.
Definition: TBranch.cxx:84
virtual char * GetAddress() const
Definition: TBranch.h:210
void SetCompressionSettings(Int_t settings=ROOT::RCompressionSetting::EDefaults::kUseCompiledDefault)
Set compression settings.
Definition: TBranch.cxx:2642
Int_t BackFill()
Loop on all leaves of this branch to back fill Basket buffer.
Definition: TBranch.cxx:657
Int_t GetCompressionSettings() const
Definition: TBranch.h:309
Int_t GetCompressionLevel() const
Definition: TBranch.h:303
Int_t GetCompressionAlgorithm() const
Definition: TBranch.h:297
Int_t fMaxBaskets
Maximum number of Baskets so far.
Definition: TBranch.h:123
Long64_t fTotBytes
Total number of bytes in all leaves before compression.
Definition: TBranch.h:134
TBuffer * fTransientBuffer
! Pointer to the current transient buffer.
Definition: TBranch.h:149
virtual void ReadBasket(TBuffer &b)
Loop on all leaves of this branch to read Basket buffer.
Definition: TBranch.cxx:2290
TTree * GetTree() const
Definition: TBranch.h:250
FillLeaves_t fFillLeaves
! Pointer to the FillLeaves implementation to use.
Definition: TBranch.h:161
virtual TString GetFullName() const
Return the 'full' name of the branch.
Definition: TBranch.cxx:1891
Int_t GetWriteBasket() const
Definition: TBranch.h:236
void(TBranch::* ReadLeaves_t)(TBuffer &b)
Definition: TBranch.h:158
@ kAutoDelete
Definition: TBranch.h:108
@ kDoNotUseBufferMap
Definition: TBranch.h:110
@ kBranchAny
Definition: TBranch.h:106
@ kIsClone
Definition: TBranch.h:104
@ kBranchObject
Definition: TBranch.h:105
@ kDoNotProcess
Definition: TBranch.h:103
TObjArray fLeaves
-> List of leaves of this branch
Definition: TBranch.h:137
Int_t GetBasketAndFirst(TBasket *&basket, Long64_t &first, TBuffer *user_buffer)
A helper function to locate the correct basket - and its first entry.
Definition: TBranch.cxx:1325
char * fAddress
! Address of 1st leaf (variable or object)
Definition: TBranch.h:145
virtual void DropBaskets(Option_t *option="")
Loop on all branch baskets.
Definition: TBranch.cxx:734
TObjArray * GetListOfBranches()
Definition: TBranch.h:244
virtual TList * GetBrowsables()
Returns (and, if 0, creates) browsable objects for this branch See TVirtualBranchBrowsable::FillListO...
Definition: TBranch.cxx:1288
TList * fBrowsables
! List of TVirtualBranchBrowsables used for Browse()
Definition: TBranch.h:150
void ReadLeavesImpl(TBuffer &b)
Loop on all leaves of this branch to read Basket buffer.
Definition: TBranch.cxx:2298
virtual void SetTree(TTree *tree)
Definition: TBranch.h:285
Int_t fOffset
Offset of this branch.
Definition: TBranch.h:122
Long64_t * fBasketEntry
[fMaxBaskets] Table of first entry in each basket
Definition: TBranch.h:140
Int_t GetEntriesSerialized(Long64_t N, TBuffer &user_buf)
Definition: TBranch.h:183
ROOT::Experimental::Internal::TBulkBranchRead & GetBulkRead()
Definition: TBranch.h:216
virtual void SetEntryOffsetLen(Int_t len, Bool_t updateSubBranches=kFALSE)
Update the default value for the branch's fEntryOffsetLen if and only if it was already non zero (and...
Definition: TBranch.cxx:2658
void ExpandBasketArrays()
Increase BasketEntry buffer of a minimum of 10 locations and a maximum of 50 per cent of current size...
Definition: TBranch.cxx:802
Int_t GetSplitLevel() const
Definition: TBranch.h:248
ROOT::TIOFeatures TIOFeatures
Definition: TBranch.h:92
void Init(const char *name, const char *leaflist, Int_t compress)
Definition: TBranch.cxx:295
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all leaves of entry and return total number of bytes read.
Definition: TBranch.cxx:1579
const char * GetFileName() const
Definition: TBranch.h:232
TIOFeatures GetIOFeatures() const
Returns the IO settings currently in use for this branch.
Definition: TBranch.cxx:2092
void FillLeavesImpl(TBuffer &b)
Loop on all leaves of this branch to fill Basket buffer.
Definition: TBranch.cxx:2333
Long64_t fReadEntry
! Current entry number when reading
Definition: TBranch.h:128
virtual void AddBasket(TBasket &b, Bool_t ondisk, Long64_t startEntry)
Add the basket to this branch.
Definition: TBranch.cxx:533
static void ResetCount()
Static function resetting fgCount.
Definition: TBranch.cxx:2511
virtual void SetAddressImpl(void *addr, Bool_t)
Definition: TBranch.h:177
TBranch * GetSubBranch(const TBranch *br) const
Find the parent branch of child.
Definition: TBranch.cxx:2000
ReadLeaves_t fReadLeaves
! Pointer to the ReadLeaves implementation to use.
Definition: TBranch.h:159
virtual void SetObject(void *objadd)
Set object this branch is pointing to.
Definition: TBranch.cxx:2773
Int_t FlushBaskets()
Flush to disk all the baskets of this branch and any of subbranches.
Definition: TBranch.cxx:1112
void ReadLeaves2Impl(TBuffer &b)
Read two leaves without the overhead of a loop.
Definition: TBranch.cxx:2324
TBasket * GetFreshCluster()
Drops the cluster two behind the current cluster and returns a fresh basket by either reusing or crea...
Definition: TBranch.cxx:1826
virtual void SetAddress(void *add)
Set address of this branch.
Definition: TBranch.cxx:2519
static Int_t fgCount
! branch counter
Definition: TBranch.h:114
void(TBranch::* FillLeaves_t)(TBuffer &b)
Definition: TBranch.h:160
Int_t GetEvent(Long64_t entry=0)
Definition: TBranch.h:226
virtual void AddLastBasket(Long64_t startEntry)
Add the start entry of the write basket (not yet created)
Definition: TBranch.cxx:599
TBasket * GetBasket(Int_t basket)
Definition: TBranch.h:211
Int_t fNBaskets
! Number of baskets in memory
Definition: TBranch.h:124
void ReadLeaves1Impl(TBuffer &b)
Read one leaf without the overhead of a loop.
Definition: TBranch.cxx:2316
Int_t GetNleaves() const
Definition: TBranch.h:247
Int_t GetBulkEntries(Long64_t, TBuffer &)
Read as many events as possible into the given buffer, using zero-copy mechanisms.
Definition: TBranch.cxx:1425
Bool_t IsFolder() const
Return kTRUE if more than one leaf or browsables, kFALSE otherwise.
Definition: TBranch.cxx:2108
virtual Int_t GetEntryExport(Long64_t entry, Int_t getall, TClonesArray *list, Int_t n)
Read all leaves of an entry and export buffers to real objects in a TClonesArray list.
Definition: TBranch.cxx:1635
Long64_t fZipBytes
Total number of bytes in all leaves after compression.
Definition: TBranch.h:135
TIOFeatures fIOFeatures
IO features for newly-created baskets.
Definition: TBranch.h:121
void SetCompressionAlgorithm(Int_t algorithm=ROOT::RCompressionSetting::EAlgorithm::kUseGlobal)
Set compression algorithm.
Definition: TBranch.cxx:2600
virtual void UpdateAddress()
Definition: TBranch.h:288
Bool_t IsAutoDelete() const
Return kTRUE if an existing object in a TBranchObject must be deleted.
Definition: TBranch.cxx:2100
Int_t GetOffset() const
Definition: TBranch.h:233
virtual TLeaf * FindLeaf(const char *name)
Find the leaf corresponding to the name 'searchname'.
Definition: TBranch.cxx:1057
BulkObj fBulk
! Helper for performing bulk IO
Definition: TBranch.h:151
Long64_t GetReadEntry() const
Definition: TBranch.h:235
CacheInfo_t fCacheInfo
! Hold info about which basket are in the cache and if they have been retrieved from the cache.
Definition: TBranch.h:156
TObjArray * GetListOfBaskets()
Definition: TBranch.h:243
virtual void SetBufferAddress(TBuffer *entryBuffer)
Set address of this branch directly from a TBuffer to avoid streaming.
Definition: TBranch.cxx:2582
Long64_t GetEntries() const
Definition: TBranch.h:249
Int_t fNleaves
! Number of leaves
Definition: TBranch.h:126
Int_t fSplitLevel
Branch split level.
Definition: TBranch.h:125
Int_t WriteBasketImpl(TBasket *basket, Int_t where, ROOT::Internal::TBranchIMTHelper *)
Write the current basket to disk and return the number of bytes written to the file.
Definition: TBranch.cxx:3036
virtual void UpdateFile()
Refresh the value of fDirectory (i.e.
Definition: TBranch.cxx:3137
Int_t GetReadBasket() const
Definition: TBranch.h:234
Int_t * fBasketBytes
[fMaxBaskets] Length of baskets on file
Definition: TBranch.h:139
virtual void Print(Option_t *option="") const
Print TBranch parameters.
Definition: TBranch.cxx:2178
Long64_t fNextBasketEntry
! Next entry that will requires us to go to the next basket
Definition: TBranch.h:130
Int_t GetMaxBaskets() const
Definition: TBranch.h:246
Int_t * GetBasketBytes() const
Definition: TBranch.h:212
TBranch & operator=(const TBranch &)=delete
virtual ~TBranch()
Destructor.
Definition: TBranch.cxx:440
Int_t FillEntryBuffer(TBasket *basket, TBuffer *buf, Int_t &lnew)
Copy the data from fEntryBuffer into the current basket.
Definition: TBranch.cxx:912
virtual TFile * GetFile(Int_t mode=0)
Return pointer to the file where branch buffers reside, returns 0 in case branch buffers reside in th...
Definition: TBranch.cxx:1726
virtual void Browse(TBrowser *b)
Browser interface.
Definition: TBranch.cxx:676
TObjArray fBranches
-> List of Branches of this branch
Definition: TBranch.h:136
virtual void KeepCircular(Long64_t maxEntries)
keep a maximum of fMaxEntries in memory
Definition: TBranch.cxx:2120
virtual void ResetAfterMerge(TFileMergeInfo *)
Reset a Branch.
Definition: TBranch.cxx:2435
void ReadLeaves0Impl(TBuffer &b)
Read zero leaves without the overhead of a loop.
Definition: TBranch.cxx:2309
virtual Bool_t GetMakeClass() const
Return whether this branch is in a mode where the object are decomposed or not (Also known as MakeCla...
Definition: TBranch.cxx:1969
virtual void ResetReadEntry()
Definition: TBranch.h:267
TString GetRealFileName() const
Get real file name.
Definition: TBranch.cxx:1920
virtual TBranch * FindBranch(const char *name)
Find the immediate sub-branch with passed name.
Definition: TBranch.cxx:1011
TBranch(const TBranch &)=delete
TDirectory * fDirectory
! Pointer to directory where this branch buffers are stored
Definition: TBranch.h:146
void PrintCacheInfo() const
Print the information we have about which basket is currently cached and whether they have been 'used...
Definition: TBranch.cxx:2282
TObjArray fBaskets
-> List of baskets of this branch
Definition: TBranch.h:138
virtual Int_t LoadBaskets()
Baskets associated to this branch are forced to be in memory.
Definition: TBranch.cxx:2146
void SetIOFeatures(TIOFeatures &features)
Definition: TBranch.h:281
Bool_t fSkipZip
! After being read, the buffer will not be unzipped.
Definition: TBranch.h:153
TBranch * fMother
! Pointer to top-level parent branch in the tree.
Definition: TBranch.h:143
Long64_t GetTotBytes(Option_t *option="") const
Return total number of bytes in the branch (excluding current buffer) if option ="*" includes all sub...
Definition: TBranch.cxx:2057
virtual Bool_t SetMakeClass(Bool_t decomposeObj=kTRUE)
Set the branch in a mode where the object are decomposed (Also known as MakeClass mode).
Definition: TBranch.cxx:2764
virtual void SetFile(TFile *file=0)
Set file where this branch writes/reads its buffers.
Definition: TBranch.cxx:2700
TBranch * fParent
! Pointer to parent branch.
Definition: TBranch.h:144
Int_t WriteBasket(TBasket *basket, Int_t where)
Definition: TBranch.h:173
virtual void SetOffset(Int_t offset=0)
Definition: TBranch.h:283
Int_t FlushOneBasket(UInt_t which)
If we have a write basket in memory and it contains some entries and has not yet been written to disk...
Definition: TBranch.cxx:1158
virtual Int_t GetExpectedType(TClass *&clptr, EDataType &type)
Fill expectedClass and expectedType with information on the data type of the object/values contained ...
Definition: TBranch.cxx:1707
virtual Int_t GetBasketSize() const
Definition: TBranch.h:215
virtual void SetFirstEntry(Long64_t entry)
set the first entry number (case of TBranchSTL)
Definition: TBranch.cxx:3112
Long64_t GetTotalSize(Option_t *option="") const
Return total number of bytes in the branch (including current buffer)
Definition: TBranch.cxx:2038
Long64_t GetZipBytes(Option_t *option="") const
Return total number of zip bytes in the branch if option ="*" includes all sub-branches of this branc...
Definition: TBranch.cxx:2075
virtual void SetBasketSize(Int_t buffsize)
Set the basket size The function makes sure that the basket size is greater than fEntryOffsetlen.
Definition: TBranch.cxx:2566
virtual void Refresh(TBranch *b)
Refresh this branch using new information in b This function is called by TTree::Refresh.
Definition: TBranch.cxx:2345
Int_t fWriteBasket
Last basket number written.
Definition: TBranch.h:118
Long64_t * fBasketSeek
[fMaxBaskets] Addresses of baskets on file
Definition: TBranch.h:141
Long64_t GetEntryNumber() const
Definition: TBranch.h:240
virtual void SetStatus(Bool_t status=1)
Set branch status to Process or DoNotProcess.
Definition: TBranch.cxx:2784
TObjArray * GetListOfLeaves()
Definition: TBranch.h:245
virtual void SetEntries(Long64_t entries)
Set the number of entries in this branch.
Definition: TBranch.cxx:2675
Int_t fReadBasket
! Current basket number when reading
Definition: TBranch.h:127
TDirectory * GetDirectory() const
Definition: TBranch.h:222
Long64_t fFirstEntry
Number of the first entry in this branch.
Definition: TBranch.h:133
TBasket * fExtraBasket
! Allocated basket not currently holding any data.
Definition: TBranch.h:120
virtual Int_t GetRow(Int_t row)
Return all elements of one row unpacked in internal array fValues [Actually just returns 1 (?...
Definition: TBranch.cxx:1960
Long64_t GetFirstEntry() const
Definition: TBranch.h:241
Int_t fBasketSize
Initial Size of Basket Buffer.
Definition: TBranch.h:116
Int_t Fill()
Definition: TBranch.h:203
virtual void Reset(Option_t *option="")
Reset a Branch.
Definition: TBranch.cxx:2394
Long64_t fEntryNumber
Current entry number (last one filled in this branch)
Definition: TBranch.h:119
TBranch * GetMother() const
Get our top-level parent branch in the tree.
Definition: TBranch.cxx:1979
Int_t fCompress
Compression level and algorithm.
Definition: TBranch.h:115
TBuffer * GetTransientBuffer(Int_t size)
Returns the transient buffer currently used by this TBranch for reading/writing baskets.
Definition: TBranch.cxx:511
virtual Int_t FillImpl(ROOT::Internal::TBranchIMTHelper *)
Loop on all leaves of this branch to fill Basket buffer.
Definition: TBranch.cxx:833
TBuffer * fEntryBuffer
! Buffer used to directly pass the content without streaming
Definition: TBranch.h:148
TBasket * fCurrentBasket
! Pointer to the current basket.
Definition: TBranch.h:131
Long64_t fFirstBasketEntry
! First entry in the current basket.
Definition: TBranch.h:129
void SetCompressionLevel(Int_t level=ROOT::RCompressionSetting::ELevel::kUseMin)
Set compression level.
Definition: TBranch.cxx:2620
Long64_t * GetBasketEntry() const
Definition: TBranch.h:213
Int_t GetEntryOffsetLen() const
Definition: TBranch.h:225
Long64_t fEntries
Number of entries.
Definition: TBranch.h:132
Bool_t SupportsBulkRead() const
Returns true if this branch supports bulk IO, false otherwise.
Definition: TBranch.cxx:1400
TTree * fTree
! Pointer to Tree header
Definition: TBranch.h:142
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
Buffer base class used for serializing objects.
Definition: TBuffer.h:42
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition: TClass.h:75
An array of clone (identical) objects.
Definition: TClonesArray.h:32
Describe directory structure in memory.
Definition: TDirectory.h:34
A ROOT file is a suite of consecutive data records (TKey instances) with a well defined format.
Definition: TFile.h:48
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:49
A doubly linked list.
Definition: TList.h:44
The TNamed class is the base class for all named ROOT classes.
Definition: TNamed.h:29
An array of TObjects.
Definition: TObjArray.h:37
EStatusBits
Definition: TObject.h:57
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
A cache to speed-up the reading of ROOT datasets.
Definition: TTreeCache.h:35
Class implementing or helping the various TTree cloning method.
Definition: TTreeCloner.h:38
A TTree represents a columnar dataset.
Definition: TTree.h:72
const Int_t n
Definition: legend1.C:16
VSD Structures.
Definition: StringConv.hxx:21
Definition: file.py:1
Definition: first.py:1
Definition: tree.py:1
@ kUseGlobal
Use the global compression algorithm.
Definition: Compression.h:83
@ kInherit
Some objects use this value to denote that the compression algorithm should be inherited from the par...
Definition: Compression.h:81
@ kUseCompiledDefault
Use the compile-time default setting.
Definition: Compression.h:50