95 art::Handle< std::vector<recob::Wire> > wireVecHandle;
97 std::vector<recob::Wire>
const& wireVec(*wireVecHandle);
100 art::FindOneP<raw::RawDigit> WireToRawDigits
103 art::ServiceHandle<geo::Geometry const> geom;
106 float threshold_peak = 0;
107 float threshold_tail = -99;
111 for(
unsigned int wireIter = 0; wireIter < wireVec.size(); wireIter++) {
114 art::Ptr<recob::Wire> wire(wireVecHandle, wireIter);
115 art::Ptr<raw::RawDigit>
const& rawdigits = WireToRawDigits.at(wireIter);
117 std::vector<float> signal(wire->Signal());
118 std::vector<float>::iterator timeIter;
119 geo::WireID wire_id = (geom->ChannelToWire(wire->Channel())).at(0);
136 float half_width = ((float)width-1)/2.;
141 for(timeIter = signal.begin(); timeIter < signal.end(); timeIter++){
145 if(width%2==1) peak_val = *timeIter;
146 else if(width%2==0) peak_val = 0.5 * (*timeIter + *(timeIter+1));
149 if(peak_val < threshold_peak)
continue;
152 if( time_bin-half_width < 0 )
continue;
153 if( time_bin+half_width > signal.size() )
continue;
156 int begin_tail_tick = std::floor(time_bin-half_width);
157 float totalCharge =
getTotalCharge(&signal[begin_tail_tick],width,threshold_tail);
158 if(totalCharge==-999) {
159 MF_LOG_DEBUG(
"TTHitFinder") <<
"Rejecting would be hit at (plane,wire,time_bin,first_bin,last_bin)=("
160 << wire_id.
Plane <<
"," << wire_id.
Wire <<
"," << time_bin <<
"," << begin_tail_tick <<
"," << begin_tail_tick+width-1 <<
"): "
161 << signal.at(time_bin-1) <<
" "
162 << signal.at(time_bin) <<
" "
163 << signal.at(time_bin+1);
169 float hit_time = time_bin;
170 if(width%2==0) hit_time = time_bin+0.5;
174 end_tick = hit_time + width;
196 hitCollection_U.emplace_back(
hit.move(), wire, rawdigits);
197 else if(wire_id.
Plane==1)
198 hitCollection_V.emplace_back(
hit.move(), wire, rawdigits);
199 else if(wire_id.
Plane==2)
200 hitCollection_Y.emplace_back(
hit.move(), wire, rawdigits);
204 MF_LOG_DEBUG(
"TTHitFinder") <<
"Finished wire " << wire_id.
Wire <<
" (plane " << wire_id.
Plane <<
")"
205 <<
"\tTotal hits (U,V,Y)= ("
206 << hitCollection_U.size() <<
","
207 << hitCollection_V.size() <<
","
208 << hitCollection_Y.size() <<
")";
213 mf::LogInfo(
"TTHitFinder") <<
"Total TTHitFinder hits (U,V,Y)=("
214 << hitCollection_U.size() <<
","
215 << hitCollection_V.size() <<
","
216 << hitCollection_Y.size() <<
")";
217 hitCollection_U.put_into(
evt);
218 hitCollection_V.put_into(
evt);
219 hitCollection_Y.put_into(
evt);
int fColWidth
Induction wire hit width (in time ticks)
float fMinSigTailInd
Collection wire signal height threshold at peak.
float fMinSigPeakCol
Induction wire signal height threshold at peak.
WireID_t Wire
Index of the wire within its plane.
int TDCtick_t
Type representing a TDC tick.
Class managing the creation of a new recob::Hit object.
A class handling a collection of hits and its associations.
Signal from induction planes.
enum geo::_plane_sigtype SigType_t
PlaneID_t Plane
Index of the plane within its TPC.
float fMinSigTailCol
Induction wire signal height threshold outside peak.
std::string fCalDataModuleLabel
float fMinSigPeakInd
Input caldata module name.
int fIndWidth
Collection wire signal height threshold outside peak.
float getTotalCharge(const float *, int, float)
Collection wire hit width (in time ticks)
Signal from collection planes.