00001
00002
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
00039
00040
00041
00042
00043
00044
00045
00046
00047 #ifndef STTOFPMATCHMAKER_HH
00048 #define STTOFPMATCHMAKER_HH
00049 #include "StMaker.h"
00050 #include <string>
00051
00052 class StEvent;
00053 class StTrack;
00054 class StHelix;
00055 #include "StThreeVectorD.hh"
00056 class StTrackGeometry;
00057 class StTofGeometry;
00058 class StTofCollection;
00059 class StTofSlatCollection;
00060 class StSPtrVecTofData;
00061 class TOrdCollection;
00062 class TH1D;
00063 class TH2D;
00064
00065
00066
00067 class StTofpMatchMaker : public StMaker {
00068 static const Int_t NTOFP = 41;
00069 static const Int_t NPVPD = 6;
00070 public:
00071 StTofpMatchMaker(const Char_t *name="tofpMatch");
00072 ~StTofpMatchMaker();
00073
00074 void Clear(Option_t *option="");
00075 Int_t Init();
00076 Int_t InitRun(int);
00077 Int_t FinishRun(int);
00078 Int_t Make();
00079 Int_t Finish();
00080
00081 void createHistograms(Bool_t histos=kTRUE);
00082 void setOuterTrackGeometry();
00083 void setStandardTrackGeometry();
00084 void setValidAdcRange(Int_t, Int_t);
00085 void setValidTdcRange(Int_t, Int_t);
00086 void setMinHitsPerTrack(Int_t);
00087 void setMinFitPointsPerTrack(Int_t);
00088 void setMaxDCA(Float_t);
00089 void setHistoFileName(Char_t*);
00090
00091 Bool_t doPrintMemoryInfo;
00092 Bool_t doPrintCpuInfo;
00093
00094 protected:
00095 StTrackGeometry* trackGeometry(StTrack*);
00096 Float_t slatPropagationTime(StThreeVectorD*);
00097 Float_t startTime(const float);
00098 Int_t getTofData(StTofCollection*);
00099 Int_t storeMatchData(StTofSlatCollection*, StTofCollection*);
00100 Float_t mTofpAdc[NTOFP];
00101 Float_t mTofpTdc[NTOFP];
00102 Float_t mPvpdAdc[NPVPD];
00103 Float_t mPvpdAdcLoRes[NPVPD];
00104 Float_t mPvpdTdc[NPVPD];
00105
00106
00107 private:
00108 Bool_t strobeEvent(StSPtrVecTofData&);
00109 Int_t mStrobeTdcMin[NPVPD];
00110 Int_t mStrobeTdcMax[NPVPD];
00111
00112 void bookHistograms();
00113 void writeHistogramsToFile();
00114 StTofGeometry *mTofGeom;
00115
00116 static const Int_t mTofpTrayId = 93;
00117 Bool_t mHisto;
00118
00119 Bool_t mYear2;
00120 Bool_t mYear3;
00121 Bool_t mYear4;
00122 Bool_t mYear5;
00123 Bool_t mOuterTrackGeometry;
00124 string mHistoFileName;
00125
00126 Bool_t validAdc(float const);
00127 Bool_t validTdc(float const);
00128 Bool_t validEvent(StEvent *);
00129 Bool_t validTrack(StTrack*);
00130 Bool_t validTofTrack(StTrack*);
00131
00132
00133 Int_t mEventCounter;
00134 Int_t mAcceptedEventCounter;
00135 Int_t mTofEventCounter;
00136 Int_t mTofStrobeEventCounter;
00137 Int_t mAcceptAndStrobe;
00138 Int_t mAcceptAndBeam;
00139
00140
00141 Float_t mMinValidTdc;
00142 Float_t mMaxValidTdc;
00143 Float_t mMinValidAdc;
00144 Float_t mMaxValidAdc;
00145 UInt_t mMinHitsPerTrack;
00146 UInt_t mMinFitPointsPerTrack;
00147 Float_t mMaxDCA;
00148
00149
00150
00151 TOrdCollection* mHitPosHistNames;
00152 TOrdCollection* mTrackHistNames;
00153 TOrdCollection* mOccupancyHistNames;
00154
00155 TH2D *hTofpHitMap1;
00156 TH2D *hTofpHitMap2;
00157 TH2D *hTofpHitMap3;
00158 TH2D *hTofpHitMap4;
00159 TH1D *hTofpSlatIdA0;
00160 TH1D *hTofpSlatIdA1;
00161 TH1D *hTofpSlatIdB1;
00162 TH1D *hTofpSlatIdD1;
00163 TH1D *hTofpSlatIdD2;
00164 TH1D *hTofpSlatIdE1;
00165 TH1D *hTofpSlatIdE2;
00166 TH1D *hTofpSlatIdE3;
00167 TH1D *hTofpSlatIdE4;
00168 TH1D *hTofpSlatIdE5;
00169 TH1D *hTofpSlatIdF1;
00170 TH1D *hTofpSlatHitVecSize;
00171
00172 TH1D *hTofpNumberOfTrackHits;
00173 TH1D *hTofpPtTrack;
00174 TH1D *hTofpDCATrackprimVertex;
00175
00176
00177
00178 TH1D *hTofpNumberOfValidAdc;
00179 TH1D *hTofpNumberOfValidTdc;
00180 TH1D *hTofpNumberOfValidSlats;
00181 TH1D *hTofpNumberOfGlobalTracks;
00182 TH1D *hTofpNumberOfHitSlats;
00183 TH1D *hTofpNumberOfSingleHitTracks;
00184 TH1D *hTofpNumberOfSingleValidHitTracks;
00185
00186
00187 TOrdCollection* mMatchHistNames;
00188 TH2D *hTofpMatchHit[NTOFP];
00189 TH2D *hTofpMatchNoHit[NTOFP];
00190
00191 virtual const char *GetCVS() const
00192 {static const char cvs[]="Tag $Name: $ $Id: StTofpMatchMaker.h,v 1.8 2005/07/06 22:12:09 fisyak Exp $ built "__DATE__" "__TIME__ ; return cvs;}
00193
00194 ClassDef(StTofpMatchMaker,0)
00195 };
00196
00197 inline void StTofpMatchMaker::setValidAdcRange(Int_t min, Int_t max){mMinValidAdc=min; mMaxValidAdc=max;}
00198 inline void StTofpMatchMaker::setValidTdcRange(Int_t min, Int_t max){mMinValidTdc=min; mMaxValidTdc=max;}
00199 inline void StTofpMatchMaker::setOuterTrackGeometry(){mOuterTrackGeometry=true;}
00200 inline void StTofpMatchMaker::setStandardTrackGeometry(){mOuterTrackGeometry=false;}
00201 inline void StTofpMatchMaker::setMinHitsPerTrack(Int_t nhits){mMinHitsPerTrack=nhits;}
00202 inline void StTofpMatchMaker::setMinFitPointsPerTrack(Int_t nfitpnts){mMinFitPointsPerTrack=nfitpnts;}
00203 inline void StTofpMatchMaker::setMaxDCA(Float_t maxdca){mMaxDCA=maxdca;}
00204 inline void StTofpMatchMaker::setHistoFileName(Char_t* filename){mHistoFileName=filename;}
00205 inline void StTofpMatchMaker::createHistograms(Bool_t histos){mHisto = histos;}
00206 inline bool StTofpMatchMaker::validAdc(const float adc){return((adc>=mMinValidAdc) && (adc<=mMaxValidAdc));}
00207 inline bool StTofpMatchMaker::validTdc(const float tdc){return((tdc>=mMinValidTdc) && (tdc<=mMaxValidTdc));}
00208
00209 #endif