From a6dfa6079ce201b63af93fa85271770cec250328 Mon Sep 17 00:00:00 2001 From: Jan Kieseler Date: Wed, 20 Sep 2023 20:29:25 +0000 Subject: [PATCH] attempt to make re-init possible --- src/G4System.cc | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/src/G4System.cc b/src/G4System.cc index fbb83cc..9d05e19 100644 --- a/src/G4System.cc +++ b/src/G4System.cc @@ -5,11 +5,25 @@ void G4System::init(ConstructionWrapper &CW, bool gui){ char* argv[]={(char*)"dummy"}; - // Construct the default run manager - // - runManager = - G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default); - runManager->SetNumberOfThreads(20);//more doesn't make sense + bool first_init=true; + + if(runManager == nullptr){ + // Construct the default run manager + // + runManager = + G4RunManagerFactory::CreateRunManager(G4RunManagerType::Default); + runManager->SetNumberOfThreads(20);//more doesn't make sense + } + else{ + // Abort the current run + runManager->AbortRun(true); + + // Clear any pending events + runManager->Clear(); + first_init = false; + + } + G4String session; ui = nullptr; @@ -29,7 +43,12 @@ void G4System::init(ConstructionWrapper &CW, bool gui){ actionInitialization = new B4a::ActionInitialization(detConstruction); runManager->SetUserInitialization(actionInitialization); - //actionInitialization->setGeneratorProperties(100, 10000, "e-"); + if(! first_init){ + runManager->GeometryHasBeenModified(); + runManager->ReinitializeGeometry(); + runManager->PhysicsHasBeenModified(); + runManager->ReinitializePhysics(); + } // Initialize visualization //