ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Simulation
G4Utilities
G4RunManagement
src
G4RunToolStateSynchronization.h
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#ifndef G4RUNMANAGEMENT_G4RUNTOOLSTATESYNCHRONIZATION_H
6
#define G4RUNMANAGEMENT_G4RUNTOOLSTATESYNCHRONIZATION_H
7
8
#include <condition_variable>
9
#include <mutex>
10
#include <string>
11
24
class
G4RunToolStateSynchronization
25
{
26
public
:
27
enum class
Status
{
28
Starting
,
29
Running
,
30
FinalizeRequested
,
31
Failed
,
32
Stopped
33
};
34
36
void
NotifyBeginRun
();
38
void
RequestFinalize
();
40
void
Fail
(std::string message);
42
void
NotifyThreadExit
();
44
bool
WaitBeginRun
(std::string& failureMessage);
46
bool
StopRequested
()
const
;
47
48
private
:
49
Status
m_status
{
Status::Starting
};
50
std::string
m_failureMessage
;
51
mutable
std::mutex
m_mutex
;
52
std::condition_variable
m_cv
;
53
};
54
55
#endif
G4RunToolStateSynchronization
Thread-safe lifecycle state shared by the Athena and Geant4 main threads.
Definition
G4RunToolStateSynchronization.h:25
G4RunToolStateSynchronization::NotifyBeginRun
void NotifyBeginRun()
Transition Starting to Running. Ignored in every other state.
Definition
G4RunToolStateSynchronization.cxx:9
G4RunToolStateSynchronization::WaitBeginRun
bool WaitBeginRun(std::string &failureMessage)
Wait until startup succeeds or the lifecycle reaches a terminal condition.
Definition
G4RunToolStateSynchronization.cxx:62
G4RunToolStateSynchronization::StopRequested
bool StopRequested() const
Return whether the Geant4 run loop must stop.
Definition
G4RunToolStateSynchronization.cxx:78
G4RunToolStateSynchronization::NotifyThreadExit
void NotifyThreadExit()
Record normal exit after finalization, or failure after an unexpected exit.
Definition
G4RunToolStateSynchronization.cxx:44
G4RunToolStateSynchronization::m_failureMessage
std::string m_failureMessage
Definition
G4RunToolStateSynchronization.h:50
G4RunToolStateSynchronization::Status
Status
Definition
G4RunToolStateSynchronization.h:27
G4RunToolStateSynchronization::Status::FinalizeRequested
@ FinalizeRequested
Athena requested termination of the Geant4 run loop.
Definition
G4RunToolStateSynchronization.h:30
G4RunToolStateSynchronization::Status::Running
@ Running
BeginOfRun was observed; Athena may submit events.
Definition
G4RunToolStateSynchronization.h:29
G4RunToolStateSynchronization::Status::Stopped
@ Stopped
The Geant4 main thread exited normally; terminal state.
Definition
G4RunToolStateSynchronization.h:32
G4RunToolStateSynchronization::Status::Starting
@ Starting
Waiting for the first Geant4 BeginOfRun notification.
Definition
G4RunToolStateSynchronization.h:28
G4RunToolStateSynchronization::Status::Failed
@ Failed
The Geant4 main thread failed; terminal state.
Definition
G4RunToolStateSynchronization.h:31
G4RunToolStateSynchronization::m_mutex
std::mutex m_mutex
Definition
G4RunToolStateSynchronization.h:51
G4RunToolStateSynchronization::m_status
Status m_status
Definition
G4RunToolStateSynchronization.h:49
G4RunToolStateSynchronization::Fail
void Fail(std::string message)
Transition any non-terminal state to Failed and wake startup waiters.
Definition
G4RunToolStateSynchronization.cxx:31
G4RunToolStateSynchronization::RequestFinalize
void RequestFinalize()
Transition Starting or Running to FinalizeRequested.
Definition
G4RunToolStateSynchronization.cxx:20
G4RunToolStateSynchronization::m_cv
std::condition_variable m_cv
Definition
G4RunToolStateSynchronization.h:52
Generated on
for ATLAS Offline Software by
1.17.0