@@ -1107,14 +1107,6 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
11071107 }
11081108 }
11091109 if (mTracking ->mIOPtrs .nMergedTracks && clNative) {
1110- // Keep these per MC label: the reverse label map retains only one clone.
1111- struct LowestRowInfo {
1112- int32_t row = GPUTPCGeometry::NROWS ;
1113- };
1114- std::vector<std::vector<LowestRowInfo>> lowestRowInfo (GetNMCCollissions ());
1115- for (uint32_t iCol = 0 ; iCol < GetNMCCollissions (); iCol++) {
1116- lowestRowInfo[iCol].resize (GetNMCTracks (iCol));
1117- }
11181110 std::fill (lowestPadRow.begin (), lowestPadRow.end (), 255 );
11191111 for (uint32_t iSector = 0 ; iSector < GPUTPCGeometry::NSECTORS ; iSector++) {
11201112 for (uint32_t iRow = 0 ; iRow < GPUTPCGeometry::NROWS ; iRow++) {
@@ -1125,9 +1117,7 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
11251117 if (!label.isValid () || label.isNoise ()) {
11261118 continue ;
11271119 }
1128- auto & info = GetMCTrackObj (lowestRowInfo, label);
1129- info.row = std::min (info.row , (int32_t )iRow);
1130- uint32_t trackId = GetMCTrackObj (mTrackMCLabelsReverse , GetMCLabel (i, j));
1120+ uint32_t trackId = GetMCTrackObj (mTrackMCLabelsReverse , label);
11311121 if (trackId < lowestPadRow.size () && lowestPadRow[trackId] > iRow) {
11321122 lowestPadRow[trackId] = iRow;
11331123 }
@@ -1140,8 +1130,8 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
11401130 const auto & label = mTrackMCLabels [i];
11411131 if (trk.OK () && trk.NClustersFitted () > 50 && CAMath::Abs (trk.GetParam ().GetQPt ()) < 1 .f && label.isValid () && !label.isNoise () &&
11421132 (mMCTrackMin == -1 || label.getTrackID () >= mMCTrackMin ) && (mMCTrackMax == -1 || label.getTrackID () < mMCTrackMax )) {
1143- const auto & info = GetMCTrackObj (lowestRowInfo , label);
1144- if (info. row < 10 ) {
1133+ const uint32_t trackId = GetMCTrackObj (mTrackMCLabelsReverse , label);
1134+ if (trackId < lowestPadRow. size () && lowestPadRow[trackId] < 10 ) {
11451135 const GPUTPCGMMergedTrackHit* lowestCl = nullptr ;
11461136 for (uint32_t j = 0 ; j < trk.NClusters (); j++) {
11471137 const auto & cl = mTracking ->mIOPtrs .mergedTrackHits [trk.FirstClusterRef () + j];
@@ -1151,7 +1141,7 @@ void GPUQA::RunQA(bool matchOnly, const std::vector<o2::tpc::TrackTPC>* tracksEx
11511141 }
11521142 if (lowestCl) {
11531143 const float pad = clNative->clustersLinear [lowestCl->num ].getPad ();
1154- const int32_t difference = (int32_t )lowestCl->row - info. row ;
1144+ const int32_t difference = (int32_t )lowestCl->row - lowestPadRow[trackId] ;
11551145 mLowestRowDifferenceVsPad ->Fill (pad, difference);
11561146 if (CAMath::Abs (difference) > 5 && pad > 5 .f && pad < GPUTPCGeometry::NPads (lowestCl->row ) - 5 .f ) {
11571147 mLowestRowTrackMultiplicity ->Fill (GetMCTrackObj (mRecTracks , label));
0 commit comments