LArSoft  v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
hit::RFFHitFinderAlg Class Reference

#include "RFFHitFinderAlg.h"

Public Member Functions

 RFFHitFinderAlg (fhicl::ParameterSet const &)
 
void SetFitterParamsVectors (geo::Geometry const &)
 
void Run (std::vector< recob::Wire > const &, std::vector< recob::Hit > &, geo::Geometry const &)
 

Private Member Functions

void SetFitterParams (unsigned int)
 
void EmplaceHit (std::vector< recob::Hit > &, recob::Wire const &, float const &, raw::TDCtick_t const &, raw::TDCtick_t const &, geo::SigType_t const &, geo::WireID const &)
 

Private Attributes

const float SQRT_TWO_PI = 2.506628
 
std::vector< float > fMatchThresholdVec
 
std::vector< unsigned int > fMergeMultiplicityVec
 
std::vector< float > fAmpThresholdVec
 
RFFHitFitter fFitter
 

Detailed Description

Definition at line 35 of file RFFHitFinderAlg.h.

Constructor & Destructor Documentation

hit::RFFHitFinderAlg::RFFHitFinderAlg ( fhicl::ParameterSet const &  p)

Title: RFFHitFinderAlg Class Author: Wes Ketchum (wketc.nosp@m.hum@.nosp@m.lanl..nosp@m.gov)

Description: Class that runs the RFF HitFinder. Implements an RFFHitFitter, and takes the result and stores it in recob::Hit objects.

Input: recob::Wire Output: recob::Hit

Definition at line 21 of file RFFHitFinderAlg.cxx.

References fAmpThresholdVec, fMatchThresholdVec, fMergeMultiplicityVec, and fhicl::ParameterSet::get().

22 {
23  fMatchThresholdVec = p.get<std::vector<float>>("MeanMatchThreshold");
24  fMergeMultiplicityVec = p.get<std::vector<unsigned int>>("MinMergeMultiplicity");
25  fAmpThresholdVec = p.get<std::vector<float>>("AmplitudeThreshold", std::vector<float>(1, 0.0));
26 }
std::vector< float > fAmpThresholdVec
std::vector< float > fMatchThresholdVec
std::vector< unsigned int > fMergeMultiplicityVec

Member Function Documentation

void hit::RFFHitFinderAlg::EmplaceHit ( std::vector< recob::Hit > &  hitVector,
recob::Wire const &  wire,
float const &  summedADCTotal,
raw::TDCtick_t const &  startTick,
raw::TDCtick_t const &  endTick,
geo::SigType_t const &  sigtype,
geo::WireID const &  wireID 
)
private

Definition at line 81 of file RFFHitFinderAlg.cxx.

References hit::RFFHitFitter::AmplitudeErrorVector(), hit::RFFHitFitter::AmplitudeVector(), recob::Wire::Channel(), fFitter, hit::RFFHitFitter::MeanErrorVector(), hit::RFFHitFitter::MeanVector(), hit::RFFHitFitter::NHits(), hit::RFFHitFitter::SigmaErrorVector(), hit::RFFHitFitter::SigmaVector(), SQRT_TWO_PI, and recob::Wire::View().

Referenced by Run().

88 {
89 
90  float totalArea = 0.0;
91  std::vector<float> areaVector(fFitter.NHits());
92  std::vector<float> areaErrorVector(fFitter.NHits());
93  std::vector<float> areaFracVector(fFitter.NHits());
94 
95  for (size_t ihit = 0; ihit < fFitter.NHits(); ihit++) {
96  areaVector[ihit] = fFitter.AmplitudeVector()[ihit] * fFitter.SigmaVector()[ihit] * SQRT_TWO_PI;
97  areaErrorVector[ihit] =
98  SQRT_TWO_PI * std::sqrt(fFitter.AmplitudeVector()[ihit] * fFitter.SigmaErrorVector()[ihit] *
100  fFitter.AmplitudeErrorVector()[ihit] * fFitter.SigmaVector()[ihit] *
101  fFitter.AmplitudeErrorVector()[ihit] * fFitter.SigmaVector()[ihit]);
102  totalArea += areaVector[ihit];
103  }
104 
105  for (size_t ihit = 0; ihit < fFitter.NHits(); ihit++) {
106  areaFracVector[ihit] = areaVector[ihit] / totalArea;
107 
108  hitVector.emplace_back(wire.Channel(),
109  startTick,
110  endTick,
111  fFitter.MeanVector()[ihit] + (float)startTick,
112  fFitter.MeanErrorVector()[ihit],
113  fFitter.SigmaVector()[ihit],
114  fFitter.AmplitudeVector()[ihit],
116  summedADCTotal * areaFracVector[ihit],
117  areaVector[ihit],
118  areaErrorVector[ihit],
119  fFitter.NHits(),
120  ihit,
121  -999.,
122  -999,
123  wire.View(),
124  sigtype,
125  wireID);
126  }
127 }
const std::vector< float > & AmplitudeVector()
Definition: RFFHitFitter.h:48
const std::vector< float > & MeanVector()
Definition: RFFHitFitter.h:44
const std::vector< float > & SigmaVector()
Definition: RFFHitFitter.h:45
const std::vector< float > & MeanErrorVector()
Definition: RFFHitFitter.h:46
unsigned int NHits()
Definition: RFFHitFitter.h:50
const std::vector< float > & AmplitudeErrorVector()
Definition: RFFHitFitter.h:49
const std::vector< float > & SigmaErrorVector()
Definition: RFFHitFitter.h:47
void hit::RFFHitFinderAlg::Run ( std::vector< recob::Wire > const &  wireVector,
std::vector< recob::Hit > &  hitVector,
geo::Geometry const &  geo 
)

Definition at line 57 of file RFFHitFinderAlg.cxx.

References geo::GeometryCore::ChannelToWire(), EmplaceHit(), fFitter, hit::RFFHitFitter::RunFitter(), SetFitterParams(), and geo::GeometryCore::SignalType().

Referenced by hit::RFFHitFinder::produce().

60 {
61  hitVector.reserve(wireVector.size());
62  for (auto const& wire : wireVector) {
63  geo::SigType_t const& sigtype = geo.SignalType(wire.Channel());
64  geo::WireID const wireID = geo.ChannelToWire(wire.Channel()).at(0);
65 
66  SetFitterParams(wire.View());
67 
68  for (auto const& roi : wire.SignalROI().get_ranges()) {
69  fFitter.RunFitter(roi.data());
70 
71  const float summedADCTotal = std::accumulate(roi.data().begin(), roi.data().end(), 0.0);
72  const raw::TDCtick_t startTick = roi.begin_index();
73  const raw::TDCtick_t endTick = roi.begin_index() + roi.size();
74 
75  EmplaceHit(hitVector, wire, summedADCTotal, startTick, endTick, sigtype, wireID);
76  } //end loop over ROIs on wire
77 
78  } //end loop over wires
79 }
void EmplaceHit(std::vector< recob::Hit > &, recob::Wire const &, float const &, raw::TDCtick_t const &, raw::TDCtick_t const &, geo::SigType_t const &, geo::WireID const &)
void RunFitter(const std::vector< float > &signal)
int TDCtick_t
Type representing a TDC tick.
Definition: RawTypes.h:25
enum geo::_plane_sigtype SigType_t
Enumerate the possible plane projections.
void SetFitterParams(unsigned int)
Namespace collecting geometry-related classes utilities.
void hit::RFFHitFinderAlg::SetFitterParams ( unsigned int  p)
private

Definition at line 52 of file RFFHitFinderAlg.cxx.

References fAmpThresholdVec, fFitter, fMatchThresholdVec, fMergeMultiplicityVec, and hit::RFFHitFitter::SetFitterParams().

Referenced by Run().

53 {
55 }
void SetFitterParams(float, unsigned int, float)
std::vector< float > fAmpThresholdVec
std::vector< float > fMatchThresholdVec
std::vector< unsigned int > fMergeMultiplicityVec
void hit::RFFHitFinderAlg::SetFitterParamsVectors ( geo::Geometry const &  geo)

Definition at line 28 of file RFFHitFinderAlg.cxx.

References fAmpThresholdVec, fMatchThresholdVec, fMergeMultiplicityVec, and geo::GeometryCore::Nplanes().

Referenced by hit::RFFHitFinder::beginJob().

29 {
30  const unsigned int n_planes = geo.Nplanes();
31 
32  //If size zero, throw. If size one, assume same for all planes.
33  //If size > 1 but < n_planes, throw. If size = n_plane, good.
34 
35  if (fMatchThresholdVec.size() == 0 || fMergeMultiplicityVec.size() == 0 ||
36  fAmpThresholdVec.size() == 0)
37  throw std::runtime_error("Error in RFFHitFinderAlg: Configured with zero planes.");
38 
39  if ((fMatchThresholdVec.size() > 1 && fMatchThresholdVec.size() < n_planes) ||
40  (fMergeMultiplicityVec.size() > 1 && fMergeMultiplicityVec.size() < n_planes) ||
41  (fAmpThresholdVec.size() > 1 && fAmpThresholdVec.size() < n_planes))
42  throw std::runtime_error("Error in RFFHitFinderAlg: Configured with incorrect n_planes.");
43 
44  if (fMatchThresholdVec.size() == 1) fMatchThresholdVec.resize(n_planes, fMatchThresholdVec[0]);
45 
46  if (fMergeMultiplicityVec.size() == 1)
47  fMergeMultiplicityVec.resize(n_planes, fMergeMultiplicityVec[0]);
48 
49  if (fAmpThresholdVec.size() == 1) fAmpThresholdVec.resize(n_planes, fAmpThresholdVec[0]);
50 }
std::vector< float > fAmpThresholdVec
std::vector< float > fMatchThresholdVec
std::vector< unsigned int > fMergeMultiplicityVec
Namespace collecting geometry-related classes utilities.

Member Data Documentation

std::vector<float> hit::RFFHitFinderAlg::fAmpThresholdVec
private

Definition at line 48 of file RFFHitFinderAlg.h.

Referenced by RFFHitFinderAlg(), SetFitterParams(), and SetFitterParamsVectors().

RFFHitFitter hit::RFFHitFinderAlg::fFitter
private

Definition at line 60 of file RFFHitFinderAlg.h.

Referenced by EmplaceHit(), Run(), and SetFitterParams().

std::vector<float> hit::RFFHitFinderAlg::fMatchThresholdVec
private

Definition at line 46 of file RFFHitFinderAlg.h.

Referenced by RFFHitFinderAlg(), SetFitterParams(), and SetFitterParamsVectors().

std::vector<unsigned int> hit::RFFHitFinderAlg::fMergeMultiplicityVec
private

Definition at line 47 of file RFFHitFinderAlg.h.

Referenced by RFFHitFinderAlg(), SetFitterParams(), and SetFitterParamsVectors().

const float hit::RFFHitFinderAlg::SQRT_TWO_PI = 2.506628
private

Definition at line 37 of file RFFHitFinderAlg.h.

Referenced by EmplaceHit().


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