00001 #ifndef STAR_StEmcOfflineCalibrationMaker
00002 #define STAR_StEmcOfflineCalibrationMaker
00003
00004 class TFile;
00005 class TTree;
00006 class TH2;
00007 class TH3;
00008
00009 class StEmcOfflineCalibrationEvent;
00010 class StEmcOfflineCalibrationTrack;
00011
00012 class StMuDstMaker;
00013 class StEmcADCtoEMaker;
00014 class StEmcTriggerMaker;
00015 class StTriggerSimuMaker;
00016
00017 class StBemcTables;
00018 class StEmcGeom;
00019 class StEmcPosition;
00020 class StEmcCollection;
00021 class StMuTrack;
00022
00023 #include "StMaker.h"
00024
00025 class StEmcOfflineCalibrationMaker : public StMaker
00026 {
00027 private:
00028 const char* filename;
00029 TFile* myFile;
00030 TFile* mapFile;
00031 TTree* calibTree;
00032 TH2* mapcheck;
00033 TH2* towerSlopes[2];
00034 TH2* preshowerSlopes;
00035 TH2* smdSlopes[2];
00036 StEmcOfflineCalibrationEvent* myEvent;
00037 StEmcOfflineCalibrationTrack* myTrack;
00038
00039 vector<unsigned int> mbTriggers;
00040 vector<unsigned int> htTriggers;
00041 vector<unsigned int> httpTriggers;
00042 vector<unsigned int> fastTriggers;
00043
00044 StMuDstMaker* muDstMaker;
00045 StEmcADCtoEMaker* mADCtoEMaker;
00046
00047 StTriggerSimuMaker* emcTrigMaker;
00048
00049 int mHT0threshold;
00050 int mHT1threshold;
00051 int mHT2threshold;
00052 int mHT3threshold;
00053
00054 vector< pair<int,int> > HT0towersAboveThreshold;
00055 vector< pair<int,int> > HT1towersAboveThreshold;
00056 vector< pair<int,int> > HT2towersAboveThreshold;
00057 vector< pair<int,int> > HT3towersAboveThreshold;
00058
00059
00060 StBemcTables* mTables;
00061 StEmcGeom* mEmcGeom;
00062 StEmcPosition* mEmcPosition;
00063 StEmcCollection* mEmcCollection;
00064 StEmcGeom* mSmdEGeom;
00065 StEmcGeom* mSmdPGeom;
00066
00067
00068 unsigned short mADC[2][4800];
00069 unsigned short mADCSmd[2][18000];
00070 float mPedestal[2][4800];
00071 float mPedRMS[2][4800];
00072 float mPedestalSmd[2][18000];
00073 float mPedRMSSmd[2][18000];
00074 int mStatus[2][4800];
00075 int mStatusSmd[2][18000];
00076 unsigned char mCapacitor[4800];
00077 unsigned char mCapacitorSmd[2][18000];
00078
00079 void getADCs(int det);
00080 pair<unsigned short, pair<float,float> > getTrackTower(const StMuTrack* track, bool useExitRadius=false, int det=1);
00081 float getTrackDeltaR(float track_eta, float track_phi, int id);
00082 pair<float, float> getTrackDetaDphi(float track_eta, float track_phi, int id, int det);
00083 double highestNeighbor(int id);
00084
00085
00086 public:
00087 StEmcOfflineCalibrationMaker(const char* name="btowCalibMaker", const char* file="test.root");
00088 virtual ~StEmcOfflineCalibrationMaker();
00089
00090 virtual Int_t Init();
00091 virtual Int_t InitRun(int run);
00092 virtual Int_t Make();
00093 virtual Int_t Finish();
00094 virtual void Clear(Option_t* option="");
00095
00096 bool subtractPedestals;
00097
00098 void addMinBiasTrigger(unsigned int trigId);
00099 void addHighTowerTrigger(unsigned int trigId);
00100 void addHTTPTrigger(unsigned int trigId);
00101 void addFastTrigger(unsigned int trigId);
00102
00103 ClassDef(StEmcOfflineCalibrationMaker, 3)
00104 };
00105
00106 #endif