Skip to content

Commit f87b777

Browse files
authored
Merge pull request cms-sw#36288 from bsunanda/Run3-sim97
Run3-sim97 Make use of ESGetToken in examples for SimG4CMS/Calo
2 parents bcc6320 + 7208105 commit f87b777

File tree

5 files changed

+36
-32
lines changed

5 files changed

+36
-32
lines changed

SimG4CMS/Calo/interface/ECalSD.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class ECalSD : public CaloSD {
5757

5858
// initialised before run
5959
const EcalSimulationParameters *ecalSimParameters_;
60-
EcalNumberingScheme *numberingScheme_;
60+
std::unique_ptr<EcalNumberingScheme> numberingScheme_;
6161
bool useWeight, storeTrack, storeRL, storeLayerTimeSim;
6262
bool useBirk, useBirkL3;
6363
double birk1, birk2, birk3, birkSlope, birkCut;

SimG4CMS/Calo/plugins/CaloSteppingAction.cc

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99

1010
#include "FWCore/Framework/interface/Event.h"
1111
#include "FWCore/Framework/interface/EventSetup.h"
12-
#include "FWCore/Framework/interface/ESHandle.h"
1312
#include "FWCore/MessageLogger/interface/MessageLogger.h"
1413
#include "FWCore/ParameterSet/interface/ParameterSet.h"
1514
#include "FWCore/Utilities/interface/isFinite.h"
@@ -35,7 +34,6 @@
3534

3635
#include "SimG4Core/Notification/interface/G4TrackToParticleID.h"
3736
#include "SimG4Core/Notification/interface/Observer.h"
38-
#include "SimG4Core/Notification/interface/BeginOfJob.h"
3937
#include "SimG4Core/Notification/interface/BeginOfRun.h"
4038
#include "SimG4Core/Notification/interface/BeginOfEvent.h"
4139
#include "SimG4Core/Notification/interface/EndOfEvent.h"
@@ -67,7 +65,6 @@
6765
#include <vector>
6866

6967
class CaloSteppingAction : public SimProducer,
70-
public Observer<const BeginOfJob*>,
7168
public Observer<const BeginOfRun*>,
7269
public Observer<const BeginOfEvent*>,
7370
public Observer<const EndOfEvent*>,
@@ -76,13 +73,14 @@ class CaloSteppingAction : public SimProducer,
7673
CaloSteppingAction(const edm::ParameterSet& p);
7774
~CaloSteppingAction() override;
7875

76+
void registerConsumes(edm::ConsumesCollector) override;
7977
void produce(edm::Event&, const edm::EventSetup&) override;
78+
void beginRun(edm::EventSetup const&) override;
8079

8180
private:
8281
void fillHits(edm::PCaloHitContainer& cc, int type);
8382
void fillPassiveHits(edm::PassiveHitContainer& cc);
8483
// observer classes
85-
void update(const BeginOfJob* job) override;
8684
void update(const BeginOfRun* run) override;
8785
void update(const BeginOfEvent* evt) override;
8886
void update(const G4Step* step) override;
@@ -102,6 +100,7 @@ class CaloSteppingAction : public SimProducer,
102100
std::unique_ptr<EcalEndcapNumberingScheme> eeNumberingScheme_;
103101
std::unique_ptr<HcalNumberingFromPS> hcNumberingPS_;
104102
#ifdef HcalNumberingTest
103+
edm::ESGetToken<HcalDDDSimConstants, HcalSimNumberingRecord> ddconsToken_;
105104
std::unique_ptr<HcalNumberingFromDDD> hcNumbering_;
106105
#endif
107106
std::unique_ptr<HcalNumberingScheme> hcNumberingScheme_;
@@ -177,6 +176,13 @@ CaloSteppingAction::~CaloSteppingAction() {
177176
<< "selected entries : " << count_;
178177
}
179178

179+
void CaloSteppingAction::registerConsumes(edm::ConsumesCollector cc) {
180+
#ifdef HcalNumberingTest
181+
ddconsToken_ = cc.esConsumes<HcalDDDSimConstants, HcalSimNumberingRecord, edm::Transition::BeginRun>();
182+
edm::LogVerbatim("Step") << "CaloSteppingAction::Initialize ESGetToken for HcalDDDSimConstants";
183+
#endif
184+
}
185+
180186
void CaloSteppingAction::produce(edm::Event& e, const edm::EventSetup&) {
181187
for (int k = 0; k < CaloSteppingAction::nSD_; ++k) {
182188
saveHits(k);
@@ -220,14 +226,12 @@ void CaloSteppingAction::fillPassiveHits(edm::PassiveHitContainer& cc) {
220226
}
221227
}
222228

223-
void CaloSteppingAction::update(const BeginOfJob* job) {
224-
edm::LogVerbatim("Step") << "CaloSteppingAction:: Enter BeginOfJob";
229+
void CaloSteppingAction::beginRun(edm::EventSetup const& es) {
230+
edm::LogVerbatim("Step") << "CaloSteppingAction:: Enter BeginOfRun";
225231

226232
#ifdef HcalNumberingTest
227233
// Numbering From DDD
228-
edm::ESHandle<HcalDDDSimConstants> hdc;
229-
(*job)()->get<HcalSimNumberingRecord>().get(hdc);
230-
const HcalDDDSimConstants* hcons_ = hdc.product();
234+
const HcalDDDSimConstants* hcons_ = &es.getData(ddconsToken_);
231235
edm::LogVerbatim("Step") << "CaloSteppingAction:: Initialise "
232236
<< "HcalNumberingFromDDD";
233237
hcNumbering_ = std::make_unique<HcalNumberingFromDDD>(hcons_);

SimG4CMS/Calo/plugins/HcalTestAnalysis.cc

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#include "SimG4Core/Notification/interface/BeginOfJob.h"
21
#include "SimG4Core/Notification/interface/BeginOfRun.h"
32
#include "SimG4Core/Notification/interface/BeginOfEvent.h"
43
#include "SimG4Core/Notification/interface/EndOfEvent.h"
@@ -13,7 +12,6 @@
1312

1413
#include "FWCore/Framework/interface/Event.h"
1514
#include "FWCore/Framework/interface/EventSetup.h"
16-
#include "FWCore/Framework/interface/ESHandle.h"
1715

1816
#include "Geometry/HcalCommonData/interface/HcalNumberingFromDDD.h"
1917
#include "Geometry/HcalCommonData/interface/HcalDDDSimConstants.h"
@@ -42,7 +40,6 @@
4240
#include <vector>
4341

4442
class HcalTestAnalysis : public SimProducer,
45-
public Observer<const BeginOfJob*>,
4643
public Observer<const BeginOfRun*>,
4744
public Observer<const BeginOfEvent*>,
4845
public Observer<const EndOfEvent*>,
@@ -51,11 +48,12 @@ class HcalTestAnalysis : public SimProducer,
5148
HcalTestAnalysis(const edm::ParameterSet& p);
5249
~HcalTestAnalysis() override;
5350

51+
void registerConsumes(edm::ConsumesCollector) override;
5452
void produce(edm::Event&, const edm::EventSetup&) override;
53+
void beginRun(edm::EventSetup const&) override;
5554

5655
private:
5756
// observer classes
58-
void update(const BeginOfJob* run) override;
5957
void update(const BeginOfRun* run) override;
6058
void update(const BeginOfEvent* evt) override;
6159
void update(const EndOfEvent* evt) override;
@@ -81,9 +79,10 @@ class HcalTestAnalysis : public SimProducer,
8179
std::unique_ptr<HcalTestHistoClass> tuples_;
8280

8381
// Numbering scheme
82+
edm::ESGetToken<HcalDDDSimConstants, HcalSimNumberingRecord> ddconsToken_;
8483
std::unique_ptr<HcalNumberingFromDDD> numberingFromDDD_;
8584
const HcalDDDSimConstants* hcons_;
86-
HcalTestNumberingScheme* org_;
85+
std::unique_ptr<HcalTestNumberingScheme> org_;
8786

8887
// Hits for qie analysis
8988
std::vector<CaloHit> caloHitCache_;
@@ -102,7 +101,8 @@ class HcalTestAnalysis : public SimProducer,
102101
double mudist_[20]; // Distance of muon from central part
103102
};
104103

105-
HcalTestAnalysis::HcalTestAnalysis(const edm::ParameterSet& p) : addTower_(3), hcons_(nullptr), org_(nullptr) {
104+
HcalTestAnalysis::HcalTestAnalysis(const edm::ParameterSet& p) : addTower_(3), hcons_(nullptr) {
105+
org_.reset(nullptr);
106106
edm::ParameterSet m_Anal = p.getParameter<edm::ParameterSet>("HcalTestAnalysis");
107107
eta0_ = m_Anal.getParameter<double>("Eta0");
108108
phi0_ = m_Anal.getParameter<double>("Phi0");
@@ -136,7 +136,12 @@ HcalTestAnalysis::HcalTestAnalysis(const edm::ParameterSet& p) : addTower_(3), h
136136

137137
HcalTestAnalysis::~HcalTestAnalysis() {
138138
edm::LogVerbatim("HcalSim") << "HcalTestAnalysis: --------> Total number of selected entries : " << count_;
139-
edm::LogVerbatim("HcalSim") << "HcalTestAnalysis: Pointers:: Numbering Scheme " << org_;
139+
edm::LogVerbatim("HcalSim") << "HcalTestAnalysis: Pointers:: Numbering Scheme " << org_.get();
140+
}
141+
142+
void HcalTestAnalysis::registerConsumes(edm::ConsumesCollector cc) {
143+
ddconsToken_ = cc.esConsumes<HcalDDDSimConstants, HcalSimNumberingRecord, edm::Transition::BeginRun>();
144+
edm::LogVerbatim("HcalSim") << "HcalTestAnalysis::Initialize ESGetToken for HcalDDDSimConstants";
140145
}
141146

142147
void HcalTestAnalysis::produce(edm::Event& e, const edm::EventSetup&) {
@@ -214,16 +219,14 @@ std::vector<int> HcalTestAnalysis::towersToAdd(int centre, int nadd) {
214219

215220
//==================================================================== per JOB
216221

217-
void HcalTestAnalysis::update(const BeginOfJob* job) {
222+
void HcalTestAnalysis::beginRun(edm::EventSetup const& es) {
218223
// Numbering From DDD
219-
edm::ESHandle<HcalDDDSimConstants> hdc;
220-
(*job)()->get<HcalSimNumberingRecord>().get(hdc);
221-
hcons_ = hdc.product();
224+
hcons_ = &es.getData(ddconsToken_);
222225
edm::LogVerbatim("HcalSim") << "HcalTestAnalysis:: Initialise HcalNumberingFromDDD for " << names_[0];
223226
numberingFromDDD_ = std::make_unique<HcalNumberingFromDDD>(hcons_);
224227

225228
// Numbering scheme
226-
org_ = new HcalTestNumberingScheme(false);
229+
org_ = std::make_unique<HcalTestNumberingScheme>(false);
227230
}
228231

229232
//==================================================================== per RUN
@@ -274,8 +277,8 @@ void HcalTestAnalysis::update(const BeginOfRun* run) {
274277
HCalSD* theCaloSD = dynamic_cast<HCalSD*>(aSD);
275278
edm::LogVerbatim("HcalSim") << "HcalTestAnalysis::beginOfRun: Finds SD with name " << theCaloSD->GetName()
276279
<< " in this Setup";
277-
if (org_) {
278-
theCaloSD->setNumberingScheme(org_);
280+
if (org_.get()) {
281+
theCaloSD->setNumberingScheme(org_.get());
279282
edm::LogVerbatim("HcalSim") << "HcalTestAnalysis::beginOfRun: set a new numbering scheme";
280283
}
281284
}

SimG4CMS/Calo/src/CaloSD.cc

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
#include "SimG4Core/Notification/interface/TrackInformation.h"
99
#include "SimG4Core/Notification/interface/G4TrackToParticleID.h"
1010
#include "SimG4Core/Notification/interface/SimTrackManager.h"
11-
#include "FWCore/Framework/interface/ESHandle.h"
1211
#include "FWCore/ParameterSet/interface/ParameterSet.h"
1312
#include "FWCore/Utilities/interface/Exception.h"
1413

SimG4CMS/Calo/src/ECalSD.cc

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,8 @@ ECalSD::ECalSD(const std::string& name,
4949
manager,
5050
(float)(p.getParameter<edm::ParameterSet>("ECalSD").getParameter<double>("TimeSliceUnit")),
5151
p.getParameter<edm::ParameterSet>("ECalSD").getParameter<bool>("IgnoreTrackID")),
52-
ecalSimParameters_(ecpar),
53-
numberingScheme_(nullptr) {
52+
ecalSimParameters_(ecpar) {
53+
numberingScheme_.reset(nullptr);
5454
// static SimpleConfigurable<bool> on1(false, "ECalSD:UseBirkLaw");
5555
// static SimpleConfigurable<double> bk1(0.00463,"ECalSD:BirkC1");
5656
// static SimpleConfigurable<double> bk2(-0.03, "ECalSD:BirkC2");
@@ -175,7 +175,7 @@ ECalSD::ECalSD(const std::string& name,
175175
}
176176
}
177177

178-
ECalSD::~ECalSD() { delete numberingScheme_; }
178+
ECalSD::~ECalSD() {}
179179

180180
double ECalSD::getEnergyDeposit(const G4Step* aStep) {
181181
const G4StepPoint* preStepPoint = aStep->GetPreStepPoint();
@@ -316,7 +316,7 @@ uint16_t ECalSD::getLayerIDForTimeSim() {
316316
}
317317

318318
uint32_t ECalSD::setDetUnitId(const G4Step* aStep) {
319-
if (numberingScheme_ == nullptr) {
319+
if (numberingScheme_.get() == nullptr) {
320320
return EBDetId(1, 1)();
321321
} else {
322322
getBaseNumber(aStep);
@@ -327,9 +327,7 @@ uint32_t ECalSD::setDetUnitId(const G4Step* aStep) {
327327
void ECalSD::setNumberingScheme(EcalNumberingScheme* scheme) {
328328
if (scheme != nullptr) {
329329
edm::LogVerbatim("EcalSim") << "EcalSD: updates numbering scheme for " << GetName();
330-
if (numberingScheme_)
331-
delete numberingScheme_;
332-
numberingScheme_ = scheme;
330+
numberingScheme_.reset(scheme);
333331
}
334332
}
335333

0 commit comments

Comments
 (0)