From 2b9ae36543698ef0ea5b6595b47760a37cef4cde Mon Sep 17 00:00:00 2001 From: echenard Date: Wed, 11 Feb 2026 19:07:40 -0600 Subject: [PATCH 1/2] Further checks in MHF --- TrkPatRec/src/RobustMultiHelixFinder_module.cc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/TrkPatRec/src/RobustMultiHelixFinder_module.cc b/TrkPatRec/src/RobustMultiHelixFinder_module.cc index 7dbbe15505..aab95873d7 100644 --- a/TrkPatRec/src/RobustMultiHelixFinder_module.cc +++ b/TrkPatRec/src/RobustMultiHelixFinder_module.cc @@ -589,6 +589,8 @@ chi2dXY = bestHelix.fita_zt_; //final dz/dphi and dz/dt refit fit_dzdp(helix,chcol,helicity); fit_dzdt(helix,chcol); + if (abs(helix.fita_zp_)<1e-3 || abs(helix.fita_zt_)<1e-3) {helix.hitIndices_.clear(); helix.nStrawHits_=0; return;} + if (!std::isnormal(helix.fita_zp_) || !std::isnormal(helix.fita_zt_)) {helix.hitIndices_.clear(); helix.nStrawHits_=0; return;} helix.nStrawHits_=0; for (const auto& ich : helix.hitIndices_) helix.nStrawHits_ += chcol[ich].nStrawHits(); @@ -691,6 +693,8 @@ chi2dXY = bestHelix.fita_zt_; float fa = zphiFitter.fa(); float fb = zphiFitter.fb(); + + if (fabs(fa) < 1e-3) return; if ((helicity==Helicity::poshel && fa<1e-3) || (helicity==Helicity::neghel && fa>-1e-3)) return; circle.fita_zp_ = fa; From 41bd766f25d872ffc7107b2dbbf026926bc60ba5 Mon Sep 17 00:00:00 2001 From: echenard Date: Thu, 5 Mar 2026 19:25:44 -0600 Subject: [PATCH 2/2] Fixed AI suggestions --- TrkPatRec/src/RobustMultiHelixFinder_module.cc | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/TrkPatRec/src/RobustMultiHelixFinder_module.cc b/TrkPatRec/src/RobustMultiHelixFinder_module.cc index aab95873d7..2193cee52c 100644 --- a/TrkPatRec/src/RobustMultiHelixFinder_module.cc +++ b/TrkPatRec/src/RobustMultiHelixFinder_module.cc @@ -22,6 +22,7 @@ #include #include +#include namespace { @@ -437,6 +438,7 @@ chi2dXY = bestHelix.fita_zt_; float denominator = 2*(x2*y3 - x3*y2); float numeratorX = x12x12y12y12*y3 - x13x13y13y13*y2; float numeratorY = x13x13y13y13*x2 - x12x12y12y12*x3; + if (std::abs(denominator)<1e-9) continue; float centerX = numeratorX/denominator+x1; float centerY = numeratorY/denominator+y1; @@ -477,7 +479,7 @@ chi2dXY = bestHelix.fita_zt_; else if (chisq0) sumChisq /= nsh; art::Ptr thisCaloPtr{}; if (caloPtr && caloPtr->energyDep()>ccMinEnergy_) { @@ -557,7 +559,7 @@ chi2dXY = bestHelix.fita_zt_; //perform dz/dphi fit and filter hits based on the fit result init_dzdp(helix,chcol,helicity); fit_dzdp(helix,chcol,helicity); - if (abs(helix.fita_zp_)<1e-3) {helix.hitIndices_.clear(); helix.nStrawHits_=0; return;} + if (std::abs(helix.fita_zp_)<1e-3) {helix.hitIndices_.clear(); helix.nStrawHits_=0; return;} filterZPhi(helix,chcol,maxDPhiHelFit_); //Perform a dz/dt fit and filter hits based on the fit result @@ -589,7 +591,7 @@ chi2dXY = bestHelix.fita_zt_; //final dz/dphi and dz/dt refit fit_dzdp(helix,chcol,helicity); fit_dzdt(helix,chcol); - if (abs(helix.fita_zp_)<1e-3 || abs(helix.fita_zt_)<1e-3) {helix.hitIndices_.clear(); helix.nStrawHits_=0; return;} + if (std::abs(helix.fita_zp_)<1e-3 || std::abs(helix.fita_zt_)<1e-3) {helix.hitIndices_.clear(); helix.nStrawHits_=0; return;} if (!std::isnormal(helix.fita_zp_) || !std::isnormal(helix.fita_zt_)) {helix.hitIndices_.clear(); helix.nStrawHits_=0; return;} helix.nStrawHits_=0; @@ -694,7 +696,6 @@ chi2dXY = bestHelix.fita_zt_; float fa = zphiFitter.fa(); float fb = zphiFitter.fb(); - if (fabs(fa) < 1e-3) return; if ((helicity==Helicity::poshel && fa<1e-3) || (helicity==Helicity::neghel && fa>-1e-3)) return; circle.fita_zp_ = fa; @@ -731,8 +732,8 @@ chi2dXY = bestHelix.fita_zt_; --it; unsigned ich = circle.hitIndices_[it]; float phi = polyAtan2(chcol[ich].pos().y() - circle.y_,chcol[ich].pos().x() - circle.x_); - int n = round((phi-(chcol[ich].pos().z()-circle.fitb_zp_)/circle.fita_zp_)/6.293185); - float delta = abs((chcol[ich].pos().z()-circle.fitb_zp_)/circle.fita_zp_-phi+n*6.293185); + int n = round((phi-(chcol[ich].pos().z()-circle.fitb_zp_)/circle.fita_zp_)/6.283185); + float delta = abs((chcol[ich].pos().z()-circle.fitb_zp_)/circle.fita_zp_-phi+n*6.283185); if (delta < maxDphi) continue; circle.remove(it, chcol[ich].nStrawHits());