80 const art::Event*
event = evdb::EventHolder::Instance()->GetEvent();
85 for (
size_t imod = 0; imod < recoOpt->
fHitLabels.size(); ++imod) {
90 event->getByLabel(which, hitVecHandle);
96 for (
size_t hitIdx = 0; hitIdx < hitVecHandle->size(); hitIdx++) {
104 <<
" failed with message:\n" 108 if (hitPtrVec.
empty())
continue;
111 std::sort(hitPtrVec.
begin(), hitPtrVec.
end(), [](
const auto&
left,
const auto&
right) {
112 return left->PeakTime() <
right->PeakTime();
116 art::FindManyP<recob::Wire> wireAssnsVec(hitPtrVec, *
event, which);
117 std::vector<float> wireDataVec;
120 if (wireAssnsVec.isValid() && wireAssnsVec.size() > 0) {
121 auto hwafp = wireAssnsVec.at(0).front();
122 if (!hwafp.isNull() && hwafp.isAvailable()) { wireDataVec = hwafp->Signal(); }
134 for (
const auto&
hit : hitPtrVec) {
136 if (
hit->PeakTime() - 3. *
hit->RMS() > lastEndTick) {
137 if (!roiHitParamsVec.empty()) hitParamsVec.push_back(roiHitParamsVec);
138 roiHitParamsVec.clear();
143 hitParams.hitCenter =
hit->PeakTime();
144 hitParams.hitSigma =
hit->RMS();
145 hitParams.hitHeight =
hit->PeakAmplitude();
146 hitParams.hitStart =
hit->StartTick();
147 hitParams.hitEnd =
hit->EndTick();
149 lastEndTick = hitParams.hitEnd;
151 roiHitParamsVec.emplace_back(hitParams);
156 if (!roiHitParamsVec.empty()) hitParamsVec.push_back(roiHitParamsVec);
160 for (
const auto& roiHitParamsVec : hitParamsVec) {
162 double roiStart = roiHitParamsVec.front().hitStart;
163 double roiStop = roiHitParamsVec.back().hitEnd;
168 for (
size_t idx = 1; idx < roiHitParamsVec.size(); idx++)
174 if (
fFloatBaseline && !wireDataVec.empty()) baseline = wireDataVec.at(roiStart);
179 std::make_unique<TF1>(funcName.c_str(), funcString.c_str(), roiStart, roiStop));
185 for (
const auto& hitParams : roiHitParamsVec) {
186 hitFunc.SetParameter(idx + 0, hitParams.hitHeight);
187 hitFunc.SetParameter(idx + 1, hitParams.hitCenter);
188 hitFunc.SetParameter(idx + 2, hitParams.hitSigma);
190 TPolyLine&
hitHeight = view2D.AddPolyLine(2, kBlack, 1, 1);
192 hitHeight.SetPoint(0, hitParams.hitCenter, baseline);
193 hitHeight.SetPoint(1, hitParams.hitCenter, hitParams.hitHeight + baseline);
195 hitHeight.Draw(
"same");
197 TPolyLine&
hitSigma = view2D.AddPolyLine(2, kGray, 1, 1);
200 0, hitParams.hitCenter - hitParams.hitSigma, 0.6 * hitParams.hitHeight + baseline);
202 1, hitParams.hitCenter + hitParams.hitSigma, 0.6 * hitParams.hitHeight + baseline);
204 hitSigma.Draw(
"same");
209 hitFunc.Draw(
"same");
int TDCtick_t
Type representing a TDC tick.
void push_back(Ptr< U > const &p)
Detector simulation of raw signals on wires.
MaybeLogger_< ELseverityLevel::ELsev_warning, false > LogWarning
std::vector< art::InputTag > fHitLabels
module labels that produced hits
std::string to_string(ModuleType const mt)
cet::coded_exception< error, detail::translate > exception
Event finding and building.