00001 #ifndef STAR_StEmcCalibMaker
00002 #define STAR_StEmcCalibMaker
00003
00004 #include <TString.h>
00005 #include <TF1.h>
00006 #include <TH2.h>
00007 #include <TH1.h>
00008
00009 #include <StMaker.h>
00010
00011 #include "StEmcCalibrationMaker.h"
00012
00013 #define MAXTRACK 10000
00014 #define MAXBEMC 4
00015 #define MAXCHANNEL 18000
00016 #define MAXTOWERCHANNEL 18000
00017
00018 class StEmcGeom;
00019
00020 class StEmcCalibMaker : public StMaker {
00021 protected:
00022 StEmcCalibrationMaker *mCalib;
00023
00024 TH2F *mSpec;
00025 TH1F *mAccept;
00026
00027 int mNMinTracks;
00028 int mNMaxTracks;
00029 int mNEvents;
00030 int mDate;
00031 int mTime;
00032 long mZDCMin;
00033 long mZDCMax;
00034 long mCTBMin;
00035 long mCTBMax;
00036
00037 int mDetector;
00038 int mNChannel;
00039 float mRange;
00040
00041 TString mFileName;
00042 TString mSpecName;
00043 TString mAcceptName;
00044
00045 bool mAutoSaveDB;
00046 bool mDebug;
00047
00048 public:
00049
00050 StEmcCalibMaker(const Char_t *name="EmcCalib");
00051 virtual ~StEmcCalibMaker();
00052 virtual Int_t Init();
00053 virtual Int_t Make();
00054 virtual Int_t Finish();
00055 virtual void Clear(Option_t *option="");
00056
00057 bool accept();
00058 void reset() { if(mSpec) mSpec->Reset(); mNEvents = 0; mDate = 20330101;}
00059 void fill(int id, float value) { if(mSpec) mSpec->Fill(id,value);}
00060
00061 void calcVoltages(TH1F*, char*, char*, char*);
00062
00063 StEmcCalibrationMaker* getCalib() { return mCalib;}
00064
00065 TH2F* getSpec() const { return mSpec;}
00066 TH1D* getSpec(int id,const Char_t *name = "id") const {return mSpec ? mSpec->ProjectionY(name, id, id) : NULL;}
00067
00068
00069 void saveHist(const Char_t *filename);
00070 void loadHist(const Char_t *filename);
00071 void addHist(const Char_t *filename);
00072 int getNChannel() const { return mNChannel;}
00073 int getNEvents() const { return mNEvents;}
00074 int getDate() const { return mDate;}
00075 int getTime() const { return mTime;}
00076 int getDetector() const { return mDetector;}
00077 void getMeanAndRms(TH1D*,float,float,float*,float*);
00078 void getLogMeanAndRms(TH1D*,float,float,float*,float*);
00079 float getTimeInterval(int,int);
00080 StEmcGeom* getGeom();
00081
00082 bool isAutoSaveDB() const { return mAutoSaveDB;}
00083 bool isDebug() const { return mDebug;}
00084
00085 void setFile(const Char_t *f) { mFileName = f; }
00086 void setDetector(int det) { mDetector = det; if(mDetector<3) mNChannel = 4800; else mNChannel=18000;}
00087 void setMinTracks(int t) { mNMinTracks = t;}
00088 void setMaxTracks(int t) { mNMaxTracks = t;}
00089 void setCTBMin(int t) { mCTBMin = t;}
00090 void setCTBMax(int t) { mCTBMax = t;}
00091 void setZDCMin(int t) { mZDCMin = t;}
00092 void setZDCMax(int t) { mZDCMax = t;}
00093 void setRange(float range) { mRange = range;}
00094
00095 void setAutoSaveDB(bool a) { mAutoSaveDB = a;}
00096 void setDebug(bool a) { mDebug = a;}
00097 ClassDef(StEmcCalibMaker, 1)
00098 };
00099
00100 #endif