G4RunTool Node1 G4RunTool - m_detConstruction - m_actionTools - m_physicsInitializationTools - m_activateParallelGeometries - m_libList - m_physList - m_fieldMap - m_g4commands - m_nG4threads - m_nG4eventsPerRun + initialize() + finalize() + NotifyBeginRun() + WaitBeginRun() + Size() + PushEvent() + GetEvent() - Geant4main() - commandLog() Node2 extends< AthAlgTool, IG4RunTool >     Node2->Node1 Node3 ServiceHandle< IPhysicsList Svc >     Node3->Node1 -m_physicsListSvc Node4 ServiceHandle< IUserLimits Svc >     Node4->Node1 -m_userLimitsSvc Node5 ServiceHandle< G4UA ::IUserActionSvc >     Node5->Node1 -m_userActionSvc Node6 std::unique_ptr< std ::thread >   + operator->() Node6->Node1 -m_thread Node7 std::thread     Node7->Node6 +ptr Node8 G4RunTool::StateSynchronization + m_status + m_cv + SetStatus() + WaitStatus() Node8->Node1 -m_statusSync Node9 std::mutex     Node9->Node8 +m_mutex Node10 G4RunTool::EventQueueSynchronization + m_cv   Node9->Node10 +m_mutex Node10->Node1 -m_eventQueueSync