diff --git a/include/KDTrack.h b/include/KDTrack.h index 7e89f5d..5cc8fdc 100644 --- a/include/KDTrack.h +++ b/include/KDTrack.h @@ -5,6 +5,7 @@ #include "Parameters.h" #include +#include class TH2F; @@ -35,6 +36,9 @@ class KDTrack { m_nPoints++; } void remove(int clusterN) { + if(clusterN < 0 || clusterN >= int(m_clusters.size())) { + throw std::out_of_range("KDTrack::remove: clusterN out of range"); + } m_clusters.erase(m_clusters.begin() + clusterN); m_nPoints--; } diff --git a/src/ConformalTracking.cc b/src/ConformalTracking.cc index 26aca9b..36ecff0 100644 --- a/src/ConformalTracking.cc +++ b/src/ConformalTracking.cc @@ -2049,7 +2049,7 @@ void ConformalTracking::extendTracksPerLayer(UniqueKDTracks& conformalTracks, Sh deltaChi2zs = newchi2zs - chi2zs; streamlog_out(DEBUG9) << "-- hit was fitted and has a delta chi2 of " << deltaChi2 << " and delta chi2zs of " << deltaChi2zs << std::endl; - tempTrack.remove(tempTrack.m_clusters.size()); + tempTrack.remove(tempTrack.m_clusters.size() - 1); streamlog_out(DEBUG9) << "-- tempTrack has now " << tempTrack.m_clusters.size() << " hits " << std::endl; double chi2cut = parameters._chi2cut;