19 #include "TDirectory.h"
28 #if ROOT_VERSION_CODE <= ROOT_VERSION(5,34,19)
33 TNamed(
"Go4Element",
"This is a Go4 EventElement"),
39 fbKeepContents(kFALSE)
42 GO4TRACE((15,
"TGo4EventElement::TGo4EventElement()",__LINE__, __FILE__));
46 TNamed(name,
"This is a Go4 EventElement"),
52 fbKeepContents(kFALSE)
54 GO4TRACE((15,
"TGo4EventElement::TGo4EventElement(const char*)",__LINE__, __FILE__));
62 fIdentifier(aBaseCat),
69 GO4TRACE((15,
"TGo4EventElement::~TGo4EventElement()",__LINE__, __FILE__));
74 GO4TRACE((12,
"TGo4EventElement::CheckEventSource(const char*)",__LINE__, __FILE__));
80 GO4TRACE((12,
"TGo4EventElement::PrintEvent()",__LINE__, __FILE__));
96 if ((name==0) || (strlen(name)==0))
return this;
98 if (strcmp(name,
".")==0)
return this;
100 if (strcmp(name,
"..")==0)
return GetParent();
111 TString searchname = GetName();
112 if (searchname.Length()>0) {
114 topb = tree->FindBranch(searchname.Data());
119 if (topb==0) topb = (TBranch*) tree->GetListOfBranches()->First();
121 Int_t index = tree->GetListOfBranches()->IndexOf(topb);
132 if (branch==0)
return 0;
134 TString cad = branch->GetName();
136 TTree* tree = branch->GetTree();
146 TClass* cl = *var_ptr ? (*var_ptr)->IsA() : 0;
147 tree->SetBranchAddress(cad.Data(), var_ptr, 0, cl, kOther_t,
true);
151 tree->SetBranchStatus(cad.Data(), 1);
153 tree->SetBranchStatus(cad.Data(), 1);
160 TString name = GetName();
161 #if ROOT_VERSION_CODE <= ROOT_VERSION(5,34,19)
163 gTree->SetBranchStatus(name.Data(), 0);
165 gTree->SetBranchStatus(name.Data(), 0);
166 TGo4Log::Info(
"-I- Deactivating elements at location : %s", name.Data());
168 TGo4Log::Warn(
"-W- Could not deactivate() event element %s in this ROOT Version, do not use!", name.Data());
174 TString name=GetName();
175 #if ROOT_VERSION_CODE <= ROOT_VERSION(5,34,19)
177 gTree->SetBranchStatus(name.Data(), 1);
179 gTree->SetBranchStatus(name.Data(), 1);
180 TGo4Log::Info(
"-I- Activating elements at location : %s", name.Data());
182 TGo4Log::Warn(
"-W- Could not activate() element %s in this ROOT Version, do not use!", name.Data());
199 TGo4Log::Error(
"Event %s, mismatch between event source and event class", GetName());
224 return res==0 ? 1 : res;
234 TDirectory* filsav = gDirectory;
241 TTree* thetree =
new TTree(clone->GetName(),
"Single Event Tree");
242 thetree->SetDirectory(0);
243 if (sample) *sample = clone;
244 thetree->Branch(
"Go4EventSample", clone->ClassName(), sample ? sample : &clone, 64000, 99);
247 if (sample==0)
delete clone;
258 std::cout << std::endl;
virtual TGo4EventElement * GetChild(const char *name)
virtual Bool_t CheckEventClass(TClass *cl)
virtual ~TGo4EventElement(void)
static void Warn(const char *text,...)
virtual void deactivate()
virtual void PrintEvent()
Bool_t CheckEventSource(const char *classname)
virtual Bool_t BuildEvent(TGo4EventElement *dest)
virtual void Clear(Option_t *t="")
virtual TTree * CreateSampleTree(TGo4EventElement **sample=0)
TGo4EventElement * GetParent() const
Int_t GetEventStatus() const
virtual void synchronizeWithTree(TTree *tree, TGo4EventElement **var_ptr=0)
virtual void Print(Option_t *option="") const
Bool_t fbKeepContents
Debug level.
TGo4EventSource * fxEventSource
static void Error(const char *text,...)
static void Info(const char *text,...)
virtual Int_t activateBranch(TBranch *branch, Int_t index=0, TGo4EventElement **var_ptr=0)