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