diff --git a/algo/ca/core/tracking/CaCloneMerger.cxx b/algo/ca/core/tracking/CaCloneMerger.cxx
index 5755539265d616347a68af0b53e933344ed26829..561a0f5ea8dfab75ef482fe7434000ff09e22028 100644
--- a/algo/ca/core/tracking/CaCloneMerger.cxx
+++ b/algo/ca/core/tracking/CaCloneMerger.cxx
@@ -22,7 +22,7 @@ using namespace cbm::algo;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-CloneMerger::CloneMerger(const ca::Parameters<fvec>& pars, const float mass) : fParameters(pars), fDefaultMass(mass) {}
+CloneMerger::CloneMerger(const ca::Parameters<fvec>& pars, const fscal mass) : fParameters(pars), fDefaultMass(mass) {}
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
@@ -40,7 +40,7 @@ void CloneMerger::Exec(const ca::InputData& input, WindowData& wData)
   Vector<ca::HitIndex_t>& firstHit     = fTrackFirstHit;
   Vector<ca::HitIndex_t>& lastHit      = fTrackLastHit;
   Vector<unsigned short>& neighbour    = fTrackNeighbour;
-  Vector<float>& trackChi2             = fTrackChi2;
+  Vector<fscal>& trackChi2             = fTrackChi2;
   Vector<char>& isStored               = fTrackIsStored;
   Vector<char>& isDownstreamNeighbour  = fTrackIsDownstreamNeighbour;
 
diff --git a/algo/ca/core/tracking/CaCloneMerger.h b/algo/ca/core/tracking/CaCloneMerger.h
index d063c32f08f787d07581571fd627d8b6a89ffdf3..9bfce4145a0b754c772b7a9c0fb4d68bbe829028 100644
--- a/algo/ca/core/tracking/CaCloneMerger.h
+++ b/algo/ca/core/tracking/CaCloneMerger.h
@@ -33,7 +33,7 @@ namespace cbm::algo::ca
   class CloneMerger {
    public:
     /// Default constructor
-    CloneMerger(const ca::Parameters<fvec>& pars, const float mass);
+    CloneMerger(const ca::Parameters<fvec>& pars, const fscal mass);
 
     /// Destructor
     ~CloneMerger();
@@ -113,7 +113,7 @@ namespace cbm::algo::ca
     Vector<unsigned short> fTrackNeighbour{"CloneMerger::fTrackNeighbour"};
 
     /// Chi2 value of the track merging procedure
-    Vector<float> fTrackChi2{"CloneMerger::fTrackChi2"};
+    Vector<fscal> fTrackChi2{"CloneMerger::fTrackChi2"};
 
     /// Flag: is the given track already stored to the output
     Vector<char> fTrackIsStored{"CloneMerger::fTrackIsStored"};
@@ -126,7 +126,7 @@ namespace cbm::algo::ca
     Vector<ca::HitIndex_t> fRecoHitsNew{"CaCloneMerger::fRecoHitsNew"};  ///< vector of track hits after the merge
 
     const Parameters<fvec>& fParameters;            ///< Object of Framework parameters class
-    float fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
+    fscal fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
   };
 
 }  // namespace cbm::algo::ca
diff --git a/algo/ca/core/tracking/CaFramework.h b/algo/ca/core/tracking/CaFramework.h
index 4b20fae8e2afb43425aecfea0877b768269fbd59..d9f10319dd327114854a9a1c56fee8ef8e9f2ca2 100644
--- a/algo/ca/core/tracking/CaFramework.h
+++ b/algo/ca/core/tracking/CaFramework.h
@@ -117,15 +117,15 @@ namespace cbm::algo::ca
     ///
     /// The function is used during the reconstruction in order to estimate the multiple scattering and energy loss
     /// \param mass Default particle mass
-    void SetDefaultParticleMass(float mass) { fDefaultMass = mass; }
+    void SetDefaultParticleMass(fscal mass) { fDefaultMass = mass; }
 
     /// Gets default particle mass
     /// \return particle mass
-    float GetDefaultParticleMass() const { return fDefaultMass; }
+    fscal GetDefaultParticleMass() const { return fDefaultMass; }
 
     /// Gets default particle mass squared
     /// \return particle mass squared
-    float GetDefaultParticleMass2() const { return fDefaultMass * fDefaultMass; }
+    fscal GetDefaultParticleMass2() const { return fDefaultMass * fDefaultMass; }
 
     /// \brief Gets timeslice header
     const TimesliceHeader& GetTsHeader() const { return fTsHeader; }
@@ -190,7 +190,7 @@ namespace cbm::algo::ca
     KfFramework_t fKf;  ///< KF framework instance
 
     int fNstationsBeforePipe{0};                    ///< number of stations before pipe (MVD stations in CBM)
-    float fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
+    fscal fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
     TimesliceHeader fTsHeader;                      ///< current timeslice header
 
     // ***************************
diff --git a/algo/ca/core/tracking/CaTrackExtender.cxx b/algo/ca/core/tracking/CaTrackExtender.cxx
index a7070603b41e127fb327c1ed44a9d40ce40e0cda..07b0df3fe93f95857076d6142a8fb277bed21a20 100644
--- a/algo/ca/core/tracking/CaTrackExtender.cxx
+++ b/algo/ca/core/tracking/CaTrackExtender.cxx
@@ -24,7 +24,7 @@ using namespace cbm::algo::ca;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-TrackExtender::TrackExtender(const ca::Parameters<fvec>& pars, const float mass) : fParameters(pars), fDefaultMass(mass)
+TrackExtender::TrackExtender(const ca::Parameters<fvec>& pars, const fscal mass) : fParameters(pars), fDefaultMass(mass)
 {
 }
 
@@ -198,7 +198,7 @@ void TrackExtender::FindMoreHits(ca::Branch& t, TrackParamV& Tout, const bool up
 
   if (ista2 == frWData->CurrentIteration()->GetFirstStationIndex()) ista = ista2 + step;
 
-  const float pickGather = frWData->CurrentIteration()->GetPickGather();
+  const fscal pickGather = frWData->CurrentIteration()->GetPickGather();
   const fvec pickGather2 = pickGather * pickGather;
   const fvec maxDZ       = frWData->CurrentIteration()->GetMaxDZ();
   for (; (ista < fParameters.GetNstationsActive()) && (ista >= 0); ista += step) {  // CHECKME why ista2?
diff --git a/algo/ca/core/tracking/CaTrackExtender.h b/algo/ca/core/tracking/CaTrackExtender.h
index 875db7cb3546e241af0df1c8187344f9ece34664..8936a86b9e212fd9747521a41a17fef1b85915cb 100644
--- a/algo/ca/core/tracking/CaTrackExtender.h
+++ b/algo/ca/core/tracking/CaTrackExtender.h
@@ -34,7 +34,7 @@ namespace cbm::algo::ca
   class TrackExtender {
    public:
     /// Default constructor
-    TrackExtender(const ca::Parameters<fvec>& pars, const float mass);
+    TrackExtender(const ca::Parameters<fvec>& pars, const fscal mass);
 
     /// Destructor
     ~TrackExtender();
@@ -92,7 +92,7 @@ namespace cbm::algo::ca
     const Parameters<fvec>& fParameters;  ///< Object of Framework parameters class
     const InputData* fInputData;          ///< Tracking input data
     WindowData* frWData;
-    float fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
+    fscal fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
   };
 
 }  // namespace cbm::algo::ca
diff --git a/algo/ca/core/tracking/CaTrackFinder.cxx b/algo/ca/core/tracking/CaTrackFinder.cxx
index 6c19e6c26ff65a208cc6c540cbd0cef68a53cafa..75c902a8a0c368fae53df9291eee4b15a05ce736 100644
--- a/algo/ca/core/tracking/CaTrackFinder.cxx
+++ b/algo/ca/core/tracking/CaTrackFinder.cxx
@@ -43,7 +43,7 @@ using constants::phys::SpeedOfLightInvD;
 // ---------------------------------------------------------------------------------------------------------------------
 //
 
-TrackFinder::TrackFinder(const ca::Parameters<fvec>& pars, const float mass, const ca::TrackingMode& mode,
+TrackFinder::TrackFinder(const ca::Parameters<fvec>& pars, const fscal mass, const ca::TrackingMode& mode,
                          TrackingMonitorData& monitorData, int nThreads, double& recoTime)
   : fParameters(pars)
   , fDefaultMass(mass)
@@ -202,11 +202,11 @@ TrackFinder::Output_t TrackFinder::FindTracks(const InputData& input, TimesliceH
     nWindows = 1;
   }
 
-  int nWindowsThread = nWindows / fNofThreads;
-  float windowDelta  = fWindowLength - fWindowOverlap - fWindowMargin;
+  // int nWindowsThread = nWindows / fNofThreads;
+  fscal windowDelta = fWindowLength - fWindowOverlap - fWindowMargin;
   //LOG(info) << "CA: estimated number of time windows: " << nWindows;
 
-  std::vector<float> vWindowStartThread(fNofThreads), vWindowEndThread(fNofThreads);
+  std::vector<fscal> vWindowStartThread(fNofThreads), vWindowEndThread(fNofThreads);
 
   vWindowStartThread[0] = fStatTsStart;
   {  // Estimation of number of hits in time windows
@@ -350,7 +350,7 @@ TrackFinder::Output_t TrackFinder::FindTracks(const InputData& input, TimesliceH
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-void TrackFinder::FindTracksThread(const InputData& input, int iThread, float& windowStart, float& windowEnd,
+void TrackFinder::FindTracksThread(const InputData& input, int iThread, fscal& windowStart, fscal& windowEnd,
                                    int& statNwindows, int& statNhitsProcessed)
 {
   //std::stringstream filename;
diff --git a/algo/ca/core/tracking/CaTrackFinder.h b/algo/ca/core/tracking/CaTrackFinder.h
index 7f270d633bb6971a6f09c1e248ce6057314b2ef2..ce3c3a942c98833f7bab26b4bc824fb1460895e3 100644
--- a/algo/ca/core/tracking/CaTrackFinder.h
+++ b/algo/ca/core/tracking/CaTrackFinder.h
@@ -36,7 +36,7 @@ namespace cbm::algo::ca
     typedef std::pair<Vector<Track>, Vector<ca::HitIndex_t>> Output_t;
 
     /// Default constructora
-    TrackFinder(const ca::Parameters<fvec>& pars, const float mass, const ca::TrackingMode& mode,
+    TrackFinder(const ca::Parameters<fvec>& pars, const fscal mass, const ca::TrackingMode& mode,
                 TrackingMonitorData& monitorData, int nThreads, double& recoTime);
     /// Destructor
     ~TrackFinder() = default;
@@ -63,7 +63,7 @@ namespace cbm::algo::ca
    private:
     // -------------------------------
     // Private methods
-    void FindTracksThread(const InputData& input, int iThread, float& windowStart, float& windowEnd, int& statNwindows,
+    void FindTracksThread(const InputData& input, int iThread, fscal& windowStart, fscal& windowEnd, int& statNwindows,
                           int& statNhitsProcessed);
     //   bool checkTripletMatch(const ca::Triplet& l, const ca::Triplet& r, fscal& dchi2) const;
 
@@ -73,7 +73,7 @@ namespace cbm::algo::ca
     Vector<CaHitTimeInfo> fHitTimeInfo;
 
     const Parameters<fvec>& fParameters;            ///< Object of Framework parameters class
-    float fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
+    fscal fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
     ca::TrackingMode fTrackingMode;
 
     TrackingMonitorData& fMonitorData;                     ///< Tracking monitor data (statistics per call)
@@ -87,12 +87,12 @@ namespace cbm::algo::ca
     std::vector<Vector<Track>> fvRecoTracks;           ///< reconstructed tracks
     std::vector<Vector<HitIndex_t>> fvRecoHitIndices;  ///< packed hits of reconstructed tracks
 
-    float fWindowLength  = 0.;   ///< Time window length [ns]
-    float fWindowOverlap = 15.;  ///< Time window overlap [ns]
-    float fWindowMargin  = 5.;   ///< Time window margin [ns] (TODO: Why cannot we include margin into the overlap?)
+    fscal fWindowLength  = 0.;   ///< Time window length [ns]
+    fscal fWindowOverlap = 15.;  ///< Time window overlap [ns]
+    fscal fWindowMargin  = 5.;   ///< Time window margin [ns] (TODO: Why cannot we include margin into the overlap?)
 
-    float fStatTsStart  = 0.;
-    float fStatTsEnd    = 0.;
+    fscal fStatTsStart  = 0.;
+    fscal fStatTsEnd    = 0.;
     int fStatNhitsTotal = 0;
   };
 
diff --git a/algo/ca/core/tracking/CaTrackFinderWindow.cxx b/algo/ca/core/tracking/CaTrackFinderWindow.cxx
index 4fdb1f2ab8469d09fa52f58a01584aaf33c55dfc..5f0d81e7d9671b59c3ce21d0c17f088ac72c0afe 100644
--- a/algo/ca/core/tracking/CaTrackFinderWindow.cxx
+++ b/algo/ca/core/tracking/CaTrackFinderWindow.cxx
@@ -46,7 +46,7 @@ using namespace cbm::algo::ca;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-TrackFinderWindow::TrackFinderWindow(const ca::Parameters<fvec>& pars, const float mass, const ca::TrackingMode& mode,
+TrackFinderWindow::TrackFinderWindow(const ca::Parameters<fvec>& pars, const fscal mass, const ca::TrackingMode& mode,
                                      ca::TrackingMonitorData& monitorData)
   : fParameters(pars)
   , fDefaultMass(mass)
@@ -81,7 +81,7 @@ bool TrackFinderWindow::checkTripletMatch(const ca::Triplet& l, const ca::Triple
   if (r.GetMSta() != l.GetRSta()) return false;
   if (r.GetLSta() != l.GetMSta()) return false;
 
-  const float tripletLinkChi2 = wData.CurrentIteration()->GetTripletLinkChi2();
+  const fscal tripletLinkChi2 = wData.CurrentIteration()->GetTripletLinkChi2();
   if (r.IsMomentumFitted()) {
     assert(l.IsMomentumFitted());
 
@@ -210,7 +210,7 @@ void TrackFinderWindow::CaTrackFinderSlice(const ca::InputData& input, WindowDat
     const int nBins2D    = 1 + nSliceHits;
 
     // TODO: SG: the coefficients should be removed
-    const fscal scale    = fParameters.GetStation(iS).GetZ<float>() - fParameters.GetTargetPositionZ()[0];
+    const fscal scale    = fParameters.GetStation(iS).GetZ<fscal>() - fParameters.GetTargetPositionZ()[0];
     const fscal maxScale = 0.3 * scale;
     const fscal minScale = 0.01 * scale;
 
diff --git a/algo/ca/core/tracking/CaTrackFinderWindow.h b/algo/ca/core/tracking/CaTrackFinderWindow.h
index 0bb4b0e90577dfdf716ffc90ccddc5f36e62289b..e072fb8677f7963519dfd06fabfd39ce6ec68f1b 100644
--- a/algo/ca/core/tracking/CaTrackFinderWindow.h
+++ b/algo/ca/core/tracking/CaTrackFinderWindow.h
@@ -38,7 +38,7 @@ namespace cbm::algo::ca
   class TrackFinderWindow {
    public:
     /// Default constructor
-    TrackFinderWindow(const ca::Parameters<fvec>& pars, const float mass, const ca::TrackingMode& mode,
+    TrackFinderWindow(const ca::Parameters<fvec>& pars, const fscal mass, const ca::TrackingMode& mode,
                       ca::TrackingMonitorData& monitorData);
     /// Destructor
     ~TrackFinderWindow();
@@ -105,7 +105,7 @@ namespace cbm::algo::ca
     static constexpr bool fDebug = false;  // print debug info
 
     const Parameters<fvec>& fParameters;            ///< Object of Framework parameters class
-    float fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
+    fscal fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
     ca::TrackingMode fTrackingMode;
 
     TrackingMonitorData& frMonitorData;  ///< Reference to monitor data
diff --git a/algo/ca/core/tracking/CaTrackFit.cxx b/algo/ca/core/tracking/CaTrackFit.cxx
index e0118834efd56e211eeef9cb02811533d4608072..af0745e0f3bb7501822ee6d0aeef0d70189b532c 100644
--- a/algo/ca/core/tracking/CaTrackFit.cxx
+++ b/algo/ca/core/tracking/CaTrackFit.cxx
@@ -1068,7 +1068,7 @@ namespace cbm::algo::ca
   }
 
 
-  void TrackFit::EnergyLossCorrection(int atomicZ, float atomicA, float rho, float radLen, fvec radThick,
+  void TrackFit::EnergyLossCorrection(int atomicZ, fscal atomicA, fscal rho, fscal radLen, fvec radThick,
                                       fvec upstreamDirection)
   {
     cnst qp2cut(1. / (10. * 10.));  // 10 GeV cut
@@ -1220,8 +1220,8 @@ namespace cbm::algo::ca
     cnst kp3 = 173e-9f;
     cnst kp4 = 0.49848f;
 
-    constexpr float mK   = 0.307075e-3f;  // [GeV*cm^2/g]
-    constexpr float _2me = 1.022e-3f;     // [GeV/c^2]
+    constexpr fscal mK   = 0.307075e-3f;  // [GeV*cm^2/g]
+    constexpr fscal _2me = 1.022e-3f;     // [GeV/c^2]
     cnst rho             = kp0;
     cnst x0              = kp1 * 2.303f;
     cnst x1              = kp2 * 2.303f;
@@ -1266,8 +1266,8 @@ namespace cbm::algo::ca
     //   cnst &kp3 = 173e-9f;
     //   cnst &kp4 = 0.49848f;
 
-    constexpr float mK   = 0.307075e-3f;  // [GeV*cm^2/g]
-    constexpr float _2me = 1.022e-3f;     // [GeV/c^2]
+    constexpr fscal mK   = 0.307075e-3f;  // [GeV*cm^2/g]
+    constexpr fscal _2me = 1.022e-3f;     // [GeV/c^2]
     fvec rho             = kp0;
     cnst x0              = kp1 * 2.303f;
     cnst x1              = kp2 * 2.303f;
diff --git a/algo/ca/core/tracking/CaTrackFit.h b/algo/ca/core/tracking/CaTrackFit.h
index f0f1b12924dd861a20757161901b335283b82b8a..8105e31b2ea6e2e2c3076332e57f371ed57e5777 100644
--- a/algo/ca/core/tracking/CaTrackFit.h
+++ b/algo/ca/core/tracking/CaTrackFit.h
@@ -143,7 +143,7 @@ namespace cbm::algo::ca
     /// \param radLen - radiation length of the material
     /// \param radThick - radiation length of the material
     /// \param upstreamDirection - direction of the track (1 or 0)
-    void EnergyLossCorrection(int atomicZ, float atomicA, float rho, float radLen, fvec radThick,
+    void EnergyLossCorrection(int atomicZ, fscal atomicA, fscal rho, fscal radLen, fvec radThick,
                               fvec upstreamDirection);
 
 
diff --git a/algo/ca/core/tracking/CaTrackFitter.cxx b/algo/ca/core/tracking/CaTrackFitter.cxx
index 00a599fb12862e5e9c28661dab8f55d09a4efcab..29ca0e61dd293c77fea4d36300146c3e64a34f2f 100644
--- a/algo/ca/core/tracking/CaTrackFitter.cxx
+++ b/algo/ca/core/tracking/CaTrackFitter.cxx
@@ -20,7 +20,7 @@ using namespace cbm::algo;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-TrackFitter::TrackFitter(const ca::Parameters<fvec>& pars, const float mass, const ca::TrackingMode& mode)
+TrackFitter::TrackFitter(const ca::Parameters<fvec>& pars, const fscal mass, const ca::TrackingMode& mode)
   : fParameters(pars)
   , fDefaultMass(mass)
   , fTrackingMode(mode)
diff --git a/algo/ca/core/tracking/CaTrackFitter.h b/algo/ca/core/tracking/CaTrackFitter.h
index d45271690884770956adee18b08b2c5c7f04d439..01bfd1e6e90438fe9f099a896ba4819304818f78 100644
--- a/algo/ca/core/tracking/CaTrackFitter.h
+++ b/algo/ca/core/tracking/CaTrackFitter.h
@@ -32,7 +32,7 @@ namespace cbm::algo::ca
   class TrackFitter {
    public:
     /// Default constructor
-    TrackFitter(const ca::Parameters<fvec>& pars, const float mass, const ca::TrackingMode& mode);
+    TrackFitter(const ca::Parameters<fvec>& pars, const fscal mass, const ca::TrackingMode& mode);
 
     /// Destructor
     ~TrackFitter();
@@ -58,7 +58,7 @@ namespace cbm::algo::ca
     /// Data members
 
     const Parameters<fvec>& fParameters;            ///< Object of Framework parameters class
-    float fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
+    fscal fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
     ca::TrackingMode fTrackingMode;
   };
 
diff --git a/algo/ca/core/tracking/CaTripletConstructor.cxx b/algo/ca/core/tracking/CaTripletConstructor.cxx
index f07fe9653ba6d7c1c7b90c18d0ba2d62857672a5..b77b5c8af40cae8410e6c1c905c291bbfbd12583 100644
--- a/algo/ca/core/tracking/CaTripletConstructor.cxx
+++ b/algo/ca/core/tracking/CaTripletConstructor.cxx
@@ -20,7 +20,7 @@
 using namespace cbm::algo::ca;
 
 TripletConstructor::TripletConstructor(const ca::Parameters<fvec>& pars, const ca::InputData& input, WindowData& wData,
-                                       const float mass, const ca::TrackingMode& mode)
+                                       const fscal mass, const ca::TrackingMode& mode)
   : fParameters(pars)
   , fInputData(input)
   , frWData(wData)
@@ -523,7 +523,7 @@ void TripletConstructor::FitTriplets()
     // repeat several times in order to improve the precision
     for (int iiter = 0; iiter < nIterations; ++iiter) {
 
-      auto fitTrack = [&](int startIdx, int endIdx, int step, float energyLossSign) {
+      auto fitTrack = [&](int startIdx, int endIdx, int step, fscal energyLossSign) {
         fit.SetQp0(T.Qp());
         fit.Qp0()(fit.Qp0() > maxQp)  = maxQp;
         fit.Qp0()(fit.Qp0() < -maxQp) = -maxQp;
@@ -591,8 +591,8 @@ void TripletConstructor::FitTriplets()
         /*
         cbm::ca::tools::Debugger::Instance().FillNtuple(
           "triplets", mctr.iEvent, frAlgo.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],
-          (float) T.Ndf()[0], (float) T.ChiSqTime()[0], (float) T.NdfTime()[0]);
+          h1.Z(), ih2, h2.X(), h2.Y(), h2.Z(), mc1, fIstaL, mctr.p, mctr.x, mctr.y, mctr.z, (fscal) T.GetChiSq()[0],
+          (fscal) T.Ndf()[0], (fscal) T.ChiSqTime()[0], (fscal) T.NdfTime()[0]);
         */
       }
     }
@@ -613,7 +613,7 @@ void TripletConstructor::StoreTriplets()
   fTriplets.clear();
   fTriplets.reserve(n3);
 
-  const float tripletFinalChi2Cut = frWData.CurrentIteration()->GetTripletFinalChi2Cut();
+  const fscal tripletFinalChi2Cut = frWData.CurrentIteration()->GetTripletFinalChi2Cut();
   for (Tindex i3 = 0; i3 < n3; ++i3) {
 
     TrackParamV& T3 = fTracks_3[i3];
diff --git a/algo/ca/core/tracking/CaTripletConstructor.h b/algo/ca/core/tracking/CaTripletConstructor.h
index 2c39596c4b1ac1cc4db9f909e8e5528eb6cbc341..a6d160681b13dffcadcd7ca87f40fffb22907d74 100644
--- a/algo/ca/core/tracking/CaTripletConstructor.h
+++ b/algo/ca/core/tracking/CaTripletConstructor.h
@@ -35,7 +35,7 @@ namespace cbm::algo::ca
     /// Constructor
     /// \param nThreads  Number of threads for multi-threaded mode
     TripletConstructor(const ca::Parameters<fvec>& pars, const ca::InputData& input, WindowData& wData,
-                       const float mass, const ca::TrackingMode& mode);
+                       const fscal mass, const ca::TrackingMode& mode);
 
     /// Copy constructor
     TripletConstructor(const TripletConstructor&) = delete;
@@ -85,7 +85,7 @@ namespace cbm::algo::ca
     const Parameters<fvec>& fParameters;  ///< Object of Framework parameters class
     const InputData& fInputData;          ///< Tracking input data
     WindowData& frWData;
-    float fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
+    fscal fDefaultMass{constants::phys::MuonMass};  ///< mass of the propagated particle [GeV/c2]
     ca::TrackingMode fTrackingMode;
 
     bool fIsTargetField{false};  ///< is the magnetic field present at the target