@@ -1706,20 +1706,20 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17061706 nHits = nFilteredHits;
17071707 }
17081708
1709- uint32_t iOutTrackFirstCluster = CAMath::AtomicAdd (&mMemory ->nOutputTrackClusters , (uint32_t )nHits);
1709+ const uint32_t iOutTrackFirstCluster = CAMath::AtomicAdd (&mMemory ->nOutputTrackClusters , (uint32_t )nHits);
17101710 if (iOutTrackFirstCluster >= mNMaxOutputTrackClusters ) {
17111711 raiseError (GPUErrors::ERROR_MERGER_HIT_OVERFLOW, iOutTrackFirstCluster, mNMaxOutputTrackClusters );
17121712 CAMath::AtomicExch (&mMemory ->nOutputTrackClusters , mNMaxOutputTrackClusters );
17131713 continue ;
17141714 }
17151715
1716- GPUTPCGMMergedTrackHit* cl = mClusters + iOutTrackFirstCluster;
1717- GPUTPCGMMergedTrackHitXYZ* clXYZ = mClustersXYZ + iOutTrackFirstCluster;
1716+ GPUTPCGMMergedTrackHit* const cl = mClusters + iOutTrackFirstCluster;
17181717
17191718 for (int32_t i = 0 ; i < nHits; i++) {
17201719 uint8_t state;
17211720 if (Param ().par .earlyTpcTransform ) {
17221721 const GPUTPCClusterData& c = GetConstantMem ()->tpcTrackers [trackClusters[i].sector ].ClusterData ()[trackClusters[i].id - GetConstantMem ()->tpcTrackers [trackClusters[i].sector ].Data ().ClusterIdOffset ()];
1722+ GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iOutTrackFirstCluster;
17231723 clXYZ[i].x = c.x ;
17241724 clXYZ[i].y = c.y ;
17251725 clXYZ[i].z = c.z ;
@@ -1760,7 +1760,7 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17601760 mergedTrack.SetCSide (p2.CSide ());
17611761
17621762 GPUTPCGMBorderTrack b;
1763- const float toX = Param ().par .earlyTpcTransform ? clXYZ[ 0 ].x : GPUTPCGeometry::Row2X (cl[0 ].row );
1763+ const float toX = Param ().par .earlyTpcTransform ? mClustersXYZ [iOutTrackFirstCluster ].x : GPUTPCGeometry::Row2X (cl[0 ].row );
17641764 if (p2.TransportToX (this , toX, Param ().bzCLight , b, GPUCA_MAX_SIN_PHI, false )) {
17651765 p1.X () = toX;
17661766 p1.Y () = b.Par ()[0 ];
@@ -1791,12 +1791,13 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17911791 if (Param ().rec .tpc .mergeCE ) {
17921792 bool CEside;
17931793 if (Param ().par .earlyTpcTransform ) {
1794+ const GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iOutTrackFirstCluster;
17941795 CEside = (mergedTrack.CSide () != 0 ) ^ (clXYZ[0 ].z > clXYZ[nHits - 1 ].z );
17951796 } else {
17961797 auto & cls = mConstantMem ->ioPtrs .clustersNative ->clustersLinear ;
17971798 CEside = cls[cl[0 ].num ].getTime () < cls[cl[nHits - 1 ].num ].getTime ();
17981799 }
1799- MergeCEFill (trackParts[CEside ? lastTrackIndex : firstTrackIndex], cl[CEside ? (nHits - 1 ) : 0 ], &clXYZ [CEside ? (nHits - 1 ) : 0 ], iOutputTrack);
1800+ MergeCEFill (trackParts[CEside ? lastTrackIndex : firstTrackIndex], cl[CEside ? (nHits - 1 ) : 0 ], Param (). par . earlyTpcTransform ? &( mClustersXYZ + iOutTrackFirstCluster) [CEside ? (nHits - 1 ) : 0 ] : nullptr , iOutputTrack);
18001801 }
18011802 } // itr
18021803}
0 commit comments