Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
G4RunManagerKernel.cc
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27// $Id$
28//
29//
30
31#include "G4RunManagerKernel.hh"
32
33#include <vector>
34
35#include "G4StateManager.hh"
36#include "G4ApplicationState.hh"
37#include "G4ExceptionHandler.hh"
39#include "G4GeometryManager.hh"
41#include "G4VPhysicalVolume.hh"
42#include "G4LogicalVolume.hh"
43#include "G4VUserPhysicsList.hh"
44#include "G4ParticleTable.hh"
45#include "G4Region.hh"
46#include "G4RegionStore.hh"
47#include "G4ProductionCuts.hh"
49#include "G4SDManager.hh"
50#include "G4UImanager.hh"
51#include "G4VVisManager.hh"
52#include "G4UnitsTable.hh"
53#include "G4Version.hh"
54#include "G4ios.hh"
55
56#ifdef G4FPE_DEBUG
57 #include "G4FPEDetection.hh"
58#endif
59
60G4RunManagerKernel* G4RunManagerKernel::fRunManagerKernel = 0;
61
63{ return fRunManagerKernel; }
64
66:physicsList(0),currentWorld(0),
67 geometryInitialized(false),physicsInitialized(false),
68 geometryNeedsToBeClosed(true),geometryToBeOptimized(true),
69 physicsNeedsToBeReBuilt(true),verboseLevel(0),
70 numberOfParallelWorld(0)
71{
72#ifdef G4FPE_DEBUG
73 InvalidOperationDetection();
74#endif
75
76 defaultExceptionHandler = new G4ExceptionHandler();
77 if(fRunManagerKernel)
78 {
79 G4Exception("G4RunManagerKernel::G4RunManagerKernel()","Run0001",
80 FatalException,"More than one G4RunManagerKernel is constructed.");
81 }
82 fRunManagerKernel = this;
83
85 if(particleTable->entries()>0)
86 {
87 // No particle should be registered beforehand
89 ED<<"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<G4endl;
90 ED<<" G4RunManagerKernel fatal exception"<<G4endl;
91 ED<<" -- Following particles have already been registered"<<G4endl;
92 ED<<" before G4RunManagerKernel is instantiated."<<G4endl;
93 for(int i=0;i<particleTable->entries();i++)
94 { ED<<" "<<particleTable->GetParticle(i)->GetParticleName()<<G4endl; }
95 ED<<"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<G4endl;
96 G4Exception("G4RunManagerKernel::G4RunManagerKernel()","Run0002",
98 }
99
100 // construction of Geant4 kernel classes
101 eventManager = new G4EventManager();
102 defaultRegion = new G4Region("DefaultRegionForTheWorld"); // deleted by store
103 defaultRegionForParallelWorld = new G4Region("DefaultRegionForParallelWorld"); // deleted by store
104 defaultRegion->SetProductionCuts(
105 G4ProductionCutsTable::GetProductionCutsTable()->GetDefaultProductionCuts());
106 defaultRegionForParallelWorld->SetProductionCuts(
107 G4ProductionCutsTable::GetProductionCutsTable()->GetDefaultProductionCuts());
108
109 // Following line is tentatively moved from SetPhysics method
110 // Commented out for introduction of non-static particle definition // G4ParticleTable::GetParticleTable()->SetReadiness();
111 // set the initial application state
113
114 // version banner
115 G4String vs = G4Version;
116 vs = vs.substr(1,vs.size()-2);
117 versionString = " Geant4 version ";
118 versionString += vs;
119 versionString += " ";
120 versionString += G4Date;
121 G4cout << G4endl
122 << "*************************************************************" << G4endl
123 << versionString << G4endl
124 << " Copyright : Geant4 Collaboration" << G4endl
125 << " Reference : NIM A 506 (2003), 250-303" << G4endl
126 << " WWW : http://cern.ch/geant4" << G4endl
127 << "*************************************************************" << G4endl
128 << G4endl;
129}
130
132{
134 // set the application state to the quite state
135 if(pStateManager->GetCurrentState()!=G4State_Quit)
136 {
137 if(verboseLevel>0) G4cout << "G4 kernel has come to Quit state." << G4endl;
138 pStateManager->SetNewState(G4State_Quit);
139 }
140
141 // open geometry for deletion
143
144 // deletion of Geant4 kernel classes
146 if(fSDM)
147 {
148 delete fSDM;
149 if(verboseLevel>1) G4cout << "G4SDManager deleted." << G4endl;
150 }
151 delete eventManager;
152 if(verboseLevel>1) G4cout << "EventManager deleted." << G4endl;
154 {
155 if(pUImanager) delete pUImanager;
156 if(verboseLevel>1) G4cout << "UImanager deleted." << G4endl;
157 }
159 if(verboseLevel>1) G4cout << "Units table cleared." << G4endl;
160 delete pStateManager;
161 if(verboseLevel>1) G4cout << "StateManager deleted." << G4endl;
162 delete defaultExceptionHandler;
163 if(verboseLevel>1) G4cout << "RunManagerKernel is deleted." << G4endl;
164 fRunManagerKernel = 0;
165}
166
168 G4bool topologyIsChanged)
169{
171 G4ApplicationState currentState = stateManager->GetCurrentState();
172 if(!(currentState==G4State_Idle||currentState==G4State_PreInit))
173 {
174 G4Exception("G4RunManagerKernel::DefineWorldVolume",
175 "Run00031",
177 "Geant4 kernel is not PreInit or Idle state : Method ignored.");
178 return;
179 }
180
181 // The world volume MUST NOT have a region defined by the user
182 if(worldVol->GetLogicalVolume()->GetRegion())
183 {
184 if(worldVol->GetLogicalVolume()->GetRegion()!=defaultRegion)
185 {
187 ED << "The world volume has a user-defined region <"
188 << worldVol->GetLogicalVolume()->GetRegion()->GetName()
189 << ">." << G4endl;
190 ED << "World would have a default region assigned by RunManagerKernel."
191 << G4endl;
192 G4Exception("G4RunManager::DefineWorldVolume",
193 "Run0004", FatalException, ED);
194 }
195 }
196
197 // Remove old world logical volume from the default region, if exist
198 if(defaultRegion->GetNumberOfRootVolumes())
199 {
200 if(defaultRegion->GetNumberOfRootVolumes()>size_t(1))
201 {
202 G4Exception("G4RunManager::DefineWorldVolume",
203 "Run0005",
205 "Default world region should have a unique logical volume.");
206 }
207 std::vector<G4LogicalVolume*>::iterator lvItr
208 = defaultRegion->GetRootLogicalVolumeIterator();
209 defaultRegion->RemoveRootLogicalVolume(*lvItr,false);
210 if(verboseLevel>1) G4cout
211 << "Obsolete world logical volume is removed from the default region." << G4endl;
212 }
213
214 // Accept the world volume
215 currentWorld = worldVol;
216
217 // Set the default region to the world
218 G4LogicalVolume* worldLog = currentWorld->GetLogicalVolume();
219 worldLog->SetRegion(defaultRegion);
220 defaultRegion->AddRootLogicalVolume(worldLog);
221 if(verboseLevel>1) G4cout << worldLog->GetName()
222 << " is registered to the default region." << G4endl;
223
224 // Set the world volume, notify the Navigator and reset its state
226 ->SetWorldForTracking(currentWorld);
227 if(topologyIsChanged) geometryNeedsToBeClosed = true;
228
229 // Notify the VisManager as well
231 if(pVVisManager) pVVisManager->GeometryHasChanged();
232
233 geometryInitialized = true;
234 if(physicsInitialized && currentState!=G4State_Idle)
235 { stateManager->SetNewState(G4State_Idle); }
236}
237
239{
240 physicsList = uPhys;
242 physicsList->ConstructParticle();
243 if(verboseLevel>2) G4ParticleTable::GetParticleTable()->DumpTable();
244 if(verboseLevel>1)
245 {
246 G4cout << "List of instantiated particles ============================================" << G4endl;
248 for(G4int i=0;i<nPtcl;i++)
249 {
251 G4cout << pd->GetParticleName() << " ";
252 if(i%10==9) G4cout << G4endl;
253 }
254 G4cout << G4endl;
255 }
256}
257
259{
261 G4ApplicationState currentState = stateManager->GetCurrentState();
262 if(!(currentState==G4State_Idle||currentState==G4State_PreInit))
263 {
264 G4Exception("G4RunManagerKernel::InitializePhysics",
265 "Run0011", JustWarning,
266 "Geant4 kernel is not PreInit or Idle state : Method ignored.");
267 return;
268 }
269
270 if(!physicsList)
271 {
272 G4Exception("G4RunManagerKernel::InitializePhysics",
273 "Run0012", FatalException,
274 "G4VUserPhysicsList is not defined");
275 return;
276 }
277
278 if(verboseLevel>1) G4cout << "physicsList->Construct() start." << G4endl;
279 if(numberOfParallelWorld>0) physicsList->UseCoupledTransportation();
280 physicsList->Construct();
281
282 if(verboseLevel>1) G4cout << "physicsList->CheckParticleList() start." << G4endl;
283 physicsList->CheckParticleList();
284 if(verboseLevel>1) G4cout << "physicsList->setCut() start." << G4endl;
285 physicsList->SetCuts();
286 CheckRegions();
287 physicsInitialized = true;
288 if(geometryInitialized && currentState!=G4State_Idle)
289 { stateManager->SetNewState(G4State_Idle); }
290}
291
293{
295 G4ApplicationState currentState = stateManager->GetCurrentState();
296
297 if(!geometryInitialized)
298 {
299 G4Exception("G4RunManagerKernel::RunInitialization",
300 "Run0021",
302 "Geometry has not yet initialized : method ignored.");
303 return false;
304 }
305
306 if(!physicsInitialized)
307 {
308 G4Exception("G4RunManagerKernel::RunInitialization",
309 "Run0022",
311 "Physics has not yet initialized : method ignored.");
312 return false;
313 }
314
315 if( currentState != G4State_Idle )
316 {
317 G4Exception("G4RunManagerKernel::RunInitialization",
318 "Run0023",
320 "Geant4 kernel not in Idle state : method ignored.");
321 return false;
322 }
323
324 //if(numberOfParallelWorld>0)
325 //{ // Confirm G4CoupledTransportation is used
326 // if(!ConfirmCoupledTransportation())
327 // { G4Exception("G4CoupledTransportation must be used for parallel world."); }
328 //}
329
330 UpdateRegion();
331 BuildPhysicsTables();
332
333 if(geometryNeedsToBeClosed)
334 {
335 ResetNavigator();
336 CheckRegularGeometry();
337 // Notify the VisManager as well
339 if(pVVisManager) pVVisManager->GeometryHasChanged();
340 }
341
343
344 stateManager->SetNewState(G4State_GeomClosed);
345 return true;
346}
347
350
351void G4RunManagerKernel::ResetNavigator()
352{
353 // We have to tweak the navigator's state in case a geometry has been
354 // modified between runs. By the following calls we ensure that navigator's
355 // state is reset properly. It is required the geometry to be closed
356 // and previous optimisations to be cleared.
357
359 if(verboseLevel>1) G4cout << "Start closing geometry." << G4endl;
360 geomManager->OpenGeometry();
361 geomManager->CloseGeometry(geometryToBeOptimized, verboseLevel>1);
362
363 // Reseting Navigator has been moved to G4Eventmanager, so that resetting
364 // is now done for every event.
365 // G4ThreeVector center(0,0,0);
366 // G4Navigator* navigator =
367 // G4TransportationManager::GetTransportationManager()->GetNavigatorForTracking();
368 // navigator->LocateGlobalPointAndSetup(center,0,false);
369
370 geometryNeedsToBeClosed = false;
371}
372
374{
376 G4ApplicationState currentState = stateManager->GetCurrentState();
377 if( currentState != G4State_Idle )
378 {
379 G4Exception("G4RunManagerKernel::UpdateRegion",
380 "Run0024",
382 "Geant4 kernel not in Idle state : method ignored.");
383 return;
384 }
385
386 CheckRegions();
389}
390
391void G4RunManagerKernel::BuildPhysicsTables()
392{
394 || physicsNeedsToBeReBuilt)
395 {
396 physicsList->BuildPhysicsTable();
398 physicsNeedsToBeReBuilt = false;
399 }
400
401 if(verboseLevel>1) DumpRegion();
402 if(verboseLevel>0) physicsList->DumpCutValuesTable();
403 physicsList->DumpCutValuesTableIfRequested();
404}
405
406void G4RunManagerKernel::CheckRegions()
407{
409 size_t nWorlds = transM->GetNoWorlds();
410 std::vector<G4VPhysicalVolume*>::iterator wItr;
411 for(size_t i=0;i<G4RegionStore::GetInstance()->size();i++)
412 {
413 G4Region* region = (*(G4RegionStore::GetInstance()))[i];
414
415 //Let each region have a pointer to the world volume where it belongs to.
416 //G4Region::SetWorld() checks if the region belongs to the given world and set it
417 //only if it does. Thus, here we go through all the registered world volumes.
418 region->SetWorld(0); // reset
419 region->UsedInMassGeometry(false);
420 region->UsedInParallelGeometry(false);
421 wItr = transM->GetWorldsIterator();
422 for(size_t iw=0;iw<nWorlds;iw++)
423 {
424 if(region->BelongsTo(*wItr))
425 {
426 if(*wItr==currentWorld)
427 { region->UsedInMassGeometry(true); }
428 else
429 { region->UsedInParallelGeometry(true); }
430 }
431 region->SetWorld(*wItr);
432 wItr++;
433 }
434
435 G4ProductionCuts* cuts = region->GetProductionCuts();
436 if(!cuts)
437 {
438 if(region->IsInMassGeometry())
439 {
440 G4cerr << "Warning : Region <" << region->GetName()
441 << "> does not have specific production cuts," << G4endl
442 << "even though it appears in the current tracking world." << G4endl;
443 G4cerr << "Default cuts are used for this region." << G4endl;
444 }
445
446 if(region->IsInMassGeometry()||region->IsInParallelGeometry())
447 {
448 region->SetProductionCuts(
451 }
452 }
453 }
454
455 //
456 // If a parallel world has no region, set default region for parallel world
457 //
458
459//DumpRegion();
460//
461// while(defaultRegionForParallelWorld->GetNumberOfRootVolumes()>0)
462// {
463// std::vector<G4LogicalVolume*>::iterator lvItr
464// = defaultRegionForParallelWorld->GetRootLogicalVolumeIterator();
465// defaultRegionForParallelWorld->RemoveRootLogicalVolume(*lvItr,false);
466// }
467
468 wItr = transM->GetWorldsIterator();
469 for(size_t iw=0;iw<nWorlds;iw++)
470 {
471 //G4cout << "+++ " << (*wItr)->GetName() << G4endl;
472 if(*wItr!=currentWorld)
473 {
474 G4LogicalVolume* pwLogical = (*wItr)->GetLogicalVolume();
475 if(!(pwLogical->GetRegion()))
476 {
477 pwLogical->SetRegion(defaultRegionForParallelWorld);
478 defaultRegionForParallelWorld->AddRootLogicalVolume(pwLogical);
479 //G4cout << "+++++ defaultRegionForParallelWorld is set to "
480 // << (*wItr)->GetName() << " +++++" << G4endl;
481 }
482 }
483 wItr++;
484 }
485
486}
487
489{
491 if(region) DumpRegion(region);
492}
493
495{
496 if(!region)
497 {
498 for(size_t i=0;i<G4RegionStore::GetInstance()->size();i++)
500 }
501 else
502 {
503 G4cout << G4endl;
504 G4cout << "Region <" << region->GetName() << "> -- ";
505 if(region->GetWorldPhysical())
506 {
507 G4cout << " -- appears in <"
508 << region->GetWorldPhysical()->GetName() << "> world volume";
509 }
510 else
511 { G4cout << " -- is not associated to any world."; }
512 G4cout << G4endl;
513 if(region->IsInMassGeometry())
514 { G4cout << " This region is in the mass world." << G4endl; }
515 if(region->IsInParallelGeometry())
516 { G4cout << " This region is in the parallel world." << G4endl; }
517
518 G4cout << " Root logical volume(s) : ";
519 size_t nRootLV = region->GetNumberOfRootVolumes();
520 std::vector<G4LogicalVolume*>::iterator lvItr = region->GetRootLogicalVolumeIterator();
521 for(size_t j=0;j<nRootLV;j++)
522 { G4cout << (*lvItr)->GetName() << " "; lvItr++; }
523 G4cout << G4endl;
524
525 G4cout << " Pointers : G4VUserRegionInformation[" << region->GetUserInformation()
526 << "], G4UserLimits[" << region->GetUserLimits()
527 << "], G4FastSimulationManager[" << region->GetFastSimulationManager()
528 << "], G4UserSteppingAction[" << region->GetRegionalSteppingAction() << "]" << G4endl;
529
530// if(region->GetWorldPhysical()!=currentWorld)
531// {
532// G4cout << G4endl;
533// return;
534// }
535 G4cout << " Materials : ";
536 std::vector<G4Material*>::const_iterator mItr = region->GetMaterialIterator();
537 size_t nMaterial = region->GetNumberOfMaterials();
538 for(size_t iMate=0;iMate<nMaterial;iMate++)
539 {
540 G4cout << (*mItr)->GetName() << " ";
541 mItr++;
542 }
543 G4cout << G4endl;
544 G4ProductionCuts* cuts = region->GetProductionCuts();
545 if(!cuts && region->IsInMassGeometry())
546 {
547 G4cerr << "Warning : Region <" << region->GetName()
548 << "> does not have specific production cuts." << G4endl;
549 G4cerr << "Default cuts are used for this region." << G4endl;
550 region->SetProductionCuts(
551 G4ProductionCutsTable::GetProductionCutsTable()->GetDefaultProductionCuts());
552 }
553 else if(cuts)
554 {
555 G4cout << " Production cuts : "
556 << " gamma "
557 << G4BestUnit(cuts->GetProductionCut("gamma"),"Length")
558 << " e- "
559 << G4BestUnit(cuts->GetProductionCut("e-"),"Length")
560 << " e+ "
561 << G4BestUnit(cuts->GetProductionCut("e+"),"Length")
562 << " proton "
563 << G4BestUnit(cuts->GetProductionCut("proton"),"Length")
564 << G4endl;
565 }
566 }
567}
568
570void G4RunManagerKernel::CheckRegularGeometry()
571{
573 for(G4LogicalVolumeStore::iterator pos=store->begin(); pos!=store->end(); pos++)
574 {
575 if((*pos)&&((*pos)->GetNoDaughters()==1))
576 {
577 if((*pos)->GetDaughter(0)->IsRegularStructure())
578 {
579 SetScoreSplitter();
580 return;
581 }
582 }
583 }
584}
585
586#include "G4ParticleTable.hh"
588#include "G4ProcessManager.hh"
589#include "G4ProcessVector.hh"
590#include "G4VProcess.hh"
591G4bool G4RunManagerKernel::ConfirmCoupledTransportation()
592{
594 G4ParticleTable::G4PTblDicIterator* theParticleIterator = theParticleTable->GetIterator();
595 theParticleIterator->reset();
596 while((*theParticleIterator)())
597 {
598 G4ParticleDefinition* pd = theParticleIterator->value();
600 if(pm)
601 {
603 G4VProcess* p = (*pv)[0];
604 return ( (p->GetProcessName()) == "CoupledTransportation" );
605 }
606 }
607 return false;
608}
609
611void G4RunManagerKernel::SetScoreSplitter()
612{
615 G4ParticleTable::G4PTblDicIterator* theParticleIterator = theParticleTable->GetIterator();
616
617 // Ensure that Process is added only once to the particles' process managers
618 static bool InitSplitter=false;
619 if( ! InitSplitter ) {
620 InitSplitter = true;
621
622 theParticleIterator->reset();
623 while( (*theParticleIterator)() )
624 {
625 G4ParticleDefinition* particle = theParticleIterator->value();
626 G4ProcessManager* pmanager = particle->GetProcessManager();
627 if(pmanager)
628 { pmanager->AddDiscreteProcess(pSplitter); }
629 }
630
631 if(verboseLevel>0)
632 {
633 G4cout << "G4RunManagerKernel -- G4ScoreSplittingProcess is appended to all particles." << G4endl;
634 }
635 }
636}
637
G4ApplicationState
@ G4State_Idle
@ G4State_Quit
@ G4State_GeomClosed
@ G4State_PreInit
@ JustWarning
@ FatalException
@ typeDoIt
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cerr
G4DLLIMPORT std::ostream G4cout
G4bool CloseGeometry(G4bool pOptimise=true, G4bool verbose=false, G4VPhysicalVolume *vol=0)
void OpenGeometry(G4VPhysicalVolume *vol=0)
static G4GeometryManager * GetInstance()
static G4LogicalVolumeStore * GetInstance()
G4String GetName() const
void SetRegion(G4Region *reg)
G4Region * GetRegion() const
G4ProcessManager * GetProcessManager() const
const G4String & GetParticleName() const
G4int entries() const
G4PTblDicIterator * GetIterator()
static G4ParticleTable * GetParticleTable()
void SetReadiness(G4bool val=true)
G4ParticleDefinition * GetParticle(G4int index)
void DumpTable(const G4String &particle_name="ALL")
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
G4ProcessVector * GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const
void UpdateCoupleTable(G4VPhysicalVolume *currentWorld)
static G4ProductionCutsTable * GetProductionCutsTable()
G4ProductionCuts * GetDefaultProductionCuts() const
G4double GetProductionCut(G4int index) const
static G4RegionStore * GetInstance()
void UpdateMaterialList(G4VPhysicalVolume *currentWorld=0)
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const
G4bool BelongsTo(G4VPhysicalVolume *thePhys) const
Definition: G4Region.cc:335
G4FastSimulationManager * GetFastSimulationManager() const
G4VUserRegionInformation * GetUserInformation() const
void SetWorld(G4VPhysicalVolume *wp)
Definition: G4Region.cc:319
G4bool IsInParallelGeometry() const
G4ProductionCuts * GetProductionCuts() const
void RemoveRootLogicalVolume(G4LogicalVolume *lv, G4bool scan=true)
Definition: G4Region.cc:256
G4VPhysicalVolume * GetWorldPhysical() const
void SetProductionCuts(G4ProductionCuts *cut)
G4UserLimits * GetUserLimits() const
const G4String & GetName() const
G4bool IsInMassGeometry() const
size_t GetNumberOfRootVolumes() const
G4UserSteppingAction * GetRegionalSteppingAction() const
size_t GetNumberOfMaterials() const
void UsedInParallelGeometry(G4bool val=true)
std::vector< G4Material * >::const_iterator GetMaterialIterator() const
void AddRootLogicalVolume(G4LogicalVolume *lv)
Definition: G4Region.cc:227
std::vector< G4LogicalVolume * >::iterator GetRootLogicalVolumeIterator()
void UsedInMassGeometry(G4bool val=true)
G4PrimaryTransformer * GetPrimaryTransformer() const
static G4RunManagerKernel * GetRunManagerKernel()
void SetPhysics(G4VUserPhysicsList *uPhys)
void DefineWorldVolume(G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)
void DumpRegion(const G4String &rname) const
static G4SDManager * GetSDMpointerIfExist()
Definition: G4SDManager.cc:49
G4ApplicationState GetCurrentState() const
static G4StateManager * GetStateManager()
G4bool SetNewState(G4ApplicationState requestedState)
static G4TransportationManager * GetTransportationManager()
void SetWorldForTracking(G4VPhysicalVolume *theWorld)
std::vector< G4VPhysicalVolume * >::iterator GetWorldsIterator()
size_t GetNoWorlds() const
static G4UImanager * GetUIpointer()
Definition: G4UImanager.cc:51
static void ClearUnitsTable()
G4LogicalVolume * GetLogicalVolume() const
const G4String & GetName() const
const G4String & GetProcessName() const
Definition: G4VProcess.hh:379
void UseCoupledTransportation(G4bool vl=true)
virtual void ConstructParticle()=0
void DumpCutValuesTable(G4int flag=1)
static G4VVisManager * GetConcreteInstance()
virtual void GeometryHasChanged()=0
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76