00001 #ifndef __EMCDCPROCESSORV3_H__ 00002 #define __EMCDCPROCESSORV3_H__ 00003 00004 #ifndef __EMCDCPROCESSOR_H__ 00005 #include "emcDCProcessor.h" 00006 #endif 00007 #include <string> 00008 #include <vector> 00009 #include <set> 00010 00011 class emcTowerContent; 00012 class emcCalibrationDataHelper; 00013 00017 class emcDCProcessorv3 : public emcDCProcessor 00018 { 00019 public: 00020 emcDCProcessorv3(emcCalibrationDataHelper*); 00021 00022 virtual ~emcDCProcessorv3(); 00023 00024 bool calibrate(emcTowerContainer* pbsc, 00025 emcTowerContainer* pbgl, 00026 time_t incrTime); 00027 00028 int isValid() const; 00029 00030 void identify(std::ostream& out = std::cout) const; 00031 00032 void Reset(); 00033 00034 private: 00035 00036 typedef float (emcDCProcessorv3::*FPTR)(emcTowerContent*,time_t); 00037 00038 float calibrateEnergyPbGl(emcTowerContent* t, time_t); 00039 float calibrateEnergyPbSc(emcTowerContent* t, time_t incrTime); 00040 float calibrateTimePbGl(emcTowerContent* t, time_t); 00041 float calibrateTimePbSc(emcTowerContent* t,time_t incrTime); 00042 00043 static float Log(int adc); 00044 static std::vector<float> LogInit(void); 00045 00046 private: 00047 emcCalibrationDataHelper* fCH; 00048 bool fZeroSuppression; 00049 00050 std::set<int> fNormProblems; 00051 00052 static const int fgADCThreshold = 10; 00053 float fgNormtLimitPbSc; 00054 00055 std::string fksGainsBLR; 00056 00057 ClassDef(emcDCProcessorv3,1) 00058 }; 00059 00060 #endif