00001 #ifndef __EMCRAWDATACALIBRATORV2_H__
00002 #define __EMCRAWDATACALIBRATORV2_H__
00003
00004 #ifndef __EMCCALIBRATOR_H__
00005 #include "emcCalibrator.h"
00006 #endif
00007 #ifndef __EMCMANAGEABLE_H__
00008 #include "emcManageable.h"
00009 #endif
00010
00011 #include <vector>
00012
00013 class emcRawDataObject;
00014 class emcCalibratedDataObject;
00015 class emcMixedDataObject;
00016 class emcFEMtuple ;
00017 class emcWalkTofs ;
00018 class emcLCTofs ;
00019 class emcTofT0s;
00020 class emcTacPeds;
00021 class emcGains ;
00022 class emcQAs ;
00023 class emcPedestals5 ;
00024 class emcHLRatios ;
00025 class pbscTimingFixes;
00026
00051 class emcRawDataCalibratorV2 : public emcCalibrator
00052 {
00053 public:
00054
00056 emcRawDataCalibratorV2();
00058 virtual ~emcRawDataCalibratorV2();
00059
00061 virtual bool Calibrate(const emcRawDataObject& rdo,
00062 emcMixedDataObject& mdo,
00063 const PHTimeStamp& when);
00065 virtual bool Calibrate(const emcMixedDataObject& mdo,
00066 emcCalibratedDataObject& cdo,
00067 const PHTimeStamp& when);
00068
00070 virtual bool Calibrate(const emcRawDataObject& rdo,
00071 emcCalibratedDataObject& cdo,
00072 const PHTimeStamp& when);
00073
00078 virtual void SetCollectionStatus(const char* type);
00079
00084 virtual bool GetCollectionStatus(const char* type) const;
00085
00087 virtual void Print() const;
00088
00090 virtual void printData(const emcRawDataObject& rdo, const int towerId) const;
00091
00093 virtual void Reset(void);
00094
00100 virtual bool SelectSource(const char* type, emcManageable::EStorage source);
00101
00104 virtual void SetExtraRejectListFilename(const char* filename = "" ) { fExtraRejectListFilename = filename; }
00105
00107 virtual void SetSMBasedCorrectionFilename(const char* filename = "" ) { fSMBasedCorrectionFilename = filename; }
00109 virtual void SetTwrGlobalT0(char * filename=0);
00110
00111
00112
00113 bool CalibrateEnergy(Float_t & adc, const Int_t index,
00114 const Int_t TowerId, int incrementalTime);
00115
00116 bool CalibrateTime(Float_t & tdc, float adc, const Int_t index,
00117 const Int_t TowerId, int incrementalTime);
00118
00119 void CollectForMDO(const PHTimeStamp& when);
00120 void CollectForCDO(const PHTimeStamp& when);
00121
00122 bool GetECalAtT0(const PHTimeStamp& when, bool normalizationON=false );
00123
00124 private:
00125
00126 std::string fExtraRejectListFilename;
00127 std::string fSMBasedCorrectionFilename;
00128
00130 emcQAs* fQA;
00132 std::vector<float> fECalAtT0;
00134 emcManageable::EStorage fPedestalsSource;
00136 emcManageable::EStorage fHLRatiosSource;
00138 emcManageable::EStorage fGainsSource;
00140 emcManageable::EStorage fTofSource;
00142 emcManageable::EStorage fQASource;
00144 emcManageable::EStorage fIniCalSource;
00145
00147 bool fCollectPedestalStatus;
00149 bool fCollectHLRatioStatus;
00151 bool fCollectGainStatus;
00153 bool fCollectTofStatus;
00155 Int_t maxFailPed, maxFailHLR, maxFailGain, maxFailTof;
00156
00157 emcPedestals5 *fPedestals;
00158 emcHLRatios *fHLRatios;
00159 emcGains *fGains;
00160 emcLCTofs *fLCTofs;
00161 emcWalkTofs *fWalkTofs;
00162 emcTofT0s *fTofT0s;
00163 emcTacPeds *fTacPeds;
00164
00165 bool fMustCollectForMDO;
00166 bool fMustCollectForCDO;
00167 pbscTimingFixes * tf;
00168 };
00169
00170 #endif