17 #include "larevt/CalibrationDBI/Interface/ElectronLifetimeProvider.h" 18 #include "larevt/CalibrationDBI/Interface/ElectronLifetimeService.h" 30 ,
fModBoxBF(
"ModBoxB", config.ModBoxBTF1().c_str(), 0, 90)
32 ,
fBirksKF(
"BirksK", config.BirksKTF1().c_str(), 0, 90)
37 <<
"Must select either '0' for exponential or '1' for exponential + " 42 std::vector<double> modboxb_param;
43 if (!config.ModBoxBParam(modboxb_param)) modboxb_param = {
util::kModBoxB};
45 for (
unsigned i = 0; i < modboxb_param.size(); i++) {
46 fModBoxBF.SetParameter(i, modboxb_param[i]);
49 std::vector<double> birksk_param;
50 if (!config.BirksKParam(birksk_param)) birksk_param = {
util::kRecombk};
52 for (
unsigned i = 0; i < birksk_param.size(); i++) {
53 fBirksKF.SetParameter(i, birksk_param[i]);
64 double const T0)
const 80 unsigned int const plane,
81 double const T0)
const 84 double const dQdx_e = dQdx / fADCtoEl;
97 double const phi)
const 114 unsigned int const plane,
117 double const phi)
const 120 double const dQdx_e = dQdx / fADCtoEl;
121 return dEdx_from_dQdx_e(clock_data, det_prop, dQdx_e, time, T0, EField, phi);
131 double const T0)
const 147 unsigned int const plane,
148 double const T0)
const 151 double const dQdx_e = dQdx / fADCtoEl;
164 double const phi)
const 181 unsigned int const plane,
184 double const phi)
const 187 double const dQdx_e = dQdx / fADCtoEl;
188 return dEdx_from_dQdx_e(clock_data, det_prop, dQdx_e, time, T0, EField, phi);
196 double const T0)
const 206 double const phi)
const 224 double const T0)
const 228 double const adjusted_time = t * timetick - T0 * 1
e-3;
234 return exp(adjusted_time / tau);
238 auto const& elifetime_provider =
240 return elifetime_provider.Lifetime(adjusted_time);
250 double E_field)
const 255 double const Beta =
fModBoxBF.Eval(phi) / (rho * E_field);
257 double const dEdx = (exp(Beta * Wion * dQdx) - Alpha) / Beta;
265 double E_field)
const 273 double const dEdx = dQdx / (A / Wion - K / E_field * dQdx);
std::vector< double > const fCalAreaConstants
Declaration of signal hit object.
double ElectronLifetime() const
float Integral() const
Integral under the calibrated signal waveform of the hit, in tick x ADC units.
geo::WireID const & WireID() const
Initial tdc tick for hit.
float PeakAmplitude() const
The estimated amplitude of the hit at its peak, in ADC units.
double Efield(unsigned int planegap=0) const
kV/cm
constexpr double kGeVToElectrons
23.6eV per ion pair, 1e9 eV/GeV
double dEdx_AMP(detinfo::DetectorClocksData const &clock_data, detinfo::DetectorPropertiesData const &det_prop, recob::Hit const &hit, double pitch, double T0=0) const
constexpr double kModBoxB
Modified Box Beta in g/(MeV cm²)*kV/cm.
bool const fDoLifeTimeCorrection
double Density(double temperature=0.) const
Returns argon density at a given temperature.
PlaneID_t Plane
Index of the plane within its TPC.
std::vector< double > const fCalAmpConstants
double BirksCorrection(double dQdx, double phi, double rho, double E_field) const
Definition of data types for geometry description.
float dEdx(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const TCSlice &slc, TP3D &tp3d)
Detector simulation of raw signals on wires.
CalorimetryAlg(const fhicl::ParameterSet &pset)
float PeakTime() const
Time of the signal peak, in tick units.
Contains all timing reference information for the detector.
double dEdx_from_dQdx_e(detinfo::DetectorClocksData const &clock_data, detinfo::DetectorPropertiesData const &det_prop, double dQdx_e, double time, double T0=0) const
constexpr double kRecombk
double ModBoxCorrection(double dQdx, double phi, double rho, double E_field) const
double dEdx_AREA(detinfo::DetectorClocksData const &clock_data, detinfo::DetectorPropertiesData const &det_prop, recob::Hit const &hit, double pitch, double T0=0) const
int trigger_offset(DetectorClocksData const &data)
2D representation of charge deposited in the TDC/wire plane
double LifetimeCorrection(detinfo::DetectorClocksData const &clock_data, detinfo::DetectorPropertiesData const &det_prop, double time, double T0=0) const
double sampling_rate(DetectorClocksData const &data)
Returns the period of the TPC readout electronics clock.
fhicl::Sequence< double > CalAmpConstants
cet::coded_exception< error, detail::translate > exception