diff --git a/core/base/CbmMatchRecoToMC.cxx b/core/base/CbmMatchRecoToMC.cxx
index 87679fd35082499e11395bfb3878311c599b3061..a8d46e282d694cdfdae1fab717b4486ba1fb401a 100644
--- a/core/base/CbmMatchRecoToMC.cxx
+++ b/core/base/CbmMatchRecoToMC.cxx
@@ -1,4 +1,4 @@
-/* Copyright (C) 2013-2021 GSI/JINR-LIT, Darmstadt/Dubna
+/* Copyright (C) 2013-2023 GSI/JINR-LIT, Darmstadt/Dubna
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Andrey Lebedev [committer], Florian Uhlig, Volker Friese, Pierre-Alain Loizeau */
 
@@ -454,8 +454,17 @@ void CbmMatchRecoToMC::MatchHitsSts(const TClonesArray* cluMatches, const TClone
     CbmMatch* hitMatch                = new ((*hitMatches)[iHit]) CbmMatch();
     const CbmMatch* frontClusterMatch = static_cast<const CbmMatch*>(cluMatches->At(hit->GetFrontClusterId()));
     const CbmMatch* backClusterMatch  = static_cast<const CbmMatch*>(cluMatches->At(hit->GetBackClusterId()));
-    hitMatch->AddLinks(*frontClusterMatch);
-    hitMatch->AddLinks(*backClusterMatch);
+
+    for (int iLinkF = 0; iLinkF < frontClusterMatch->GetNofLinks(); ++iLinkF) {
+      const auto& linkF = frontClusterMatch->GetLink(iLinkF);
+      for (int iLinkB = 0; iLinkB < backClusterMatch->GetNofLinks(); ++iLinkB) {
+        const auto& linkB = backClusterMatch->GetLink(iLinkB);
+        if (linkB == linkF) {
+          hitMatch->AddLink(linkF);
+          hitMatch->AddLink(linkB);
+        }
+      }
+    }
   }
 }