00001 #ifndef RecoLocalCalo_EcalRecProducers_EcalRecHitWorkerRecover_hh 00002 #define RecoLocalCalo_EcalRecProducers_EcalRecHitWorkerRecover_hh 00003 00012 #include "RecoLocalCalo/EcalRecProducers/interface/EcalRecHitWorkerBaseClass.h" 00013 #include "RecoLocalCalo/EcalRecAlgos/interface/EcalRecHitSimpleAlgo.h" 00014 00015 #include "FWCore/Framework/interface/ESHandle.h" 00016 00017 00018 #include "CondFormats/EcalObjects/interface/EcalChannelStatus.h" 00019 00020 #include "Geometry/CaloTopology/interface/CaloTopology.h" 00021 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00022 #include "Geometry/CaloTopology/interface/EcalTrigTowerConstituentsMap.h" 00023 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" 00024 #include "Geometry/EcalMapping/interface/EcalElectronicsMapping.h" 00025 00026 #include "CalibCalorimetry/EcalTPGTools/interface/EcalTPGScale.h" 00027 #include "CalibCalorimetry/EcalLaserCorrection/interface/EcalLaserDbService.h" 00028 00029 class EcalRecHitWorkerRecover : public EcalRecHitWorkerBaseClass { 00030 public: 00031 EcalRecHitWorkerRecover(const edm::ParameterSet&); 00032 virtual ~EcalRecHitWorkerRecover() {}; 00033 00034 void set(const edm::EventSetup& es); 00035 bool run(const edm::Event& evt, const EcalUncalibratedRecHit& uncalibRH, EcalRecHitCollection & result); 00036 00037 protected: 00038 00039 void insertRecHit( const EcalRecHit &hit, EcalRecHitCollection &collection ); 00040 float recCheckCalib(float energy, int ieta); 00041 bool alreadyInserted( const DetId & id ); 00042 float estimateEnergy(int ieta, EcalRecHitCollection* hits, 00043 std::set<DetId> sId, 00044 std::vector<DetId> vId); 00045 00046 edm::ESHandle<EcalLaserDbService> laser; 00047 00048 // isolated dead channels 00049 edm::ESHandle<CaloTopology> caloTopology_; 00050 edm::ESHandle<CaloGeometry> caloGeometry_; 00051 double singleRecoveryThreshold_; 00052 std::string singleRecoveryMethod_; 00053 bool killDeadChannels_; 00054 00055 bool recoverEBIsolatedChannels_; 00056 bool recoverEEIsolatedChannels_; 00057 bool recoverEBVFE_; 00058 bool recoverEEVFE_; 00059 bool recoverEBFE_; 00060 bool recoverEEFE_; 00061 00062 // dead FE 00063 EcalTPGScale ecalScale_; 00064 edm::InputTag tpDigiCollection_; 00065 edm::ESHandle< EcalElectronicsMapping > pEcalMapping_; 00066 const EcalElectronicsMapping *ecalMapping_; 00067 double logWarningEtThreshold_EB_FE_; 00068 double logWarningEtThreshold_EE_FE_; 00069 00070 edm::ESHandle<EcalTrigTowerConstituentsMap> ttMap_; 00071 00072 edm::ESHandle<CaloSubdetectorGeometry> pEBGeom_; 00073 edm::ESHandle<CaloSubdetectorGeometry> pEEGeom_; 00074 const CaloSubdetectorGeometry * ebGeom_; 00075 const CaloSubdetectorGeometry * eeGeom_; 00076 const CaloGeometry* geo_; 00077 00078 EcalRecHitSimpleAlgo * rechitMaker_; 00079 00080 std::set<DetId> recoveredDetIds_EB_; 00081 std::set<DetId> recoveredDetIds_EE_; 00082 }; 00083 00084 #endif