From 0289712866904502fab418943a433b3d933ee941 Mon Sep 17 00:00:00 2001 From: Jan Kieseler Date: Wed, 20 Sep 2023 23:45:56 +0200 Subject: [PATCH] multi geometry --- include/ActionInitialization.hh | 4 ++++ src/G4System.cc | 14 ++++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) 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();