From f11af45494f09cccf6c8354b74be51699979249b Mon Sep 17 00:00:00 2001
From: Martin Beyer <martin.beyer@physik.uni-giessen.de>
Date: Thu, 4 Jul 2024 09:53:37 +0000
Subject: [PATCH] Rich: Ring track match index fix for timebased data

---
 .../rich/tracks/CbmRichRingTrackAssignClosestD.cxx  | 13 +++++++------
 reco/littrack/cbm/utils/CbmLitConverter.h           |  2 +-
 2 files changed, 8 insertions(+), 7 deletions(-)

diff --git a/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx b/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx
index 6220ef845e..ea32c6319d 100644
--- a/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx
+++ b/reco/detectors/rich/tracks/CbmRichRingTrackAssignClosestD.cxx
@@ -1,6 +1,6 @@
-/* Copyright (C) 2006-2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2006-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
-   Authors: Claudia Hoehne [committer], Semen Lebedev */
+   Authors: Claudia Hoehne [committer], Semen Lebedev, Martin Beyer */
 
 /**
 * \file CbmRichRingTrackAssignClosestD.cxx
@@ -88,7 +88,7 @@ void CbmRichRingTrackAssignClosestD::DoAssignRingTrack(CbmEvent* event, TClonesA
     for (Int_t iR0 = 0; iR0 < nofRings; iR0++) {
       Int_t iR = event ? event->GetIndex(ECbmDataType::kRichRing, iR0) : iR0;
 
-      if (trackIndex[iR] != -1) continue;
+      if (trackIndex[iR0] != -1) continue;
       CbmRichRing* ring = static_cast<CbmRichRing*>(rings->At(iR));
       if (ring == nullptr) continue;
       if (ring->GetNofHits() < fMinNofHitsInRing) continue;
@@ -119,8 +119,8 @@ void CbmRichRingTrackAssignClosestD::DoAssignRingTrack(CbmEvent* event, TClonesA
           iTrackMin = iT;
         }
       }  // loop tracks
-      trackIndex[iR] = iTrackMin;
-      trackDist[iR]  = rMin;
+      trackIndex[iR0] = iTrackMin;
+      trackDist[iR0]  = rMin;
     }  //loop rings
 
     for (UInt_t i1 = 0; i1 < trackIndex.size(); i1++) {
@@ -146,7 +146,8 @@ void CbmRichRingTrackAssignClosestD::DoAssignRingTrack(CbmEvent* event, TClonesA
     // cout << "trackIndex[i]:" << trackIndex[i] << " trackDist[i]:" << trackDist[i] << " r:" << pRing->GetRadius() << " x:" << pRing->GetCenterX() << " y:" << pRing->GetCenterY()<< endl;
     if (trackIndex[i] == -1) continue;
     CbmGlobalTrack* gTrack = (CbmGlobalTrack*) fGlobalTracks->At(trackIndex[i]);
-    gTrack->SetRichRingIndex(i);
+    Int_t ringIndex        = event ? event->GetIndex(ECbmDataType::kRichRing, i) : i;
+    gTrack->SetRichRingIndex(ringIndex);
   }
 }
 
diff --git a/reco/littrack/cbm/utils/CbmLitConverter.h b/reco/littrack/cbm/utils/CbmLitConverter.h
index 46757b3c5f..56e9da37ca 100644
--- a/reco/littrack/cbm/utils/CbmLitConverter.h
+++ b/reco/littrack/cbm/utils/CbmLitConverter.h
@@ -208,7 +208,7 @@ public:
     for (Int_t i = 0; i < nofStsTracks; i++) {
       Int_t iTrack                = event ? event->GetIndex(ECbmDataType::kStsTrack, i) : i;
       CbmGlobalTrack* globalTrack = new ((*globalTracks)[globalTrackNo++]) CbmGlobalTrack();
-      globalTrack->SetStsTrackIndex(i);
+      globalTrack->SetStsTrackIndex(iTrack);
 
       if (event) event->AddData(ECbmDataType::kGlobalTrack, iTrack);
     }
-- 
GitLab