File indexing completed on 2026-04-04 07:53:27
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef RunAction_h
0030 #define RunAction_h 1
0031
0032 #include "G4AnalysisManager.hh"
0033 #include "G4UserRunAction.hh"
0034 #include "G4VAccumulable.hh"
0035 #include "globals.hh"
0036
0037
0038
0039 class DetectorConstruction;
0040 class PrimaryGeneratorAction;
0041 class G4Run;
0042 class G4ParticleDefinition;
0043
0044
0045
0046 class RunAction : public G4UserRunAction
0047 {
0048 class ParticleStatistics : public G4VAccumulable
0049 {
0050 public:
0051 ParticleStatistics(const G4String& name);
0052 ~ParticleStatistics();
0053 void EventFinished();
0054 void FillData(G4double kinEnergy, G4double costheta, G4double longitudinalPolarization);
0055 void PrintResults(G4int totalNumberOfEvents);
0056
0057 void Reset() override;
0058 void Merge(const G4VAccumulable& other) override;
0059
0060 private:
0061 G4int fCurrentNumber;
0062 G4int fTotalNumber, fTotalNumber2;
0063 G4double fSumEnergy, fSumEnergy2;
0064 G4double fSumPolarization, fSumPolarization2;
0065 G4double fSumCosTheta, fSumCosTheta2;
0066 };
0067
0068 public:
0069 RunAction(DetectorConstruction*, PrimaryGeneratorAction* = nullptr);
0070 virtual ~RunAction();
0071
0072 virtual void BeginOfRunAction(const G4Run*);
0073 virtual void EndOfRunAction(const G4Run*);
0074
0075 void CountProcesses(G4String&);
0076
0077 void FillData(const G4ParticleDefinition* particle, G4double kinEnergy, G4double costheta,
0078 G4double phi, G4double longitudinalPolarization);
0079
0080 void EventFinished();
0081
0082 private:
0083 void BookHisto();
0084 void SaveHisto(G4int nevents);
0085
0086 const G4ParticleDefinition* fGamma;
0087 const G4ParticleDefinition* fElectron;
0088 const G4ParticleDefinition* fPositron;
0089
0090 DetectorConstruction* fDetector;
0091 PrimaryGeneratorAction* fPrimary;
0092
0093 G4AnalysisManager* fAnalysisManager;
0094
0095 G4int fTotalEventCount;
0096 };
0097
0098
0099
0100 #endif