@@ -137,7 +137,14 @@ class TPCClusterDecompressionCore
137137 time = cmprClusters.timeA [trackIndex];
138138 pad = cmprClusters.padA [trackIndex];
139139 }
140- const auto cluster = decompressTrackStore (cmprClusters, clusterOffset, slice, row, pad, time, args...);
140+ auto cluster = decompressTrackStore (cmprClusters, clusterOffset, slice, row, pad, time, args...);
141+ if ((cluster.getFlags () & ClusterNative::flagEdge) && param.rec .tpc .clustersShiftTimebins != 0 .f ) {
142+ auto padF = cluster.getPad ();
143+ float distEdge = padF < geo.NPads (row) / 2 ? padF : geo.NPads (row) - 1 - padF;
144+ if (distEdge > param.rec .tpc .clustersShiftTimebins ) {
145+ cluster.setFlags (cluster.getFlags () ^ ClusterNative::flagEdge);
146+ }
147+ }
141148 float y = track.LinearPad2Y (slice, cluster.getPad (), geo.PadWidth (row), geo.NPads (row));
142149 float z = geo.LinearTime2Z (slice, cluster.getTime ());
143150 if (clusterIndex == 0 ) {
@@ -152,7 +159,7 @@ class TPCClusterDecompressionCore
152159 clusterOffset += cmprClusters.nTrackClusters [trackIndex] - clusterIndex;
153160 }
154161
155- GPUdi () static const auto & decompressHitsStore (const CompressedClusters& cmprClusters, uint32_t k, uint32_t time, uint16_t pad, ClusterNative*& clusterBuffer)
162+ GPUdi () static auto & decompressHitsStore (const CompressedClusters& cmprClusters, uint32_t k, uint32_t time, uint16_t pad, ClusterNative*& clusterBuffer)
156163 {
157164 return ((*(clusterBuffer++) = ClusterNative (time, cmprClusters.flagsU [k], pad, cmprClusters.sigmaTimeU [k], cmprClusters.sigmaPadU [k], cmprClusters.qMaxU [k], cmprClusters.qTotU [k])));
158165 }
@@ -183,7 +190,6 @@ class TPCClusterDecompressionCore
183190 time = cmprClusters.timeDiffU [k];
184191 pad = cmprClusters.padDiffU [k];
185192 }
186- decompressHitsStore (cmprClusters, k, time, pad, args...);
187193 }
188194 }
189195};
0 commit comments