Classes | Public Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
dune::NeutrinoEnergyRecoAlg Class Reference

NeutrinoEnergyRecoAlg class. More...

#include <NeutrinoEnergyRecoAlg.h>

Classes

struct  EnergyRecoInputHolder
 EnergyRecoInputHolder struct. More...
 

Public Member Functions

 NeutrinoEnergyRecoAlg (const fhicl::ParameterSet &pset, const std::string &trackLabel, const std::string &showerLabel, const std::string &hitLabel, const std::string wireLabel, const std::string &trackToHitLabel, const std::string &showerToHitLabel, const std::string &hitToSpacePointLabel)
 Constructor. More...
 
dune::EnergyRecoOutput CalculateNeutrinoEnergy (const art::Ptr< recob::Track > &pMuonTrack, const art::Event &event)
 Calculates neutrino energy using a muon track (the muon track may be ignored if it isn't of a suitable quality) More...
 
dune::EnergyRecoOutput CalculateNeutrinoEnergy (const art::Ptr< recob::Shower > &pElectronShower, const art::Event &event)
 Calculates neutrino energy using an electron shower(the electron may be ignored if it isn't of a suitable quality) More...
 
dune::EnergyRecoOutput CalculateNeutrinoEnergy (const art::Event &event)
 Calculates neutrino energy by summing wire charges. More...
 
dune::EnergyRecoOutput CalculateNeutrinoEnergyViaMuonRanging (const art::Ptr< recob::Track > &pMuonTrack, const art::Event &event)
 Calculates neutrino energy explicitly using muon momentum by range. More...
 
dune::EnergyRecoOutput CalculateNeutrinoEnergyViaMuonMCS (const art::Ptr< recob::Track > &pMuonTrack, const art::Event &event)
 Calculates neutrino energy explicitly using muon multiple scattering. More...
 

Private Types

enum  EnergyRecoMethod { kRecoMethodNotSet = -1, kMuonAndHadronic = 1, kElectronAndHadronic, kAllCharges }
 The energy reconstruction method. More...
 
enum  MuonTrackMethod { kTrackMethodNotSet = -1, kMCS, kContained }
 The muon momentum reconstruction method. More...
 
enum  MuonContainmentStatus { kContainmentNotSet = -1, kIsExiting, kIsContained }
 The muon containment status. More...
 
typedef Position4_t Momentum4_t
 

Private Member Functions

double CalculateMuonMomentumByRange (const art::Ptr< recob::Track > pMuonTrack)
 Calculates muon momentum by range. More...
 
double CalculateMuonMomentumByMCS (const art::Ptr< recob::Track > pMuonTrack)
 Calculates muon momentum by multiple coulomb scattering. More...
 
double CalculateElectronEnergy (const art::Ptr< recob::Shower > &pElectronShower, const art::Event &event)
 Calculates an electron shower's deposited energy by converting its deposited charge. More...
 
double CalculateEnergyFromCharge (const double charge)
 Converts deposited charge into energy by converting to number of electrons and correcting for average recombination. More...
 
bool IsContained (const std::vector< art::Ptr< recob::Hit > > &hits, const art::Event &event)
 Checks if a set of track hits are contained within a central volume of the detector. More...
 
Momentum4_t CalculateParticle4Momentum (const double mass, const double momentum, const double directionX, const double directionY, const double directionZ)
 Calculates a particle's four-momentum vector. More...
 
double CalculateLinearlyCorrectedValue (const double value, const double correctionGradient, const double correctionIntercept)
 Linearly corrects a value. More...
 
double CalculateUncorrectedMuonMomentumByMCS (const art::Ptr< recob::Track > &pMuonTrack)
 Calculates the raw muon momentum by multiple coulomb scattering. More...
 
dune::EnergyRecoOutput CalculateNeutrinoEnergy (const std::vector< art::Ptr< recob::Hit > > &leptonHits, const art::Event &event, const EnergyRecoInputHolder &energyRecoInputHolder)
 Calculates neutrino energy by summing hadronic deposited energy and lepton energy. More...
 
bool IsPointContained (const double x, const double y, const double z)
 Check's if a point is contained within a central detector volume. More...
 

Private Attributes

double kMuonMass = 0.1056583745
 the muon mass (hardcoded unfortunately) More...
 
double kElectronMass = 0.0005109989461
 the electron mass (hardcoded unfortunately); More...
 
calo::CalorimetryAlg fCalorimetryAlg
 the calorimetry algorithm More...
 
double fGradTrkMomRange
 the correction gradient for muon momentum by range More...
 
double fIntTrkMomRange
 the correction intercept for muon momentum by range More...
 
double fGradTrkMomMCS
 the correction gradient for muom momentum by MCS More...
 
double fIntTrkMomMCS
 the correction intercept for muon momentum by MCS More...
 
double fGradNuMuHadEnCont
 the hqdronic energy correction gradient for numu+contained muon More...
 
double fIntNuMuHadEnCont
 the hadronic energy correction intercept for numu+contained muon More...
 
double fGradNuMuHadEnExit
 the hadronic energy correction gradient for numu+exiting muon More...
 
double fIntNuMuHadEnExit
 the hadronic energy correction intercept for numu+exiting muon More...
 
double fGradShwEnergy
 the electron shower energy correction gradient More...
 
double fIntShwEnergy
 the electron shower energy correction intercept More...
 
double fGradNuEHadEn
 the hadronic energy correction gradient for nue More...
 
double fIntNuEHadEn
 the hadronic energy correction intercept for nue More...
 
double fDistanceToWallThreshold
 the min distance from a detector wall to be considered contained More...
 
double fMuonRangeToMCSThreshold
 the ratio threshold at which MCS is used for contained muons More...
 
double fRecombFactor
 the average reccombination factor More...
 
std::string fTrackLabel
 the track label More...
 
std::string fShowerLabel
 the shower label More...
 
std::string fHitLabel
 the hit label More...
 
std::string fWireLabel
 the wire label More...
 
std::string fTrackToHitLabel
 the associated track-to-hit label More...
 
std::string fShowerToHitLabel
 the associated shower-to-hit label More...
 
std::string fHitToSpacePointLabel
 the associated hit-to-space point label More...
 

Detailed Description

NeutrinoEnergyRecoAlg class.

Definition at line 31 of file NeutrinoEnergyRecoAlg.h.

Member Typedef Documentation

Definition at line 101 of file NeutrinoEnergyRecoAlg.h.

Member Enumeration Documentation

The energy reconstruction method.

Enumerator
kRecoMethodNotSet 

method not set

kMuonAndHadronic 

muon momentum and hadronic deposited energy method

kElectronAndHadronic 

electron deposited energy and hadronic deposited energy method

kAllCharges 

summed wire charges

Definition at line 107 of file NeutrinoEnergyRecoAlg.h.

108  {
109  kRecoMethodNotSet = -1, ///< method not set
110  kMuonAndHadronic = 1, ///< muon momentum and hadronic deposited energy method
111  kElectronAndHadronic, ///< electron deposited energy and hadronic deposited energy method
112  kAllCharges ///< summed wire charges
113  };
muon momentum and hadronic deposited energy method
electron deposited energy and hadronic deposited energy method

The muon containment status.

Enumerator
kContainmentNotSet 

Containment not set.

kIsExiting 

Muon exits.

kIsContained 

Muon is contained.

Definition at line 122 of file NeutrinoEnergyRecoAlg.h.

123  {
124  kContainmentNotSet = -1, ///< Containment not set
125  kIsExiting, ///< Muon exits
126  kIsContained ///< Muon is contained
127  };

The muon momentum reconstruction method.

Enumerator
kTrackMethodNotSet 

method not set

kMCS 

muon momentum by multiple scattering

kContained 

muon momentum by range

Definition at line 115 of file NeutrinoEnergyRecoAlg.h.

116  {
117  kTrackMethodNotSet = -1, ///< method not set
118  kMCS, ///< muon momentum by multiple scattering
119  kContained ///< muon momentum by range
120  };
muon momentum by multiple scattering

Constructor & Destructor Documentation

dune::NeutrinoEnergyRecoAlg::NeutrinoEnergyRecoAlg ( const fhicl::ParameterSet pset,
const std::string trackLabel,
const std::string showerLabel,
const std::string hitLabel,
const std::string  wireLabel,
const std::string trackToHitLabel,
const std::string showerToHitLabel,
const std::string hitToSpacePointLabel 
)

Constructor.

Parameters
psetthe FCL parameter set
trackLabelthe track label
showerLabelthe shower label
hitLabelthe hit label
wireLabelthe wire label
trackToHitLabelthe associated track-to-hit label
showerToHitLabelthe associated shower-to-hit label
hitToSpacePointLabelthe associated hit-to-space point label

Definition at line 33 of file NeutrinoEnergyRecoAlg.cc.

35  :
36  fCalorimetryAlg(pset.get<fhicl::ParameterSet>("CalorimetryAlg")),
37  fGradTrkMomRange(pset.get<double>("GradTrkMomRange")),
38  fIntTrkMomRange(pset.get<double>("IntTrkMomRange")),
39  fGradTrkMomMCS(pset.get<double>("GradTrkMomMCS")),
40  fIntTrkMomMCS(pset.get<double>("IntTrkMomMCS")),
41  fGradNuMuHadEnCont(pset.get<double>("GradNuMuHadEnCont")),
42  fIntNuMuHadEnCont(pset.get<double>("IntNuMuHadEnCont")),
43  fGradNuMuHadEnExit(pset.get<double>("GradNuMuHadEnExit")),
44  fIntNuMuHadEnExit(pset.get<double>("IntNuMuHadEnExit")),
45  fGradShwEnergy(pset.get<double>("GradShwEnergy")),
46  fIntShwEnergy(pset.get<double>("IntShwEnergy")),
47  fGradNuEHadEn(pset.get<double>("GradNuEHadEn")),
48  fIntNuEHadEn(pset.get<double>("IntNuEHadEn")),
49  fDistanceToWallThreshold(pset.get<double>("DistanceToWallThreshold")),
50  fMuonRangeToMCSThreshold(pset.get<double>("MuonRangeToMCSThreshold")),
51  fRecombFactor(pset.get<double>("RecombFactor")),
52  fTrackLabel(trackLabel),
53  fShowerLabel(showerLabel),
54  fHitLabel(hitLabel),
55  fWireLabel(wireLabel),
56  fTrackToHitLabel(trackToHitLabel),
57  fShowerToHitLabel(showerToHitLabel),
58  fHitToSpacePointLabel(hitToSpacePointLabel)
59 {
60 }
double fGradNuMuHadEnExit
the hadronic energy correction gradient for numu+exiting muon
std::string fTrackLabel
the track label
double fIntShwEnergy
the electron shower energy correction intercept
std::string fHitLabel
the hit label
std::string fShowerToHitLabel
the associated shower-to-hit label
double fGradNuMuHadEnCont
the hqdronic energy correction gradient for numu+contained muon
std::string fWireLabel
the wire label
double fIntNuMuHadEnExit
the hadronic energy correction intercept for numu+exiting muon
double fRecombFactor
the average reccombination factor
std::string fShowerLabel
the shower label
double fGradTrkMomRange
the correction gradient for muon momentum by range
T get(std::string const &key) const
Definition: ParameterSet.h:271
double fDistanceToWallThreshold
the min distance from a detector wall to be considered contained
double fIntTrkMomMCS
the correction intercept for muon momentum by MCS
double fIntTrkMomRange
the correction intercept for muon momentum by range
double fIntNuEHadEn
the hadronic energy correction intercept for nue
double fGradShwEnergy
the electron shower energy correction gradient
double fMuonRangeToMCSThreshold
the ratio threshold at which MCS is used for contained muons
double fGradNuEHadEn
the hadronic energy correction gradient for nue
std::string fHitToSpacePointLabel
the associated hit-to-space point label
double fGradTrkMomMCS
the correction gradient for muom momentum by MCS
calo::CalorimetryAlg fCalorimetryAlg
the calorimetry algorithm
std::string fTrackToHitLabel
the associated track-to-hit label
double fIntNuMuHadEnCont
the hadronic energy correction intercept for numu+contained muon

Member Function Documentation

double dune::NeutrinoEnergyRecoAlg::CalculateElectronEnergy ( const art::Ptr< recob::Shower > &  pElectronShower,
const art::Event event 
)
private

Calculates an electron shower's deposited energy by converting its deposited charge.

Parameters
pElectronShowerthe electron shower
eventthe art event
Returns
the reconstructed electron energy

Definition at line 251 of file NeutrinoEnergyRecoAlg.cc.

252 {
253  const std::vector<art::Ptr<recob::Hit> > electronHits(dune_ana::DUNEAnaHitUtils::GetHitsOnPlane(dune_ana::DUNEAnaShowerUtils::GetHits(pElectronShower, event, fShowerToHitLabel),2));
254  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(event);
255  auto const detProp = art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataFor(event, clockData);
256  const double electronObservedCharge(dune_ana::DUNEAnaHitUtils::LifetimeCorrectedTotalHitCharge(clockData, detProp, electronHits));
257  const double uncorrectedElectronEnergy(this->CalculateEnergyFromCharge(electronObservedCharge));
258 
259  return this->CalculateLinearlyCorrectedValue(uncorrectedElectronEnergy, fGradShwEnergy, fIntShwEnergy);
260 }
double CalculateEnergyFromCharge(const double charge)
Converts deposited charge into energy by converting to number of electrons and correcting for average...
double fIntShwEnergy
the electron shower energy correction intercept
double CalculateLinearlyCorrectedValue(const double value, const double correctionGradient, const double correctionIntercept)
Linearly corrects a value.
std::string fShowerToHitLabel
the associated shower-to-hit label
static double LifetimeCorrectedTotalHitCharge(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const std::vector< art::Ptr< recob::Hit > > &hits)
get the total hit charge, corrected for lifetime
static std::vector< art::Ptr< recob::Hit > > GetHits(const art::Ptr< recob::Shower > &pShower, const art::Event &evt, const std::string &label)
Get the hits associated with the shower.
double fGradShwEnergy
the electron shower energy correction gradient
static std::vector< art::Ptr< recob::Hit > > GetHitsOnPlane(const std::vector< art::Ptr< recob::Hit >> &hits, const geo::PlaneID::PlaneID_t planeID)
Get all hits on a specific plane.
double dune::NeutrinoEnergyRecoAlg::CalculateEnergyFromCharge ( const double  charge)
private

Converts deposited charge into energy by converting to number of electrons and correcting for average recombination.

Parameters
chargethe deposited charge
Returns
the reconstructed deposited energy

Definition at line 264 of file NeutrinoEnergyRecoAlg.cc.

265 {
267 }
double ElectronsFromADCArea(double area, unsigned short plane) const
constexpr double kGeVToElectrons
23.6eV per ion pair, 1e9 eV/GeV
double fRecombFactor
the average reccombination factor
calo::CalorimetryAlg fCalorimetryAlg
the calorimetry algorithm
double dune::NeutrinoEnergyRecoAlg::CalculateLinearlyCorrectedValue ( const double  value,
const double  correctionGradient,
const double  correctionIntercept 
)
private

Linearly corrects a value.

Parameters
valuethe raw value
correctionGradientthe linear correction gradient
correctionInterceptthe linear correction intercept
Returns
the linearly corrected value

Definition at line 289 of file NeutrinoEnergyRecoAlg.cc.

291 {
292  return (value - correctionIntercept) / correctionGradient;
293 }
double dune::NeutrinoEnergyRecoAlg::CalculateMuonMomentumByMCS ( const art::Ptr< recob::Track pMuonTrack)
private

Calculates muon momentum by multiple coulomb scattering.

Parameters
pMuonTrackthe muon track
Returns
the reconstructed muon momentum

Definition at line 243 of file NeutrinoEnergyRecoAlg.cc.

244 {
245  const double uncorrectedMomentum(this->CalculateUncorrectedMuonMomentumByMCS(pMuonTrack));
246  return this->CalculateLinearlyCorrectedValue(uncorrectedMomentum, fGradTrkMomMCS, fIntTrkMomMCS);
247 }
double CalculateLinearlyCorrectedValue(const double value, const double correctionGradient, const double correctionIntercept)
Linearly corrects a value.
double CalculateUncorrectedMuonMomentumByMCS(const art::Ptr< recob::Track > &pMuonTrack)
Calculates the raw muon momentum by multiple coulomb scattering.
double fIntTrkMomMCS
the correction intercept for muon momentum by MCS
double fGradTrkMomMCS
the correction gradient for muom momentum by MCS
double dune::NeutrinoEnergyRecoAlg::CalculateMuonMomentumByRange ( const art::Ptr< recob::Track pMuonTrack)
private

Calculates muon momentum by range.

Parameters
pMuonTrackthe muon track
Returns
the reconstructed muon momentum

Definition at line 236 of file NeutrinoEnergyRecoAlg.cc.

237 {
239 }
double CalculateLinearlyCorrectedValue(const double value, const double correctionGradient, const double correctionIntercept)
Linearly corrects a value.
double Length(size_t p=0) const
Access to various track properties.
Definition: Track.h:167
double fGradTrkMomRange
the correction gradient for muon momentum by range
double fIntTrkMomRange
the correction intercept for muon momentum by range
dune::EnergyRecoOutput dune::NeutrinoEnergyRecoAlg::CalculateNeutrinoEnergy ( const art::Ptr< recob::Track > &  pMuonTrack,
const art::Event event 
)

Calculates neutrino energy using a muon track (the muon track may be ignored if it isn't of a suitable quality)

Parameters
pMuonTrackthe muon track
eventthe art event
Returns
the neutrino energy summary object

Definition at line 64 of file NeutrinoEnergyRecoAlg.cc.

65 {
66  if (!pMuonTrack.isAvailable() || pMuonTrack.isNull())
67  {
68  mf::LogWarning("NeutrinoEnergyRecoAlg") << " Cannot access the muon track which is needed for this energy reconstructio method.\n"
69  << "Swapping to energy reconstruction method " << kAllCharges << " for this calculation." << std::endl;
70  return this->CalculateNeutrinoEnergy(event);
71  }
72 
73  Point_t vertex(pMuonTrack->Start().X(), pMuonTrack->Start().Y(), pMuonTrack->Start().Z());
74 
75  const std::vector<art::Ptr<recob::Hit> > muonHits(dune_ana::DUNEAnaHitUtils::GetHitsOnPlane(dune_ana::DUNEAnaTrackUtils::GetHits(pMuonTrack, event, fTrackToHitLabel),2));
76  bool isContained(this->IsContained(muonHits, event));
77  const double uncorrectedMuonMomentumMCS(this->CalculateUncorrectedMuonMomentumByMCS(pMuonTrack));
78  const double muonMomentumMCS(this->CalculateLinearlyCorrectedValue(uncorrectedMuonMomentumMCS, fGradTrkMomMCS, fIntTrkMomMCS));
79  if (!isContained)
80  {
81  if (uncorrectedMuonMomentumMCS > std::numeric_limits<double>::epsilon())
82  {
83  EnergyRecoInputHolder energyRecoInputHolder(vertex,
84  this->CalculateParticle4Momentum(kMuonMass, muonMomentumMCS, pMuonTrack->VertexDirection().X(), pMuonTrack->VertexDirection().Y(), pMuonTrack->VertexDirection().Z()),
86  return this->CalculateNeutrinoEnergy(muonHits, event, energyRecoInputHolder);
87  }
88  else
89  {
90  return this->CalculateNeutrinoEnergy(event);
91  }
92  }
93  else
94  {
95  const double muonMomentumRange(CalculateMuonMomentumByRange(pMuonTrack));
96  if (uncorrectedMuonMomentumMCS > std::numeric_limits<double>::epsilon()
97  && muonMomentumRange/muonMomentumMCS - fMuonRangeToMCSThreshold < -1.*std::numeric_limits<double>::epsilon())
98  {
99  EnergyRecoInputHolder energyRecoInputHolder(vertex,
100  this->CalculateParticle4Momentum(kMuonMass, muonMomentumMCS, pMuonTrack->VertexDirection().X(), pMuonTrack->VertexDirection().Y(), pMuonTrack->VertexDirection().Z()),
102 
103  return this->CalculateNeutrinoEnergy(muonHits, event, energyRecoInputHolder);
104  }
105  else
106  {
107  EnergyRecoInputHolder energyRecoInputHolder(vertex,
108  this->CalculateParticle4Momentum(kMuonMass, muonMomentumRange, pMuonTrack->VertexDirection().X(), pMuonTrack->VertexDirection().Y(), pMuonTrack->VertexDirection().Z()),
110 
111  return this->CalculateNeutrinoEnergy(muonHits, event, energyRecoInputHolder);
112  }
113  }
114 
115  throw art::Exception(art::errors::LogicError) << "Unable to determine how to calculate neutrino energy using muon track! \n";
116 }
Momentum4_t CalculateParticle4Momentum(const double mass, const double momentum, const double directionX, const double directionY, const double directionZ)
Calculates a particle&#39;s four-momentum vector.
double fGradNuMuHadEnExit
the hadronic energy correction gradient for numu+exiting muon
double kMuonMass
the muon mass (hardcoded unfortunately)
double CalculateLinearlyCorrectedValue(const double value, const double correctionGradient, const double correctionIntercept)
Linearly corrects a value.
double fGradNuMuHadEnCont
the hqdronic energy correction gradient for numu+contained muon
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >> Point_t
Vector_t VertexDirection() const
Definition: Track.h:132
double fIntNuMuHadEnExit
the hadronic energy correction intercept for numu+exiting muon
double CalculateMuonMomentumByRange(const art::Ptr< recob::Track > pMuonTrack)
Calculates muon momentum by range.
static std::vector< art::Ptr< recob::Hit > > GetHits(const art::Ptr< recob::Track > &pTrack, const art::Event &evt, const std::string &label)
Get the hits associated with the track.
muon momentum and hadronic deposited energy method
double CalculateUncorrectedMuonMomentumByMCS(const art::Ptr< recob::Track > &pMuonTrack)
Calculates the raw muon momentum by multiple coulomb scattering.
Point_t const & Start() const
Access to track position at different points.
Definition: Track.h:123
bool isNull() const noexcept
Definition: Ptr.h:173
bool IsContained(const std::vector< art::Ptr< recob::Hit > > &hits, const art::Event &event)
Checks if a set of track hits are contained within a central volume of the detector.
double fIntTrkMomMCS
the correction intercept for muon momentum by MCS
cet::coded_exception< errors::ErrorCodes, ExceptionDetail::translate > Exception
Definition: Exception.h:66
double fMuonRangeToMCSThreshold
the ratio threshold at which MCS is used for contained muons
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
bool isAvailable() const
Definition: Ptr.h:204
double fGradTrkMomMCS
the correction gradient for muom momentum by MCS
muon momentum by multiple scattering
QTextStream & endl(QTextStream &s)
dune::EnergyRecoOutput CalculateNeutrinoEnergy(const art::Ptr< recob::Track > &pMuonTrack, const art::Event &event)
Calculates neutrino energy using a muon track (the muon track may be ignored if it isn&#39;t of a suitabl...
std::string fTrackToHitLabel
the associated track-to-hit label
double fIntNuMuHadEnCont
the hadronic energy correction intercept for numu+contained muon
static std::vector< art::Ptr< recob::Hit > > GetHitsOnPlane(const std::vector< art::Ptr< recob::Hit >> &hits, const geo::PlaneID::PlaneID_t planeID)
Get all hits on a specific plane.
vertex reconstruction
dune::EnergyRecoOutput dune::NeutrinoEnergyRecoAlg::CalculateNeutrinoEnergy ( const art::Ptr< recob::Shower > &  pElectronShower,
const art::Event event 
)

Calculates neutrino energy using an electron shower(the electron may be ignored if it isn't of a suitable quality)

Parameters
pElectronShowerthe electron shower
eventthe art event
Returns
the neutrino energy summary object

Definition at line 120 of file NeutrinoEnergyRecoAlg.cc.

122 {
123  if (!pElectronShower.isAvailable() || pElectronShower.isNull())
124  {
125  mf::LogWarning("NeutrinoEnergyRecoAlg")
126  << " Cannot access the electron shower which is needed for this energy reconstructio method.\n"
127  << "Swapping to energy reconstruction method " << kAllCharges << " for this calculation." << std::endl;
128  return this->CalculateNeutrinoEnergy(event);
129  }
130 
131 
132  Point_t vertex(pElectronShower->ShowerStart().X(), pElectronShower->ShowerStart().Y(), pElectronShower->ShowerStart().Z());
133 
134  const std::vector<art::Ptr<recob::Hit> > electronHits(dune_ana::DUNEAnaHitUtils::GetHitsOnPlane(dune_ana::DUNEAnaShowerUtils::GetHits(pElectronShower, event, fShowerToHitLabel),2));
135  const double electronEnergy(this->CalculateElectronEnergy(pElectronShower, event));
136  //ATTN yep this line is bugged. It's deliberately bugged to maintain how the original code functioned
137  //Because of the small electron mass vs total energy deposition, this bug will have a very very small effect on the 4vector
138  const Momentum4_t electron4Momentum(this->CalculateParticle4Momentum(kElectronMass, electronEnergy,
139  pElectronShower->Direction().X(), pElectronShower->Direction().Y(), pElectronShower->Direction().Z()));
140 
141  EnergyRecoInputHolder energyRecoInputHolder(vertex, electron4Momentum,
143 
144  return this->CalculateNeutrinoEnergy(electronHits, event, energyRecoInputHolder);
145 }
Momentum4_t CalculateParticle4Momentum(const double mass, const double momentum, const double directionX, const double directionY, const double directionZ)
Calculates a particle&#39;s four-momentum vector.
const TVector3 & ShowerStart() const
Definition: Shower.h:192
std::string fShowerToHitLabel
the associated shower-to-hit label
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >> Point_t
bool isNull() const noexcept
Definition: Ptr.h:173
const TVector3 & Direction() const
Definition: Shower.h:189
electron deposited energy and hadronic deposited energy method
double CalculateElectronEnergy(const art::Ptr< recob::Shower > &pElectronShower, const art::Event &event)
Calculates an electron shower&#39;s deposited energy by converting its deposited charge.
static std::vector< art::Ptr< recob::Hit > > GetHits(const art::Ptr< recob::Shower > &pShower, const art::Event &evt, const std::string &label)
Get the hits associated with the shower.
double fIntNuEHadEn
the hadronic energy correction intercept for nue
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
bool isAvailable() const
Definition: Ptr.h:204
double fGradNuEHadEn
the hadronic energy correction gradient for nue
QTextStream & endl(QTextStream &s)
double kElectronMass
the electron mass (hardcoded unfortunately);
dune::EnergyRecoOutput CalculateNeutrinoEnergy(const art::Ptr< recob::Track > &pMuonTrack, const art::Event &event)
Calculates neutrino energy using a muon track (the muon track may be ignored if it isn&#39;t of a suitabl...
static std::vector< art::Ptr< recob::Hit > > GetHitsOnPlane(const std::vector< art::Ptr< recob::Hit >> &hits, const geo::PlaneID::PlaneID_t planeID)
Get all hits on a specific plane.
vertex reconstruction
dune::EnergyRecoOutput dune::NeutrinoEnergyRecoAlg::CalculateNeutrinoEnergy ( const art::Event event)

Calculates neutrino energy by summing wire charges.

Parameters
eventthe art event
Returns
the neutrino energy summary object

Definition at line 149 of file NeutrinoEnergyRecoAlg.cc.

150 {
152  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(event);
153  auto const detProp = art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataFor(event, clockData);
154  const double triggerTme(clockData.TriggerTime());
155 
156  const std::vector<art::Ptr<recob::Wire> > wires(dune_ana::DUNEAnaEventUtils::GetWires(event, fWireLabel));
157  double wireCharge(0);
158 
159  for (unsigned int iWire = 0; iWire < wires.size(); ++iWire)
160  {
161  if (fGeometry->SignalType(wires[iWire]->Channel()) != geo::kCollection)
162  continue;
163 
164  const recob::Wire::RegionsOfInterest_t& signalROI(wires[iWire]->SignalROI());
165  for (const lar::sparse_vector<float>::datarange_t& range : signalROI.get_ranges())
166  {
167  const std::vector<float>& signal(range.data());
168  const raw::TDCtick_t binFirstTickROI(range.begin_index());
169  for (unsigned int iSignal = 0; iSignal < signal.size(); ++iSignal)
170  wireCharge += signal[iSignal]*dune_ana::DUNEAnaHitUtils::LifetimeCorrection(clockData, detProp, iSignal+binFirstTickROI, triggerTme);
171  }
172  }
173  const double totalEnergy(this->CalculateEnergyFromCharge(wireCharge));
174 
176  output.recoMethodUsed = static_cast<int>(kAllCharges);
177  output.fRecoVertex.SetXYZ(0.,0.,0.);
178  output.fNuLorentzVector.SetXYZT(0.,0.,0.,totalEnergy);
179  output.fLepLorentzVector.SetXYZT(0.,0.,0.,0.);
180  output.fHadLorentzVector.SetXYZT(0.,0.,0.,0.);
181  output.longestTrackContained = static_cast<int>(kContainmentNotSet);
182  output.trackMomMethod = static_cast<int>(kTrackMethodNotSet);
183  return output;
184 }
double CalculateEnergyFromCharge(const double charge)
Converts deposited charge into energy by converting to number of electrons and correcting for average...
std::string fWireLabel
the wire label
static std::vector< art::Ptr< recob::Wire > > GetWires(const art::Event &evt, const std::string &label)
Get the wires from the event.
SigType_t SignalType(geo::PlaneID const &pid) const
Returns the type of signal on the channels of specified TPC plane.
int TDCtick_t
Type representing a TDC tick.
Definition: RawTypes.h:25
static double LifetimeCorrection(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const art::Ptr< recob::Hit > &pHit)
get the lifetime correction for a hit, assumes the detector properties GetTriggerOffset is T0 ...
Range class, with range and data.
Signal from collection planes.
Definition: geo_types.h:146
dune::EnergyRecoOutput dune::NeutrinoEnergyRecoAlg::CalculateNeutrinoEnergy ( const std::vector< art::Ptr< recob::Hit > > &  leptonHits,
const art::Event event,
const EnergyRecoInputHolder energyRecoInputHolder 
)
private

Calculates neutrino energy by summing hadronic deposited energy and lepton energy.

Parameters
leptonHitsthe lepton hits
eventthe art event
energyRecoInputHolderthe holder object holding pre-calculated or pre-existing information
Returns
the neutrino energy summary object

Definition at line 305 of file NeutrinoEnergyRecoAlg.cc.

307 {
308  auto const clockData = art::ServiceHandle<detinfo::DetectorClocksService const>()->DataFor(event);
309  auto const detProp = art::ServiceHandle<detinfo::DetectorPropertiesService const>()->DataFor(event, clockData);
310  const double leptonObservedCharge(dune_ana::DUNEAnaHitUtils::LifetimeCorrectedTotalHitCharge(clockData, detProp, leptonHits));
311 
312  const std::vector<art::Ptr<recob::Hit> > eventHits(dune_ana::DUNEAnaHitUtils::GetHitsOnPlane(dune_ana::DUNEAnaEventUtils::GetHits(event, fHitLabel),2));
313  const double eventObservedCharge(dune_ana::DUNEAnaHitUtils::LifetimeCorrectedTotalHitCharge(clockData, detProp, eventHits));
314 
315  const double hadronicObservedCharge(eventObservedCharge-leptonObservedCharge);
316  const double uncorrectedHadronicEnergy(this->CalculateEnergyFromCharge(hadronicObservedCharge));
317  const double correctedHadronicEnergy(
318  this->CalculateLinearlyCorrectedValue(uncorrectedHadronicEnergy,energyRecoInputHolder.fHadronicCorrectionGradient,
319  energyRecoInputHolder.fHadronicCorrectionIntercept));
320 
321  const double neutrinoEnergy(energyRecoInputHolder.fLeptonMomentum.E()+correctedHadronicEnergy);
322 
324  output.recoMethodUsed = static_cast<int>(energyRecoInputHolder.fEnergyRecoMethod);
325  output.fRecoVertex = energyRecoInputHolder.fVertex;
326  output.fNuLorentzVector.SetE(neutrinoEnergy);
327  output.fLepLorentzVector = energyRecoInputHolder.fLeptonMomentum;
328  output.fHadLorentzVector.SetE(correctedHadronicEnergy);
329  output.longestTrackContained = static_cast<int>(energyRecoInputHolder.fMuonContainmentStatus);
330  output.trackMomMethod = static_cast<int>(energyRecoInputHolder.fMuonTrackMethod);
331  return output;
332 }
double CalculateEnergyFromCharge(const double charge)
Converts deposited charge into energy by converting to number of electrons and correcting for average...
std::string fHitLabel
the hit label
double CalculateLinearlyCorrectedValue(const double value, const double correctionGradient, const double correctionIntercept)
Linearly corrects a value.
static std::vector< art::Ptr< recob::Hit > > GetHits(const art::Event &evt, const std::string &label)
Get the hits from the event.
static double LifetimeCorrectedTotalHitCharge(detinfo::DetectorClocksData const &clockData, detinfo::DetectorPropertiesData const &detProp, const std::vector< art::Ptr< recob::Hit > > &hits)
get the total hit charge, corrected for lifetime
static std::vector< art::Ptr< recob::Hit > > GetHitsOnPlane(const std::vector< art::Ptr< recob::Hit >> &hits, const geo::PlaneID::PlaneID_t planeID)
Get all hits on a specific plane.
dune::EnergyRecoOutput dune::NeutrinoEnergyRecoAlg::CalculateNeutrinoEnergyViaMuonMCS ( const art::Ptr< recob::Track > &  pMuonTrack,
const art::Event event 
)

Calculates neutrino energy explicitly using muon multiple scattering.

Parameters
pMuonTrackthe muon track
eventthe art event
Returns
the neutrino energy summary object

Definition at line 206 of file NeutrinoEnergyRecoAlg.cc.

208 {
209  Point_t vertex(pMuonTrack->Start().X(), pMuonTrack->Start().Y(), pMuonTrack->Start().Z());
210 
211  const std::vector<art::Ptr<recob::Hit> > muonHits(dune_ana::DUNEAnaHitUtils::GetHitsOnPlane(dune_ana::DUNEAnaTrackUtils::GetHits(pMuonTrack, event, fTrackToHitLabel),2));
212  bool isContained(this->IsContained(muonHits, event));
213  const double muonMomentumMCS(this->CalculateMuonMomentumByMCS(pMuonTrack));
214 
215  EnergyRecoInputHolder energyRecoInputHolder(vertex,
216  this->CalculateParticle4Momentum(kMuonMass, muonMomentumMCS, pMuonTrack->VertexDirection().X(), pMuonTrack->VertexDirection().Y(), pMuonTrack->VertexDirection().Z()),
217  kMuonAndHadronic, kMCS, static_cast<MuonContainmentStatus>(isContained), fGradNuMuHadEnExit, fIntNuMuHadEnExit);
218 
219  return this->CalculateNeutrinoEnergy(muonHits, event, energyRecoInputHolder);
220 }
Momentum4_t CalculateParticle4Momentum(const double mass, const double momentum, const double directionX, const double directionY, const double directionZ)
Calculates a particle&#39;s four-momentum vector.
double fGradNuMuHadEnExit
the hadronic energy correction gradient for numu+exiting muon
double kMuonMass
the muon mass (hardcoded unfortunately)
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >> Point_t
Vector_t VertexDirection() const
Definition: Track.h:132
double fIntNuMuHadEnExit
the hadronic energy correction intercept for numu+exiting muon
static std::vector< art::Ptr< recob::Hit > > GetHits(const art::Ptr< recob::Track > &pTrack, const art::Event &evt, const std::string &label)
Get the hits associated with the track.
double CalculateMuonMomentumByMCS(const art::Ptr< recob::Track > pMuonTrack)
Calculates muon momentum by multiple coulomb scattering.
muon momentum and hadronic deposited energy method
Point_t const & Start() const
Access to track position at different points.
Definition: Track.h:123
bool IsContained(const std::vector< art::Ptr< recob::Hit > > &hits, const art::Event &event)
Checks if a set of track hits are contained within a central volume of the detector.
muon momentum by multiple scattering
dune::EnergyRecoOutput CalculateNeutrinoEnergy(const art::Ptr< recob::Track > &pMuonTrack, const art::Event &event)
Calculates neutrino energy using a muon track (the muon track may be ignored if it isn&#39;t of a suitabl...
std::string fTrackToHitLabel
the associated track-to-hit label
static std::vector< art::Ptr< recob::Hit > > GetHitsOnPlane(const std::vector< art::Ptr< recob::Hit >> &hits, const geo::PlaneID::PlaneID_t planeID)
Get all hits on a specific plane.
vertex reconstruction
dune::EnergyRecoOutput dune::NeutrinoEnergyRecoAlg::CalculateNeutrinoEnergyViaMuonRanging ( const art::Ptr< recob::Track > &  pMuonTrack,
const art::Event event 
)

Calculates neutrino energy explicitly using muon momentum by range.

Parameters
pMuonTrackthe muon track
eventthe art event
Returns
the neutrino energy summary object

Definition at line 188 of file NeutrinoEnergyRecoAlg.cc.

190 {
191  Point_t vertex(pMuonTrack->Start().X(), pMuonTrack->Start().Y(), pMuonTrack->Start().Z());
192 
193  const std::vector<art::Ptr<recob::Hit> > muonHits(dune_ana::DUNEAnaHitUtils::GetHitsOnPlane(dune_ana::DUNEAnaTrackUtils::GetHits(pMuonTrack, event, fTrackToHitLabel),2));
194  bool isContained(this->IsContained(muonHits, event));
195  const double muonMomentumRange(this->CalculateMuonMomentumByRange(pMuonTrack));
196 
197  EnergyRecoInputHolder energyRecoInputHolder(vertex,
198  this->CalculateParticle4Momentum(kMuonMass, muonMomentumRange, pMuonTrack->VertexDirection().X(), pMuonTrack->VertexDirection().Y(), pMuonTrack->VertexDirection().Z()),
199  kMuonAndHadronic, kContained, static_cast<MuonContainmentStatus>(isContained), fGradNuMuHadEnCont, fIntNuMuHadEnCont);
200 
201  return this->CalculateNeutrinoEnergy(muonHits, event, energyRecoInputHolder);
202 }
Momentum4_t CalculateParticle4Momentum(const double mass, const double momentum, const double directionX, const double directionY, const double directionZ)
Calculates a particle&#39;s four-momentum vector.
double kMuonMass
the muon mass (hardcoded unfortunately)
double fGradNuMuHadEnCont
the hqdronic energy correction gradient for numu+contained muon
ROOT::Math::PositionVector3D< ROOT::Math::Cartesian3D< double >> Point_t
Vector_t VertexDirection() const
Definition: Track.h:132
double CalculateMuonMomentumByRange(const art::Ptr< recob::Track > pMuonTrack)
Calculates muon momentum by range.
static std::vector< art::Ptr< recob::Hit > > GetHits(const art::Ptr< recob::Track > &pTrack, const art::Event &evt, const std::string &label)
Get the hits associated with the track.
muon momentum and hadronic deposited energy method
Point_t const & Start() const
Access to track position at different points.
Definition: Track.h:123
bool IsContained(const std::vector< art::Ptr< recob::Hit > > &hits, const art::Event &event)
Checks if a set of track hits are contained within a central volume of the detector.
dune::EnergyRecoOutput CalculateNeutrinoEnergy(const art::Ptr< recob::Track > &pMuonTrack, const art::Event &event)
Calculates neutrino energy using a muon track (the muon track may be ignored if it isn&#39;t of a suitabl...
std::string fTrackToHitLabel
the associated track-to-hit label
double fIntNuMuHadEnCont
the hadronic energy correction intercept for numu+contained muon
static std::vector< art::Ptr< recob::Hit > > GetHitsOnPlane(const std::vector< art::Ptr< recob::Hit >> &hits, const geo::PlaneID::PlaneID_t planeID)
Get all hits on a specific plane.
vertex reconstruction
NeutrinoEnergyRecoAlg::Momentum4_t dune::NeutrinoEnergyRecoAlg::CalculateParticle4Momentum ( const double  mass,
const double  momentum,
const double  directionX,
const double  directionY,
const double  directionZ 
)
private

Calculates a particle's four-momentum vector.

Parameters
massthe particle mass
momentumthe particle momentum
directionXdirection X component
directionYdirection X component
directionZdirection X component
Returns
the particle's four-momenutm vector

Definition at line 224 of file NeutrinoEnergyRecoAlg.cc.

226 {
227  const double E(std::sqrt(momentum*momentum + mass*mass));
228  const double pX(directionX * momentum);
229  const double pY(directionY * momentum);
230  const double pZ(directionZ * momentum);
231  return Momentum4_t(pX, pY, pZ, E);
232 }
E
Definition: 018_def.c:13
def momentum(x1, x2, x3, scale=1.)
double dune::NeutrinoEnergyRecoAlg::CalculateUncorrectedMuonMomentumByMCS ( const art::Ptr< recob::Track > &  pMuonTrack)
private

Calculates the raw muon momentum by multiple coulomb scattering.

Parameters
pMuonTrackthe muon track
Returns
the uncorrected reconstructed muon momentum

Definition at line 297 of file NeutrinoEnergyRecoAlg.cc.

298 {
299  trkf::TrackMomentumCalculator TrackMomCalc;
300  return (TrackMomCalc.GetMomentumMultiScatterChi2(pMuonTrack));
301 }
double GetMomentumMultiScatterChi2(art::Ptr< recob::Track > const &trk)
bool dune::NeutrinoEnergyRecoAlg::IsContained ( const std::vector< art::Ptr< recob::Hit > > &  hits,
const art::Event event 
)
private

Checks if a set of track hits are contained within a central volume of the detector.

Parameters
hitsthe track hits
Returns
an is contained bool

Definition at line 271 of file NeutrinoEnergyRecoAlg.cc.

272 {
273  for (unsigned int iHit = 0; iHit < hits.size(); ++iHit)
274  {
275  const std::vector<art::Ptr<recob::SpacePoint> > spacePoints(dune_ana::DUNEAnaHitUtils::GetSpacePoints(hits[iHit],
277  for (unsigned int iSpacePoint = 0; iSpacePoint < spacePoints.size(); ++iSpacePoint)
278  {
279  const art::Ptr<recob::SpacePoint> spacePoint(spacePoints[iSpacePoint]);
280  if (!(this->IsPointContained(spacePoint->XYZ()[0],spacePoint->XYZ()[1],spacePoint->XYZ()[2])))
281  return false;
282  }
283  }
284  return true;
285 }
std::string fHitLabel
the hit label
static std::vector< art::Ptr< recob::SpacePoint > > GetSpacePoints(const art::Ptr< recob::Hit > &pHit, const art::Event &evt, const std::string &hitLabel, const std::string &hitToSpacePointLabel)
Get the space points associated with the hit.
std::string fHitToSpacePointLabel
the associated hit-to-space point label
bool IsPointContained(const double x, const double y, const double z)
Check&#39;s if a point is contained within a central detector volume.
bool dune::NeutrinoEnergyRecoAlg::IsPointContained ( const double  x,
const double  y,
const double  z 
)
private

Check's if a point is contained within a central detector volume.

Parameters
xthe x component of the position
ythe y component of the position
zthe z component of the position
Returns
an is contained bool

Definition at line 336 of file NeutrinoEnergyRecoAlg.cc.

337 {
338  double position[3] = {x,y,z};
340 
341  geo::TPCID tpcID(fGeometry->FindTPCAtPosition(position));
342  if (!(fGeometry->HasTPC(tpcID)))
343  return false;
344 
345  double minX(std::numeric_limits<double>::max());
346  double maxX(std::numeric_limits<double>::lowest());
347  double minY(std::numeric_limits<double>::max());
348  double maxY(std::numeric_limits<double>::lowest());
349  double minZ(std::numeric_limits<double>::max());
350  double maxZ(std::numeric_limits<double>::lowest());
351  for (unsigned int iCryostat = 0; iCryostat < fGeometry->Ncryostats(); ++iCryostat)
352  {
353  const geo::CryostatGeo& cryostat(fGeometry->Cryostat(iCryostat));
354  for (unsigned int iTPC = 0; iTPC < cryostat.NTPC(); ++iTPC)
355  {
356  const geo::TPCGeo& tpc(cryostat.TPC(iTPC));
357  minX = std::min(minX,tpc.MinX());
358  maxX = std::max(maxX,tpc.MaxX());
359  minY = std::min(minY,tpc.MinY());
360  maxY = std::max(maxY,tpc.MaxY());
361  minZ = std::min(minZ,tpc.MinZ());
362  maxZ = std::max(maxZ,tpc.MaxZ());
363  }
364  }
365 
366  minX += fDistanceToWallThreshold;
367  maxX -= fDistanceToWallThreshold;
368  minY += fDistanceToWallThreshold;
369  maxY -= fDistanceToWallThreshold;
370  minZ += fDistanceToWallThreshold;
371  maxZ -= fDistanceToWallThreshold;
372 
373  if (x - minX < -1.*std::numeric_limits<double>::epsilon() ||
374  x - maxX > std::numeric_limits<double>::epsilon())
375  return false;
376  if (y - minY < -1.*std::numeric_limits<double>::epsilon() ||
377  y - maxY > std::numeric_limits<double>::epsilon())
378  return false;
379  if (z - minZ < -1.*std::numeric_limits<double>::epsilon() ||
380  z - maxZ > std::numeric_limits<double>::epsilon())
381  return false;
382 
383  return true;
384 }
Geometry information for a single TPC.
Definition: TPCGeo.h:38
Geometry information for a single cryostat.
Definition: CryostatGeo.h:43
unsigned int Ncryostats() const
Returns the number of cryostats in the detector.
geo::TPCID FindTPCAtPosition(double const worldLoc[3]) const
Returns the ID of the TPC at specified location.
CryostatGeo const & Cryostat(geo::CryostatID const &cryoid) const
Returns the specified cryostat.
double fDistanceToWallThreshold
the min distance from a detector wall to be considered contained
static int max(int a, int b)
The data type to uniquely identify a TPC.
Definition: geo_types.h:386
bool HasTPC(geo::TPCID const &tpcid) const
Returns whether we have the specified TPC.
T min(sqlite3 *const db, std::string const &table_name, std::string const &column_name)
Definition: statistics.h:55
list x
Definition: train.py:276

Member Data Documentation

calo::CalorimetryAlg dune::NeutrinoEnergyRecoAlg::fCalorimetryAlg
private

the calorimetry algorithm

Definition at line 271 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fDistanceToWallThreshold
private

the min distance from a detector wall to be considered contained

Definition at line 285 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fGradNuEHadEn
private

the hadronic energy correction gradient for nue

Definition at line 283 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fGradNuMuHadEnCont
private

the hqdronic energy correction gradient for numu+contained muon

Definition at line 277 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fGradNuMuHadEnExit
private

the hadronic energy correction gradient for numu+exiting muon

Definition at line 279 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fGradShwEnergy
private

the electron shower energy correction gradient

Definition at line 281 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fGradTrkMomMCS
private

the correction gradient for muom momentum by MCS

Definition at line 275 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fGradTrkMomRange
private

the correction gradient for muon momentum by range

Definition at line 273 of file NeutrinoEnergyRecoAlg.h.

std::string dune::NeutrinoEnergyRecoAlg::fHitLabel
private

the hit label

Definition at line 291 of file NeutrinoEnergyRecoAlg.h.

std::string dune::NeutrinoEnergyRecoAlg::fHitToSpacePointLabel
private

the associated hit-to-space point label

Definition at line 295 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fIntNuEHadEn
private

the hadronic energy correction intercept for nue

Definition at line 284 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fIntNuMuHadEnCont
private

the hadronic energy correction intercept for numu+contained muon

Definition at line 278 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fIntNuMuHadEnExit
private

the hadronic energy correction intercept for numu+exiting muon

Definition at line 280 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fIntShwEnergy
private

the electron shower energy correction intercept

Definition at line 282 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fIntTrkMomMCS
private

the correction intercept for muon momentum by MCS

Definition at line 276 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fIntTrkMomRange
private

the correction intercept for muon momentum by range

Definition at line 274 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fMuonRangeToMCSThreshold
private

the ratio threshold at which MCS is used for contained muons

Definition at line 286 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::fRecombFactor
private

the average reccombination factor

Definition at line 287 of file NeutrinoEnergyRecoAlg.h.

std::string dune::NeutrinoEnergyRecoAlg::fShowerLabel
private

the shower label

Definition at line 290 of file NeutrinoEnergyRecoAlg.h.

std::string dune::NeutrinoEnergyRecoAlg::fShowerToHitLabel
private

the associated shower-to-hit label

Definition at line 294 of file NeutrinoEnergyRecoAlg.h.

std::string dune::NeutrinoEnergyRecoAlg::fTrackLabel
private

the track label

Definition at line 289 of file NeutrinoEnergyRecoAlg.h.

std::string dune::NeutrinoEnergyRecoAlg::fTrackToHitLabel
private

the associated track-to-hit label

Definition at line 293 of file NeutrinoEnergyRecoAlg.h.

std::string dune::NeutrinoEnergyRecoAlg::fWireLabel
private

the wire label

Definition at line 292 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::kElectronMass = 0.0005109989461
private

the electron mass (hardcoded unfortunately);

Definition at line 104 of file NeutrinoEnergyRecoAlg.h.

double dune::NeutrinoEnergyRecoAlg::kMuonMass = 0.1056583745
private

the muon mass (hardcoded unfortunately)

Definition at line 103 of file NeutrinoEnergyRecoAlg.h.


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