#include <ISCalcSeparate.h>
Definition at line 31 of file ISCalcSeparate.h.
larg4::ISCalcSeparate::ISCalcSeparate |
( |
| ) |
|
Definition at line 22 of file ISCalcSeparate.cxx.
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();
const detinfo::LArProperties * fLArProp
double fModBoxA
from LArG4Parameters service
double fRecombk
from LArG4Parameters service
double fRecombA
from LArG4Parameters service
const spacecharge::SpaceCharge * fSCE
double fGeVToElectrons
from LArG4Parameters service
double fModBoxB
from LArG4Parameters service
bool fUseModBoxRecomb
from LArG4Parameters service
Definition at line 43 of file ISCalcSeparate.cxx.
46 float e = edep.Energy();
47 float ds = edep.StepLength();
50 double dEdx = (ds <= 0.0) ? 0.0 : e /
ds;
51 double EFieldStep =
EFieldAtStep(detProp.Efield(), edep);
54 if (dEdx < 1.) { dEdx = 1.; }
58 double const scaled_modboxb =
fModBoxB / detProp.Density(detProp.Temperature());
59 double const Xi = scaled_modboxb * dEdx / EFieldStep;
67 double const scaled_recombk =
fRecombk / detProp.Density(detProp.Temperature());
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;
double fModBoxA
from LArG4Parameters service
double fRecombk
from LArG4Parameters service
double dEdx(float dqdx, float Efield)
double fRecombA
from LArG4Parameters service
double EFieldAtStep(double efield, sim::SimEnergyDeposit const &edep) override
double fGeVToElectrons
from LArG4Parameters service
double fModBoxB
from LArG4Parameters service
QTextStream & endl(QTextStream &s)
bool fUseModBoxRecomb
from LArG4Parameters service
Implements larg4::ISCalc.
Definition at line 118 of file ISCalcSeparate.cxx.
121 auto const numElectrons =
CalcIon(detProp, edep);
122 auto const [numPhotons, scintYieldRatio] =
CalcScint(edep);
123 return {edep.Energy(), numElectrons, numPhotons, scintYieldRatio};
std::pair< double, double > CalcScint(sim::SimEnergyDeposit const &edep)
double CalcIon(detinfo::DetectorPropertiesData const &detProp, sim::SimEnergyDeposit const &edep)
Definition at line 82 of file ISCalcSeparate.cxx.
84 float const e = edep.Energy();
85 int const pdg = edep.PdgCode();
87 double numScintPhotons{};
90 MF_LOG_DEBUG(
"ISCalcSeparate") <<
"scintillating by particle type";
107 numScintPhotons = scintYield *
e;
110 numScintPhotons = scint_yield_factor * scintYield *
e;
const detinfo::LArProperties * fLArProp
virtual double AlphaScintYield(bool prescale=false) const =0
virtual double ProtonScintYield(bool prescale=false) const =0
virtual double ElectronScintYield(bool prescale=false) const =0
double GetScintYieldRatio(sim::SimEnergyDeposit const &edep)
virtual double PionScintYield(bool prescale=false) const =0
virtual double MuonScintYield(bool prescale=false) const =0
virtual double KaonScintYield(bool prescale=false) const =0
virtual double ScintYield(bool prescale=false) const =0
virtual bool ScintByParticleType() const =0
Implements larg4::ISCalc.
Definition at line 127 of file ISCalcSeparate.cxx.
133 efield + efield * eFieldOffsets.X(), efield * eFieldOffsets.Y(), efield * eFieldOffsets.Z());
virtual bool EnableSimEfieldSCE() const =0
std::enable_if_t< std::is_arithmetic_v< T >, T > hypot(T x, T y)
virtual geo::Vector_t GetEfieldOffsets(geo::Point_t const &point) const =0
const spacecharge::SpaceCharge * fSCE
Definition at line 137 of file ISCalcSeparate.cxx.
140 switch (edep.PdgCode()) {
virtual double ElectronScintYieldRatio() const =0
const detinfo::LArProperties * fLArProp
virtual double ScintYieldRatio() const =0
virtual double AlphaScintYieldRatio() const =0
virtual double ProtonScintYieldRatio() const =0
virtual double PionScintYieldRatio() const =0
virtual double MuonScintYieldRatio() const =0
virtual double KaonScintYieldRatio() const =0
virtual bool ScintByParticleType() const =0
void larg4::ISCalcSeparate::Reset |
( |
| ) |
|
double larg4::ISCalcSeparate::fGeVToElectrons |
|
private |
double larg4::ISCalcSeparate::fModBoxA |
|
private |
double larg4::ISCalcSeparate::fModBoxB |
|
private |
double larg4::ISCalcSeparate::fRecombA |
|
private |
double larg4::ISCalcSeparate::fRecombk |
|
private |
bool larg4::ISCalcSeparate::fUseModBoxRecomb |
|
private |
The documentation for this class was generated from the following files: