diff --git a/include/ASCIIPrimaryGenerator.hh b/include/ASCIIPrimaryGenerator.hh index c4403ae4634f1516655660297ed14153869e4b87..4bb8a9b28bc8914dc5d439dc7be70bd60bc27d73 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 ca663a090eb39581c584264058fa728f010aad92..4569e62f37ba6a1c774f1fdfd57ca56e9fe372d7 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 603ada7321c770c24d16850deeec0ad5ab5b63da..e5850e6d471558120c345418c01943c514f22acd 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 4675a885a6001ed97c85aa23149b08eeec4506be..e1257ff8101ccdd7596ae499c2867e1272b0662b 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 4311fcf5c2485d82dc69dca21e43456e57fc0904..96f77dcfe514767d95573a377b345dbe3ba11387 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"