Classes | Public Member Functions | Private Attributes | List of all members
shower::ShowerEnergyAlg Class Reference

#include <ShowerEnergyAlg.h>

Classes

struct  LinearFunction
 

Public Member Functions

 ShowerEnergyAlg (fhicl::ParameterSet const &pset)
 
double ShowerEnergy (detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, std::vector< art::Ptr< recob::Hit >> const &hits, geo::PlaneID::PlaneID_t plane) const
 

Private Attributes

std::array< LinearFunction, 3 > const fLinearFunctions
 

Detailed Description

Definition at line 30 of file ShowerEnergyAlg.h.

Constructor & Destructor Documentation

shower::ShowerEnergyAlg::ShowerEnergyAlg ( fhicl::ParameterSet const &  pset)
explicit

Definition at line 26 of file ShowerEnergyAlg.cxx.

27  : fLinearFunctions{{{pset.get<double>("UGradient"), pset.get<double>("UIntercept")},
28  {pset.get<double>("VGradient"), pset.get<double>("VIntercept")},
29  {pset.get<double>("ZGradient"), pset.get<double>("ZIntercept")}}}
30 {}
std::array< LinearFunction, 3 > const fLinearFunctions

Member Function Documentation

double shower::ShowerEnergyAlg::ShowerEnergy ( detinfo::DetectorClocksData const &  clockData,
detinfo::DetectorPropertiesData const &  detProp,
std::vector< art::Ptr< recob::Hit >> const &  hits,
geo::PlaneID::PlaneID_t  plane 
) const

This overload is preferred as it does not rely on the cached DetectorProperties data member.

Definition at line 33 of file ShowerEnergyAlg.cxx.

37 {
38  // Should we throw instead if the plane is not in the range [0,3)?
39  if (plane >= fLinearFunctions.size()) { return 0.; }
40 
41  auto const coeff = sampling_rate(clockData) / (detprop.ElectronLifetime() * 1e3);
42 
43  auto in_plane = [plane](auto const& hit) { return hit.WireID().Plane == plane; };
44  auto charge = [coeff](auto const& hit) {
45  return hit.Integral() * std::exp(coeff * hit.PeakTime());
46  };
47 
48  double const totalCharge =
49  ranges::accumulate(hits | ranges::views::transform(to_element) | ranges::views::filter(in_plane) |
50  ranges::views::transform(charge),
51  0.);
52 
53  return fLinearFunctions[plane].energy_from(totalCharge);
54 }
std::array< LinearFunction, 3 > const fLinearFunctions
constexpr to_element_t to_element
Definition: ToElement.h:24
Detector simulation of raw signals on wires.
static unsigned filter(unsigned char *out, const unsigned char *in, unsigned w, unsigned h, const LodePNG_InfoColor *info)
Definition: lodepng.cpp:3576
double sampling_rate(DetectorClocksData const &data)
Returns the period of the TPC readout electronics clock.

Member Data Documentation

std::array<LinearFunction, 3> const shower::ShowerEnergyAlg::fLinearFunctions
private

Definition at line 51 of file ShowerEnergyAlg.h.


The documentation for this class was generated from the following files: