File indexing completed on 2026-04-01 07:51:28
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 Run_h
0030 #define Run_h 1
0031
0032 #include "G4Run.hh"
0033 #include "G4VProcess.hh"
0034 #include "globals.hh"
0035
0036 #include <map>
0037
0038 class DetectorConstruction;
0039 class G4ParticleDefinition;
0040
0041
0042
0043 class Run : public G4Run
0044 {
0045 public:
0046 Run(DetectorConstruction*);
0047 ~Run() override = default;
0048
0049 public:
0050 void SetPrimary(G4ParticleDefinition* particle, G4double energy);
0051 void CountProcesses(const G4VProcess* process, G4int iVol);
0052 void ParticleCount(G4String, G4double, G4int);
0053 void AddEdep(G4double edep1, G4double edep2);
0054
0055 void Merge(const G4Run*) override;
0056 void EndOfRun();
0057 void WriteActivity(G4int);
0058
0059 private:
0060 struct ParticleData
0061 {
0062 ParticleData() : fCount(0), fEmean(0.), fEmin(0.), fEmax(0.) {}
0063 ParticleData(G4int count, G4double ekin, G4double emin, G4double emax)
0064 : fCount(count), fEmean(ekin), fEmin(emin), fEmax(emax)
0065 {}
0066 G4int fCount;
0067 G4double fEmean;
0068 G4double fEmin;
0069 G4double fEmax;
0070 };
0071
0072 private:
0073 DetectorConstruction* fDetector = nullptr;
0074 G4ParticleDefinition* fParticle = nullptr;
0075 G4double fEkin = 0.;
0076
0077 G4double fEdepTarget = 0., fEdepTarget2 = 0.;
0078 G4double fEdepDetect = 0., fEdepDetect2 = 0.;
0079
0080 std::map<G4String, G4int> fProcCounter1;
0081 std::map<G4String, G4int> fProcCounter2;
0082 std::map<G4String, ParticleData> fParticleDataMap1;
0083 std::map<G4String, ParticleData> fParticleDataMap2;
0084 };
0085
0086
0087
0088 #endif