132{
133 if(context() && workerRM())
134 return;
135
138 {
141 _fut.wait();
142 return;
143 }
144
145
146
147
148
149
150
151
152
153
154
155
158
159
160
161
162
163
164
167 G4int thisID = context()->GetThreadId();
170
171
172
173
174
176
177
178
179
180
183
184
185
186
189
191 {
194 if(sv)
196 }
197
198 context()->BuildGeometryAndPhysicsVector();
201 auto& wrm = workerRM();
202 wrm->SetWorkerThread(context().
get());
203
204
205
206
207
210 wrm->G4RunManager::SetUserInitialization(
214
215
216
217
222
223 workerRM()->Initialize();
224
227
228 wrm->ProcessUI();
229}
G4int GetPinAffinity() const
const CLHEP::HepRandomEngine * getMasterRandomEngine() const
const G4UserWorkerInitialization * GetUserWorkerInitialization() const
const G4VUserDetectorConstruction * GetUserDetectorConstruction() const
const G4VUserActionInitialization * GetUserActionInitialization() const
G4VUserActionInitialization * GetNonConstUserActionInitialization() const
const G4VUserPhysicsList * GetUserPhysicsList() const
const G4UserWorkerThreadInitialization * GetUserWorkerThreadInitialization() const
void SetUpForAThread(G4int tId)
G4int ApplyCommand(const char *aCommand)
static G4UImanager * GetUIpointer()
virtual void WorkerInitialize() const
virtual void WorkerStart() const
virtual void SetupRNGEngine(const CLHEP::HepRandomEngine *aRNGEngine) const
virtual G4WorkerRunManager * CreateWorkerRunManager() const
static void SetInstance(G4VSteppingVerbose *Instance)
virtual void Build() const =0
virtual G4VSteppingVerbose * InitializeSteppingVerbose() const
ThreadPool * GetThreadPool() const
static uintmax_t get_this_thread_id()
G4int WorkerThreadJoinsPool()
void G4SetThreadId(G4int aNewValue)
auto get(Tuple< Elements... > &t) -> decltype(get_height< sizeof...(Elements) - I - 1 >(t))