LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
LArProperties.h
Go to the documentation of this file.
1 // \file LArProperties.h
3 //
4 // \brief pure virtual base interface for LAr properties
5 //
6 // \author jpaley@fnal.gov
7 //
9 #ifndef DETINFO_LARPROPERTIES_H
10 #define DETINFO_LARPROPERTIES_H
11 
12 // C/C++ standard libraries
13 #include <map>
14 #include <string>
15 
17 namespace detinfo {
18 
19  class LArProperties {
20  public:
21  LArProperties(const LArProperties&) = delete;
22  LArProperties(LArProperties&&) = delete;
23  LArProperties& operator=(const LArProperties&) = delete;
25  virtual ~LArProperties() = default;
26 
27  virtual double RadiationLength() const = 0;
28  virtual double Argon39DecayRate() const = 0;
29 
31  virtual double AtomicNumber() const = 0;
33  virtual double AtomicMass() const = 0;
35  virtual double ExcitationEnergy() const = 0;
36 
37  virtual double ScintResolutionScale() const = 0;
38  virtual double ScintFastTimeConst() const = 0;
39  virtual double ScintSlowTimeConst() const = 0;
40  virtual double ScintBirksConstant() const = 0;
41  virtual bool ScintByParticleType() const = 0;
42 
43  virtual double ScintYield(bool prescale = false) const = 0;
44  virtual double ScintPreScale(bool prescale = true) const = 0;
45  virtual double ScintYieldRatio() const = 0;
46 
47  virtual double ProtonScintYield(bool prescale = false) const = 0;
48  virtual double ProtonScintYieldRatio() const = 0;
49  virtual double MuonScintYield(bool prescale = false) const = 0;
50  virtual double MuonScintYieldRatio() const = 0;
51  virtual double KaonScintYield(bool prescale = false) const = 0;
52  virtual double KaonScintYieldRatio() const = 0;
53  virtual double PionScintYield(bool prescale = false) const = 0;
54  virtual double PionScintYieldRatio() const = 0;
55  virtual double ElectronScintYield(bool prescale = false) const = 0;
56  virtual double ElectronScintYieldRatio() const = 0;
57  virtual double AlphaScintYield(bool prescale = false) const = 0;
58  virtual double AlphaScintYieldRatio() const = 0;
59  virtual bool CerenkovLightEnabled() const = 0;
60 
61  virtual std::map<double, double> SlowScintSpectrum() const = 0;
62  virtual std::map<double, double> FastScintSpectrum() const = 0;
63  virtual std::map<double, double> RIndexSpectrum() const = 0;
64  virtual std::map<double, double> AbsLengthSpectrum() const = 0;
65  virtual std::map<double, double> RayleighSpectrum() const = 0;
66  virtual std::map<double, double> TpbAbs() const = 0;
67  virtual std::map<double, double> TpbEm() const = 0;
68 
69  virtual bool ExtraMatProperties() const = 0;
70  virtual double TpbTimeConstant() const = 0;
71 
72  virtual std::map<std::string, std::map<double, double>> SurfaceReflectances() const = 0;
73  virtual std::map<std::string, std::map<double, double>> SurfaceReflectanceDiffuseFractions()
74  const = 0;
75 
76  protected:
77  LArProperties() = default;
78 
79  }; // class LArProperties
80 } //namespace detinfo
81 
82 #endif // DETINFO_ILARPROPERTIES_H
virtual bool CerenkovLightEnabled() const =0
virtual double ElectronScintYieldRatio() const =0
virtual double ScintYieldRatio() const =0
virtual double AlphaScintYield(bool prescale=false) const =0
virtual std::map< double, double > AbsLengthSpectrum() const =0
virtual std::map< double, double > RayleighSpectrum() const =0
virtual std::map< double, double > RIndexSpectrum() const =0
virtual double AlphaScintYieldRatio() const =0
virtual double ScintSlowTimeConst() const =0
virtual double ScintFastTimeConst() const =0
virtual double ProtonScintYieldRatio() const =0
virtual double ScintResolutionScale() const =0
virtual double Argon39DecayRate() const =0
virtual double ProtonScintYield(bool prescale=false) const =0
virtual double ExcitationEnergy() const =0
Mean excitation energy of the liquid (eV)
virtual double PionScintYieldRatio() const =0
virtual bool ExtraMatProperties() const =0
virtual double AtomicMass() const =0
Atomic mass of the liquid (g/mol)
LArProperties & operator=(const LArProperties &)=delete
virtual double ScintBirksConstant() const =0
virtual double ElectronScintYield(bool prescale=false) const =0
virtual double ScintPreScale(bool prescale=true) const =0
virtual double PionScintYield(bool prescale=false) const =0
General LArSoft Utilities.
virtual std::map< double, double > TpbEm() const =0
virtual double TpbTimeConstant() const =0
virtual std::map< std::string, std::map< double, double > > SurfaceReflectances() const =0
virtual std::map< double, double > SlowScintSpectrum() const =0
virtual double MuonScintYield(bool prescale=false) const =0
virtual double KaonScintYield(bool prescale=false) const =0
virtual std::map< double, double > TpbAbs() const =0
virtual double AtomicNumber() const =0
Atomic number of the liquid.
virtual double ScintYield(bool prescale=false) const =0
virtual double RadiationLength() const =0
virtual double MuonScintYieldRatio() const =0
virtual ~LArProperties()=default
virtual std::map< std::string, std::map< double, double > > SurfaceReflectanceDiffuseFractions() const =0
virtual double KaonScintYieldRatio() const =0
virtual bool ScintByParticleType() const =0
virtual std::map< double, double > FastScintSpectrum() const =0