Geant4.10
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions
G4WorkerRunManagerKernel Class Reference

#include <G4WorkerRunManagerKernel.hh>

Inheritance diagram for G4WorkerRunManagerKernel:
G4RunManagerKernel

Public Member Functions

 G4WorkerRunManagerKernel ()
 
virtual ~G4WorkerRunManagerKernel ()
 
- Public Member Functions inherited from G4RunManagerKernel
 G4RunManagerKernel ()
 
virtual ~G4RunManagerKernel ()
 
void DefineWorldVolume (G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)
 
void WorkerDefineWorldVolume (G4VPhysicalVolume *worldVol, G4bool topologyIsChanged=true)
 
void SetPhysics (G4VUserPhysicsList *uPhys)
 
void InitializePhysics ()
 
G4bool RunInitialization (G4bool fakeRun=false)
 
void RunTermination ()
 
void WorkerUpdateWorldVolume ()
 
void UpdateRegion ()
 
void DumpRegion (const G4String &rname) const
 
void DumpRegion (G4Region *region=0) const
 
void GeometryHasBeenModified ()
 
void PhysicsHasBeenModified ()
 
G4EventManager * GetEventManager () const
 
G4StackManager * GetStackManager () const
 
G4TrackingManager * GetTrackingManager () const
 
void SetPrimaryTransformer (G4PrimaryTransformer *pt)
 
G4PrimaryTransformer * GetPrimaryTransformer () const
 
const G4String & GetVersionString () const
 
void SetVerboseLevel (G4int vl)
 
void SetGeometryToBeOptimized (G4bool vl)
 
G4int GetNumberOfParallelWorld () const
 
void SetNumberOfParallelWorld (G4int i)
 
G4VUserPhysicsList * GetPhysicsList () const
 
G4VPhysicalVolume * GetCurrentWorld () const
 
G4int GetNumberOfStaticAllocators () const
 

Protected Member Functions

void SetupShadowProcess () const
 
- Protected Member Functions inherited from G4RunManagerKernel
 G4RunManagerKernel (RMKType rmkType)
 
void SetupDefaultRegion ()
 
void SetupPhysics ()
 
void ResetNavigator ()
 
void BuildPhysicsTables (G4bool fakeRun)
 
void CheckRegions ()
 

Additional Inherited Members

- Public Types inherited from G4RunManagerKernel
enum  RMKType { sequentialRMK, masterRMK, workerRMK }
 
- Static Public Member Functions inherited from G4RunManagerKernel
static G4RunManagerKernel * GetRunManagerKernel ()
 
- Protected Attributes inherited from G4RunManagerKernel
RMKType runManagerKernelType
 
G4Region * defaultRegion
 
G4Region * defaultRegionForParallelWorld
 
G4bool geometryNeedsToBeClosed
 

Detailed Description

Definition at line 59 of file G4WorkerRunManagerKernel.hh.

Constructor & Destructor Documentation

G4WorkerRunManagerKernel::G4WorkerRunManagerKernel ( )

Definition at line 29 of file G4WorkerRunManagerKernel.cc.

References FatalException, and G4Exception().

30 {
31  //This version of the constructor should never be called in sequential mode!
32 #ifndef G4MULTITHREADED
34  msg<<"Geant4 code is compiled without multi-threading support (-DG4MULTITHREADED is set to off).";
35  msg<<" This type of RunManager can only be used in mult-threaded applications.";
36  G4Exception("G4RunManagerKernel::G4RunManagerKernel()","Run0035",FatalException,msg);
37 #endif
38 
39 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4WorkerRunManagerKernel::~G4WorkerRunManagerKernel ( )
virtual

Definition at line 41 of file G4WorkerRunManagerKernel.cc.

42 {
43 }

Member Function Documentation

void G4WorkerRunManagerKernel::SetupShadowProcess ( ) const
protectedvirtual

Reimplemented from G4RunManagerKernel.

Definition at line 45 of file G4WorkerRunManagerKernel.cc.

References FatalException, G4cout, G4endl, G4Exception(), G4ParticleTable::GetIterator(), G4ParticleDefinition::GetMasterProcessManager(), G4ParticleDefinition::GetParticleName(), G4ParticleTable::GetParticleTable(), G4ProcessManager::GetProcessList(), G4ParticleDefinition::GetProcessManager(), G4ParticleTableIterator< K, V >::reset(), G4ProcessVector::size(), theParticleIterator, and G4ParticleTableIterator< K, V >::value().

46 {
47  //Master thread has created processes and setup a pointer
48  //to the master process, get it and copy it in this instance
51  theParticleIterator->reset();
52  //loop on particles and get process manager from there list of processes
53  while((*theParticleIterator)())
54  {
55  G4ParticleDefinition* pd = theParticleIterator->value();
58  if ( !pm || !pmM )
59  {
60  G4Exception("G4WorkerRunManagerKernel::SetupShadowProcess()","Run11001",FatalException,
61  "Process manager or process manager shadow to master are not set.");
62  }
63  G4ProcessVector& procs = *(pm->GetProcessList());
64  G4ProcessVector& procsM= *(pmM->GetProcessList());
65  if( procs.size() != procsM.size() )
66  {
67  G4cout << "G4WorkerRunManagerKernel::SetupShadowProcess() for particle <"
68  << pd->GetParticleName() << ">" << G4endl;
69  G4cout << " ProcessManager : " << pm << " ProcessManagerShadow : " << pmM << G4endl;
70  for(G4int iv1=0;iv1<procs.size();iv1++)
71  { G4cout << " " << iv1 << " - " << procs[iv1]->GetProcessName() << G4endl; }
72  G4cout << "--------------------------------------------------------------" << G4endl;
73  for(G4int iv2=0;iv2<procsM.size();iv2++)
74  { G4cout << " " << iv2 << " - " << procsM[iv2]->GetProcessName() << G4endl; }
75  G4cout << "--------------------------------------------------------------" << G4endl;
77  msg<<" Size of G4ProcessVector is inconsistent between master and worker threads ";
78  msg<<" for the particle <"<<pd->GetParticleName()<<">. \n";
79  msg<<" size of G4ProcessVector for worker thread is "<<procs.size();
80  msg<<" while masther thread is "<<procsM.size()<<".";
81  G4Exception("G4WorkerRunManagerKernel::SetupShadowProcess()","Run11002",FatalException,msg);
82  }
83  //To each process add the reference to the same
84  //process from master. Note that we rely on
85  //processes being in the correct order!
86  // We could use some checking using process name or type
87  for ( G4int idx = 0 ; idx < procs.size() ; ++idx )
88  {
89  procs[idx]->SetMasterProcess(procsM[idx]);
90  }
91  }
92 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4ProcessManager * GetProcessManager() const
int G4int
Definition: G4Types.hh:78
const G4String & GetParticleName() const
G4GLOB_DLL std::ostream G4cout
void reset(G4bool ifSkipIon=true)
G4ProcessManager * GetMasterProcessManager() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4int size() const
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
G4PTblDicIterator * GetIterator() const
#define theParticleIterator
G4ProcessVector * GetProcessList() const

The documentation for this class was generated from the following files: