13 #include "fhiclcpp/ParameterSet.h"
14 #include "messagefacility/MessageLogger/MessageLogger.h"
31 constexpr
double scint_yield_factor{1.};
38 :
fRecombA{pset.get<
double>(
"RecombA")}
39 ,
fRecombk{pset.get<
double>(
"Recombk")}
40 ,
fModBoxA{pset.get<
double>(
"ModBoxA")}
41 ,
fModBoxB{pset.get<
double>(
"ModBoxB")}
45 fLArProp = lar::providerFrom<detinfo::LArPropertiesService>();
46 fSCE = lar::providerFrom<spacecharge::SpaceChargeService>();
68 double dEdx = (ds <= 0.0) ? 0.0 : e /
ds;
72 if (dEdx < 1.) dEdx = 1.;
76 double Xi =
fModBoxB * dEdx / EFieldStep;
89 MF_LOG_DEBUG(
"ISCalculationSeparate")
90 <<
" Electrons produced for " << edep.
Energy() <<
" MeV deposited with " << recomb
91 <<
" recombination: " << numIonElectrons << std::endl;
93 return numIonElectrons;
105 MF_LOG_DEBUG(
"ISCalculationSeparate") <<
"scintillating by particle type";
123 return scintYield *
e;
126 return scint_yield_factor * scintYield *
e;
152 return std::hypot(efield + efield * offsets.X(), efield * offsets.Y(), efield * offsets.Z());
process_name opflash particleana ie ie ie z
geo::Length_t StepLength() const
Utilities related to art service access.
const detinfo::LArProperties * fLArProp
process_name opflash particleana ie x
double fGeVToElectrons
from LArG4Parameters service
virtual double KaonScintYield(bool prescale=false) const =0
double CalculateIonization(detinfo::DetectorPropertiesData const &detProp, sim::SimEnergyDeposit const &edep) const
ISCalculationSeparate(fhicl::ParameterSet const &pset)
const spacecharge::SpaceCharge * fSCE
double Efield(unsigned int planegap=0) const
kV/cm
process_name opflash particleana ie ie y
virtual double ElectronScintYield(bool prescale=false) const =0
double EFieldAtStep(double efield, sim::SimEnergyDeposit const &edep) const
virtual geo::Vector_t GetEfieldOffsets(geo::Point_t const &point) const =0
Data CalculateIonizationAndScintillation(detinfo::DetectorPropertiesData const &detProp, sim::SimEnergyDeposit const &edep) const
virtual double PionScintYield(bool prescale=false) const =0
float dEdx(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, TP3D &tp3d)
virtual double ProtonScintYield(bool prescale=false) const =0
geo::Length_t MidPointX() const
geo::Length_t MidPointY() const
contains information for a single step in the detector simulation
geo::Length_t MidPointZ() const
Energy deposition in the active material.
virtual double ScintYield(bool prescale=false) const =0
virtual double MuonScintYield(bool prescale=false) const =0
virtual bool ScintByParticleType() const =0
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >, ROOT::Math::GlobalCoordinateSystemTag > Point_t
Type for representation of position in physical 3D space.
virtual double AlphaScintYield(bool prescale=false) const =0
virtual bool EnableSimEfieldSCE() const =0
BEGIN_PROLOG could also be cout
double CalculateScintillation(sim::SimEnergyDeposit const &edep) const