00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 #ifdef __ROOT__
00032 #ifndef STAR_StPmdReadMaker
00033 #define STAR_StPmdReadMaker
00034
00035
00036 #include "StRTSBaseMaker.h"
00037
00038
00039
00040
00041
00042 struct pmd_t;
00043
00044 class StPhmdCollection;
00045 class StPhmdHit;
00046 class StPhmdDetector;
00047 class StPmdCollection;
00048 class StPmdHit;
00049 class StPmdDetector;
00050
00051 #ifndef __CINT__
00052 #include <vector>
00053 #ifndef ST_NO_NAMESPACES
00054 using std::vector;
00055 #endif
00056 #endif
00057
00058 #include "StPmdUtil/StPmdGeom.h"
00059 #include "StPmdUtil/StPmdDBUtil.h"
00060 #include "tables/St_pmdBrdMipCalib_Table.h"
00061 #include "tables/St_pmdCalSummary_Table.h"
00062 #include "tables/St_pmdSMCalib_Table.h"
00063 #include "tables/St_pmdSMChain_GNF_Table.h"
00064
00065 #include <TH1.h>
00066 #include <TH2.h>
00067
00068 #include "tables/St_pmdHotCells_Table.h"
00069 class StDAQReader;
00070 class StPMDReader;
00071
00072 class EventReader;
00073 class StPmdGeom;
00074 class StPmdDBUtil;
00075
00076 class StPmdReadMaker : public StRTSBaseMaker {
00077
00078
00079 public:
00080 StPmdReadMaker(const char *name="pmdReader");
00081 virtual ~StPmdReadMaker();
00082 virtual Int_t Init();
00083 virtual Int_t InitRun(Int_t runnr);
00084 virtual Int_t Make();
00085 Int_t fillStEvent(StPmdDetector*, StPmdDetector*);
00086 virtual Int_t Finish();
00087 void SetPmdPrint(Bool_t);
00088 void SetCalibFlag(Bool_t);
00089 void SetChainThreshold(Float_t);
00090 void bookHist();
00091 Int_t GetCalib(int,int,int,float&);
00092 virtual const char *GetCVS() const {
00093 static const char cvs[]="Tag $Name: $ $Id: StPmdReadMaker.h,v 1.7 2010/04/16 12:04:24 rashmi Exp $ built "__DATE__" "__TIME__ ;
00094 return cvs;
00095 }
00096
00097 protected:
00098
00099
00100 TH1F * m_event_tothit_pmd;
00101 TH1F * m_event_tothit_cpv;
00102 TH2F* m_chain_channel;
00103
00104 TH1D *chain_mean[49];
00105 TH1D *chain_rms[49];
00106 TH1D *chain_adc[49];
00107 TH2F * pmdhit_tof;
00108 TH2F * pmdadc_tof;
00109
00110 private:
00111 StDAQReader* mTheDataReader;
00112 StPMDReader* mThePmdReader;
00113 St_DataSet* mThePmdData;
00114
00115
00116 St_pmdHotCells* mHotCells;
00117 Bool_t IsHot(Int_t chain, Int_t channel);
00118 Bool_t Accept(Int_t chain, Int_t channel);
00119
00120 Int_t mRunNumber;
00121 Int_t mVmeCond;
00122
00123 StPhmdCollection * mEvtPmdCollection;
00124 StPhmdDetector* mPmdEvent;
00125 StPhmdDetector* mCpvEvent;
00126 StPmdCollection * mPmdCollection;
00127 TDataSet *mDb;
00128 Bool_t mPmdPrint;
00129 Bool_t mCalibFlag;
00130 Float_t mChainTh;
00131 StPmdGeom* mPmdGeom;
00132 StPmdDBUtil* mPmdDBUtil;
00133 Int_t mHotTracks;
00134
00135
00136 pmdSMCalib_st* m_PmdCalibConst;
00137
00138 Int_t ApplyMapping(int*);
00139 Bool_t ReadCalibrationsConst();
00140 void ReadBadChains(int);
00141
00142 ClassDef(StPmdReadMaker, 1)
00143 };
00144 inline void StPmdReadMaker::SetPmdPrint(Bool_t var) {mPmdPrint = var;}
00145 inline void StPmdReadMaker::SetCalibFlag(Bool_t var) {mCalibFlag = var;}
00146 inline void StPmdReadMaker::SetChainThreshold(Float_t var) {mChainTh = var;}
00147 #endif
00148 #endif