Skip to content

Commit d6ed356

Browse files
committed
GPU TPC: TrackletSelection: Count shared hits from outside, to allow more shared hits at inner rows
1 parent d1bcf2d commit d6ed356

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

GPU/GPUTracking/SectorTracker/GPUTPCTrackletSelector.cxx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)