51 const recob::Wire::RegionsOfInterest_t::datarange_t& dataRange,
52 const size_t roiStartTick,
58 const Waveform& waveform = dataRange.data();
62 const size_t plane = wids[0].Plane;
65 findHitCandidates(waveform.begin(), waveform.end(), roiStartTick, plane, hitCandidateVec);
70 const size_t roiStartTick,
71 const size_t planeIdx,
75 if (std::distance(startItr, stopItr) > 4) {
77 auto maxItr = std::max_element(startItr, stopItr);
79 float maxValue = *maxItr;
80 int maxTime = std::distance(startItr, maxItr);
84 auto firstItr = std::distance(startItr, maxItr) > 2 ? maxItr - 1 : startItr;
86 while (firstItr != startItr) {
91 if (*firstItr < *(firstItr + 1) && *firstItr <= *(firstItr - 1))
break;
96 int firstTime = std::distance(startItr, firstItr);
99 findHitCandidates(startItr, firstItr + 1, roiStartTick, planeIdx, hitCandidateVec);
102 auto lastItr = std::distance(maxItr, stopItr) > 2 ? maxItr + 1 : stopItr - 1;
104 while (lastItr != stopItr - 1) {
109 if (*lastItr <= *(lastItr + 1) && *lastItr < *(lastItr - 1))
break;
114 int lastTime = std::distance(startItr, lastItr);
118 hitCandidate.
startTick = roiStartTick + firstTime;
119 hitCandidate.
stopTick = roiStartTick + lastTime;
120 hitCandidate.
maxTick = roiStartTick + firstTime;
121 hitCandidate.
minTick = roiStartTick + lastTime;
124 hitCandidate.
hitCenter = roiStartTick + maxTime;
125 hitCandidate.
hitSigma = std::max(2.,
float(lastTime - firstTime) / 6.);
128 hitCandidateVec.push_back(hitCandidate);
133 roiStartTick + std::distance(startItr, lastItr + 1),
145 if (hitCandidateVec.empty())
return;
150 int lastTick = hitCandidateVec.front().stopTick;
153 for (
const auto& hitCandidate : hitCandidateVec) {
155 if (
int(hitCandidate.startTick) - lastTick > 1) {
156 mergedHitsVec.emplace_back(groupedHitVec);
158 groupedHitVec.clear();
162 groupedHitVec.emplace_back(hitCandidate);
164 lastTick = hitCandidate.stopTick;
168 if (!groupedHitVec.empty()) mergedHitsVec.emplace_back(groupedHitVec);
cout<< "Opened file "<< fin<< " ixs= "<< ixs<< endl;if(ixs==0) hhh=(TH1F *) fff-> Get("h1")
Interface for a class providing readout channel mapping to geometry.
decltype(auto) get(T &&obj)
ADL-aware version of std::to_string.
virtual std::vector< WireID > ChannelToWire(raw::ChannelID_t channel) const =0
This provides an interface for tools which are tasked with finding candidate hits on input waveforms...