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"
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"
4240#include < vector>
4341
4442class 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
5655private:
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
137137HcalTestAnalysis::~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
142147void 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 }
0 commit comments