From 7884252460556bec40d045bd0ffe06709cd9992b Mon Sep 17 00:00:00 2001
From: Maximilian Goblirsch-Kolb <goblirsc@cern.ch>
Date: Wed, 21 Oct 2020 10:48:16 +0200
Subject: [PATCH] fix a bug introduced by earlier refactoring

---
 .../SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx    | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx b/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx
index 436d66b30d78..1a3ccd843abe 100644
--- a/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx
+++ b/InnerDetector/InDetRecTools/SiTrackMakerTool_xk/src/SiTrackMaker_xk.cxx
@@ -1150,16 +1150,22 @@ bool InDet::SiTrackMaker_xk::newSeed(SiTrackMakerEventData_xk& data, const std::
     /// incremenent counter again
     ++n;
   }
-  /// check if at least on cluster is not already used by a track. 
+  /// check if at least on cluster is not already used by any track. 
   /// This works since the multiset allows adding the same track multiple times
+  /// If this is the case, we accept the seed. 
   if(trackseed.size() < n) return true;
   /// in the case of HI reco, we accept any 3-cluster (PPP) seed. 
   if( m_heavyion && n==3 ) return true;
     
-  /// now we look for the track consuming the largest number of clusters 
-  const Trk::Track* currentTrack = (*trackseed.begin());
+  /// Now we look for the track consuming the largest number of clusters 
+
+  /// This is done by looping over all tracks using any of our clusters,
+  /// and counting the appearance of each track in the multiset. 
+  /// If one single track contains all of the clusters (--> is included n times), 
+  /// we reject this seed. 
+  const Trk::Track* currentTrack {nullptr};
   size_t clustersOnCurrent  = 1;
-  /// loop over the list 
+  /// loop over the list of tracks
    for(const Trk::Track* track : trackseed) {
     /// if this is a new track, reset the counter
     if(track != currentTrack) {
-- 
GitLab