ROOT  6.07/01
Reference Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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 #ifndef ROOT_TBranch
25 #include "TBranch.h"
26 #endif
27 
28 #ifndef ROOT_TClassRef
29 #include "TClassRef.h"
30 #endif
31 
32 #ifndef ROOT_TTree
33 #include "TTree.h"
34 #endif
35 
36 #ifndef ROOT_TError
37 #include "TError.h"
38 #endif
39 
40 #include <vector>
41 
42 class TFolder;
43 class TStreamerInfo;
47 class TVirtualArray;
48 
49 namespace TStreamerInfoActions { class TActionSequence; }
50 
51 
52 class TBranchElement : public TBranch {
53 
54 // Friends
55  friend class TTreeCloner;
56 
57 // Types
58 protected:
59  enum {
61  kDeleteObject = BIT(16), // We are the owner of fObject.
62  kCache = BIT(18), // Need to pushd/pop fOnfileObject.
63  kOwnOnfileObj = BIT(19), // We are the owner of fOnfileObject.
64  kAddressSet = BIT(20), // The addressing set have been called for this branch
65  kMakeClass = BIT(21), // This branch has been switched to using the MakeClass Mode
66  kDecomposedObj= BIT(21) // More explicit alias for kMakeClass.
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; //! Initialization flag for branch assignment
89  Bool_t fInitOffsets; //! Initialization flag to not endlessly recalculate offsets
90  TClassRef fTargetClass; //! Reference to the target in-memory class
91  TClassRef fCurrentClass; //! Reference to current (transient) class definition
92  TClassRef fParentClass; //! Reference to class definition in fParentName
93  TClassRef fBranchClass; //! Reference to class definition in fClassName
94  TClassRef fClonesClass; //! Reference to class definition in fClonesName
95  Int_t *fBranchOffset; //! Sub-Branch offsets with respect to current transient class
96  Int_t fBranchID; //! ID number assigned by a TRefTable.
97  std::vector<Int_t> fIDs; //! List of the serial number of all the StreamerInfo to be used.
98  TStreamerInfoActions::TActionSequence *fReadActionSequence; //! Set of actions to be executed to extract the data from the basket.
99  TStreamerInfoActions::TActionSequence *fFillActionSequence; //! Set of actions to be executed to write the data to the basket.
100  TVirtualCollectionIterators *fIterators; //! holds the iterators when the branch is of fType==4.
101  TVirtualCollectionIterators *fWriteIterators;//! holds the read (non-staging) iterators when the branch is of fType==4 and associative containers.
102  TVirtualCollectionPtrIterators *fPtrIterators; //! holds the iterators when the branch is of fType==4 and it is a split collection of pointers.
103 
104 // Not implemented
105 private:
106  TBranchElement(const TBranchElement&); // not implemented
107  TBranchElement& operator=(const TBranchElement&); // not implemented
108 
109  static void SwitchContainer(TObjArray *);
110 
111 // Implementation use only functions.
112 protected:
113  void BuildTitle(const char* name);
114  virtual void InitializeOffsets();
115  virtual void InitInfo();
116  Bool_t IsMissingCollection() const;
117  TClass *GetParentClass(); // Class referenced by fParentName
118  TStreamerInfo *GetInfoImp() const;
119  void ReleaseObject();
120  void SetBranchCount(TBranchElement* bre);
122  Int_t Unroll(const char* name, TClass* cltop, TClass* cl, char* ptr, Int_t basketsize, Int_t splitlevel, Int_t btype);
123  inline void ValidateAddress() const;
124 
125  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);
126  void Init(TTree *tree, TBranch *parent, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
127  void Init(TTree *tree, TBranch *parent, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
128 
129  void ReadLeavesImpl(TBuffer& b);
130  void ReadLeavesMakeClass(TBuffer& b);
131  void ReadLeavesCollection(TBuffer& b);
135  void ReadLeavesClones(TBuffer& b);
138  void ReadLeavesMember(TBuffer& b);
141  void SetReadLeavesPtr();
142  void SetReadActionSequence();
143  void SetupAddressesImpl();
144 
145  void FillLeavesImpl(TBuffer& b);
146  void FillLeavesMakeClass(TBuffer& b);
147  void FillLeavesCollection(TBuffer& b);
152  void FillLeavesClones(TBuffer& b);
157  void FillLeavesMember(TBuffer& b);
158  void SetFillLeavesPtr();
159  void SetFillActionSequence();
160 // Public Interface.
161 public:
162  TBranchElement();
163  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);
164  TBranchElement(TTree *tree, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
165  TBranchElement(TTree *tree, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
166  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);
167  TBranchElement(TBranch *parent, const char* name, TClonesArray* clones, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
168  TBranchElement(TBranch *parent, const char* name, TVirtualCollectionProxy* cont, Int_t basketsize = 32000, Int_t splitlevel = 0, Int_t compress = -1);
169 
170  virtual ~TBranchElement();
171 
172  virtual void Browse(TBrowser* b);
173  virtual Int_t Fill();
174  virtual TBranch *FindBranch(const char *name);
175  virtual TLeaf *FindLeaf(const char *name);
176  virtual char *GetAddress() const;
179  Int_t *GetBranchOffset() const { return fBranchOffset; }
181  virtual const char *GetClassName() const { return fClassName.Data(); }
182  virtual TClass *GetClass() const { return fBranchClass; }
183  virtual const char *GetClonesName() const { return fClonesName.Data(); }
185  TClass *GetCurrentClass(); // Class referenced by transient description
186  virtual Int_t GetEntry(Long64_t entry = 0, Int_t getall = 0);
187  virtual Int_t GetExpectedType(TClass *&clptr,EDataType &type);
188  const char *GetIconName() const;
189  Int_t GetID() const { return fID; }
190  TStreamerInfo *GetInfo() const;
191  Bool_t GetMakeClass() const;
192  char *GetObject() const;
193  virtual const char *GetParentName() const { return fParentName.Data(); }
194  virtual Int_t GetMaximum() const;
195  Int_t GetNdata() const { return fNdata; }
196  Int_t GetType() const { return fType; }
197  Int_t GetStreamerType() const { return fStreamerType; }
198  virtual TClass *GetTargetClass() { return fTargetClass; }
199  virtual const char *GetTypeName() const;
200  Double_t GetValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const { return GetTypedValue<Double_t>(i, len, subarr); }
201  template<typename T > T GetTypedValue(Int_t i, Int_t len, Bool_t subarr = kFALSE) const;
202  virtual void *GetValuePointer() const;
205  Bool_t IsFolder() const;
206  virtual Bool_t IsObjectOwner() const { return TestBit(kDeleteObject); }
207  virtual Bool_t Notify() { if (fAddress) { ResetAddress(); } return 1; }
208  virtual void Print(Option_t* option = "") const;
209  void PrintValue(Int_t i) const;
210  virtual void Reset(Option_t* option = "");
211  virtual void ResetAfterMerge(TFileMergeInfo *);
212  virtual void ResetAddress();
213  virtual void ResetDeleteObject();
214  virtual void SetAddress(void* addobj);
215  virtual Bool_t SetMakeClass(Bool_t decomposeObj = kTRUE);
216  virtual void SetObject(void *objadd);
217  virtual void SetBasketSize(Int_t buffsize);
218  virtual void SetBranchFolder() { SetBit(kBranchFolder); }
219  virtual void SetClassName(const char* name) { fClassName = name; }
220  virtual void SetOffset(Int_t offset);
221  inline void SetParentClass(TClass* clparent);
222  virtual void SetParentName(const char* name) { fParentName = name; }
223  virtual void SetTargetClass(const char *name);
224  virtual void SetupAddresses();
225  virtual void SetType(Int_t btype) { fType = btype; }
226  virtual void UpdateFile();
227 
230  kBaseClassNode = 1, // -- We are a base class element.
231  // Note: This does not include an STL container class which is
232  // being used as a base class because the streamer element
233  // in that case is not the base streamer element it is the
234  // STL streamer element.
237  kSTLNode = 4,
240  };
241 
242  ClassDef(TBranchElement,10) // Branch in case of an object
243 };
244 
246 {
247  fParentClass = clparent;
248  fParentName = clparent ? clparent->GetName() : "";
249 }
250 
252 {
253  // Check to see if the user changed the object pointer without telling us.
254 
255  if (fID < 0) {
256  // We are a top-level branch.
257  if (!fTree->GetMakeClass() && fAddress && (*((char**) fAddress) != fObject)) {
258  // The semantics of fAddress and fObject are violated.
259  // Assume the user changed the pointer on us.
260  // Note: The cast is here because we want to be able to
261  // be called from the constant get functions.
262 
263  // FIXME: Disable the check/warning TTree until we add a missing interface.
264  if (TestBit(kDeleteObject)) {
265  // This should never happen!
266  Error("ValidateAddress", "We owned an object whose address changed! our ptr: %p new ptr: %p",
267  (void*)fObject, (void*)*((char**) fAddress));
268  const_cast<TBranchElement*>(this)->ResetBit(kDeleteObject);
269  }
270  const_cast<TBranchElement*>(this)->SetAddress(fAddress);
271  }
272  }
273 }
274 
275 #endif // ROOT_TBranchElement
Describe Streamer information for one class version.
Definition: TStreamerInfo.h:47
TClassRef fTargetClass
Initialization flag to not endlessly recalculate offsets.
Int_t GetNdata() const
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition: TLeaf.h:37
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 FillLeavesAssociativeCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
A TFolder object is a collection of objects and folders.
Definition: TFolder.h:32
An array of TObjects.
Definition: TObjArray.h:39
virtual void Print(Option_t *option="") const
Print branch parameters.
TBranchElement * fBranchCount2
TVirtualCollectionProxy * GetCollectionProxy()
Return the collection proxy describing the branch content, if any.
virtual void * GetValuePointer() const
Returns pointer to first data element of this branch.
T GetTypedValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
virtual TLeaf * FindLeaf(const char *name)
Find the leaf corresponding to the name 'searchname'.
long long Long64_t
Definition: RtypesCore.h:69
Int_t GetID() 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.
short Version_t
Definition: RtypesCore.h:61
virtual TClass * GetTargetClass()
ClassDef(TBranch, 12)
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
tuple offset
Definition: tree.py:93
Double_t GetValue(Int_t i, Int_t len, Bool_t subarr=kFALSE) const
TBranchElement * GetBranchCount2() const
char * GetObject() const
Return a pointer to our object.
TString fParentName
virtual void Reset(Option_t *option="")
Reset a Branch.
#define BIT(n)
Definition: Rtypes.h:120
Buffer base class used for serializing objects.
Definition: TBuffer.h:42
void FillLeavesCollectionMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
void FillLeavesCustomStreamer(TBuffer &b)
Write leaves into i/o buffers for this branch.
Bool_t IsMissingCollection() const
Detect a collection written using a zero pointer in old versions of root.
Basic string class.
Definition: TString.h:137
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
const Bool_t kFALSE
Definition: Rtypes.h:92
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.
void PrintValue(Int_t i) const
Prints values of leaves.
UInt_t fCheckSum
collection interface (if any)
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...
TStreamerInfoActions::TActionSequence * fFillActionSequence
Set of actions to be executed to extract the data from the basket.
Bool_t fInit
Place holder for the onfile representation of data members.
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
Definition: TObject.cxx:732
void ReadLeavesClones(TBuffer &b)
Read leaves into i/o buffers for this branch.
void ReadLeavesCustomStreamer(TBuffer &b)
Read leaves into i/o buffers for this branch.
virtual const char * GetClonesName() const
void FillLeavesCollection(TBuffer &b)
Write leaves into i/o buffers for this branch.
TBranchElement * GetBranchCount() const
TTree * T
const char * Data() const
Definition: TString.h:349
virtual void SetBranchFolder()
void ReadLeavesMemberBranchCount(TBuffer &b)
Read leaves into i/o buffers for this branch.
Int_t fNdata
STL container type.
TVirtualArray * fOnfileObject
Pointer to object at *fAddress.
void SetFillActionSequence()
Set the sequence of actions needed to write the data out from the buffer.
TStreamerInfoActions::TActionSequence * fReadActionSequence
List of the serial number of all the StreamerInfo to be used.
TStreamerInfo * GetInfo() const
Get streamer info for the branch class.
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.
virtual const char * GetParentName() const
Int_t * fBranchOffset
Reference to class definition in fClonesName.
TVirtualCollectionProxy * fCollProxy
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
void FillLeavesMemberCounter(TBuffer &b)
Write leaves into i/o buffers for this branch.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:918
void FillLeavesMemberBranchCount(TBuffer &b)
Write leaves into i/o buffers for this branch.
TString fClassName
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)
TString fClonesName
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.
Bool_t GetMakeClass() const
Return whether this branch is in a mode where the object are decomposed or not (Also known as MakeCla...
TBranchElement & operator=(const TBranchElement &)
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:41
void SetParentClass(TClass *clparent)
virtual Int_t Fill()
Loop on all leaves of this branch to fill the basket buffer.
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)
TClassRef fParentClass
Reference to current (transient) class definition.
virtual void UpdateFile()
Refresh the value of fDirectory (i.e.
Bool_t IsFolder() const
Return kTRUE if more than one leaf, kFALSE otherwise.
TBranchElement * fBranchCount
Number of data in this branch.
TClass * GetParentClass()
Return a pointer to the parent class of the branch element.
unsigned int UInt_t
Definition: RtypesCore.h:42
Bool_t TestBit(UInt_t f) const
Definition: TObject.h:173
void SetReadLeavesPtr()
Set the ReadLeaves pointer to execute the expected operations.
virtual Bool_t IsObjectOwner() const
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 the target in-memory class.
virtual const char * GetName() const
Returns name of object.
Definition: TNamed.h:51
The ROOT global object gROOT contains a list of all defined classes.
Definition: TClass.h:81
TClassRef fBranchClass
Reference to class definition in fParentName.
Long64_t entry
Int_t * GetBranchOffset() const
virtual Int_t GetMaximum() const
Return maximum count value of the branchcount if any.
void ValidateAddress() const
virtual TClass * GetClass() const
TStreamerInfo * GetInfoImp() const
Get streamer info for the branch class.
A Branch for the case of an object.
void SetBranchCount(TBranchElement *bre)
Set the branch counter for this branch.
tuple tree
Definition: tree.py:24
virtual const char * GetTypeName() const
Return type name of element in the branch.
const char * GetIconName() const
Return icon name depending on type of branch element.
virtual void SetClassName(const char *name)
double Double_t
Definition: RtypesCore.h:55
void FillLeavesMember(TBuffer &b)
Write leaves into i/o buffers for this branch.
int type
Definition: TGX11.cxx:120
void SetBranchCount2(TBranchElement *bre)
virtual void SetObject(void *objadd)
Set object this branch is pointing to.
Int_t fBranchID
Sub-Branch offsets with respect to current transient class.
std::vector< Int_t > fIDs
ID number assigned by a TRefTable.
EDataType
Definition: TDataType.h:30
TBranchElement()
Default and I/O constructor.
TTree * fTree
Definition: TBranch.h:94
virtual const char * GetClassName() const
Return the name of the user class whose content is stored in this branch, if any. ...
TClassRef fClonesClass
Reference to class definition in fClassName.
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...
#define name(a, b)
Definition: linkTestLib0.cpp:5
void ReadLeavesMakeClass(TBuffer &b)
Read leaves into i/o buffers for this branch.
Bool_t fInitOffsets
Initialization flag for branch assignment.
TClassRef is used to implement a permanent reference to a TClass object.
Definition: TClassRef.h:33
An array of clone (identical) objects.
Definition: TClonesArray.h:32
Int_t GetType() const
Class implementing or helping the various TTree cloning method.
Definition: TTreeCloner.h:39
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.
virtual char * GetAddress() const
Get the branch address.
Int_t GetClassVersion()
void FillLeavesImpl(TBuffer &b)
Unconfiguration Fill Leave function.
TVirtualCollectionIterators * fWriteIterators
holds the iterators when the branch is of fType==4.
TVirtualCollectionIterators * fIterators
Set of actions to be executed to write the data to the basket.
char * fObject
Pointer to StreamerInfo.
A TTree object has a header with a name and a title.
Definition: TTree.h:98
void ResetBit(UInt_t f)
Definition: TObject.h:172
Int_t GetMakeClass() const
Definition: TTree.h:416
virtual void SetParentName(const char *name)
A TTree is a list of TBranches.
Definition: TBranch.h:58
const Bool_t kTRUE
Definition: Rtypes.h:91
TVirtualCollectionPtrIterators * fPtrIterators
holds the read (non-staging) iterators when the branch is of fType==4 and associative containers...
virtual Bool_t Notify()
This method must be overridden to handle object notification.
TStreamerInfo * fInfo
void ReadLeavesMember(TBuffer &b)
Read leaves into i/o buffers for this branch.
Int_t GetStreamerType() const
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.
char * fAddress
Pointer to parent branch.
Definition: TBranch.h:97