CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
RunManagerMTWorker Class Reference

#include <RunManagerMTWorker.h>

Classes

struct  TLSData
 

Public Member Functions

void abortEvent ()
 
void abortRun (bool softAbort=false)
 
void beginRun (const edm::EventSetup &)
 
void Connect (RunAction *)
 
void Connect (EventAction *)
 
void Connect (TrackingAction *)
 
void Connect (SteppingAction *)
 
void Connect (Phase2SteppingAction *)
 
void endRun ()
 
SimTrackManagerGetSimTrackManager ()
 
int getThreadIndex () const
 
void initializeG4 (RunManagerMT *runManagerMaster, const edm::EventSetup &es)
 
TmpSimEventproduce (const edm::Event &inpevt, const edm::EventSetup &es, RunManagerMT &runManagerMaster)
 
std::vector< std::shared_ptr< SimProducer > > & producers ()
 
 RunManagerMTWorker (const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
 
std::vector< SensitiveCaloDetector * > & sensCaloDetectors ()
 
std::vector< SensitiveTkDetector * > & sensTkDetectors ()
 
TmpSimEventsimEvent ()
 
 ~RunManagerMTWorker ()
 

Private Member Functions

void DumpMagneticField (const G4Field *, const std::string &) const
 
G4Event * generateEvent (const edm::Event &inpevt)
 
void initializeRun ()
 
void initializeTLS ()
 
void initializeUserActions ()
 
void resetGenParticleId (const edm::Event &inpevt)
 
void terminateRun ()
 

Private Attributes

bool m_dumpMF {false}
 
bool m_endOfRun {false}
 
std::unique_ptr< CMSSimEventManagerm_evtManager
 
std::vector< std::string > m_G4CommandsEndRun
 
Generator m_generator
 
bool m_hasWatchers {false}
 
edm::EDGetTokenT< edm::HepMCProductm_InToken
 
bool m_isPhase2 {false}
 
edm::EDGetTokenT< edm::HepMCProductm_LHCToken
 
bool m_LHCTransport {false}
 
edm::ESGetToken< MagneticField, IdealMagneticFieldRecordm_MagField
 
bool m_nonBeam {false}
 
edm::ParameterSet m_p
 
edm::ParameterSet m_pCustomUIsession
 
edm::ParameterSet m_pEventAction
 
edm::ParameterSet m_pField
 
const MagneticFieldm_pMagField {nullptr}
 
edm::ParameterSet m_pRunAction
 
edm::ParameterSet m_pStackingAction
 
edm::ParameterSet m_pSteppingAction
 
edm::ParameterSet m_pTrackingAction
 
bool m_pUseMagneticField {true}
 
std::unordered_map< std::string, std::unique_ptr< SensitiveDetectorMakerBase > > m_sdMakers
 
TmpSimEvent m_simEvent
 
std::unique_ptr< CMSSteppingVerbosem_sVerbose
 
edm::EDGetTokenT< edm::LHCTransportLinkContainerm_theLHCTlinkToken
 
const int m_thread_index {-1}
 
TLSDatam_tls {nullptr}
 
CustomUIsessionm_UIsession {nullptr}
 
bool m_UseG4EventManager {true}
 

Detailed Description

Definition at line 50 of file RunManagerMTWorker.h.

Constructor & Destructor Documentation

◆ RunManagerMTWorker()

RunManagerMTWorker::RunManagerMTWorker ( const edm::ParameterSet iConfig,
edm::ConsumesCollector &&  iC 
)
explicit

Definition at line 148 of file RunManagerMTWorker.cc.

149  : m_generator(iConfig.getParameter<edm::ParameterSet>("Generator")),
151  iConfig.getParameter<edm::ParameterSet>("Generator").getParameter<edm::InputTag>("HepMCProductLabel"))),
153  iC.consumes<edm::LHCTransportLinkContainer>(iConfig.getParameter<edm::InputTag>("theLHCTlinkTag"))),
154  m_nonBeam(iConfig.getParameter<bool>("NonBeamEvent")),
155  m_UseG4EventManager(iConfig.getParameter<bool>("UseG4EventManager")),
156  m_pUseMagneticField(iConfig.getParameter<bool>("UseMagneticField")),
157  m_LHCTransport(iConfig.getParameter<bool>("LHCTransport")),
158  m_thread_index{get_new_thread_index()},
159  m_pField(iConfig.getParameter<edm::ParameterSet>("MagneticField")),
160  m_pRunAction(iConfig.getParameter<edm::ParameterSet>("RunAction")),
161  m_pEventAction(iConfig.getParameter<edm::ParameterSet>("EventAction")),
162  m_pStackingAction(iConfig.getParameter<edm::ParameterSet>("StackingAction")),
163  m_pTrackingAction(iConfig.getParameter<edm::ParameterSet>("TrackingAction")),
164  m_pSteppingAction(iConfig.getParameter<edm::ParameterSet>("SteppingAction")),
165  m_pCustomUIsession(iConfig.getUntrackedParameter<edm::ParameterSet>("CustomUIsession")),
166  m_G4CommandsEndRun(iConfig.getParameter<std::vector<std::string>>("G4CommandsEndRun")),
167  m_p(iConfig) {
168  int thisID = getThreadIndex();
169  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker for the thread " << thisID;
170 
171  // sensitive detectors
172  std::vector<std::string> onlySDs = iConfig.getParameter<std::vector<std::string>>("OnlySDs");
174 
175  // TLS and watchers
176  initializeTLS();
177  if (m_hasWatchers) {
178  for (auto& watcher : m_tls->watchers) {
179  watcher->registerConsumes(iC);
180  }
181  }
182  if (m_LHCTransport) {
183  m_LHCToken = iC.consumes<edm::HepMCProduct>(edm::InputTag("LHCTransport"));
184  }
185  if (m_pUseMagneticField) {
187  }
188  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker is constructed for the thread " << thisID;
189  unsigned int k = 0;
190  for (std::unordered_map<std::string, std::unique_ptr<SensitiveDetectorMakerBase>>::const_iterator itr =
191  m_sdMakers.begin();
192  itr != m_sdMakers.end();
193  ++itr, ++k)
194  edm::LogVerbatim("SimG4CoreApplication") << "SD[" << k << "] " << itr->first;
195 }
edm::ParameterSet m_pSteppingAction
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Log< level::Info, true > LogVerbatim
std::vector< std::shared_ptr< SimWatcher > > watchers
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< edm::HepMCProduct > m_InToken
std::vector< std::string > m_G4CommandsEndRun
edm::EDGetTokenT< edm::HepMCProduct > m_LHCToken
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet m_pEventAction
edm::ParameterSet m_pRunAction
std::unordered_map< std::string, std::unique_ptr< SensitiveDetectorMakerBase > > m_sdMakers
edm::ParameterSet m_pTrackingAction
edm::ParameterSet m_pField
edm::EDGetTokenT< edm::LHCTransportLinkContainer > m_theLHCTlinkToken
edm::ParameterSet m_pCustomUIsession
std::unordered_map< std::string, std::unique_ptr< SensitiveDetectorMakerBase > > sensitiveDetectorMakers(edm::ParameterSet const &, edm::ConsumesCollector, std::vector< std::string > const &chosenMakers)
std::vector< LHCTransportLink > LHCTransportLinkContainer
edm::ParameterSet m_p
int getThreadIndex() const
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > m_MagField
edm::ParameterSet m_pStackingAction

◆ ~RunManagerMTWorker()

RunManagerMTWorker::~RunManagerMTWorker ( )

Definition at line 197 of file RunManagerMTWorker.cc.

References m_tls, and m_UIsession.

197  {
198  m_tls = nullptr;
199  delete m_UIsession;
200 }
CustomUIsession * m_UIsession

Member Function Documentation

◆ abortEvent()

void RunManagerMTWorker::abortEvent ( )

Definition at line 594 of file RunManagerMTWorker.cc.

References RunManagerMTWorker::TLSData::currentEvent, RunManagerMTWorker::TLSData::kernel, m_tls, TrackingAction::PostUserTrackingAction(), RunManagerMTWorker::TLSData::runTerminated, and submitPVValidationJobs::t.

Referenced by SimRunInterface::abortEvent(), and abortRun().

594  {
595  if (m_tls->runTerminated) {
596  return;
597  }
598  G4Track* t = m_tls->kernel->GetEventManager()->GetTrackingManager()->GetTrack();
599  t->SetTrackStatus(fStopAndKill);
600 
601  // CMS-specific act
602  //
603  TrackingAction* uta = static_cast<TrackingAction*>(m_tls->kernel->GetEventManager()->GetUserTrackingAction());
605 
606  m_tls->currentEvent->SetEventAborted();
607  m_tls->kernel->GetEventManager()->GetStackManager()->clear();
608  m_tls->kernel->GetEventManager()->GetTrackingManager()->EventAborted();
609 }
std::unique_ptr< G4Event > currentEvent
std::unique_ptr< G4RunManagerKernel > kernel
void PostUserTrackingAction(const G4Track *aTrack) override

◆ abortRun()

void RunManagerMTWorker::abortRun ( bool  softAbort = false)

Definition at line 611 of file RunManagerMTWorker.cc.

References abortEvent(), RunManagerMTWorker::TLSData::currentRun, m_tls, and terminateRun().

Referenced by SimRunInterface::abortRun().

611  {
612  if (!softAbort) {
613  abortEvent();
614  }
615  m_tls->currentRun = nullptr;
616  terminateRun();
617 }

◆ beginRun()

void RunManagerMTWorker::beginRun ( const edm::EventSetup es)

Definition at line 202 of file RunManagerMTWorker.cc.

References edm::EventSetup::getData(), getThreadIndex(), l1ctLayer2EG_cff::id, m_hasWatchers, m_MagField, m_pMagField, m_pUseMagneticField, m_sdMakers, m_tls, and RunManagerMTWorker::TLSData::watchers.

202  {
203  int id = getThreadIndex();
204  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::beginRun for the thread " << id;
205  for (auto& maker : m_sdMakers) {
206  maker.second->beginRun(es);
207  }
208  if (m_pUseMagneticField) {
210  }
211  if (m_hasWatchers) {
212  for (auto& watcher : m_tls->watchers) {
213  watcher->beginRun(es);
214  }
215  }
216  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::beginRun done for the thread " << id;
217 }
Log< level::Info, true > LogVerbatim
std::vector< std::shared_ptr< SimWatcher > > watchers
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
std::unordered_map< std::string, std::unique_ptr< SensitiveDetectorMakerBase > > m_sdMakers
const MagneticField * m_pMagField
int getThreadIndex() const
edm::ESGetToken< MagneticField, IdealMagneticFieldRecord > m_MagField

◆ Connect() [1/5]

void RunManagerMTWorker::Connect ( RunAction runAction)

Definition at line 446 of file RunManagerMTWorker.cc.

References sim_act::Signaler< T >::connect(), RunAction::m_beginOfRunSignal, RunAction::m_endOfRunSignal, m_tls, and RunManagerMTWorker::TLSData::registry.

Referenced by SimRunInterface::Connect(), and initializeUserActions().

446  {
447  runAction->m_beginOfRunSignal.connect(m_tls->registry->beginOfRunSignal_);
448  runAction->m_endOfRunSignal.connect(m_tls->registry->endOfRunSignal_);
449 }
void connect(Observer< const T *> *iObs)
does not take ownership of memory
Definition: Signaler.h:55
SimActivityRegistry::EndOfRunSignal m_endOfRunSignal
Definition: RunAction.h:24
std::unique_ptr< SimActivityRegistry > registry
SimActivityRegistry::BeginOfRunSignal m_beginOfRunSignal
Definition: RunAction.h:23

◆ Connect() [2/5]

void RunManagerMTWorker::Connect ( EventAction eventAction)

Definition at line 451 of file RunManagerMTWorker.cc.

References sim_act::Signaler< T >::connect(), EventAction::m_beginOfEventSignal, EventAction::m_endOfEventSignal, m_tls, and RunManagerMTWorker::TLSData::registry.

451  {
452  eventAction->m_beginOfEventSignal.connect(m_tls->registry->beginOfEventSignal_);
453  eventAction->m_endOfEventSignal.connect(m_tls->registry->endOfEventSignal_);
454 }
void connect(Observer< const T *> *iObs)
does not take ownership of memory
Definition: Signaler.h:55
SimActivityRegistry::EndOfEventSignal m_endOfEventSignal
Definition: EventAction.h:37
std::unique_ptr< SimActivityRegistry > registry
SimActivityRegistry::BeginOfEventSignal m_beginOfEventSignal
Definition: EventAction.h:36

◆ Connect() [3/5]

void RunManagerMTWorker::Connect ( TrackingAction trackingAction)

Definition at line 456 of file RunManagerMTWorker.cc.

References sim_act::Signaler< T >::connect(), TrackingAction::m_beginOfTrackSignal, TrackingAction::m_endOfTrackSignal, m_tls, and RunManagerMTWorker::TLSData::registry.

456  {
457  trackingAction->m_beginOfTrackSignal.connect(m_tls->registry->beginOfTrackSignal_);
458  trackingAction->m_endOfTrackSignal.connect(m_tls->registry->endOfTrackSignal_);
459 }
void connect(Observer< const T *> *iObs)
does not take ownership of memory
Definition: Signaler.h:55
std::unique_ptr< SimActivityRegistry > registry
SimActivityRegistry::EndOfTrackSignal m_endOfTrackSignal
SimActivityRegistry::BeginOfTrackSignal m_beginOfTrackSignal

◆ Connect() [4/5]

void RunManagerMTWorker::Connect ( SteppingAction steppingAction)

Definition at line 461 of file RunManagerMTWorker.cc.

References sim_act::Signaler< T >::connect(), SteppingAction::m_g4StepSignal, m_tls, and RunManagerMTWorker::TLSData::registry.

461  {
462  steppingAction->m_g4StepSignal.connect(m_tls->registry->g4StepSignal_);
463 }
void connect(Observer< const T *> *iObs)
does not take ownership of memory
Definition: Signaler.h:55
SimActivityRegistry::G4StepSignal m_g4StepSignal
std::unique_ptr< SimActivityRegistry > registry

◆ Connect() [5/5]

void RunManagerMTWorker::Connect ( Phase2SteppingAction steppingAction)

Definition at line 465 of file RunManagerMTWorker.cc.

References sim_act::Signaler< T >::connect(), Phase2SteppingAction::m_g4StepSignal, m_tls, and RunManagerMTWorker::TLSData::registry.

465  {
466  steppingAction->m_g4StepSignal.connect(m_tls->registry->g4StepSignal_);
467 }
void connect(Observer< const T *> *iObs)
does not take ownership of memory
Definition: Signaler.h:55
SimActivityRegistry::G4StepSignal m_g4StepSignal
std::unique_ptr< SimActivityRegistry > registry

◆ DumpMagneticField()

void RunManagerMTWorker::DumpMagneticField ( const G4Field *  field,
const std::string &  file 
) const
private

Definition at line 658 of file RunManagerMTWorker.cc.

References funct::cos(), l1ctLayer1_cff::dr, PVValHelper::dz, geometryDiff::file, groupFilesInBlocks::fout, mps_fire::i, createfilelist::int, dqmiolumiharvest::j, EgHLTOffHistBins_cfi::nr, MillePedeFileConverter_cfg::out, phi, point, alignCSCRings::r, funct::sin(), z, HLTMuonOfflineAnalyzer_cfi::z0, and SiStripMonitorCluster_cfi::zmax.

Referenced by initializeG4().

658  {
659  std::ofstream fout(file.c_str(), std::ios::out);
660  if (fout.fail()) {
661  edm::LogWarning("SimG4CoreApplication")
662  << "MTWorker::DumpMagneticField: error opening file <" << file << "> for magnetic field";
663  } else {
664  // CMS magnetic field volume
665  double rmax = 9000 * mm;
666  double zmax = 24000 * mm;
667 
668  double dr = 1 * cm;
669  double dz = 5 * cm;
670 
671  int nr = (int)(rmax / dr);
672  int nz = 2 * (int)(zmax / dz);
673 
674  double r = 0.0;
675  double z0 = -zmax;
676  double z;
677 
678  double phi = 0.0;
679  double cosf = cos(phi);
680  double sinf = sin(phi);
681 
682  double point[4] = {0.0, 0.0, 0.0, 0.0};
683  double bfield[3] = {0.0, 0.0, 0.0};
684 
685  fout << std::setprecision(6);
686  for (int i = 0; i <= nr; ++i) {
687  z = z0;
688  for (int j = 0; j <= nz; ++j) {
689  point[0] = r * cosf;
690  point[1] = r * sinf;
691  point[2] = z;
692  field->GetFieldValue(point, bfield);
693  fout << "R(mm)= " << r / mm << " phi(deg)= " << phi / degree << " Z(mm)= " << z / mm
694  << " Bz(tesla)= " << bfield[2] / tesla << " Br(tesla)= " << (bfield[0] * cosf + bfield[1] * sinf) / tesla
695  << " Bphi(tesla)= " << (bfield[0] * sinf - bfield[1] * cosf) / tesla << G4endl;
696  z += dz;
697  }
698  r += dr;
699  }
700 
701  fout.close();
702  }
703 }
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
Log< level::Warning, false > LogWarning
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5

◆ endRun()

void RunManagerMTWorker::endRun ( )

Definition at line 219 of file RunManagerMTWorker.cc.

References getThreadIndex(), l1ctLayer2EG_cff::id, and terminateRun().

219  {
220  int id = getThreadIndex();
221  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::endRun for the thread " << id;
222  terminateRun();
223 }
Log< level::Info, true > LogVerbatim
int getThreadIndex() const

◆ generateEvent()

G4Event * RunManagerMTWorker::generateEvent ( const edm::Event inpevt)
private

Definition at line 619 of file RunManagerMTWorker.cc.

References RunManagerMTWorker::TLSData::currentEvent, edm::EventID::event(), runTauDisplay::evtid, edm::Event::getByToken(), edm::HepMCProduct::GetEvent(), Generator::HepMC2G4(), edm::EventBase::id(), m_generator, m_InToken, m_LHCToken, m_LHCTransport, m_nonBeam, m_tls, Generator::nonCentralEvent2G4(), resetGenParticleId(), and Generator::setGenEvent().

Referenced by produce().

619  {
620  m_tls->currentEvent.reset();
621 
622  // 64 bits event ID in CMSSW converted into Geant4 event ID
623  G4int evtid = (G4int)inpevt.id().event();
624  G4Event* evt = new G4Event(evtid);
625 
627  inpevt.getByToken(m_InToken, HepMCEvt);
628 
629  m_generator.setGenEvent(HepMCEvt->GetEvent());
630 
631  // required to reset the GenParticle Id for particles transported
632  // along the beam pipe
633  // to their original value for SimTrack creation
634  resetGenParticleId(inpevt);
635 
636  if (!m_nonBeam) {
637  m_generator.HepMC2G4(HepMCEvt->GetEvent(), evt);
638  if (m_LHCTransport) {
640  inpevt.getByToken(m_LHCToken, LHCMCEvt);
641  m_generator.nonCentralEvent2G4(LHCMCEvt->GetEvent(), evt);
642  }
643  } else {
644  m_generator.nonCentralEvent2G4(HepMCEvt->GetEvent(), evt);
645  }
646 
647  return evt;
648 }
void nonCentralEvent2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:552
std::unique_ptr< G4Event > currentEvent
void HepMC2G4(const HepMC::GenEvent *g, G4Event *e)
Definition: Generator.cc:112
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:540
edm::EDGetTokenT< edm::HepMCProduct > m_InToken
edm::EDGetTokenT< edm::HepMCProduct > m_LHCToken
void resetGenParticleId(const edm::Event &inpevt)
edm::EventID id() const
Definition: EventBase.h:63
void setGenEvent(const HepMC::GenEvent *inpevt)
Definition: Generator.h:24
const HepMC::GenEvent * GetEvent() const
Definition: HepMCProduct.h:37
EventNumber_t event() const
Definition: EventID.h:40

◆ GetSimTrackManager()

SimTrackManager * RunManagerMTWorker::GetSimTrackManager ( )

Definition at line 469 of file RunManagerMTWorker.cc.

References initializeTLS(), m_tls, and RunManagerMTWorker::TLSData::trackManager.

Referenced by SimRunInterface::SimRunInterface().

469  {
470  initializeTLS();
471  return m_tls->trackManager.get();
472 }
std::unique_ptr< SimTrackManager > trackManager

◆ getThreadIndex()

int RunManagerMTWorker::getThreadIndex ( ) const
inline

Definition at line 77 of file RunManagerMTWorker.h.

References m_thread_index.

Referenced by beginRun(), endRun(), initializeG4(), initializeRun(), initializeTLS(), produce(), and terminateRun().

77 { return m_thread_index; }

◆ initializeG4()

void RunManagerMTWorker::initializeG4 ( RunManagerMT runManagerMaster,
const edm::EventSetup es 
)

Definition at line 249 of file RunManagerMTWorker.cc.

References applyOnce, sim::attachSD(), sim::FieldBuilder::build(), RunManagerMT::catalog(), mps_check::command, g4SimHits_cfi::CustomUIsession, DumpMagneticField(), Exception, f, g, RunManagerMT::G4Commands(), ecalTB2006H4_GenSimDigiReco_cfg::G4cout, edm::ParameterSet::getParameter(), getThreadIndex(), edm::ParameterSet::getUntrackedParameter(), DDDWorld::GetWorldVolume(), initializeTLS(), initializeUserActions(), RunManagerMT::isPhase2(), RunManagerMTWorker::TLSData::kernel, m_dumpMF, m_evtManager, m_isPhase2, m_p, m_pCustomUIsession, m_pField, m_pMagField, m_pUseMagneticField, m_sdMakers, m_sVerbose, m_tls, m_UIsession, m_UseG4EventManager, RunManagerMT::physicsListForWorker(), RunManagerMTWorker::TLSData::registry, RunManagerMTWorker::TLSData::sensCaloDets, RunManagerMTWorker::TLSData::sensTkDets, AlCaHLTBitMon_QueryRunRegistry::string, pfDeepBoostedJetPreprocessParams_cfi::sv, RunManagerMTWorker::TLSData::threadInitialized, RunManagerMTWorker::TLSData::trackManager, and RunManagerMT::world().

249  {
251  return;
252 
253  G4Timer timer;
254  timer.Start();
255 
256  // I guess everything initialized here should be in thread_local storage
257  initializeTLS();
258 
259  int thisID = getThreadIndex();
260  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::initializeG4 in thread " << thisID << " is started";
261 
262  // Initialize per-thread output
263  G4Threading::G4SetThreadId(thisID);
264  G4UImanager::GetUIpointer()->SetUpForAThread(thisID);
265  const std::string& uitype = m_pCustomUIsession.getUntrackedParameter<std::string>("Type", "MessageLogger");
266  if (uitype == "MessageLogger") {
268  } else if (uitype == "MessageLoggerThreadPrefix") {
270  m_pCustomUIsession.getUntrackedParameter<std::string>("ThreadPrefix", ""), thisID);
271  } else if (uitype == "FilePerThread") {
272  m_UIsession =
274  } else {
275  throw cms::Exception("Configuration")
276  << "RunManagerMTWorker::initializeG4: Invalid value of CustomUIsession.Type '" << uitype
277  << "', valid are MessageLogger, MessageLoggerThreadPrefix, FilePerThread";
278  }
279  G4UImanager::GetUIpointer()->SetCoutDestination(m_UIsession);
280 
281  // Initialize worker part of shared resources (geometry, physics)
282  G4WorkerThread::BuildGeometryAndPhysicsVector();
283 
284  // Create worker run manager
285  m_tls->kernel.reset(G4WorkerRunManagerKernel::GetRunManagerKernel());
286  if (nullptr == m_tls->kernel) {
287  m_tls->kernel = std::make_unique<G4WorkerRunManagerKernel>();
288  }
289 
290  // Define G4 exception handler
291  double th = m_p.getParameter<double>("ThresholdForGeometryExceptions") * CLHEP::GeV;
292  bool tr = m_p.getParameter<bool>("TraceExceptions");
293  G4StateManager::GetStateManager()->SetExceptionHandler(new ExceptionHandler(th, tr));
294 
295  // Set the geometry for the worker, share from master
296  auto worldPV = runManagerMaster->world().GetWorldVolume();
297  m_tls->kernel->WorkerDefineWorldVolume(worldPV);
298  G4TransportationManager* tM = G4TransportationManager::GetTransportationManager();
299  tM->SetWorldForTracking(worldPV);
300 
301  // we need the track manager now
302  m_tls->trackManager = std::make_unique<SimTrackManager>();
303 
304  // setup the magnetic field
305  if (m_pUseMagneticField) {
306  const GlobalPoint g(0.f, 0.f, 0.f);
307 
308  sim::FieldBuilder fieldBuilder(m_pMagField, m_pField);
309 
310  CMSFieldManager* fieldManager = new CMSFieldManager();
311  tM->SetFieldManager(fieldManager);
312  fieldBuilder.build(fieldManager, tM->GetPropagatorInField());
313 
314  std::string fieldFile = m_p.getUntrackedParameter<std::string>("FileNameField", "");
315  if (!fieldFile.empty()) {
316  std::call_once(applyOnce, [this]() { m_dumpMF = true; });
317  if (m_dumpMF) {
318  edm::LogVerbatim("SimG4CoreApplication")
319  << "RunManagerMTWorker::InitializeG4: Dump magnetic field to file " << fieldFile;
320  DumpMagneticField(tM->GetFieldManager()->GetDetectorField(), fieldFile);
321  }
322  }
323  }
324 
325  // attach sensitive detector
326  auto sensDets = sim::attachSD(
327  m_sdMakers, es, runManagerMaster->catalog(), m_p, m_tls->trackManager.get(), *(m_tls->registry.get()));
328 
329  m_tls->sensTkDets.swap(sensDets.first);
330  m_tls->sensCaloDets.swap(sensDets.second);
331 
332  edm::LogWarning("SimG4CoreApplication")
333  << "RunManagerMTWorker::InitializeG4: Sensitive Detectors are built in thread " << thisID << " found "
334  << m_tls->sensTkDets.size() << " Tk type SD, and " << m_tls->sensCaloDets.size() << " Calo type SD";
335 
336  // Enable couple transportation
337  bool scorer = m_p.getParameter<bool>("UseCommandBaseScorer");
338  if (scorer) {
339  G4ScoringManager* scManager = G4ScoringManager::GetScoringManager();
340  scManager->SetVerboseLevel(1);
341  }
342 
343  // Set the physics list for the worker, share from master
344  PhysicsList* physicsList = runManagerMaster->physicsListForWorker();
345  m_isPhase2 = runManagerMaster->isPhase2();
346 
347  edm::LogVerbatim("SimG4CoreApplication")
348  << "RunManagerMTWorker::InitializeG4: start initialisation of PhysicsList for the thread " << thisID;
349 
350  // Geant4 UI commands in PreInit state
351  if (!runManagerMaster->G4Commands().empty()) {
352  G4cout << "RunManagerMTWorker::InitializeG4: Requested UI commands: " << G4endl;
353  for (const std::string& command : runManagerMaster->G4Commands()) {
354  G4cout << " " << command << G4endl;
355  G4UImanager::GetUIpointer()->ApplyCommand(command);
356  }
357  }
358  G4StateManager::GetStateManager()->SetNewState(G4State_Init);
359 
360  physicsList->InitializeWorker();
361  m_tls->kernel->SetPhysics(physicsList);
362  m_tls->kernel->InitializePhysics();
363 
364  if (!m_tls->kernel->RunInitialization()) {
365  throw cms::Exception("Configuration")
366  << "RunManagerMTWorker::InitializeG4: Geant4 kernel initialization failed in thread " << thisID;
367  }
368 
369  //tell all interesting parties that we are beginning the job
370  BeginOfJob aBeginOfJob(&es);
371  m_tls->registry->beginOfJobSignal_(&aBeginOfJob);
372 
373  G4int sv = m_p.getUntrackedParameter<int>("SteppingVerbosity", 0);
374  G4double elim = m_p.getUntrackedParameter<double>("StepVerboseThreshold", 0.1) * CLHEP::GeV;
375  std::vector<int> ve = m_p.getUntrackedParameter<std::vector<int>>("VerboseEvents");
376  std::vector<int> vn = m_p.getUntrackedParameter<std::vector<int>>("VertexNumber");
377  std::vector<int> vt = m_p.getUntrackedParameter<std::vector<int>>("VerboseTracks");
378 
379  if (sv > 0) {
380  m_sVerbose = std::make_unique<CMSSteppingVerbose>(sv, elim, ve, vn, vt);
381  }
382  if (!m_UseG4EventManager)
383  m_evtManager = std::make_unique<CMSSimEventManager>(m_p);
385 
386  G4StateManager::GetStateManager()->SetNewState(G4State_Idle);
387 
388  timer.Stop();
389  edm::LogVerbatim("SimG4CoreApplication")
390  << "RunManagerMTWorker::initializeG4 done for the thread " << thisID << " " << timer;
391  m_tls->threadInitialized = true;
392 }
Log< level::Info, true > LogVerbatim
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
CustomUIsession * m_UIsession
std::unique_ptr< CMSSteppingVerbose > m_sVerbose
std::vector< SensitiveTkDetector * > sensTkDets
G4VPhysicalVolume * GetWorldVolume() const
Definition: DDDWorld.h:24
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
std::unique_ptr< G4RunManagerKernel > kernel
std::unique_ptr< CMSSimEventManager > m_evtManager
T getUntrackedParameter(std::string const &, T const &) const
std::unique_ptr< SimActivityRegistry > registry
std::unique_ptr< SimTrackManager > trackManager
std::vector< SensitiveCaloDetector * > sensCaloDets
std::unordered_map< std::string, std::unique_ptr< SensitiveDetectorMakerBase > > m_sdMakers
double f[11][100]
const SensitiveDetectorCatalog & catalog() const
Definition: RunManagerMT.h:72
bool isPhase2() const
Definition: RunManagerMT.h:80
std::pair< std::vector< SensitiveTkDetector * >, std::vector< SensitiveCaloDetector * > > attachSD(const std::unordered_map< std::string, std::unique_ptr< SensitiveDetectorMakerBase >> &, const edm::EventSetup &, const SensitiveDetectorCatalog &, edm::ParameterSet const &, const SimTrackManager *, SimActivityRegistry &reg)
const DDDWorld & world() const
Definition: RunManagerMT.h:70
static std::once_flag applyOnce
edm::ParameterSet m_pField
list command
Definition: mps_check.py:25
const std::vector< std::string > & G4Commands() const
Definition: RunManagerMT.h:74
edm::ParameterSet m_pCustomUIsession
const MagneticField * m_pMagField
Log< level::Warning, false > LogWarning
edm::ParameterSet m_p
void DumpMagneticField(const G4Field *, const std::string &) const
int getThreadIndex() const
PhysicsList * physicsListForWorker() const
Definition: RunManagerMT.h:78

◆ initializeRun()

void RunManagerMTWorker::initializeRun ( )
private

Definition at line 486 of file RunManagerMTWorker.cc.

References RunManagerMTWorker::TLSData::currentRun, getThreadIndex(), l1ctLayer2EG_cff::id, m_tls, and RunManagerMTWorker::TLSData::userRunAction.

Referenced by produce().

486  {
487  m_tls->currentRun = new G4Run();
488  G4StateManager::GetStateManager()->SetNewState(G4State_GeomClosed);
489  if (nullptr != m_tls->userRunAction) {
490  m_tls->userRunAction->BeginOfRunAction(m_tls->currentRun);
491  }
492  int id = getThreadIndex();
493  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::initializeRun done for thread " << id;
494 }
Log< level::Info, true > LogVerbatim
std::unique_ptr< RunAction > userRunAction
int getThreadIndex() const

◆ initializeTLS()

void RunManagerMTWorker::initializeTLS ( )
private

Definition at line 225 of file RunManagerMTWorker.cc.

References createWatchers(), Exception, getThreadIndex(), m_hasWatchers, m_p, m_tls, RunManagerMTWorker::TLSData::producers, RunManagerMTWorker::TLSData::registry, and RunManagerMTWorker::TLSData::watchers.

Referenced by GetSimTrackManager(), initializeG4(), producers(), sensCaloDetectors(), and sensTkDetectors().

225  {
226  if (nullptr != m_tls) {
227  return;
228  }
229 
230  m_tls = new TLSData();
231  m_tls->registry = std::make_unique<SimActivityRegistry>();
232 
233  edm::Service<SimActivityRegistry> otherRegistry;
234  //Look for an outside SimActivityRegistry
235  // this is used by the visualization code
236  int thisID = getThreadIndex();
237  if (otherRegistry) {
238  m_tls->registry->connect(*otherRegistry);
239  if (thisID > 0) {
240  throw cms::Exception("Configuration")
241  << "RunManagerMTWorker::initializeTLS : "
242  << "SimActivityRegistry service (i.e. visualization) is not supported for more than 1 thread. "
243  << " \n If this use case is needed, RunManagerMTWorker has to be updated.";
244  }
245  }
247 }
std::vector< std::shared_ptr< SimWatcher > > watchers
std::unique_ptr< SimActivityRegistry > registry
std::vector< std::shared_ptr< SimProducer > > producers
static void createWatchers(const edm::ParameterSet &iP, SimActivityRegistry &iReg, std::vector< std::shared_ptr< SimWatcher >> &oWatchers, std::vector< std::shared_ptr< SimProducer >> &oProds)
edm::ParameterSet m_p
int getThreadIndex() const

◆ initializeUserActions()

void RunManagerMTWorker::initializeUserActions ( )
private

Definition at line 394 of file RunManagerMTWorker.cc.

References Connect(), g4SimHits_cfi::EventAction, edm::ParameterSet::getParameter(), RunManagerMTWorker::TLSData::kernel, m_evtManager, m_hasWatchers, m_isPhase2, m_p, m_pEventAction, m_pRunAction, m_pStackingAction, m_pSteppingAction, m_pTrackingAction, m_sVerbose, m_tls, m_UseG4EventManager, RunManagerMTWorker::TLSData::runInterface, CastorDigiValidation::StackingAction, CastorDigiValidation::SteppingAction, g4SimHits_cfi::TrackingAction, RunManagerMTWorker::TLSData::trackManager, and RunManagerMTWorker::TLSData::userRunAction.

Referenced by initializeG4().

394  {
395  m_tls->runInterface = std::make_unique<SimRunInterface>(this, false);
396  m_tls->userRunAction = std::make_unique<RunAction>(m_pRunAction, m_tls->runInterface.get(), false);
397  m_tls->userRunAction->SetMaster(false);
398  Connect(m_tls->userRunAction.get());
399 
400  G4int ver = m_p.getParameter<int>("EventVerbose");
401  G4EventManager* eventManager = m_tls->kernel->GetEventManager();
402  eventManager->SetVerboseLevel(ver);
403 
404  auto userEventAction =
406  Connect(userEventAction);
407  if (m_UseG4EventManager) {
408  eventManager->SetUserAction(userEventAction);
409  } else {
410  m_evtManager->SetUserAction(userEventAction);
411  }
412 
413  auto userTrackingAction = new TrackingAction(m_tls->trackManager.get(), m_sVerbose.get(), m_pTrackingAction);
414  Connect(userTrackingAction);
415  if (m_UseG4EventManager) {
416  eventManager->SetUserAction(userTrackingAction);
417  } else {
418  m_evtManager->SetUserAction(userTrackingAction);
419  }
420 
421  // different stepping actions for Run2,3 and Phase2
422  G4UserSteppingAction* userSteppingAction;
423  if (m_isPhase2) {
425  Connect(ptr);
426  userSteppingAction = (G4UserSteppingAction*)ptr;
427  } else {
429  Connect(ptr);
430  userSteppingAction = (G4UserSteppingAction*)ptr;
431  }
432  if (m_UseG4EventManager) {
433  eventManager->SetUserAction(userSteppingAction);
434  } else {
435  m_evtManager->SetUserAction(userSteppingAction);
436  }
437 
438  auto userStackingAction = new StackingAction(userTrackingAction, m_pStackingAction, m_sVerbose.get());
439  if (m_UseG4EventManager) {
440  eventManager->SetUserAction(userStackingAction);
441  } else {
442  m_evtManager->SetUserAction(userStackingAction);
443  }
444 }
edm::ParameterSet m_pSteppingAction
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
std::unique_ptr< SimRunInterface > runInterface
std::unique_ptr< CMSSteppingVerbose > m_sVerbose
std::unique_ptr< G4RunManagerKernel > kernel
std::unique_ptr< CMSSimEventManager > m_evtManager
edm::ParameterSet m_pEventAction
std::unique_ptr< SimTrackManager > trackManager
edm::ParameterSet m_pRunAction
std::unique_ptr< RunAction > userRunAction
edm::ParameterSet m_pTrackingAction
edm::ParameterSet m_p
edm::ParameterSet m_pStackingAction
void Connect(RunAction *)

◆ produce()

TmpSimEvent * RunManagerMTWorker::produce ( const edm::Event inpevt,
const edm::EventSetup es,
RunManagerMT runManagerMaster 
)

Definition at line 526 of file RunManagerMTWorker.cc.

References cms::cuda::assert(), TmpSimEvent::clear(), TmpSimEvent::collisionPoint(), RunManagerMTWorker::TLSData::currentEvent, RunManagerMTWorker::TLSData::currentRunNumber, edm::EventID::event(), Generator::eventWeight(), Exception, generateEvent(), Generator::genEvent(), Generator::genVertex(), getThreadIndex(), TmpSimEvent::hepEvent(), edm::EventBase::id(), initializeRun(), RunManagerMTWorker::TLSData::kernel, m_evtManager, m_generator, m_simEvent, m_tls, m_UseG4EventManager, TmpSimEvent::nGenParts(), edm::EventID::run(), RunManagerMTWorker::TLSData::runInterface, RunManagerMTWorker::TLSData::runTerminated, edm::second(), RunManagerMTWorker::TLSData::sensCaloDets, edm::Event::streamID(), terminateRun(), RunManagerMTWorker::TLSData::threadInitialized, and TmpSimEvent::weight().

528  {
529  // The initialization and begin/end run is a bit convoluted due to
530  // - Geant4 deals per-thread
531  // - OscarMTProducer deals per-stream
532  // and framework/TBB is free to schedule work in streams to the
533  // threads as it likes.
534  //
535  // We have to do the per-thread initialization, and per-thread
536  // per-run initialization here by ourselves.
537 
538  assert(m_tls != nullptr and m_tls->threadInitialized);
539  // Initialize run
540  if (inpevt.id().run() != m_tls->currentRunNumber) {
541  edm::LogVerbatim("SimG4CoreApplication")
542  << "RunManagerMTWorker::produce: RunID= " << inpevt.id().run() << " TLS RunID= " << m_tls->currentRunNumber;
543  if (m_tls->currentRunNumber != 0 && !m_tls->runTerminated) {
544  // If previous run in this thread was not terminated via endRun() call,
545  // terminate it now
546  terminateRun();
547  }
548  initializeRun();
549  m_tls->currentRunNumber = inpevt.id().run();
550  }
551  m_tls->runInterface->setRunManagerMTWorker(this); // For UserActions
552 
553  m_tls->currentEvent.reset(generateEvent(inpevt));
554 
555  m_simEvent.clear();
558  if (m_generator.genVertex() != nullptr) {
559  auto genVertex = m_generator.genVertex();
560  m_simEvent.collisionPoint(math::XYZTLorentzVectorD(genVertex->x() / CLHEP::cm,
561  genVertex->y() / CLHEP::cm,
562  genVertex->z() / CLHEP::cm,
563  genVertex->t() / CLHEP::second));
564  }
565  if (m_tls->currentEvent->GetNumberOfPrimaryVertex() == 0) {
566  throw cms::Exception("EventCorruption")
567  << "RunManagerMTWorker::produce: event " << inpevt.id().event() << " with no G4PrimaryVertices"
568  << " StreamID=" << inpevt.streamID() << " threadIndex=" << getThreadIndex();
569 
570  } else {
571  edm::LogVerbatim("SimG4CoreApplication")
572  << "RunManagerMTWorker::produce: start EventID=" << inpevt.id().event() << " StreamID=" << inpevt.streamID()
573  << " threadIndex=" << getThreadIndex() << " weight=" << m_simEvent.weight() << "; "
574  << m_tls->currentEvent->GetNumberOfPrimaryVertex() << " vertices for Geant4; generator produced "
575  << m_simEvent.nGenParts() << " particles.";
576 
577  if (m_UseG4EventManager) {
578  m_tls->kernel->GetEventManager()->ProcessOneEvent(m_tls->currentEvent.get());
579  } else {
580  m_evtManager->ProcessOneEvent(m_tls->currentEvent.get());
581  }
582  }
583 
584  //remove memory only needed during event processing
585  m_tls->currentEvent.reset();
586 
587  for (auto& sd : m_tls->sensCaloDets) {
588  sd->reset();
589  }
590  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::produce: ended Event " << inpevt.id().event();
591  return &m_simEvent;
592 }
Log< level::Info, true > LogVerbatim
virtual const HepMC::GenEvent * genEvent() const
Definition: Generator.h:30
std::unique_ptr< G4Event > currentEvent
ROOT::Math::LorentzVector< ROOT::Math::PxPyPzE4D< double > > XYZTLorentzVectorD
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:14
void hepEvent(const HepMC::GenEvent *r)
Definition: TmpSimEvent.h:23
void clear()
Definition: TmpSimEvent.cc:18
void weight(float w)
Definition: TmpSimEvent.h:25
std::unique_ptr< SimRunInterface > runInterface
virtual const math::XYZTLorentzVector * genVertex() const
Definition: Generator.h:31
assert(be >=bs)
std::unique_ptr< G4RunManagerKernel > kernel
std::unique_ptr< CMSSimEventManager > m_evtManager
U second(std::pair< T, U > const &p)
std::vector< SensitiveCaloDetector * > sensCaloDets
void collisionPoint(const math::XYZTLorentzVectorD &v)
Definition: TmpSimEvent.h:27
edm::EventID id() const
Definition: EventBase.h:63
StreamID streamID() const
Definition: Event.h:98
RunNumber_t run() const
Definition: EventID.h:38
unsigned int nGenParts() const
Definition: TmpSimEvent.h:22
G4Event * generateEvent(const edm::Event &inpevt)
virtual const double eventWeight() const
Definition: Generator.h:32
int getThreadIndex() const
EventNumber_t event() const
Definition: EventID.h:40

◆ producers()

std::vector< std::shared_ptr< SimProducer > > & RunManagerMTWorker::producers ( )

Definition at line 481 of file RunManagerMTWorker.cc.

References initializeTLS(), m_tls, and RunManagerMTWorker::TLSData::producers.

481  {
482  initializeTLS();
483  return m_tls->producers;
484 }
std::vector< std::shared_ptr< SimProducer > > producers

◆ resetGenParticleId()

void RunManagerMTWorker::resetGenParticleId ( const edm::Event inpevt)
private

Definition at line 650 of file RunManagerMTWorker.cc.

References edm::Event::getByToken(), edm::HandleBase::isValid(), m_theLHCTlinkToken, m_tls, edm::Handle< T >::product(), and RunManagerMTWorker::TLSData::trackManager.

Referenced by generateEvent().

650  {
652  inpevt.getByToken(m_theLHCTlinkToken, theLHCTlink);
653  if (theLHCTlink.isValid()) {
654  m_tls->trackManager->setLHCTransportLink(theLHCTlink.product());
655  }
656 }
T const * product() const
Definition: Handle.h:70
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:540
std::unique_ptr< SimTrackManager > trackManager
edm::EDGetTokenT< edm::LHCTransportLinkContainer > m_theLHCTlinkToken
bool isValid() const
Definition: HandleBase.h:70

◆ sensCaloDetectors()

std::vector< SensitiveCaloDetector * > & RunManagerMTWorker::sensCaloDetectors ( )

Definition at line 477 of file RunManagerMTWorker.cc.

References initializeTLS(), m_tls, and RunManagerMTWorker::TLSData::sensCaloDets.

477  {
478  initializeTLS();
479  return m_tls->sensCaloDets;
480 }
std::vector< SensitiveCaloDetector * > sensCaloDets

◆ sensTkDetectors()

std::vector< SensitiveTkDetector * > & RunManagerMTWorker::sensTkDetectors ( )

Definition at line 473 of file RunManagerMTWorker.cc.

References initializeTLS(), m_tls, and RunManagerMTWorker::TLSData::sensTkDets.

473  {
474  initializeTLS();
475  return m_tls->sensTkDets;
476 }
std::vector< SensitiveTkDetector * > sensTkDets

◆ simEvent()

TmpSimEvent* RunManagerMTWorker::simEvent ( )
inline

Definition at line 76 of file RunManagerMTWorker.h.

References m_simEvent.

Referenced by SimRunInterface::simEvent().

76 { return &m_simEvent; }

◆ terminateRun()

void RunManagerMTWorker::terminateRun ( )
private

Definition at line 496 of file RunManagerMTWorker.cc.

References applyOnceEnd, mps_check::command, RunManagerMTWorker::TLSData::currentEvent, RunManagerMTWorker::TLSData::currentRun, getThreadIndex(), l1ctLayer2EG_cff::id, RunManagerMTWorker::TLSData::kernel, m_endOfRun, m_G4CommandsEndRun, m_tls, RunManagerMTWorker::TLSData::runTerminated, AlCaHLTBitMon_QueryRunRegistry::string, and RunManagerMTWorker::TLSData::userRunAction.

Referenced by abortRun(), endRun(), and produce().

496  {
497  int id = getThreadIndex();
498  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::terminateRun for thread " << id;
499  if (nullptr == m_tls || m_tls->runTerminated) {
500  return;
501  }
502 
503  // Geant4 UI commands after the run
504  if (!m_G4CommandsEndRun.empty()) {
505  std::call_once(applyOnceEnd, [this]() { m_endOfRun = true; });
506  if (m_endOfRun) {
507  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker: Requested end of run UI commands: ";
508  for (const std::string& command : m_G4CommandsEndRun) {
509  edm::LogVerbatim("SimG4CoreApplication") << " " << command;
510  G4UImanager::GetUIpointer()->ApplyCommand(command);
511  }
512  }
513  }
514  if (m_tls->userRunAction) {
515  m_tls->userRunAction->EndOfRunAction(m_tls->currentRun);
516  m_tls->userRunAction.reset();
517  }
518  m_tls->currentEvent.reset();
519  if (m_tls->kernel) {
520  m_tls->kernel->RunTermination();
521  }
522  m_tls->runTerminated = true;
523  edm::LogVerbatim("SimG4CoreApplication") << "RunManagerMTWorker::terminateRun done for thread " << id;
524 }
Log< level::Info, true > LogVerbatim
std::unique_ptr< G4Event > currentEvent
std::vector< std::string > m_G4CommandsEndRun
std::unique_ptr< G4RunManagerKernel > kernel
static std::once_flag applyOnceEnd
std::unique_ptr< RunAction > userRunAction
list command
Definition: mps_check.py:25
int getThreadIndex() const

Member Data Documentation

◆ m_dumpMF

bool RunManagerMTWorker::m_dumpMF {false}
private

Definition at line 102 of file RunManagerMTWorker.h.

Referenced by initializeG4().

◆ m_endOfRun

bool RunManagerMTWorker::m_endOfRun {false}
private

Definition at line 103 of file RunManagerMTWorker.h.

Referenced by terminateRun().

◆ m_evtManager

std::unique_ptr<CMSSimEventManager> RunManagerMTWorker::m_evtManager
private

Definition at line 123 of file RunManagerMTWorker.h.

Referenced by initializeG4(), initializeUserActions(), and produce().

◆ m_G4CommandsEndRun

std::vector<std::string> RunManagerMTWorker::m_G4CommandsEndRun
private

Definition at line 115 of file RunManagerMTWorker.h.

Referenced by terminateRun().

◆ m_generator

Generator RunManagerMTWorker::m_generator
private

Definition at line 90 of file RunManagerMTWorker.h.

Referenced by generateEvent(), and produce().

◆ m_hasWatchers

bool RunManagerMTWorker::m_hasWatchers {false}
private

Definition at line 100 of file RunManagerMTWorker.h.

Referenced by beginRun(), initializeTLS(), and initializeUserActions().

◆ m_InToken

edm::EDGetTokenT<edm::HepMCProduct> RunManagerMTWorker::m_InToken
private

Definition at line 91 of file RunManagerMTWorker.h.

Referenced by generateEvent().

◆ m_isPhase2

bool RunManagerMTWorker::m_isPhase2 {false}
private

Definition at line 104 of file RunManagerMTWorker.h.

Referenced by initializeG4(), and initializeUserActions().

◆ m_LHCToken

edm::EDGetTokenT<edm::HepMCProduct> RunManagerMTWorker::m_LHCToken
private

Definition at line 92 of file RunManagerMTWorker.h.

Referenced by generateEvent().

◆ m_LHCTransport

bool RunManagerMTWorker::m_LHCTransport {false}
private

Definition at line 101 of file RunManagerMTWorker.h.

Referenced by generateEvent().

◆ m_MagField

edm::ESGetToken<MagneticField, IdealMagneticFieldRecord> RunManagerMTWorker::m_MagField
private

Definition at line 94 of file RunManagerMTWorker.h.

Referenced by beginRun().

◆ m_nonBeam

bool RunManagerMTWorker::m_nonBeam {false}
private

Definition at line 97 of file RunManagerMTWorker.h.

Referenced by generateEvent().

◆ m_p

edm::ParameterSet RunManagerMTWorker::m_p
private

Definition at line 116 of file RunManagerMTWorker.h.

Referenced by initializeG4(), initializeTLS(), and initializeUserActions().

◆ m_pCustomUIsession

edm::ParameterSet RunManagerMTWorker::m_pCustomUIsession
private

Definition at line 114 of file RunManagerMTWorker.h.

Referenced by initializeG4().

◆ m_pEventAction

edm::ParameterSet RunManagerMTWorker::m_pEventAction
private

Definition at line 110 of file RunManagerMTWorker.h.

Referenced by initializeUserActions().

◆ m_pField

edm::ParameterSet RunManagerMTWorker::m_pField
private

Definition at line 108 of file RunManagerMTWorker.h.

Referenced by initializeG4().

◆ m_pMagField

const MagneticField* RunManagerMTWorker::m_pMagField {nullptr}
private

Definition at line 95 of file RunManagerMTWorker.h.

Referenced by beginRun(), and initializeG4().

◆ m_pRunAction

edm::ParameterSet RunManagerMTWorker::m_pRunAction
private

Definition at line 109 of file RunManagerMTWorker.h.

Referenced by initializeUserActions().

◆ m_pStackingAction

edm::ParameterSet RunManagerMTWorker::m_pStackingAction
private

Definition at line 111 of file RunManagerMTWorker.h.

Referenced by initializeUserActions().

◆ m_pSteppingAction

edm::ParameterSet RunManagerMTWorker::m_pSteppingAction
private

Definition at line 113 of file RunManagerMTWorker.h.

Referenced by initializeUserActions().

◆ m_pTrackingAction

edm::ParameterSet RunManagerMTWorker::m_pTrackingAction
private

Definition at line 112 of file RunManagerMTWorker.h.

Referenced by initializeUserActions().

◆ m_pUseMagneticField

bool RunManagerMTWorker::m_pUseMagneticField {true}
private

Definition at line 99 of file RunManagerMTWorker.h.

Referenced by beginRun(), and initializeG4().

◆ m_sdMakers

std::unordered_map<std::string, std::unique_ptr<SensitiveDetectorMakerBase> > RunManagerMTWorker::m_sdMakers
private

Definition at line 125 of file RunManagerMTWorker.h.

Referenced by beginRun(), and initializeG4().

◆ m_simEvent

TmpSimEvent RunManagerMTWorker::m_simEvent
private

Definition at line 122 of file RunManagerMTWorker.h.

Referenced by produce(), and simEvent().

◆ m_sVerbose

std::unique_ptr<CMSSteppingVerbose> RunManagerMTWorker::m_sVerbose
private

Definition at line 124 of file RunManagerMTWorker.h.

Referenced by initializeG4(), and initializeUserActions().

◆ m_theLHCTlinkToken

edm::EDGetTokenT<edm::LHCTransportLinkContainer> RunManagerMTWorker::m_theLHCTlinkToken
private

Definition at line 93 of file RunManagerMTWorker.h.

Referenced by resetGenParticleId().

◆ m_thread_index

const int RunManagerMTWorker::m_thread_index {-1}
private

Definition at line 106 of file RunManagerMTWorker.h.

Referenced by getThreadIndex().

◆ m_tls

TLSData* RunManagerMTWorker::m_tls {nullptr}
private

◆ m_UIsession

CustomUIsession* RunManagerMTWorker::m_UIsession {nullptr}
private

Definition at line 121 of file RunManagerMTWorker.h.

Referenced by initializeG4(), and ~RunManagerMTWorker().

◆ m_UseG4EventManager

bool RunManagerMTWorker::m_UseG4EventManager {true}
private

Definition at line 98 of file RunManagerMTWorker.h.

Referenced by initializeG4(), initializeUserActions(), and produce().