69 #ifdef theParticleIterator 
   70 #undef theParticleIterator 
   79 : physicsList(0),currentWorld(0),
 
   80  geometryInitialized(false),physicsInitialized(false),
 
   81  geometryToBeOptimized(true),
 
   82  physicsNeedsToBeReBuilt(true),verboseLevel(0),
 
   83  numberOfParallelWorld(0),geometryNeedsToBeClosed(true),
 
   84  numberOfStaticAllocators(0)
 
   94     G4Exception(
"G4RunManagerKernel::G4RunManagerKernel()",
"Run0001",
 
   95                 FatalException,
"More than one G4RunManagerKernel is constructed.");
 
  104     ED<<
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<
G4endl;
 
  105     ED<<
" G4RunManagerKernel fatal exception"<<
G4endl;
 
  106     ED<<
"  -- Following particles have already been registered"<<
G4endl;
 
  107     ED<<
"     before G4RunManagerKernel is instantiated."<<
G4endl;
 
  108     for(
int i=0;i<particleTable->
entries();i++)
 
  110     ED<<
"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"<<
G4endl;
 
  111     G4Exception(
"G4RunManagerKernel::G4RunManagerKernel()",
"Run0002",
 
  131   vs = vs.substr(1,vs.size()-2);
 
  137     << 
"*************************************************************" << 
G4endl 
  139     << 
"                      Copyright : Geant4 Collaboration" << 
G4endl 
  140     << 
"                      Reference : NIM A 506 (2003), 250-303" << 
G4endl 
  141     << 
"                            WWW : http://cern.ch/geant4" << 
G4endl 
  142     << 
"*************************************************************" << 
G4endl 
  147 : physicsList(0),currentWorld(0),
 
  148 geometryInitialized(false),physicsInitialized(false),
 
  149 geometryToBeOptimized(true),
 
  150 physicsNeedsToBeReBuilt(true),verboseLevel(0),
 
  151 numberOfParallelWorld(0),geometryNeedsToBeClosed(true),
 
  152  numberOfStaticAllocators(0)
 
  155 #ifndef G4MULTITHREADED 
  157     msg<<
"Geant4 code is compiled without multi-threading support (-DG4MULTITHREADED is set to off).";
 
  158     msg<<
" This type of RunManagerKernel can only be used in mult-threaded applications.";
 
  171         G4Exception(
"G4RunManagerKernel::G4RunManagerKernel()",
"Run0001",
 
  172                     FatalException,
"More than one G4RunManagerKernel is constructed.");
 
  199         msgx<<
" This type of RunManagerKernel can only be used in mult-threaded applications.";
 
  209     vs = vs.substr(1,vs.size()-2);
 
  218        << 
"*************************************************************" << 
G4endl 
  220        << 
"  << in Multi-threaded mode >> " << 
G4endl 
  221        << 
"                      Copyright : Geant4 Collaboration" << 
G4endl 
  222        << 
"                      Reference : NIM A 506 (2003), 250-303" << 
G4endl 
  223        << 
"                            WWW : http://cern.ch/geant4" << 
G4endl 
  224        << 
"*************************************************************" << 
G4endl 
  231        << 
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << G4endl
 
  233        << 
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^" << G4endl
 
  250                         "Default world region should have a unique logical volume.");
 
  252         std::vector<G4LogicalVolume*>::iterator lvItr
 
  256             << 
"Obsolete world logical volume is removed from the default region." << 
G4endl;
 
  276   if(pwps) 
delete pwps;
 
  305     G4cout << 
"Thread-local UImanager is to be deleted." << G4endl 
 
  306            << 
"There should not be any thread-local G4cout/G4cerr hereafter." 
  310   if(pUImanager) 
delete pUImanager;
 
  313   delete pStateManager; 
 
  325   G4MTRunManager::masterWorlds_t::iterator itrMW = masterWorlds.begin();
 
  326   for(;itrMW!=masterWorlds.end();itrMW++)
 
  344     G4Exception(
"G4RunManagerKernel::DefineWorldVolume",
 
  345                 "DefineWorldVolumeAtIncorrectState",
 
  347                 "Geant4 kernel is not PreInit or Idle state : Method ignored.");
 
  357   G4MTRunManager::masterWorlds_t::iterator itrMW = masterWorlds.begin();
 
  358   for(;itrMW!=masterWorlds.end();itrMW++)
 
  360     if((*itrMW).first == 0)
 
  364         G4Exception(
"G4RunManagerKernel::WorkerDefineWorldVolume",
"RUN3091",
 
  396     G4Exception(
"G4RunManagerKernel::DefineWorldVolume",
 
  399                 "Geant4 kernel is not PreInit or Idle state : Method ignored.");
 
  409       ED << 
"The world volume has a user-defined region <" 
  412       ED << 
"World would have a default region assigned by RunManagerKernel." 
  430    << 
" is registered to the default region." << 
G4endl;
 
  459     G4cout << 
"List of instantiated particles ============================================" << 
G4endl;
 
  461     for(
G4int i=0;i<nPtcl;i++)
 
  519     G4Exception(
"G4RunManagerKernel::InitializePhysics",
 
  521                 "Geant4 kernel is not PreInit or Idle state : Method ignored.");
 
  527     G4Exception(
"G4RunManagerKernel::InitializePhysics",
 
  529                 "G4VUserPhysicsList is not defined");
 
  579     G4Exception(
"G4RunManagerKernel::RunInitialization",
 
  582                 "Geometry has not yet initialized : method ignored.");
 
  588     G4Exception(
"G4RunManagerKernel::RunInitialization",
 
  591                 "Physics has not yet initialized : method ignored.");
 
  597     G4Exception(
"G4RunManagerKernel::RunInitialization",
 
  600                 "Geant4 kernel not in Idle state : method ignored.");
 
  681                 "Geant4 kernel not in Idle state : method ignored.");
 
  699 #ifdef G4MULTITHREADED 
  721   std::vector<G4VPhysicalVolume*>::iterator wItr;
 
  733     for(
size_t iw=0;iw<nWorlds;iw++)
 
  752              << 
"> does not have specific production cuts," << 
G4endl 
  753              << 
"even though it appears in the current tracking world." << 
G4endl;
 
  754         G4cout << 
"Default cuts are used for this region." << 
G4endl;
 
  761              ->GetDefaultProductionCuts());
 
  771   for(
size_t iw=0;iw<nWorlds;iw++)
 
  810       G4cout << 
" -- appears in <"  
  814     { 
G4cout << 
" -- is not associated to any world."; }
 
  817     { 
G4cout << 
" This region is in the mass world." << 
G4endl; }
 
  819     { 
G4cout << 
" This region is in the parallel world." << 
G4endl; }
 
  821     G4cout << 
" Root logical volume(s) : ";
 
  824     for(
size_t j=0;j<nRootLV;j++)
 
  825     { 
G4cout << (*lvItr)->GetName() << 
" "; lvItr++; }
 
  833     G4cout << 
" Materials : ";
 
  836     for(
size_t iMate=0;iMate<nMaterial;iMate++)
 
  838       G4cout << (*mItr)->GetName() << 
" ";
 
  846              << 
"> does not have specific production cuts." << 
G4endl;
 
  847       G4cerr << 
"Default cuts are used for this region." << 
G4endl;
 
  853       G4cout << 
" Production cuts : " 
  871   for(G4LogicalVolumeStore::iterator 
pos=store->begin(); 
pos!=store->end(); 
pos++)
 
  873     if((*
pos)&&((*pos)->GetNoDaughters()==1))
 
  875       if((*pos)->GetDaughter(0)->IsRegularStructure())
 
  893   theParticleIterator->
reset();
 
  894   while((*theParticleIterator)())
 
  917   if( ! InitSplitter ) {
 
  920     theParticleIterator->
reset();
 
  921     while( (*theParticleIterator)() )  
 
  931       G4cout << 
"G4RunManagerKernel -- G4ScoreSplittingProcess is appended to all particles." << 
G4endl;
 
  940     theParticleIterator->
reset();
 
  942     while((*theParticleIterator)())
 
  949             for ( 
G4int idx = 0 ; idx<procs.
size() ; ++idx)
 
  951                 const G4VProcess* masterP = procs[idx]->GetMasterProcess();
 
  956                     procs[idx]->SetMasterProcess(const_cast<G4VProcess*>(procs[idx]));
 
virtual void GeometryHasChanged()=0
 
G4bool ConfirmCoupledTransportation()
 
static G4Geantino * GeantinoDefinition()
 
G4VPhysicalVolume * IsWorldExisting(const G4String &worldName)
 
G4int GetParticleDefinitionID() const 
 
G4Region * defaultRegionForParallelWorld
 
void InitializeLightIons()
 
G4ProductionCuts * GetProductionCuts() const 
 
std::vector< G4Material * >::const_iterator GetMaterialIterator() const 
 
std::map< G4int, G4VPhysicalVolume * > masterWorlds_t
 
virtual void SetupShadowProcess() const 
 
G4Region * GetRegion(const G4String &name, G4bool verbose=true) const 
 
void DumpCutValuesTableIfRequested()
 
const G4String & GetName() const 
 
void SetPhysics(G4VUserPhysicsList *uPhys)
 
void SetParticleDefinitionID(G4int id=-1)
 
void UpdateMaterialList(G4VPhysicalVolume *currentWorld=0)
 
G4VPhysicalVolume * currentWorld
 
void DumpTable(const G4String &particle_name="ALL")
 
G4EventManager * eventManager
 
std::ostringstream G4ExceptionDescription
 
void AddRootLogicalVolume(G4LogicalVolume *lv)
 
void UsedInParallelGeometry(G4bool val=true)
 
G4bool geometryInitialized
 
static G4VVisManager * GetConcreteInstance()
 
static G4AllocatorList * GetAllocatorListIfExist()
 
std::vector< G4VPhysicalVolume * >::iterator GetWorldsIterator()
 
G4double GetProductionCut(G4int index) const 
 
G4VUserRegionInformation * GetUserInformation() const 
 
G4int AddDiscreteProcess(G4VProcess *aProcess, G4int ord=ordDefault)
 
static masterWorlds_t & GetMasterWorlds()
 
void SetReadiness(G4bool val=true)
 
#define G4BestUnit(a, b)
#define G4_USE_G4BESTUNIT_FOR_VERBOSE 1 
 
G4Region * GetRegion() const 
 
G4ParticleDefinition * GetGenericIon() const 
 
G4int numberOfStaticAllocators
 
G4ProcessManager * GetProcessManager() const 
 
static G4RunManagerKernel * GetRunManagerKernel()
 
#define G4MUTEX_INITIALIZER
 
G4bool RunInitialization(G4bool fakeRun=false)
 
const G4String & GetParticleName() const 
 
void WorkerDefineWorldVolume(G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)
 
G4bool IsGeneralIon() const 
 
G4int numberOfParallelWorld
 
static void ConstructParticle()
 
G4ExceptionHandler * defaultExceptionHandler
 
static G4UImanager * GetUIpointer()
 
static G4ParallelWorldProcessStore * GetInstanceIfExist()
 
static G4RegionStore * GetInstance()
 
G4bool physicsInitialized
 
static G4StateManager * GetStateManager()
 
void SetRegion(G4Region *reg)
 
G4VPhysicalVolume * GetWorldPhysical() const 
 
G4ParticleDefinition * GetParticle(G4int index) const 
 
G4IonTable * GetIonTable() const 
 
void DumpCutValuesTable(G4int flag=1)
 
G4GLOB_DLL std::ostream G4cout
 
G4bool SetNewState(G4ApplicationState requestedState)
 
void PhysicsTableUpdated()
 
void reset(G4bool ifSkipIon=true)
 
const G4String & GetName() const 
 
static void InvalidOperationDetection()
 
void DumpRegion(const G4String &rname) const 
 
static G4MTRunManager * GetMasterRunManager()
 
void UsedInMassGeometry(G4bool val=true)
 
static const G4String G4Version
 
static G4LogicalVolumeStore * GetInstance()
 
static const G4String G4Date
 
G4ApplicationState GetCurrentState() const 
 
RMKType runManagerKernelType
 
static G4GeometryManager * GetInstance()
 
G4bool geometryToBeOptimized
 
const G4String & GetProcessName() const 
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
void SetupDefaultRegion()
 
static G4TransportationManager * GetTransportationManager()
 
static void ClearUnitsTable()
 
static G4ProductionCutsTable * GetProductionCutsTable()
 
G4bool BelongsTo(G4VPhysicalVolume *thePhys) const 
 
void UseCoupledTransportation(G4bool vl=true)
 
G4LogicalVolume * GetLogicalVolume() const 
 
void SetWorld(G4VPhysicalVolume *wp)
 
static G4ParticleTable * GetParticleTable()
 
G4PrimaryTransformer * GetPrimaryTransformer() const 
 
G4bool IsInMassGeometry() const 
 
G4FastSimulationManager * GetFastSimulationManager() const 
 
G4VUserPhysicsList * physicsList
 
static G4ThreadLocal G4RunManagerKernel * fRunManagerKernel
 
size_t GetNoWorlds() const 
 
void Destroy(G4int nStat=0, G4int verboseLevel=0)
 
void SetProductionCuts(G4ProductionCuts *cut)
 
void OpenGeometry(G4VPhysicalVolume *vol=0)
 
void UpdateCoupleTable(G4VPhysicalVolume *currentWorld)
 
void CheckRegularGeometry()
 
virtual void ConstructParticle()=0
 
const G4String & GetName() const 
 
G4bool physicsNeedsToBeReBuilt
 
G4bool RegisterWorld(G4VPhysicalVolume *aWorld)
 
size_t GetNumberOfMaterials() const 
 
void SetWorldForTracking(G4VPhysicalVolume *theWorld)
 
void BuildPhysicsTables(G4bool fakeRun)
 
G4ProcessVector * GetAlongStepProcessVector(G4ProcessVectorTypeIndex typ=typeGPIL) const 
 
static G4NavigationHistoryPool * GetInstance()
 
size_t GetNumberOfRootVolumes() const 
 
virtual ~G4RunManagerKernel()
 
void RemoveRootLogicalVolume(G4LogicalVolume *lv, G4bool scan=true)
 
void WorkerUpdateWorldVolume()
 
G4bool IsInParallelGeometry() const 
 
G4PTblDicIterator * GetIterator() const 
 
G4UserLimits * GetUserLimits() const 
 
static const G4double pos
 
G4UserSteppingAction * GetRegionalSteppingAction() const 
 
G4bool CloseGeometry(G4bool pOptimise=true, G4bool verbose=false, G4VPhysicalVolume *vol=0)
 
void PropagateGenericIonID()
 
#define theParticleIterator
 
G4int ApplyCommand(const char *aCommand)
 
G4ProcessVector * GetProcessList() const 
 
G4GLOB_DLL std::ostream G4cerr
 
void DefineWorldVolume(G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)
 
G4String GetStateString(G4ApplicationState aState) const 
 
static G4SDManager * GetSDMpointerIfExist()
 
std::vector< G4LogicalVolume * >::iterator GetRootLogicalVolumeIterator()
 
G4bool geometryNeedsToBeClosed