From d99b8d0b7b4e6291ac84532d618175ef2ff36b8c Mon Sep 17 00:00:00 2001 From: "se.gorbunov" <se.gorbunov@gsi.de> Date: Fri, 31 Jan 2025 13:17:50 +0100 Subject: [PATCH] CA: ignore misalignment corrections during the final refit --- algo/ca/core/tracking/CaTrackFitter.cxx | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/algo/ca/core/tracking/CaTrackFitter.cxx b/algo/ca/core/tracking/CaTrackFitter.cxx index d44ece298..c781beef9 100644 --- a/algo/ca/core/tracking/CaTrackFitter.cxx +++ b/algo/ca/core/tracking/CaTrackFitter.cxx @@ -137,6 +137,7 @@ namespace cbm::algo::ca const ca::Hit& hit = input.GetHit(wData.RecoHitIndex(start_hit++)); const int ista = hit.Station(); + auto [detSystemId, iStLocal] = fParameters.GetActiveSetup().GetIndexMap().GlobalToLocal<EDetectorID>(ista); //if (sta[ista].fieldStatus) { isFieldPresent[iVec] = true; } @@ -145,11 +146,23 @@ namespace cbm::algo::ca if (sta[ista].timeInfo) { w_time[ista][iVec] = true; } + // subtract misalignment tolerances to get the original hit errors + float dX2Orig = hit.dX2() - fParameters.GetMisalignmentXsq(detSystemId); + float dY2Orig = hit.dY2() - fParameters.GetMisalignmentYsq(detSystemId); + float dXYOrig = hit.dXY(); + if (dX2Orig < 0. || dY2Orig < 0. || fabs(dXYOrig / sqrt(dX2Orig * dY2Orig)) > 1.) { + dX2Orig = hit.dX2(); + dY2Orig = hit.dY2(); + } + float dT2Orig = hit.dT2() - fParameters.GetMisalignmentTsq(detSystemId); + if (dT2Orig < 0.) { + dT2Orig = hit.dT2(); + } x[ista][iVec] = hit.X(); //x_temp[iVec]; y[ista][iVec] = hit.Y(); //y_temp[iVec]; time[ista][iVec] = hit.T(); - dt2[ista][iVec] = hit.dT2(); + dt2[ista][iVec] = dT2Orig; if (!sta[ista].timeInfo) { dt2[ista][iVec] = 1.e4; } @@ -157,9 +170,9 @@ namespace cbm::algo::ca fB_temp = sta[ista].fieldSlice.GetFieldValue(x[ista], y[ista]); mxy[ista].X()[iVec] = hit.X(); mxy[ista].Y()[iVec] = hit.Y(); - mxy[ista].Dx2()[iVec] = hit.dX2(); - mxy[ista].Dy2()[iVec] = hit.dY2(); - mxy[ista].Dxy()[iVec] = hit.dXY(); + mxy[ista].Dx2()[iVec] = dX2Orig; + mxy[ista].Dy2()[iVec] = dY2Orig; + mxy[ista].Dxy()[iVec] = dXYOrig; mxy[ista].NdfX()[iVec] = 1.; mxy[ista].NdfY()[iVec] = 1.; -- GitLab