00001
00002
00003
00004
00005
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #ifndef STVPDCALIMAKER_H
00039 #define STVPDCALIMAKER_H
00040
00041 #include "TMath.h"
00042 #include "TF1.h"
00043 #include "TH1D.h"
00044 #include "TH2D.h"
00045 #include "StMaker.h"
00046
00047 class StEvent;
00048 class StBTofCollection;
00049 class StBTofHitCollection;
00050 class StMuDst;
00051
00052 class StVpdCalibMaker : public StMaker{
00053 public:
00054
00056 StVpdCalibMaker(const Char_t* name="vpdCalib");
00058 virtual ~StVpdCalibMaker();
00059
00060 virtual Int_t Init();
00061 virtual Int_t InitRun(Int_t runnumber);
00062
00063 virtual Int_t Make();
00064 virtual Int_t Finish();
00065
00067 void setCreateHistoFlag(const Bool_t histos=kTRUE);
00069 void setHistoFileName(const Char_t* filename);
00070
00072
00073 void setInitFromFile(const Bool_t initFromFile= kTRUE);
00074 void setCalibFilePvpd(const Char_t* filename);
00075
00077 void setVPDHitsCut(const Int_t eastVpdCut, const Int_t westVpdCut);
00079 void setMuDstIn();
00081 void setUseVpdStart(const Bool_t val=kTRUE);
00082
00084 Bool_t useVpdStart() const;
00085
00086 private:
00088 void resetPars();
00090 void resetVpd();
00092 Bool_t loadVpdData();
00094 Bool_t writeVpdData() const;
00096 Int_t initParameters(Int_t runnumber);
00097
00099 void tsum(const Double_t *tot, const Double_t *time);
00101 void vzVpdFinder();
00102
00104 void bookHistograms();
00106 void fillHistograms();
00108 void writeHistograms() const;
00109
00110 static const Double_t VHRBIN2PS;
00111
00112 static const Double_t HRBIN2PS;
00113
00114 static const Double_t TMAX;
00115 static const Double_t VZDIFFCUT;
00116 static const Double_t TDIFFCUT;
00117 static const Double_t FracTruncated;
00118
00119 enum{
00120 NTDIG = 8,
00121 NVPD = 19,
00122 MaxVpdVz = 20,
00123 NTray = 120,
00124 WestVpdTrayId = 121,
00125 EastVpdTrayId = 122,
00126 NBinMax = 128,
00127 };
00128
00129 Bool_t mValidCalibPar;
00130
00131 Int_t mVPDEastHitsCut;
00132 Int_t mVPDWestHitsCut;
00133
00134 Double_t mVPDTotEdge[2*NVPD][NBinMax];
00135 Double_t mVPDTotCorr[2*NVPD][NBinMax];
00136
00137 Double_t mVPDLeTime[2*NVPD];
00138 Double_t mVPDTot[2*NVPD];
00139
00140 Int_t mFlag[2*NVPD];
00141 Double_t mTSumEast;
00142 Double_t mTSumWest;
00143 UInt_t mVPDHitPatternEast;
00144 UInt_t mVPDHitPatternWest;
00145 Int_t mNEast;
00146 Int_t mNWest;
00147 Double_t mVPDVtxZ[MaxVpdVz];
00148 Int_t mNVzVpd;
00149
00151 Bool_t mTruncation;
00152 StBTofCollection* mBTofColl;
00153 StMuDst* mMuDst;
00154 Bool_t mMuDstIn;
00155
00156 Bool_t mHisto;
00157 string mHistoFileName;
00158 TH1D* mhEventCounter;
00159 TH1D* mhVpd[NVPD*2];
00160 TH1D* mhVpdAll;
00161 TH2D* mhNVpdHits;
00162
00163 Bool_t mInitFromFile;
00164 string mCalibFilePvpd;
00165 Bool_t mUseVpdStart;
00166 Bool_t mForceTofStart;
00167
00168 virtual const char *GetCVS() const
00169 {static const char cvs[]="Tag $Name: $ $Id: StVpdCalibMaker.h,v 1.6 2011/02/23 20:00:52 geurts Exp $ built "__DATE__" "__TIME__ ; return cvs;}
00170
00171 ClassDef(StVpdCalibMaker,1)
00172 };
00173
00174 inline void StVpdCalibMaker::setVPDHitsCut(const Int_t ieast, const Int_t iwest) { mVPDEastHitsCut=ieast ; mVPDWestHitsCut=iwest; }
00175 inline void StVpdCalibMaker::setMuDstIn() { mMuDstIn = kTRUE; }
00176 inline void StVpdCalibMaker::setHistoFileName(const Char_t* filename){mHistoFileName=filename;}
00177 inline void StVpdCalibMaker::setCreateHistoFlag(const Bool_t histos){mHisto = histos;}
00178 inline void StVpdCalibMaker::setInitFromFile(const Bool_t val) {mInitFromFile = val; }
00179 inline void StVpdCalibMaker::setCalibFilePvpd(const Char_t* filename) {mCalibFilePvpd = filename;}
00180 inline void StVpdCalibMaker::setUseVpdStart(const Bool_t val) {mUseVpdStart = val; mForceTofStart = kTRUE;}
00181 inline Bool_t StVpdCalibMaker::useVpdStart() const { return mUseVpdStart; }
00182 #endif