00001 #ifndef TVFTXPROC_H 00002 #define TVFTXPROC_H 00003 00004 #include "TGsiAug12Analysis.h" 00005 #include "TCBMBeamtimeProc.h" 00006 #include "MBSUNPACK/TMbsCrateEvent.h" 00007 #include "TTriglogEvent.h" 00008 #include "TVftxEvent.h" 00009 #include "TVftxParam.h" 00010 #include "../../mbs/cbmvme.h" 00011 00012 00013 #include "TGo4Picture.h" 00014 #include "TH1.h" 00015 #include "TH2.h" 00016 00017 #include "TFile.h" 00018 #include "TTree.h" 00019 #include <fstream> 00020 #include <vector> 00021 00022 #define SYNCH_CHANNEl 0 00023 00024 class TGo4EventElement; 00025 class TGo4MbsSubEvent; 00026 00027 class TVftxProc : public TCBMBeamtimeProc { 00028 // friend class TCBMBeamtimeProc; 00029 public: 00030 TVftxProc(const char* name = 0); 00031 virtual ~TVftxProc(); 00032 virtual void InitEvent(TGo4EventElement*); 00033 virtual void FinalizeEvent(); 00034 private: 00035 00036 // for each FPGA TDC we have header information 00037 // for each FPGA TDC channel we have coarse time, fine time, and future bit 00038 // it is multi-hit tdc so we need additional index 00039 UInt_t event_nr; 00040 Int_t headTime[MAX_FPGA_TDC]; 00041 00042 Int_t iFirstTime[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00043 Int_t iFirstCoarse[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00044 Int_t iFirstFine[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00045 Int_t iLastTime[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00046 Int_t iLastToT[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00047 Int_t iTriggerTime[MAX_FPGA_TDC]; 00048 00049 Int_t iNbHitsForCalib[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00050 Double_t dCorr[MAX_FPGA_TDC][FPGA_TDC_NBCHAN][TDC_FIFO_FINE_CT+1]; 00051 Double_t dFirstTimecorr[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00052 Double_t dFirstFineTimecorr[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00053 Double_t dTimeCorr[MAX_FPGA_TDC][FPGA_TDC_NBCHAN][TVftxBoardData::MaxMult]; 00054 Double_t dFineTimeCorr[MAX_FPGA_TDC][FPGA_TDC_NBCHAN][TVftxBoardData::MaxMult]; 00055 00056 UInt_t uTotalMultiplicity[MAX_FPGA_TDC][FPGA_TDC_NBCHAN]; 00057 00058 TFile* fileCalibrationIn; 00059 TDirectory* oldDir; 00060 TH1 *fInitialCalibHisto[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00061 00062 TH1 *bitcontrol[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00063 TH1 *bitcontrolCoarse[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00064 TH1 *fEventSizeHeader1[MAX_FPGA_TDC]; 00065 TH1 *fEventSizeHeader2[MAX_FPGA_TDC]; 00066 TH1 *fTriggerType[MAX_FPGA_TDC]; 00067 TH1 *fTriggerTime[MAX_FPGA_TDC]; 00068 00069 TH1 *fChanUsage[MAX_FPGA_TDC]; 00070 TH1 *fChanEvents[MAX_FPGA_TDC]; 00071 TH1 *fChanDouble[MAX_FPGA_TDC]; 00072 TH1 *fChanFuture[MAX_FPGA_TDC]; 00073 00074 TH2 *fChanMultip[MAX_FPGA_TDC]; 00075 TH2 *fMultihitsDistance[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00076 00077 TH1 *fTime[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00078 TH1 *fTimeSingles[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00079 TH1 *fToT[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00080 00081 TH1 *fFineTime[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00082 TH1 *fDnlCorr[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00083 TH1 *fCoarseTime[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00084 00085 TH2 *fFineTimeEvo[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00086 TH2 *fBinSizeEvo[MAX_FPGA_TDC][ FPGA_TDC_NBCHAN ]; 00087 UInt_t uInitialMbsTime; 00088 UInt_t uInitialVulomSync; 00089 00090 TH2 *fTdcChanStripMapping[ MAX_FPGA_TDC*(MAX_FPGA_TDC+1)/2 ]; 00091 Int_t iMapIndex; 00092 00093 TH1 *fTdcResolutionRef2Check[MAX_FPGA_TDC]; 00094 Int_t iFirstModuleWithReference2; 00095 TH2 *fRef2TimeTriggerDep[MAX_FPGA_TDC]; 00096 00097 00098 TH1 *fTdcResolutionRef1Check[MAX_FPGA_TDC]; 00099 Int_t iFirstModuleWithReference1; 00100 protected: 00101 00102 TVftxParam * fPar; 00103 TMbsCrateEvent * fCrateInputEvent; 00104 TVftxEvent * fOutputEvent; 00105 TTriglogEvent* fTriglogInputEvent; 00106 00107 protected: 00108 00109 ClassDef(TVftxProc,1) 00110 }; 00111 00112 #endif //TVFTXPROC_H 00113