From 8db81e62eeca2b861b37cf39c07360c786ac0531 Mon Sep 17 00:00:00 2001 From: martinunland Date: Fri, 5 Jul 2024 17:14:04 +0200 Subject: [PATCH] seeds random for multithreading --- common/framework/include/OMSimActionInitialization.hh | 5 +---- common/framework/src/OMSim.cc | 9 +++++---- common/framework/src/OMSimActionInitialization.cc | 10 ++-------- 3 files changed, 8 insertions(+), 16 deletions(-) diff --git a/common/framework/include/OMSimActionInitialization.hh b/common/framework/include/OMSimActionInitialization.hh index 9dcd5620ba..b4533c2a04 100644 --- a/common/framework/include/OMSimActionInitialization.hh +++ b/common/framework/include/OMSimActionInitialization.hh @@ -6,14 +6,11 @@ class OMSimActionInitialization : public G4VUserActionInitialization { public: - OMSimActionInitialization(long pSeed); + OMSimActionInitialization(); virtual ~OMSimActionInitialization(); virtual void BuildForMaster() const; virtual void Build() const; - -private: - long mMasterSeed; }; #endif \ No newline at end of file diff --git a/common/framework/src/OMSim.cc b/common/framework/src/OMSim.cc index cb294bb068..376419b2ca 100644 --- a/common/framework/src/OMSim.cc +++ b/common/framework/src/OMSim.cc @@ -19,7 +19,7 @@ extern std::shared_ptr globalLogger; OMSim::OMSim() : mStartingTime(std::chrono::high_resolution_clock::now()), mGeneralOptions("General options"), -mRunManager(std::make_unique()), +mRunManager(nullptr), mVisManager(std::make_unique()), mNavigator(std::make_unique()) { @@ -155,9 +155,9 @@ void OMSim::initialiseSimulation(OMSimDetectorConstruction* pDetectorConstructio //CLHEP::HepRandom::setTheEngine(new CLHEP::RanluxEngine(lArgs.get("seed"), 3)); //CLHEP::HepRandom::setTheEngine(new CLHEP::MixMaxRng(lArgs.get("seed"))); - //G4Random::setTheEngine(new CLHEP::RanluxEngine(lArgs.get("seed"), 3)); + G4Random::setTheEngine(new CLHEP::RanluxEngine(lArgs.get("seed"), 3)); - + mRunManager = std::make_unique(); mRunManager->SetUserInitialization(pDetectorConstruction); mPhysics = std::make_unique(); @@ -166,7 +166,7 @@ void OMSim::initialiseSimulation(OMSimDetectorConstruction* pDetectorConstructio mVisManager->Initialize(); - OMSimActionInitialization* actionInitialization = new OMSimActionInitialization(lArgs.get("seed")); + OMSimActionInitialization* actionInitialization = new OMSimActionInitialization(); mRunManager->SetUserInitialization(actionInitialization); // Set number of threads @@ -182,6 +182,7 @@ void OMSim::initialiseSimulation(OMSimDetectorConstruction* pDetectorConstructio mNavigator.get()->LocateGlobalPointAndSetup(G4ThreeVector(0., 0., 0.)); mHistory = std::unique_ptr(mNavigator->CreateTouchableHistory()); + } /** diff --git a/common/framework/src/OMSimActionInitialization.cc b/common/framework/src/OMSimActionInitialization.cc index 117a08e6aa..c82ea57c9e 100644 --- a/common/framework/src/OMSimActionInitialization.cc +++ b/common/framework/src/OMSimActionInitialization.cc @@ -6,8 +6,8 @@ #include "OMSimSteppingAction.hh" #include -OMSimActionInitialization::OMSimActionInitialization(long pSeed) - : G4VUserActionInitialization(), mMasterSeed(pSeed) +OMSimActionInitialization::OMSimActionInitialization() + : G4VUserActionInitialization() { } @@ -27,10 +27,4 @@ void OMSimActionInitialization::Build() const SetUserAction(new OMSimEventAction); SetUserAction(new OMSimTrackingAction); SetUserAction(new OMSimSteppingAction); - const long lPrime = 2147483647; - long lSeed = (mMasterSeed + (G4Threading::G4GetThreadId()+1) * lPrime); - lSeed = lSeed % std::numeric_limits::max(); - log_debug("Random engine of thread {} was assigned seed {}", G4Threading::G4GetThreadId(), lSeed); - G4Random::setTheSeed(lSeed); - G4Random::setTheEngine(new CLHEP::RanluxEngine); } \ No newline at end of file