Skip to content

Commit 372a7f1

Browse files
committed
migrate ElectronHcalHelper to esConsumes
1 parent 5b5a4da commit 372a7f1

File tree

4 files changed

+44
-37
lines changed

4 files changed

+44
-37
lines changed

RecoEgamma/EgammaElectronAlgos/interface/ElectronHcalHelper.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,17 @@
33

44
#include "DataFormats/CaloTowers/interface/CaloTowerCollection.h"
55
#include "Geometry/CaloGeometry/interface/CaloGeometry.h"
6+
#include "Geometry/Records/interface/CaloGeometryRecord.h"
67
#include "FWCore/Framework/interface/Event.h"
78
#include "FWCore/Framework/interface/EventSetup.h"
89
#include "FWCore/Framework/interface/ESHandle.h"
910
#include "DataFormats/EgammaReco/interface/SuperClusterFwd.h"
1011
#include "DataFormats/HcalRecHit/interface/HcalRecHitCollections.h"
1112
#include "RecoEgamma/EgammaIsolationAlgos/interface/EgammaHcalIsolation.h"
1213
#include "RecoEgamma/EgammaIsolationAlgos/interface/EgammaTowerIsolation.h"
14+
#include "CondFormats/DataRecord/interface/HcalChannelQualityRcd.h"
1315

16+
class ConsumesCollector;
1417
class EgammaHadTower;
1518
class HcalTopology;
1619
class HcalChannelQuality;
@@ -35,7 +38,7 @@ class ElectronHcalHelper {
3538
double hOverEHFMinE;
3639
};
3740

38-
ElectronHcalHelper(const Configuration &cfg) : cfg_(cfg) {}
41+
ElectronHcalHelper(const Configuration &cfg, edm::ConsumesCollector &&cc);
3942

4043
void beginEvent(const edm::Event &, const edm::EventSetup &);
4144

@@ -56,9 +59,10 @@ class ElectronHcalHelper {
5659
private:
5760
const Configuration cfg_;
5861

59-
// event setup data (rechits strategy)
60-
unsigned long long caloGeomCacheId_ = 0;
61-
edm::ESHandle<CaloGeometry> caloGeom_;
62+
edm::ESGetToken<HcalChannelQuality, HcalChannelQualityRcd> hcalChannelQualityToken_;
63+
edm::ESGetToken<HcalTopology, HcalRecNumberingRecord> hcalTopologyToken_;
64+
edm::ESGetToken<CaloTowerConstituentsMap, CaloGeometryRecord> towerMapToken_;
65+
edm::ESGetToken<CaloGeometry, CaloGeometryRecord> caloGeometryToken_;
6266

6367
// event data (rechits strategy)
6468
std::unique_ptr<EgammaHcalIsolation> hcalIso_ = nullptr;

RecoEgamma/EgammaElectronAlgos/src/ElectronHcalHelper.cc

Lines changed: 29 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -3,46 +3,49 @@
33
#include "Geometry/Records/interface/CaloGeometryRecord.h"
44
#include "FWCore/MessageLogger/interface/MessageLogger.h"
55
#include "Geometry/Records/interface/CaloGeometryRecord.h"
6-
#include "CondFormats/DataRecord/interface/HcalChannelQualityRcd.h"
6+
#include "FWCore/Framework/interface/ConsumesCollector.h"
77

88
using namespace reco;
99

10-
void ElectronHcalHelper::beginEvent(const edm::Event& evt, const edm::EventSetup& es) {
10+
ElectronHcalHelper::ElectronHcalHelper(const Configuration& cfg, edm::ConsumesCollector&& cc) : cfg_(cfg) {
11+
if (cfg_.hOverEConeSize == 0) {
12+
return;
13+
}
14+
15+
if (cfg_.useTowers) {
16+
hcalChannelQualityToken_ = cc.esConsumes(edm::ESInputTag("", "withTopo"));
17+
hcalTopologyToken_ = cc.esConsumes();
18+
towerMapToken_ = cc.esConsumes();
19+
} else {
20+
caloGeometryToken_ = cc.esConsumes();
21+
}
22+
}
23+
24+
void ElectronHcalHelper::beginEvent(const edm::Event& evt, const edm::EventSetup& eventSetup) {
1125
if (cfg_.hOverEConeSize == 0) {
1226
return;
1327
}
1428

1529
if (cfg_.useTowers) {
1630
towersFromCollection_ = &evt.get(cfg_.hcalTowers);
31+
32+
towerMap_ = &eventSetup.getData(towerMapToken_);
33+
hcalQuality_ = &eventSetup.getData(hcalChannelQualityToken_);
34+
hcalTopology_ = &eventSetup.getData(hcalTopologyToken_);
35+
1736
towerIso1_ =
1837
std::make_unique<EgammaTowerIsolation>(cfg_.hOverEConeSize, 0., cfg_.hOverEPtMin, 1, towersFromCollection_);
1938
towerIso2_ =
2039
std::make_unique<EgammaTowerIsolation>(cfg_.hOverEConeSize, 0., cfg_.hOverEPtMin, 2, towersFromCollection_);
21-
22-
edm::ESHandle<CaloTowerConstituentsMap> ctmaph;
23-
es.get<CaloGeometryRecord>().get(ctmaph);
24-
towerMap_ = ctmaph.product();
25-
26-
edm::ESHandle<HcalChannelQuality> hQuality;
27-
es.get<HcalChannelQualityRcd>().get("withTopo", hQuality);
28-
hcalQuality_ = hQuality.product();
29-
edm::ESHandle<HcalTopology> hcalTopology;
30-
es.get<HcalRecNumberingRecord>().get(hcalTopology);
31-
hcalTopology_ = hcalTopology.product();
3240
} else {
33-
edm::Handle<HBHERecHitCollection> hbhe_;
34-
if (!evt.getByToken(cfg_.hcalRecHits, hbhe_)) {
35-
edm::LogError("ElectronHcalHelper::readEvent") << "failed to get the rechits";
36-
}
37-
38-
hcalIso_ = std::make_unique<EgammaHcalIsolation>(
39-
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-
}
41+
hcalIso_ = std::make_unique<EgammaHcalIsolation>(cfg_.hOverEConeSize,
42+
0.,
43+
cfg_.hOverEHBMinE,
44+
cfg_.hOverEHFMinE,
45+
0.,
46+
0.,
47+
eventSetup.getHandle(caloGeometryToken_),
48+
evt.get(cfg_.hcalRecHits));
4649
}
4750
}
4851

RecoEgamma/EgammaElectronAlgos/src/GsfElectronAlgo.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -383,12 +383,12 @@ GsfElectronAlgo::GsfElectronAlgo(const Tokens& input,
383383
tkIsol04CalcCfg_(tkIsol04),
384384
tkIsolHEEP03CalcCfg_(tkIsolHEEP03),
385385
tkIsolHEEP04CalcCfg_(tkIsolHEEP04),
386-
magneticFieldToken_{cc.esConsumes<MagneticField, IdealMagneticFieldRecord>()},
387-
caloGeometryToken_{cc.esConsumes<CaloGeometry, CaloGeometryRecord>()},
388-
caloTopologyToken_{cc.esConsumes<CaloTopology, CaloTopologyRecord>()},
389-
trackerGeometryToken_{cc.esConsumes<TrackerGeometry, TrackerDigiGeometryRecord>()},
390-
ecalSeveretyLevelAlgoToken_{cc.esConsumes<EcalSeverityLevelAlgo, EcalSeverityLevelAlgoRcd>()},
391-
hcalHelper_{hcal},
386+
magneticFieldToken_{cc.esConsumes()},
387+
caloGeometryToken_{cc.esConsumes()},
388+
caloTopologyToken_{cc.esConsumes()},
389+
trackerGeometryToken_{cc.esConsumes()},
390+
ecalSeveretyLevelAlgoToken_{cc.esConsumes()},
391+
hcalHelper_{hcal, std::move(cc)},
392392
superClusterErrorFunction_{
393393
std::forward<std::unique_ptr<EcalClusterFunctionBaseClass>>(superClusterErrorFunction)},
394394
crackCorrectionFunction_{std::forward<std::unique_ptr<EcalClusterFunctionBaseClass>>(crackCorrectionFunction)},

RecoEgamma/EgammaElectronProducers/plugins/ElectronSeedProducer.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ ElectronSeedProducer::ElectronSeedProducer(const edm::ParameterSet& conf)
8484
hcalCfg.hcalTowers = consumes<CaloTowerCollection>(conf.getParameter<edm::InputTag>("hcalTowers"));
8585
hcalCfg.hOverEPtMin = conf.getParameter<double>("hOverEPtMin");
8686
}
87-
hcalHelper_ = std::make_unique<ElectronHcalHelper>(hcalCfg);
87+
hcalHelper_ = std::make_unique<ElectronHcalHelper>(hcalCfg, consumesCollector());
8888

8989
allowHGCal_ = conf.getParameter<bool>("allowHGCal");
9090
if (allowHGCal_) {

0 commit comments

Comments
 (0)