LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
DetectorProperties.h
Go to the documentation of this file.
1 // \file DetectorProperties.h
3 //
4 // \brief pure virtual base interface for detector properties
5 //
6 // \author jpaley@fnal.gov
7 //
9 #ifndef LARDATA_DETINFO_DETECTORPROPERTIES_H
10 #define LARDATA_DETINFO_DETECTORPROPERTIES_H
11 
13 
15 namespace detinfo {
16 
17  class DetectorClocksData;
19  public:
20  DetectorProperties() = default;
21  DetectorProperties(const DetectorProperties&) = delete;
25  virtual ~DetectorProperties() = default;
26 
46  virtual double Efield(unsigned int planegap = 0) const = 0;
47 
48  virtual double DriftVelocity(double efield = 0., double temperature = 0.) const = 0;
49 
51  virtual double BirksCorrection(double dQdX) const = 0;
52  virtual double BirksCorrection(double dQdX, double EField) const = 0;
53  virtual double ModBoxCorrection(double dQdX) const = 0;
54  virtual double ModBoxCorrection(double dQdX, double EField) const = 0;
55 
66  virtual double ElectronLifetime() const = 0;
67 
73  virtual double Density(double temperature) const = 0;
74  virtual double Temperature() const = 0;
75 
87  virtual double Eloss(double mom, double mass, double tcut) const = 0;
88 
95  virtual double ElossVar(double mom, double mass) const = 0;
96 
98  virtual double Density() const { return Density(Temperature()); }
99 
100  virtual double ElectronsToADC() const = 0;
101  virtual unsigned int NumberTimeSamples() const = 0;
102  virtual unsigned int ReadOutWindowSize() const = 0;
103  virtual double TimeOffsetU() const = 0;
104  virtual double TimeOffsetV() const = 0;
105  virtual double TimeOffsetZ() const = 0;
106  virtual double TimeOffsetY() const
107  {
108  throw std::runtime_error("DetectorProperties::TimeOffsetY() not implemented");
109  }
110 
111  // To set the model we want for the optical boundary simulation Simple or G4
112  // default
113  virtual bool SimpleBoundary() const = 0;
114 
115  // Returns data object that corresponds to data specific for a
116  // given clock-data object instance.
117  virtual DetectorPropertiesData DataFor(DetectorClocksData const& clockData) const = 0;
118 
119  }; // class DetectorProperties
120 } // namespace detinfo
121 
122 #endif // LARDATA_DETINFO_DETECTORPROPERTIES_H
virtual unsigned int ReadOutWindowSize() const =0
virtual double ElossVar(double mom, double mass) const =0
Energy loss fluctuation ( )
virtual double BirksCorrection(double dQdX) const =0
dQ/dX in electrons/cm, returns dE/dX in MeV/cm.
virtual double ModBoxCorrection(double dQdX) const =0
virtual double Density() const
Returns argon density at the temperature from Temperature()
virtual double Eloss(double mom, double mass, double tcut) const =0
Restricted mean energy loss ( )
virtual double TimeOffsetV() const =0
virtual DetectorPropertiesData DataFor(DetectorClocksData const &clockData) const =0
virtual double Temperature() const =0
virtual double TimeOffsetZ() const =0
virtual bool SimpleBoundary() const =0
General LArSoft Utilities.
virtual unsigned int NumberTimeSamples() const =0
Contains all timing reference information for the detector.
virtual double DriftVelocity(double efield=0., double temperature=0.) const =0
virtual ~DetectorProperties()=default
virtual double Efield(unsigned int planegap=0) const =0
Returns the nominal electric field in the specified volume.
DetectorProperties & operator=(const DetectorProperties &)=delete
virtual double TimeOffsetY() const
virtual double ElectronsToADC() const =0
virtual double TimeOffsetU() const =0
virtual double ElectronLifetime() const =0
Returns the attenuation constant for ionization electrons.