20 #include "TDataMember.h"
21 #include "TDataType.h"
22 #include "TBaseClass.h"
38 if (folder==0)
return;
40 TIter iter(folder->GetListOfFolders());
42 while((obj = iter()) !=0) {
44 if (entry!=0) entry->
Reset();
50 if (folder==0)
return;
52 TIter iter(folder->GetListOfFolders());
54 while((obj = iter()) !=0) {
56 if (entry!=0) entry->Print(
"*");
62 if (folder==0)
return;
64 TIter iter(folder->GetListOfFolders());
66 while((obj = iter()) !=0) {
68 if (entry!=0) entry->RecursiveRemove(objtoremove);
75 if (folder==0)
return;
78 TIter iter(folder->GetListOfFolders());
82 while((obj = iter()) !=0) {
84 if (entry==0)
continue;
89 if (!
ProcessHEntry(dynamic_cast<TGo4HistogramEntry*> (entry))) {
94 if (!
ProcessTEntry(dynamic_cast<TGo4TreeHistogramEntry*> (entry), processtrees, interval)) {
110 catch(std::exception& ex) {
112 "!!!STD exception %s was raised processing dynamic entry!!!",
121 if(!eventclass)
return 0;
126 Long_t indexoffset = 0;
127 const char* ixbegin = strchr(memname,
'[');
132 const char* ixend = strchr(ixbegin,
']');
134 TString buf(ixbegin, ixend-ixbegin);
135 indexoffset = buf.Atoll();
136 if(indexoffset<0) indexoffset=0;
141 TDataMember* eventmember= eventclass->GetDataMember(memname);
143 *totaloffset+=eventmember->GetOffset();
146 TIter baseiter(eventclass->GetListOfBases());
148 while((ob=baseiter()) !=0) {
149 TBaseClass* baseclass=
dynamic_cast<TBaseClass*
>(ob);
153 TClass* bclass=baseclass->GetClassPointer();
159 *totaloffset+=baseclass->GetDelta();
174 const char* tname = eventmember->GetFullTypeName();
176 Int_t maxindex=eventmember->GetMaxIndex(0);
177 if(maxindex<0) maxindex=1;
178 if(indexoffset<maxindex)
180 Int_t datasize = eventmember->GetDataType()->Size();
181 *totaloffset += indexoffset*datasize;
187 "Index %d for array member:%s out of range %s[%d]",
188 indexoffset, memname, tname, maxindex);
204 if (hentry==0)
return true;
213 TDataMember* eventmember = 0;
233 TDataMember* eventmember = 0;
257 evvalid[n] =
event->IsValid();
267 if (tentry==0)
return true;
271 if(!processtrees)
return true;
278 "Tree Histogram Entry: !!! Could not find Tree %s ",tentry->
GetTreeName());
286 "Tree Histogram Entry: !!! Could not find Histogram %s ",hname);
299 histo =
dynamic_cast<TH1*
>(gROOT->FindObject(hname));
303 histo =
dynamic_cast<TH1*
>(gROOT->FindObjectAny(hname));
void SetNeedInitialisation(Bool_t on=kTRUE)
static void CleanupPointerInEntries(TFolder *folder, TObject *obj)
void ProcessTreeNew(TTree *tree, Int_t times)
void SetDynListInterval(Int_t value)
const char * GetConVarName(Int_t ix) const
const char * GetHistogramName() const
TGo4Condition * GetAnalysisCondition(const char *name, const char *cond_cl=0)
void InitCondPointer(Int_t ix, TObject *event, TDataMember *member, Long_t offset)
Bool_t AddHistogram(TH1 *his, const char *subfolder=0, Bool_t replace=kTRUE)
static void ResetEntries(TFolder *folder)
static bool ProcessHEntry(TGo4HistogramEntry *hentry)
TGo4EventElement * GetEventStructure(const char *name)
TH1 * GetHistogram(const char *name)
static bool ProcessTEntry(TGo4TreeHistogramEntry *tentry, Bool_t processtrees, Int_t interval)
TTree * GetTree(const char *name)
const char * GetHistVarName(Int_t ix) const
Bool_t IsEnabledProcessing() const
Bool_t NeedInitialisation() const
const char * GetTreeName() const
const char * GetHistogramName() const
static void PrintEntries(TFolder *folder)
static const char * Get_fgcNODATA()
TDataMember * FindDataMember(TClass *eventclass, const char *memname, Long_t *totaloffset)
const char * GetConditionName() const
TObject * fxHisEvents[__MAXHISDIM__]
void InitHistPointer(Int_t ix, TObject *event, TDataMember *member, Long_t offset)
const char * GetConEventName(Int_t ix) const
function if(typeof JSROOT!="object")
const char * GetHistEventName(Int_t ix) const
void ProcessNew(Bool_t *evvalid)
static TGo4Analysis * Instance()
Int_t GetDynListInterval()
static const char * Get_fgcNOEVENT()
TGo4Condition * fxCondition
static void ProcessEntries(TFolder *folder, Bool_t processtrees, Int_t interval)