LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
ShowerEnergyAlg.cxx
Go to the documentation of this file.
1 // Class: ShowerEnergyAlg
3 // File: ShowerEnergyAlg.cxx
4 // Author: Mike Wallbank (m.wallbank@sheffield.ac.uk), November 2015
5 //
6 // Shower energy finding class
8 
10 
19 #include "range/v3/numeric.hpp"
20 #include "range/v3/view.hpp"
21 
22 #include <cmath>
23 
24 using lar::to_element;
25 
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 {}
31 
33  detinfo::DetectorPropertiesData const& detprop,
35  geo::PlaneID::PlaneID_t const plane) const
36 {
37  // Should we throw instead if the plane is not in the range [0,3)?
38  if (plane >= fLinearFunctions.size()) { return 0.; }
39 
40  auto const coeff = sampling_rate(clockData) / (detprop.ElectronLifetime() * 1e3);
41 
42  auto in_plane = [plane](auto const& hit) { return hit.WireID().Plane == plane; };
43  auto charge = [coeff](auto const& hit) {
44  return hit.Integral() * std::exp(coeff * hit.PeakTime());
45  };
46 
47  double const totalCharge =
48  ranges::accumulate(hits | ranges::views::transform(to_element) |
49  ranges::views::filter(in_plane) | ranges::views::transform(charge),
50  0.);
51 
52  return fLinearFunctions[plane].energy_from(totalCharge);
53 }
std::array< LinearFunction, 3 > const fLinearFunctions
Utilities related to art service access.
constexpr to_element_t to_element
Definition: ToElement.h:25
double ShowerEnergy(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, std::vector< art::Ptr< recob::Hit >> const &hits, geo::PlaneID::PlaneID_t plane) const
Declaration of signal hit object.
unsigned int PlaneID_t
Type for the ID number.
Definition: geo_types.h:464
ShowerEnergyAlg(fhicl::ParameterSet const &pset)
auto vector(Vector const &v)
Returns a manipulator which will print the specified array.
Definition: DumpUtils.h:289
void hits()
Definition: readHits.C:15
T get(std::string const &key) const
Definition: ParameterSet.h:314
Definition of data types for geometry description.
Detector simulation of raw signals on wires.
Contains all timing reference information for the detector.
double sampling_rate(DetectorClocksData const &data)
Returns the period of the TPC readout electronics clock.