@@ -229,19 +229,34 @@ GPUd() bool GPUTPCGMTrackParam::Fit(GPUTPCGMMerger* GPUrestrict() merger, int32_
229229 retValUpd = GPUTPCGMPropagator::updateErrorClusterRejectedDistance;
230230 } else {
231231 int8_t rejectChi2 = attempt ? 0 : ((param.rec .tpc .mergerInterpolateErrors && CAMath::Abs (ihit - ihitMergeFirst) <= 1 ) ? (refit ? (GPUTPCGMPropagator::rejectInterFill + ((nWays - iWay) & 1 )) : 0 ) : (allowModification && goodRows > 5 ));
232- GPUCA_DEBUG_STREAMER_CHECK (GPUTPCGMPropagator::DebugStreamerVals debugVals;);
233- if (param.rec .tpc .rejectEdgeClustersInTrackFit && uncorrectedY > -1e6f && param.rejectEdgeClusterByY (uncorrectedY, cluster.row , CAMath::Sqrt (mC [0 ]))) { // uncorrectedY > -1e6f implies allowModification
232+
233+ float err2Y, err2Z;
234+ const float time = merger->GetConstantMem ()->ioPtrs .clustersNative ? merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ].getTime () : -1 .f ;
235+ const float invSqrtCharge = merger->GetConstantMem ()->ioPtrs .clustersNative ? CAMath::InvSqrt (merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ].qMax ) : 0 .f ;
236+ const float invCharge = merger->GetConstantMem ()->ioPtrs .clustersNative ? (1 .f / merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ].qMax ) : 0 .f ;
237+ float invAvgCharge = (sumInvSqrtCharge += invSqrtCharge) / ++nAvgCharge;
238+ invAvgCharge *= invAvgCharge;
239+
240+ prop.GetErr2 (err2Y, err2Z, param, zz, cluster.row , clusterState, cluster.sector , time, invAvgCharge, invCharge);
241+
242+ int retValInt = 0 ;
243+ if (rejectChi2 >= GPUTPCGMPropagator::rejectInterFill) {
244+ if (rejectChi2 == GPUTPCGMPropagator::rejectInterReject && interpolation.hit [ihit].errorY < (GPUCA_PAR_MERGER_INTERPOLATION_ERROR_TYPE_A)0 ) {
245+ rejectChi2 = GPUTPCGMPropagator::rejectDirect;
246+ } else {
247+ retValInt = prop.InterpolateReject (param, yy, zz, clusterState, rejectChi2, &interpolation.hit [ihit], err2Y, err2Z);
248+ }
249+ }
250+
251+ if (retValInt) {
252+ retValUpd = retValInt;
253+ } else if (param.rec .tpc .rejectEdgeClustersInTrackFit && uncorrectedY > -1e6f && param.rejectEdgeClusterByY (uncorrectedY, cluster.row , CAMath::Sqrt (mC [0 ]))) { // uncorrectedY > -1e6f implies allowModification
234254 retValUpd = GPUTPCGMPropagator::updateErrorClusterRejectedEdge;
235255 } else {
236- const float time = merger->GetConstantMem ()->ioPtrs .clustersNative ? merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ].getTime () : -1 .f ;
237- const float invSqrtCharge = merger->GetConstantMem ()->ioPtrs .clustersNative ? CAMath::InvSqrt (merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ].qMax ) : 0 .f ;
238- const float invCharge = merger->GetConstantMem ()->ioPtrs .clustersNative ? (1 .f / merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ].qMax ) : 0 .f ;
239- float invAvgCharge = (sumInvSqrtCharge += invSqrtCharge) / ++nAvgCharge;
240- invAvgCharge *= invAvgCharge;
241- retValUpd = prop.Update (yy, zz, cluster.row , param, clusterState, rejectChi2, &interpolation.hit [ihit], refit, cluster.sector , time, invAvgCharge, invCharge GPUCA_DEBUG_STREAMER_CHECK (, &debugVals));
256+ retValUpd = prop.Update (yy, zz, cluster.row , param, clusterState, rejectChi2, refit, err2Y, err2Z);
242257 }
243258 GPUCA_DEBUG_STREAMER_CHECK (if (o2::utils::DebugStreamer::checkStream (o2::utils::StreamFlags::streamUpdateTrack, iTrk)) {
244- merger->DebugStreamerUpdate (iTrk, ihit, xx, yy, zz, cluster, merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ], *this , prop, interpolation.hit [ihit], rejectChi2, refit, retValUpd, sumInvSqrtCharge / nAvgCharge * sumInvSqrtCharge / nAvgCharge, yy, zz, clusterState, debugVals. retVal , debugVals. err2Y , debugVals. err2Z );
259+ merger->DebugStreamerUpdate (iTrk, ihit, xx, yy, zz, cluster, merger->GetConstantMem ()->ioPtrs .clustersNative ->clustersLinear [cluster.num ], *this , prop, interpolation.hit [ihit], rejectChi2, refit, retValUpd, sumInvSqrtCharge / nAvgCharge * sumInvSqrtCharge / nAvgCharge, yy, zz, clusterState, retValInt, err2Y, err2Z);
245260 });
246261 }
247262 // clang-format off
0 commit comments