@@ -507,7 +507,7 @@ void TrackMCStudy::process(const o2::globaltracking::RecoContainer& recoData)
507507 }
508508
509509 LOGP (info, " collected {} MC tracks" , mSelMCTracks .size ());
510- if (params.minTPCRefsToExtractClRes > 0 ) { // prepare MC trackrefs for TPC
510+ if (params.minTPCRefsToExtractClRes > 0 || params. storeTPCTrackRefs ) { // prepare MC trackrefs for TPC
511511 processTPCTrackRefs ();
512512 }
513513
@@ -532,6 +532,15 @@ void TrackMCStudy::process(const o2::globaltracking::RecoContainer& recoData)
532532 }
533533 return lhs.gid .getSource () > rhs.gid .getSource ();
534534 });
535+ if (params.storeTPCTrackRefs ) {
536+ auto rft = mSelTRefIdx .find (entry.first );
537+ if (rft != mSelTRefIdx .end ()) {
538+ auto rfent = rft->second ;
539+ for (int irf = rfent.first ; irf < rfent.second ; irf++) {
540+ trackFam.mcTrackInfo .trackRefsTPC .push_back (mSelTRefs [irf]);
541+ }
542+ }
543+ }
535544 // fill track params
536545 int tcnt = 0 ;
537546 for (auto & tref : tracks) {
@@ -598,8 +607,8 @@ void TrackMCStudy::process(const o2::globaltracking::RecoContainer& recoData)
598607 tcnt++;
599608 }
600609 if (trackFam.entITS > -1 && trackFam.entTPC > -1 ) { // ITS and TPC were found but matching failed
601- auto vidITS = tracks[trackFam.entITS ].gid ;
602- auto vidTPC = tracks[trackFam.entTPC ].gid ;
610+ auto vidITS = recoData. getITSContributorGID ( tracks[trackFam.entITS ].gid ) ;
611+ auto vidTPC = recoData. getTPCContributorGID ( tracks[trackFam.entTPC ].gid ) ;
603612 auto trcTPC = recoData.getTrackParam (vidTPC);
604613 auto trcITS = recoData.getTrackParamOut (vidITS);
605614 if (propagateToRefX (trcTPC, trcITS)) {
0 commit comments