Geant4-11
Public Member Functions
G4UserTaskThreadInitialization Class Reference

#include <G4UserTaskThreadInitialization.hh>

Inheritance diagram for G4UserTaskThreadInitialization:
G4UserWorkerThreadInitialization

Public Member Functions

virtual G4ThreadCreateAndStartWorker (G4WorkerThread *workerThreadContext)
 
virtual G4WorkerRunManagerCreateWorkerRunManager () const
 
 G4UserTaskThreadInitialization ()
 
virtual void JoinWorker (G4Thread *aThread)
 
virtual void SetupRNGEngine (const CLHEP::HepRandomEngine *aRNGEngine) const
 
virtual ~G4UserTaskThreadInitialization ()
 

Detailed Description

Definition at line 50 of file G4UserTaskThreadInitialization.hh.

Constructor & Destructor Documentation

◆ G4UserTaskThreadInitialization()

G4UserTaskThreadInitialization::G4UserTaskThreadInitialization ( )

Definition at line 68 of file G4UserTaskThreadInitialization.cc.

68{}

◆ ~G4UserTaskThreadInitialization()

G4UserTaskThreadInitialization::~G4UserTaskThreadInitialization ( )
virtual

Definition at line 72 of file G4UserTaskThreadInitialization.cc.

72{}

Member Function Documentation

◆ CreateAndStartWorker()

G4Thread * G4UserTaskThreadInitialization::CreateAndStartWorker ( G4WorkerThread workerThreadContext)
virtual

Reimplemented from G4UserWorkerThreadInitialization.

Definition at line 48 of file G4UserTaskThreadInitialization.cc.

49{
50 // Note: this method is called by G4MTRunManager, here we are still sequential
51 // Create a new thread/worker structure
52 return nullptr;
53}

◆ CreateWorkerRunManager()

G4WorkerRunManager * G4UserTaskThreadInitialization::CreateWorkerRunManager ( ) const
virtual

Reimplemented from G4UserWorkerThreadInitialization.

Definition at line 124 of file G4UserTaskThreadInitialization.cc.

◆ JoinWorker()

void G4UserTaskThreadInitialization::JoinWorker ( G4Thread aThread)
virtual

Reimplemented from G4UserWorkerThreadInitialization.

Definition at line 58 of file G4UserTaskThreadInitialization.cc.

59{
60 if(aThread)
61 {
62 G4THREADJOIN(*aThread);
63 }
64}
#define G4THREADJOIN(worker)
Definition: G4Threading.hh:259

References G4THREADJOIN.

◆ SetupRNGEngine()

void G4UserTaskThreadInitialization::SetupRNGEngine ( const CLHEP::HepRandomEngine aRNGEngine) const
virtual

Reimplemented from G4UserWorkerThreadInitialization.

Definition at line 76 of file G4UserTaskThreadInitialization.cc.

78{
80 // No default available, let's create the instance of random stuff
81 // A Call to this just forces the creation to defaults
82 G4Random::getTheEngine();
83 // Poor man's solution to check which RNG Engine is used in master thread
84 CLHEP::HepRandomEngine* retRNG = nullptr;
85
86 // Need to make these calls thread safe
87 if(dynamic_cast<const CLHEP::HepJamesRandom*>(aNewRNG))
88 retRNG = new CLHEP::HepJamesRandom;
89 if(dynamic_cast<const CLHEP::MixMaxRng*>(aNewRNG))
90 retRNG = new CLHEP::MixMaxRng;
91 if(dynamic_cast<const CLHEP::RanecuEngine*>(aNewRNG))
92 retRNG = new CLHEP::RanecuEngine;
93 if(dynamic_cast<const CLHEP::Ranlux64Engine*>(aNewRNG))
94 retRNG = new CLHEP::Ranlux64Engine;
95 if(dynamic_cast<const CLHEP::RanluxppEngine*>(aNewRNG))
96 retRNG = new CLHEP::RanluxppEngine;
97 if(dynamic_cast<const CLHEP::MTwistEngine*>(aNewRNG))
98 retRNG = new CLHEP::MTwistEngine;
99 if(dynamic_cast<const CLHEP::DualRand*>(aNewRNG))
100 retRNG = new CLHEP::DualRand;
101 if(dynamic_cast<const CLHEP::RanluxEngine*>(aNewRNG))
102 retRNG = new CLHEP::RanluxEngine;
103 if(dynamic_cast<const CLHEP::RanshiEngine*>(aNewRNG))
104 retRNG = new CLHEP::RanshiEngine;
105
106 if(retRNG != nullptr)
107 G4Random::setTheEngine(retRNG);
108 else
109 {
110 // Does a new method, such as aNewRng->newEngine() exist to clone it ?
112 msg << " Unknown type of RNG Engine - " << G4endl
113 << " Can cope only with HepJamesRandom, MixMaxRng, Ranecu, Ranlux64,"
114 << " Ranlux++, MTwistEngine, DualRand, Ranlux or Ranshi." << G4endl
115 << " Cannot clone this type of RNG engine, as required for this thread"
116 << G4endl << " Aborting... " << G4endl;
117 G4Exception("G4UserTaskInitializition::SetupRNGEngine()", "Run0122",
118 FatalException, msg);
119 }
120}
@ FatalException
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
Definition: G4Exception.cc:35
std::ostringstream G4ExceptionDescription
Definition: G4Exception.hh:40
#define G4endl
Definition: G4ios.hh:57

References FatalException, G4endl, G4Exception(), and anonymous_namespace{G4UserTaskThreadInitialization.cc}::rngCreateMutex.


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