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