diff --git a/algo/ca/core/tracking/CaTrackFinderWindow.cxx b/algo/ca/core/tracking/CaTrackFinderWindow.cxx index d942c55333011cd4eab2846fe0c1e29c9ee59af0..15fe5df4276d815092d16149b48f266de8e43e34 100644 --- a/algo/ca/core/tracking/CaTrackFinderWindow.cxx +++ b/algo/ca/core/tracking/CaTrackFinderWindow.cxx @@ -223,8 +223,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 136c47d422eaa226d22789f5d5e7460dece11d6a..cd5642a8f3812f31fb0b9da6f0987515b467e1e0 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 4c41eee11eedcd842a535f067e3a95001d433cc3..690d9e1fdfd87def4d41df20451756756c0e6659 100644 --- a/algo/ca/core/tracking/CaTripletConstructor.cxx +++ b/algo/ca/core/tracking/CaTripletConstructor.cxx @@ -260,18 +260,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; } @@ -643,7 +643,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];