@@ -68,7 +68,7 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
6868 GPUTPCGMPropagator prop;
6969 gputpcgmmergertypes::InterpolationErrors interpolation;
7070 prop.SetMaterialTPC ();
71- prop.SetPolynomialField (&merger-> Param () .polynomialField );
71+ prop.SetPolynomialField (¶m .polynomialField );
7272 prop.SetMaxSinPhi (maxSinPhi);
7373 prop.SetToyMCEventsFlag (param.par .toyMCEventsFlag );
7474 if ((clusters[0 ].slice < 18 ) == (clusters[N - 1 ].slice < 18 )) {
@@ -157,7 +157,7 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
157157 uint8_t clusterState = clusters[ihit].state ;
158158 const float clAlpha = param.Alpha (clusters[ihit].slice );
159159 float xx, yy, zz;
160- if (merger-> Param () .par .earlyTpcTransform ) {
160+ if (param .par .earlyTpcTransform ) {
161161 const float zOffset = (clusters[ihit].slice < 18 ) == (clusters[0 ].slice < 18 ) ? mTZOffset : -mTZOffset ;
162162 xx = clustersXYZ[ihit].x ;
163163 yy = clustersXYZ[ihit].y ;
@@ -177,6 +177,14 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
177177 continue ;
178178 }
179179
180+ if (param.rec .tpc .rejectIFCLowRadiusCluster ) {
181+ const float r2 = xx * xx + yy * yy;
182+ const float rmax = (83 .5f + param.rec .tpc .sysClusErrorMinDist );
183+ if (r2 < rmax * rmax) {
184+ MarkClusters (clusters, ihitMergeFirst, ihit, wayDirection, GPUTPCGMMergedTrackHit::flagRejectErr);
185+ }
186+ }
187+
180188 const auto & cluster = clusters[ihit];
181189
182190 bool changeDirection = (cluster.leg - lastLeg) & 1 ;
@@ -212,7 +220,7 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
212220 continue ;
213221 }
214222 } else if (allowModification && lastRow != 255 && CAMath::Abs (cluster.row - lastRow) > 1 ) {
215- bool dodEdx = merger-> Param () .par .dodEdx && merger-> Param () .dodEdxDownscaled && merger-> Param () .rec .tpc .adddEdxSubThresholdClusters && iWay == nWays - 1 && CAMath::Abs (cluster.row - lastRow) == 2 && cluster.leg == clusters[maxN - 1 ].leg ;
223+ bool dodEdx = param .par .dodEdx && param .dodEdxDownscaled && param .rec .tpc .adddEdxSubThresholdClusters && iWay == nWays - 1 && CAMath::Abs (cluster.row - lastRow) == 2 && cluster.leg == clusters[maxN - 1 ].leg ;
216224 dodEdx = AttachClustersPropagate (merger, cluster.slice , lastRow, cluster.row , iTrk, cluster.leg == clusters[maxN - 1 ].leg , prop, inFlyDirection, GPUCA_MAX_SIN_PHI, dodEdx);
217225 if (dodEdx) {
218226 dEdx.fillSubThreshold (lastRow - 1 , param);
@@ -323,7 +331,7 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
323331 }
324332#endif
325333 GPUCA_DEBUG_STREAMER_CHECK (GPUTPCGMPropagator::DebugStreamerVals debugVals;);
326- if (merger-> Param () .rec .tpc .rejectEdgeClustersInTrackFit && uncorrectedY > -1e6f && merger-> Param () .rejectEdgeClusterByY (uncorrectedY, cluster.row , CAMath::Sqrt (mC [0 ]))) { // uncorrectedY > -1e6f implies allowModification
334+ if (param .rec .tpc .rejectEdgeClustersInTrackFit && uncorrectedY > -1e6f && param .rejectEdgeClusterByY (uncorrectedY, cluster.row , CAMath::Sqrt (mC [0 ]))) { // uncorrectedY > -1e6f implies allowModification
327335 retVal = GPUTPCGMPropagator::updateErrorEdgeCluster;
328336 } else {
329337 const float time = merger->GetConstantMem ()->ioPtrs .clustersNative ? merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ].getTime () : -1 .f ;
@@ -358,11 +366,11 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
358366 ihitStart = ihit;
359367 float dy = mP [0 ] - prop.Model ().Y ();
360368 float dz = mP [1 ] - prop.Model ().Z ();
361- if (CAMath::Abs (mP [4 ]) * merger-> Param () .qptB5Scaler > 10 && --resetT0 <= 0 && CAMath::Abs (mP [2 ]) < 0 .15f && dy * dy + dz * dz > 1 ) {
369+ if (CAMath::Abs (mP [4 ]) * param .qptB5Scaler > 10 && --resetT0 <= 0 && CAMath::Abs (mP [2 ]) < 0 .15f && dy * dy + dz * dz > 1 ) {
362370 CADEBUG (printf (" Reinit linearization\n " ));
363371 prop.SetTrack (this , prop.GetAlpha ());
364372 }
365- if (merger-> Param () .par .dodEdx && merger-> Param () .dodEdxDownscaled && iWay == nWays - 1 && cluster.leg == clusters[maxN - 1 ].leg && !(clusterState & GPUTPCGMMergedTrackHit::flagEdge)) {
373+ if (param .par .dodEdx && param .dodEdxDownscaled && iWay == nWays - 1 && cluster.leg == clusters[maxN - 1 ].leg && !(clusterState & GPUTPCGMMergedTrackHit::flagEdge)) {
366374 float qtot = 0 , qmax = 0 , pad = 0 , relTime = 0 ;
367375 const int32_t clusterCount = (ihit - ihitMergeFirst) * wayDirection + 1 ;
368376 for (int32_t iTmp = ihitMergeFirst; iTmp != ihit + wayDirection; iTmp += wayDirection) {
@@ -404,16 +412,16 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
404412 o2::utils::DebugStreamer::instance ()->getStreamer (" debug_accept_track" , " UPDATE" ) << o2::utils::DebugStreamer::instance ()->getUniqueTreeName (" debug_accept_track" ).data () << " iTrk=" << iTrk << " outerParam=" << *outerParam << " track=" << this << " ihitStart=" << ihitStart << " \n " ;
405413 })
406414
407- if (!(N + NTolerated >= GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5 (mP [4 ] * merger-> Param () .qptB5Scaler ) && 2 * NTolerated <= CAMath::Max (10 , N) && CheckNumericalQuality (covYYUpd))) {
415+ if (!(N + NTolerated >= GPUCA_TRACKLET_SELECTOR_MIN_HITS_B5 (mP [4 ] * param .qptB5Scaler ) && 2 * NTolerated <= CAMath::Max (10 , N) && CheckNumericalQuality (covYYUpd))) {
408416 return false ; // TODO: NTolerated should never become that large, check what is going wrong!
409417 }
410- if (merger-> Param () .rec .tpc .minNClustersFinalTrack != -1 && N + NTolerated < merger-> Param () .rec .tpc .minNClustersFinalTrack ) {
418+ if (param .rec .tpc .minNClustersFinalTrack != -1 && N + NTolerated < param .rec .tpc .minNClustersFinalTrack ) {
411419 return false ;
412420 }
413421
414422 // TODO: we have looping tracks here with 0 accepted clusters in the primary leg. In that case we should refit the track using only the primary leg.
415423
416- if (merger-> Param () .par .dodEdx && merger-> Param () .dodEdxDownscaled ) {
424+ if (param .par .dodEdx && param .dodEdxDownscaled ) {
417425 dEdx.computedEdx (merger->OutputTracksdEdx ()[iTrk], param);
418426 }
419427 Alpha = prop.GetAlpha ();
0 commit comments