Logo ROOT   6.12/07
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 
34 class TFolder;
35 class TStreamerInfo;
39 class TVirtualArray;
40 
41 #include "TStreamerInfoActions.h"
42 
43 class TBranchElement : public TBranch {
44 
45 // Friends
46  friend class TTreeCloner;
47  friend class TLeafElement;
48 
49 // Types
50 protected:
51  enum EStatusBits {
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
74 protected:
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
110 private:
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.
117 protected:
118  void BuildTitle(const char* name);
119  virtual void InitializeOffsets();
120  virtual void InitInfo();
121  Bool_t IsMissingCollection() const;
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();
127  void SetBranchCount(TBranchElement* bre);
128  void SetBranchCount2(TBranchElement* bre) { fBranchCount2 = bre; }
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 = -1);
134  void Init(TTree *tree, TBranch *parent, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
135 
137  void ReadLeavesImpl(TBuffer& b);
138  void ReadLeavesMakeClass(TBuffer& b);
139  void ReadLeavesCollection(TBuffer& b);
143  void ReadLeavesClones(TBuffer& b);
146  void ReadLeavesMember(TBuffer& b);
149  void SetReadLeavesPtr();
150  void SetReadActionSequence();
151  void SetupAddressesImpl();
152 
153  void FillLeavesImpl(TBuffer& b);
154  void FillLeavesMakeClass(TBuffer& b);
155  void FillLeavesCollection(TBuffer& b);
160  void FillLeavesClones(TBuffer& b);
165  void FillLeavesMember(TBuffer& b);
166  void SetFillLeavesPtr();
167  void SetFillActionSequence();
168 
169 // Public Interface.
170 public:
171  TBranchElement();
172  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);
173  TBranchElement(TTree *tree, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
174  TBranchElement(TTree *tree, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
175  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);
176  TBranchElement(TBranch *parent, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
177  TBranchElement(TBranch *parent, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
178 
179  virtual ~TBranchElement();
180 
181  virtual void Browse(TBrowser* b);
182  virtual TBranch *FindBranch(const char *name);
183  virtual TLeaf *FindLeaf(const char *name);
184  virtual char *GetAddress() const;
187  Int_t *GetBranchOffset() const { return fBranchOffset; }
189  virtual const char *GetClassName() const { return fClassName.Data(); }
190  virtual TClass *GetClass() const { return fBranchClass; }
191  virtual const char *GetClonesName() const { return fClonesName.Data(); }
193  TClass *GetCurrentClass(); // Class referenced by transient description
194  virtual Int_t GetEntry(Long64_t entry = 0, Int_t getall = 0);
195  virtual Int_t GetExpectedType(TClass *&clptr,EDataType &type);
196  const char *GetIconName() const;
197  Int_t GetID() const { return fID; }
198  TStreamerInfo *GetInfo() const;
199  Bool_t GetMakeClass() const;
200  char *GetObject() const;
202  virtual const char *GetParentName() const { return fParentName.Data(); }
203  virtual Int_t GetMaximum() const;
204  Int_t GetNdata() const { return fNdata; }
205  Int_t GetType() const { return fType; }
206  Int_t GetStreamerType() const { return fStreamerType; }
207  virtual TClass *GetTargetClass() { return fTargetClass; }
208  virtual const char *GetTypeName() const;
209  Double_t GetValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const { return GetTypedValue<Double_t>(i, len, subarr); }
210  template<typename T > T GetTypedValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const;
211  virtual void *GetValuePointer() const;
214  Bool_t IsFolder() const;
215  virtual Bool_t IsObjectOwner() const { return TestBit(kDeleteObject); }
216  virtual Bool_t Notify() { if (fAddress) { ResetAddress(); } return 1; }
217  virtual void Print(Option_t* option = "") const;
218  void PrintValue(Int_t i) const;
219  virtual void Reset(Option_t* option = "");
220  virtual void ResetAfterMerge(TFileMergeInfo *);
221  virtual void ResetAddress();
222  virtual void ResetDeleteObject();
223  virtual void ResetInitInfo(bool recurse);
224  virtual void SetAddress(void* addobj);
225  virtual Bool_t SetMakeClass(Bool_t decomposeObj = kTRUE);
226  virtual void SetObject(void *objadd);
227  virtual void SetBasketSize(Int_t buffsize);
228  virtual void SetBranchFolder() { SetBit(kBranchFolder); }
229  virtual void SetClassName(const char* name) { fClassName = name; }
230  virtual void SetOffset(Int_t offset);
231  inline void SetParentClass(TClass* clparent);
232  virtual void SetParentName(const char* name) { fParentName = name; }
233  virtual void SetTargetClass(const char *name);
234  virtual void SetupAddresses();
235  virtual void SetType(Int_t btype) { fType = btype; }
236  virtual void UpdateFile();
237  void Unroll(const char *name, TClass *cl, TStreamerInfo *sinfo, char* objptr, Int_t bufsize, Int_t splitlevel);
238 
241  kBaseClassNode = 1, // -- We are a base class element.
242  // Note: This does not include an STL container class which is
243  // being used as a base class because the streamer element
244  // in that case is not the base streamer element it is the
245  // STL streamer element.
248  kSTLNode = 4,
251  };
252 
253 private:
255 
256  ClassDef(TBranchElement,10) // Branch in case of an object
257 };
258 
260 {
261  fParentClass = clparent;
262  fParentName = clparent ? clparent->GetName() : "";
263 }
264 
266 {
267  // Check to see if the user changed the object pointer without telling us.
268 
269  if (fID < 0) {
270  // We are a top-level branch.
271  if (!fTree->GetMakeClass() && fAddress && (*((char**) fAddress) != fObject)) {
272  // The semantics of fAddress and fObject are violated.
273  // Assume the user changed the pointer on us.
274  // Note: The cast is here because we want to be able to
275  // be called from the constant get functions.
276 
277  // FIXME: Disable the check/warning TTree until we add a missing interface.
278  if (TestBit(kDeleteObject)) {
279  // This should never happen!
280  Error("ValidateAddress", "We owned an object whose address changed! our ptr: %p new ptr: %p",
281  (void*)fObject, (void*)*((char**) fAddress));
282  const_cast<TBranchElement*>(this)->ResetBit(kDeleteObject);
283  }
284  const_cast<TBranchElement*>(this)->SetAddress(fAddress);
285  }
286  }
287 }
288 
289 #endif // ROOT_TBranchElement
Describe Streamer information for one class version.
Definition: TStreamerInfo.h:43
TClassRef fTargetClass
! Reference to the target in-memory class
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:47
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:32
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.
TBranchElement * GetBranchCount2() const
void FillLeavesAssociativeCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
We are the owner of fOnfileObject.
A TFolder object is a collection of objects and folders.
Definition: TFolder.h:30
An array of TObjects.
Definition: TObjArray.h:37
TBranchElement * fBranchCount2
pointer to secondary branchcount branch
TVirtualCollectionProxy * GetCollectionProxy()
Return the collection proxy describing the branch content, if any.
TStreamerInfoActions::TIDs fNewIDs
! Nested List of the serial number of all the StreamerInfo to be used.
void PrintValue(Int_t i) const
Prints values of leaves.
virtual TLeaf * FindLeaf(const char *name)
Find the leaf corresponding to the name &#39;searchname&#39;.
long long Long64_t
Definition: RtypesCore.h:69
Int_t GetType() const
virtual Int_t GetExpectedType(TClass *&clptr, EDataType &type)
Fill expectedClass and expectedType with information on the data type of the object/values contained ...
virtual TBranch * FindBranch(const char *name)
Find the immediate sub-branch with passed name.
TVirtualArray * GetOnfileObject() const
virtual void ResetInitInfo(bool recurse)
Reset offset and StremerInfo information from this branch.
short Version_t
Definition: RtypesCore.h:61
virtual TClass * GetTargetClass()
std::vector< TIDNode > TIDs
virtual void InitInfo()
Init the streamer info for the branch class, try to compensate for class code unload/reload and schem...
const char Option_t
Definition: RtypesCore.h:62
Double_t GetValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
double T(double x)
Definition: ChebyshevPol.h:34
TString fParentName
Name of parent class.
const char * GetIconName() const
Return icon name depending on type of branch element.
virtual void Reset(Option_t *option="")
Reset a Branch.
Int_t GetMakeClass() const
Definition: TTree.h:414
Int_t * GetBranchOffset() const
#define BIT(n)
Definition: Rtypes.h:78
Int_t GetNdata() const
Buffer base class used for serializing objects.
Definition: TBuffer.h:40
void FillLeavesCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
TStreamerInfo * GetInfo() const
Get streamer info for the branch class.
void FillLeavesCustomStreamer(TBuffer &b)
Write leaves into i/o buffers for this branch.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:172
Basic string class.
Definition: TString.h:125
virtual void SetAddress(void *addobj)
Point this branch at an object.
virtual void SetTargetClass(const char *name)
Set the name of the class of the in-memory object into which the data will loaded.
int Int_t
Definition: RtypesCore.h:41
bool Bool_t
Definition: RtypesCore.h:59
void SetReadActionSequence()
Set the sequence of actions needed to read the data out of the buffer.
void ReadLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
The addressing set have been called for this branch.
virtual Int_t FillImpl(ROOT::Internal::TBranchIMTHelper *)
Loop on all leaves of this branch to fill the basket buffer.
UInt_t fCheckSum
CheckSum of class.
void FillLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void SetupAddressesImpl()
If the branch address is not set, we set all addresses starting with the top level parent branch...
virtual Int_t GetMaximum() const
Return maximum count value of the branchcount if any.
TStreamerInfoActions::TActionSequence * fFillActionSequence
! Set of actions to be executed to write the data to the basket.
Bool_t fInit
! Initialization flag for branch assignment
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:694
void ReadLeavesClones(TBuffer &b)
Read leaves into i/o buffers for this branch.
TStreamerInfo * FindOnfileInfo(TClass *valueClass, const TObjArray &branches) const
void ReadLeavesCustomStreamer(TBuffer &b)
Read leaves into i/o buffers for this branch.
void FillLeavesCollection(TBuffer &b)
Write leaves into i/o buffers for this branch.
TBranchElement * GetBranchCount() const
virtual void SetBranchFolder()
void ReadLeavesMemberBranchCount(TBuffer &b)
Read leaves into i/o buffers for this branch.
Int_t fNdata
! Number of data in this branch
TVirtualArray * fOnfileObject
! Place holder for the onfile representation of data members.
#define ClassDef(name, id)
Definition: Rtypes.h:320
void SetFillActionSequence()
Set the sequence of actions needed to write the data out from the buffer.
TStreamerInfoActions::TActionSequence * fReadActionSequence
! Set of actions to be executed to extract the data from the basket.
Int_t fMaximum
Maximum entries for a TClonesArray or variable array.
void ReadLeavesCollectionSplitPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
void BuildTitle(const char *name)
Set branch and leaf name and title in the case of a container sub-branch.
virtual void ResetDeleteObject()
Release ownership of any allocated objects.
void FillLeavesClones(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesClonesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual void SetBasketSize(Int_t buffsize)
Reset the basket size for all sub-branches of this branch element.
void ReadLeavesMemberCounter(TBuffer &b)
Read leaves into i/o buffers for this branch.
Int_t * fBranchOffset
! Sub-Branch offsets with respect to current transient class
TVirtualCollectionProxy * fCollProxy
! collection interface (if any)
Int_t GetID() const
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 Browse(TBrowser *b)
Browse the branch content.
Version_t fClassVersion
Version number of class.
This branch has been switched to using the MakeClass Mode.
T GetTypedValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
void FillLeavesMemberCounter(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesMemberBranchCount(TBuffer &b)
Write leaves into i/o buffers for this branch.
TString fClassName
Class name of referenced object.
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of a BranchElement and return total number of bytes.
void SetFillLeavesPtr()
Set the FillLeaves pointer to execute the expected operations.
virtual void ResetAfterMerge(TFileMergeInfo *)
Reset a Branch after a Merge operation (drop data but keep customizations)
Bool_t IsMissingCollection() const
Detect a collection written using a zero pointer in old versions of root.
virtual const char * GetClonesName() const
TString fClonesName
Name of class in TClonesArray (if any)
virtual void ResetAddress()
Set branch address to zero and free all allocated memory.
void ReadLeavesClonesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
TBranchElement & operator=(const TBranchElement &)
Need to pushd/pop fOnfileObject.
void FillLeavesMakeClass(TBuffer &b)
Write leaves into i/o buffers for this branch.
Using a TBrowser one can browse all ROOT objects.
Definition: TBrowser.h:37
Int_t fID
element serial number in fInfo
void SetupInfo()
Set the value of fInfo.
void SetParentClass(TClass *clparent)
void ValidateAddress() const
virtual char * GetAddress() const
Get the branch address.
virtual const char * GetTypeName() const
Return type name of element in the branch.
Small helper class to generically acquire and release iterators.
void ReadLeavesCollection(TBuffer &b)
Read leaves into i/o buffers for this branch.
virtual void SetupAddresses()
If the branch address is not set, we set all addresses starting with the top level parent branch...
Wrapper around an object and giving indirect access to its content even if the object is not of a cla...
Definition: TVirtualArray.h:26
virtual void SetType(Int_t btype)
char * GetObject() const
Return a pointer to our object.
TClassRef fParentClass
! Reference to class definition in fParentName
virtual void UpdateFile()
Refresh the value of fDirectory (i.e.
TBranchElement * fBranchCount
pointer to primary branchcount branch
Int_t fStreamerType
branch streamer type
TClass * GetParentClass()
Return a pointer to the parent class of the branch element.
virtual void * GetValuePointer() const
Returns pointer to first data element of this branch.
unsigned int UInt_t
Definition: RtypesCore.h:42
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.
void SetReadLeavesPtr()
Set the ReadLeaves pointer to execute the expected operations.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:880
TClass * GetCurrentClass()
Return a pointer to the current type of the data member corresponding to branch element.
void ReadLeavesImpl(TBuffer &b)
Unconfiguration Read Leave function.
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.
TClassRef fCurrentClass
! Reference to current (transient) class definition
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:75
TClassRef fBranchClass
! Reference to class definition in fClassName
Bool_t fInInitInfo
! True during the 2nd part of InitInfo (cut recursion).
A TLeaf for the general case when using the branches created via a TStreamerInfo (i.e.
Definition: TLeafElement.h:30
A Branch for the case of an object.
const Bool_t kFALSE
Definition: RtypesCore.h:88
void SetBranchCount(TBranchElement *bre)
Set the branch counter for this branch.
Int_t fSTLtype
! STL container type
virtual void SetClassName(const char *name)
double Double_t
Definition: RtypesCore.h:55
Bool_t IsFolder() const
Return kTRUE if more than one leaf, kFALSE otherwise.
void FillLeavesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual const char * GetClassName() const
Return the name of the user class whose content is stored in this branch, if any. ...
EStatusBits
Definition: TObject.h:57
int type
Definition: TGX11.cxx:120
void SetBranchCount2(TBranchElement *bre)
TStreamerInfo * GetInfoImp() const
Get streamer info for the branch class.
virtual void SetObject(void *objadd)
Set object this branch is pointing to.
More explicit alias for kMakeClass.
Int_t fBranchID
! ID number assigned by a TRefTable.
EDataType
Definition: TDataType.h:28
TBranchElement()
Default and I/O constructor.
TTree * fTree
! Pointer to Tree header
Definition: TBranch.h:105
TClassRef fClonesClass
! Reference to class definition in fClonesName
UInt_t GetCheckSum()
Bool_t IsBranchFolder() const
virtual void SetOffset(Int_t offset)
Set offset of the object (to which the data member represented by this branch belongs) inside its con...
We are the owner of fObject.
void ReadLeavesMakeClass(TBuffer &b)
Read leaves into i/o buffers for this branch.
SequencePtr(*)(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *originalClass) SequenceGetter_t
Bool_t fInitOffsets
! Initialization flag to not endlessly recalculate offsets
TClassRef is used to implement a permanent reference to a TClass object.
Definition: TClassRef.h:29
virtual void Print(Option_t *option="") const
Print TBranch parameters.
An array of clone (identical) objects.
Definition: TClonesArray.h:32
Class implementing or helping the various TTree cloning method.
Definition: TTreeCloner.h:38
virtual ~TBranchElement()
Destructor.
static void SwitchContainer(TObjArray *)
Modify the container type of the branches.
void FillLeavesCollectionSplitPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
Int_t GetClassVersion()
void FillLeavesImpl(TBuffer &b)
Unconfiguration Fill Leave function.
TVirtualCollectionIterators * fWriteIterators
! holds the read (non-staging) iterators when the branch is of fType==4 and associative containers...
Int_t fType
branch type
virtual TClass * GetClass() const
you should not use this method at all Int_t Int_t Double_t Double_t Double_t Int_t Double_t Double_t Double_t Double_t b
Definition: TRolke.cxx:630
TVirtualCollectionIterators * fIterators
! holds the iterators when the branch is of fType==4.
Bool_t GetMakeClass() const
Return whether this branch is in a mode where the object are decomposed or not (Also known as MakeCla...
virtual const char * GetParentName() const
Definition: tree.py:1
char * fObject
! Pointer to object at *fAddress
A TTree object has a header with a name and a title.
Definition: TTree.h:70
void ResetBit(UInt_t f)
Definition: TObject.h:171
virtual void SetParentName(const char *name)
A TTree is a list of TBranches.
Definition: TBranch.h:59
const Bool_t kTRUE
Definition: RtypesCore.h:87
TVirtualCollectionPtrIterators * fPtrIterators
! holds the iterators when the branch is of fType==4 and it is a split collection of pointers...
virtual Bool_t Notify()
This method must be overridden to handle object notification.
Int_t GetStreamerType() const
virtual Bool_t IsObjectOwner() const
TStreamerInfo * fInfo
! Pointer to StreamerInfo
void ReadLeavesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
char name[80]
Definition: TGX11.cxx:109
virtual void InitializeOffsets()
Initialize the base class subobjects offsets of our sub-branches and set fOffset if we are a containe...
void ReadLeavesCollectionMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
void ReleaseObject()
Delete any object we may have allocated on a previous call to SetAddress.
const char * Data() const
Definition: TString.h:345
char * fAddress
! Address of 1st leaf (variable or object)
Definition: TBranch.h:108