17 constexpr
double scint_yield_factor{1.};
24 fSCE = lar::providerFrom<spacecharge::SpaceChargeService>();
25 fLArProp = lar::providerFrom<detinfo::LArPropertiesService>();
32 fRecombA = LArG4PropHandle->RecombA();
33 fRecombk = LArG4PropHandle->Recombk();
34 fModBoxA = LArG4PropHandle->ModBoxA();
35 fModBoxB = LArG4PropHandle->ModBoxB();
50 double dEdx = (ds <= 0.0) ? 0.0 : e /
ds;
54 if (dEdx < 1.) { dEdx = 1.; }
59 double const Xi = scaled_modboxb * dEdx / EFieldStep;
68 recomb =
fRecombA / (1. + dEdx * scaled_recombk / EFieldStep);
75 <<
" Electrons produced for " << edep.
Energy() <<
" MeV deposited with " << recomb
76 <<
" recombination: " << numIonElectrons <<
std::endl;
77 return numIonElectrons;
81 std::pair<double, double>
87 double numScintPhotons{};
90 MF_LOG_DEBUG(
"ISCalcSeparate") <<
"scintillating by particle type";
107 numScintPhotons = scintYield *
e;
110 numScintPhotons = scint_yield_factor * scintYield *
e;
121 auto const numElectrons =
CalcIon(detProp, edep);
122 auto const [numPhotons, scintYieldRatio] =
CalcScint(edep);
123 return {edep.
Energy(), numElectrons, numPhotons, scintYieldRatio};
133 efield + efield * eFieldOffsets.X(), efield * eFieldOffsets.Y(), efield * eFieldOffsets.Z());
virtual bool EnableSimEfieldSCE() const =0
virtual double ElectronScintYieldRatio() const =0
const detinfo::LArProperties * fLArProp
virtual double ScintYieldRatio() const =0
virtual double AlphaScintYield(bool prescale=false) const =0
geo::Length_t StepLength() const
std::pair< double, double > CalcScint(sim::SimEnergyDeposit const &edep)
virtual double AlphaScintYieldRatio() const =0
double Temperature() const
In kelvin.
double fModBoxA
from LArG4Parameters service
ISCalcData CalcIonAndScint(detinfo::DetectorPropertiesData const &detProp, sim::SimEnergyDeposit const &edep) override
double fRecombk
from LArG4Parameters service
virtual double ProtonScintYieldRatio() const =0
std::enable_if_t< std::is_arithmetic_v< T >, T > hypot(T x, T y)
double Efield(unsigned int planegap=0) const
kV/cm
virtual double ProtonScintYield(bool prescale=false) const =0
virtual double PionScintYieldRatio() const =0
double CalcIon(detinfo::DetectorPropertiesData const &detProp, sim::SimEnergyDeposit const &edep)
double dEdx(float dqdx, float Efield)
double fRecombA
from LArG4Parameters service
virtual double ElectronScintYield(bool prescale=false) const =0
double GetScintYieldRatio(sim::SimEnergyDeposit const &edep)
geo::Point_t MidPoint() const
double Density(double temperature=0.) const
Returns argon density at a given temperature.
virtual double PionScintYield(bool prescale=false) const =0
virtual geo::Vector_t GetEfieldOffsets(geo::Point_t const &point) const =0
double EFieldAtStep(double efield, sim::SimEnergyDeposit const &edep) override
const spacecharge::SpaceCharge * fSCE
virtual double MuonScintYield(bool prescale=false) const =0
virtual double KaonScintYield(bool prescale=false) const =0
virtual double ScintYield(bool prescale=false) const =0
Energy deposition in the active material.
virtual double MuonScintYieldRatio() const =0
double fGeVToElectrons
from LArG4Parameters service
double fModBoxB
from LArG4Parameters service
virtual double KaonScintYieldRatio() const =0
virtual bool ScintByParticleType() const =0
QTextStream & endl(QTextStream &s)
bool fUseModBoxRecomb
from LArG4Parameters service