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