31 #ifndef DETECTORINFO_LARPROPERTIESSTANDARD_H 32 #define DETECTORINFO_LARPROPERTIESSTANDARD_H 38 #define DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 0 45 #if DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 50 namespace fhicl {
class ParameterSet; }
91 bool Update(uint64_t ts=0);
111 virtual double ScintYield(
bool prescale =
false)
const override {
return fScintYield * ScintPreScale(prescale);}
112 virtual double ScintPreScale(
bool prescale =
true)
const override {
return (prescale ? fScintPreScale : 1); }
115 virtual double ProtonScintYield(
bool prescale =
false)
const override {
return fProtonScintYield * ScintPreScale(prescale); }
117 virtual double MuonScintYield(
bool prescale =
false)
const override {
return fMuonScintYield * ScintPreScale(prescale); }
119 virtual double KaonScintYield(
bool prescale =
false)
const override {
return fKaonScintYield * ScintPreScale(prescale); }
121 virtual double PionScintYield(
bool prescale =
false)
const override {
return fPionScintYield * ScintPreScale(prescale); }
123 virtual double ElectronScintYield(
bool prescale =
false)
const override {
return fElectronScintYield * ScintPreScale(prescale);}
125 virtual double AlphaScintYield(
bool prescale =
false)
const override {
return fAlphaScintYield * ScintPreScale(prescale); }
130 virtual std::map<double, double> SlowScintSpectrum()
const override;
131 virtual std::map<double, double> FastScintSpectrum()
const override;
132 virtual std::map<double, double> RIndexSpectrum()
const override;
133 virtual std::map<double, double> AbsLengthSpectrum()
const override;
134 virtual std::map<double, double> RayleighSpectrum()
const override;
136 virtual std::map<std::string, std::map<double, double> > SurfaceReflectances()
const override;
137 virtual std::map<std::string, std::map<double, double> > SurfaceReflectanceDiffuseFractions()
const override;
188 virtual std::map<double, double> TpbAbs()
const override;
189 virtual std::map<double, double> TpbEm()
const override;
208 {
Name(
"RadiationLength" ),
Comment(
"radiation length [g/cm^2]") };
210 {
Name(
"AtomicNumber" ),
Comment(
"atomic number (yes, yes, it's 18...)") };
214 {
Name(
"ExcitationEnergy"),
Comment(
"mean excitation energy [eV]") };
249 #if DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 251 {
Name(
"ProtonScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
253 {
Name(
"ProtonScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
255 {
Name(
"MuonScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
257 {
Name(
"MuonScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
259 {
Name(
"PionScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
261 {
Name(
"PionScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
263 {
Name(
"KaonScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
265 {
Name(
"KaonScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
267 {
Name(
"ElectronScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
269 {
Name(
"ElectronScintYieldRatio"),
Comment(
"(only if ScintByParticleType is true)") };
271 {
Name(
"AlphaScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
273 {
Name(
"AlphaScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
274 #endif // DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 289 #if !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 294 {
Name(
"ProtonScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
296 {
Name(
"ProtonScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
298 {
Name(
"MuonScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
300 {
Name(
"MuonScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
302 {
Name(
"PionScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
304 {
Name(
"PionScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
306 {
Name(
"KaonScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
308 {
Name(
"KaonScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
310 {
Name(
"ElectronScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
312 {
Name(
"ElectronScintYieldRatio"),
Comment(
"(only if ScintByParticleType is true)") };
314 {
Name(
"AlphaScintYield" ),
Comment(
"(only if ScintByParticleType is true)") };
316 {
Name(
"AlphaScintYieldRatio" ),
Comment(
"(only if ScintByParticleType is true)") };
319 #endif // !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 397 #if DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 399 #else // !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 401 #endif // !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 405 #endif // LARPROPERTIES_H
std::vector< double > fTpbEmmisionSpectrum
void SetAlphaScintYieldRatio(double r)
void SetElectronScintYieldRatio(double r)
double fScintResolutionScale
void SetScintYieldRatio(double r)
void SetTpbTimeConstant(double y)
virtual bool CerenkovLightEnabled() const override
double fArgon39DecayRate
decays per cm^3 per second
std::vector< double > fRIndexEnergies
void SetKaonScintYieldRatio(double r)
double fA
Ar atomic mass (g/mol)
virtual bool ScintByParticleType() const override
virtual double AtomicMass() const override
Ar atomic mass (g/mol)
double fElectronScintYield
void SetScintSlowTimeConst(double t)
virtual double Argon39DecayRate() const override
virtual double MuonScintYieldRatio() const override
std::vector< double > fTpbAbsorptionSpectrum
void SetPionScintYieldRatio(double r)
void SetScintFastTimeConst(double t)
virtual double ExcitationEnergy() const override
Ar mean excitation energy (eV)
void SetElectronScintYield(double y)
virtual double ScintYieldRatio() const override
virtual double ScintYield(bool prescale=false) const override
double fScintSlowTimeConst
void SetAtomicMass(double a)
ChannelGroupService::Name Name
std::vector< double > fFastScintEnergies
double fZ
Ar atomic number.
void SetPionScintYield(double y)
std::vector< double > fRayleighSpectrum
std::vector< double > fRIndexSpectrum
void SetProtonScintYieldRatio(double r)
void SetMuonScintYieldRatio(double r)
void SetMeanExcitationEnergy(double e)
void SetProtonScintYield(double y)
void SetAbsLengthSpectrum(std::vector< double > s)
virtual double RadiationLength() const override
g/cm^2
virtual double MuonScintYield(bool prescale=false) const override
virtual double AlphaScintYieldRatio() const override
virtual double PionScintYieldRatio() const override
void SetTpbEmmisionSpectrum(std::vector< double > s)
virtual double ScintPreScale(bool prescale=true) const override
void SetRadiationLength(double rl)
double fPionScintYieldRatio
virtual double AlphaScintYield(bool prescale=false) const override
std::vector< std::string > fReflectiveSurfaceNames
void SetArgon39DecayRate(double r)
void SetScintBirksConstant(double kb)
virtual double ScintResolutionScale() const override
structure with all configuration parameters
void SetReflectiveSurfaceEnergies(std::vector< double > e)
void SetMuonScintYield(double y)
std::vector< double > fFastScintSpectrum
void SetReflectiveSurfaceReflectances(std::vector< std::vector< double > > r)
std::vector< double > fAbsLengthEnergies
void SetScintByParticleType(bool l)
double fRadiationLength
g/cm^2
virtual double KaonScintYieldRatio() const override
void SetSlowScintEnergies(std::vector< double > s)
std::vector< double > fSlowScintEnergies
structure with all configuration parameters
std::vector< double > fTpbEmmisionEnergies
General LArSoft Utilities.
void SetFastScintSpectrum(std::vector< double > s)
void SetRayleighSpectrum(std::vector< double > s)
void SetTpbEmmisionEnergies(std::vector< double > s)
double fMuonScintYieldRatio
bool fScintByParticleType
virtual double ElectronScintYieldRatio() const override
void SetAbsLengthEnergies(std::vector< double > s)
virtual double KaonScintYield(bool prescale=false) const override
void SetFastScintEnergies(std::vector< double > s)
void SetEnableCerenkovLight(bool f)
void SetRIndexEnergies(std::vector< double > s)
virtual double ScintFastTimeConst() const override
void SetExtraMatProperties(bool l)
virtual double ElectronScintYield(bool prescale=false) const override
void SetReflectiveSurfaceDiffuseFractions(std::vector< std::vector< double > > f)
void SetTpbAbsorptionSpectrum(std::vector< double > s)
std::vector< std::vector< double > > fReflectiveSurfaceReflectances
void SetScintPreScale(double s)
double fI
Ar mean excitation energy (eV)
double fElectronScintYieldRatio
double fProtonScintYieldRatio
Properties related to liquid argon environment in the detector.
virtual double PionScintYield(bool prescale=false) const override
std::vector< double > fAbsLengthSpectrum
void Configure(string mesg)
void SetTpbAbsorptionEnergies(std::vector< double > s)
void SetKaonScintYield(double y)
std::vector< double > fReflectiveSurfaceEnergies
std::vector< double > fSlowScintSpectrum
void SetAtomicNumber(double z)
void SetSlowScintSpectrum(std::vector< double > s)
double fAlphaScintYieldRatio
virtual double ProtonScintYield(bool prescale=false) const override
void SetScintYield(double y)
std::vector< double > fTpbAbsorptionEnergies
virtual double ScintBirksConstant() const override
double fScintFastTimeConst
std::vector< double > fRayleighEnergies
void SetAlphaScintYield(double y)
virtual bool ExtraMatProperties() const override
void SetScintResolutionScale(double r)
double fKaonScintYieldRatio
bool fEnableCerenkovLight
double fScintBirksConstant
void SetReflectiveSurfaceNames(std::vector< std::string > n)
virtual double ScintSlowTimeConst() const override
virtual double TpbTimeConstant() const override
bool Update(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, PFPStruct &pfp, bool prt)
void SetRIndexSpectrum(std::vector< double > s)
virtual double AtomicNumber() const override
Ar atomic number.
std::vector< std::vector< double > > fReflectiveSurfaceDiffuseFractions
virtual double ProtonScintYieldRatio() const override
void SetRayleighEnergies(std::vector< double > s)