diff --git a/algo/ca/core/tracking/CaTrackFit.cxx b/algo/ca/core/tracking/CaTrackFit.cxx
index 50007a34f77685e58522235abce58a5469ab53fa..3b7328c2b69adbaf801a5950c0f95c30661ad35f 100644
--- a/algo/ca/core/tracking/CaTrackFit.cxx
+++ b/algo/ca/core/tracking/CaTrackFit.cxx
@@ -34,19 +34,18 @@ namespace cbm::algo::ca
     F5 = m.CosPhi() * fTr.C50() + m.SinPhi() * fTr.C51();
     F6 = m.CosPhi() * fTr.C60() + m.SinPhi() * fTr.C61();
 
-    const fmask maskDoFilter = (HCH < m.Du2() * 16.f);
-    //cnst maskDoFilter = _f32vec4_true;
+    constexpr bool doProtect = !std::is_same<fscal, double>::value;
+
+    const fmask maskDoFilter = doProtect ? (HCH < m.Du2() * 16.f) : fmask::One();
 
     // correction to HCH is needed for the case when sigma2 is so small
     // with respect to HCH that it disappears due to the roundoff error
     //
-    fvec wi     = fMaskF / (m.Du2() + fvec(1.0000001) * HCH);
+    fvec wi     = doProtect ?(fMaskF / (m.Du2() + fvec(1.0000001) * HCH)) : (fMaskF / (m.Du2() + HCH));
     fvec zetawi = fMaskF * zeta / (iif(maskDoFilter, m.Du2(), fvec::Zero()) + HCH);
 
-    //wi = iif(wi > fvec::Zero(), wi, fvec::Zero());
     wi = iif(m.Du2() > fvec::Zero(), wi, fvec::Zero());
 
-    // fTr.ChiSq() += iif( maskDoFilter, zeta * zetawi, fvec::Zero() );
     fTr.ChiSq() += m.Ndf() * zeta * zeta * wi;
     fTr.Ndf() += m.Ndf() * fMaskF;