11 #ifndef DETINFO_DETECTORPROPERTIESSTD_H
12 #define DETINFO_DETECTORPROPERTIESSTD_H
24 #include "fhiclcpp/ParameterSet.h"
25 #include "fhiclcpp/fwd.h"
26 #include "fhiclcpp/types/Atom.h"
27 #include "fhiclcpp/types/OptionalAtom.h"
28 #include "fhiclcpp/types/Sequence.h"
48 Comment(
"electric field in front of each wire plane (the last one is "
49 "the big one!) [kV/cm]")};
52 Comment(
"electron lifetime in liquid argon [us]")};
55 Name(
"ElectronsToADC"),
56 Comment(
"conversion factor: (ADC counts)/(ionization electrons)")};
58 Name(
"NumberTimeSamples"),
59 Comment(
"number of TPC readout TDC clock ticks per event")};
61 Name(
"ReadOutWindowSize"),
62 Comment(
"number of TPC readout TDC clock ticks per readout window")};
68 Comment(
"tick offset subtracted to to convert spacepoint coordinates "
69 "to hit times on view U")};
72 Comment(
"tick offset subtracted to to convert spacepoint coordinates "
73 "to hit times on view V")};
76 Comment(
"tick offset subtracted to to convert spacepoint coordinates "
77 "to hit times on view Z")};
80 Comment(
"tick offset subtracted to to convert spacepoint coordinates "
81 "to hit times on view Y")};
84 Comment(
"tick offset subtracted to to convert spacepoint coordinates "
85 "to hit times on view X")};
89 Comment(
"parameter a of Sternheimer correction delta = 2log(10) x - "
90 "cbar + { a (x1-x)^k } theta(x1-x), x = log10(p/m)")};
93 Comment(
"parameter k of Sternheimer correction delta = 2log(10) x - "
94 "cbar + { a (x_1-x)^k } theta(x1-x), x = log10(p/m)")};
96 Name(
"SternheimerX0"),
97 Comment(
"minimum x = log10(p/m) for the application of Sternheimer "
100 Name(
"SternheimerX1"),
101 Comment(
"parameter x_1 of Sternheimer correction delta = 2log(10) x - "
102 "cbar + { a (x_1-x)^k } theta(x1-x), x = log10(p/m)")};
104 Name(
"SternheimerCbar"),
105 Comment(
"parameter cbar of Sternheimer correction delta = 2log(10) x - "
106 "cbar + { a (x_1-x)^k } theta(x1-x), x = log10(p/m)")};
108 Name(
"DriftVelFudgeFactor"),
109 Comment(
"Allows a scaling factor to fudge the drift velocity "
110 "calculation (as suggested by DriftVel Stancari")};
113 Name(
"UseIcarusMicrobooneDriftModel"),
114 Comment(
"Allows user to decide to use the ICARUS+MicroBooNE drift "
115 "model for velocity calculation as in arXiv:2008.09765"),
119 Name(
"IncludeInterPlanePitchInXTickOffsets"),
120 Comment(
"Historically, ConvertTicksToX has allowed for the drift time "
121 "between the wire planes. This is appropriate for "
122 "recob::RawDigits, and recob::Wires from the 1D unfolding, "
123 "but is not appropriate for recob::Wires from WireCell. "
124 "The default value is 'true', retaining the 'classic' behaviour"),
131 Comment(
"alpha parameter in the Modified Box recombination model."),
137 Comment(
"beta parameter in the Modified Box recombination model."),
146 std::set<std::string>
const& ignore_params = {});
159 double Efield(
unsigned int planegap = 0)
const override;
162 double temperature = 0.)
const override;
186 double Density(
double temperature = 0.)
const override;
209 double Eloss(
double mom,
double mass,
double tcut)
const override;
219 double ElossVar(
double mom,
double mass)
const override;
276 std::set<std::string>
const& ignore_params);
278 std::string
CheckTimeOffsets(std::set<geo::View_t>
const& requested_views)
const;
335 #endif // DETINFO_DETECTOR_PROPERTIES_H
DetectorPropertiesStandard(fhicl::ParameterSet const &pset, const geo::GeometryCore *geo, const detinfo::LArProperties *lp, std::set< std::string > const &ignore_params={})
const detinfo::LArProperties * fLP
double ModBoxCorrection(double dQdX) const override
fhicl::Atom< double > SternheimerK
fhicl::Atom< double > SternheimerA
DetectorPropertiesData DataFor(detinfo::DetectorClocksData const &clock_data) const override
fhicl::OptionalAtom< double > TimeOffsetY
fhicl::Atom< bool > IncludeInterPlanePitchInXTickOffsets
double fTemperature
kelvin
virtual ~DetectorPropertiesStandard()=default
unsigned int NumberTimeSamples() const override
double Temperature() const override
In kelvin.
fhicl::OptionalAtom< double > TimeOffsetV
double TimeOffsetY() const override
double Eloss(double mom, double mass, double tcut) const override
Restricted mean energy loss (dE/dx)
void ValidateAndConfigure(fhicl::ParameterSet const &p, std::set< std::string > const &ignore_params)
Configures the provider, first validating the configuration.
unsigned int fNumberTimeSamples
number of clock ticks per event
std::vector< std::vector< double > > fDriftDirection
fhicl::Atom< double > SternheimerCbar
fhicl::Atom< double > Electronlifetime
virtual double Density() const
Returns argon density at the temperature from Temperature()
void SetNumberTimeSamples(unsigned int nsamp)
fhicl::Atom< double > SternheimerX0
double cbar
parameter Cbar
fhicl::Atom< double > SternheimerX1
fhicl::Atom< double > ModBoxBeta
pure virtual base interface for detector clocks
Access the description of 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.
double ElossVar(double mom, double mass) const override
Energy loss fluctuation ( )
SternheimerParameters_t fSternheimerParameters
Sternheimer parameters.
double ElectronLifetime() const override
Returns the attenuation constant for ionization electrons.
BEGIN_PROLOG vertical distance to the surface Name
std::string CheckTimeOffsets(std::set< geo::View_t > const &requested_views) const
fhicl::Atom< unsigned int > NumberTimeSamples
double TimeOffsetU() const override
Description of geometry of one entire detector.
Parameters for Sternheimer density effect corrections.
fhicl::OptionalAtom< double > TimeOffsetX
fhicl::Atom< double > ModBoxAlpha
fhicl::Atom< bool > UseIcarusMicrobooneDriftModel
double fElectronlifetime
microseconds
double DriftVelocity(double efield=0., double temperature=0.) const override
cm/us
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.
double BirksCorrection(double dQdX) const override
dQ/dX in electrons/cm, returns dE/dX in MeV/cm.
std::vector< double > fEfield
kV/cm (per inter-plane volume) !
Data structure containing constant pointers to classes.
double TimeOffsetV() const override
fhicl::Atom< unsigned int > ReadOutWindowSize
fhicl::OptionalAtom< double > TimeOffsetU
constexpr double kModBoxA
Modified Box Alpha.
Collection of Physical constants used in LArSoft.
double TimeOffsetZ() const override
bool SimpleBoundary() const override
double ElectronsToADC() const override
fhicl::Sequence< double > Efield
fhicl::Atom< double > ElectronsToADC
const geo::GeometryCore * fGeo
double Efield(unsigned int planegap=0) const override
kV/cm
unsigned int ReadOutWindowSize() const override
double fDriftVelFudgeFactor
bool fUseIcarusMicrobooneDriftModel