From 2b32df7e7f6ffae042d49fa44e6762c91deabb64 Mon Sep 17 00:00:00 2001
From: Dominik Smith <d.smith@gsi.de>
Date: Wed, 10 Nov 2021 11:20:58 +0100
Subject: [PATCH] CbmTrdHitProducerQa: Particle ID now properly obtained from
 MC tracks.

---
 reco/detectors/trd/qa/CbmTrdHitProducerQa.cxx | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/reco/detectors/trd/qa/CbmTrdHitProducerQa.cxx b/reco/detectors/trd/qa/CbmTrdHitProducerQa.cxx
index 507593e4ac..19c1f315ff 100644
--- a/reco/detectors/trd/qa/CbmTrdHitProducerQa.cxx
+++ b/reco/detectors/trd/qa/CbmTrdHitProducerQa.cxx
@@ -176,7 +176,13 @@ void CbmTrdHitProducerQa::Exec(Option_t*)
       cout << GetName() << ": Warning, TRD plane out of bounds, skipping hit." << endl;
       continue;
     }
-    const int partID = (dynamic_cast<CbmMCTrack*>(fMCTrackArray->Get(trdDigiMatch->GetMatchedLink())))->GetPdgCode();
+
+    //get particle ID of track corresponding to point
+    const int fileId        = trdDigiMatch->GetMatchedLink().GetFile();
+    const int event         = trdDigiMatch->GetMatchedLink().GetEntry();
+    const int index         = trdPoint->GetTrackID();
+    const CbmMCTrack* track = dynamic_cast<CbmMCTrack*>(fMCTrackArray->Get(fileId, event, index));
+    const int partID        = track->GetPdgCode();
 
     const float momentum = TMath::Sqrt((trdPoint->GetPx() * trdPoint->GetPx()) + (trdPoint->GetPy() * trdPoint->GetPy())
                                        + (trdPoint->GetPz() * trdPoint->GetPz()));
-- 
GitLab