diff --git a/algo/ca/TrackingChain.cxx b/algo/ca/TrackingChain.cxx
index 451d9cd177c68396d1cf9810e05b139580dd6397..42ca815cdf7613da5ad72183c1f1a8f6918cec87 100644
--- a/algo/ca/TrackingChain.cxx
+++ b/algo/ca/TrackingChain.cxx
@@ -11,6 +11,8 @@
 
 #include "tof/Config.h"
 
+#include <unordered_map>
+
 #include <xpu/host.h>
 
 #include "CaConstants.h"
@@ -78,7 +80,9 @@ TrackingChain::Return_t TrackingChain::Run(Input_t recoResults)
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-void TrackingChain::Finalize() { L_(info) << fCaMonitor.ToString(); }
+void TrackingChain::Finalize()
+{ /*L_(info) << fCaMonitor.ToString();*/
+}
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
@@ -112,6 +116,7 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi
 
   ca::HitKeyIndex_t firstHitKey = fNofHitKeys;
   int64_t dataStreamDet         = static_cast<int64_t>(DetID) << 60;  // detector part of the data stream
+
   for (size_t iPartition = 0; iPartition < hits.NPartitions(); ++iPartition) {
     const auto& [vHits, extHitAddress] = hits.Partition(iPartition);
     // ---- Define data stream and station index
@@ -120,7 +125,10 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi
     // FIXME: This definition of the station index works only for STS, and there is no any guaranty, that it will
     //        work for other mCBM setups.
     if constexpr (IsSts) { iStLocal = (extHitAddress >> 4) & 0xF; }
-    if constexpr (IsTof) { iStLocal = tof::Config::GetTofTrackingStation(extHitAddress); }
+    if constexpr (IsTof) {
+      iStLocal = tof::Config::GetTofTrackingStation(extHitAddress);
+      if (tof::Config::IsT0(extHitAddress)) { continue; }  // skip hits from T0
+    }
 
     int iStActive  = (iStLocal != -1) ? fCaFramework.GetParameters().GetStationIndexActive(iStLocal, DetID) : -1;
     size_t iOffset = hits.Offsets()[iPartition];
@@ -154,9 +162,15 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi
       caHit.SetStation(iStActive);
       caHit.SetId(fCaDataManager.GetNofHits());
       if (caHit.Check()) {
+        //L_(info) << caHit.ToString();
+        if constexpr (IsSts) {
+          if (fNofHitKeys <= caHit.FrontKey()) { fNofHitKeys = caHit.FrontKey() + 1; }
+          if (fNofHitKeys <= caHit.BackKey()) { fNofHitKeys = caHit.BackKey() + 1; }
+        }
+        else {
+          if (fNofHitKeys <= caHit.FrontKey()) { fNofHitKeys = caHit.FrontKey() + 1; }
+        }
         fCaDataManager.PushBackHit(caHit, dataStream);
-        if (fNofHitKeys <= caHit.FrontKey()) { fNofHitKeys = caHit.FrontKey() + 1; }
-        if (fNofHitKeys <= caHit.BackKey()) { fNofHitKeys = caHit.BackKey() + 1; }
       }
       else {
         if constexpr (IsMvd) { fCaMonitorData.IncrementCounter(ca::ECounter::UndefinedMvdHit); }
diff --git a/algo/ca/core/data/CaHit.h b/algo/ca/core/data/CaHit.h
index 1544c57fb1f676679cd5fa9e43599d69d7100070..0020fd809c1b08abd4acf4e4ee17050585f867fd 100644
--- a/algo/ca/core/data/CaHit.h
+++ b/algo/ca/core/data/CaHit.h
@@ -200,6 +200,8 @@ namespace cbm::algo::ca
     res &= std::isfinite(fDy2);
     res &= std::isfinite(fDxy);
     res &= std::isfinite(fDt2);
+    res &= (fDx2 || fDy2 || fDxy || fDt2);  // TODO: research
+    res &= (fT < 1.e+9);
     return res;
   }
 
diff --git a/algo/detectors/tof/Config.h b/algo/detectors/tof/Config.h
index 4d7a4213514175cfe26d6853ce47666da2542cb7..cc116eed5e7cddc923b9ad3a6247b6b30a090d29 100644
--- a/algo/detectors/tof/Config.h
+++ b/algo/detectors/tof/Config.h
@@ -27,6 +27,8 @@ namespace cbm::algo::tof
                                    CbmTofAddress::GetRpcId(address));
     }
 
+    static bool IsT0(uint32_t address) { return 5 == CbmTofAddress::GetSmType(address); }
+
     static int32_t GetTofTrackingStation(const uint32_t smType, const uint32_t sm, const uint32_t rpc)
     {
       const uint8_t numSmTypes                 = 10;
diff --git a/algo/params/mcbm_beam_2022_05_23_nickel.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel.ca.par
deleted file mode 100644
index ebe88b3ac6cb93f536e92fd3206dc9ec9e8da18f..0000000000000000000000000000000000000000
Binary files a/algo/params/mcbm_beam_2022_05_23_nickel.ca.par and /dev/null differ
diff --git a/algo/params/mcbm_beam_2022_05_23_nickel.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel.ca.par
new file mode 120000
index 0000000000000000000000000000000000000000..b58faf6f782128d02e469311ce99b556434c76d1
--- /dev/null
+++ b/algo/params/mcbm_beam_2022_05_23_nickel.ca.par
@@ -0,0 +1 @@
+mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par
\ No newline at end of file
diff --git a/algo/params/mcbm_beam_2022_05_23_nickel_ONLY_STS.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel_ONLY_STS.ca.par
new file mode 100644
index 0000000000000000000000000000000000000000..4db73c143da00a2908dbe7d7a4df090f772ecb7a
Binary files /dev/null and b/algo/params/mcbm_beam_2022_05_23_nickel_ONLY_STS.ca.par differ
diff --git a/algo/params/mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par b/algo/params/mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par
new file mode 100644
index 0000000000000000000000000000000000000000..ebe88b3ac6cb93f536e92fd3206dc9ec9e8da18f
Binary files /dev/null and b/algo/params/mcbm_beam_2022_05_23_nickel_STS_AND_TOF.ca.par differ