diff --git a/algo/ca/core/tracking/CaTrackFinderWindow.cxx b/algo/ca/core/tracking/CaTrackFinderWindow.cxx
index 73c1a6869c8d4cc8e252302d24a155ad5a279e4a..d942c55333011cd4eab2846fe0c1e29c9ee59af0 100644
--- a/algo/ca/core/tracking/CaTrackFinderWindow.cxx
+++ b/algo/ca/core/tracking/CaTrackFinderWindow.cxx
@@ -135,11 +135,18 @@ void TrackFinderWindow::ReadWindowData()
     for (ca::HitIndex_t ih = 0; ih < frAlgo.fSliceHitIds[iS].size(); ++ih) {
       ca::Hit h = frAlgo.fInputData.GetHit(frAlgo.fSliceHitIds[iS][ih]);
       h.SetId(frAlgo.fSliceHitIds[iS][ih]);
-
       frAlgo.fWindowHits[frAlgo.fStationHitsStartIndex[iS] + ih] = h;
     }
   }
 
+  if constexpr (fDebug) {
+    std::cout << "===== Sliding Window hits: " << std::endl;
+    for (int i = 0; i < nHits; ++i) {
+      std::cout << "    " << frAlgo.fWindowHits[i].ToString() << std::endl;
+    }
+    std::cout << "===== " << std::endl;
+  }
+
   frAlgo.fHitFirstTriplet.reset(nHits, 0);
   frAlgo.fHitNtriplets.reset(nHits, 0);
 
diff --git a/algo/ca/core/tracking/CaTrackFinderWindow.h b/algo/ca/core/tracking/CaTrackFinderWindow.h
index b2c05878471073d0fc7b0f6a322dd4015ce99aa8..a3fdc588900dfd5f49dd8f7d5b9f2c3e18f122ba 100644
--- a/algo/ca/core/tracking/CaTrackFinderWindow.h
+++ b/algo/ca/core/tracking/CaTrackFinderWindow.h
@@ -68,6 +68,9 @@ namespace cbm::algo::ca
     /// Data members
 
     ca::Framework& frAlgo;  ///< Reference to the main track finder algorithm class
+
+   private:
+    static constexpr bool fDebug = false;  // print debug info
   };
 
 }  // namespace cbm::algo::ca
diff --git a/algo/ca/core/tracking/CaTripletConstructor.cxx b/algo/ca/core/tracking/CaTripletConstructor.cxx
index 458d5519b20de70712cc107b47faf4609daa9743..4c41eee11eedcd842a535f067e3a95001d433cc3 100644
--- a/algo/ca/core/tracking/CaTripletConstructor.cxx
+++ b/algo/ca/core/tracking/CaTripletConstructor.cxx
@@ -82,6 +82,7 @@ void TripletConstructor::InitStations(int istal, int istam, int istar)
     fFit.SetParticleMass(constants::phys::ElectronMass);
   }
   fFit.SetMask(fmask::One());
+  fFit.SetDoFitVelocity(true);
 
   fIsInitialized = true;
 }
@@ -129,23 +130,24 @@ void TripletConstructor::CreateTripletsForHit(int istal, int istam, int istar, c
     T.Ty()   = ty;
     T.Qp()   = fvec(0.);
     T.Time() = time;
-    T.Vi()   = fvec(0.);
+    T.Vi()   = constants::phys::SpeedOfLightInv;
 
     fvec txErr2 = fAlgo->fMaxSlopePV * fAlgo->fMaxSlopePV / fvec(9.);
     fvec qpErr2 = fAlgo->fMaxInvMom * fAlgo->fMaxInvMom / fvec(9.);
 
-    T.ResetErrors(1., 1., txErr2, txErr2, qpErr2, (staL().timeInfo ? timeEr2 : 1.e6), 1.e2);
+    T.ResetErrors(1., 1., txErr2, txErr2, qpErr2, (staL().timeInfo ? timeEr2 : 1.e6), 1.e10);
+
+    T.InitVelocityRange(1. / fAlgo->fpCurrentIteration->GetMaxQp());
+
     T.C00() = hitl.dX2();
     T.C10() = hitl.dXY();
     T.C11() = hitl.dY2();
 
     T.Ndf()     = (fAlgo->fpCurrentIteration->GetPrimaryFlag()) ? fvec(2.) : fvec(0.);
-    T.NdfTime() = (staL().timeInfo ? -1 : -2);
+    T.NdfTime() = (staL().timeInfo ? 0 : -1);
 
-    // TODO: iteration parameter: "Starting NDF of track parameters"
     // NDF = number of track parameters (6: x, y, tx, ty, qp, time) - number of measured parameters (3: x, y, time) on station or (2: x, y) on target
 
-
     // field made by  the left hit, the target and the station istac in-between.
     // is used for extrapolation to the target and to the middle hit
     ca::FieldRegionV fld0;
@@ -256,7 +258,7 @@ void TripletConstructor::FitDoublets()
 
         fscal dz = hitClone.Z() - T2.Z()[0];
 
-        if ((staM().timeInfo) && (T2.NdfTime()[0] > -2)) {
+        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()) {
             continue;
@@ -328,25 +330,63 @@ void TripletConstructor::FindRightHit()
 
     fFit.Extrapolate(staR().fZ, fFldL);
 
-    // ---- Find the triplets(right hit). Reformat data in the portion of triplets. ----
-
-    if (fAlgo->kSts == fAlgo->fTrackingMode && (T2.C44()[0] < 0)) {
-      continue;
+    if constexpr (fDebugDublets) {
+      ca::HitIndex_t iwhit[2] = {fIhitL, fHitsM_2[i2]};
+      ca::HitIndex_t ihit[2]  = {fAlgo->fWindowHits[iwhit[0]].Id(), fAlgo->fWindowHits[iwhit[1]].Id()};
+
+      int ih0           = ihit[0];
+      int ih1           = ihit[1];
+      const ca::Hit& h0 = fAlgo->fInputData.GetHit(ih0);
+      const ca::Hit& h1 = fAlgo->fInputData.GetHit(ih1);
+
+      std::cout << "\n======  Extrapolated Doublet : "
+                << "  iter " << fAlgo->fCurrentIterationIndex << " hits: {" << fIstaL << "/" << ih0 << " " << fIstaM
+                << "/" << ih1 << " " << fIstaR << "/?} xyz: {" << h0.X() << " " << h0.Y() << " " << h0.Z() << "}, {"
+                << h1.X() << " " << h1.Y() << " " << h1.Z() << "} chi2 " << T2.GetChiSq()[0] << " ndf " << T2.Ndf()[0]
+                << " chi2time " << T2.ChiSqTime()[0] << " ndfTime " << T2.NdfTime()[0] << std::endl;
+      std::cout << "  extr. track: " << T2.ToString(0) << std::endl;
     }
-    if (T2.C00()[0] < 0 || T2.C11()[0] < 0 || T2.C22()[0] < 0 || T2.C33()[0] < 0 || T2.C55()[0] < 0) continue;
 
-    if (fabs(T2.Tx()[0]) > fAlgo->fMaxSlope) continue;
-    if (fabs(T2.Ty()[0]) > fAlgo->fMaxSlope) continue;
+    // ---- Find the triplets(right hit). Reformat data in the portion of triplets. ----
+    bool isDoubletGood = false;
+    int iMC            = -1;
+    do {
+      if (fAlgo->kSts == fAlgo->fTrackingMode && (T2.C44()[0] < 0)) {
+        break;
+      }
+      if (T2.C00()[0] < 0 || T2.C11()[0] < 0 || T2.C22()[0] < 0 || T2.C33()[0] < 0 || T2.C55()[0] < 0) {
+        break;
+      }
+      if (fabs(T2.Tx()[0]) > fAlgo->fMaxSlope) {
+        break;
+      }
+      if (fabs(T2.Ty()[0]) > fAlgo->fMaxSlope) {
+        break;
+      }
+      if (fAlgo->fParameters.DevIsMatchTripletsViaMc()) {
+        int indM = fHitsM_2[i2];
+        iMC      = fAlgo->GetMcTrackIdForWindowHit(fIhitL);
+        if (iMC < 0 || iMC != fAlgo->GetMcTrackIdForWindowHit(indM)) {
+          break;
+        }
+      }
+      isDoubletGood = true;
+    } while (0);
 
-    int iMC = -1;
-    if (fAlgo->fParameters.DevIsMatchTripletsViaMc()) {
-      int indM = fHitsM_2[i2];
-      iMC      = fAlgo->GetMcTrackIdForWindowHit(fIhitL);
-      if (iMC < 0 || iMC != fAlgo->GetMcTrackIdForWindowHit(indM)) {
-        continue;
+    if constexpr (fDebugDublets) {
+      if (isDoubletGood) {
+        std::cout << "  extrapolated doublet accepted" << std::endl;
+      }
+      else {
+        std::cout << "  extrapolated doublet rejected" << std::endl;
+        std::cout << "======== end of extrapolated doublet ==== \n" << std::endl;
       }
     }
 
+    if (!isDoubletGood) {
+      continue;
+    }
+
     Vector<ca::HitIndex_t> collectedHits;
     CollectHits(T2, fIstaR, fAlgo->fTripletChi2Cut, iMC, collectedHits, fAlgo->fParameters.GetMaxTripletPerDoublets());
 
@@ -356,23 +396,35 @@ void TripletConstructor::FindRightHit()
       // reject already created triplets for this doublet
       collectedHits.clear();
     }
-
+    if constexpr (fDebugDublets) {
+      std::cout << " collected " << collectedHits.size() << " hits on the right station " << std::endl;
+    }
     for (unsigned int ih = 0; ih < collectedHits.size(); ih++) {
       ca::HitIndex_t irh = collectedHits[ih];
-      if (fAlgo->fIsWindowHitSuppressed[irh]) continue;
+      if constexpr (fDebugDublets) {
+        ca::HitIndex_t ihit = fAlgo->fWindowHits[irh].Id();
+        const ca::Hit& h    = fAlgo->fInputData.GetHit(ihit);
+        std::cout << "  hit " << ihit << " " << h.ToString() << std::endl;
+      }
+      if (fAlgo->fIsWindowHitSuppressed[irh]) {
+        if constexpr (fDebugDublets) {
+          std::cout << "  the hit is suppressed" << std::endl;
+        }
+        continue;
+      }
       // pack the triplet
       fHitsM_3.push_back(fHitsM_2[i2]);
       fHitsR_3.push_back(irh);
-
     }  // search area
-  }    // i2
+    if constexpr (fDebugDublets) {
+      std::cout << "======== end of extrapolated doublet ==== \n" << std::endl;
+    }
+  }  // i2
 }
 
 
 void TripletConstructor::FitTriplets()
 {
-  constexpr bool dumpTriplets = 0;
-
   constexpr int nIterations = 2;
 
   Tindex n3 = fHitsM_3.size();
@@ -382,7 +434,7 @@ void TripletConstructor::FitTriplets()
   fTracks_3.reset(n3, TrackParamV());
 
   /// Refit Triplets
-  if (dumpTriplets) {
+  if constexpr (fDebugTriplets) {
     //cbm::ca::tools::Debugger::Instance().AddNtuple(
     //  "triplets", "ev:iter:i0:x0:y0:z0:i1:x1:y1:z1:i2:x2:y2:z2:mc:sta:p:vx:vy:vz:chi2:ndf:chi2time:ndfTime");
   }
@@ -492,7 +544,7 @@ void TripletConstructor::FitTriplets()
         T.C11() = mxy[ih0].Dy2();
 
         T.Ndf()     = -ndfTrackModel + 2;
-        T.NdfTime() = sta[ih0].timeInfo ? -1 : -2;
+        T.NdfTime() = sta[ih0].timeInfo ? 0 : -1;
 
         //  add the target constraint
         fit.FilterWithTargetAtLine(fAlgo->fTargZ, fAlgo->TargetMeasurement, fldTarget);
@@ -529,7 +581,7 @@ void TripletConstructor::FitTriplets()
         T.C11() = mxy[ih0].Dy2();
 
         T.Ndf()     = -ndfTrackModel + 2;
-        T.NdfTime() = sta[ih0].timeInfo ? -1 : -2;
+        T.NdfTime() = sta[ih0].timeInfo ? 0 : -1;
 
         for (int ih = NHits - 2; ih >= 0; --ih) {
           fit.Extrapolate(z[ih], fld);
@@ -544,19 +596,25 @@ void TripletConstructor::FitTriplets()
 
     fTracks_3[i3] = T;
 
-    if (dumpTriplets) {
+    if constexpr (fDebugTriplets) {
       int ih0 = ihit[0];
       int ih1 = ihit[1];
       int ih2 = ihit[2];
       int mc1 = fAlgo->GetMcTrackIdForCaHit(ih0);
       int mc2 = fAlgo->GetMcTrackIdForCaHit(ih1);
       int mc3 = fAlgo->GetMcTrackIdForCaHit(ih2);
-      if ((mc1 >= 0) && (mc1 == mc2) && (mc1 == mc3)) {
+      if (1 || (mc1 >= 0) && (mc1 == mc2) && (mc1 == mc3)) {
+        const ca::Hit& h0 = fAlgo->fInputData.GetHit(ih0);
+        const ca::Hit& h1 = fAlgo->fInputData.GetHit(ih1);
+        const ca::Hit& h2 = fAlgo->fInputData.GetHit(ih2);
+        //const CbmL1MCTrack& mctr = CbmL1::Instance()->GetMcTracks()[mc1];
+        std::cout << "== fitted triplet: "
+                  << " iter " << fAlgo->fCurrentIterationIndex << " hits: {" << fIstaL << "/" << ih0 << " " << fIstaM
+                  << "/" << ih1 << " " << fIstaR << "/" << ih2 << "} xyz: {" << h0.X() << " " << h0.Y() << " " << h0.Z()
+                  << "}, {" << h1.X() << " " << h1.Y() << " " << h1.Z() << "}, {" << h2.X() << ", " << h2.Y() << ", "
+                  << h2.Z() << "} chi2 " << T.GetChiSq()[0] << " ndf " << T.Ndf()[0] << " chi2time " << T.ChiSqTime()[0]
+                  << " ndfTime " << T.NdfTime()[0] << std::endl;
         /*
-        const ca::Hit& h0        = fAlgo->fInputData.GetHit(ih0);
-        const ca::Hit& h1        = fAlgo->fInputData.GetHit(ih1);
-        const ca::Hit& h2        = fAlgo->fInputData.GetHit(ih2);
-        const CbmL1MCTrack& mctr = CbmL1::Instance()->GetMcTracks()[mc1];
         cbm::ca::tools::Debugger::Instance().FillNtuple(
           "triplets", mctr.iEvent, fAlgo->fCurrentIterationIndex, ih0, h0.X(), h0.Y(), h0.Z(), ih1, h1.X(), h1.Y(),
           h1.Z(), ih2, h2.X(), h2.Y(), h2.Z(), mc1, fIstaL, mctr.p, mctr.x, mctr.y, mctr.z, (float) T.GetChiSq()[0],
@@ -646,7 +704,11 @@ void TripletConstructor::CollectHits(const TrackParamV& Tr, const int iSta, cons
   ca::GridArea area(grid, T.X()[0], T.Y()[0],
                     (sqrt(Pick_m22 * T.C00()) + grid.GetMaxRangeX() + fAlgo->fMaxDZ * abs(T.Tx()))[0],
                     (sqrt(Pick_m22 * T.C11()) + grid.GetMaxRangeY() + fAlgo->fMaxDZ * abs(T.Ty()))[0]);
-
+  if constexpr (fDebugCollectHits) {
+    std::cout << "search area: " << T.X()[0] << " " << T.Y()[0] << " "
+              << (sqrt(Pick_m22 * T.C00()) + grid.GetMaxRangeX() + fAlgo->fMaxDZ * abs(T.Tx()))[0] << " "
+              << (sqrt(Pick_m22 * T.C11()) + grid.GetMaxRangeY() + fAlgo->fMaxDZ * abs(T.Ty()))[0] << std::endl;
+  }
   if (fAlgo->fParameters.DevIsIgnoreHitSearchAreas()) {
     area.DoLoopOverEntireGrid();
   }
@@ -659,23 +721,36 @@ void TripletConstructor::CollectHits(const TrackParamV& Tr, const int iSta, cons
     if (fAlgo->fIsWindowHitSuppressed[ih]) continue;
 
     const ca::Hit& hit = fAlgo->fWindowHits[ih];
-
+    if constexpr (fDebugCollectHits) {
+      std::cout << "hit in the search area: " << hit.ToString() << std::endl;
+      std::cout << "   check the hit.. " << std::endl;
+    }
     if (iMC >= 0) {  // match via MC
       if (iMC != fAlgo->GetMcTrackIdForWindowHit(ih)) {
+        if constexpr (fDebugCollectHits) {
+          std::cout << "   hit mc does not match" << std::endl;
+        }
         continue;
       }
     }
 
-    // check y-boundaries
+    // check time-boundaries
+
     //TODO: move hardcoded cuts to parameters
-    if ((sta.timeInfo) && (T.NdfTime()[0] > -2)) {
-      if (fabs(time - hit.T()) > 1.4 * (3.5 * sqrt(timeError2) + hit.RangeT())) continue;
-      if (fabs(time - hit.T()) > 30) continue;
+    if ((sta.timeInfo) && (T.NdfTime()[0] >= 0)) {
+      if (fabs(time - hit.T()) > 1.4 * (3.5 * sqrt(timeError2) + hit.RangeT())) {
+        if constexpr (fDebugCollectHits) {
+          std::cout << "   hit time does not match" << std::endl;
+        }
+        continue;
+      }
+      // if (fabs(time - hit.T()) > 30) continue;
     }
 
     // - check whether hit belong to the window ( track position +\- errors ) -
     const fscal z = hit.Z();
 
+    // check y-boundaries
     auto [y, C11] = fFit.ExtrapolateLineYdY2(z);
 
     fscal dy_est = sqrt(Pick_m22[0] * C11[0]) + hit.RangeY();
@@ -685,7 +760,12 @@ void TripletConstructor::CollectHits(const TrackParamV& Tr, const int iSta, cons
 
     const fscal dY = ym - y[0];
 
-    if (fabs(dY) > dy_est) continue;
+    if (fabs(dY) > dy_est) {
+      if constexpr (fDebugCollectHits) {
+        std::cout << "   hit Y does not match" << std::endl;
+      }
+      continue;
+    }
 
     // check x-boundaries
     auto [x, C00] = fFit.ExtrapolateLineXdX2(z);
@@ -694,7 +774,12 @@ void TripletConstructor::CollectHits(const TrackParamV& Tr, const int iSta, cons
 
     const fscal dX = xm - x[0];
 
-    if (fabs(dX) > dx_est) continue;
+    if (fabs(dX) > dx_est) {
+      if constexpr (fDebugCollectHits) {
+        std::cout << "   hit X does not match" << std::endl;
+      }
+      continue;
+    }
 
     // check chi2
 
@@ -706,10 +791,22 @@ void TripletConstructor::CollectHits(const TrackParamV& Tr, const int iSta, cons
 
     // TODO: adjust the cut, cut on chi2x & chi2u separately
     if (!fAlgo->fpCurrentIteration->GetTrackFromTripletsFlag()) {
-      if (chi2x[0] > chi2Cut) continue;
-      if (chi2x[0] + chi2u[0] > chi2Cut) continue;
+      if (chi2x[0] > chi2Cut) {
+        if constexpr (fDebugCollectHits) {
+          std::cout << "   hit chi2X is too large" << std::endl;
+        }
+        continue;
+      }
+      if (chi2x[0] + chi2u[0] > chi2Cut) {
+        if constexpr (fDebugCollectHits) {
+          std::cout << "   hit chi2U is too large" << std::endl;
+        }
+        continue;
+      }
+    }
+    if constexpr (fDebugCollectHits) {
+      std::cout << "   hit passed all the checks" << std::endl;
     }
-
     collectedHits.push_back(ih);
 
   }  // loop over the hits in the area
diff --git a/algo/ca/core/tracking/CaTripletConstructor.h b/algo/ca/core/tracking/CaTripletConstructor.h
index b58ac7a28ec2861cf27636f4d8daaaa59dc6c84b..444a20c7357a580af1ecc97e223334b2c915e887 100644
--- a/algo/ca/core/tracking/CaTripletConstructor.h
+++ b/algo/ca/core/tracking/CaTripletConstructor.h
@@ -117,6 +117,11 @@ namespace cbm::algo::ca
 
     ca::TrackFit fFit;
 
+   private:
+    static constexpr bool fDebugDublets     = false;  // print debug info for dublets
+    static constexpr bool fDebugTriplets    = false;  // print debug info for triplets
+    static constexpr bool fDebugCollectHits = false;  // print debug info for CollectHits
+
   } _fvecalignment;
 
 }  // namespace cbm::algo::ca
diff --git a/macro/L1/configs/ca_params_mcbm.yaml b/macro/L1/configs/ca_params_mcbm.yaml
index e7c6069a85a1e922aea4392ef84655a25eb03817..3b1e82ca3fe482ccbc6d0dedfce7e3ac9788f169 100644
--- a/macro/L1/configs/ca_params_mcbm.yaml
+++ b/macro/L1/configs/ca_params_mcbm.yaml
@@ -35,7 +35,8 @@ ca:
     track_finder:
       # Iteration sequence
       # The iterations themselves are defined in the ca/possible_iterations branch.
-      iteration_sequence: ['FastPrim', 'AllPrim', 'AllPrimJump', 'AllSec']
+      #iteration_sequence: ['FastPrim', 'AllPrim', 'AllPrimJump', 'AllSec']
+      iteration_sequence: ['AllPrim', 'AllSec']
       
       # Flag to suppress ghost tracks or not (true/false)
       is_ghost_suppression: true
@@ -71,109 +72,33 @@ ca:
       doublet_chi2_cut:         7.56327
       pick_gather:              4.0
       triplet_link_chi2:        125.
-      max_qp:                   2.   # 1 / 0.5 [GeV/c]^-1
+      max_qp:                   10.   # 1 / 10. [GeV/c]^-1
       max_slope_pv:             9.5
       max_slope:                2.748
       max_dz:                   0.1
-      target_pos_sigma_x:       0.
-      target_pos_sigma_y:       0.
-      min_n_hits:               4
-      min_n_hits_station_0:     4
+      target_pos_sigma_x:       0.3
+      target_pos_sigma_y:       0.3
+      min_n_hits:               3
+      min_n_hits_station_0:     3
       first_station_index:      0
-      is_extend_tracks:         false
+      is_extend_tracks:         true
       is_primary:               false
       is_electron:              false
-      max_station_gap:          0
+      max_station_gap:          2
       is_track_from_triplets:   false
-    
-    - name: "FastPrim"
-      base_iteration:           "Default"
-      max_qp:                   3.3333333  # 1 / 0.3
-      max_dz:                   0.
-      target_pos_sigma_x:       1.
-      target_pos_sigma_y:       1.
-      is_primary:               true
-    
+     
     - name: "AllPrim"
       base_iteration:           "Default"
-      min_n_hits_station_0:     3
-      max_qp:                   10.
       target_pos_sigma_x:       1.
       target_pos_sigma_y:       1.
       is_primary:               true
-    
-    - name: "FastPrim2"
-      base_iteration:           "Default"
-      triplet_chi2_cut:         21.1075
-      triplet_final_chi2_cut:   21.1075
-      pick_gather:              3.0
-      max_qp:                   2.  # 1 / 0.5
-      max_dz:                   0.
-      target_pos_sigma_x:       5.
-      target_pos_sigma_y:       5.
-      is_primary:               true
-    
-    - name: "AllSec"
-      base_iteration:           "Default"
-      triplet_chi2_cut:         18.7560
-      triplet_final_chi2_cut:   18.7560
-      max_qp:                   3.333333  # 1 / 0.3
-      target_pos_sigma_x:       10.
-      target_pos_sigma_y:       10.
-      max_slope_pv:             9.5
-      is_primary:               false
 
-    - name: "FastPrimJump"
-      base_iteration:           "Default"
-      triplet_chi2_cut:         21.1075
-      triplet_final_chi2_cut:   21.1075
-      pick_gather:              3.0
-      max_qp:                   3.3333333  # 1 / 0.3
-      max_dz:                   0.
-      target_pos_sigma_x:       5.
-      target_pos_sigma_y:       5.
-      is_primary:               true
-      max_station_gap:          2
-
-    - name: "AllPrimJump"
-      base_iteration:           "Default"
-      triplet_chi2_cut:         18.7560
-      triplet_final_chi2_cut:   18.7560
-      max_qp:                   3.3333333  # 1 / 0.3
-      target_pos_sigma_x:       5.
-      target_pos_sigma_y:       5.
-      is_primary:               true
-      max_station_gap:          2
-
-    - name: "AllSecJump"
-      base_iteration:           "Default"
-      triplet_chi2_cut:         21.1075
-      triplet_final_chi2_cut:   21.1075
-      max_qp:                   3.3333333  # 1 / 0.3
-      max_slope_pv:             1.5
-      target_pos_sigma_x:       10.
-      target_pos_sigma_y:       10.
-      is_primary:               false
-
-    - name: "AllPrimElectron"
-      base_iteration:           "Default"
-      min_n_hits_station_0:     3
-      max_qp:                   10.  # 1 / 0.05
-      target_pos_sigma_x:       1.
-      target_pos_sigma_y:       1.
-      is_primary:               true
-      is_electron:              true
-
-    - name: "AllSecElectron"
+    - name: "AllSec"
       base_iteration:           "Default"
-      triplet_chi2_cut:         18.7560
-      triplet_final_chi2_cut:   18.7560
-      max_qp:                   10.  # 1 / 0.05
-      max_slope_pv:             1.5
+      is_extend_tracks:         false
       target_pos_sigma_x:       10.
       target_pos_sigma_y:       10.
       is_primary:               false
-      is_electron:              true
   
 ...
 
diff --git a/macro/L1/configs/config_ideal_hits_mcbm.yaml b/macro/L1/configs/config_ideal_hits_mcbm.yaml
index 2d43b1dbb9c7d48fd2a34234b538096368f07a77..ce912740b86aa8bf75d1ff0efa63bd78b1d6e078 100644
--- a/macro/L1/configs/config_ideal_hits_mcbm.yaml
+++ b/macro/L1/configs/config_ideal_hits_mcbm.yaml
@@ -17,17 +17,17 @@ ideal_hit_producer:
   # 4 - ideal hits are created (true values are smeared withing errors, defined in section parameters)
   flags:
     sts:
-      0: 4
-      1: 4
+      0: 2
+      1: 2
     trd:
-      0: 4
-      1: 4
-      2: 4
+      0: 2
+      1: 2
+      2: 2
     tof:
-      0: 4
-      1: 4
-      2: 4
-      3: 4
+      0: 2
+      1: 2
+      2: 2
+      3: 2
   #
   # Notes:
   # 1) For MVD, MuCh, TRD and TOF du corresponds to dx, and dv corresponds to dy
@@ -45,3 +45,8 @@ ideal_hit_producer:
       0: { du: { angle: 0, value: .50, pdf: g }, dv: { angle: 90, value: .50, pdf: g }, dt: { value: 10., pdf: g }}
       1: { du: { angle: 0, value: .05, pdf: g }, dv: { angle: 90, value: 4.0, pdf: u }, dt: { value: 10., pdf: g }}
       2: { du: { angle: 0, value: 4.0, pdf: u }, dv: { angle: 90, value: .05, pdf: g }, dt: { value: 10., pdf: g }}
+    tof:
+      0: { du: { angle: 0, value: 0.45, pdf: g }, dv: { angle: 90, value: 0.25, pdf: g }, dt: { value: 0.075, pdf: g }}
+      1: { du: { angle: 0, value: 0.45, pdf: g }, dv: { angle: 90, value: 0.25, pdf: g }, dt: { value: 0.075, pdf: g }}
+      2: { du: { angle: 0, value: 0.45, pdf: g }, dv: { angle: 90, value: 0.25, pdf: g }, dt: { value: 0.075, pdf: g }}
+      3: { du: { angle: 0, value: 0.45, pdf: g }, dv: { angle: 90, value: 0.25, pdf: g }, dt: { value: 0.075, pdf: g }}