93 const char *bracket = strchr(
name,
'[');
94 if (bracket)
fName.ReplaceAll(bracket,
"");
146 TObjArray *lst = tree->GetListOfLeaves();
162 if ((
fBranch->GetListOfLeaves()->GetEntries() > 1) ||
165 if (!
name.EndsWith(
"."))
name +=
".";
167 fBranch->GetTree()->Draw(
name,
"",
b ?
b->GetDrawOption() :
"");
200 const std::vector<Int_t> *countValues =
fLeafCount->GetLeafCountValues(orig_entry, events);
202 if (!countValues || ((
Int_t)countValues->size()) < events) {
203 Error(
"GenerateOffsetArrayBase",
"The leaf %s could not retrieve enough entries from its branch count (%s), ask for %d and got %ld",
204 GetName(),
fLeafCount->GetName(), events, (
long)(countValues ? countValues->size() : -1));
211 for (
Int_t idx = 0,
offset = base; idx < events; idx++) {
213 len = (*countValues)[idx];
227 if (branchname.
Length() && (branchname[branchname.
Length()-1] ==
'.'))
230 return branchname +
"." +
GetName();
253 char* bleft = (
char*) strchr(
name,
'[');
258 Int_t nch = strlen(bleft);
259 char* countname =
new char[nch+1];
260 strlcpy(countname, bleft, nch+1);
261 char* bright = (
char*) strchr(countname,
']');
268 char *bleft2 = (
char*) strchr(countname,
'[');
270 nch = strlen(countname);
274 Error(
"GetLeafCounter",
"TLeaf %s is not setup properly, fBranch is null.",
GetName());
278 if (
fBranch->GetTree() ==
nullptr) {
279 Error(
"GetLeafCounter",
"For Leaf %s, the TBranch %s is not setup properly, fTree is null.",
GetName(),
fBranch->GetName());
286 if (leaf ==
nullptr) {
291 if (!leaf && strchr(
GetName(),
'.')) {
292 char* withdot =
new char[strlen(
GetName())+strlen(countname)+1];
294 char* lastdot = strrchr(withdot,
'.');
295 strcpy(lastdot, countname);
300 if (!leaf && strchr(countname,
'.')) {
310 sscanf(bleft2,
"[%d]", &
i);
316 bleft = (
char*) strchr(bleft2,
'[');
320 sscanf(bleft,
"[%d]", &
i);
329 for (
i = 0;
i < nch;
i++) {
330 if (!isdigit(countname[
i])) {
337 sscanf(countname,
"%d", &countval);
339 sscanf(bleft2,
"[%d]", &
i);
345 bleft = (
char*) strchr(bleft2,
'[');
349 sscanf(bleft,
"[%d]", &
i);
378 values.erase(values.begin(), values.begin() + start-
fLeafCountValues->fStartEntry);
391 Long64_t orig_leaf_entry = branch->GetReadEntry();
393 branch->GetEntry(start + idx);
397 branch->GetEntry(orig_leaf_entry);
410 Error(
"GetLen",
"Leaf counter is greater than maximum! leaf: '%s' len: %d max: %d",
GetName(),
len,
fLeafCount->GetMaximum());
434 bool deleteValue =
false;
441 if (!calledFromDestructor) {
#define R__unlikely(expr)
size_t size(const MatrixT &matrix)
retrieve the size of a square matrix
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h offset
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t Atom_t Atom_t Time_t UChar_t len
A TTree is a list of TBranches.
virtual TString GetFullName() const
Return the 'full' name of the branch.
TObjArray * GetListOfLeaves()
Using a TBrowser one can browse all ROOT objects.
Buffer base class used for serializing objects.
A TLeaf describes individual elements of a TBranch See TBranch structure in TTree.
virtual Double_t GetValue(Int_t i=0) const
TLeaf(const TLeaf &)
Copy constructor.
Int_t fLenType
Number of bytes for this data type.
bool fIsRange
(=true if leaf has a range, false otherwise). This is equivalent to being a 'leafcount'....
virtual const Counts_t * GetLeafCountValues(Long64_t start, Long64_t len)
If this branch is a branch count, return the set of collection size for the entry range requested sta...
~TLeaf() override
Destructor.
Int_t fLen
Number of fixed length elements in the leaf's data.
Int_t fNdata
! Number of elements in fAddress data buffer.
virtual Int_t GetLen() const
Return the number of effective elements of this leaf, for the current entry.
Int_t ResetAddress(void *add, bool calledFromDestructor=false)
Helper routine for TLeafX::SetAddress.
TClass * IsA() const override
void Streamer(TBuffer &) override
Stream a class object.
TLeaf & operator=(const TLeaf &)
Assignment operator.
virtual TLeaf * GetLeafCounter(Int_t &countval) const
Return a pointer to the counter of this leaf (if any) or store the number of elements that the leaf c...
Int_t * GenerateOffsetArrayBase(Int_t base, Int_t events) const
If the class supports it, generate an offset array base.
virtual void SetAddress(void *add=nullptr)
void Browse(TBrowser *b) override
Browse the content of this leaf.
virtual void FillBasket(TBuffer &b)
Pack leaf elements in Basket output buffer.
TBranch * GetBranch() const
Int_t fOffset
Offset in ClonesArray object (if one)
virtual Int_t GetOffsetHeaderSize() const
TBranch * fBranch
! Pointer to supporting branch (we do not own the branch)
bool fIsUnsigned
(=true if unsigned, false otherwise)
TLeaf * fLeafCount
Pointer to Leaf count if variable length (we do not own the counter)
@ kNewValue
Set if we own the value buffer and so must delete it ourselves.
virtual void SetLeafCount(TLeaf *leaf)
Set the leaf count of this leaf.
virtual TString GetFullName() const
Return the full name (including the parent's branch names) of the leaf.
LeafCountValues * fLeafCountValues
! Cache of collection/array sizes
virtual void SetRange(bool range=true)
std::vector< Int_t > Counts_t
virtual bool IsRange() const
const char * GetName() const override
Returns name of object.
void Streamer(TBuffer &) override
Stream an object of class TObject.
const char * GetTitle() const override
Returns title of object.
TNamed & operator=(const TNamed &rhs)
TNamed assignment operator.
TObject * Remove(TObject *obj) override
Remove object from array.
TObject * FindObject(const char *name) const override
Find an object in this collection using its name.
Int_t GetLast() const override
Return index of last object in array.
R__ALWAYS_INLINE Bool_t TestBit(UInt_t f) const
@ kZombie
object ctor failed
R__ALWAYS_INLINE Bool_t IsZombie() const
void SetBit(UInt_t f, Bool_t set)
Set or unset the user status bits as specified in f.
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
A TTree represents a columnar dataset.
virtual TObjArray * GetListOfLeaves()
virtual TLeaf * FindLeaf(const char *name)
Find leaf..