File indexing completed on 2026-09-16 08:30: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 OpNoviceRun_h
0030 #define OpNoviceRun_h 1
0031
0032 #include "G4Run.hh"
0033
0034 class G4ParticleDefinition;
0035
0036
0037
0038 class OpNoviceRun : public G4Run
0039 {
0040 public:
0041 OpNoviceRun() = default;
0042 ~OpNoviceRun() override = default;
0043
0044 void SetPrimary(G4ParticleDefinition* particle, G4double energy);
0045
0046 void AddCerenkov(G4double n)
0047 {
0048 fCerenkovCounter += n;
0049 fCerenkov2 += n * n;
0050 };
0051 void AddScintillation(G4double n)
0052 {
0053 fScintillationCounter += n;
0054 fScintillation2 += n * n;
0055 };
0056 void AddRayleigh(G4double n)
0057 {
0058 fRayleighCounter += n;
0059 fRayleigh2 += n * n;
0060 };
0061 void AddAbsorption(G4double n)
0062 {
0063 fAbsorptionCounter += n;
0064 fAbsorption2 += n * n;
0065 };
0066 void AddMie(G4double n)
0067 {
0068 fMieCounter += n;
0069 fMie2 += n * n;
0070 };
0071 void AddBoundary(G4double n)
0072 {
0073 fBoundaryCounter += n;
0074 fBoundary2 += n * n;
0075 };
0076
0077 void Merge(const G4Run*) override;
0078 void EndOfRun();
0079
0080 private:
0081 G4ParticleDefinition* fParticle = nullptr;
0082
0083 G4double fCerenkovCounter = 0.;
0084 G4double fCerenkov2 = 0.;
0085 G4double fScintillationCounter = 0.;
0086 G4double fScintillation2 = 0.;
0087 G4double fRayleighCounter = 0.;
0088 G4double fRayleigh2 = 0.;
0089 G4double fAbsorptionCounter = 0.;
0090 G4double fAbsorption2 = 0.;
0091 G4double fMieCounter = 0.;
0092 G4double fMie2 = 0.;
0093 G4double fBoundaryCounter = 0.;
0094 G4double fBoundary2 = 0.;
0095 G4double fEnergy = -1.;
0096 };
0097
0098 #endif