emcRawDataCalibratorV2.h

Go to the documentation of this file.
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   // private:
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