@@ -1797,14 +1797,7 @@ GPUd() void GPUTPCGMMerger::PrepareForFit1(int32_t nBlocks, int32_t nThreads, in
17971797 CAMath::AtomicAdd (&mSharedCount [mClusters [trk.FirstClusterRef () + j].num ], 1u );
17981798 }
17991799 if (!trk.CCE () && !trk.MergedLooper ()) {
1800- GPUTPCGMMergedTrack* updTrk = &trk;
1801- while (updTrk->PrevSegment () >= 0 ) {
1802- auto next = &mMergedTracks [updTrk->PrevSegment ()];
1803- if (next == &trk) {
1804- break ;
1805- }
1806- updTrk = next;
1807- }
1800+ GPUTPCGMMergedTrack* updTrk = trk.GetFirstSegment (mMergedTracks );
18081801 const auto &cl0 = mClusters [trk.FirstClusterRef ()], &cln = mClusters [updTrk->FirstClusterRef () + updTrk->NClusters () - 1 ];
18091802 const auto & GPUrestrict () cls = GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear ;
18101803 float z0 = cls[cl0.num ].getTime (), zn = cls[cln.num ].getTime ();
@@ -1973,14 +1966,7 @@ GPUd() void GPUTPCGMMerger::MergeLoopersMain(int32_t nBlocks, int32_t nThreads,
19731966 const GPUTPCGMMergedTrack* trkI = &mMergedTracks [candidates[i].id ];
19741967 float refZI = candidates[i].refz ;
19751968 {
1976- const auto * tmp = trkI;
1977- while (tmp->PrevSegment () >= 0 ) {
1978- const auto * next = &mMergedTracks [tmp->PrevSegment ()];
1979- if (next == trkI) {
1980- break ;
1981- }
1982- tmp = next;
1983- }
1969+ const auto * tmp = trkI->GetFirstSegment (mMergedTracks );
19841970 if (tmp != trkI && tmp->CSide () == trkI->CSide () && CAMath::Abs (tmp->GetParam ().GetZ ()) > CAMath::Abs (trkI->GetParam ().GetZ ())) {
19851971 float tmpRefZ = refZI + tmp->GetParam ().GetZ () - trkI->GetParam ().GetZ ();
19861972 if (CAMath::Abs (tmpRefZ) < CAMath::Abs (candidates[j].refz ) && CAMath::Abs (tmpRefZ) > CAMath::Abs (refZI)) {
0 commit comments