31 #ifndef DETECTORINFO_LARPROPERTIESSTANDARD_H 32 #define DETECTORINFO_LARPROPERTIESSTANDARD_H 38 #define DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 0 45 #if DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 76 std::set<std::string> ignore_params = {});
90 bool Update(uint64_t ts = 0);
96 return fArgon39DecayRate;
113 virtual double ScintYield(
bool prescale =
false)
const override 115 return fScintYield * ScintPreScale(prescale);
119 return (prescale ? fScintPreScale : 1);
125 return fProtonScintYield * ScintPreScale(prescale);
130 return fMuonScintYield * ScintPreScale(prescale);
135 return fKaonScintYield * ScintPreScale(prescale);
140 return fPionScintYield * ScintPreScale(prescale);
145 return fElectronScintYield * ScintPreScale(prescale);
150 return fAlphaScintYield * ScintPreScale(prescale);
155 virtual std::map<double, double> SlowScintSpectrum()
const override;
156 virtual std::map<double, double> FastScintSpectrum()
const override;
157 virtual std::map<double, double> RIndexSpectrum()
const override;
158 virtual std::map<double, double> AbsLengthSpectrum()
const override;
159 virtual std::map<double, double> RayleighSpectrum()
const override;
161 virtual std::map<std::string, std::map<double, double>> SurfaceReflectances()
const override;
162 virtual std::map<std::string, std::map<double, double>> SurfaceReflectanceDiffuseFractions()
209 fReflectiveSurfaceReflectances =
r;
213 fReflectiveSurfaceDiffuseFractions =
f;
220 virtual std::map<double, double> TpbAbs()
const override;
221 virtual std::map<double, double> TpbEm()
const override;
238 Comment(
"radiation length [g/cm^2]")};
240 Comment(
"atomic number (yes, yes, it's 18...)")};
243 Comment(
"mean excitation energy [eV]")};
276 #if DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 278 Name(
"ProtonScintYield"),
279 Comment(
"(only if ScintByParticleType is true)")};
281 Name(
"ProtonScintYieldRatio"),
282 Comment(
"(only if ScintByParticleType is true)")};
284 Comment(
"(only if ScintByParticleType is true)")};
286 Name(
"MuonScintYieldRatio"),
287 Comment(
"(only if ScintByParticleType is true)")};
289 Comment(
"(only if ScintByParticleType is true)")};
291 Name(
"PionScintYieldRatio"),
292 Comment(
"(only if ScintByParticleType is true)")};
294 Comment(
"(only if ScintByParticleType is true)")};
296 Name(
"KaonScintYieldRatio"),
297 Comment(
"(only if ScintByParticleType is true)")};
299 Name(
"ElectronScintYield"),
300 Comment(
"(only if ScintByParticleType is true)")};
302 Name(
"ElectronScintYieldRatio"),
303 Comment(
"(only if ScintByParticleType is true)")};
305 Comment(
"(only if ScintByParticleType is true)")};
307 Name(
"AlphaScintYieldRatio"),
308 Comment(
"(only if ScintByParticleType is true)")};
309 #endif // DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 318 Name(
"ReflectiveSurfaceReflectances"),
321 Name(
"ReflectiveSurfaceDiffuseFractions"),
326 #if !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 331 Comment(
"(only if ScintByParticleType is true)")};
333 Comment(
"(only if ScintByParticleType is true)")};
335 Comment(
"(only if ScintByParticleType is true)")};
337 Comment(
"(only if ScintByParticleType is true)")};
339 Comment(
"(only if ScintByParticleType is true)")};
341 Comment(
"(only if ScintByParticleType is true)")};
343 Comment(
"(only if ScintByParticleType is true)")};
345 Comment(
"(only if ScintByParticleType is true)")};
347 Comment(
"(only if ScintByParticleType is true)")};
349 Comment(
"(only if ScintByParticleType is true)")};
351 Comment(
"(only if ScintByParticleType is true)")};
353 Comment(
"(only if ScintByParticleType is true)")};
356 #endif // !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 432 #if DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM 434 #else // !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 436 #endif // !DETECTORINFO_LARPROPERTIESSTANDARD_HASOPTIONALATOM? 440 #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)
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
bool Update(detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, PFPStruct &pfp)
void SetTpbEmmisionSpectrum(std::vector< double > s)
virtual double ScintPreScale(bool prescale=true) const override
void SetRadiationLength(double rl)
double fPionScintYieldRatio
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
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
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 SetReflectiveSurfaceDiffuseFractions(std::vector< std::vector< double >> f)
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 SetTpbAbsorptionSpectrum(std::vector< double > s)
std::vector< std::vector< double > > fReflectiveSurfaceReflectances
void SetScintPreScale(double s)
double fI
Ar mean excitation energy (eV)
double fElectronScintYieldRatio
void SetReflectiveSurfaceReflectances(std::vector< std::vector< double >> r)
double fProtonScintYieldRatio
Properties related to liquid argon environment in the detector.
virtual double PionScintYield(bool prescale=false) const override
std::vector< double > fAbsLengthSpectrum
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
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)