56 #ifndef G4Scintillation_h
57 #define G4Scintillation_h 1
60 #include "G4EmSaturation.hh"
61 #include "G4OpticalPhoton.hh"
62 #include "G4VRestDiscreteProcess.hh"
77 G4ProcessType type = fElectromagnetic);
87 G4bool IsApplicable(
const G4ParticleDefinition& aParticleType)
override;
91 void ProcessDescription(std::ostream&)
const override;
92 void DumpInfo()
const override {ProcessDescription(G4cout);};
94 void BuildPhysicsTable(
const G4ParticleDefinition& aParticleType)
override;
97 void PreparePhysicsTable(
const G4ParticleDefinition& part)
override;
100 G4double GetMeanFreePath(
const G4Track& aTrack, G4double,
101 G4ForceCondition*)
override;
106 G4double GetMeanLifeTime(
const G4Track& aTrack, G4ForceCondition*)
override;
111 G4VParticleChange* PostStepDoIt(
const G4Track& aTrack,
112 const G4Step& aStep)
override;
113 G4VParticleChange* AtRestDoIt(
const G4Track& aTrack,
114 const G4Step& aStep)
override;
116 G4double GetScintillationYieldByParticleType(
const G4Track& aTrack,
127 void SetTrackSecondariesFirst(
const G4bool state);
132 G4bool GetTrackSecondariesFirst()
const;
135 void SetFiniteRiseTime(
const G4bool state);
139 G4bool GetFiniteRiseTime()
const;
142 G4PhysicsTable* GetIntegralTable1()
const;
145 G4PhysicsTable* GetIntegralTable2()
const;
148 G4PhysicsTable* GetIntegralTable3()
const;
151 void AddSaturation(G4EmSaturation* sat);
154 void RemoveSaturation();
157 G4EmSaturation* GetSaturation()
const;
160 void SetScintillationByParticleType(
const G4bool);
164 G4bool GetScintillationByParticleType()
const;
168 void SetScintillationTrackInfo(
const G4bool trackType);
172 G4bool GetScintillationTrackInfo()
const;
176 void SetStackPhotons(
const G4bool);
179 G4bool GetStackPhotons()
const;
182 G4int GetNumPhotons()
const;
185 void DumpPhysicsTable()
const;
188 void SetVerboseLevel(G4int);
193 G4PhysicsTable* fIntegralTable1;
194 G4PhysicsTable* fIntegralTable2;
195 G4PhysicsTable* fIntegralTable3;
197 G4EmSaturation* fEmSaturation;
198 const G4ParticleDefinition* opticalphoton =
199 G4OpticalPhoton::OpticalPhotonDefinition();
203 G4bool fScintillationByParticleType;
204 G4bool fScintillationTrackInfo;
205 G4bool fStackingFlag;
206 G4bool fTrackSecondariesFirst;
207 G4bool fFiniteRiseTime;
209 #ifdef G4DEBUG_SCINTILLATION
210 G4double ScintTrackEDep, ScintTrackYield;
213 G4double single_exp(G4double t, G4double tau2);
214 G4double bi_exp(G4double t, G4double tau1, G4double tau2);
217 G4double sample_time(G4double tau1, G4double tau2);
227 inline G4bool OMSimG4Scintillation::GetTrackSecondariesFirst()
const
229 return fTrackSecondariesFirst;
232 inline G4bool OMSimG4Scintillation::GetFiniteRiseTime()
const
234 return fFiniteRiseTime;
237 inline G4PhysicsTable* OMSimG4Scintillation::GetIntegralTable1()
const
239 return fIntegralTable1;
242 inline G4PhysicsTable* OMSimG4Scintillation::GetIntegralTable2()
const
244 return fIntegralTable2;
247 inline G4PhysicsTable* OMSimG4Scintillation::GetIntegralTable3()
const
249 return fIntegralTable3;
252 inline void OMSimG4Scintillation::AddSaturation(G4EmSaturation* sat)
257 inline void OMSimG4Scintillation::RemoveSaturation() { fEmSaturation =
nullptr; }
259 inline G4EmSaturation* OMSimG4Scintillation::GetSaturation()
const
261 return fEmSaturation;
264 inline G4bool OMSimG4Scintillation::GetScintillationByParticleType()
const
266 return fScintillationByParticleType;
269 inline G4bool OMSimG4Scintillation::GetScintillationTrackInfo()
const
271 return fScintillationTrackInfo;
274 inline G4bool OMSimG4Scintillation::GetStackPhotons()
const {
return fStackingFlag; }
276 inline G4int OMSimG4Scintillation::GetNumPhotons()
const {
return fNumPhotons; }
278 inline G4double OMSimG4Scintillation::single_exp(G4double t, G4double tau2)
280 return std::exp(-1.0 * t / tau2) / tau2;
283 inline G4double OMSimG4Scintillation::bi_exp(G4double t, G4double tau1,
286 return std::exp(-1.0 * t / tau2) * (1 - std::exp(-1.0 * t / tau1)) / tau2 /
287 tau2 * (tau1 + tau2);
Definition: OMSimG4Scintillation.hh:74