Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 5 // * The Geant4 software is copyright of th 6 // * the Geant4 Collaboration. It is provided 7 // * conditions of the Geant4 Software License 8 // * LICENSE and available at http://cern.ch/ 9 // * include a list of copyright holders. 10 // * 11 // * Neither the authors of this software syst 12 // * institutes,nor the agencies providing fin 13 // * work make any representation or warran 14 // * regarding this software system or assum 15 // * use. Please see the license in the file 16 // * for the full disclaimer and the limitatio 17 // * 18 // * This code implementation is the result 19 // * technical work of the GEANT4 collaboratio 20 // * By using, copying, modifying or distri 21 // * any work based on the software) you ag 22 // * use in resulting scientific publicati 23 // * acceptance of all terms of the Geant4 Sof 24 // ******************************************* 25 // 26 /// \file optical/OpNovice2/include/RunAction. 27 /// \brief Definition of the RunAction class 28 // 29 //....oooOO0OOooo........oooOO0OOooo........oo 30 //....oooOO0OOooo........oooOO0OOooo........oo 31 32 #ifndef Run_h 33 #define Run_h 1 34 35 #include "G4OpBoundaryProcess.hh" 36 #include "G4Run.hh" 37 38 class G4ParticleDefinition; 39 40 //....oooOO0OOooo........oooOO0OOooo........oo 41 class Run : public G4Run 42 { 43 public: 44 Run(); 45 ~Run() override = default; 46 47 void SetPrimary(G4ParticleDefinition* part 48 G4double polarization); 49 50 // particle energy 51 void AddCerenkovEnergy(G4double en) { fCer 52 void AddScintillationEnergy(G4double en) { 53 void AddWLSAbsorptionEnergy(G4double en) { 54 void AddWLSEmissionEnergy(G4double en) { f 55 void AddWLS2AbsorptionEnergy(G4double en) 56 void AddWLS2EmissionEnergy(G4double en) { 57 58 // number of particles 59 void AddCerenkov() { fCerenkovCount += 1; 60 void AddScintillation() { fScintCount += 1 61 void AddRayleigh() { fRayleighCount += 1; 62 void AddWLSAbsorption() { fWLSAbsorptionCo 63 void AddWLSEmission() { fWLSEmissionCount 64 void AddWLS2Absorption() { fWLS2Absorption 65 void AddWLS2Emission() { fWLS2EmissionCoun 66 67 void AddOpAbsorption() { fOpAbsorption += 68 void AddOpAbsorptionPrior() { fOpAbsorptio 69 70 void AddFresnelRefraction() { fBoundaryPro 71 void AddFresnelReflection() { fBoundaryPro 72 void AddTransmission() { fBoundaryProcs[Tr 73 void AddTotalInternalReflection() { fBound 74 void AddLambertianReflection() { fBoundary 75 void AddLobeReflection() { fBoundaryProcs[ 76 void AddSpikeReflection() { fBoundaryProcs 77 void AddBackScattering() { fBoundaryProcs[ 78 void AddAbsorption() { fBoundaryProcs[Abso 79 void AddDetection() { fBoundaryProcs[Detec 80 void AddNotAtBoundary() { fBoundaryProcs[N 81 void AddSameMaterial() { fBoundaryProcs[Sa 82 void AddStepTooSmall() { fBoundaryProcs[St 83 void AddNoRINDEX() { fBoundaryProcs[NoRIND 84 85 void AddTotalSurface() { fTotalSurface += 86 void AddPolishedLumirrorAirReflection() { 87 void AddPolishedLumirrorGlueReflection() 88 { 89 fBoundaryProcs[PolishedLumirrorGlueRefle 90 } 91 void AddPolishedAirReflection() { fBoundar 92 void AddPolishedTeflonAirReflection() { fB 93 void AddPolishedTiOAirReflection() { fBoun 94 void AddPolishedTyvekAirReflection() { fBo 95 void AddPolishedVM2000AirReflection() { fB 96 void AddPolishedVM2000GlueReflection() { f 97 98 void AddEtchedLumirrorAirReflection() { fB 99 void AddEtchedLumirrorGlueReflection() { f 100 void AddEtchedAirReflection() { fBoundaryP 101 void AddEtchedTeflonAirReflection() { fBou 102 void AddEtchedTiOAirReflection() { fBounda 103 void AddEtchedTyvekAirReflection() { fBoun 104 void AddEtchedVM2000AirReflection() { fBou 105 void AddEtchedVM2000GlueReflection() { fBo 106 107 void AddGroundLumirrorAirReflection() { fB 108 void AddGroundLumirrorGlueReflection() { f 109 void AddGroundAirReflection() { fBoundaryP 110 void AddGroundTeflonAirReflection() { fBou 111 void AddGroundTiOAirReflection() { fBounda 112 void AddGroundTyvekAirReflection() { fBoun 113 void AddGroundVM2000AirReflection() { fBou 114 void AddGroundVM2000GlueReflection() { fBo 115 116 void AddDichroic() { fBoundaryProcs[Dichro 117 void AddCoatedDielectricRefraction() { fBo 118 void AddCoatedDielectricReflection() { fBo 119 void AddCoatedDielectricFrustratedTransmis 120 { 121 fBoundaryProcs[CoatedDielectricFrustrate 122 } 123 124 void Merge(const G4Run*) override; 125 126 void EndOfRun(); 127 128 private: 129 // primary particle 130 G4ParticleDefinition* fParticle = nullptr; 131 G4double fEkin = -1.; 132 G4bool fPolarized = false; 133 G4double fPolarization = 0.; 134 135 G4double fCerenkovEnergy = 0.; 136 G4double fScintEnergy = 0.; 137 G4double fWLSAbsorptionEnergy = 0.; 138 G4double fWLSEmissionEnergy = 0.; 139 G4double fWLS2AbsorptionEnergy = 0.; 140 G4double fWLS2EmissionEnergy = 0.; 141 142 // number of particles 143 G4int fCerenkovCount = 0; 144 G4int fScintCount = 0; 145 G4int fWLSAbsorptionCount = 0; 146 G4int fWLSEmissionCount = 0; 147 G4int fWLS2AbsorptionCount = 0; 148 G4int fWLS2EmissionCount = 0; 149 // number of events 150 G4int fRayleighCount = 0; 151 152 // non-boundary processes 153 G4int fOpAbsorption = 0; 154 155 // prior to boundary: 156 G4int fOpAbsorptionPrior = 0; 157 158 // boundary proc 159 std::vector<G4int> fBoundaryProcs; 160 161 G4int fTotalSurface = 0; 162 }; 163 164 #endif /* Run_h */ 165