From d3fa0d60cb93245ba03953f862df55f066b8045b Mon Sep 17 00:00:00 2001 From: Jan Kieseler Date: Sat, 9 Sep 2023 02:07:05 +0200 Subject: [PATCH] fixes --- include/ActionInitialization.hh | 10 +++++++--- include/PrimaryGeneratorAction.hh | 6 +++--- src/ActionInitialization.cc | 2 +- src/SystemBuilder.cc | 4 ++-- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/include/ActionInitialization.hh b/include/ActionInitialization.hh index 5f12f6b..158c184 100644 --- a/include/ActionInitialization.hh +++ b/include/ActionInitialization.hh @@ -53,14 +53,18 @@ class ActionInitialization : public G4VUserActionInitialization void Build() const override; void setGeneratorProperties(G4double minEnergy, G4double maxEnergy, G4String partSpecies){ - this->minEnergy = minEnergy; - this->maxEnergy = maxEnergy; - this->partSpecies = partSpecies; + if(gen==nullptr){ + throw std::runtime_error("PrimaryGeneratorAction not found"); + } + gen->setMinPartEnergy(minEnergy); + gen->setMaxPartEnergy(maxEnergy); + gen->setPartSpecies(partSpecies); G4cout << "ActionInitialization: Setting particle species to " << partSpecies << G4endl; } private: B4::DetectorConstruction* fDetConstruction = nullptr; + mutable B4::PrimaryGeneratorAction * gen = nullptr; G4double minEnergy=1000; G4double maxEnergy=1000; G4String partSpecies="e-"; diff --git a/include/PrimaryGeneratorAction.hh b/include/PrimaryGeneratorAction.hh index e681905..9c279ae 100644 --- a/include/PrimaryGeneratorAction.hh +++ b/include/PrimaryGeneratorAction.hh @@ -90,9 +90,9 @@ public: private: G4ParticleGun* fParticleGun = nullptr; // G4 particle gun G4double partEnergy; - G4double minPartEnergy; //MeV - G4double maxPartEnergy; - G4String partSpecies; + G4double minPartEnergy=100; //MeV + G4double maxPartEnergy=100; + G4String partSpecies="e-"; }; diff --git a/src/ActionInitialization.cc b/src/ActionInitialization.cc index b38ec20..d3bec8b 100644 --- a/src/ActionInitialization.cc +++ b/src/ActionInitialization.cc @@ -57,7 +57,7 @@ void ActionInitialization::BuildForMaster() const void ActionInitialization::Build() const { - auto gen = new PrimaryGeneratorAction; + gen = new PrimaryGeneratorAction; gen->setMinPartEnergy(minEnergy); gen->setMaxPartEnergy(maxEnergy); gen->setPartSpecies(partSpecies); diff --git a/src/SystemBuilder.cc b/src/SystemBuilder.cc index 518cf93..111270c 100644 --- a/src/SystemBuilder.cc +++ b/src/SystemBuilder.cc @@ -29,7 +29,7 @@ void SystemBuilder::init(ConstructionWrapper &CW, bool gui){ actionInitialization = new B4a::ActionInitialization(detConstruction); runManager->SetUserInitialization(actionInitialization); - actionInitialization->setGeneratorProperties(100, 10000, "e-"); + //actionInitialization->setGeneratorProperties(100, 10000, "e-"); // Initialize visualization // @@ -62,7 +62,7 @@ void SystemBuilder::run_gui(){ void SystemBuilder::run_batch(int nEvents,const std::string& partSpecies, double minEnergy, double maxEnergy){ G4String partSpec = partSpecies; G4cout << "running with particle species " << partSpec << G4endl; - actionInitialization->setGeneratorProperties(minEnergy, maxEnergy, partSpec); UImanager->ApplyCommand("/run/initialize"); + actionInitialization->setGeneratorProperties(minEnergy, maxEnergy, partSpec); runManager->BeamOn(nEvents); }