Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4OpticalPhysics.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26//
27//
28//---------------------------------------------------------------------------
29//
30// ClassName: G4OpticalPhysics
31//
32// Author: P.Gumplinger 30.09.2009
33//
34// Modified: P.Gumplinger 29.09.2011
35// (based on code from I. Hrivnacova)
36//
37//----------------------------------------------------------------------------
38//
39// This class provides construction of default optical physics
40//
41
42#ifndef G4OpticalPhysics_h
43#define G4OpticalPhysics_h 1
44
45#include "globals.hh"
46
48
51
52#include "G4OpWLS.hh"
53#include "G4Scintillation.hh"
54#include "G4Cerenkov.hh"
55
56#include "G4OpAbsorption.hh"
57#include "G4OpRayleigh.hh"
58#include "G4OpMieHG.hh"
60
61#include "G4OpticalSurface.hh"
62
63#include <vector>
64
65class G4VProcess;
66
67//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
68
70{
71 public:
72
73 G4OpticalPhysics(G4int verbose = 0, const G4String& name = "Optical");
74 virtual ~G4OpticalPhysics();
75
76 protected:
77
78 // construct particle and physics
79 virtual void ConstructParticle();
80 virtual void ConstructProcess();
81
82 private:
83
84 /// Not implemented
86 /// Not implemented
87 G4OpticalPhysics& operator=(const G4OpticalPhysics& right);
88
89 public:
90
91 // configure G4OpticalPhysics builder
93
94 // get methods
96 { return fScintillationProcess; }
98 { return fCerenkovProcess; }
99 virtual G4OpWLS* GetOpWLSProcess() { return fOpWLSProcess; }
100
102 { return fOpAbsorptionProcess; }
104 { return fOpRayleighScatteringProcess; }
106 { return fOpMieHGScatteringProcess; }
108 { return fOpBoundaryProcess; }
109
110 // set methods
112
117
121
124
125 private:
126
127 // methods
128 void PrintStatistics() const;
129
130 // data members
131
132 G4bool wasActivated;
133
134 // messenger
135 G4OpticalPhysicsMessenger* fMessenger;
136
137 // The vector of optical processes
138 std::vector<G4VProcess*> fProcesses;
139
140 // The vector of process configuration
141 std::vector<G4bool> fProcessUse;
142
143 // The vector of process verbose level
144 std::vector<G4int> fProcessVerbose;
145
146 // The vector of track secondaries options;
147 // the option to track secondaries before finishing their parent track
148 std::vector<G4bool> fProcessTrackSecondariesFirst;
149
150 G4Scintillation* fScintillationProcess;
151 G4Cerenkov* fCerenkovProcess;
152 G4OpWLS* fOpWLSProcess;
153
154 G4OpAbsorption* fOpAbsorptionProcess;
155 G4OpRayleigh* fOpRayleighScatteringProcess;
156 G4OpMieHG* fOpMieHGScatteringProcess;
157 G4OpBoundaryProcess* fOpBoundaryProcess;
158
159 /// max number of Cerenkov photons per step
160 G4int fMaxNumPhotons;
161
162 /// max change of beta per step
163 G4double fMaxBetaChange;
164
165 /// scintillation yield factor
166 G4double fYieldFactor;
167
168 /// scintillation excitation ratio
169 G4double fExcitationRatio;
170
171 /// the WLS process time profile
172 G4String fProfile;
173
174 /// option to set a finite rise-time; Note: the G4Scintillation
175 /// process expects the user to have set the constant material
176 /// property FAST/SLOWSCINTILLATIONRISETIME
177 G4bool fFiniteRiseTime;
178
179 /// option to allow for the light yield to be a function of
180 /// particle type and deposited energy in case of non-linear
181 /// light emission in scintillators
182 G4bool fScintillationByParticleType;
183
184};
185
186//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
187
188#endif // G4OpticalPhysics_h
G4OpticalProcessIndex
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
bool G4bool
Definition: G4Types.hh:67
void SetProcessVerbose(G4int, G4int)
void SetMaxBetaChangePerStep(G4double)
void SetScintillationYieldFactor(G4double)
virtual G4OpAbsorption * GetOpAbsorptionProcess()
void Configure(G4OpticalProcessIndex, G4bool)
void SetScintillationByParticleType(G4bool)
void SetMaxNumPhotonsPerStep(G4int)
virtual G4OpBoundaryProcess * GetOpBoundaryProcess()
virtual ~G4OpticalPhysics()
void SetTrackSecondariesFirst(G4OpticalProcessIndex, G4bool)
virtual G4Cerenkov * GetCerenkovProcess()
virtual void ConstructProcess()
virtual void ConstructParticle()
virtual G4Scintillation * GetScintillationProcess()
void SetWLSTimeProfile(G4String)
virtual G4OpWLS * GetOpWLSProcess()
void AddScintillationSaturation(G4EmSaturation *)
void SetFiniteRiseTime(G4bool)
virtual G4OpMieHG * GetOpMieHGProcess()
void SetScintillationExcitationRatio(G4double)
virtual G4OpRayleigh * GetOpRayleighProcess()