File indexing completed on 2025-02-23 09:22:40
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
0030
0031
0032
0033 #ifndef Run_h
0034 #define Run_h 1
0035
0036 #include "G4Run.hh"
0037 #include "G4VProcess.hh"
0038 #include "globals.hh"
0039
0040 #include <map>
0041
0042 class DetectorConstruction;
0043 class G4ParticleDefinition;
0044
0045
0046
0047 class Run : public G4Run
0048 {
0049 public:
0050 Run(DetectorConstruction*);
0051 ~Run() override = default;
0052
0053 public:
0054 void SetPrimary(G4ParticleDefinition* particle, G4double energy);
0055 void CountProcesses(const G4VProcess* process);
0056 void ParticleCount(G4String, G4double, G4double);
0057 void AddEdep(G4double edep);
0058 void AddEflow(G4double eflow);
0059 void ParticleFlux(G4String, G4double);
0060
0061 G4int GetIonId(G4String);
0062
0063 void Merge(const G4Run*) override;
0064 void EndOfRun();
0065
0066 private:
0067 struct ParticleData
0068 {
0069 ParticleData() : fCount(0), fEmean(0.), fEmin(0.), fEmax(0.), fTmean(-1.) {}
0070 ParticleData(G4int count, G4double ekin, G4double emin, G4double emax, G4double meanLife)
0071 : fCount(count), fEmean(ekin), fEmin(emin), fEmax(emax), fTmean(meanLife)
0072 {}
0073 G4int fCount;
0074 G4double fEmean;
0075 G4double fEmin;
0076 G4double fEmax;
0077 G4double fTmean;
0078 };
0079
0080 private:
0081
0082 void Merge(std::map<G4String, ParticleData>& destinationMap,
0083 const std::map<G4String, ParticleData>& sourceMap) const;
0084
0085 static std::map<G4String, G4int> fgIonMap;
0086 static G4int fgIonId;
0087
0088 DetectorConstruction* fDetector = nullptr;
0089 G4ParticleDefinition* fParticle = nullptr;
0090 G4double fEkin = 0.;
0091
0092 G4double fEnergyDeposit = 0., fEnergyDeposit2 = 0.;
0093 G4double fEnergyFlow = 0., fEnergyFlow2 = 0.;
0094 std::map<G4String, G4int> fProcCounter;
0095 std::map<G4String, ParticleData> fParticleDataMap1;
0096 std::map<G4String, ParticleData> fParticleDataMap2;
0097 };
0098
0099
0100
0101 #endif