diff --git a/include/ActionInitialization.hh b/include/ActionInitialization.hh index 158c184..0ceda01 100644 --- a/include/ActionInitialization.hh +++ b/include/ActionInitialization.hh @@ -62,6 +62,10 @@ class ActionInitialization : public G4VUserActionInitialization G4cout << "ActionInitialization: Setting particle species to " << partSpecies << G4endl; } + void setDetectorConstruction(B4::DetectorConstruction* det){ + fDetConstruction = det; + } + private: B4::DetectorConstruction* fDetConstruction = nullptr; mutable B4::PrimaryGeneratorAction * gen = nullptr; diff --git a/src/G4System.cc b/src/G4System.cc index 9b833e1..fa3b4e4 100644 --- a/src/G4System.cc +++ b/src/G4System.cc @@ -36,6 +36,7 @@ void G4System::init(ConstructionWrapper &CW){ // Set mandatory initialization classes // + detConstruction = new B4::DetectorConstruction(&CW); runManager->SetUserInitialization(detConstruction); @@ -43,12 +44,13 @@ void G4System::init(ConstructionWrapper &CW){ if(first_init){ auto physicsList = new FTFP_BERT; runManager->SetUserInitialization(physicsList); - - actionInitialization = new B4a::ActionInitialization(detConstruction); - runManager->SetUserInitialization(actionInitialization); -} - if(! first_init){ + actionInitialization = new B4a::ActionInitialization(detConstruction); + runManager->SetUserInitialization(actionInitialization); + } + else{ + actionInitialization->setDetectorConstruction(detConstruction); + G4RunManager::GetRunManager()->GeometryHasBeenModified(); G4RunManager::GetRunManager()->ReinitializeGeometry(); } @@ -60,8 +62,8 @@ void G4System::init(ConstructionWrapper &CW){ // G4VisExecutive can take a verbosity argument - see /vis/verbose guidance. // G4VisManager* visManager = new G4VisExecutive("Quiet"); - } visManager->Initialize(); + } // Get the pointer to the User Interface manager UImanager = G4UImanager::GetUIpointer();