diff --git a/SimG4Core/HelpfulWatchers/interface/MonopoleSteppingAction.h b/SimG4Core/HelpfulWatchers/interface/MonopoleSteppingAction.h index 869f8efd35bfd..7ce17d09be95b 100644 --- a/SimG4Core/HelpfulWatchers/interface/MonopoleSteppingAction.h +++ b/SimG4Core/HelpfulWatchers/interface/MonopoleSteppingAction.h @@ -4,28 +4,30 @@ #include "FWCore/ParameterSet/interface/ParameterSet.h" #include "SimG4Core/Notification/interface/Observer.h" #include "SimG4Core/Watcher/interface/SimWatcher.h" +#include "MagneticField/Engine/interface/MagneticField.h" +#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" #include "G4Step.hh" #include -class BeginOfJob; class BeginOfRun; class BeginOfTrack; class MonopoleSteppingAction : public SimWatcher, - public Observer, public Observer, public Observer, public Observer { public: MonopoleSteppingAction(edm::ParameterSet const &p); ~MonopoleSteppingAction() override; - void update(const BeginOfJob *) override; + void registerConsumes(edm::ConsumesCollector) override; + void beginRun(edm::EventSetup const &) override; void update(const BeginOfRun *) override; void update(const BeginOfTrack *) override; void update(const G4Step *) override; private: + edm::ESGetToken tok_bFieldH_; bool mode, actOnTrack; std::vector pdgCode; double eStart, pxStart, pyStart, pzStart; diff --git a/SimG4Core/HelpfulWatchers/src/MonopoleSteppingAction.cc b/SimG4Core/HelpfulWatchers/src/MonopoleSteppingAction.cc index f7a5d07d512df..5d0aff4a6cb7b 100644 --- a/SimG4Core/HelpfulWatchers/src/MonopoleSteppingAction.cc +++ b/SimG4Core/HelpfulWatchers/src/MonopoleSteppingAction.cc @@ -1,6 +1,5 @@ #include "SimG4Core/HelpfulWatchers/interface/MonopoleSteppingAction.h" -#include "SimG4Core/Notification/interface/BeginOfJob.h" #include "SimG4Core/Notification/interface/BeginOfRun.h" #include "SimG4Core/Notification/interface/BeginOfTrack.h" #include "SimG4Core/Physics/interface/Monopole.h" @@ -9,9 +8,6 @@ #include "FWCore/Framework/interface/EventSetup.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "MagneticField/Engine/interface/MagneticField.h" -#include "MagneticField/Records/interface/IdealMagneticFieldRecord.h" - #include "G4Event.hh" #include "G4ParticleTable.hh" #include "G4Run.hh" @@ -22,21 +18,23 @@ MonopoleSteppingAction::MonopoleSteppingAction(edm::ParameterSet const &p) : actOnTrack(false), bZ(0) { mode = p.getUntrackedParameter("ChangeFromFirstStep", true); - edm::LogInfo("SimG4CoreWatcher") << "MonopoleSeppingAction set mode for" - << " start at first step to " << mode; + edm::LogVerbatim("SimG4CoreWatcher") << "MonopoleSeppingAction set mode for" + << " start at first step to " << mode; } MonopoleSteppingAction::~MonopoleSteppingAction() {} -void MonopoleSteppingAction::update(const BeginOfJob *job) { - const edm::EventSetup *iSetup = (*job)(); - edm::ESHandle bFieldH; - iSetup->get().get(bFieldH); - const MagneticField *bField = bFieldH.product(); +void MonopoleSteppingAction::registerConsumes(edm::ConsumesCollector cc) { + tok_bFieldH_ = cc.esConsumes(); + edm::LogVerbatim("SimG4CoreWatcher") << "MonopoleSteppingAction::Initialize ESGetToken for MagneticField"; +} + +void MonopoleSteppingAction::beginRun(edm::EventSetup const &es) { + const MagneticField *bField = &es.getData(tok_bFieldH_); const GlobalPoint p(0, 0, 0); bZ = (bField->inTesla(p)).z(); - edm::LogInfo("SimG4CoreWatcher") << "Magnetic Field (X): " << (bField->inTesla(p)).x() - << " Y: " << (bField->inTesla(p)).y() << " Z: " << bZ; + edm::LogVerbatim("SimG4CoreWatcher") << "Magnetic Field (X): " << (bField->inTesla(p)).x() + << " Y: " << (bField->inTesla(p)).y() << " Z: " << bZ; } void MonopoleSteppingAction::update(const BeginOfRun *) { @@ -50,16 +48,16 @@ void MonopoleSteppingAction::update(const BeginOfRun *) { pdgCode.push_back(particle->GetPDGEncoding()); } } - edm::LogInfo("SimG4CoreWatcher") << "MonopoleSeppingAction Finds " << pdgCode.size() << " candidates"; + edm::LogVerbatim("SimG4CoreWatcher") << "MonopoleSeppingAction Finds " << pdgCode.size() << " candidates"; for (unsigned int ii = 0; ii < pdgCode.size(); ++ii) { - edm::LogInfo("SimG4CoreWatcher") << "PDG Code[" << ii << "] = " << pdgCode[ii]; + edm::LogVerbatim("SimG4CoreWatcher") << "PDG Code[" << ii << "] = " << pdgCode[ii]; } cMevToJ = CLHEP::e_SI / CLHEP::eV; cMeVToKgMByS = CLHEP::e_SI * CLHEP::meter / (CLHEP::eV * CLHEP::c_light * CLHEP::second); cInMByS = CLHEP::c_light * CLHEP::second / CLHEP::meter; - edm::LogInfo("SimG4CoreWatcher") << "MonopoleSeppingAction Constants:" - << " MevToJoules = " << cMevToJ << ", MevToKgm/s = " << cMeVToKgMByS - << ", c in m/s = " << cInMByS << ", mag. charge = " << magCharge; + edm::LogVerbatim("SimG4CoreWatcher") << "MonopoleSeppingAction Constants:" + << " MevToJoules = " << cMevToJ << ", MevToKgm/s = " << cMeVToKgMByS + << ", c in m/s = " << cInMByS << ", mag. charge = " << magCharge; } void MonopoleSteppingAction::update(const BeginOfTrack *trk) {