File indexing completed on 2025-02-23 09:22: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
0030
0031
0032 #ifndef Run_h
0033 #define Run_h 1
0034
0035 #include "G4OpBoundaryProcess.hh"
0036 #include "G4Run.hh"
0037
0038 class G4ParticleDefinition;
0039
0040
0041 class Run : public G4Run
0042 {
0043 public:
0044 Run();
0045 ~Run() override = default;
0046
0047 void SetPrimary(G4ParticleDefinition* particle, G4double energy, G4bool polarized,
0048 G4double polarization);
0049
0050
0051 void AddCerenkovEnergy(G4double en) { fCerenkovEnergy += en; }
0052 void AddScintillationEnergy(G4double en) { fScintEnergy += en; }
0053 void AddWLSAbsorptionEnergy(G4double en) { fWLSAbsorptionEnergy += en; }
0054 void AddWLSEmissionEnergy(G4double en) { fWLSEmissionEnergy += en; }
0055 void AddWLS2AbsorptionEnergy(G4double en) { fWLS2AbsorptionEnergy += en; }
0056 void AddWLS2EmissionEnergy(G4double en) { fWLS2EmissionEnergy += en; }
0057
0058
0059 void AddCerenkov() { fCerenkovCount += 1; }
0060 void AddScintillation() { fScintCount += 1; }
0061 void AddRayleigh() { fRayleighCount += 1; }
0062 void AddWLSAbsorption() { fWLSAbsorptionCount += 1; }
0063 void AddWLSEmission() { fWLSEmissionCount += 1; }
0064 void AddWLS2Absorption() { fWLS2AbsorptionCount += 1; }
0065 void AddWLS2Emission() { fWLS2EmissionCount += 1; }
0066
0067 void AddOpAbsorption() { fOpAbsorption += 1; }
0068 void AddOpAbsorptionPrior() { fOpAbsorptionPrior += 1; }
0069
0070 void AddFresnelRefraction() { fBoundaryProcs[FresnelRefraction] += 1; }
0071 void AddFresnelReflection() { fBoundaryProcs[FresnelReflection] += 1; }
0072 void AddTransmission() { fBoundaryProcs[Transmission] += 1; }
0073 void AddTotalInternalReflection() { fBoundaryProcs[TotalInternalReflection] += 1; }
0074 void AddLambertianReflection() { fBoundaryProcs[LambertianReflection] += 1; }
0075 void AddLobeReflection() { fBoundaryProcs[LobeReflection] += 1; }
0076 void AddSpikeReflection() { fBoundaryProcs[SpikeReflection] += 1; }
0077 void AddBackScattering() { fBoundaryProcs[BackScattering] += 1; }
0078 void AddAbsorption() { fBoundaryProcs[Absorption] += 1; }
0079 void AddDetection() { fBoundaryProcs[Detection] += 1; }
0080 void AddNotAtBoundary() { fBoundaryProcs[NotAtBoundary] += 1; }
0081 void AddSameMaterial() { fBoundaryProcs[SameMaterial] += 1; }
0082 void AddStepTooSmall() { fBoundaryProcs[StepTooSmall] += 1; }
0083 void AddNoRINDEX() { fBoundaryProcs[NoRINDEX] += 1; }
0084
0085 void AddTotalSurface() { fTotalSurface += 1; }
0086 void AddPolishedLumirrorAirReflection() { fBoundaryProcs[PolishedLumirrorAirReflection] += 1; }
0087 void AddPolishedLumirrorGlueReflection()
0088 {
0089 fBoundaryProcs[PolishedLumirrorGlueReflection] += 1;
0090 }
0091 void AddPolishedAirReflection() { fBoundaryProcs[PolishedAirReflection] += 1; }
0092 void AddPolishedTeflonAirReflection() { fBoundaryProcs[PolishedTeflonAirReflection] += 1; }
0093 void AddPolishedTiOAirReflection() { fBoundaryProcs[PolishedTiOAirReflection] += 1; }
0094 void AddPolishedTyvekAirReflection() { fBoundaryProcs[PolishedTyvekAirReflection] += 1; }
0095 void AddPolishedVM2000AirReflection() { fBoundaryProcs[PolishedVM2000AirReflection] += 1; }
0096 void AddPolishedVM2000GlueReflection() { fBoundaryProcs[PolishedVM2000GlueReflection] += 1; }
0097
0098 void AddEtchedLumirrorAirReflection() { fBoundaryProcs[EtchedLumirrorAirReflection] += 1; }
0099 void AddEtchedLumirrorGlueReflection() { fBoundaryProcs[EtchedLumirrorGlueReflection] += 1; }
0100 void AddEtchedAirReflection() { fBoundaryProcs[EtchedAirReflection] += 1; }
0101 void AddEtchedTeflonAirReflection() { fBoundaryProcs[EtchedTeflonAirReflection] += 1; }
0102 void AddEtchedTiOAirReflection() { fBoundaryProcs[EtchedTiOAirReflection] += 1; }
0103 void AddEtchedTyvekAirReflection() { fBoundaryProcs[EtchedTyvekAirReflection] += 1; }
0104 void AddEtchedVM2000AirReflection() { fBoundaryProcs[EtchedVM2000AirReflection] += 1; }
0105 void AddEtchedVM2000GlueReflection() { fBoundaryProcs[EtchedVM2000GlueReflection] += 1; }
0106
0107 void AddGroundLumirrorAirReflection() { fBoundaryProcs[GroundLumirrorAirReflection] += 1; }
0108 void AddGroundLumirrorGlueReflection() { fBoundaryProcs[GroundLumirrorGlueReflection] += 1; }
0109 void AddGroundAirReflection() { fBoundaryProcs[GroundAirReflection] += 1; }
0110 void AddGroundTeflonAirReflection() { fBoundaryProcs[GroundTeflonAirReflection] += 1; }
0111 void AddGroundTiOAirReflection() { fBoundaryProcs[GroundTiOAirReflection] += 1; }
0112 void AddGroundTyvekAirReflection() { fBoundaryProcs[GroundTyvekAirReflection] += 1; }
0113 void AddGroundVM2000AirReflection() { fBoundaryProcs[GroundVM2000AirReflection] += 1; }
0114 void AddGroundVM2000GlueReflection() { fBoundaryProcs[GroundVM2000GlueReflection] += 1; }
0115
0116 void AddDichroic() { fBoundaryProcs[Dichroic] += 1; }
0117 void AddCoatedDielectricRefraction() { fBoundaryProcs[CoatedDielectricRefraction] += 1; }
0118 void AddCoatedDielectricReflection() { fBoundaryProcs[CoatedDielectricReflection] += 1; }
0119 void AddCoatedDielectricFrustratedTransmission()
0120 {
0121 fBoundaryProcs[CoatedDielectricFrustratedTransmission] += 1;
0122 }
0123
0124 void Merge(const G4Run*) override;
0125
0126 void EndOfRun();
0127
0128 private:
0129
0130 G4ParticleDefinition* fParticle = nullptr;
0131 G4double fEkin = -1.;
0132 G4bool fPolarized = false;
0133 G4double fPolarization = 0.;
0134
0135 G4double fCerenkovEnergy = 0.;
0136 G4double fScintEnergy = 0.;
0137 G4double fWLSAbsorptionEnergy = 0.;
0138 G4double fWLSEmissionEnergy = 0.;
0139 G4double fWLS2AbsorptionEnergy = 0.;
0140 G4double fWLS2EmissionEnergy = 0.;
0141
0142
0143 G4int fCerenkovCount = 0;
0144 G4int fScintCount = 0;
0145 G4int fWLSAbsorptionCount = 0;
0146 G4int fWLSEmissionCount = 0;
0147 G4int fWLS2AbsorptionCount = 0;
0148 G4int fWLS2EmissionCount = 0;
0149
0150 G4int fRayleighCount = 0;
0151
0152
0153 G4int fOpAbsorption = 0;
0154
0155
0156 G4int fOpAbsorptionPrior = 0;
0157
0158
0159 std::vector<G4int> fBoundaryProcs;
0160
0161 G4int fTotalSurface = 0;
0162 };
0163
0164 #endif