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);
266 G4double
single_exp(G4double t, G4double tau2);
267 G4double
bi_exp(G4double t, G4double tau1, G4double tau2);
270 G4double
sample_time(G4double tau1, G4double tau2);
296 if (aParticleType.GetParticleName() ==
"opticalphoton")
return false;
297 if (aParticleType.IsShortLived())
return false;
367 G4PhysicsOrderedFreeVector *v;
369 for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
378 G4PhysicsOrderedFreeVector *v;
380 for (G4int i = 0 ; i < PhysicsTableSize ; i++ )
391 return std::exp(-1.0*t/tau2)/tau2;
397 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)
G4PhysicsTable * theFastIntegralTable
double ftf1_sampling_factor
G4bool GetFiniteRiseTime() const
G4double GetScintillationExcitationRatio() const
G4bool GetTrackSecondariesFirst() const
G4double sample_time(G4double tau1, G4double tau2)
G4bool fTrackSecondariesFirst
G4double single_exp(G4double t, G4double tau2)
void ProcessStep(const G4Step &step)
double finter_d(double *x, double *par)
OpFastScintillation(const G4String &processName="Scintillation", G4ProcessType type=fElectromagnetic)
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)
std::vector< double > GetVisibleTimeOnlyCathode(double, int)
TF1 const * functions_vis[5]
G4PhysicsTable * GetFastIntegralTable() const
G4bool GetScintillationByParticleType() const
void DumpPhysicsTable() const
void SetScintillationExcitationRatio(const G4double excitationratio)
G4double bi_exp(G4double t, G4double tau1, G4double tau2)
void SetFiniteRiseTime(const G4bool state)
TF1 const * functions_vuv[8]
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 *)
std::vector< double > GetVUVTime(double, int)
G4double GetScintillationYieldFactor() const
double LandauPlusExpoFinal(double *x, double *par)