123{
124
125
126
127
128
129
130
131
132
133
134
135
136
138 wThreadContext = context;
140
141
142
143
144
145
146
147 G4int thisID = wThreadContext->GetThreadId();
150
151
152
153
154
156
157
158
159
160
163
164
165
166
169 }
172 if (sv != nullptr) {
174 }
175 }
176
181 workerRMvector->push_back(wrm);
182 wrmm.unlock();
183
184
185
186
187
189 wrm->G4RunManager::SetUserInitialization(const_cast<G4VUserDetectorConstruction*>(detector));
192
193
194
195
198 }
201 }
203
204
205
206
207
208
209
211
212
213
214
217 }
218
219 wrmm.lock();
220 for (auto itrWrm = workerRMvector->cbegin(); itrWrm != workerRMvector->cend(); ++itrWrm) {
221 if ((*itrWrm) == wrm) {
222 workerRMvector->erase(itrWrm);
223 break;
224 }
225 }
226 wrmm.unlock();
227 delete wrm;
228
229
230
231
233 wThreadContext = nullptr;
234
236}
G4int GetPinAffinity() const
const CLHEP::HepRandomEngine * getMasterRandomEngine() const
static G4MTRunManager * GetMasterRunManager()
const G4UserWorkerInitialization * GetUserWorkerInitialization() const
virtual void Initialize()
const G4VUserDetectorConstruction * GetUserDetectorConstruction() const
const G4VUserActionInitialization * GetUserActionInitialization() const
G4VUserActionInitialization * GetNonConstUserActionInitialization() const
const G4VUserPhysicsList * GetUserPhysicsList() const
const G4UserWorkerThreadInitialization * GetUserWorkerThreadInitialization() const
void SetUpForAThread(G4int tId)
static G4UImanager * GetUIpointer()
virtual void WorkerStop() const
virtual void WorkerStart() const
virtual void WorkerInitialize() const
virtual void SetupRNGEngine(const CLHEP::HepRandomEngine *aRNGEngine) const
virtual G4WorkerRunManager * CreateWorkerRunManager() const
static void SetInstance(G4VSteppingVerbose *Instance)
virtual G4VSteppingVerbose * InitializeSteppingVerbose() const
virtual void Build() const =0
void SetWorkerThread(G4WorkerThread *wc)
void SetUserInitialization(G4VUserPhysicsList *userInit) override
static void BuildGeometryAndPhysicsVector()
static void DestroyGeometryAndPhysicsVector()
G4int WorkerThreadJoinsPool()
G4int WorkerThreadLeavesPool()
void G4SetThreadId(G4int aNewValue)