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];