00001 //--------------------------------------------------------------- 00002 // Go4 Release Package v2.10-5 (build 21005) 00003 // 03-Nov-2005 00004 //--------------------------------------------------------------- 00005 // The GSI Online Offline Object Oriented (Go4) Project 00006 // Experiment Data Processing at DVEE department, GSI 00007 //--------------------------------------------------------------- 00008 // 00009 //Copyright (C) 2000- Gesellschaft f. Schwerionenforschung, GSI 00010 // Planckstr. 1, 64291 Darmstadt, Germany 00011 //Contact: http://go4.gsi.de 00012 //---------------------------------------------------------------- 00013 //This software can be used under the license agreements as stated 00014 //in Go4License.txt file which is part of the distribution. 00015 //---------------------------------------------------------------- 00016 #ifndef TGO4DYNAMICENTRY_H 00017 #define TGO4DYNAMICENTRY_H 00018 00019 #include "TNamed.h" 00020 #include "TString.h" 00021 00022 class TH1; 00023 class TClass; 00024 class TDataMember; 00025 class TGo4Condition; 00026 class TGo4EventElement; 00027 class TGo4DynamicEntryStatus; 00028 00029 #define __MAXCONDIM__ 2 00030 00039 class TGo4DynamicEntry : public TNamed { 00040 public: 00041 00043 static const Text_t fgcNOCONDITION[]; 00044 00046 static const Text_t fgcNODATA[]; 00047 00049 static const Text_t fgcNOEVENT[]; 00050 00052 static const UInt_t fguMAXCONDIMENSION; 00053 00055 TGo4DynamicEntry(); 00056 00057 TGo4DynamicEntry(const Text_t* name); 00058 00059 virtual ~TGo4DynamicEntry(); 00060 00062 virtual Int_t Process() =0; 00063 00065 void EnableProcessing(Bool_t on=kTRUE) { fbProcessEntry=on; } 00066 00071 virtual TGo4DynamicEntryStatus * CreateStatus()=0; 00072 00074 virtual void SetStatus(TGo4DynamicEntryStatus * state); 00075 00077 virtual void Reset(); 00078 00082 virtual void InitPointers(); 00083 00085 void SetConditionName(const Text_t * name); 00086 00091 virtual void CleanupCondition(TGo4Condition * con); 00092 00098 virtual void CleanupEvent(TGo4EventElement * ev); 00099 00104 virtual void CleanupHistogram(TH1 * his); 00105 00107 Bool_t TestCondition(); 00108 00112 void SetConVarName(UInt_t ix, const Text_t * name); 00113 00117 void SetConEventName(UInt_t ix, const Text_t * name); 00118 00119 protected: 00124 virtual void UpdateStatus(TGo4DynamicEntryStatus * state); 00125 00129 TDataMember* FindDataMember(TClass* eventclass, const Text_t* memname, 00130 Long_t* totaloffset); 00131 00133 Int_t Membersize(const Text_t* name); 00134 00137 Bool_t fbProcessEntry; 00138 00141 Bool_t fbPointerInitDone; 00142 00143 private: 00144 00146 TGo4Condition* fxCondition; 00147 00149 TString fxConditionName; 00150 00153 TString fxConVarName[__MAXCONDIM__]; 00154 00158 TString fxConEventName[__MAXCONDIM__]; 00159 00162 TGo4EventElement* fxConEvent[__MAXCONDIM__]; 00163 00166 Float_t* fxConDataFloat[__MAXCONDIM__]; 00167 00170 Double_t* fxConDataDouble[__MAXCONDIM__]; 00171 00174 Int_t* fxConDataInt[__MAXCONDIM__]; 00175 00178 Short_t* fxConDataShort[__MAXCONDIM__]; 00179 00182 Char_t* fxConDataChar[__MAXCONDIM__]; 00183 00186 Long_t* fxConDataLong[__MAXCONDIM__]; 00187 00190 Bool_t* fxConDataBool[__MAXCONDIM__]; 00191 00194 UInt_t* fxConDataUInt[__MAXCONDIM__]; 00195 00198 UShort_t* fxConDataUShort[__MAXCONDIM__]; 00199 00202 UChar_t* fxConDataUChar[__MAXCONDIM__]; 00203 00206 ULong_t* fxConDataULong[__MAXCONDIM__]; 00207 00208 ClassDef(TGo4DynamicEntry,3) 00209 }; 00210 00211 #endif //TGO4DYNAMICENTRY_H 00212 00213 //----------------------------END OF GO4 SOURCE FILE ---------------------