diff --git a/algo/ca/core/tracking/CaTrackFinderWindow.cxx b/algo/ca/core/tracking/CaTrackFinderWindow.cxx index 0a26c0d3a39414dd5a66740925ffd9c4d321ae14..97aff8d80804b70dabef090ff6fe3b1b73a8d6f0 100644 --- a/algo/ca/core/tracking/CaTrackFinderWindow.cxx +++ b/algo/ca/core/tracking/CaTrackFinderWindow.cxx @@ -221,8 +221,9 @@ void TrackFinderWindow::CaTrackFinderSlice() fscal sizeY = gridMaxY - gridMinY; fscal sizeX = gridMaxX - gridMinX; int nBins2D = 1 + nSliceHits; - fscal yStep = sizeY / sqrt(nBins2D); - fscal xStep = sizeX / sqrt(nBins2D); + // TODO: SG: the coefficients should be removed + fscal yStep = 0.3 * sizeY / sqrt(nBins2D); + fscal xStep = 0.8 * sizeX / sqrt(nBins2D); fscal scale = frAlgo.GetParameters().GetStation(iS).GetZ<float>() - frAlgo.GetParameters().GetTargetPositionZ()[0]; diff --git a/algo/ca/core/tracking/CaTrackFit.cxx b/algo/ca/core/tracking/CaTrackFit.cxx index b39fa3b7031bdb04c1041c34357ae4f724b9a051..d0b8b74b5a76af8691fec5bcde2b7312de93a07d 100644 --- a/algo/ca/core/tracking/CaTrackFit.cxx +++ b/algo/ca/core/tracking/CaTrackFit.cxx @@ -746,11 +746,23 @@ namespace cbm::algo::ca cnst stepW[5] = {0., h / fvec(6.), h / fvec(3.), h / fvec(3.), h / fvec(6.)}; + fvec k[5][7][7] = {{0.}}; + for (int step = 1; step <= 4; ++step) { + for (int i = 0; i < 7; i++) { + for (int j = 0; j < 7; j++) { + k[step][i][j] = F[step][i][j]; + for (int m = 0; m < 7; m++) { + k[step][i][j] += stepDz[step] * F[step][i][m] * k[step - 1][m][j]; + } + } + } + } + for (int i = 0; i < 7; i++) { for (int j = 0; j < 7; j++) { R[i][j] = R0[i][j]; for (int step = 1; step <= 4; step++) { - R[i][j] += stepW[step] * F[step][i][j]; + R[i][j] += stepW[step] * k[step][i][j]; } } } diff --git a/algo/ca/core/tracking/CaTripletConstructor.cxx b/algo/ca/core/tracking/CaTripletConstructor.cxx index e88613a7a5e1b15bd95ef4f1995c3beddc207800..529a9c448038bbc142075ee42c5d39a431c67333 100644 --- a/algo/ca/core/tracking/CaTripletConstructor.cxx +++ b/algo/ca/core/tracking/CaTripletConstructor.cxx @@ -261,18 +261,18 @@ void TripletConstructor::FitDoublets() if ((staM().timeInfo) && (T2.NdfTime()[0] >= 0)) { fscal dt = T2.Time()[0] + tt * dz - hitClone.T(); - if (fabs(dt) > sqrt(30. * T2.C55()[0]) + hitClone.RangeT()) { + if (!(fabs(dt) <= 3.5 * sqrt(T2.C55()[0]) + hitClone.RangeT())) { continue; } } fscal dx = T2.GetX()[0] + tx * dz - hitClone.X(); - if (fabs(dx) > 1.3 * (3.5 * sqrt(T2.C00()[0]) + hitClone.RangeX())) { + if (!(fabs(dx) <= 3.5 * sqrt(T2.C00()[0]) + hitClone.RangeX())) { continue; } fscal dy = T2.Y()[0] + ty * dz - hitClone.Y(); - if (fabs(dy) > 1.6 * (3.5 * sqrt(T2.C11()[0]) + hitClone.RangeY())) { + if (!(fabs(dy) <= 3.5 * sqrt(T2.C11()[0]) + hitClone.RangeY())) { continue; } @@ -644,7 +644,9 @@ void TripletConstructor::StoreTriplets() TrackParamV& T3 = fTracks_3[i3]; - fscal chi2 = T3.GetChiSq()[0]; // / T3.NDF[0]; + // TODO: SG: normalize chi2, separate cuts on time and space + + fscal chi2 = T3.GetChiSq()[0] + T3.GetChiSqTime()[0]; const ca::HitIndex_t ihitl = fIhitL; const ca::HitIndex_t ihitm = fHitsM_3[i3];