20 #include "TDataMember.h"
21 #include "TDataType.h"
22 #include "TBaseClass.h"
36 if (folder==0)
return;
38 TIter iter(folder->GetListOfFolders());
40 while((obj = iter()) !=0) {
42 if (entry!=0) entry->
Reset();
48 if (folder==0)
return;
50 TIter iter(folder->GetListOfFolders());
52 while((obj = iter()) !=0) {
54 if (entry!=0) entry->Print(
"*");
60 if (folder==0)
return;
62 TIter iter(folder->GetListOfFolders());
64 while((obj = iter()) !=0) {
66 if (entry!=0) entry->RecursiveRemove(objtoremove);
73 if (folder==0)
return;
76 TIter iter(folder->GetListOfFolders());
80 while((obj = iter()) !=0) {
82 if (entry==0)
continue;
87 if (!
ProcessHEntry(dynamic_cast<TGo4HistogramEntry*> (entry))) {
92 if (!
ProcessTEntry(dynamic_cast<TGo4TreeHistogramEntry*> (entry), processtrees, interval)) {
108 catch(std::exception& ex) {
110 Form(
"!!!STD exception %s was raised processing dynamic entry!!!", ex.what()));
118 if(!eventclass)
return 0;
123 Long_t indexoffset = 0;
124 const char* ixbegin = strchr(memname,
'[');
129 const char* ixend = strchr(ixbegin,
']');
131 TString buf(ixbegin, ixend-ixbegin);
132 indexoffset = buf.Atoll();
133 if(indexoffset<0) indexoffset=0;
138 TDataMember* eventmember= eventclass->GetDataMember(memname);
140 *totaloffset+=eventmember->GetOffset();
143 TIter baseiter(eventclass->GetListOfBases());
145 while((ob=baseiter()) !=0) {
146 TBaseClass* baseclass=
dynamic_cast<TBaseClass*
>(ob);
150 TClass* bclass=baseclass->GetClassPointer();
156 *totaloffset+=baseclass->GetDelta();
171 const char* tname = eventmember->GetFullTypeName();
173 Int_t maxindex=eventmember->GetMaxIndex(0);
174 if(maxindex<0) maxindex=1;
175 if(indexoffset<maxindex)
177 Int_t datasize = eventmember->GetDataType()->Size();
178 *totaloffset += indexoffset*datasize;
184 Form(
"Index %ld for array member:%s out of range %s[%d]", indexoffset, memname, tname, maxindex));
200 if (hentry==0)
return true;
209 TDataMember* eventmember = 0;
229 TDataMember* eventmember = 0;
253 evvalid[n] =
event->IsValid();
263 if (tentry==0)
return true;
267 if(!processtrees)
return true;
274 Form(
"Tree Histogram Entry: !!! Could not find Tree %s ",tentry->
GetTreeName()));
282 Form(
"Tree Histogram Entry: !!! Could not find Histogram %s ",hname));
295 histo =
dynamic_cast<TH1*
>(gROOT->FindObject(hname));
299 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)