diff --git a/reco/detectors/trd/qa/CbmTrdHitProducerQa.cxx b/reco/detectors/trd/qa/CbmTrdHitProducerQa.cxx
index 507593e4ac5c15e59e21a728d26e662c759fc608..19c1f315ffbb23cafa89a0233017110de0cffbc5 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()));