11 #ifndef DETINFO_DETECTORPROPERTIESSTD_H 12 #define DETINFO_DETECTORPROPERTIESSTD_H 49 Comment(
"electric field in front of each wire plane (the last one is " 50 "the big one!) [kV/cm]")};
53 Comment(
"electron lifetime in liquid argon [us]")};
56 Name(
"ElectronsToADC"),
57 Comment(
"conversion factor: (ADC counts)/(ionization electrons)")};
59 Name(
"NumberTimeSamples"),
60 Comment(
"number of TPC readout TDC clock ticks per event")};
62 Name(
"ReadOutWindowSize"),
63 Comment(
"number of TPC readout TDC clock ticks per readout window")};
69 Comment(
"tick offset subtracted to to convert spacepoint coordinates " 70 "to hit times on view U")};
73 Comment(
"tick offset subtracted to to convert spacepoint coordinates " 74 "to hit times on view V")};
77 Comment(
"tick offset subtracted to to convert spacepoint coordinates " 78 "to hit times on view Z")};
81 Comment(
"tick offset subtracted to to convert spacepoint coordinates " 82 "to hit times on view Y")};
85 Comment(
"tick offset subtracted to to convert spacepoint coordinates " 86 "to hit times on view X")};
90 Comment(
"parameter a of Sternheimer correction delta = 2log(10) x - " 91 "cbar + { a (x1-x)^k } theta(x1-x), x = log10(p/m)")};
94 Comment(
"parameter k of Sternheimer correction delta = 2log(10) x - " 95 "cbar + { a (x_1-x)^k } theta(x1-x), x = log10(p/m)")};
97 Name(
"SternheimerX0"),
98 Comment(
"minimum x = log10(p/m) for the application of Sternheimer " 101 Name(
"SternheimerX1"),
102 Comment(
"parameter x_1 of Sternheimer correction delta = 2log(10) x - " 103 "cbar + { a (x_1-x)^k } theta(x1-x), x = log10(p/m)")};
105 Name(
"SternheimerCbar"),
106 Comment(
"parameter cbar of Sternheimer correction delta = 2log(10) x - " 107 "cbar + { a (x_1-x)^k } theta(x1-x), x = log10(p/m)")};
109 Name(
"DriftVelFudgeFactor"),
110 Comment(
"Allows a scaling factor to fudge the drift velocity " 111 "calculation (as suggested by DriftVel Stancari")};
114 Name(
"UseIcarusMicrobooneDriftModel"),
115 Comment(
"Allows user to decide to use the ICARUS+MicroBooNE drift " 116 "model for velocity calculation as in arXiv:2008.09765"),
120 Name(
"IncludeInterPlanePitchInXTickOffsets"),
121 Comment(
"Historically, ConvertTicksToX has allowed for the drift time " 122 "between the wire planes. This is appropriate for " 123 "recob::RawDigits, and recob::Wires from the 1D unfolding, " 124 "but is not appropriate for recob::Wires from WireCell. " 125 "When disabled, the conversion propagates to the last plane, " 126 "rather than the first plane and assumes a standard drift velocity. " 127 "The default value is 'true', retaining the 'classic' behaviour"),
134 Comment(
"alpha parameter in the Modified Box recombination model."),
139 Comment(
"beta parameter in the Modified Box recombination model."),
148 std::set<std::string>
const& ignore_params = {});
157 double Efield(
unsigned int planegap = 0)
const override;
160 double temperature = 0.)
const override;
183 double Density(
double temperature = 0.)
const override;
202 double Eloss(
double mom,
double mass,
double tcut)
const override;
212 double ElossVar(
double mom,
double mass)
const override;
237 std::set<std::string>
const& ignore_params);
295 #endif // DETINFO_DETECTOR_PROPERTIES_H unsigned int ReadOutWindowSize() const override
double TimeOffsetU() const override
fhicl::Atom< double > SternheimerK
unsigned int NumberTimeSamples() const override
DetectorPropertiesStandard(fhicl::ParameterSet const &pset, geo::GeometryCore const *geo, geo::WireReadoutGeom const *wireReadoutGeom, detinfo::LArProperties const *lp, std::set< std::string > const &ignore_params={})
fhicl::Atom< double > SternheimerA
fhicl::OptionalAtom< double > TimeOffsetY
fhicl::Atom< bool > IncludeInterPlanePitchInXTickOffsets
double fTemperature
kelvin
virtual ~DetectorPropertiesStandard()=default
fhicl::OptionalAtom< double > TimeOffsetV
void ValidateAndConfigure(fhicl::ParameterSet const &p, std::set< std::string > const &ignore_params)
Configures the provider, first validating the configuration.
double ElossVar(double mom, double mass) const override
Energy loss fluctuation ( )
double BirksCorrection(double dQdX) const override
dQ/dX in electrons/cm, returns dE/dX in MeV/cm.
unsigned int fNumberTimeSamples
number of clock ticks per event
std::vector< std::vector< double > > fDriftDirection
fhicl::Atom< double > SternheimerCbar
fhicl::Atom< double > Electronlifetime
double Temperature() const override
In kelvin.
virtual double Density() const
Returns argon density at the temperature from Temperature()
void SetNumberTimeSamples(unsigned int nsamp)
double TimeOffsetZ() const override
fhicl::Atom< double > SternheimerX0
double cbar
parameter Cbar
fhicl::Atom< double > SternheimerX1
fhicl::Atom< double > ModBoxBeta
DetectorPropertiesData DataFor(detinfo::DetectorClocksData const &clock_data) const override
pure virtual base interface for detector clocks
Access the description of the physical detector geometry.
fhicl::Atom< double > Temperature
fhicl::Atom< double > DriftVelFudgeFactor
fhicl::OptionalAtom< double > TimeOffsetZ
fhicl::Atom< bool > SimpleBoundary
bool fIncludeInterPlanePitchInXTickOffsets
constexpr double kModBoxB
Modified Box Beta in g/(MeV cm²)*kV/cm.
Interface for a class providing readout channel mapping to geometry.
SternheimerParameters_t fSternheimerParameters
Sternheimer parameters.
double TimeOffsetY() const override
geo::GeometryCore const * fGeo
fhicl::Atom< unsigned int > NumberTimeSamples
General LArSoft Utilities.
Description of the physical geometry of one entire detector.
Parameters for Sternheimer density effect corrections.
detinfo::LArProperties const * fLP
double TimeOffsetV() const override
fhicl::OptionalAtom< double > TimeOffsetX
fhicl::Atom< double > ModBoxAlpha
double ModBoxCorrection(double dQdX) const override
fhicl::Atom< bool > UseIcarusMicrobooneDriftModel
double ElectronLifetime() const override
Returns the attenuation constant for ionization electrons.
double fElectronlifetime
microseconds
Contains all timing reference information for the detector.
Structure for configuration parameters.
unsigned int fReadOutWindowSize
number of clock ticks per readout window
Container for a list of pointers to providers.
std::vector< double > fEfield
kV/cm (per inter-plane volume) !
Data structure containing constant pointers to classes.
geo::WireReadoutGeom const * fChannelMap
fhicl::Atom< unsigned int > ReadOutWindowSize
fhicl::OptionalAtom< double > TimeOffsetU
double DriftVelocity(double efield=0., double temperature=0.) const override
cm/us
bool SimpleBoundary() const override
constexpr double kModBoxA
Modified Box Alpha.
Collection of Physical constants used in LArSoft.
double ElectronsToADC() const override
fhicl::Sequence< double > Efield
Interface to geometry for wire readouts .
fhicl::Atom< double > ElectronsToADC
double Eloss(double mom, double mass, double tcut) const override
Restricted mean energy loss (dE/dx)
double fDriftVelFudgeFactor
bool fUseIcarusMicrobooneDriftModel