Logo ROOT  
Reference Guide
 
Loading...
Searching...
No Matches
TFormLeafInfo.h
Go to the documentation of this file.
1// @(#)root/treeplayer:$Id$
2// Author: Philippe Canal 01/06/2004
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, Rene Brun and Fons Rademakers and al. *
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_TFormLeafInfo
13#define ROOT_TFormLeafInfo
14
15#include "TObject.h"
16
17#include "TLeafElement.h"
18
19#include "TArrayI.h"
20#include "TDataType.h"
21#include "TStreamerInfo.h"
22#include "TStreamerElement.h"
23
24
25// declare the extra versions of GetValue() plus templated implementation
26#define DECLARE_GETVAL \
27 virtual Double_t GetValue(TLeaf *leaf, Int_t instance = 0) \
28 { return GetValueImpl<Double_t>(leaf, instance); } \
29 virtual Long64_t GetValueLong64(TLeaf *leaf, Int_t instance = 0) \
30 { return GetValueImpl<Long64_t>(leaf, instance); } \
31 virtual LongDouble_t GetValueLongDouble(TLeaf *leaf, Int_t instance = 0) \
32 { return GetValueImpl<LongDouble_t>(leaf, instance); } \
33 template<typename T> T GetValueImpl(TLeaf *leaf, Int_t instance = 0) // no semicolon
34
35
36// declare the extra versions of ReadValue() plus templated implementation
37#define DECLARE_READVAL \
38 virtual Double_t ReadValue(char *where, Int_t instance = 0) \
39 { return ReadValueImpl<Double_t>(where, instance); } \
40 virtual Long64_t ReadValueLong64(char *where, Int_t instance = 0) \
41 { return ReadValueImpl<Long64_t>(where, instance); } \
42 virtual LongDouble_t ReadValueLongDouble(char *where, Int_t instance = 0) \
43 { return ReadValueImpl<LongDouble_t>(where, instance); } \
44 template<typename T> T ReadValueImpl(char *where, Int_t instance = 0) // no semicolon
45
46
47
48
49class TFormLeafInfo : public TObject {
50public:
51 // Constructors
52 TFormLeafInfo(TClass* classptr = 0, Longptr_t offset = 0,
53 TStreamerElement* element = 0);
54 TFormLeafInfo(const TFormLeafInfo& orig);
55 virtual TFormLeafInfo* DeepCopy() const;
56 virtual ~TFormLeafInfo();
57
58 void Swap(TFormLeafInfo &other);
60
61 // Data Members
62 TClass *fClass; ///<! This is the class of the data pointed to
63 //TStreamerInfo *fInfo; ///<! == fClass->GetStreamerInfo()
64 Longptr_t fOffset; ///<! Offset of the data pointed inside the class fClass
65 TStreamerElement *fElement; ///<! Descriptor of the data pointed to.
66 //Warning, the offset in fElement is NOT correct because it does not take into
67 //account base classes and nested objects (which fOffset does).
69 TFormLeafInfo *fNext; ///< follow this to grab the inside information
72
73protected:
75public:
76
77 virtual void AddOffset(Int_t offset, TStreamerElement* element);
78
79 virtual Int_t GetArrayLength();
80 virtual TClass* GetClass() const;
81 virtual Int_t GetCounterValue(TLeaf* leaf);
82 virtual Int_t ReadCounterValue(char *where);
83
84 char* GetObjectAddress(TLeafElement* leaf, Int_t &instance);
85
87
88 // Currently only implemented in TFormLeafInfoCast
89 Int_t GetNdata(TLeaf* leaf);
90 virtual Int_t GetNdata();
91
92 virtual void *GetValuePointer(TLeaf *leaf, Int_t instance = 0);
93 virtual void *GetValuePointer(char *from, Int_t instance = 0);
94 virtual void *GetLocalValuePointer(TLeaf *leaf, Int_t instance = 0);
95 virtual void *GetLocalValuePointer( char *from, Int_t instance = 0);
96
97 virtual Bool_t HasCounter() const;
98 virtual Bool_t IsString() const;
99
100 virtual Bool_t IsInteger() const;
101 virtual Bool_t IsReference() const { return kFALSE; }
102
103 // Method for multiple variable dimensions.
104 virtual Int_t GetPrimaryIndex();
105 virtual Int_t GetVarDim();
106 virtual Int_t GetVirtVarDim();
107 virtual Int_t GetSize(Int_t index);
108 virtual Int_t GetSumOfSizes();
109 virtual void LoadSizes(TBranch* branch);
110 virtual void SetPrimaryIndex(Int_t index);
111 virtual void SetSecondaryIndex(Int_t index);
112 virtual void SetSize(Int_t index, Int_t val);
113 virtual void SetBranch(TBranch* br) { if ( fNext ) fNext->SetBranch(br); }
114 virtual void UpdateSizes(TArrayI *garr);
115
116 virtual Bool_t Update();
117
120
121 template <typename T> struct ReadValueHelper {
122 static T Exec(TFormLeafInfo *leaf, char *where, Int_t instance) {
123 return leaf->ReadValue(where, instance);
124 }
125 };
126 template <typename T > T ReadTypedValue(char *where, Int_t instance = 0) {
127 return ReadValueHelper<T>::Exec(this, where, instance);
128 }
129
130 template <typename T> struct GetValueHelper {
131 static T Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance) {
132 return linfo->GetValue(leaf, instance);
133 }
134 };
135 template <typename T > T GetTypedValue(TLeaf *leaf, Int_t instance = 0) {
136 return GetValueHelper<T>::Exec(this, leaf, instance);
137 }
138};
139
140
142 static Long64_t Exec(TFormLeafInfo *leaf, char *where, Int_t instance) { return leaf->ReadValueLong64(where, instance); }
143};
145 static ULong64_t Exec(TFormLeafInfo *leaf, char *where, Int_t instance) { return (ULong64_t)leaf->ReadValueLong64(where, instance); }
146};
148 static LongDouble_t Exec(TFormLeafInfo *leaf, char *where, Int_t instance) { return leaf->ReadValueLongDouble(where, instance); }
149};
150
152 static Long64_t Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance) { return linfo->GetValueLong64(leaf, instance); }
153};
155 static ULong64_t Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance) { return (ULong64_t)linfo->GetValueLong64(leaf, instance); }
156};
158 static LongDouble_t Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance) { return linfo->GetValueLongDouble(leaf, instance); }
159};
160
161// TFormLeafInfoDirect is a small helper class to implement reading a data
162// member on an object stored in a TTree.
163
165public:
167 // The implicit default constructor's implementation is correct.
168
169 virtual TFormLeafInfo* DeepCopy() const;
170
172 virtual void *GetLocalValuePointer(TLeaf *leaf, Int_t instance = 0);
173 virtual void *GetLocalValuePointer(char *thisobj, Int_t instance = 0);
174
175 virtual Double_t ReadValue(char * /*where*/, Int_t /*instance*/= 0);
176 virtual Long64_t ReadValueLong64(char *where, Int_t i= 0) { return ReadValue(where, i); }
177 virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i= 0) { return ReadValue(where, i); }
178
179};
180
181// TFormLeafInfoNumerical is a small helper class to implement reading a
182// numerical value inside a collection
183
187public:
191
192 virtual TFormLeafInfo* DeepCopy() const;
193 void Swap(TFormLeafInfoNumerical &other);
195
196 virtual ~TFormLeafInfoNumerical();
197
198 virtual Bool_t IsString() const;
199 virtual Bool_t Update();
200};
201
202// TFormLeafInfoCollectionObject
203// This class is used when we are interested by the collection it self and
204// it is split.
205
207 Bool_t fTop; //If true, it indicates that the branch itself contains
208public:
211
214
215 virtual TFormLeafInfo* DeepCopy() const {
216 return new TFormLeafInfoCollectionObject(*this);
217 }
218
220 virtual Int_t GetCounterValue(TLeaf* leaf);
221 virtual Double_t ReadValue(char *where, Int_t instance = 0);
222 virtual Long64_t ReadValueLong64(char *where, Int_t i= 0) { return ReadValue(where, i); }
223 virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i= 0) { return ReadValue(where, i); }
224 virtual void *GetValuePointer(TLeaf *leaf, Int_t instance = 0);
225 virtual void *GetValuePointer(char *thisobj, Int_t instance = 0);
226 virtual void *GetLocalValuePointer(TLeaf *leaf, Int_t instance = 0);
227 virtual void *GetLocalValuePointer(char *thisobj, Int_t instance = 0);
228};
229
230// TFormLeafInfoClones is a small helper class to implement reading a data
231// member on a TClonesArray object stored in a TTree.
232
234 Bool_t fTop; //If true, it indicates that the branch itself contains
235public:
236 //either the clonesArrays or something inside the clonesArray
237 TFormLeafInfoClones(TClass* classptr = 0, Longptr_t offset = 0);
238 TFormLeafInfoClones(TClass* classptr, Longptr_t offset, Bool_t top);
239 TFormLeafInfoClones(TClass* classptr, Longptr_t offset, TStreamerElement* element,
240 Bool_t top = kFALSE);
242
243 void Swap(TFormLeafInfoClones &other);
245
246 virtual TFormLeafInfo* DeepCopy() const {
247 return new TFormLeafInfoClones(*this);
248 }
249
252 virtual Int_t GetCounterValue(TLeaf* leaf);
253 virtual Int_t ReadCounterValue(char *where);
254 virtual void *GetValuePointer(TLeaf *leaf, Int_t instance = 0);
255 virtual void *GetValuePointer(char *thisobj, Int_t instance = 0);
256 virtual void *GetLocalValuePointer(TLeaf *leaf, Int_t instance = 0);
257 virtual void *GetLocalValuePointer(char *thisobj, Int_t instance = 0);
258};
259
260// TFormLeafInfoCollection is a small helper class to implement reading a data member
261// on a generic collection object stored in a TTree.
262
264 Bool_t fTop; //If true, it indicates that the branch itself contains
265 //either the clonesArrays or something inside the clonesArray
270public:
271
273 Longptr_t offset,
274 TStreamerElement* element,
275 Bool_t top = kFALSE);
276
277 TFormLeafInfoCollection(TClass* motherclassptr,
278 Longptr_t offset = 0,
279 TClass* elementclassptr = 0,
280 Bool_t top = kFALSE);
281
284
286
287 void Swap(TFormLeafInfoCollection &other);
289
290 virtual TFormLeafInfo* DeepCopy() const;
291
292 virtual Bool_t Update();
293
296 virtual Int_t GetCounterValue(TLeaf* leaf);
297 virtual Int_t ReadCounterValue(char* where);
298 virtual Int_t GetCounterValue(TLeaf* leaf, Int_t instance);
299 virtual Bool_t HasCounter() const;
300 virtual void *GetValuePointer(TLeaf *leaf, Int_t instance = 0);
301 virtual void *GetValuePointer(char *thisobj, Int_t instance = 0);
302 virtual void *GetLocalValuePointer(TLeaf *leaf, Int_t instance = 0);
303 virtual void *GetLocalValuePointer(char *thisobj, Int_t instance = 0);
304};
305
306// TFormLeafInfoCollectionSize is used to return the size of a collection
307
312public:
317
319
322
323 virtual TFormLeafInfo* DeepCopy() const;
324
325 virtual Bool_t Update();
326
327 virtual void *GetValuePointer(TLeaf *leaf, Int_t instance = 0);
328 virtual void *GetValuePointer(char *from, Int_t instance = 0);
329 virtual void *GetLocalValuePointer(TLeaf *leaf, Int_t instance = 0);
330 virtual void *GetLocalValuePointer( char *from, Int_t instance = 0);
331 virtual Double_t ReadValue(char *where, Int_t instance = 0);
332 virtual Long64_t ReadValueLong64(char *where, Int_t i= 0) { return ReadValue(where, i); }
333 virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i= 0) { return ReadValue(where, i); }
334};
335
336// TFormLeafInfoPointer is a small helper class to implement reading a data
337// member by following a pointer inside a branch of TTree.
338
340public:
341 TFormLeafInfoPointer(TClass* classptr = 0, Longptr_t offset = 0,
342 TStreamerElement* element = 0);
343 // The default copy constructor is the right implementation.
344
345 virtual TFormLeafInfo* DeepCopy() const;
346
349};
350
351// TFormLeafInfoMethod is a small helper class to implement executing a method
352// of an object stored in a TTree
353
355
364
365public:
366 static TClass *ReturnTClass(TMethodCall *mc);
367
368 TFormLeafInfoMethod(TClass* classptr = 0, TMethodCall *method = 0);
371
372 void Swap(TFormLeafInfoMethod &other);
374
375 virtual TFormLeafInfo* DeepCopy() const;
376
378 virtual TClass* GetClass() const;
379 virtual void *GetLocalValuePointer( TLeaf *from, Int_t instance = 0);
380 virtual void *GetLocalValuePointer(char *from, Int_t instance = 0);
381 virtual Bool_t IsInteger() const;
382 virtual Bool_t IsString() const;
383 virtual Bool_t Update();
384};
385
386// TFormLeafInfoMultiVarDim is a small helper class to implement reading a
387// data member on a variable size array inside a TClonesArray object stored in
388// a TTree. This is the version used when the data member is inside a
389// non-split object.
390
392public:
394 TArrayI fSizes; // Array of sizes of the variable dimension
395 TFormLeafInfo *fCounter2; // Information on how to read the secondary dimensions
396 Int_t fSumOfSizes; // Sum of the content of fSizes
397 Int_t fDim; // physical number of the dimension that is variable
398 Int_t fVirtDim; // number of the virtual dimension to which this object correspond.
399 Int_t fPrimaryIndex; // Index of the dimensions that is indexing the second dimension's size
400 Int_t fSecondaryIndex; // Index of the second dimension
401
402protected:
404 TStreamerElement* element) : TFormLeafInfo(classptr,offset,element),fNsize(0),fSizes(),fCounter2(0),fSumOfSizes(0),fDim(0),fVirtDim(0),fPrimaryIndex(-1),fSecondaryIndex(-1) {}
405
406public:
407 TFormLeafInfoMultiVarDim(TClass* classptr, Longptr_t offset,
408 TStreamerElement* element, TFormLeafInfo* parent);
412
413 void Swap(TFormLeafInfoMultiVarDim &other);
415
416 virtual TFormLeafInfo* DeepCopy() const;
417
418 /* The proper indexing and unwinding of index is done by prior leafinfo in the chain. */
419 //virtual Double_t ReadValue(char *where, Int_t instance = 0) {
420 // return TFormLeafInfo::ReadValue(where,instance);
421 //}
422
423 virtual void LoadSizes(TBranch* branch);
424 virtual Int_t GetPrimaryIndex();
425 virtual void SetPrimaryIndex(Int_t index);
426 virtual void SetSecondaryIndex(Int_t index);
427 virtual void SetSize(Int_t index, Int_t val);
428 virtual Int_t GetSize(Int_t index);
429 virtual Int_t GetSumOfSizes();
430 virtual Double_t GetValue(TLeaf * /*leaf*/, Int_t /*instance*/ = 0);
431 virtual Long64_t GetValueLong64(TLeaf *leaf, Int_t i= 0) { return GetValue(leaf, i); }
432 virtual LongDouble_t GetValueLongDouble(TLeaf *leaf, Int_t i= 0) { return GetValue(leaf, i); }
433 virtual Int_t GetVarDim();
434 virtual Int_t GetVirtVarDim();
435 virtual Bool_t Update();
436 virtual void UpdateSizes(TArrayI *garr);
437};
438
439// TFormLeafInfoMultiVarDimDirect is a small helper class to implement reading
440// a data member on a variable size array inside a TClonesArray object stored
441// in a TTree. This is the version used for split access
442
444public:
445 // The default constructor are the correct implementation.
446
447 virtual TFormLeafInfo* DeepCopy() const;
448
450 virtual Double_t ReadValue(char * /*where*/, Int_t /*instance*/ = 0);
451 virtual Long64_t ReadValueLong64(char *where, Int_t i= 0) { return ReadValue(where, i); }
452 virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i= 0) { return ReadValue(where, i); }
453};
454
455// TFormLeafInfoMultiVarDimCollection is a small helper class to implement reading
456// a data member which is a collection inside a TClonesArray or collection object
457// stored in a TTree. This is the version used for split access
458//
460public:
462 TClass* elementclassptr, TFormLeafInfo *parent);
464 TStreamerElement* element, TFormLeafInfo* parent);
465 // The default copy constructor is the right implementation.
466
467 virtual TFormLeafInfo* DeepCopy() const;
468
469 virtual Int_t GetArrayLength() { return 0; }
470 virtual void LoadSizes(TBranch* branch);
471 virtual Double_t GetValue(TLeaf *leaf, Int_t instance = 0);
472 virtual Long64_t GetValueLong64(TLeaf *leaf, Int_t i= 0) { return GetValue(leaf, i); }
473 virtual LongDouble_t GetValueLongDouble(TLeaf *leaf, Int_t i= 0) { return GetValue(leaf, i); }
475};
476
477// TFormLeafInfoMultiVarDimClones is a small helper class to implement reading
478// a data member which is a TClonesArray inside a TClonesArray or collection object
479// stored in a TTree. This is the version used for split access
480//
482public:
483 TFormLeafInfoMultiVarDimClones(TClass* motherclassptr, Longptr_t offset,
484 TClass* elementclassptr, TFormLeafInfo *parent);
486 TStreamerElement* element, TFormLeafInfo* parent);
487 // The default copy constructor is the right implementation.
488
489 virtual TFormLeafInfo* DeepCopy() const;
490
491 virtual Int_t GetArrayLength() { return 0; }
492 virtual void LoadSizes(TBranch* branch);
493 virtual Double_t GetValue(TLeaf *leaf, Int_t instance = 0);
494 virtual Long64_t GetValueLong64(TLeaf *leaf, Int_t i= 0) { return GetValue(leaf, i); }
495 virtual LongDouble_t GetValueLongDouble(TLeaf *leaf, Int_t i= 0) { return GetValue(leaf, i); }
497};
498
499// TFormLeafInfoCast is a small helper class to implement casting an object to
500// a different type (equivalent to dynamic_cast)
501
503public:
504 TClass *fCasted; //! Pointer to the class we are trying to case to
505 TString fCastedName; //! Name of the class we are casting to.
506 Bool_t fGoodCast; //! Marked by ReadValue.
507 Bool_t fIsTObject; //! Indicated whether the fClass inherits from TObject.
508
509 TFormLeafInfoCast(TClass* classptr = 0, TClass* casted = 0);
511 virtual ~TFormLeafInfoCast();
512
513 void Swap(TFormLeafInfoCast &other);
515
516 virtual TFormLeafInfo* DeepCopy() const;
517
519 // Currently only implemented in TFormLeafInfoCast
520 virtual Int_t GetNdata();
521 virtual Bool_t Update();
522};
523
524// TFormLeafInfoTTree is a small helper class to implement reading
525// from the containing TTree object itself.
526
531
532public:
533 TFormLeafInfoTTree(TTree *tree = 0, const char *alias = 0, TTree *current = 0);
535
538
539 virtual TFormLeafInfo* DeepCopy() const;
540
542 using TFormLeafInfo::GetValue;
543
546 virtual void *GetLocalValuePointer(TLeaf *leaf, Int_t instance = 0);
547 virtual Bool_t Update();
548};
549
550
551#endif /* ROOT_TFormLeafInfo */
552
int Int_t
Definition RtypesCore.h:45
long Longptr_t
Definition RtypesCore.h:82
const Bool_t kFALSE
Definition RtypesCore.h:101
bool Bool_t
Definition RtypesCore.h:63
double Double_t
Definition RtypesCore.h:59
long double LongDouble_t
Definition RtypesCore.h:61
long long Long64_t
Definition RtypesCore.h:80
unsigned long long ULong64_t
Definition RtypesCore.h:81
const Bool_t kTRUE
Definition RtypesCore.h:100
EDataType
Definition TDataType.h:28
Array of integers (32 bits per element).
Definition TArrayI.h:27
A Branch for the case of an object.
A TTree is a list of TBranches.
Definition TBranch.h:89
TClass instances represent classes, structs and namespaces in the ROOT type system.
Definition TClass.h:80
A small helper class to implement casting an object to a different type (equivalent to dynamic_cast)
virtual ~TFormLeafInfoCast()
Destructor.
TString fCastedName
Pointer to the class we are trying to case to.
virtual Int_t GetNdata()
Get the number of element in the entry.
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its content.
Bool_t fIsTObject
Marked by ReadValue.
virtual Bool_t Update()
We reloading all cached information in case the underlying class information has changed (for example...
Bool_t fGoodCast
Name of the class we are casting to.
TFormLeafInfoCast & operator=(const TFormLeafInfoCast &orig)
Exception safe assignment operator.
A small helper class to implement reading a data member on a TClonesArray object stored in a TTree.
virtual void * GetValuePointer(TLeaf *leaf, Int_t instance=0)
Return the pointer to the clonesArray.
virtual Int_t ReadCounterValue(char *where)
Return the current size of the the TClonesArray.
virtual Int_t GetCounterValue(TLeaf *leaf)
Return the current size of the the TClonesArray.
virtual void * GetLocalValuePointer(TLeaf *leaf, Int_t instance=0)
Return the pointer to the clonesArray.
TFormLeafInfoClones & operator=(const TFormLeafInfoClones &orig)
Exception safe assignment operator.
virtual TFormLeafInfo * DeepCopy() const
Make a complete copy of this FormLeafInfo and all its content.
A small helper class to implement reading a data member on a TClonesArray object stored in a TTree.
virtual Long64_t ReadValueLong64(char *where, Int_t i=0)
virtual Double_t ReadValue(char *where, Int_t instance=0)
Return the value of the underlying data member inside the clones array.
virtual void * GetLocalValuePointer(TLeaf *leaf, Int_t instance=0)
Return the pointer to the clonesArray.
virtual TFormLeafInfo * DeepCopy() const
Make a complete copy of this FormLeafInfo and all its content.
virtual void * GetValuePointer(TLeaf *leaf, Int_t instance=0)
Return the pointer to the clonesArray.
virtual Int_t GetCounterValue(TLeaf *leaf)
Return the current size of the the TClonesArray.
virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i=0)
TFormLeafInfoCollectionObject & operator=(const TFormLeafInfoCollectionObject &orig)
Exception safe assignment operator.
Used to return the size of a collection.
virtual void * GetValuePointer(TLeaf *leaf, Int_t instance=0)
Not implemented.
TVirtualCollectionProxy * fCollProxy
virtual Double_t ReadValue(char *where, Int_t instance=0)
Return the value of the underlying pointer data member.
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all of its content.
TFormLeafInfoCollectionSize()
Constructor.
virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i=0)
virtual Long64_t ReadValueLong64(char *where, Int_t i=0)
TFormLeafInfoCollectionSize & operator=(const TFormLeafInfoCollectionSize &orig)
Exception safe assignment operator.
virtual Bool_t Update()
We reloading all cached information in case the underlying class information has changed (for example...
virtual void * GetLocalValuePointer(TLeaf *leaf, Int_t instance=0)
Not implemented.
A small helper class to implement reading a data member on a generic collection object stored in a TT...
TVirtualCollectionProxy * fCollProxy
virtual Bool_t Update()
We reloading all cached information in case the underlying class information has changed (for example...
TFormLeafInfoCollection()
Constructor.
virtual TFormLeafInfo * DeepCopy() const
Copy of the object and its content.
virtual Bool_t HasCounter() const
Return true if the underlying data has a array size counter.
virtual Int_t GetCounterValue(TLeaf *leaf)
Return the current size of the the TClonesArray.
virtual Int_t ReadCounterValue(char *where)
Return the size of the underlying array for the current entry in the TTree.
virtual void * GetLocalValuePointer(TLeaf *leaf, Int_t instance=0)
Return the pointer to the clonesArray.
~TFormLeafInfoCollection()
Destructor.
TStreamerElement * fLocalElement
virtual void * GetValuePointer(TLeaf *leaf, Int_t instance=0)
Return the pointer to the clonesArray.
TFormLeafInfoCollection & operator=(const TFormLeafInfoCollection &orig)
Exception safe assignment operator.
A small helper class to implement reading a data member on an object stored in a TTree.
virtual void * GetLocalValuePointer(TLeaf *leaf, Int_t instance=0)
Return the address of the underlying value.
virtual TFormLeafInfo * DeepCopy() const
Copy this object and its content.
virtual Long64_t ReadValueLong64(char *where, Int_t i=0)
virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i=0)
virtual Double_t ReadValue(char *, Int_t=0)
Read the value at the given memory location.
Asmall helper class to implement executing a method of an object stored in a TTree.
virtual TClass * GetClass() const
Return the type of the underlying return value.
static TClass * ReturnTClass(TMethodCall *mc)
Return the TClass corresponding to the return type of the function if it is an object type or if the ...
TFormLeafInfoMethod & operator=(const TFormLeafInfoMethod &orig)
Exception safe assignment operator.
~TFormLeafInfoMethod()
Destructor.
virtual Bool_t IsString() const
Return true if the return value is a string.
virtual void * GetLocalValuePointer(TLeaf *from, Int_t instance=0)
This is implemented here because some compiler want ALL the signature of an overloaded function to be...
virtual Bool_t IsInteger() const
Return true if the return value is integral.
TMethodCall * fMethod
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its content.
virtual Bool_t Update()
We reloading all cached information in case the underlying class information has changed (for example...
A small helper class to implement reading a data member on a variable size array inside a TClonesArra...
virtual void LoadSizes(TBranch *branch)
Load the current array sizes.
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its data.
virtual Double_t GetValue(TLeaf *leaf, Int_t instance=0)
virtual LongDouble_t GetValueLongDouble(TLeaf *leaf, Int_t i=0)
virtual Long64_t GetValueLong64(TLeaf *leaf, Int_t i=0)
virtual Int_t GetArrayLength()
Return the current length of the array.
A small helper class to implement reading a data member on a variable size array inside a TClonesArra...
virtual Long64_t GetValueLong64(TLeaf *leaf, Int_t i=0)
virtual Double_t GetValue(TLeaf *leaf, Int_t instance=0)
virtual LongDouble_t GetValueLongDouble(TLeaf *leaf, Int_t i=0)
virtual Int_t GetArrayLength()
Return the current length of the array.
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its content.
virtual void LoadSizes(TBranch *branch)
Load the current array sizes.
A small helper class to implement reading a data member on a variable size array inside a TClonesArra...
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its content.
virtual Double_t ReadValue(char *, Int_t=0)
Not implemented.
virtual Long64_t ReadValueLong64(char *where, Int_t i=0)
virtual LongDouble_t ReadValueLongDouble(char *where, Int_t i=0)
A helper class to implement reading a data member on a variable size array inside a TClonesArray obje...
virtual Int_t GetVarDim()
Return the index of the dimension which varies for each elements of an enclosing array (typically a T...
virtual void LoadSizes(TBranch *branch)
Load the current array sizes.
virtual Double_t GetValue(TLeaf *, Int_t=0)
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its content.
virtual Bool_t Update()
We reloading all cached information in case the underlying class information has changed (for example...
virtual Int_t GetSize(Int_t index)
Return the size of the requested sub-array.
virtual void SetPrimaryIndex(Int_t index)
Set the current value of the primary index.
TFormLeafInfoMultiVarDim()
Constructor.
TFormLeafInfo * fCounter2
TFormLeafInfoMultiVarDim(TClass *classptr, Longptr_t offset, TStreamerElement *element)
virtual void SetSecondaryIndex(Int_t index)
Set the current value of the primary index.
TFormLeafInfoMultiVarDim & operator=(const TFormLeafInfoMultiVarDim &orig)
Exception safe assignment operator.
virtual Int_t GetPrimaryIndex()
Return the index value of the primary index.
virtual void SetSize(Int_t index, Int_t val)
Set the sizes of the sub-array.
virtual Int_t GetSumOfSizes()
Get the total size.
virtual Int_t GetVirtVarDim()
Return the virtual index (for this expression) of the dimension which varies for each elements of an ...
~TFormLeafInfoMultiVarDim()
Destructor.
virtual Long64_t GetValueLong64(TLeaf *leaf, Int_t i=0)
virtual void UpdateSizes(TArrayI *garr)
Update the sizes of the arrays.
virtual LongDouble_t GetValueLongDouble(TLeaf *leaf, Int_t i=0)
A small helper class to implement reading a numerical value inside a collection.
TFormLeafInfoNumerical & operator=(const TFormLeafInfoNumerical &orig)
Exception safe assignment operator.
virtual Bool_t Update()
We reloading all cached information in case the underlying class information has changed (for example...
virtual Bool_t IsString() const
Return true if the underlying data is a string.
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its content.
virtual ~TFormLeafInfoNumerical()
Destructor.
A small helper class to implement reading a data member by following a pointer inside a branch of TTr...
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all of its content.
A small helper class to implement reading from the containing TTree object itself.
void Swap(TFormLeafInfoTTree &other)
virtual TFormLeafInfo * DeepCopy() const
Copy the object and all its content.
virtual void * GetLocalValuePointer(TLeaf *leaf, Int_t instance=0)
returns the address of the value pointed to by the TFormLeafInfo.
virtual Bool_t Update()
Update after a change of file in a chain.
TFormLeafInfoTTree & operator=(const TFormLeafInfoTTree &orig)
This class is a small helper class to implement reading a data member on an object stored in a TTree.
virtual Int_t GetVarDim()
Return the index of the dimension which varies for each elements of an enclosing array (typically a T...
virtual void * GetValuePointer(TLeaf *leaf, Int_t instance=0)
returns the address of the value pointed to by the serie of TFormLeafInfo.
virtual Bool_t IsReference() const
virtual void SetBranch(TBranch *br)
TFormLeafInfo * fCounter
virtual Int_t GetNdata()
Get the number of element in the entry.
TClass * fClass
! This is the class of the data pointed to
virtual ~TFormLeafInfo()
Delete this object and all its content.
char * GetObjectAddress(TLeafElement *leaf, Int_t &instance)
Returns the the location of the object pointed to.
TString fElementName
virtual Int_t GetPrimaryIndex()
Method for multiple variable dimensions.
virtual void SetSize(Int_t index, Int_t val)
Set the current size of the arrays.
virtual Bool_t IsInteger() const
Return true if the underlying data is an integral value.
virtual Bool_t HasCounter() const
Return true if any of underlying data has a array size counter.
virtual TClass * GetClass() const
Get the class of the underlying data.
TStreamerElement * fElement
! Descriptor of the data pointed to.
TFormLeafInfo * fNext
follow this to grab the inside information
virtual Int_t GetVirtVarDim()
Return the virtual index (for this expression) of the dimension which varies for each elements of an ...
virtual void SetSecondaryIndex(Int_t index)
Set the primary index value.
virtual void LoadSizes(TBranch *branch)
Load the current array sizes.
virtual Int_t GetSumOfSizes()
Total all the elements that are available for the current entry for the secondary variable dimension.
virtual Int_t GetArrayLength()
Return the current length of the array.
TFormLeafInfo & operator=(const TFormLeafInfo &orig)
Exception safe assignment operator.
T ReadTypedValue(char *where, Int_t instance=0)
virtual Int_t ReadCounterValue(char *where)
Return the size of the underlying array for the current entry in the TTree.
virtual Bool_t Update()
We reloading all cached information in case the underlying class information has changed (for example...
virtual Int_t GetCounterValue(TLeaf *leaf)
Return the size of the underlying array for the current entry in the TTree.
T GetTypedValue(TLeaf *leaf, Int_t instance=0)
virtual void UpdateSizes(TArrayI *garr)
Set the current sizes of the arrays.
virtual Int_t GetSize(Int_t index)
For the current entry, and the value 'index' for the main array, return the size of the secondary var...
virtual void SetPrimaryIndex(Int_t index)
Set the primary index value.
virtual void AddOffset(Int_t offset, TStreamerElement *element)
Increase the offset of this element.
Int_t GetMultiplicity()
Reminder of the meaning of fMultiplicity:
Longptr_t fOffset
! Offset of the data pointed inside the class fClass
virtual Bool_t IsString() const
Return true if the underlying data is a string.
virtual void * GetLocalValuePointer(TLeaf *leaf, Int_t instance=0)
returns the address of the value pointed to by the TFormLeafInfo.
TString fClassName
virtual TFormLeafInfo * DeepCopy() const
Make a complete copy of this FormLeafInfo and all its content.
A TLeaf for the general case when using the branches created via a TStreamerInfo (i....
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
Definition TLeaf.h:57
Method or function calling interface.
Definition TMethodCall.h:37
Mother of all ROOT objects.
Definition TObject.h:41
Basic string class.
Definition TString.h:136
A TTree represents a columnar dataset.
Definition TTree.h:79
#define Swap(a, b)
Definition geom.c:201
Definition tree.py:1
static Long64_t Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance)
static LongDouble_t Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance)
static ULong64_t Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance)
static T Exec(TFormLeafInfo *linfo, TLeaf *leaf, Int_t instance)
static Long64_t Exec(TFormLeafInfo *leaf, char *where, Int_t instance)
static LongDouble_t Exec(TFormLeafInfo *leaf, char *where, Int_t instance)
static ULong64_t Exec(TFormLeafInfo *leaf, char *where, Int_t instance)
static T Exec(TFormLeafInfo *leaf, char *where, Int_t instance)