79 #ifndef OpFastScintillation_h 80 #define OpFastScintillation_h 1 86 #include "Geant4/globals.hh" 87 #include "Geant4/templates.hh" 88 #include "Geant4/G4ThreeVector.hh" 89 #include "Geant4/G4ParticleMomentum.hh" 90 #include "Geant4/G4Step.hh" 91 #include "Geant4/G4VRestDiscreteProcess.hh" 92 #include "Geant4/G4OpticalPhoton.hh" 93 #include "Geant4/G4DynamicParticle.hh" 94 #include "Geant4/G4Material.hh" 95 #include "Geant4/G4PhysicsTable.hh" 96 #include "Geant4/G4MaterialPropertiesTable.hh" 97 #include "Geant4/G4PhysicsOrderedFreeVector.hh" 98 #include "Geant4/G4EmSaturation.hh" 146 virtual G4bool
IsApplicable(
const G4ParticleDefinition& aParticleType);
164 virtual G4VParticleChange*
PostStepDoIt(
const G4Track& aTrack,
165 const G4Step& aStep);
166 virtual G4VParticleChange*
AtRestDoIt (
const G4Track& aTrack,
167 const G4Step& aStep);
230 std::vector<double>
GetVUVTime(
double,
int)
const;
266 G4double
single_exp(G4double t, G4double tau2)
const;
267 G4double
bi_exp(G4double t, G4double tau1, G4double tau2)
const;
270 G4double ScintillationTime,
271 G4double ScintillationRiseTime)
const;
272 std::vector<double>
propagation_time(G4ThreeVector x0,
int OpChannel,
int NPhotons,
bool Reflected=
false)
const;
275 G4double
sample_time(G4double tau1, G4double tau2)
const;
313 if (aParticleType.GetParticleName() ==
"opticalphoton")
return false;
314 if (aParticleType.IsShortLived())
return false;
384 G4PhysicsOrderedFreeVector *v;
386 for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
395 G4PhysicsOrderedFreeVector *v;
397 for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
408 return std::exp(-1.0*t/tau2)/tau2;
414 return std::exp(-1.0*t/tau2)*(1-std::exp(-1.0*t/tau1))/tau2/tau2*(tau1+tau2);
G4bool scintillationByParticleType
G4PhysicsTable * GetSlowIntegralTable() const
G4EmSaturation * GetSaturation() const
constexpr auto const & right(const_AssnsIter< L, R, D, Dir > const &a, const_AssnsIter< L, R, D, Dir > const &b)
void average_position(G4Step const &aStep, double *xzyPos) const
G4double sample_time(G4double tau1, G4double tau2) const
G4PhysicsTable * theFastIntegralTable
double ftf1_sampling_factor
G4bool GetFiniteRiseTime() const
G4double GetScintillationExcitationRatio() const
G4bool GetTrackSecondariesFirst() const
std::vector< double > propagation_time(G4ThreeVector x0, int OpChannel, int NPhotons, bool Reflected=false) const
G4bool fTrackSecondariesFirst
void ProcessStep(const G4Step &step)
double finter_d(double *x, double *par)
G4double scint_time(const G4Step &aStep, G4double ScintillationTime, G4double ScintillationRiseTime) const
std::map< double, double > tpbemission
OpFastScintillation(const G4String &processName="Scintillation", G4ProcessType type=fElectromagnetic)
G4double bi_exp(G4double t, G4double tau1, G4double tau2) const
virtual G4VParticleChange * AtRestDoIt(const G4Track &aTrack, const G4Step &aStep)
G4PhysicsTable * theSlowIntegralTable
void SetScintillationYieldFactor(const G4double yieldfactor)
void BuildThePhysicsTable()
void SetScintillationByParticleType(const G4bool)
bool RecordPhotonsProduced(const G4Step &aStep, double N)
virtual G4bool IsApplicable(const G4ParticleDefinition &aParticleType)
void SetTrackSecondariesFirst(const G4bool state)
G4double single_exp(G4double t, G4double tau2) const
TF1 const * functions_vis[5]
G4PhysicsTable * GetFastIntegralTable() const
std::vector< double > GetVisibleTimeOnlyCathode(double, int) const
G4bool GetScintillationByParticleType() const
void DumpPhysicsTable() const
void SetScintillationExcitationRatio(const G4double excitationratio)
std::vector< double > GetVUVTime(double, int) const
bool bPropagate
Whether propagation of photons is enabled.
void SetFiniteRiseTime(const G4bool state)
TF1 const * functions_vuv[8]
double reemission_energy() const
virtual G4VParticleChange * PostStepDoIt(const G4Track &aTrack, const G4Step &aStep)
void AddSaturation(G4EmSaturation *sat)
G4EmSaturation * emSaturation
G4double GetMeanFreePath(const G4Track &aTrack, G4double, G4ForceCondition *)
G4double GetMeanLifeTime(const G4Track &aTrack, G4ForceCondition *)
G4double GetScintillationYieldFactor() const
CLHEP::RandGeneral * rgen0
double LandauPlusExpoFinal(double *x, double *par)