00001 #ifndef RecoLocalCalo_EcalRecProducers_EcalUncalibRecHitRecWorkerRatio_hh 00002 #define RecoLocalCalo_EcalRecProducers_EcalUncalibRecHitRecWorkerRatio_hh 00003 00014 #include "RecoLocalCalo/EcalRecProducers/interface/EcalUncalibRecHitWorkerBaseClass.h" 00015 #include "RecoLocalCalo/EcalRecAlgos/interface//EcalUncalibRecHitRatioMethodAlgo.h" 00016 #include "FWCore/Framework/interface/ESHandle.h" 00017 #include "CondFormats/EcalObjects/interface/EcalSampleMask.h" 00018 #include "CondFormats/EcalObjects/interface/EcalPedestals.h" 00019 #include "CondFormats/EcalObjects/interface/EcalGainRatios.h" 00020 00021 namespace edm { 00022 class Event; 00023 class EventSetup; 00024 class ParameterSet; 00025 } 00026 00027 class EcalUncalibRecHitWorkerRatio : public EcalUncalibRecHitWorkerBaseClass { 00028 00029 public: 00030 EcalUncalibRecHitWorkerRatio(const edm::ParameterSet&); 00031 virtual ~EcalUncalibRecHitWorkerRatio() {}; 00032 00033 void set(const edm::EventSetup& es); 00034 bool run(const edm::Event& evt, const EcalDigiCollection::const_iterator & digi, EcalUncalibratedRecHitCollection & result); 00035 00036 protected: 00037 00038 // determie which of the samples must actually be used by ECAL local reco 00039 edm::ESHandle<EcalSampleMask> sampleMaskHand_; 00040 00041 edm::ESHandle<EcalPedestals> peds; 00042 edm::ESHandle<EcalGainRatios> gains; 00043 00044 double pedVec[3]; 00045 double pedRMSVec[3]; 00046 double gainRatios[3]; 00047 00048 std::vector<double> EBtimeFitParameters_; 00049 std::vector<double> EEtimeFitParameters_; 00050 00051 std::vector<double> EBamplitudeFitParameters_; 00052 std::vector<double> EEamplitudeFitParameters_; 00053 00054 std::pair<double,double> EBtimeFitLimits_; 00055 std::pair<double,double> EEtimeFitLimits_; 00056 00057 double EBtimeConstantTerm_; 00058 double EEtimeConstantTerm_; 00059 00060 EcalUncalibRecHitRatioMethodAlgo<EBDataFrame> uncalibMaker_barrel_; 00061 EcalUncalibRecHitRatioMethodAlgo<EEDataFrame> uncalibMaker_endcap_; 00062 }; 00063 00064 #endif