00001 #ifndef STAR_StEmcCalibrationMaker
00002 #define STAR_StEmcCalibrationMaker
00003
00004 #include <TH2.h>
00005 #include <TH1.h>
00006 #include <TString.h>
00007
00008 #include <StMaker.h>
00009
00010 class StEvent;
00011 class StEmcCollection;
00012 class StEmcFilter;
00013 class StEmcPosition;
00014 class StEmcGeom;
00015 class StEmcCluster;
00016 class StTrack;
00017 class StBemcData;
00018
00019 #define MAXTRACK 10000
00020 #define MAXBEMC 4
00021 #define MAXCHANNEL 18000
00022
00023 class StEmcCalibrationMaker : public StMaker
00024 {
00025 private:
00026 short mADC[MAXBEMC][MAXCHANNEL];
00027 short mADCPedSub[MAXBEMC][MAXCHANNEL];
00028 float mPed[MAXBEMC][MAXCHANNEL];
00029 float mPedRms[MAXBEMC][MAXCHANNEL];
00030 unsigned char mCap[MAXBEMC][MAXCHANNEL];
00031 unsigned char mNTracksTower[MAXCHANNEL];
00032 bool mIsIsolatedTower[MAXCHANNEL];
00033 bool mHasDetector[MAXBEMC];
00034
00035 int mNChannel[MAXBEMC];
00036
00037 StTrack *mTrack[MAXTRACK];
00038 float mTrackP[MAXTRACK];
00039 float mTrackPt[MAXTRACK];
00040 short mTrackTower[MAXTRACK];
00041 short mTrackTowerExit[MAXTRACK];
00042 short mTrackNPoints[MAXTRACK];
00043 int mNTracks;
00044 bool mL3Tracks;
00045 bool mIsTriggerOk;
00046
00047 float mVx;
00048 float mVy;
00049 float mVz;
00050
00051 long mCTBSum;
00052 long mZDCSum;
00053
00054 StEvent *mStEvent;
00055 StBemcData *mBemcData;
00056 StEmcCollection *mEmcCol;
00057 StEmcGeom *mGeom[MAXBEMC];
00058 StEmcPosition *mPosition;
00059
00060 bool mDebug;
00061
00062 float mField;
00063
00064 void fillEmcArrays();
00065 void fillTrackArrays();
00066
00067
00068 public:
00069
00070 StEmcCalibrationMaker(const char *name="Calib");
00071 virtual ~StEmcCalibrationMaker();
00072 virtual Int_t Init();
00073 virtual Int_t Make();
00074 virtual Int_t Finish();
00075 virtual void zeroAll();
00076
00077 int getADC(int det,int id) { return (int)mADC[det-1][id-1]; }
00078 int getADCPedSub(int det,int id) { return (int)mADCPedSub[det-1][id-1]; }
00079 int getPed(int det,int id) { return (int)mPed[det-1][id-1]; }
00080 float getPedRms(int det,int id) { return mPedRms[det-1][id-1]; }
00081 unsigned int getCap(int det,int id) { return (unsigned int)mCap[det-1][id-1]; }
00082 int getNTracksInTower(int id) { return (int)mNTracksTower[id-1]; }
00083 bool isIsolatedTower(int id) { return mIsIsolatedTower[id-1]; }
00084 bool hasDetector(int det) { return mHasDetector[det-1];}
00085
00086 float getTrackP(int track) { return mTrackP[track]; }
00087 float getTrackPt(int track) { return mTrackPt[track]; }
00088 int getTrackNPoints(int track) { return (int)mTrackNPoints[track]; }
00089 int getTrackTower(int track) { return (int)mTrackTower[track]; }
00090 int getTrackTowerExit(int track) { return (int)mTrackTowerExit[track]; }
00091 StTrack* getTrack(int track) { return mTrack[track]; }
00092 int getNTracks() { return mNTracks; }
00093 bool isL3() { return (int)mL3Tracks; }
00094 bool isTriggerOk() { return mIsTriggerOk;}
00095 float vx() { return mVx; }
00096 float vy() { return mVy; }
00097 float vz() { return mVz; }
00098 float field() { return mField; }
00099 StEvent* event() { return mStEvent; }
00100 StEmcCollection* emc() { return mEmcCol; }
00101 long getCTBSum() { return mCTBSum;}
00102 long getZDCSum() { return mZDCSum;}
00103
00104 void makeStatus(bool,bool,bool,bool);
00105
00106
00107 ClassDef(StEmcCalibrationMaker, 1)
00108 };
00109
00110 #endif