File indexing completed on 2026-04-04 07:52:23
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 "DetectorConstruction.hh"
0033
0034 #include "G4Run.hh"
0035 #include "globals.hh"
0036
0037 #include <map>
0038
0039 class DetectorConstruction;
0040 class G4ParticleDefinition;
0041 class G4Track;
0042
0043
0044
0045 class Run : public G4Run
0046 {
0047 public:
0048 Run(DetectorConstruction*);
0049 ~Run() override = default;
0050
0051 public:
0052 void SetPrimary(G4ParticleDefinition* particle, G4double energy);
0053
0054 void FillPerEvent(G4int, G4double, G4double);
0055
0056 void SumEnergies(G4double edeptot, G4double eleak);
0057 void SumEnergyFlow(G4int plane, G4double Eflow);
0058 void SumLateralEleak(G4int cell, G4double Eflow);
0059 void AddChargedStep();
0060 void AddNeutralStep();
0061 void AddSecondaryTrack(const G4Track*);
0062
0063 void SetEdepAndRMS(G4int, G4double, G4double, G4double);
0064 void SetApplyLimit(G4bool);
0065
0066 void Merge(const G4Run*) override;
0067 void EndOfRun();
0068
0069 private:
0070 DetectorConstruction* fDetector = nullptr;
0071 G4ParticleDefinition* fParticle = nullptr;
0072 G4double fEkin = 0.;
0073
0074 G4double fSumEAbs[kMaxAbsor], fSum2EAbs[kMaxAbsor];
0075 G4double fSumLAbs[kMaxAbsor], fSum2LAbs[kMaxAbsor];
0076
0077 G4double fEdepTot = 0., fEdepTot2 = 0.;
0078 G4double fEleakTot = 0., fEleakTot2 = 0.;
0079 G4double fEtotal = 0., fEtotal2 = 0.;
0080
0081 std::vector<G4double> fEnergyFlow;
0082 std::vector<G4double> fLateralEleak;
0083 std::vector<G4double> fEnergyDeposit[kMaxAbsor];
0084
0085 G4double fChargedStep = 0.;
0086 G4double fNeutralStep = 0.;
0087
0088 G4int fN_gamma = 0;
0089 G4int fN_elec = 0;
0090 G4int fN_pos = 0;
0091
0092 G4double fEdeptrue[kMaxAbsor];
0093 G4double fRmstrue[kMaxAbsor];
0094 G4double fLimittrue[kMaxAbsor];
0095 G4bool fApplyLimit = false;
0096 };
0097
0098
0099
0100 #endif