#include <OscarMTMasterThread.h>
Definition at line 28 of file OscarMTMasterThread.h.
Definition at line 22 of file OscarMTMasterThread.cc.
References BeginRun, g4SimHits_cfi::CustomUIsession, Destruct, EndRun, Exception, LogDebug, edm::errors::LogicError, m_mainCanProceed, m_masterCanProceed, m_masterThread, m_masterThreadState, m_notifyMainCv, m_notifyMasterCv, m_pDD, m_pMF, m_pTable, m_runManagerMaster, m_threadMutex, and runManagerMaster().
35 <<
"OscarMTMasterThread: creating master thread";
43 std::unique_ptr<CustomUIsession> uiSession;
49 <<
"OscarMTMasterThread: initializing RunManagerMT";
55 runManagerMaster = std::make_shared<RunManagerMT>(iConfig);
59 <<
"OscarMTMasterThread: initialization of RunManagerMT finished";
63 bool isG4Alive =
false;
67 LogDebug(
"OscarMTMasterThread") <<
"Master thread: State loop, notify main thread";
72 LogDebug(
"OscarMTMasterThread") <<
"Master thread: State loop, starting wait";
79 LogDebug(
"OscarMTMasterThread") <<
"Master thread: Initializing Geant4";
85 LogDebug(
"OscarMTMasterThread") <<
"Master thread: Stopping Geant4";
86 runManagerMaster->stopG4();
90 LogDebug(
"OscarMTMasterThread") <<
"Master thread: Breaking out of state loop";
93 <<
"Geant4 is still alive, master thread state must be set to EndRun before Destruct";
98 <<
"OscarMTMasterThread: Illegal master thread state " 106 <<
"OscarMTMasterThread: start RunManagerMT destruction";
108 <<
"Master thread: Am I unique owner of runManagerMaster? " 109 << runManagerMaster.unique();
112 runManagerMaster.reset();
113 G4PhysicalVolumeStore::Clean();
115 LogDebug(
"OscarMTMasterThread") <<
"Master thread: Reseted shared_ptr";
118 <<
"OscarMTMasterThread: Master thread is finished";
124 LogDebug(
"OscarMTMasterThread") <<
"Main thread: Signal master for initialization";
129 <<
"OscarMTMasterThread: Master thread is constructed";
T getParameter(std::string const &) const
std::shared_ptr< RunManagerMT > m_runManagerMaster
std::thread m_masterThread
ThreadState m_masterThreadState
RunManagerMT & runManagerMaster() const
std::condition_variable m_notifyMasterCv
const DDCompactView * m_pDD
const MagneticField * m_pMF
const HepPDT::ParticleDataTable * m_pTable
std::condition_variable m_notifyMainCv
const bool m_pUseMagneticField
OscarMTMasterThread::~OscarMTMasterThread |
( |
| ) |
|
void OscarMTMasterThread::endRun |
( |
| ) |
const |
Definition at line 203 of file OscarMTMasterThread.cc.
References edm::ESWatcher< T >::check(), edm::errors::Configuration, Exception, edm::EventSetup::get(), idealGeomRcdWatcher_, idealMagRcdWatcher_, m_firstRun, m_pDD, m_pMF, m_pTable, m_pUseMagneticField, edm::ESTransientHandle< T >::product(), and edm::ESHandle< T >::product().
Referenced by beginRun().
207 <<
"[SimG4Core OscarMTMasterThread]\n" 208 <<
"The Geometry configuration is changed during the job execution\n" 209 <<
"this is not allowed, the geometry must stay unchanged";
215 <<
"[SimG4Core OscarMTMasterThread]\n" 216 <<
"The MagneticField configuration is changed during the job execution\n" 217 <<
"this is not allowed, the MagneticField must stay unchanged";
edm::ESWatcher< IdealGeometryRecord > idealGeomRcdWatcher_
const DDCompactView * m_pDD
T const * product() const
bool check(const edm::EventSetup &iSetup)
edm::ESWatcher< IdealMagneticFieldRecord > idealMagRcdWatcher_
const MagneticField * m_pMF
T const * product() const
const HepPDT::ParticleDataTable * m_pTable
const bool m_pUseMagneticField
RunManagerMT& OscarMTMasterThread::runManagerMaster |
( |
| ) |
const |
|
inline |
RunManagerMT* OscarMTMasterThread::runManagerMasterPtr |
( |
| ) |
const |
|
inline |
void OscarMTMasterThread::stopThread |
( |
| ) |
|
bool OscarMTMasterThread::m_firstRun |
|
mutableprivate |
bool OscarMTMasterThread::m_mainCanProceed |
|
mutableprivate |
bool OscarMTMasterThread::m_masterCanProceed |
|
mutableprivate |
std::thread OscarMTMasterThread::m_masterThread |
|
private |
std::condition_variable OscarMTMasterThread::m_notifyMainCv |
|
mutableprivate |
std::condition_variable OscarMTMasterThread::m_notifyMasterCv |
|
mutableprivate |
const bool OscarMTMasterThread::m_pUseMagneticField |
|
private |
std::shared_ptr<RunManagerMT> OscarMTMasterThread::m_runManagerMaster |
|
private |
bool OscarMTMasterThread::m_stopped |
|
mutableprivate |