diff --git a/k4Reco/ConformalTracking/components/ConformalTracking.cpp b/k4Reco/ConformalTracking/components/ConformalTracking.cpp index 8fbabf13..3d75d8a6 100644 --- a/k4Reco/ConformalTracking/components/ConformalTracking.cpp +++ b/k4Reco/ConformalTracking/components/ConformalTracking.cpp @@ -1761,7 +1761,7 @@ void ConformalTracking::extendTracksPerLayer(UniqueKDTracks& conformalTracks, Sh deltaChi2zs = newchi2zs - chi2zs; debug() << "-- hit was fitted and has a delta chi2 of " << deltaChi2 << " and delta chi2zs of " << deltaChi2zs << endmsg; - tempTrack.remove(tempTrack.m_clusters.size()); + tempTrack.remove(tempTrack.m_clusters.size() - 1); debug() << "-- tempTrack has now " << tempTrack.m_clusters.size() << " hits " << endmsg; double chi2cut = parameters.m_chi2cut; diff --git a/k4Reco/ConformalTracking/include/KDTrack.h b/k4Reco/ConformalTracking/include/KDTrack.h index 24ccd10c..08d9b059 100644 --- a/k4Reco/ConformalTracking/include/KDTrack.h +++ b/k4Reco/ConformalTracking/include/KDTrack.h @@ -22,8 +22,8 @@ #include "KDCluster.h" #include "Parameters.h" -#include #include +#include #include class TH2F; @@ -50,7 +50,12 @@ class KDTrack { //--- Functions to add and remove clusters void add(SKDCluster cluster) { m_clusters.push_back(cluster); } void insert(SKDCluster cluster) { m_clusters.insert(m_clusters.begin(), cluster); } - void remove(int clusterN) { m_clusters.erase(m_clusters.begin() + clusterN); } + void remove(int clusterN) { + if (clusterN < 0 || clusterN >= static_cast(m_clusters.size())) { + throw std::out_of_range("KDTrack::remove: clusterN out of range"); + } + m_clusters.erase(m_clusters.begin() + clusterN); + } //--- Fit functions double calculateChi2();