@@ -372,9 +372,9 @@ void* GPUTPCGMMerger::SetPointersOutput(void* mem)
372372 computePointerWithAlignment (mem, mMergedTracksdEdxAlt , mNMaxTracks );
373373 }
374374 }
375- computePointerWithAlignment (mem, mClusters , mNMaxOutputTrackClusters );
375+ computePointerWithAlignment (mem, mClusters , mNMaxMergedTrackClusters );
376376 if (mRec ->GetParam ().par .earlyTpcTransform ) {
377- computePointerWithAlignment (mem, mClustersXYZ , mNMaxOutputTrackClusters );
377+ computePointerWithAlignment (mem, mClustersXYZ , mNMaxMergedTrackClusters );
378378 }
379379 computePointerWithAlignment (mem, mClusterAttachment , mNMaxClusters );
380380 return mem;
@@ -446,7 +446,7 @@ void GPUTPCGMMerger::SetMaxData(const GPUTrackingInOutPointers& io)
446446 mNMaxSingleSectorTracks = ntrk;
447447 }
448448 }
449- mNMaxOutputTrackClusters = mRec ->MemoryScalers ()->NTPCMergedTrackHits (mNClusters );
449+ mNMaxMergedTrackClusters = mRec ->MemoryScalers ()->NTPCMergedTrackHits (mNClusters );
450450 if (CAMath::Abs (Param ().polynomialField .GetNominalBz ()) < (gpu_common_constants::kZeroFieldCut * gpu_common_constants::kCLight )) {
451451 mNMaxTracks = mRec ->MemoryScalers ()->getValue (mNTotalSectorTracks , mNTotalSectorTracks ); // 0 magnetic field
452452 } else {
@@ -1354,14 +1354,14 @@ GPUd() void GPUTPCGMMerger::MergeCE(int32_t nBlocks, int32_t nThreads, int32_t i
13541354 continue ;
13551355 }
13561356
1357- uint32_t newRef = CAMath::AtomicAdd (&mMemory ->nOutputTrackClusters , trk[0 ]->NClusters () + trk[1 ]->NClusters ());
1358- if (newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters () >= mNMaxOutputTrackClusters ) {
1359- raiseError (GPUErrors::ERROR_MERGER_CE_HIT_OVERFLOW, newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters (), mNMaxOutputTrackClusters );
1360- for (uint32_t k = newRef; k < mNMaxOutputTrackClusters ; k++) {
1357+ uint32_t newRef = CAMath::AtomicAdd (&mMemory ->nMergedTrackClusters , trk[0 ]->NClusters () + trk[1 ]->NClusters ());
1358+ if (newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters () >= mNMaxMergedTrackClusters ) {
1359+ raiseError (GPUErrors::ERROR_MERGER_CE_HIT_OVERFLOW, newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters (), mNMaxMergedTrackClusters );
1360+ for (uint32_t k = newRef; k < mNMaxMergedTrackClusters ; k++) {
13611361 mClusters [k].num = 0 ;
13621362 mClusters [k].state = 0 ;
13631363 }
1364- CAMath::AtomicExch (&mMemory ->nOutputTrackClusters , mNMaxOutputTrackClusters );
1364+ CAMath::AtomicExch (&mMemory ->nMergedTrackClusters , mNMaxMergedTrackClusters );
13651365 return ;
13661366 }
13671367
@@ -1711,20 +1711,20 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17111711 nHits = nFilteredHits;
17121712 }
17131713
1714- const uint32_t iOutTrackFirstCluster = CAMath::AtomicAdd (&mMemory ->nOutputTrackClusters , (uint32_t )nHits);
1715- if (iOutTrackFirstCluster >= mNMaxOutputTrackClusters ) {
1716- raiseError (GPUErrors::ERROR_MERGER_HIT_OVERFLOW, iOutTrackFirstCluster, mNMaxOutputTrackClusters );
1717- CAMath::AtomicExch (&mMemory ->nOutputTrackClusters , mNMaxOutputTrackClusters );
1714+ const uint32_t iMergedTrackFirstCluster = CAMath::AtomicAdd (&mMemory ->nMergedTrackClusters , (uint32_t )nHits);
1715+ if (iMergedTrackFirstCluster >= mNMaxMergedTrackClusters ) {
1716+ raiseError (GPUErrors::ERROR_MERGER_HIT_OVERFLOW, iMergedTrackFirstCluster, mNMaxMergedTrackClusters );
1717+ CAMath::AtomicExch (&mMemory ->nMergedTrackClusters , mNMaxMergedTrackClusters );
17181718 continue ;
17191719 }
17201720
1721- GPUTPCGMMergedTrackHit* const cl = mClusters + iOutTrackFirstCluster ;
1721+ GPUTPCGMMergedTrackHit* const cl = mClusters + iMergedTrackFirstCluster ;
17221722
17231723 for (int32_t i = 0 ; i < nHits; i++) {
17241724 uint8_t state;
17251725 if (Param ().par .earlyTpcTransform ) {
17261726 const GPUTPCClusterData& c = GetConstantMem ()->tpcTrackers [trackClusters[i].sector ].ClusterData ()[trackClusters[i].id - GetConstantMem ()->tpcTrackers [trackClusters[i].sector ].Data ().ClusterIdOffset ()];
1727- GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iOutTrackFirstCluster ;
1727+ GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iMergedTrackFirstCluster ;
17281728 clXYZ[i].x = c.x ;
17291729 clXYZ[i].y = c.y ;
17301730 clXYZ[i].z = c.z ;
@@ -1759,13 +1759,13 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17591759 mergedTrack.SetLooper (leg > 0 );
17601760 mergedTrack.SetLegs (leg);
17611761 mergedTrack.SetNClusters (nHits);
1762- mergedTrack.SetFirstClusterRef (iOutTrackFirstCluster );
1762+ mergedTrack.SetFirstClusterRef (iMergedTrackFirstCluster );
17631763 GPUTPCGMTrackParam& p1 = mergedTrack.Param ();
17641764 const GPUTPCGMSectorTrack& p2 = *trackParts[firstTrackIndex];
17651765 mergedTrack.SetCSide (p2.CSide ());
17661766
17671767 GPUTPCGMBorderTrack b;
1768- const float toX = Param ().par .earlyTpcTransform ? mClustersXYZ [iOutTrackFirstCluster ].x : GPUTPCGeometry::Row2X (cl[0 ].row );
1768+ const float toX = Param ().par .earlyTpcTransform ? mClustersXYZ [iMergedTrackFirstCluster ].x : GPUTPCGeometry::Row2X (cl[0 ].row );
17691769 if (p2.TransportToX (this , toX, Param ().bzCLight , b, GPUCA_MAX_SIN_PHI, false )) {
17701770 p1.X () = toX;
17711771 p1.Y () = b.Par ()[0 ];
@@ -1796,13 +1796,13 @@ GPUd() void GPUTPCGMMerger::CollectMergedTracks(int32_t nBlocks, int32_t nThread
17961796 if (Param ().rec .tpc .mergeCE ) {
17971797 bool CEside;
17981798 if (Param ().par .earlyTpcTransform ) {
1799- const GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iOutTrackFirstCluster ;
1799+ const GPUTPCGMMergedTrackHitXYZ* const clXYZ = mClustersXYZ + iMergedTrackFirstCluster ;
18001800 CEside = (mergedTrack.CSide () != 0 ) ^ (clXYZ[0 ].z > clXYZ[nHits - 1 ].z );
18011801 } else {
18021802 auto & cls = mConstantMem ->ioPtrs .clustersNative ->clustersLinear ;
18031803 CEside = cls[cl[0 ].num ].getTime () < cls[cl[nHits - 1 ].num ].getTime ();
18041804 }
1805- MergeCEFill (trackParts[CEside ? lastTrackIndex : firstTrackIndex], cl[CEside ? (nHits - 1 ) : 0 ], Param ().par .earlyTpcTransform ? &(mClustersXYZ + iOutTrackFirstCluster )[CEside ? (nHits - 1 ) : 0 ] : nullptr , iOutputTrack);
1805+ MergeCEFill (trackParts[CEside ? lastTrackIndex : firstTrackIndex], cl[CEside ? (nHits - 1 ) : 0 ], Param ().par .earlyTpcTransform ? &(mClustersXYZ + iMergedTrackFirstCluster )[CEside ? (nHits - 1 ) : 0 ] : nullptr , iOutputTrack);
18061806 }
18071807 } // itr
18081808}
@@ -1855,7 +1855,7 @@ GPUd() void GPUTPCGMMerger::PrepareClustersForFit1(int32_t nBlocks, int32_t nThr
18551855
18561856GPUd () void GPUTPCGMMerger::PrepareClustersForFit2(int32_t nBlocks, int32_t nThreads, int32_t iBlock, int32_t iThread)
18571857{
1858- for (uint32_t i = iBlock * nThreads + iThread; i < mMemory ->nOutputTrackClusters ; i += nBlocks * nThreads) {
1858+ for (uint32_t i = iBlock * nThreads + iThread; i < mMemory ->nMergedTrackClusters ; i += nBlocks * nThreads) {
18591859 if (mSharedCount [mClusters [i].num ] > 1 ) {
18601860 mClusters [i].state |= GPUTPCGMMergedTrackHit::flagShared;
18611861 }
@@ -1876,7 +1876,7 @@ GPUd() void GPUTPCGMMerger::Finalize0(int32_t nBlocks, int32_t nThreads, int32_t
18761876 for (uint32_t i = iBlock * nThreads + iThread; i < mMemory ->nMergedTracks ; i += nThreads * nBlocks) {
18771877 mTrackSort [mTrackOrderAttach [i]] = i;
18781878 }
1879- for (uint32_t i = iBlock * nThreads + iThread; i < mMemory ->nOutputTrackClusters ; i += nThreads * nBlocks) {
1879+ for (uint32_t i = iBlock * nThreads + iThread; i < mMemory ->nMergedTrackClusters ; i += nThreads * nBlocks) {
18801880 mClusterAttachment [mClusters [i].num ] = 0 ; // Reset adjacent attachment for attached clusters, set correctly below
18811881 }
18821882}
0 commit comments