From 02c1d0cefdf2dd579589ff49bd6a573ed2f2f4a3 Mon Sep 17 00:00:00 2001 From: Chad Lantz <clantz2@illinois.edu> Date: Fri, 20 Mar 2020 19:32:13 -0500 Subject: [PATCH] Set the run manager to automatically complete all events in ASCII input file if selected --- include/ASCIIPrimaryGenerator.hh | 7 ++++--- include/PrimaryGeneratorAction.hh | 5 +++-- lightGuide.cc | 10 ++++++++-- run1.mac | 2 +- src/ASCIIPrimaryGenerator.cc | 1 + 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/include/ASCIIPrimaryGenerator.hh b/include/ASCIIPrimaryGenerator.hh index c4403ae..4bb8a9b 100644 --- a/include/ASCIIPrimaryGenerator.hh +++ b/include/ASCIIPrimaryGenerator.hh @@ -50,8 +50,9 @@ class ASCIIPrimaryGenerator : public G4VPrimaryGenerator ASCIIPrimaryGenerator(); ~ASCIIPrimaryGenerator(); - virtual void SetInputFile(G4String _name); - virtual void GetNextEvent( ); + virtual void SetInputFile(G4String _name); + virtual void GetNextEvent( ); + inline G4int GetnEvents(){return fnEvents;} public: virtual void GeneratePrimaryVertex(G4Event*); @@ -61,7 +62,7 @@ class ASCIIPrimaryGenerator : public G4VPrimaryGenerator std::vector< G4ThreeVector >* fMomentumVec; std::vector< G4double >* fEnergyVec; G4int fEventNo; - G4int fnEvents; + G4int fnEvents = 0; std::ifstream fInputFile; }; diff --git a/include/PrimaryGeneratorAction.hh b/include/PrimaryGeneratorAction.hh index ca663a0..4569e62 100644 --- a/include/PrimaryGeneratorAction.hh +++ b/include/PrimaryGeneratorAction.hh @@ -46,8 +46,9 @@ class PrimaryGeneratorAction : public G4VUserPrimaryGeneratorAction virtual ~PrimaryGeneratorAction(); public: - virtual void GeneratePrimaries(G4Event*); - virtual void SetInputFile(G4String _name); + virtual void GeneratePrimaries(G4Event*); + virtual void SetInputFile(G4String _name); + inline G4int GetnEvents(){return fASCIIParticleGun->GetnEvents();} private: G4GeneralParticleSource* fParticleGun; diff --git a/lightGuide.cc b/lightGuide.cc index 603ada7..e5850e6 100644 --- a/lightGuide.cc +++ b/lightGuide.cc @@ -45,6 +45,7 @@ #include "DetectorConstruction.hh" #include "ActionInitialization.hh" +#include "PrimaryGeneratorAction.hh" #include "G4VisExecutive.hh" #include "G4UIExecutive.hh" @@ -124,9 +125,9 @@ int main(int argc,char** argv) // Set mandatory initialization classes // // Detector construction - runManager-> SetUserInitialization(new DetectorConstruction()); + runManager->SetUserInitialization(new DetectorConstruction()); // Physics list - runManager-> SetUserInitialization(new PhysicsList()); + runManager->SetUserInitialization(new PhysicsList()); // User action initialization runManager->SetUserInitialization(new ActionInitialization(output)); @@ -148,6 +149,11 @@ int main(int argc,char** argv) // Batch mode G4String command = "/control/execute "; UImanager->ApplyCommand(command+macro); + PrimaryGeneratorAction* pga = (PrimaryGeneratorAction*)runManager->GetUserPrimaryGeneratorAction(); + G4int nEvents = pga->GetnEvents(); + if( nEvents > 0){ + runManager->BeamOn(nEvents); + } } else // Define UI session for interactive mode { diff --git a/run1.mac b/run1.mac index 4675a88..e1257ff 100644 --- a/run1.mac +++ b/run1.mac @@ -31,6 +31,6 @@ ############################################################## ############################################################## # number of events -/run/beamOn 10 +#/run/beamOn 1 ############################################################## ############################################################## diff --git a/src/ASCIIPrimaryGenerator.cc b/src/ASCIIPrimaryGenerator.cc index 4311fcf..96f77dc 100644 --- a/src/ASCIIPrimaryGenerator.cc +++ b/src/ASCIIPrimaryGenerator.cc @@ -34,6 +34,7 @@ #include "ASCIIPrimaryGenerator.hh" #include "G4Event.hh" +#include "G4RunManager.hh" #include "G4ParticleTable.hh" #include "G4ParticleDefinition.hh" #include "G4PrimaryParticle.hh" -- GitLab