11#include " RecoEgamma/EgammaElectronAlgos/interface/ElectronHcalHelper.h"
2- #include " RecoEgamma/EgammaIsolationAlgos/interface/EgammaHcalIsolation.h"
3- #include " RecoEgamma/EgammaIsolationAlgos/interface/EgammaTowerIsolation.h"
42#include " RecoEgamma/EgammaIsolationAlgos/interface/EgammaHadTower.h"
53#include " Geometry/Records/interface/CaloGeometryRecord.h"
64#include " FWCore/MessageLogger/interface/MessageLogger.h"
97
108using namespace reco ;
119
12- ElectronHcalHelper::ElectronHcalHelper (const Configuration& cfg)
13- : cfg_(cfg), caloGeomCacheId_(0 ), hcalIso_(nullptr ), towerIso1_(nullptr ), towerIso2_(nullptr ) {}
14-
15- void ElectronHcalHelper::checkSetup (const edm::EventSetup& es) {
10+ void ElectronHcalHelper::beginEvent (const edm::Event& evt, const edm::EventSetup& es) {
1611 if (cfg_.hOverEConeSize == 0 ) {
1712 return ;
1813 }
1914
2015 if (cfg_.useTowers ) {
16+ towersFromCollection_ = &evt.get (cfg_.hcalTowers );
17+ towerIso1_ =
18+ std::make_unique<EgammaTowerIsolation>(cfg_.hOverEConeSize , 0 ., cfg_.hOverEPtMin , 1 , towersFromCollection_);
19+ towerIso2_ =
20+ std::make_unique<EgammaTowerIsolation>(cfg_.hOverEConeSize , 0 ., cfg_.hOverEPtMin , 2 , towersFromCollection_);
21+
2122 edm::ESHandle<CaloTowerConstituentsMap> ctmaph;
2223 es.get <CaloGeometryRecord>().get (ctmaph);
2324 towerMap_ = ctmaph.product ();
@@ -28,41 +29,20 @@ void ElectronHcalHelper::checkSetup(const edm::EventSetup& es) {
2829 edm::ESHandle<HcalTopology> hcalTopology;
2930 es.get <HcalRecNumberingRecord>().get (hcalTopology);
3031 hcalTopology_ = hcalTopology.product ();
31-
3232 } else {
33- unsigned long long newCaloGeomCacheId_ = es.get <CaloGeometryRecord>().cacheIdentifier ();
34- if (caloGeomCacheId_ != newCaloGeomCacheId_) {
35- caloGeomCacheId_ = newCaloGeomCacheId_;
36- es.get <CaloGeometryRecord>().get (caloGeom_);
37- }
38- }
39- }
40-
41- void ElectronHcalHelper::readEvent (const edm::Event& evt) {
42- if (cfg_.hOverEConeSize == 0 ) {
43- return ;
44- }
45-
46- if (cfg_.useTowers ) {
47- delete towerIso1_;
48- towerIso1_ = nullptr ;
49- delete towerIso2_;
50- towerIso2_ = nullptr ;
51-
52- towersFromCollection_ = &evt.get (cfg_.hcalTowers );
53- towerIso1_ = new EgammaTowerIsolation (cfg_.hOverEConeSize , 0 ., cfg_.hOverEPtMin , 1 , towersFromCollection_);
54- towerIso2_ = new EgammaTowerIsolation (cfg_.hOverEConeSize , 0 ., cfg_.hOverEPtMin , 2 , towersFromCollection_);
55- } else {
56- delete hcalIso_;
57- hcalIso_ = nullptr ;
58-
5933 edm::Handle<HBHERecHitCollection> hbhe_;
6034 if (!evt.getByToken (cfg_.hcalRecHits , hbhe_)) {
6135 edm::LogError (" ElectronHcalHelper::readEvent" ) << " failed to get the rechits" ;
6236 }
6337
64- hcalIso_ = new EgammaHcalIsolation (
38+ hcalIso_ = std::make_unique< EgammaHcalIsolation> (
6539 cfg_.hOverEConeSize , 0 ., cfg_.hOverEHBMinE , cfg_.hOverEHFMinE , 0 ., 0 ., caloGeom_, *hbhe_);
40+
41+ unsigned long long newCaloGeomCacheId_ = es.get <CaloGeometryRecord>().cacheIdentifier ();
42+ if (caloGeomCacheId_ != newCaloGeomCacheId_) {
43+ caloGeomCacheId_ = newCaloGeomCacheId_;
44+ es.get <CaloGeometryRecord>().get (caloGeom_);
45+ }
6646 }
6747}
6848
@@ -121,15 +101,3 @@ bool ElectronHcalHelper::hasActiveHcal(const reco::SuperCluster& sc) const {
121101 return true ;
122102 }
123103}
124-
125- ElectronHcalHelper::~ElectronHcalHelper () {
126- if (cfg_.hOverEConeSize == 0 ) {
127- return ;
128- }
129- if (cfg_.useTowers ) {
130- delete towerIso1_;
131- delete towerIso2_;
132- } else {
133- delete hcalIso_;
134- }
135- }
0 commit comments