00001 00002 #ifndef ElectronHcalHelper_h 00003 #define ElectronHcalHelper_h 00004 00005 class EgammaHcalIsolation ; 00006 class EgammaTowerIsolation ; 00007 00008 #include "RecoCaloTools/MetaCollections/interface/CaloRecHitMetaCollections.h" 00009 #include "DataFormats/CaloTowers/interface/CaloTowerCollection.h" 00010 #include "Geometry/CaloGeometry/interface/CaloGeometry.h" 00011 #include "FWCore/Framework/interface/Event.h" 00012 #include "FWCore/Framework/interface/EventSetup.h" 00013 #include "FWCore/Framework/interface/ESHandle.h" 00014 #include "FWCore/ParameterSet/interface/ParameterSet.h" 00015 #include "DataFormats/EgammaReco/interface/SuperClusterFwd.h" 00016 #include "DataFormats/Common/interface/Handle.h" 00017 00018 class ElectronHcalHelper 00019 { 00020 public: 00021 00022 struct Configuration 00023 { 00024 // common parameters 00025 double hOverEConeSize ; 00026 00027 // strategy 00028 bool useTowers ; 00029 00030 // specific parameters if use towers 00031 edm::InputTag hcalTowers ; 00032 double hOverEPtMin ; // min tower Et for H/E evaluation 00033 00034 // specific parameters if use rechits 00035 edm::InputTag hcalRecHits ; 00036 double hOverEHBMinE ; 00037 double hOverEHFMinE ; 00038 } ; 00039 00040 ElectronHcalHelper( const Configuration & ) ; 00041 void checkSetup( const edm::EventSetup & ) ; 00042 void readEvent( edm::Event & ) ; 00043 double hcalESum( const reco::SuperCluster & ) ; 00044 double hcalESumDepth1( const reco::SuperCluster & ) ; 00045 double hcalESumDepth2( const reco::SuperCluster & ) ; 00046 ~ElectronHcalHelper() ; 00047 00048 double hOverEConeSize() const { return cfg_.hOverEConeSize ; } 00049 00050 00051 private: 00052 00053 const Configuration cfg_ ; 00054 00055 // event setup data (rechits strategy) 00056 unsigned long long caloGeomCacheId_ ; 00057 edm::ESHandle<CaloGeometry> caloGeom_ ; 00058 00059 // event data (rechits strategy) 00060 edm::Handle<HBHERecHitCollection> * hbhe_ ; 00061 HBHERecHitMetaCollection * mhbhe_ ; 00062 EgammaHcalIsolation * hcalIso_ ; 00063 00064 // event data (towers strategy) 00065 edm::Handle<CaloTowerCollection> * towersH_ ; 00066 EgammaTowerIsolation * towerIso1_ ; 00067 EgammaTowerIsolation * towerIso2_ ; 00068 00069 } ; 00070 00071 #endif 00072 00073 00074