@@ -1319,17 +1319,6 @@ GPUd() void GPUTPCGMMerger::MergeCE(int32_t nBlocks, int32_t nThreads, int32_t i
13191319 continue ;
13201320 }
13211321
1322- uint32_t newRef = CAMath::AtomicAdd (&mMemory ->nMergedTrackClusters , trk[0 ]->NClusters () + trk[1 ]->NClusters ());
1323- if (newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters () >= mNMaxMergedTrackClusters ) {
1324- raiseError (GPUErrors::ERROR_MERGER_CE_HIT_OVERFLOW, newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters (), mNMaxMergedTrackClusters );
1325- for (uint32_t k = newRef; k < mNMaxMergedTrackClusters ; k++) {
1326- mClusters [k].num = 0 ;
1327- mClusters [k].state = 0 ;
1328- }
1329- CAMath::AtomicExch (&mMemory ->nMergedTrackClusters , mNMaxMergedTrackClusters );
1330- return ;
1331- }
1332-
13331322 bool needswap = false ;
13341323 if (celooper) {
13351324 const float z0max = -CAMath::Min (cls[mClusters [trk[0 ]->FirstClusterRef ()].num ].getTime (), cls[mClusters [trk[0 ]->FirstClusterRef () + trk[0 ]->NClusters () - 1 ].num ].getTime ());
@@ -1346,15 +1335,6 @@ GPUd() void GPUTPCGMMerger::MergeCE(int32_t nBlocks, int32_t nThreads, int32_t i
13461335 GPUCommonAlgorithm::swap (trk[0 ], trk[1 ]);
13471336 }
13481337
1349- if (celooper) {
1350- trk[0 ]->SetMergedLooperConnected (true );
1351- trk[0 ]->SetCCE (true );
1352- trk[0 ]->SetLooper (true );
1353- trk[1 ]->SetCCE (true );
1354- trk[1 ]->SetLooper (true );
1355- continue ;
1356- }
1357-
13581338 if (Param ().par .continuousTracking ) {
13591339 GPUTPCGMMergedTrackHit* clsmax;
13601340 const float tmax = CAMath::MaxWithRef (cls[mClusters [trk[0 ]->FirstClusterRef ()].num ].getTime (), cls[mClusters [trk[0 ]->FirstClusterRef () + trk[0 ]->NClusters () - 1 ].num ].getTime (),
@@ -1364,7 +1344,32 @@ GPUd() void GPUTPCGMMerger::MergeCE(int32_t nBlocks, int32_t nThreads, int32_t i
13641344 const float offset = CAMath::Max (tmax - mConstantMem ->calibObjects .fastTransformHelper ->getCorrMap ()->getMaxDriftTime (clsmax->sector , clsmax->row , cls[clsmax->num ].getPad ()), 0 .f );
13651345 trk[1 ]->Param ().Z () += mConstantMem ->calibObjects .fastTransformHelper ->getCorrMap ()->convDeltaTimeToDeltaZinTimeFrame (trk[1 ]->CSide () * NSECTORS / 2 , trk[1 ]->Param ().TOffset () - offset);
13661346 trk[1 ]->Param ().TOffset () = offset;
1347+ if (celooper) {
1348+ trk[0 ]->Param ().Z () += mConstantMem ->calibObjects .fastTransformHelper ->getCorrMap ()->convDeltaTimeToDeltaZinTimeFrame (trk[0 ]->CSide () * NSECTORS / 2 , trk[0 ]->Param ().TOffset () - offset);
1349+ trk[0 ]->Param ().TOffset () = offset;
1350+ }
13671351 }
1352+
1353+ if (celooper) {
1354+ trk[0 ]->SetMergedLooperConnected (true );
1355+ trk[0 ]->SetCCE (true );
1356+ trk[0 ]->SetLooper (true );
1357+ trk[1 ]->SetCCE (true );
1358+ trk[1 ]->SetLooper (true );
1359+ continue ;
1360+ }
1361+
1362+ uint32_t newRef = CAMath::AtomicAdd (&mMemory ->nMergedTrackClusters , trk[0 ]->NClusters () + trk[1 ]->NClusters ());
1363+ if (newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters () >= mNMaxMergedTrackClusters ) {
1364+ raiseError (GPUErrors::ERROR_MERGER_CE_HIT_OVERFLOW, newRef + trk[0 ]->NClusters () + trk[1 ]->NClusters (), mNMaxMergedTrackClusters );
1365+ for (uint32_t k = newRef; k < mNMaxMergedTrackClusters ; k++) {
1366+ mClusters [k].num = 0 ;
1367+ mClusters [k].state = 0 ;
1368+ }
1369+ CAMath::AtomicExch (&mMemory ->nMergedTrackClusters , mNMaxMergedTrackClusters );
1370+ return ;
1371+ }
1372+
13681373 int32_t pos = newRef;
13691374#pragma unroll
13701375 for (int32_t k = 1 ; k >= 0 ; k--) {
0 commit comments