@@ -53,18 +53,18 @@ GPUdii() void GPUTPCTrackletSelector::Thread<0>(int32_t nBlocks, int32_t nThread
5353 uint32_t nHits = 0 ;
5454 const uint32_t minHits = tracker.Param ().rec .tpc .minNClustersTrackSeed == -1 ? GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5 (tracklet.Param ().QPt () * tracker.Param ().qptB5Scaler ) : tracker.Param ().rec .tpc .minNClustersTrackSeed ;
5555 const uint32_t sharingMinNorm = minHits * tracker.Param ().rec .tpc .trackletMinSharedNormFactor ;
56- float maxShared = maxSharedFrac * sharingMinNorm;
56+ const float maxSharedNorm = maxSharedFrac * sharingMinNorm;
5757
5858 GPUCA_UNROLL (, U (1 ))
59- for (irow = firstRow ; irow <= lastRow && lastRow - irow + nHits >= minHits; irow++ ) {
59+ for (irow = lastRow ; irow >= firstRow && irow - firstRow + nHits >= minHits; irow-- ) {
6060 calink ih = tracker.TrackletRowHits ()[tracklet.FirstHit () + (irow - firstRow)];
6161 if (ih != CALINK_DEAD_CHANNEL) {
6262 gap++;
6363 }
6464 if (ih != CALINK_INVAL && ih != CALINK_DEAD_CHANNEL) {
6565 GPUglobalref () const GPUTPCRow& row = tracker.Row (irow);
6666 const bool own = (tracker.HitWeight (row, ih) <= w);
67- const bool sharedOK = nShared <= (nHits < sharingMinNorm ? maxShared : nHits * maxSharedFrac);
67+ const bool sharedOK = nShared <= (nHits < sharingMinNorm ? maxSharedNorm : nHits * maxSharedFrac);
6868 if (own || sharedOK) { // SG!!!
6969 gap = 0 ;
7070#pragma GCC diagnostic push
@@ -86,7 +86,7 @@ GPUdii() void GPUTPCTrackletSelector::Thread<0>(int32_t nBlocks, int32_t nThread
8686 }
8787 }
8888
89- if (gap > tracker.Param ().rec .tpc .trackFollowingMaxRowGap || irow == lastRow ) { // store
89+ if (gap > tracker.Param ().rec .tpc .trackFollowingMaxRowGap || irow == firstRow ) { // store
9090 if (nHits >= minHits) {
9191 uint32_t nFirstTrackHit = CAMath::AtomicAdd (tracker.NTrackHits (), (uint32_t )nHits);
9292 if (nFirstTrackHit + nHits > tracker.NMaxTrackHits ()) {
@@ -111,11 +111,11 @@ GPUdii() void GPUTPCTrackletSelector::Thread<0>(int32_t nBlocks, int32_t nThread
111111#pragma GCC diagnostic pop
112112 if constexpr (GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE > 0 ) {
113113 if (inShared) {
114- tracker.TrackHits ()[nFirstTrackHit + jh] = s.mHits [jh][iThread];
114+ tracker.TrackHits ()[nFirstTrackHit + nHits - 1 - jh] = s.mHits [jh][iThread];
115115 }
116116 }
117117 if (!inShared) {
118- tracker.TrackHits ()[nFirstTrackHit + jh] = trackHits[jh - GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE];
118+ tracker.TrackHits ()[nFirstTrackHit + nHits - 1 - jh] = trackHits[jh - GPUCA_PAR_TRACKLET_SELECTOR_HITS_REG_SIZE];
119119 }
120120 }
121121 }
0 commit comments