18 #include "TIterator.h" 30 {
return fBranch->ClassName(); }
43 fIter = tree->GetListOfBranches()->MakeIterator();
49 fIter = branch->GetListOfBranches()->MakeIterator();
60 TObject *res = fIter->Next();
61 if (!res)
return kFALSE;
62 fCurrent =
dynamic_cast<TBranch *
> (res);
69 return fCurrent->GetListOfBranches()->GetEntries() > 0;
77 const char *
name()
override 79 return fCurrent->GetName();
82 const char *
info()
override 84 return fCurrent->GetClassName();
94 return fCurrent->ClassName();
98 TIterator *fIter{
nullptr};
99 TBranch *fCurrent{
nullptr};
135 if (!tree)
return nullptr;
138 return std::make_unique<TGo4ObjectAccess>(tree);
140 TObjArray *list = tree->GetListOfBranches();
141 const char *curname = name;
144 const char *slash = strchr(curname,
'/');
145 UInt_t len = slash ? slash - curname : strlen(curname);
147 TObject *obj =
nullptr;
148 while ((obj = iter()) !=
nullptr)
149 if ((strlen(obj->GetName()) == len) &&
150 (strncmp(obj->GetName(), curname, len) == 0))
break;
151 TBranch *br =
dynamic_cast<TBranch *
> (obj);
152 if (!br)
return nullptr;
155 list = br->GetListOfBranches();
158 return std::make_unique<TGo4BranchAccess>(br);
static TGo4LevelIter * ProduceIter(TTree *tree)
const char * GetObjectName() const override
const char * info() override
TGo4TreeLevelIter(TTree *tree)
TGo4BranchAccess(TBranch *br)
const char * GetClassName() override
const char * name() override
const char * GetObjectClassName() const override
TGo4LevelIter * subiterator() override
Int_t GetObjectKind() const override
static std::unique_ptr< TGo4Access > CreateAccess(TTree *tree, const char *name)
TGo4TreeLevelIter(TBranch *branch)
Bool_t isfolder() override
const char * GetContainedClassName() const override
virtual ~TGo4TreeLevelIter()