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 class TFolder;
31 class TStreamerInfo;
35 class TVirtualArray;
36 
37 #include "TStreamerInfoActions.h"
38 
39 class TBranchElement : public TBranch {
40 
41 // Friends
42  friend class TTreeCloner;
43  friend class TLeafElement;
44 
45 // Types
46 protected:
47  enum EStatusBits {
49  kDeleteObject = BIT(16), ///< We are the owner of fObject.
50  kCache = BIT(18), ///< Need to pushd/pop fOnfileObject.
51  kOwnOnfileObj = BIT(19), ///< We are the owner of fOnfileObject.
52  kAddressSet = BIT(20), ///< The addressing set have been called for this branch
53  kMakeClass = BIT(21), ///< This branch has been switched to using the MakeClass Mode
54  kDecomposedObj = BIT(21) ///< More explicit alias for kMakeClass.
55  };
56 
57  // Note on fType values:
58  // -1 unsplit object with custom streamer at time of writing
59  // 0 unsplit object with default streamer at time of writing
60  // OR simple data member of split object (fID==-1 for the former)
61  // 1 base class of a split object.
62  // 2 class typed data member of a split object
63  // 3 branch count of a split TClonesArray
64  // 31 data member of the content of a split TClonesArray
65  // 4 branch count of a split STL Collection.
66  // 41 data member of the content of a split STL collection
67 
68 
69 // Data Members
70 protected:
71  TString fClassName; ///< Class name of referenced object
72  TString fParentName; ///< Name of parent class
73  TString fClonesName; ///< Name of class in TClonesArray (if any)
74  TVirtualCollectionProxy *fCollProxy; ///<! collection interface (if any)
75  UInt_t fCheckSum; ///< CheckSum of class
76  Version_t fClassVersion; ///< Version number of class
77  Int_t fID; ///< element serial number in fInfo
78  Int_t fType; ///< branch type
79  Int_t fStreamerType; ///< branch streamer type
80  Int_t fMaximum; ///< Maximum entries for a TClonesArray or variable array
81  Int_t fSTLtype; ///<! STL container type
82  Int_t fNdata; ///<! Number of data in this branch
83  TBranchElement *fBranchCount; ///< pointer to primary branchcount branch
84  TBranchElement *fBranchCount2; ///< pointer to secondary branchcount branch
85  TStreamerInfo *fInfo; ///<! Pointer to StreamerInfo
86  char *fObject; ///<! Pointer to object at *fAddress
87  TVirtualArray *fOnfileObject; ///<! Place holder for the onfile representation of data members.
88  Bool_t fInit : 1; ///<! Initialization flag for branch assignment
89  Bool_t fInInitInfo : 1;///<! True during the 2nd part of InitInfo (cut recursion).
90  Bool_t fInitOffsets: 1;///<! Initialization flag to not endlessly recalculate offsets
91  TClassRef fTargetClass; ///<! Reference to the target in-memory class
92  TClassRef fCurrentClass; ///<! Reference to current (transient) class definition
93  TClassRef fParentClass; ///<! Reference to class definition in fParentName
94  TClassRef fBranchClass; ///<! Reference to class definition in fClassName
95  TClassRef fClonesClass; ///<! Reference to class definition in fClonesName
96  Int_t *fBranchOffset; ///<! Sub-Branch offsets with respect to current transient class
97  Int_t fBranchID; ///<! ID number assigned by a TRefTable.
98  TStreamerInfoActions::TIDs fNewIDs; ///<! Nested List of the serial number of all the StreamerInfo to be used.
99  TStreamerInfoActions::TActionSequence *fReadActionSequence; ///<! Set of actions to be executed to extract the data from the basket.
100  TStreamerInfoActions::TActionSequence *fFillActionSequence; ///<! Set of actions to be executed to write the data to the basket.
101  TVirtualCollectionIterators *fIterators; ///<! holds the iterators when the branch is of fType==4.
102  TVirtualCollectionIterators *fWriteIterators; ///<! holds the read (non-staging) iterators when the branch is of fType==4 and associative containers.
103  TVirtualCollectionPtrIterators *fPtrIterators; ///<! holds the iterators when the branch is of fType==4 and it is a split collection of pointers.
104 
105 // Not implemented
106 private:
107  TBranchElement(const TBranchElement&); // not implemented
108  TBranchElement& operator=(const TBranchElement&); // not implemented
109 
110  static void SwitchContainer(TObjArray *);
111 
112 // Implementation use only functions.
113 protected:
114  void BuildTitle(const char* name);
115  virtual void InitializeOffsets();
116  virtual void InitInfo();
117  Bool_t IsMissingCollection() const;
118  TStreamerInfo *FindOnfileInfo(TClass *valueClass, const TObjArray &branches) const;
119  TClass *GetParentClass(); // Class referenced by fParentName
120  TStreamerInfo *GetInfoImp() const;
121  void ReleaseObject();
122  void SetupInfo();
123  void SetBranchCount(TBranchElement* bre);
125  Int_t Unroll(const char* name, TClass* cltop, TClass* cl, char* ptr, Int_t basketsize, Int_t splitlevel, Int_t btype);
126  inline void ValidateAddress() const;
127 
128  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);
129  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);
130  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);
131 
133  void ReadLeavesImpl(TBuffer& b);
139  void ReadLeavesClones(TBuffer& b);
142  void ReadLeavesMember(TBuffer& b);
145  void SetReadLeavesPtr();
146  void SetReadActionSequence();
147  void SetupAddressesImpl();
148  void SetAddressImpl(void *addr, Bool_t implied);
149 
150  void FillLeavesImpl(TBuffer& b);
157  void FillLeavesClones(TBuffer& b);
162  void FillLeavesMember(TBuffer& b);
163  void SetFillLeavesPtr();
164  void SetFillActionSequence();
165 
166 // Public Interface.
167 public:
168  TBranchElement();
169  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);
170  TBranchElement(TTree *tree, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
171  TBranchElement(TTree *tree, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
172  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);
173  TBranchElement(TBranch *parent, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
174  TBranchElement(TBranch *parent, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = ROOT::RCompressionSetting::EAlgorithm::kInherit);
175 
176  virtual ~TBranchElement();
177 
178  virtual void Browse(TBrowser* b);
179  virtual TBranch *FindBranch(const char *name);
180  virtual TLeaf *FindLeaf(const char *name);
181  virtual char *GetAddress() const;
184  Int_t *GetBranchOffset() const { return fBranchOffset; }
186  virtual const char *GetClassName() const { return fClassName.Data(); }
187  virtual TClass *GetClass() const { return fBranchClass; }
188  virtual const char *GetClonesName() const { return fClonesName.Data(); }
190  TClass *GetCurrentClass(); // Class referenced by transient description
191  virtual Int_t GetEntry(Long64_t entry = 0, Int_t getall = 0);
192  virtual Int_t GetExpectedType(TClass *&clptr,EDataType &type);
193  const char *GetIconName() const;
194  Int_t GetID() const { return fID; }
195  TStreamerInfo *GetInfo() const;
196  Bool_t GetMakeClass() const;
197  char *GetObject() const;
199  virtual const char *GetParentName() const { return fParentName.Data(); }
200  virtual Int_t GetMaximum() const;
201  Int_t GetNdata() const { return fNdata; }
202  Int_t GetType() const { return fType; }
203  Int_t GetStreamerType() const { return fStreamerType; }
204  virtual TClass *GetTargetClass() { return fTargetClass; }
205  virtual const char *GetTypeName() const;
206  Double_t GetValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const { return GetTypedValue<Double_t>(i, len, subarr); }
207  template<typename T > T GetTypedValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const;
208  virtual void *GetValuePointer() const;
211  Bool_t IsFolder() const;
212  virtual Bool_t IsObjectOwner() const { return TestBit(kDeleteObject); }
213  virtual Bool_t Notify() { if (fAddress) { ResetAddress(); } return 1; }
214  virtual void Print(Option_t* option = "") const;
215  void PrintValue(Int_t i) const;
216  virtual void Reset(Option_t* option = "");
217  virtual void ResetAfterMerge(TFileMergeInfo *);
218  virtual void ResetAddress();
219  virtual void ResetDeleteObject();
220  virtual void ResetInitInfo(bool recurse);
221  virtual void SetAddress(void* addobj);
222  virtual Bool_t SetMakeClass(Bool_t decomposeObj = kTRUE);
223  virtual void SetObject(void *objadd);
224  virtual void SetBasketSize(Int_t buffsize);
225  virtual void SetBranchFolder() { SetBit(kBranchFolder); }
226  virtual void SetClassName(const char* name) { fClassName = name; }
227  virtual void SetOffset(Int_t offset);
228  virtual void SetMissing();
229  inline void SetParentClass(TClass* clparent);
230  virtual void SetParentName(const char* name) { fParentName = name; }
231  virtual void SetTargetClass(const char *name);
232  virtual void SetupAddresses();
233  virtual void SetType(Int_t btype) { fType = btype; }
234  virtual void UpdateFile();
235  void Unroll(const char *name, TClass *cl, TStreamerInfo *sinfo, char* objptr, Int_t bufsize, Int_t splitlevel);
236 
239  kBaseClassNode = 1, // -- We are a base class element.
240  // Note: This does not include an STL container class which is
241  // being used as a base class because the streamer element
242  // in that case is not the base streamer element it is the
243  // STL streamer element.
246  kSTLNode = 4,
249  };
250 
251 private:
253 
254  ClassDef(TBranchElement,10) // Branch in case of an object
255 };
256 
258 {
259  fParentClass = clparent;
260  fParentName = clparent ? clparent->GetName() : "";
261 }
262 
264 {
265  // Check to see if the user changed the object pointer without telling us.
266 
267  if (fID < 0) {
268  // We are a top-level branch.
269  if (!fTree->GetMakeClass() && fAddress && (*((char**) fAddress) != fObject)) {
270  // The semantics of fAddress and fObject are violated.
271  // Assume the user changed the pointer on us.
272  // Note: The cast is here because we want to be able to
273  // be called from the constant get functions.
274 
275  // FIXME: Disable the check/warning TTree until we add a missing interface.
276  if (TestBit(kDeleteObject)) {
277  // This should never happen!
278  Error("ValidateAddress", "We owned an object whose address changed! our ptr: %p new ptr: %p",
279  (void*)fObject, (void*)*((char**) fAddress));
280  const_cast<TBranchElement*>(this)->ResetBit(kDeleteObject);
281  }
282  const_cast<TBranchElement*>(this)->SetAddress(fAddress);
283  }
284  }
285 }
286 
287 #endif // ROOT_TBranchElement
TBranchElement::FillLeavesCollectionSplitPtrMember
void FillLeavesCollectionSplitPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1479
TStreamerInfoActions::TActionSequence::SequenceGetter_t
SequencePtr(*)(TStreamerInfo *info, TVirtualCollectionProxy *collectionProxy, TClass *originalClass) SequenceGetter_t
Definition: TStreamerInfoActions.h:176
TBranchElement::GetInfoImp
TStreamerInfo * GetInfoImp() const
Get streamer info for the branch class.
Definition: TBranchElement.cxx:999
TBranchElement::fWriteIterators
TVirtualCollectionIterators * fWriteIterators
! holds the read (non-staging) iterators when the branch is of fType==4 and associative containers.
Definition: TBranchElement.h:102
TBranchElement::InitializeOffsets
virtual void InitializeOffsets()
Initialize the base class subobjects offsets of our sub-branches and set fOffset if we are a containe...
Definition: TBranchElement.cxx:3029
TFileMergeInfo
Definition: TFileMergeInfo.h:42
TBranchElement::GetClonesName
virtual const char * GetClonesName() const
Definition: TBranchElement.h:188
TBranchElement::BuildTitle
void BuildTitle(const char *name)
Set branch and leaf name and title in the case of a container sub-branch.
Definition: TBranchElement.cxx:1132
TBranchElement::GetType
Int_t GetType() const
Definition: TBranchElement.h:202
TBranchElement::PrintValue
void PrintValue(Int_t i) const
Prints values of leaves.
Definition: TBranchElement.cxx:3820
TBranchElement::FillImpl
virtual Int_t FillImpl(ROOT::Internal::TBranchIMTHelper *)
Loop on all leaves of this branch to fill the basket buffer.
Definition: TBranchElement.cxx:1209
TBranchElement::fBranchID
Int_t fBranchID
! ID number assigned by a TRefTable.
Definition: TBranchElement.h:97
TBranchElement::TBranchElement
TBranchElement()
Default and I/O constructor.
Definition: TBranchElement.cxx:131
TBranchElement::ReadLeavesImpl
void ReadLeavesImpl(TBuffer &b)
Unconfiguration Read Leave function.
Definition: TBranchElement.cxx:3906
TBrowser
Definition: TBrowser.h:37
kTRUE
const Bool_t kTRUE
Definition: RtypesCore.h:91
TBranchElement::SetupInfo
void SetupInfo()
Set the value of fInfo.
Definition: TBranchElement.cxx:2085
TBranchElement::GetObject
char * GetObject() const
Return a pointer to our object.
Definition: TBranchElement.cxx:2777
TObject::TestBit
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
Definition: TObject.h:172
TBranchElement::fInInitInfo
Bool_t fInInitInfo
! True during the 2nd part of InitInfo (cut recursion).
Definition: TBranchElement.h:89
Version_t
short Version_t
Definition: RtypesCore.h:65
TBranchElement::GetID
Int_t GetID() const
Definition: TBranchElement.h:194
TBranchElement::GetValuePointer
virtual void * GetValuePointer() const
Returns pointer to first data element of this branch.
Definition: TBranchElement.cxx:2946
TObjArray
Definition: TObjArray.h:37
TBranchElement::SetFillLeavesPtr
void SetFillLeavesPtr()
Set the FillLeaves pointer to execute the expected operations.
Definition: TBranchElement.cxx:5702
TBranchElement::kOwnOnfileObj
@ kOwnOnfileObj
We are the owner of fOnfileObject.
Definition: TBranchElement.h:51
TBranchElement::Init
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.
Definition: TBranchElement.cxx:268
TBranchElement::fStreamerType
Int_t fStreamerType
branch streamer type
Definition: TBranchElement.h:79
TBranchElement::fInfo
TStreamerInfo * fInfo
! Pointer to StreamerInfo
Definition: TBranchElement.h:85
TBranchElement::GetTypedValue
T GetTypedValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
Definition: TBranchElement.cxx:2844
TBranchElement::ValidateAddress
void ValidateAddress() const
Definition: TBranchElement.h:263
TBranchElement::fInitOffsets
Bool_t fInitOffsets
! Initialization flag to not endlessly recalculate offsets
Definition: TBranchElement.h:90
TBranchElement::Notify
virtual Bool_t Notify()
This method must be overridden to handle object notification.
Definition: TBranchElement.h:213
TBranchElement::fClonesClass
TClassRef fClonesClass
! Reference to class definition in fClonesName
Definition: TBranchElement.h:95
TBranchElement
Definition: TBranchElement.h:39
TBranchElement::ReadLeavesMember
void ReadLeavesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4428
TBranchElement::GetCurrentClass
TClass * GetCurrentClass()
Return a pointer to the current type of the data member corresponding to branch element.
Definition: TBranchElement.cxx:2506
TBranchElement::kBaseClassNode
@ kBaseClassNode
Definition: TBranchElement.h:239
TString::Data
const char * Data() const
Definition: TString.h:369
TBranchElement::FillLeavesAssociativeCollectionMember
void FillLeavesAssociativeCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1541
TBranchElement::SwitchContainer
static void SwitchContainer(TObjArray *)
Modify the container type of the branches.
Definition: TBranchElement.cxx:83
TFolder
Definition: TFolder.h:30
tree
Definition: tree.py:1
TBranchElement::FillLeavesCollection
void FillLeavesCollection(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1406
TBranchElement::SetAddressImpl
void SetAddressImpl(void *addr, Bool_t implied)
See TBranchElement::SetAddress.
Definition: TBranchElement.cxx:4862
TBranchElement::SetMissing
virtual void SetMissing()
Set offset of the object (to which the data member represented by this branch belongs) inside its con...
Definition: TBranchElement.cxx:5502
TStreamerInfoActions.h
TBranchElement::ReadLeavesCollection
void ReadLeavesCollection(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4159
TBranchElement::GetTypeName
virtual const char * GetTypeName() const
Return type name of element in the branch.
Definition: TBranchElement.cxx:2794
TBranchElement::kAddressSet
@ kAddressSet
The addressing set have been called for this branch.
Definition: TBranchElement.h:52
TBranchElement::ReadLeavesMakeClass
void ReadLeavesMakeClass(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:3915
TBranch.h
Long64_t
long long Long64_t
Definition: RtypesCore.h:73
TObject::Error
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:890
TTree::GetMakeClass
Int_t GetMakeClass() const
Definition: TTree.h:490
TTree
Definition: TTree.h:79
TBranchElement::ReadLeavesCollectionSplitVectorPtrMember
void ReadLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4290
TBranchElement::Print
virtual void Print(Option_t *option="") const
Print TBranch parameters.
Definition: TBranchElement.cxx:3728
TBranchElement::fParentName
TString fParentName
Name of parent class.
Definition: TBranchElement.h:72
TBranchElement::GetBranchCount
TBranchElement * GetBranchCount() const
Definition: TBranchElement.h:182
Int_t
int Int_t
Definition: RtypesCore.h:45
TBranchElement::fObject
char * fObject
! Pointer to object at *fAddress
Definition: TBranchElement.h:86
TBranchElement::ReadLeavesCollectionMember
void ReadLeavesCollectionMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4321
TBranchElement::fNewIDs
TStreamerInfoActions::TIDs fNewIDs
! Nested List of the serial number of all the StreamerInfo to be used.
Definition: TBranchElement.h:98
TBranchElement::FillLeavesMember
void FillLeavesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1714
TBranchElement::ResetAfterMerge
virtual void ResetAfterMerge(TFileMergeInfo *)
Reset a Branch after a Merge operation (drop data but keep customizations)
Definition: TBranchElement.cxx:4659
TBranchElement::fBranchCount
TBranchElement * fBranchCount
pointer to primary branchcount branch
Definition: TBranchElement.h:83
TBranchElement::SetParentName
virtual void SetParentName(const char *name)
Definition: TBranchElement.h:230
TVirtualArray
Definition: TVirtualArray.h:26
TBranchElement::GetClassVersion
Int_t GetClassVersion()
Definition: TBranchElement.h:209
TBuffer
Definition: TBuffer.h:43
TBranchElement::~TBranchElement
virtual ~TBranchElement()
Destructor.
Definition: TBranchElement.cxx:963
TBranchElement::GetCheckSum
UInt_t GetCheckSum()
Definition: TBranchElement.h:185
TBranchElement::SetOffset
virtual void SetOffset(Int_t offset)
Set offset of the object (to which the data member represented by this branch belongs) inside its con...
Definition: TBranchElement.cxx:5479
TBranchElement::fType
Int_t fType
branch type
Definition: TBranchElement.h:78
TBranchElement::FillLeavesMemberCounter
void FillLeavesMemberCounter(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1677
TBranchElement::GetIconName
const char * GetIconName() const
Return icon name depending on type of branch element.
Definition: TBranchElement.cxx:2745
TLeafElement
Definition: TLeafElement.h:32
TTree.h
TString
Definition: TString.h:136
TBranchElement::fPtrIterators
TVirtualCollectionPtrIterators * fPtrIterators
! holds the iterators when the branch is of fType==4 and it is a split collection of pointers.
Definition: TBranchElement.h:103
TBranchElement::FindBranch
virtual TBranch * FindBranch(const char *name)
Find the immediate sub-branch with passed name.
Definition: TBranchElement.cxx:1767
Bool_t
bool Bool_t
Definition: RtypesCore.h:63
TBranchElement::kLeafNode
@ kLeafNode
Definition: TBranchElement.h:238
TBranchElement::fNdata
Int_t fNdata
! Number of data in this branch
Definition: TBranchElement.h:82
b
#define b(i)
Definition: RSha256.hxx:118
TBranchElement::ReadLeavesClonesMember
void ReadLeavesClonesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4391
TBranchElement::fClassVersion
Version_t fClassVersion
Version number of class.
Definition: TBranchElement.h:76
TBranchElement::kBranchFolder
@ kBranchFolder
Definition: TBranchElement.h:48
bool
TBranchElement::SetTargetClass
virtual void SetTargetClass(const char *name)
Set the name of the class of the in-memory object into which the data will loaded.
Definition: TBranchElement.cxx:5746
TBranchElement::FillLeavesMakeClass
void FillLeavesMakeClass(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1300
TBranchElement::GetValue
Double_t GetValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
Definition: TBranchElement.h:206
TBranchElement::ResetAddress
virtual void ResetAddress()
Set branch address to zero and free all allocated memory.
Definition: TBranchElement.cxx:4672
TBranchElement::SetObject
virtual void SetObject(void *objadd)
Set object this branch is pointing to.
Definition: TBranchElement.cxx:5466
TBranchElement::SetFillActionSequence
void SetFillActionSequence()
Set the sequence of actions needed to write the data out from the buffer.
Definition: TBranchElement.cxx:5654
TBranchElement::fReadActionSequence
TStreamerInfoActions::TActionSequence * fReadActionSequence
! Set of actions to be executed to extract the data from the basket.
Definition: TBranchElement.h:99
TBranchElement::SetupAddressesImpl
void SetupAddressesImpl()
If the branch address is not set, we set all addresses starting with the top level parent branch.
Definition: TBranchElement.cxx:5800
TBranchElement::GetInfo
TStreamerInfo * GetInfo() const
Get streamer info for the branch class.
Definition: TBranchElement.cxx:1012
TBranch
Definition: TBranch.h:89
TBranchElement::GetMaximum
virtual Int_t GetMaximum() const
Return maximum count value of the branchcount if any.
Definition: TBranchElement.cxx:2766
TBranchElement::fFillActionSequence
TStreamerInfoActions::TActionSequence * fFillActionSequence
! Set of actions to be executed to write the data to the basket.
Definition: TBranchElement.h:100
TBranchElement::kCache
@ kCache
Need to pushd/pop fOnfileObject.
Definition: TBranchElement.h:50
TBranchElement::IsObjectOwner
virtual Bool_t IsObjectOwner() const
Definition: TBranchElement.h:212
TBranchElement::SetReadActionSequence
void SetReadActionSequence()
Set the sequence of actions needed to read the data out of the buffer.
Definition: TBranchElement.cxx:5554
TBranchElement::fSTLtype
Int_t fSTLtype
! STL container type
Definition: TBranchElement.h:81
TBranchElement::FillLeavesCollectionMember
void FillLeavesCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1510
Option_t
const typedef char Option_t
Definition: RtypesCore.h:66
TBranchElement::GetClass
virtual TClass * GetClass() const
Definition: TBranchElement.h:187
TBranchElement::fClonesName
TString fClonesName
Name of class in TClonesArray (if any)
Definition: TBranchElement.h:73
TObject::ResetBit
void ResetBit(UInt_t f)
Definition: TObject.h:171
TBranchElement::IsBranchFolder
Bool_t IsBranchFolder() const
Definition: TBranchElement.h:210
TStreamerInfo
Definition: TStreamerInfo.h:44
TBranch::fTree
TTree * fTree
! Pointer to Tree header
Definition: TBranch.h:140
TBranchElement::IsFolder
Bool_t IsFolder() const
Return kTRUE if more than one leaf, kFALSE otherwise.
Definition: TBranchElement.cxx:3649
TBranchElement::fBranchCount2
TBranchElement * fBranchCount2
pointer to secondary branchcount branch
Definition: TBranchElement.h:84
TLeaf
Definition: TLeaf.h:57
TBranchElement::GetCollectionProxy
TVirtualCollectionProxy * GetCollectionProxy()
Return the collection proxy describing the branch content, if any.
Definition: TBranchElement.cxx:2431
TObject::SetBit
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:696
TBranchElement::FindLeaf
virtual TLeaf * FindLeaf(const char *name)
Find the leaf corresponding to the name 'searchname'.
Definition: TBranchElement.cxx:1852
TBranchElement::ResetInitInfo
virtual void ResetInitInfo(bool recurse)
Reset offset and StremerInfo information from this branch.
Definition: TBranchElement.cxx:4723
TTreeCloner
Definition: TTreeCloner.h:29
kFALSE
const Bool_t kFALSE
Definition: RtypesCore.h:92
TBranchElement::SetBasketSize
virtual void SetBasketSize(Int_t buffsize)
Reset the basket size for all sub-branches of this branch element.
Definition: TBranchElement.cxx:5407
TBranchElement::kMakeClass
@ kMakeClass
This branch has been switched to using the MakeClass Mode.
Definition: TBranchElement.h:53
TBranchElement::GetClassName
virtual const char * GetClassName() const
Return the name of the user class whose content is stored in this branch, if any.
Definition: TBranchElement.h:186
TBranchElement::fTargetClass
TClassRef fTargetClass
! Reference to the target in-memory class
Definition: TBranchElement.h:91
TVirtualCollectionIterators
Definition: TVirtualCollectionIterators.h:25
TBranchElement::kDecomposedObj
@ kDecomposedObj
More explicit alias for kMakeClass.
Definition: TBranchElement.h:54
BIT
#define BIT(n)
Definition: Rtypes.h:85
TBranchElement::FillLeavesClonesMember
void FillLeavesClonesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1597
TBranchElement::fID
Int_t fID
element serial number in fInfo
Definition: TBranchElement.h:77
TBranchElement::Unroll
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.
Definition: TBranchElement.cxx:6103
TBranchElement::FindOnfileInfo
TStreamerInfo * FindOnfileInfo(TClass *valueClass, const TObjArray &branches) const
Definition: TBranchElement.cxx:1914
TBranch::fAddress
char * fAddress
! Address of 1st leaf (variable or object)
Definition: TBranch.h:143
TBranchElement::GetMakeClass
Bool_t GetMakeClass() const
Return whether this branch is in a mode where the object are decomposed or not (Also known as MakeCla...
Definition: TBranchElement.cxx:2758
TBranchElement::ReadLeavesMemberBranchCount
void ReadLeavesMemberBranchCount(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4466
TBranchElement::SetReadLeavesPtr
void SetReadLeavesPtr()
Set the ReadLeaves pointer to execute the expected operations.
Definition: TBranchElement.cxx:5602
TBranchElement::Browse
virtual void Browse(TBrowser *b)
Browse the branch content.
Definition: TBranchElement.cxx:1020
unsigned int
TBranchElement::ReleaseObject
void ReleaseObject()
Delete any object we may have allocated on a previous call to SetAddress.
Definition: TBranchElement.cxx:4564
TBranchElement::operator=
TBranchElement & operator=(const TBranchElement &)
TBranchElement::FillLeavesMemberBranchCount
void FillLeavesMemberBranchCount(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1656
TBranchElement::ReadLeavesMemberCounter
void ReadLeavesMemberCounter(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4503
TBranchElement::fBranchClass
TClassRef fBranchClass
! Reference to class definition in fClassName
Definition: TBranchElement.h:94
TBranchElement::GetBranchOffset
Int_t * GetBranchOffset() const
Definition: TBranchElement.h:184
TBranchElement::fIterators
TVirtualCollectionIterators * fIterators
! holds the iterators when the branch is of fType==4.
Definition: TBranchElement.h:101
TBranchElement::ReadLeavesClones
void ReadLeavesClones(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4354
TBranchElement::SetBranchCount2
void SetBranchCount2(TBranchElement *bre)
Definition: TBranchElement.h:124
TBranchElement::kObjectNode
@ kObjectNode
Definition: TBranchElement.h:244
Double_t
double Double_t
Definition: RtypesCore.h:59
TBranchElement::kDeleteObject
@ kDeleteObject
We are the owner of fObject.
Definition: TBranchElement.h:49
TClassRef.h
TBranchElement::GetBranchCount2
TBranchElement * GetBranchCount2() const
Definition: TBranchElement.h:183
TBranchElement::fInit
Bool_t fInit
! Initialization flag for branch assignment
Definition: TBranchElement.h:88
TBranchElement::GetTargetClass
virtual TClass * GetTargetClass()
Definition: TBranchElement.h:204
TClass
Definition: TClass.h:80
TBranchElement::EBranchElementType
EBranchElementType
Definition: TBranchElement.h:237
EDataType
EDataType
Definition: TDataType.h:28
TBranchElement::GetNdata
Int_t GetNdata() const
Definition: TBranchElement.h:201
ROOT::Internal::TBranchIMTHelper
Definition: TBranchIMTHelper.h:38
TBranchElement::FillLeavesCollectionSplitVectorPtrMember
void FillLeavesCollectionSplitVectorPtrMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1449
TBranchElement::SetBranchFolder
virtual void SetBranchFolder()
Definition: TBranchElement.h:225
TStreamerInfoActions::TIDs
std::vector< TIDNode > TIDs
Definition: TStreamerInfoActions.h:138
TBranchElement::ReadLeavesCustomStreamer
void ReadLeavesCustomStreamer(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4539
ClassDef
#define ClassDef(name, id)
Definition: Rtypes.h:325
TBranchElement::GetAddress
virtual char * GetAddress() const
Get the branch address.
Definition: TBranchElement.cxx:1903
TBranchElement::fParentClass
TClassRef fParentClass
! Reference to class definition in fParentName
Definition: TBranchElement.h:93
TBranchElement::GetOnfileObject
TVirtualArray * GetOnfileObject() const
Definition: TBranchElement.h:198
TBranchElement::fOnfileObject
TVirtualArray * fOnfileObject
! Place holder for the onfile representation of data members.
Definition: TBranchElement.h:87
TBranchElement::kSTLNode
@ kSTLNode
Definition: TBranchElement.h:246
name
char name[80]
Definition: TGX11.cxx:110
TBranchElement::SetAddress
virtual void SetAddress(void *addobj)
Point this branch at an object.
Definition: TBranchElement.cxx:4854
TBranchElement::GetParentName
virtual const char * GetParentName() const
Definition: TBranchElement.h:199
TBranchElement::FillLeavesClones
void FillLeavesClones(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1572
ROOT::Math::Chebyshev::T
double T(double x)
Definition: ChebyshevPol.h:52
TBranchElement::kClonesNode
@ kClonesNode
Definition: TBranchElement.h:245
TBranchElement::fMaximum
Int_t fMaximum
Maximum entries for a TClonesArray or variable array.
Definition: TBranchElement.h:80
TBranchElement::fBranchOffset
Int_t * fBranchOffset
! Sub-Branch offsets with respect to current transient class
Definition: TBranchElement.h:96
TClassRef
Definition: TClassRef.h:28
TBranchElement::FillLeavesCustomStreamer
void FillLeavesCustomStreamer(TBuffer &b)
Write leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:1626
TBranchElement::GetExpectedType
virtual Int_t GetExpectedType(TClass *&clptr, EDataType &type)
Fill expectedClass and expectedType with information on the data type of the object/values contained ...
Definition: TBranchElement.cxx:2710
TBranchElement::SetMakeClass
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: TBranchElement.cxx:5445
TBranchElement::Reset
virtual void Reset(Option_t *option="")
Reset a Branch.
Definition: TBranchElement.cxx:4644
TNamed::GetName
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:53
TBranchElement::fClassName
TString fClassName
Class name of referenced object.
Definition: TBranchElement.h:71
type
int type
Definition: TGX11.cxx:121
TBranchElement::SetupAddresses
virtual void SetupAddresses()
If the branch address is not set, we set all addresses starting with the top level parent branch.
Definition: TBranchElement.cxx:5783
TStreamerInfoActions::TActionSequence
Definition: TStreamerInfoActions.h:172
TBranchElement::SetParentClass
void SetParentClass(TClass *clparent)
Definition: TBranchElement.h:257
TBranchElement::ReadLeavesCollectionSplitPtrMember
void ReadLeavesCollectionSplitPtrMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Definition: TBranchElement.cxx:4257
TBranchElement::UpdateFile
virtual void UpdateFile()
Refresh the value of fDirectory (i.e.
Definition: TBranchElement.cxx:6312
TBranchElement::GetStreamerType
Int_t GetStreamerType() const
Definition: TBranchElement.h:203
TBranchElement::fCollProxy
TVirtualCollectionProxy * fCollProxy
! collection interface (if any)
Definition: TBranchElement.h:74
TBranchElement::SetActionSequence
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.
Definition: TBranchElement.cxx:5519
TBranchElement::SetClassName
virtual void SetClassName(const char *name)
Definition: TBranchElement.h:226
TBranchElement::FillLeavesImpl
void FillLeavesImpl(TBuffer &b)
Unconfiguration Fill Leave function.
Definition: TBranchElement.cxx:4556
TBranchElement::IsMissingCollection
Bool_t IsMissingCollection() const
Detect a collection written using a zero pointer in old versions of root.
Definition: TBranchElement.cxx:3667
TBranchElement::GetEntry
virtual Int_t GetEntry(Long64_t entry=0, Int_t getall=0)
Read all branches of a BranchElement and return total number of bytes.
Definition: TBranchElement.cxx:2577
TClonesArray
Definition: TClonesArray.h:29
TBranchElement::fCheckSum
UInt_t fCheckSum
CheckSum of class.
Definition: TBranchElement.h:75
TBranchElement::kSTLMemberNode
@ kSTLMemberNode
Definition: TBranchElement.h:248
TBranchElement::kClonesMemberNode
@ kClonesMemberNode
Definition: TBranchElement.h:247
TBranchElement::GetParentClass
TClass * GetParentClass()
Return a pointer to the parent class of the branch element.
Definition: TBranchElement.cxx:2786
TObject::EStatusBits
EStatusBits
Definition: TObject.h:57
TVirtualCollectionProxy
Definition: TVirtualCollectionProxy.h:38
ROOT::RCompressionSetting::EAlgorithm::kInherit
@ kInherit
Some objects use this value to denote that the compression algorithm should be inherited from the par...
Definition: Compression.h:98
TBranchElement::SetBranchCount
void SetBranchCount(TBranchElement *bre)
Set the branch counter for this branch.
Definition: TBranchElement.cxx:5420
TBranchElement::ResetDeleteObject
virtual void ResetDeleteObject()
Release ownership of any allocated objects.
Definition: TBranchElement.cxx:4706
TBranchElement::SetType
virtual void SetType(Int_t btype)
Definition: TBranchElement.h:233
TBranchElement::fCurrentClass
TClassRef fCurrentClass
! Reference to current (transient) class definition
Definition: TBranchElement.h:92
TVirtualCollectionPtrIterators
Definition: TVirtualCollectionIterators.h:194
int
TBranchElement::InitInfo
virtual void InitInfo()
Init the streamer info for the branch class, try to compensate for class code unload/reload and schem...
Definition: TBranchElement.cxx:2174