File indexing completed on 2026-09-16 08:29:07
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 "globals.hh"
0034
0035 #include <map>
0036
0037 class DetectorConstruction;
0038 class G4ParticleDefinition;
0039
0040
0041
0042 class Run : public G4Run
0043 {
0044 public:
0045 Run(const DetectorConstruction*);
0046 ~Run() override = default;
0047
0048 void SetPrimary(const G4ParticleDefinition* particle, G4double energy);
0049
0050 void CountTraks0(G4int nt) { fNbOfTraks0 += nt; }
0051 void CountTraks1(G4int nt) { fNbOfTraks1 += nt; }
0052 void CountSteps0(G4int ns) { fNbOfSteps0 += ns; }
0053 void CountSteps1(G4int ns) { fNbOfSteps1 += ns; }
0054 void CountProcesses(const G4String& procName);
0055
0056 void AddEdep(G4double val) { fEdep += val; }
0057 void AddEleak(G4double val){ fEleak += val;}
0058 void AddNIEL(G4double val) { fNIEL += val; }
0059 void AddTrueRange(G4double l)
0060 {
0061 fTrueRange += l;
0062 fTrueRange2 += l * l;
0063 }
0064 void AddProjRange(G4double x)
0065 {
0066 fProjRange += x;
0067 fProjRange2 += x * x;
0068 }
0069 void AddTransvDev(G4double y)
0070 {
0071 fTransvDev += y;
0072 fTransvDev2 += y * y;
0073 }
0074
0075 void Merge(const G4Run*) override;
0076 void EndOfRun();
0077
0078 private:
0079 const DetectorConstruction* fDetector = nullptr;
0080 const G4ParticleDefinition* fParticle = nullptr;
0081 G4double fEkin = 0.;
0082
0083 G4int fNbOfTraks0 = 0, fNbOfTraks1 = 0;
0084 G4int fNbOfSteps0 = 0, fNbOfSteps1 = 0;
0085 G4double fEdep = 0., fEleak = 0., fNIEL = 0.;
0086 G4double fTrueRange = 0., fTrueRange2 = 0.;
0087 G4double fProjRange = 0., fProjRange2 = 0.;
0088 G4double fTransvDev = 0., fTransvDev2 = 0.;
0089
0090 std::map<G4String, G4int> fProcCounter;
0091 };
0092
0093
0094
0095 #endif