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 ()
 
G4EventManagerGetEventManager () const
 
G4StackManagerGetStackManager () const
 
G4TrackingManagerGetTrackingManager () const
 
void SetPrimaryTransformer (G4PrimaryTransformer *pt)
 
G4PrimaryTransformerGetPrimaryTransformer () const
 
const G4StringGetVersionString () const
 
void SetVerboseLevel (G4int vl)
 
void SetGeometryToBeOptimized (G4bool vl)
 
G4int GetNumberOfParallelWorld () const
 
void SetNumberOfParallelWorld (G4int i)
 
G4VUserPhysicsListGetPhysicsList () const
 
G4VPhysicalVolumeGetCurrentWorld () 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 G4RunManagerKernelGetRunManagerKernel ()
 
- Protected Attributes inherited from G4RunManagerKernel
RMKType runManagerKernelType
 
G4RegiondefaultRegion
 
G4RegiondefaultRegionForParallelWorld
 
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: