CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch9/src/RecoLocalCalo/EcalRecProducers/plugins/EcalRecHitWorkerRecover.h

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