// M Hentz, 2016 #ifndef RunAction_h #define RunAction_h 1 #include "G4UserRunAction.hh" #include "globals.hh" #include "g4root.hh" #include "G4Event.hh" #include "RunActionMessenger.hh" class DetectorConstruction; class PhysicsList; class PrimaryGeneratorAction; class G4Run; class RunAction : public G4UserRunAction { public: RunAction( DetectorConstruction*, PhysicsList*, PrimaryGeneratorAction* ); ~RunAction(); virtual G4Run* GenerateRun(); virtual void BeginOfRunAction( const G4Run* ); virtual void EndOfRunAction( const G4Run* ); inline void FillLayerEdep( G4int nLayer, G4double edep ) { fLayerEdep[nLayer] += edep; } inline void FillEdep( G4double edep ) { fEdepTot += edep; } inline void AddPrimaryStep() { ++fNbPrimarySteps; } inline G4int GetNbOfPrimaries() { return fNbPrimarySteps; } void SetBufferSize( G4int bufferSize ) { fBufferSize = bufferSize; } void SetDumpMode( G4bool dumpSingle ) { fDumpSingle = dumpSingle; } void SetDetSpacing( G4double detSpacing ) { fDetSpacing = detSpacing; } void SetDetDistance( G4double detDistance ) { fDetDistance = detDistance; } void SetDetPosition( G4double detPosition ) { fDetPosition = detPosition; } private: RunActionMessenger* fRunActionMessenger; G4AnalysisManager* fAnalysisManager; DetectorConstruction* fDetector; PhysicsList* fPhysics; PrimaryGeneratorAction* fKinematic; G4double* fLayerEdep; G4double fEdepTot; G4int fNbPrimarySteps; G4int fBufferSize; G4bool fDumpSingle; G4double fDetSpacing; G4double fDetDistance; G4double fDetPosition; }; #endif