Logo ROOT  
Reference Guide
TBranchElement.h
Go to the documentation of this file.
1// @(#)root/tree:$Id$
2// Author: Rene Brun 14/01/2001
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_TBranchElement
13#define ROOT_TBranchElement
14
15
16//////////////////////////////////////////////////////////////////////////
17// //
18// TBranchElement //
19// //
20// A Branch for the case of an object. //
21//////////////////////////////////////////////////////////////////////////
22
23
24#include "TBranch.h"
25
26#include "TClassRef.h"
27
28#include "TTree.h"
29
30#include "TError.h"
31
32#include <vector>
33
34class TFolder;
35class TStreamerInfo;
39class TVirtualArray;
40
42
43class TBranchElement : public TBranch {
44
45// Friends
46 friend class TTreeCloner;
47 friend class TLeafElement;
48
49// Types
50protected:
53 kDeleteObject = BIT(16), ///< We are the owner of fObject.
54 kCache = BIT(18), ///< Need to pushd/pop fOnfileObject.
55 kOwnOnfileObj = BIT(19), ///< We are the owner of fOnfileObject.
56 kAddressSet = BIT(20), ///< The addressing set have been called for this branch
57 kMakeClass = BIT(21), ///< This branch has been switched to using the MakeClass Mode
58 kDecomposedObj = BIT(21) ///< More explicit alias for kMakeClass.
59 };
60
61 // Note on fType values:
62 // -1 unsplit object with custom streamer at time of writing
63 // 0 unsplit object with default streamer at time of writing
64 // OR simple data member of split object (fID==-1 for the former)
65 // 1 base class of a split object.
66 // 2 class typed data member of a split object
67 // 3 branch count of a split TClonesArray
68 // 31 data member of the content of a split TClonesArray
69 // 4 branch count of a split STL Collection.
70 // 41 data member of the content of a split STL collection
71
72
73// Data Members
74protected:
75 TString fClassName; ///< Class name of referenced object
76 TString fParentName; ///< Name of parent class
77 TString fClonesName; ///< Name of class in TClonesArray (if any)
78 TVirtualCollectionProxy *fCollProxy; ///<! collection interface (if any)
79 UInt_t fCheckSum; ///< CheckSum of class
80 Version_t fClassVersion; ///< Version number of class
81 Int_t fID; ///< element serial number in fInfo
82 Int_t fType; ///< branch type
83 Int_t fStreamerType; ///< branch streamer type
84 Int_t fMaximum; ///< Maximum entries for a TClonesArray or variable array
85 Int_t fSTLtype; ///<! STL container type
86 Int_t fNdata; ///<! Number of data in this branch
87 TBranchElement *fBranchCount; ///< pointer to primary branchcount branch
88 TBranchElement *fBranchCount2; ///< pointer to secondary branchcount branch
89 TStreamerInfo *fInfo; ///<! Pointer to StreamerInfo
90 char *fObject; ///<! Pointer to object at *fAddress
91 TVirtualArray *fOnfileObject; ///<! Place holder for the onfile representation of data members.
92 Bool_t fInit : 1; ///<! Initialization flag for branch assignment
93 Bool_t fInInitInfo : 1;///<! True during the 2nd part of InitInfo (cut recursion).
94 Bool_t fInitOffsets: 1;///<! Initialization flag to not endlessly recalculate offsets
95 TClassRef fTargetClass; ///<! Reference to the target in-memory class
96 TClassRef fCurrentClass; ///<! Reference to current (transient) class definition
97 TClassRef fParentClass; ///<! Reference to class definition in fParentName
98 TClassRef fBranchClass; ///<! Reference to class definition in fClassName
99 TClassRef fClonesClass; ///<! Reference to class definition in fClonesName
100 Int_t *fBranchOffset; ///<! Sub-Branch offsets with respect to current transient class
101 Int_t fBranchID; ///<! ID number assigned by a TRefTable.
102 TStreamerInfoActions::TIDs fNewIDs; ///<! Nested List of the serial number of all the StreamerInfo to be used.
103 TStreamerInfoActions::TActionSequence *fReadActionSequence; ///<! Set of actions to be executed to extract the data from the basket.
104 TStreamerInfoActions::TActionSequence *fFillActionSequence; ///<! Set of actions to be executed to write the data to the basket.
105 TVirtualCollectionIterators *fIterators; ///<! holds the iterators when the branch is of fType==4.
106 TVirtualCollectionIterators *fWriteIterators; ///<! holds the read (non-staging) iterators when the branch is of fType==4 and associative containers.
107 TVirtualCollectionPtrIterators *fPtrIterators; ///<! holds the iterators when the branch is of fType==4 and it is a split collection of pointers.
108
109// Not implemented
110private:
111 TBranchElement(const TBranchElement&); // not implemented
112 TBranchElement& operator=(const TBranchElement&); // not implemented
113
114 static void SwitchContainer(TObjArray *);
115
116// Implementation use only functions.
117protected:
118 void BuildTitle(const char* name);
119 virtual void InitializeOffsets();
120 virtual void InitInfo();
122 TStreamerInfo *FindOnfileInfo(TClass *valueClass, const TObjArray &branches) const;
123 TClass *GetParentClass(); // Class referenced by fParentName
124 TStreamerInfo *GetInfoImp() const;
125 void ReleaseObject();
126 void SetupInfo();
129 Int_t Unroll(const char* name, TClass* cltop, TClass* cl, char* ptr, Int_t basketsize, Int_t splitlevel, Int_t btype);
130 inline void ValidateAddress() const;
131
132 void Init(TTree *tree, TBranch *parent, const char* name, TStreamerInfo* sinfo, Int_t id, char* pointer, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t btype = 0);
133 void Init(TTree *tree, TBranch *parent, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
134 void Init(TTree *tree, TBranch *parent, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
135
137 void ReadLeavesImpl(TBuffer& b);
149 void SetReadLeavesPtr();
151 void SetupAddressesImpl();
152 void SetAddressImpl(void *addr, Bool_t implied);
153
154 void FillLeavesImpl(TBuffer& b);
167 void SetFillLeavesPtr();
169
170// Public Interface.
171public:
173 TBranchElement(TTree *tree, const char* name, TStreamerInfo* sinfo, Int_t id, char* pointer, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t btype = 0);
174 TBranchElement(TTree *tree, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
175 TBranchElement(TTree *tree, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
176 TBranchElement(TBranch *parent, const char* name, TStreamerInfo* sinfo, Int_t id, char* pointer, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t btype = 0);
177 TBranchElement(TBranch *parent, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
178 TBranchElement(TBranch *parent, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
179
180 virtual ~TBranchElement();
181
182 virtual void Browse(TBrowser* b);
183 virtual TBranch *FindBranch(const char *name);
184 virtual TLeaf *FindLeaf(const char *name);
185 virtual char *GetAddress() const;
190 virtual const char *GetClassName() const { return fClassName.Data(); }
191 virtual TClass *GetClass() const { return fBranchClass; }
192 virtual const char *GetClonesName() const { return fClonesName.Data(); }
194 TClass *GetCurrentClass(); // Class referenced by transient description
195 virtual Int_t GetEntry(Long64_t entry = 0, Int_t getall = 0);
196 virtual Int_t GetExpectedType(TClass *&clptr,EDataType &type);
197 virtual TString GetFullName() const;
198 const char *GetIconName() const;
199 Int_t GetID() const { return fID; }
200 TStreamerInfo *GetInfo() const;
201 Bool_t GetMakeClass() const;
202 char *GetObject() const;
204 virtual const char *GetParentName() const { return fParentName.Data(); }
205 virtual Int_t GetMaximum() const;
206 Int_t GetNdata() const { return fNdata; }
207 Int_t GetType() const { return fType; }
209 virtual TClass *GetTargetClass() { return fTargetClass; }
210 virtual const char *GetTypeName() const;
211 Double_t GetValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const { return GetTypedValue<Double_t>(i, len, subarr); }
212 template<typename T > T GetTypedValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const;
213 virtual void *GetValuePointer() const;
216 Bool_t IsFolder() const;
217 virtual Bool_t IsObjectOwner() const { return TestBit(kDeleteObject); }
218 virtual Bool_t Notify() { if (fAddress) { ResetAddress(); } return 1; }
219 virtual void Print(Option_t* option = "") const;
220 void PrintValue(Int_t i) const;
221 virtual void Reset(Option_t* option = "");
222 virtual void ResetAfterMerge(TFileMergeInfo *);
223 virtual void ResetAddress();
224 virtual void ResetDeleteObject();
225 virtual void ResetInitInfo(bool recurse);
226 virtual void SetAddress(void* addobj);
227 virtual Bool_t SetMakeClass(Bool_t decomposeObj = kTRUE);
228 virtual void SetObject(void *objadd);
229 virtual void SetBasketSize(Int_t buffsize);
231 virtual void SetClassName(const char* name) { fClassName = name; }
232 virtual void SetOffset(Int_t offset);
233 virtual void SetMissing();
234 inline void SetParentClass(TClass* clparent);
235 virtual void SetParentName(const char* name) { fParentName = name; }
236 virtual void SetTargetClass(const char *name);
237 virtual void SetupAddresses();
238 virtual void SetType(Int_t btype) { fType = btype; }
239 virtual void UpdateFile();
240 void Unroll(const char *name, TClass *cl, TStreamerInfo *sinfo, char* objptr, Int_t bufsize, Int_t splitlevel);
241
244 kBaseClassNode = 1, // -- We are a base class element.
245 // Note: This does not include an STL container class which is
246 // being used as a base class because the streamer element
247 // in that case is not the base streamer element it is the
248 // STL streamer element.
253 kSTLMemberNode = 41
254 };
255
256private:
258
259 ClassDef(TBranchElement,10) // Branch in case of an object
260};
261
263{
264 fParentClass = clparent;
265 fParentName = clparent ? clparent->GetName() : "";
266}
267
269{
270 // Check to see if the user changed the object pointer without telling us.
271
272 if (fID < 0) {
273 // We are a top-level branch.
274 if (!fTree->GetMakeClass() && fAddress && (*((char**) fAddress) != fObject)) {
275 // The semantics of fAddress and fObject are violated.
276 // Assume the user changed the pointer on us.
277 // Note: The cast is here because we want to be able to
278 // be called from the constant get functions.
279
280 // FIXME: Disable the check/warning TTree until we add a missing interface.
281 if (TestBit(kDeleteObject)) {
282 // This should never happen!
283 Error("ValidateAddress", "We owned an object whose address changed! our ptr: %p new ptr: %p",
284 (void*)fObject, (void*)*((char**) fAddress));
285 const_cast<TBranchElement*>(this)->ResetBit(kDeleteObject);
286 }
287 const_cast<TBranchElement*>(this)->SetAddress(fAddress);
288 }
289 }
290}
291
292#endif // ROOT_TBranchElement
#define b(i)
Definition: RSha256.hxx:100
int Int_t
Definition: RtypesCore.h:41
short Version_t
Definition: RtypesCore.h:61
unsigned int UInt_t
Definition: RtypesCore.h:42
const Bool_t kFALSE
Definition: RtypesCore.h:88
bool Bool_t
Definition: RtypesCore.h:59
double Double_t
Definition: RtypesCore.h:55
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
EDataType
Definition: TDataType.h:28
char name[80]
Definition: TGX11.cxx:109
int type
Definition: TGX11.cxx:120
A Branch for the case of an object.
void ReadLeavesClonesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Bool_t fInit
! Initialization flag for branch assignment
virtual void ResetAddress()
Set branch address to zero and free all allocated memory.
void SetActionSequence(TClass *originalClass, TStreamerInfo *localInfo, TStreamerInfoActions::TActionSequence::SequenceGetter_t create, TStreamerInfoActions::TActionSequence *&actionSequence)
Set the sequence of actions needed to read the data out of the buffer.
char * fObject
! Pointer to object at *fAddress
TBranchElement * GetBranchCount() const
TStreamerInfo * fInfo
! Pointer to StreamerInfo
Int_t fSTLtype
! STL container type
void ReadLeavesCustomStreamer(TBuffer &b)
Read leaves into i/o buffers for this branch.
virtual void SetBranchFolder()
void SetParentClass(TClass *clparent)
TBranchElement * fBranchCount2
pointer to secondary branchcount branch
Int_t fNdata
! Number of data in this branch
Int_t GetClassVersion()
const char * GetIconName() const
Return icon name depending on type of branch element.
void FillLeavesCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
TString fClassName
Class name of referenced object.
virtual void Print(Option_t *option="") const
Print TBranch parameters.
TStreamerInfoActions::TActionSequence * fFillActionSequence
! Set of actions to be executed to write the data to the basket.
Bool_t fInInitInfo
! True during the 2nd part of InitInfo (cut recursion).
Int_t GetID() const
Int_t * GetBranchOffset() const
TStreamerInfo * GetInfo() const
Get streamer info for the branch class.
void ReadLeavesCollection(TBuffer &b)
Read leaves into i/o buffers for this branch.
virtual Int_t FillImpl(ROOT::Internal::TBranchIMTHelper *)
Loop on all leaves of this branch to fill the basket buffer.
virtual void SetType(Int_t btype)
void FillLeavesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void SetBranchCount(TBranchElement *bre)
Set the branch counter for this branch.
virtual char * GetAddress() const
Get the branch address.
static void SwitchContainer(TObjArray *)
Modify the container type of the branches.
void SetReadActionSequence()
Set the sequence of actions needed to read the data out of the buffer.
virtual const char * GetClassName() const
Return the name of the user class whose content is stored in this branch, if any.
virtual Int_t GetExpectedType(TClass *&clptr, EDataType &type)
Fill expectedClass and expectedType with information on the data type of the object/values contained ...
TVirtualCollectionProxy * GetCollectionProxy()
Return the collection proxy describing the branch content, if any.
@ kOwnOnfileObj
We are the owner of fOnfileObject.
@ kAddressSet
The addressing set have been called for this branch.
@ kDecomposedObj
More explicit alias for kMakeClass.
@ kDeleteObject
We are the owner of fObject.
@ kCache
Need to pushd/pop fOnfileObject.
@ kMakeClass
This branch has been switched to using the MakeClass Mode.
void SetupAddressesImpl()
If the branch address is not set, we set all addresses starting with the top level parent branch.
virtual Bool_t IsObjectOwner() const
TClassRef fParentClass
! Reference to class definition in fParentName
void BuildTitle(const char *name)
Set branch and leaf name and title in the case of a container sub-branch.
virtual Int_t GetMaximum() const
Return maximum count value of the branchcount if any.
TString fParentName
Name of parent class.
Bool_t IsBranchFolder() const
void ReadLeavesCollectionSplitPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Double_t GetValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
TClassRef fBranchClass
! Reference to class definition in fClassName
TStreamerInfoActions::TIDs fNewIDs
! Nested List of the serial number of all the StreamerInfo to be used.
Int_t GetStreamerType() const
TClass * GetCurrentClass()
Return a pointer to the current type of the data member corresponding to branch element.
UInt_t fCheckSum
CheckSum of class.
TStreamerInfoActions::TActionSequence * fReadActionSequence
! Set of actions to be executed to extract the data from the basket.
void FillLeavesClones(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual void SetObject(void *objadd)
Set object this branch is pointing to.
virtual void SetAddress(void *addobj)
Point this branch at an object.
TBranchElement * GetBranchCount2() const
virtual TLeaf * FindLeaf(const char *name)
Find the leaf corresponding to the name 'searchname'.
void ReadLeavesMemberBranchCount(TBuffer &b)
Read leaves into i/o buffers for this branch.
void SetReadLeavesPtr()
Set the ReadLeaves pointer to execute the expected operations.
Int_t Unroll(const char *name, TClass *cltop, TClass *cl, char *ptr, Int_t basketsize, Int_t splitlevel, Int_t btype)
Split class cl into sub-branches of this branch.
void FillLeavesMakeClass(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesCollection(TBuffer &b)
Write leaves into i/o buffers for this branch.
Int_t fID
element serial number in fInfo
Bool_t IsMissingCollection() const
Detect a collection written using a zero pointer in old versions of root.
void FillLeavesMemberCounter(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual void Browse(TBrowser *b)
Browse the branch content.
void SetAddressImpl(void *addr, Bool_t implied)
See TBranchElement::SetAddress.
void SetBranchCount2(TBranchElement *bre)
void FillLeavesCollectionSplitPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of a BranchElement and return total number of bytes.
virtual Bool_t Notify()
This method must be overridden to handle object notification.
TStreamerInfo * GetInfoImp() const
Get streamer info for the branch class.
virtual void SetTargetClass(const char *name)
Set the name of the class of the in-memory object into which the data will loaded.
virtual void ResetDeleteObject()
Release ownership of any allocated objects.
virtual const char * GetParentName() const
void ValidateAddress() const
TVirtualArray * GetOnfileObject() const
TVirtualCollectionIterators * fWriteIterators
! holds the read (non-staging) iterators when the branch is of fType==4 and associative containers.
void PrintValue(Int_t i) const
Prints values of leaves.
TVirtualArray * fOnfileObject
! Place holder for the onfile representation of data members.
virtual const char * GetTypeName() const
Return type name of element in the branch.
virtual TClass * GetTargetClass()
void FillLeavesAssociativeCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void Init(TTree *tree, TBranch *parent, const char *name, TStreamerInfo *sinfo, Int_t id, char *pointer, Int_t basketsize=32000, Int_t splitlevel=0, Int_t btype=0)
Init when the branch object is not a TClonesArray nor an STL container.
virtual void UpdateFile()
Refresh the value of fDirectory (i.e.
TClassRef fClonesClass
! Reference to class definition in fClonesName
virtual void * GetValuePointer() const
Returns pointer to first data element of this branch.
void ReadLeavesImpl(TBuffer &b)
Unconfiguration Read Leave function.
TBranchElement(const TBranchElement &)
virtual void SetClassName(const char *name)
void SetupInfo()
Set the value of fInfo.
void FillLeavesImpl(TBuffer &b)
Unconfiguration Fill Leave function.
void FillLeavesClonesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
TClassRef fCurrentClass
! Reference to current (transient) class definition
char * GetObject() const
Return a pointer to our object.
TStreamerInfo * FindOnfileInfo(TClass *valueClass, const TObjArray &branches) const
void ReadLeavesClones(TBuffer &b)
Read leaves into i/o buffers for this branch.
Bool_t IsFolder() const
Return kTRUE if more than one leaf, kFALSE otherwise.
virtual TString GetFullName() const
Return the 'full' name of the branch.
Bool_t GetMakeClass() const
Return whether this branch is in a mode where the object are decomposed or not (Also known as MakeCla...
Int_t * fBranchOffset
! Sub-Branch offsets with respect to current transient class
Int_t fType
branch type
virtual void ResetInitInfo(bool recurse)
Reset offset and StremerInfo information from this branch.
void ReadLeavesMakeClass(TBuffer &b)
Read leaves into i/o buffers for this branch.
TBranchElement()
Default and I/O constructor.
void FillLeavesCustomStreamer(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual const char * GetClonesName() const
virtual TClass * GetClass() const
Int_t fMaximum
Maximum entries for a TClonesArray or variable array.
T GetTypedValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
void ReadLeavesMemberCounter(TBuffer &b)
Read leaves into i/o buffers for this branch.
Int_t fBranchID
! ID number assigned by a TRefTable.
TVirtualCollectionIterators * fIterators
! holds the iterators when the branch is of fType==4.
virtual TBranch * FindBranch(const char *name)
Find the immediate sub-branch with passed name.
void ReleaseObject()
Delete any object we may have allocated on a previous call to SetAddress.
TClassRef fTargetClass
! Reference to the target in-memory class
void FillLeavesMemberBranchCount(TBuffer &b)
Write leaves into i/o buffers for this branch.
TBranchElement & operator=(const TBranchElement &)
virtual void SetMissing()
Set offset of the object (to which the data member represented by this branch belongs) inside its con...
virtual Bool_t SetMakeClass(Bool_t decomposeObj=kTRUE)
Set the branch in a mode where the object are decomposed (Also known as MakeClass mode).
virtual void SetBasketSize(Int_t buffsize)
Reset the basket size for all sub-branches of this branch element.
TString fClonesName
Name of class in TClonesArray (if any)
TBranchElement * fBranchCount
pointer to primary branchcount branch
Int_t GetType() const
void ReadLeavesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
virtual void ResetAfterMerge(TFileMergeInfo *)
Reset a Branch after a Merge operation (drop data but keep customizations)
virtual ~TBranchElement()
Destructor.
Bool_t fInitOffsets
! Initialization flag to not endlessly recalculate offsets
virtual void SetParentName(const char *name)
Version_t fClassVersion
Version number of class.
TVirtualCollectionPtrIterators * fPtrIterators
! holds the iterators when the branch is of fType==4 and it is a split collection of pointers.
UInt_t GetCheckSum()
virtual void InitInfo()
Init the streamer info for the branch class, try to compensate for class code unload/reload and schem...
virtual void InitializeOffsets()
Initialize the base class subobjects offsets of our sub-branches and set fOffset if we are a containe...
virtual void SetupAddresses()
If the branch address is not set, we set all addresses starting with the top level parent branch.
TClass * GetParentClass()
Return a pointer to the parent class of the branch element.
Int_t GetNdata() const
TVirtualCollectionProxy * fCollProxy
! collection interface (if any)
void SetFillActionSequence()
Set the sequence of actions needed to write the data out from the buffer.
virtual void SetOffset(Int_t offset)
Set offset of the object (to which the data member represented by this branch belongs) inside its con...
virtual void Reset(Option_t *option="")
Reset a Branch.
Int_t fStreamerType
branch streamer type
void ReadLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
void SetFillLeavesPtr()
Set the FillLeaves pointer to execute the expected operations.
void ReadLeavesCollectionMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
A TTree is a list of TBranches.
Definition: TBranch.h:91
char * fAddress
! Address of 1st leaf (variable or object)
Definition: TBranch.h:145
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
TClassRef is used to implement a permanent reference to a TClass object.
Definition: TClassRef.h:29
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
A TFolder object is a collection of objects and folders.
Definition: TFolder.h:30
A TLeaf for the general case when using the branches created via a TStreamerInfo (i....
Definition: TLeafElement.h:32
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:49
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
An array of TObjects.
Definition: TObjArray.h:37
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:172
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:694
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:880
void ResetBit(UInt_t f)
Definition: TObject.h:171
EStatusBits
Definition: TObject.h:57
SequencePtr(*)(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *originalClass) SequenceGetter_t
Describe Streamer information for one class version.
Definition: TStreamerInfo.h:43
Basic string class.
Definition: TString.h:131
const char * Data() const
Definition: TString.h:364
Class implementing or helping the various TTree cloning method.
Definition: TTreeCloner.h:38
A TTree represents a columnar dataset.
Definition: TTree.h:72
Int_t GetMakeClass() const
Definition: TTree.h:482
Wrapper around an object and giving indirect access to its content even if the object is not of a cla...
Definition: TVirtualArray.h:26
Small helper class to generically acquire and release iterators.
double T(double x)
Definition: ChebyshevPol.h:34
std::vector< TIDNode > TIDs
Definition: tree.py:1
@ kInherit
Some objects use this value to denote that the compression algorithm should be inherited from the par...
Definition: Compression.h:81