00001 #ifndef TROOTCONVPROC_H 00002 #define TROOTCONVPROC_H 00003 00004 #include "TRootConverterEvent.h" 00005 #include "TRootConverterParam.h" 00006 00007 #if defined(ROOTCONV_WITHGET4) || defined(ROOTCONV_WITHHODO) 00008 #include "TRocProc.h" 00009 #include "TRocParam.h" 00010 #endif 00011 00012 // 2nd level events 00013 #ifdef ROOTCONV_WITHHODO 00014 #include "TFiberHodEvent.h" 00015 #endif 00016 #ifdef ROOTCONV_WITHGET4 00017 #include "../RPC/TRPCEvent.h" 00018 #include "../RPC/TRPCParam.h" 00019 #endif 00020 #include "../VFTX/TVftxEvent.h" 00021 00022 // 1st level events 00023 #include "TMbsCrateEvent.h" 00024 #include "TTriglogEvent.h" 00025 #include "TEpicsEvent.h" 00026 #include "TCBMBeamtimeProc.h" 00027 00028 #include "TFile.h" 00029 #include "TTree.h" 00030 #include "TH3.h" 00031 00032 #ifdef ROOTCONV_WITHHODO 00033 class TFiberHodEvent; 00034 #endif 00035 #ifdef ROOTCONV_WITHGET4 00036 class TRPCEvent; 00037 class TGetHitUnpacked; 00038 #endif 00039 00040 class TGo4EventElement; 00041 class TGo4MbsSubEvent; 00042 00043 class TMbsCrateEvent; 00044 class TTriglogEvent; 00045 class TEpicsEvent; 00046 00047 class TVftxEvent; 00048 00049 class TRootConverterProc : public TCBMBeamtimeProc { 00050 public: 00051 00052 TRootConverterProc(const char* name = 0); 00053 virtual ~TRootConverterProc(); 00054 00055 00056 virtual void InitEvent(TGo4EventElement*); 00057 00058 /* this is the main processing function here*/ 00059 virtual void FinalizeEvent(); 00060 00061 protected: 00062 #ifdef ROOTCONV_WITHGET4 00063 Bool_t FillHitsFromRoc( ); 00064 #endif 00065 00066 protected: 00067 TRootConverterParam * fRootConvPar; 00068 00069 #if defined(ROOTCONV_WITHGET4) || defined(ROOTCONV_WITHHODO) 00070 TRocParam* fRocPar; 00071 #endif 00072 #ifdef ROOTCONV_WITHGET4 00073 TRPCParam * fRpcPar; 00074 #endif 00075 00076 #ifdef ROOTCONV_WITHHODO 00077 00078 TFiberHodEvent * fHodoInputEvent; 00079 #endif 00080 00081 #ifdef ROOTCONV_WITHGET4 00082 00083 TRPCEvent * fRpcInputEvent; 00084 #endif 00085 00087 TVftxEvent * fVftxInputEvent; 00088 00090 TMbsCrateEvent * fCrateInputEvent; 00091 00093 TTriglogEvent * fTriglogInputEvent; 00094 00096 TEpicsEvent * fEpicsInputEvent; 00097 00098 TRootConverterEvent * fOutputEvent; 00099 00100 // Options readout from setup file or assigned from #define 00101 UInt_t fNumRocs; 00102 00103 // General counters 00104 UInt_t uNbEvents; 00105 UInt_t uFirstEventIndex; 00106 UInt_t uPrevEventIndex; 00107 00108 // Tree outputs 00109 TString sOutputFilename; 00110 TDirectory* oldDir; 00111 TFile* fRootOut; 00112 TTree* cleanTree; 00113 00114 #ifdef ROOTCONV_WITHGET4 00115 // Get4 00116 TGet4HitUnpacked hitForTree; 00117 vector< UInt_t > *vuHitNumber; 00118 vector< vector< UInt_t > > *vuTime; 00119 vector< vector< UInt_t > > *vuEpochTime; 00120 vector< vector< Int_t > > *viTot; 00121 #endif 00122 00123 #ifdef ROOTCONV_WITHHODO 00124 // Hodoscope 00125 TFiberHodEvent::hit_t hitHodoscope; 00126 #endif 00127 00128 // EPICS Slow control 00129 UInt_t uSlowControlUpdateTime; 00130 vector< Double_t > vdPositiveHvI; 00131 vector< Double_t > vdPositiveHvU; 00132 vector< Double_t > vdNegativeHvI; 00133 vector< Double_t > vdNegativeHvU; 00134 00135 // Beam spot evolution histogramming 00136 UInt_t uFirstMbsTime; 00137 UInt_t uSpillStartMbsTime; 00138 UInt_t uLastMbsTime; 00139 00140 UInt_t uFirstMbsTimeMs; 00141 UInt_t uSpillStartMbsTimeMs; 00142 00143 // Histograms 00144 00145 // A bit of control, can be disabled 00146 TH1* hNbClustersPerEventHodoscope; 00147 TH3* hHit2DvsSeconds; 00148 TH3* hHit2DvsSecondsInSpill; 00149 TH3* hHit2DvsMilliSecondsInSpill; 00150 TH2* hHitXvsMilliSecondsInSpill; 00151 TH2* hHitYvsMilliSecondsInSpill; 00152 // Control over a flying pointer, not disableable 00153 UInt_t uEpicsTimeOrigin; 00154 TH1* hTimeEpicsUpdates; 00155 00156 private: 00157 00158 ClassDef(TRootConverterProc,1) 00159 }; 00160 00161 #endif //TROOTCONVPROC_H 00162