diff --git a/algo/ca/core/CMakeLists.txt b/algo/ca/core/CMakeLists.txt
index 9d71e4f047cda3ed42baa968e2e581398ec50ff9..cee9a629f9910e0674adcb5885eed4252d55b11b 100644
--- a/algo/ca/core/CMakeLists.txt
+++ b/algo/ca/core/CMakeLists.txt
@@ -20,12 +20,8 @@ target_include_directories(CaCore
 
 target_compile_definitions(CaCore PUBLIC NO_ROOT)
 target_link_libraries(CaCore
-                      OnlineDataLog
-                      external::fles_ipc
-                      xpu
+                      Vc::Vc
                       Boost::serialization
-                      external::yaml-cpp
-                      external::fles_logging
                      )
 
 install(TARGETS CaCore DESTINATION lib)
@@ -36,6 +32,7 @@ install(DIRECTORY pars TYPE INCLUDE FILES_MATCHING PATTERN "*.h")
 install(
   FILES
     data/CaTrack.h
+    pars/CaConstants.h
     simd/CaSimd.h
     simd/CaSimdVc.h
     simd/CaSimdPseudo.h
diff --git a/algo/ca/core/data/CaTrack.h b/algo/ca/core/data/CaTrack.h
index 3c8520b4ac9bcfe8cfaa97b9f06d760d852095c8..cbb0788173f180dfe18d0513b013e948708df7c6 100644
--- a/algo/ca/core/data/CaTrack.h
+++ b/algo/ca/core/data/CaTrack.h
@@ -25,6 +25,7 @@
 
 #include <limits>
 
+#include "CaSimd.h"
 namespace cbm::algo::ca
 {
   /// @class cbm::algo::ca::Track
@@ -35,39 +36,38 @@ namespace cbm::algo::ca
   ///
   class Track {
   public:
-    using fscal = float;
     static constexpr float kNaN {std::numeric_limits<float>::signaling_NaN()};
     static constexpr int kNparTr {8};
     static constexpr int kNparCov {28};
 
     // TODO: SZh. 14.09.2023: Replace with std::array
-    unsigned char NHits {0};        ///< Number of hits in track
-    fscal TFirst[kNparTr] {kNaN};   ///< Track parameters on the first station
-    fscal CFirst[kNparCov] {kNaN};  ///< Track parameter covariation matrix elements on the first station
-    fscal TLast[kNparTr] {kNaN};    ///< Track parameters on the last station
-    fscal CLast[kNparCov] {kNaN};   ///< Track parameter covariation matrix elements on the second station
-    fscal Tpv[kNparTr] {kNaN};      ///< Track parameters in the primary vertex
-    fscal Cpv[kNparCov] {kNaN};     ///< Track parameter covariation matrix elements in the primary vertex
-    fscal chi2 {kNaN};              ///< Track fit chi-square value
-    short int NDF {0};              ///< Track fit NDF value
+    unsigned char fNofHits {0};        ///< Number of hits in track
+    fscal fParFirst[kNparTr] {kNaN};   ///< Track parameters on the first station
+    fscal fCovFirst[kNparCov] {kNaN};  ///< Track parameter covariation matrix elements on the first station
+    fscal fParLast[kNparTr] {kNaN};    ///< Track parameters on the last station
+    fscal fCovLast[kNparCov] {kNaN};   ///< Track parameter covariation matrix elements on the second station
+    fscal fParPV[kNparTr] {kNaN};      ///< Track parameters in the primary vertex
+    fscal fCovPV[kNparCov] {kNaN};     ///< Track parameter covariation matrix elements in the primary vertex
+    fscal fChi2 {kNaN};                ///< Track fit chi-square value
+    short int fNDF {0};                ///< Track fit NDF value
 
     friend class boost::serialization::access;
     template<class Archive>
     void serialize(Archive& ar, const unsigned int /*version*/)
     {
-      ar& NHits;
+      ar& fNofHits;
       for (int i = 0; i < kNparTr; ++i) {
-        ar& TFirst[i];
-        ar& TLast[i];
-        ar& Tpv[i];
+        ar& fParFirst[i];
+        ar& fParLast[i];
+        ar& fParPV[i];
       }
       for (int i = 0; i < kNparCov; ++i) {
-        ar& CFirst[i];
-        ar& CLast[i];
-        ar& Cpv[i];
+        ar& fCovFirst[i];
+        ar& fCovLast[i];
+        ar& fCovPV[i];
       }
-      ar& chi2;
-      ar& NDF;
+      ar& fChi2;
+      ar& fNDF;
     }
   };
 }  // namespace cbm::algo::ca
diff --git a/reco/L1/L1Algo/L1Constants.h b/algo/ca/core/pars/CaConstants.h
similarity index 95%
rename from reco/L1/L1Algo/L1Constants.h
rename to algo/ca/core/pars/CaConstants.h
index 6b8012a991b7ba3294f9ed3a27486050195ac9de..d21238b7e471f568c1b3b568a494bf3cb8d171be 100644
--- a/reco/L1/L1Algo/L1Constants.h
+++ b/algo/ca/core/pars/CaConstants.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -9,8 +9,8 @@
  * @author S.Zharko <s.zharko@gsi.de>
  ***********************************************************************************************************/
 
-#ifndef L1Constants_h
-#define L1Constants_h 1
+#ifndef CA_CORE_CONSTANTS
+#define CA_CORE_CONSTANTS 1
 
 #include "CaSimd.h"
 using cbm::algo::ca::fmask;
@@ -18,7 +18,7 @@ using cbm::algo::ca::fscal;  // TODO: remove "using" from headers
 using cbm::algo::ca::fvec;   // TODO: remove "using" from headers
 
 /// Namespace contains compile-time constants definition for the L1 tracking algorithm
-namespace L1Constants
+namespace cbm::algo::ca::constants
 {
   using cbm::algo::ca::fvec;
 
@@ -69,12 +69,13 @@ namespace L1Constants
   {
     /* Particle masses used for track fit */
     constexpr float kMuonMass      = 0.10565800f;  ///< Muon mass     [GeV/c2]  !! TODO: discrepancy in last two digits
-    constexpr float kPionMass         = 0.13957039f;  ///< Pion mass     [GeV/c2]
-    constexpr float kKaonMass         = 0.493677f;    ///< Kaon mass     [GeV/c2] (PDG 22.08.2023)
+    constexpr float kPionMass      = 0.13957039f;  ///< Pion mass     [GeV/c2]
+    constexpr float kKaonMass      = 0.493677f;    ///< Kaon mass     [GeV/c2] (PDG 22.08.2023)
     constexpr float kElectronMass  = 0.000511f;    ///< Electron mass [GeV/c2]
     constexpr float kProtonMass    = 0.93827209f;  ///< Proton mass [GeV/c2] (0.93827208816 - PDG 11.08.2022)
     constexpr double kSpeedOfLight = 29.9792458;   ///< Speed of light [cm/ns]
     constexpr float kSpeedOfLightF = 29.9792;      ///< Speed of light [cm/ns] (single precision)
+
     constexpr double kSpeedOfLightInv = 1 / kSpeedOfLight;   ///< Inverse speed of light [cm/ns]
     constexpr float kSpeedOfLightInvF = 1 / kSpeedOfLightF;  ///< Inverse speed of light [cm/ns] (single precision)
   }                                                          // namespace phys
@@ -92,9 +93,6 @@ namespace L1Constants
     constexpr int kAlignment      = 16;  ///< Default alignment of data (bytes)
   }                                      // namespace misc
 
-  // Units
-
-
   // Colors of terminal log
   namespace clrs
   {
@@ -196,7 +194,10 @@ namespace L1Constants
     constexpr char kGYbr[] = "\e[1;7;37m";  ///< bold-reverse grey
     constexpr char kWTbr[] = "\e[1;7;38m";  ///< bold-reverse white
   }                                         // namespace clrs
-}  // end namespace L1Constants
+}  // namespace cbm::algo::ca::constants
+
+/// TEMPORARY !!!!
+using namespace cbm::algo::ca;
 
 
-#endif  // L1Constants_h
+#endif  // CA_CORE_CONSTANTS
diff --git a/reco/L1/CMakeLists.txt b/reco/L1/CMakeLists.txt
index 1150d541a790ec46dc4fd6e5c54a295df97f9438..6ec4f9ab04368430d4b6060e58240cd25597eb57 100644
--- a/reco/L1/CMakeLists.txt
+++ b/reco/L1/CMakeLists.txt
@@ -17,6 +17,7 @@ set(INCLUDE_DIRECTORIES
   ${CMAKE_CURRENT_SOURCE_DIR}/L1Algo/utils
   ${CMAKE_CURRENT_SOURCE_DIR}/catools
   ${CMAKE_CURRENT_SOURCE_DIR}/utils
+  
 )
 
 set(SRCS
@@ -211,7 +212,7 @@ install(FILES CbmL1Counters.h
   L1Algo/L1Event.h
   L1Algo/L1EventMatch.h
   L1Algo/L1ObjectInitController.h
-  L1Algo/L1Constants.h
+  #L1Algo/L1Constants.h
   L1Algo/L1Utils.h
   L1Algo/L1SimdSerializer.h
   L1Algo/L1TrackPar.h
diff --git a/reco/L1/CbmCaMCModule.cxx b/reco/L1/CbmCaMCModule.cxx
index 71f4dc3fa3e5b7a9814e93b0f13f92725875012b..3087db20f2f990585d32223b34dea1157e1f66b4 100644
--- a/reco/L1/CbmCaMCModule.cxx
+++ b/reco/L1/CbmCaMCModule.cxx
@@ -45,9 +45,9 @@
 // ** Action definition functions **
 // *********************************
 
+using cbm::algo::ca::constants::clrs::kCL;   // clear log
+using cbm::algo::ca::constants::clrs::kRDb;  // red bold log
 using cbm::ca::MCModule;
-using L1Constants::clrs::kCL;   // clear log
-using L1Constants::clrs::kRDb;  // red bold log
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
diff --git a/reco/L1/CbmCaMCModule.h b/reco/L1/CbmCaMCModule.h
index d817e97e15429165df373037ee8268510aa2bfda..d1d97861a186b33c6b71fd1d9a7c2a575c02b5bb 100644
--- a/reco/L1/CbmCaMCModule.h
+++ b/reco/L1/CbmCaMCModule.h
@@ -39,10 +39,10 @@
 #include <string_view>
 #include <type_traits>
 
+#include "CaConstants.h"
 #include "CaMonitor.h"
 #include "CaToolsMCData.h"
 #include "CaToolsMCPoint.h"
-#include "L1Constants.h"
 #include "L1InputData.h"
 #include "L1Parameters.h"
 #include "L1Undef.h"
@@ -124,7 +124,7 @@ namespace cbm::ca
 
     /// @brief Sets first hit indexes container in different detectors
     /// @param source Array of indexes
-    void RegisterFirstHitIndexes(const std::array<int, L1Constants::size::kMaxNdetectors + 1>& source)
+    void RegisterFirstHitIndexes(const std::array<int, constants::size::kMaxNdetectors + 1>& source)
     {
       fpvFstHitId = &source;
     }
@@ -261,7 +261,7 @@ namespace cbm::ca
     /// @brief Pointer to array of first hit indexes in the detector subsystem
     ///
     /// This array must be initialized in the run initialization function.
-    const std::array<int, L1Constants::size::kMaxNdetectors + 1>* fpvFstHitId = nullptr;
+    const std::array<int, constants::size::kMaxNdetectors + 1>* fpvFstHitId = nullptr;
   };
 }  // namespace cbm::ca
 
diff --git a/reco/L1/CbmCaTimeSliceReader.cxx b/reco/L1/CbmCaTimeSliceReader.cxx
index ffa58bc595c32384554e2575c6bb933a1c38dc02..5857683c4194db49f0928f28ee04331b9fed5df8 100644
--- a/reco/L1/CbmCaTimeSliceReader.cxx
+++ b/reco/L1/CbmCaTimeSliceReader.cxx
@@ -22,15 +22,15 @@
 #include <algorithm>
 #include <numeric>
 
-#include "L1Constants.h"
+#include "CaConstants.h"
 #include "L1InputData.h"
 #include "L1Parameters.h"
 
 using ca::tools::HitRecord;
+using cbm::algo::ca::constants::clrs::kCL;   // clear log
+using cbm::algo::ca::constants::clrs::kGNb;  // green bold log
+using cbm::algo::ca::constants::clrs::kRDb;  // red bold log
 using cbm::ca::TimeSliceReader;
-using L1Constants::clrs::kCL;   // clear log
-using L1Constants::clrs::kGNb;  // green bold log
-using L1Constants::clrs::kRDb;  // red bold log
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
diff --git a/reco/L1/CbmCaTimeSliceReader.h b/reco/L1/CbmCaTimeSliceReader.h
index 271f3c4286275b4cce0a65c91aeac69476099af1..823a5d0a9adfca94254b184ef4c23bf274826433 100644
--- a/reco/L1/CbmCaTimeSliceReader.h
+++ b/reco/L1/CbmCaTimeSliceReader.h
@@ -29,8 +29,8 @@
 
 #include "TClonesArray.h"
 
+#include "CaConstants.h"
 #include "CaToolsHitRecord.h"
-#include "L1Constants.h"
 #include "L1Vector.h"
 
 
@@ -200,7 +200,7 @@ namespace cbm::ca
     int fNofHitKeys  = 0;  ///< Recorded number of hit keys
     int fFirstHitKey = 0;  ///< First index of hit key for the detector subsystem
 
-    std::array<int, L1Constants::size::kMaxNdetectors + 1> fvHitFirstIndexDet = {{0}};  ///< First hit index in detector
+    std::array<int, constants::size::kMaxNdetectors + 1> fvHitFirstIndexDet = {{0}};  ///< First hit index in detector
   };
 }  // namespace cbm::ca
 
diff --git a/reco/L1/CbmL1.cxx b/reco/L1/CbmL1.cxx
index 21a76099e39e58bdce8d165acd6e531d76cf2cad..7ac966a811f627603b64098e0454b78a533f4c7d 100644
--- a/reco/L1/CbmL1.cxx
+++ b/reco/L1/CbmL1.cxx
@@ -769,36 +769,36 @@ void CbmL1::Reconstruct(CbmEvent* event)
   int trackFirstHit = 0;
 
   for (L1Vector<CaTrack>::iterator it = fpAlgo->fRecoTracks.begin(); it != fpAlgo->fRecoTracks.end();
-       trackFirstHit += it->NHits, it++) {
+       trackFirstHit += it->fNofHits, it++) {
 
     CbmL1Track t;
 
     for (int i = 0; i < L1TrackPar::kNparTr; i++) {
-      t.T[i]     = it->TFirst[i];
-      t.TLast[i] = it->TLast[i];
-      t.Tpv[i]   = it->Tpv[i];
+      t.T[i]     = it->fParFirst[i];
+      t.TLast[i] = it->fParLast[i];
+      t.Tpv[i]   = it->fParPV[i];
     }
 
     for (int i = 0; i < L1TrackPar::kNparCov; ++i) {
-      t.C[i]     = it->CFirst[i];
-      t.CLast[i] = it->CLast[i];
-      t.Cpv[i]   = it->Cpv[i];
+      t.C[i]     = it->fCovFirst[i];
+      t.CLast[i] = it->fCovLast[i];
+      t.Cpv[i]   = it->fCovPV[i];
     }
 
-    t.chi2 = it->chi2;
-    t.NDF  = it->NDF;
+    t.chi2 = it->fChi2;
+    t.NDF  = it->fNDF;
     t.Hits.clear();
-    t.mass        = fpAlgo->fDefaultMass;  // pion mass
+    t.mass        = fpAlgo->fDefaultMass;  // muon mass
     t.is_electron = 0;
     t.SetId(fvRecoTracks.size());
 
-    for (int i = 0; i < it->NHits; i++) {
+    for (int i = 0; i < it->fNofHits; i++) {
       int caHitId  = fpAlgo->fRecoHits[trackFirstHit + i];
       int cbmHitID = fpAlgo->GetInputData().GetHit(caHitId).ID;
       t.Hits.push_back(cbmHitID);
     }
     fvRecoTracks.push_back(t);
-    fMonitor.Increment(EMonitorKey::kRecoHit, it->NHits);
+    fMonitor.Increment(EMonitorKey::kRecoHit, it->fNofHits);
   }
 
   fMonitor.Increment(EMonitorKey::kRecoTrack, fvRecoTracks.size());
@@ -1022,7 +1022,7 @@ void CbmL1::IdealTrackFinder()
     if (MC.Hits.size() < 4) continue;
 
     CaTrack algoTr;
-    algoTr.NHits = 0;
+    algoTr.fNofHits = 0;
 
     L1Vector<int> hitIndices("CbmL1::hitIndices", fpAlgo->GetParameters()->GetNstationsActive(), -1);
 
@@ -1039,11 +1039,11 @@ void CbmL1::IdealTrackFinder()
       if (hitI < 0) continue;
 
       // fpAlgo->fRecoHits.push_back(hitI);
-      algoTr.NHits++;
+      algoTr.fNofHits++;
     }
 
 
-    if (algoTr.NHits < 3) continue;
+    if (algoTr.fNofHits < 3) continue;
 
     for (int iH = 0; iH < fpAlgo->GetParameters()->GetNstationsActive(); iH++) {
       const int hitI = hitIndices[iH];
@@ -1051,12 +1051,12 @@ void CbmL1::IdealTrackFinder()
       fpAlgo->fRecoHits.push_back(hitI);
     }
 
-    algoTr.TFirst[0] = MC.x;
-    algoTr.TFirst[1] = MC.y;
-    algoTr.TFirst[2] = MC.px / MC.pz;
-    algoTr.TFirst[3] = MC.py / MC.pz;
-    algoTr.TFirst[4] = MC.q / MC.p;
-    algoTr.TFirst[5] = MC.z;
+    algoTr.fParFirst[0] = MC.x;
+    algoTr.fParFirst[1] = MC.y;
+    algoTr.fParFirst[2] = MC.px / MC.pz;
+    algoTr.fParFirst[3] = MC.py / MC.pz;
+    algoTr.fParFirst[4] = MC.q / MC.p;
+    algoTr.fParFirst[5] = MC.z;
 
     fpAlgo->fRecoTracks.push_back(algoTr);
   }
diff --git a/reco/L1/CbmL1MCTrack.cxx b/reco/L1/CbmL1MCTrack.cxx
index cdf746c11edfcc0e6d8512d56774657958309d58..c61997e712d4d4719045cabed7cfa0a9ff6adb5e 100644
--- a/reco/L1/CbmL1MCTrack.cxx
+++ b/reco/L1/CbmL1MCTrack.cxx
@@ -26,9 +26,12 @@
 #include <iomanip>
 #include <sstream>
 
+#include "CaConstants.h"
 #include "L1Algo/L1Algo.h"
 #include "L1Algo/L1Hit.h"
 
+using cbm::algo::ca::constants::size::kMaxNstations;
+
 CbmL1MCTrack::CbmL1MCTrack(double mass_, double q_, TVector3 vr, TLorentzVector vp, int _ID, int _mother_ID, int _pdg,
                            unsigned int _process_ID)
   : mass(mass_)
@@ -108,7 +111,7 @@ void CbmL1MCTrack::CountHitStations()
 {
   CbmL1* L1 = CbmL1::Instance();
 
-  int stationNhits[L1Constants::size::kMaxNstations] {0};
+  int stationNhits[kMaxNstations] {0};
 
   for (unsigned int iH = 0; iH < Hits.size(); iH++) {
     CbmL1HitDebugInfo& sh = L1->fvHitDebugInfo[Hits[iH]];
diff --git a/reco/L1/L1Algo/L1Algo.cxx b/reco/L1/L1Algo/L1Algo.cxx
index c1beb7096694856925b4e332a8149b0f382b9855..a5757b368fa6ccf5ef81b76773487aa4901f2076 100644
--- a/reco/L1/L1Algo/L1Algo.cxx
+++ b/reco/L1/L1Algo/L1Algo.cxx
@@ -12,7 +12,7 @@
 
 L1Algo::L1Algo()
 {
-  for (unsigned int i = 0; i < L1Constants::size::kMaxNstations; i++) {
+  for (unsigned int i = 0; i < constants::size::kMaxNstations; i++) {
     vGridTime[i].AllocateMemory();
     fTriplets[i].SetName(std::stringstream() << "L1Algo::fTriplets[" << i << "]");
   }
@@ -62,7 +62,7 @@ void L1Algo::ResetSliceData()
 
   fTrackCandidates.clear();
   fTrackCandidates.reserve(nHits / 10);
-  for (unsigned int iS = 0; iS < L1Constants::size::kMaxNstations; iS++) {
+  for (unsigned int iS = 0; iS < constants::size::kMaxNstations; iS++) {
     int nHitsStation = fSliceHitIds[iS].size();
     fTriplets[iS].clear();
     fTriplets[iS].reserve(2 * nHitsStation);
diff --git a/reco/L1/L1Algo/L1Algo.h b/reco/L1/L1Algo/L1Algo.h
index f74298118a3f50b0d7df68c802e4c62576bfe562..ec05275691cc9de1b3dc983ce7667b9c146720ea 100644
--- a/reco/L1/L1Algo/L1Algo.h
+++ b/reco/L1/L1Algo/L1Algo.h
@@ -28,6 +28,7 @@ class L1AlgoDraw;
 #include <limits>
 #include <map>
 
+#include "CaConstants.h"
 #include "CaTrack.h"
 #include "L1Branch.h"
 #include "L1CloneMerger.h"
@@ -50,8 +51,8 @@ class CbmL1MCTrack;
 // ** Types definition (global) **
 // *******************************
 
-using L1StationsArray_t = std::array<L1Station, L1Constants::size::kMaxNstations>;
-using L1MaterialArray_t = std::array<L1Material, L1Constants::size::kMaxNstations>;
+using L1StationsArray_t = std::array<L1Station, constants::size::kMaxNstations>;
+using L1MaterialArray_t = std::array<L1Material, constants::size::kMaxNstations>;
 using Tindex            = int;  // TODO: Replace with L1HitIndex_t, if suitable
 
 #ifdef PULLS
@@ -266,7 +267,7 @@ private:
   int fNfieldStations {0};       ///< number of stations in the field region
   //alignas(16) L1StationsArray_t fStations {};  ///< array of L1Station objects
   //alignas(16) L1MaterialArray_t fRadThick {};  ///< material for each station
-  float fDefaultMass {L1Constants::phys::kMuonMass};  ///< mass of the propagated particle [GeV/c2]
+  float fDefaultMass {constants::phys::kMuonMass};  ///< mass of the propagated particle [GeV/c2]
 
 
   // ***************************
@@ -282,12 +283,12 @@ private:
 public:
   L1Vector<L1HitTimeInfo> fHitTimeInfo;
 
-  L1Grid vGrid[L1Constants::size::kMaxNstations];      ///<
-  L1Grid vGridTime[L1Constants::size::kMaxNstations];  ///<
+  L1Grid vGrid[constants::size::kMaxNstations];      ///<
+  L1Grid vGridTime[constants::size::kMaxNstations];  ///<
 
-  fscal fMaxRangeX[L1Constants::size::kMaxNstations];
-  fscal fMaxRangeY[L1Constants::size::kMaxNstations];
-  fscal fMaxRangeT[L1Constants::size::kMaxNstations];
+  fscal fMaxRangeX[constants::size::kMaxNstations];
+  fscal fMaxRangeY[constants::size::kMaxNstations];
+  fscal fMaxRangeT[constants::size::kMaxNstations];
 
   double fCaRecoTime {0.};  // time of the track finder + fitter
 
@@ -299,14 +300,14 @@ public:
   L1Vector<L1HitIndex_t> fSliceRecoHits {"L1Algo::fSliceRecoHits"};  ///< packed hits of reconstructed tracks
 
   /// Created triplets vs station index
-  L1Vector<L1Triplet> fTriplets[L1Constants::size::kMaxNstations] {{"L1Algo::fTriplets"}};
+  L1Vector<L1Triplet> fTriplets[constants::size::kMaxNstations] {{"L1Algo::fTriplets"}};
 
   /// Track candidates created out of adjacent triplets before the final track selection.
   /// The candidates may share any amount of hits.
   L1Vector<L1Branch> fTrackCandidates {"L1Algo::fTrackCandidates"};
 
   ///< indices of the sub-slice hits
-  L1Vector<L1HitIndex_t> fSliceHitIds[L1Constants::size::kMaxNstations] {"L1Algo::fSliceHitIds"};
+  L1Vector<L1HitIndex_t> fSliceHitIds[constants::size::kMaxNstations] {"L1Algo::fSliceHitIds"};
 
   L1Vector<L1Hit> fGridHits {"L1Algo::fGridHits"};        ///< hits, ordered with respect to their grid bins
   L1Vector<L1Hit> fGridHitsBuf {"L1Algo::fGridHitsBuf"};  ///< hits, ordered with respect to their grid bins
@@ -317,8 +318,8 @@ public:
   L1Vector<L1HitPoint> fGridPoints {"L1Algo::fGridPoints"};  ///< grid points parallel to fGridHits
   L1Vector<L1HitPoint> fGridPointsBuf {"L1Algo::fGridPointsBuf"};
 
-  L1HitIndex_t fGridHitStartIndex[L1Constants::size::kMaxNstations + 1] {0};
-  L1HitIndex_t fGridHitStopIndex[L1Constants::size::kMaxNstations + 1] {0};
+  L1HitIndex_t fGridHitStartIndex[constants::size::kMaxNstations + 1] {0};
+  L1HitIndex_t fGridHitStopIndex[constants::size::kMaxNstations + 1] {0};
 
   L1Vector<int> fStripToTrack {"L1Algo::fStripToTrack"};  // strip to track pointers
 
@@ -402,10 +403,10 @@ private:
 [[gnu::always_inline]] inline unsigned int L1Algo::PackTripletId(unsigned int iStation, unsigned int iTriplet)
 {
 #ifndef FAST_CODE
-  assert(iStation < L1Constants::size::kMaxNstations);
-  assert(iTriplet < L1Constants::size::kMaxNtriplets);
+  assert(iStation < constants::size::kMaxNstations);
+  assert(iTriplet < constants::size::kMaxNtriplets);
 #endif
-  constexpr unsigned int kMoveStation = L1Constants::size::kTripletBits;
+  constexpr unsigned int kMoveStation = constants::size::kTripletBits;
   return (iStation << kMoveStation) + iTriplet;
 }
 
@@ -413,7 +414,7 @@ private:
 //
 [[gnu::always_inline]] inline unsigned int L1Algo::TripletId2Station(unsigned int id)
 {
-  constexpr unsigned int kMoveStation = L1Constants::size::kTripletBits;
+  constexpr unsigned int kMoveStation = constants::size::kTripletBits;
   return id >> kMoveStation;
 }
 
@@ -421,7 +422,7 @@ private:
 //
 [[gnu::always_inline]] inline unsigned int L1Algo::TripletId2Triplet(unsigned int id)
 {
-  constexpr unsigned int kTripletMask = (1u << L1Constants::size::kTripletBits) - 1u;
+  constexpr unsigned int kTripletMask = (1u << constants::size::kTripletBits) - 1u;
   return id & kTripletMask;
 }
 
diff --git a/reco/L1/L1Algo/L1BaseStationInfo.cxx b/reco/L1/L1Algo/L1BaseStationInfo.cxx
index c5b214ecb83f7568aff506a42b2357c2833b8f10..8792fa2c3c23bd56e3f89c3eb37fa8cc1db097b2 100644
--- a/reco/L1/L1Algo/L1BaseStationInfo.cxx
+++ b/reco/L1/L1Algo/L1BaseStationInfo.cxx
@@ -17,9 +17,9 @@
 #include <Logger.h>
 
 // L1Algo core
+#include "CaConstants.h"
 #include "L1Assert.h"
 #include "L1BaseStationInfo.h"
-#include "L1Constants.h"
 #include "L1Def.h"
 // C++ STL
 #include <iomanip>
@@ -139,8 +139,8 @@ void L1BaseStationInfo::SetFieldFunction(
   L1MASSERT(0, fInitController.GetFlag(EInitKey::kYmax),
             "Attempt to set magnetic field slice before Ymax size of the station");
   // TODO: Change names of variables according to convention (S.Zh.)
-  constexpr int M = L1Constants::size::kMaxFieldApproxPolynomialOrder;
-  constexpr int N = L1Constants::size::kMaxNFieldApproxCoefficients;
+  constexpr int M = constants::size::kMaxFieldApproxPolynomialOrder;
+  constexpr int N = constants::size::kMaxNFieldApproxCoefficients;
   constexpr int D = 3;  ///> number of dimensions
 
   // SLE initialization
diff --git a/reco/L1/L1Algo/L1CAIteration.cxx b/reco/L1/L1Algo/L1CAIteration.cxx
index 060fec635671fa8f4c68593f275c87ff29f62728..9483a27565dad855cf73ab586a5725594743932b 100644
--- a/reco/L1/L1Algo/L1CAIteration.cxx
+++ b/reco/L1/L1Algo/L1CAIteration.cxx
@@ -14,9 +14,8 @@
 #include <limits>
 #include <sstream>
 
-#include "L1Constants.h"
+#include "CaConstants.h"
 
-using namespace L1Constants::size;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
@@ -26,6 +25,7 @@ L1CAIteration::L1CAIteration(const std::string& name) : fName(name) {}
 //
 bool L1CAIteration::Check() const
 {
+  using constants::size::kMaxNstations;
   constexpr float kMaxFloat = std::numeric_limits<float>::max();
   bool res                  = true;
   // TODO: SZh 06.10.2022: These values should be tuned. At the moment the std::numeric_limits<T>::max value is used for
diff --git a/reco/L1/L1Algo/L1CaTrackFinder.cxx b/reco/L1/L1Algo/L1CaTrackFinder.cxx
index c4e0841016bc4c6e1ba603f0d4785d5b3a5017fd..1ad290493866bb3ac102d99df4d29c54b5ddefe4 100644
--- a/reco/L1/L1Algo/L1CaTrackFinder.cxx
+++ b/reco/L1/L1Algo/L1CaTrackFinder.cxx
@@ -181,10 +181,10 @@ void L1Algo::CaTrackFinder()
 
     int trackFirstHit = 0;
     for (L1Vector<Track>::iterator it = fSliceRecoTracks.begin(); it != fSliceRecoTracks.end();
-         trackFirstHit += it->NHits, it++) {
+         trackFirstHit += it->fNofHits, it++) {
 
       bool isTrackCompletelyInOverlap = true;
-      for (int ih = 0; ih < it->NHits; ih++) {
+      for (int ih = 0; ih < it->fNofHits; ih++) {
         int caHitId         = fSliceRecoHits[trackFirstHit + ih];
         L1HitTimeInfo& info = fHitTimeInfo[caHitId];
         if (info.fEventTimeMax < tsStart) {  // this hit is before the overlap
@@ -203,7 +203,7 @@ void L1Algo::CaTrackFinder()
         //
 
         // release the track hits
-        for (int i = 0; i < it->NHits; i++) {
+        for (int i = 0; i < it->fNofHits; i++) {
           int caHitId        = fSliceRecoHits[trackFirstHit + i];
           const auto& h      = fInputData.GetHit(caHitId);
           fvHitKeyFlags[h.f] = 0;
@@ -213,7 +213,7 @@ void L1Algo::CaTrackFinder()
       else {  // save the track
         fRecoTracks.push_back(*it);
         // mark the track hits as used
-        for (int i = 0; i < it->NHits; i++) {
+        for (int i = 0; i < it->fNofHits; i++) {
           int caHitId        = fSliceRecoHits[trackFirstHit + i];
           const auto& h      = fInputData.GetHit(caHitId);
           fvHitKeyFlags[h.f] = 1;
diff --git a/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx b/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx
index 42ed8f1e5a5a428d428b02eb3eee0b28730bedc4..9f14b1b5df619a855bdcb7412609883c46df9eca 100644
--- a/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx
+++ b/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx
@@ -165,7 +165,7 @@ void L1Algo::CaTrackFinderSlice()
   //  static Tindex stat_nDoublets[fNFindIterations] = {0};
   static Tindex stat_nTriplets[fNFindIterations] = {0};
 
-  static Tindex stat_nLevels[L1Constants::size::kMaxNstations - 2][fNFindIterations] = {{0}};
+  static Tindex stat_nLevels[constants::size::kMaxNstations - 2][fNFindIterations]   = {{0}};
   static Tindex stat_nCalls[fNFindIterations]                                        = {0};  // n calls of CAFindTrack
   static Tindex stat_nTrCandidates[fNFindIterations]                                 = {0};
 
@@ -441,7 +441,7 @@ void L1Algo::CaTrackFinderSlice()
     if (fpCurrentIteration->GetTrackFromTripletsFlag()) { min_level = 0; }
 
     L1Branch curr_tr;
-    L1Branch new_tr[L1Constants::size::kMaxNstations];
+    L1Branch new_tr[constants::size::kMaxNstations];
     L1Branch best_tr;
     fscal curr_chi2 = 0;
 
@@ -665,7 +665,7 @@ void L1Algo::CaTrackFinderSlice()
           sumTime += (hit.t - timeFlight);
         }
         Track t;
-        t.NHits = tr.NHits;
+        t.fNofHits = tr.NHits;
         fSliceRecoTracks.push_back(t);
         if (0) {  // SG debug
           cout << "store track " << iCandidate << " chi2= " << tr.chi2 << endl;
@@ -742,7 +742,7 @@ void L1Algo::CaTrackFinderSlice()
   }          // for (int isec
   // ---- Loop over Track Finder iterations: END -----------------------------------------------------------//
 
-  if constexpr (L1Constants::control::kIfMergeClones) {
+  if constexpr (constants::control::kIfMergeClones) {
     //CAMergeClones();
     // Fit tracks
     this->L1KFTrackFitter();
diff --git a/reco/L1/L1Algo/L1CloneMerger.cxx b/reco/L1/L1Algo/L1CloneMerger.cxx
index d4346f0cb601bd9bf3a1f6c14b713ac33f6a7563..2145c9f355196d18b6dd8c04d75176bd28cdeb4b 100644
--- a/reco/L1/L1Algo/L1CloneMerger.cxx
+++ b/reco/L1/L1Algo/L1CloneMerger.cxx
@@ -67,7 +67,7 @@ void L1CloneMerger::Exec(L1Vector<Track>& extTracks, L1Vector<L1HitIndex_t>& ext
   for (int iTr = 0; iTr < nTracks; iTr++) {
     firstHit[iTr]     = start_hit;
     firstStation[iTr] = frAlgo.GetInputData().GetHit(extRecoHits[start_hit]).iSt;
-    start_hit += extTracks[iTr].NHits - 1;
+    start_hit += extTracks[iTr].fNofHits - 1;
     lastHit[iTr]     = start_hit;
     lastStation[iTr] = frAlgo.GetInputData().GetHit(extRecoHits[start_hit]).iSt;
     start_hit++;
@@ -100,20 +100,20 @@ void L1CloneMerger::Exec(L1Vector<Track>& extTracks, L1Vector<L1HitIndex_t>& ext
 #pragma omp parallel for
 #endif
   for (int iTr = 0; iTr < nTracks; iTr++) {
-    if (extTracks[iTr].NHits > maxLengthForMerge) continue;
+    if (extTracks[iTr].fNofHits > maxLengthForMerge) continue;
     for (int jTr = 0; jTr < nTracks; jTr++) {
-      if (extTracks[jTr].NHits > maxLengthForMerge) continue;
+      if (extTracks[jTr].fNofHits > maxLengthForMerge) continue;
       if (iTr == jTr) continue;
       if (firstStation[iTr] <= lastStation[jTr]) continue;
 
       unsigned short stab = firstStation[iTr];
 
-      Tb.copyFromArrays(extTracks[iTr].TFirst, extTracks[iTr].CFirst);
+      Tb.copyFromArrays(extTracks[iTr].fParFirst, extTracks[iTr].fCovFirst);
       fitB.SetQp0(fitB.Tr().qp);
 
       unsigned short staf = lastStation[jTr];
 
-      Tf.copyFromArrays(extTracks[jTr].TLast, extTracks[jTr].CLast);
+      Tf.copyFromArrays(extTracks[jTr].fParLast, extTracks[jTr].fCovLast);
       fitF.SetQp0(fitF.Tr().qp);
 
       if (Tf.nTimeMeasurements[0] > 0 && Tb.nTimeMeasurements[0] > 0) {
@@ -179,7 +179,7 @@ void L1CloneMerger::Exec(L1Vector<Track>& extTracks, L1Vector<L1HitIndex_t>& ext
 
     if (neighbour[iTr] < kNoNeighbour) {
       isStored[neighbour[iTr]] = true;
-      fTracksNew.back().NHits += extTracks[neighbour[iTr]].NHits;
+      fTracksNew.back().fNofHits += extTracks[neighbour[iTr]].fNofHits;
       for (L1HitIndex_t HI = firstHit[neighbour[iTr]]; HI <= lastHit[neighbour[iTr]]; HI++)
         fRecoHitsNew.push_back(extRecoHits[HI]);
     }
diff --git a/reco/L1/L1Algo/L1CloneMerger.h b/reco/L1/L1Algo/L1CloneMerger.h
index 8f75a2a2e19d7b2fc7952c7675c71a6b1bb79898..f4e89d8e060e6cfc51212901d1033ea438c5f474 100644
--- a/reco/L1/L1Algo/L1CloneMerger.h
+++ b/reco/L1/L1Algo/L1CloneMerger.h
@@ -10,6 +10,7 @@
 #ifndef L1CloneMerger_h
 #define L1CloneMerger_h 1
 
+#include "CaConstants.h"  // TEMPORARY FOR fvec, fscal
 #include "L1Def.h"
 #include "L1Hit.h"  // For L1HitIndex_t
 #include "L1Vector.h"
diff --git a/reco/L1/L1Algo/L1ConfigRW.cxx b/reco/L1/L1Algo/L1ConfigRW.cxx
index 328ebc7bd3a6a14f0702c5feda75918a1257da18..ffb911eb8482b34e86a0a47487512676ec9df9d1 100644
--- a/reco/L1/L1Algo/L1ConfigRW.cxx
+++ b/reco/L1/L1Algo/L1ConfigRW.cxx
@@ -18,7 +18,7 @@
 
 #include <yaml-cpp/yaml.h>
 
-#include "L1Constants.h"
+#include "CaConstants.h"
 #include "L1InitManager.h"
 
 using namespace std::string_literals;
@@ -214,7 +214,7 @@ std::vector<std::set<int>> L1ConfigRW::ReadInactiveStationMap()
 
   if (node && node.size()) {
     std::unordered_map<std::string, int> mDetNameToID;
-    for (int iDet = 0; iDet < L1Constants::size::kMaxNdetectors; ++iDet) {
+    for (int iDet = 0; iDet < constants::size::kMaxNdetectors; ++iDet) {
       auto detName = boost::algorithm::to_lower_copy(fpInitManager->GetDetectorName(static_cast<L1DetectorID>(iDet)));
       if (!detName.size()) { continue; }
       mDetNameToID[detName] = iDet;
diff --git a/reco/L1/L1Algo/L1Field.cxx b/reco/L1/L1Algo/L1Field.cxx
index c50562a226645fc3311d4b2914eb5dcf1d5169d0..7d68667756cf95607574654d32ead62aa60b6ba4 100644
--- a/reco/L1/L1Algo/L1Field.cxx
+++ b/reco/L1/L1Algo/L1Field.cxx
@@ -60,7 +60,7 @@ std::ostream& operator<<(std::ostream& out, const L1FieldValue& B)
 //
 L1FieldSlice::L1FieldSlice()
 {
-  for (int i = 0; i < L1Constants::size::kMaxNFieldApproxCoefficients; ++i) {
+  for (int i = 0; i < constants::size::kMaxNFieldApproxCoefficients; ++i) {
     cx[i] = undef::kFvc;
     cy[i] = undef::kFvc;
     cz[i] = undef::kFvc;
@@ -73,7 +73,7 @@ L1FieldSlice::L1FieldSlice()
 void L1FieldSlice::CheckConsistency() const
 {
   /* Check SIMD data vectors for consistent initialization */
-  for (int i = 0; i < L1Constants::size::kMaxNFieldApproxCoefficients; ++i) {
+  for (int i = 0; i < constants::size::kMaxNFieldApproxCoefficients; ++i) {
     L1Utils::CheckSimdVectorEquality(cx[i], "L1FieldSlice: cx");
     L1Utils::CheckSimdVectorEquality(cy[i], "L1FieldSlice: cy");
     L1Utils::CheckSimdVectorEquality(cz[i], "L1FieldSlice: cz");
@@ -135,7 +135,7 @@ std::string L1FieldSlice::ToString(int indentLevel) const
   constexpr char indentChar = '\t';
   std::string indent(indentLevel, indentChar);
   aStream << indent << "idx           CX           CY           CZ";
-  for (int i = 0; i < L1Constants::size::kMaxNFieldApproxCoefficients; ++i) {
+  for (int i = 0; i < constants::size::kMaxNFieldApproxCoefficients; ++i) {
     aStream << '\n' << indent;
     aStream << std::setw(3) << std::setfill(' ') << i << ' ';
     aStream << std::setw(12) << std::setfill(' ') << cx[i][0] << ' ';
diff --git a/reco/L1/L1Algo/L1Field.h b/reco/L1/L1Algo/L1Field.h
index e8069ce082cc578f84b5106fa9b74bab08222825..55cd1da5c897b65f7f16b6de268b26c6ef82b1d5 100644
--- a/reco/L1/L1Algo/L1Field.h
+++ b/reco/L1/L1Algo/L1Field.h
@@ -7,7 +7,7 @@
 
 #include <string>
 
-#include "L1Constants.h"
+#include "CaConstants.h"
 #include "L1Def.h"
 #include "L1SimdSerializer.h"
 #include "L1Undef.h"
@@ -92,12 +92,10 @@ public:
   // NOTE: We don't use an initialization of arrays here because we cannot be sure
   //       if the underlying type (fvec) has a default constructor, but
   //       we are sure, that it can be initialized with a float. (S.Zharko)
-  fvec cx
-    [L1Constants::size::kMaxNFieldApproxCoefficients];  ///< Polynomial coefficients for x-component of the field value
-  fvec cy
-    [L1Constants::size::kMaxNFieldApproxCoefficients];  ///< Polynomial coefficients for y-component of the field value
-  fvec cz
-    [L1Constants::size::kMaxNFieldApproxCoefficients];  ///< Polynomial coefficients for z-component of the field value
+  static constexpr auto kMaxNFieldApproxCoefficients = constants::size::kMaxNFieldApproxCoefficients;
+  fvec cx[kMaxNFieldApproxCoefficients];  ///< Polynomial coefficients for x-component of the field value
+  fvec cy[kMaxNFieldApproxCoefficients];  ///< Polynomial coefficients for y-component of the field value
+  fvec cz[kMaxNFieldApproxCoefficients];  ///< Polynomial coefficients for z-component of the field value
 
   fvec z {undef::kFvc};  ///< z coordinate of the slice
 
diff --git a/reco/L1/L1Algo/L1Hit.h b/reco/L1/L1Algo/L1Hit.h
index 88999fa034b80bf58472a61986a8a0d5c71f1060..5db416e2df7ab4d76de34b7f576d0fff6207b7a9 100644
--- a/reco/L1/L1Algo/L1Hit.h
+++ b/reco/L1/L1Algo/L1Hit.h
@@ -14,10 +14,9 @@
 
 #include <boost/serialization/access.hpp>
 
-#include "L1Constants.h"
 
-using L1HitIndex_t   = unsigned /*short*/ int;  ///< Index of L1Hit
-using L1StripIndex_t = unsigned /*short*/ int;  ///< Index of the station strip
+using L1HitIndex_t   = unsigned int;  ///< Index of L1Hit
+using L1StripIndex_t = unsigned int;  ///< Index of the station strip
 
 ///
 /// L1Hit class describes a generic hit for CA tracker
diff --git a/reco/L1/L1Algo/L1HitPoint.h b/reco/L1/L1Algo/L1HitPoint.h
index 8cf9d874ced37eca2041386625f1dfba179fe7ba..34083cf55cf4973df8d2bc4147abcfab3e16e738 100644
--- a/reco/L1/L1Algo/L1HitPoint.h
+++ b/reco/L1/L1Algo/L1HitPoint.h
@@ -5,6 +5,7 @@
 #ifndef _L1HitPoint_h_
 #define _L1HitPoint_h_
 
+#include "CaConstants.h"
 #include "L1Hit.h"
 
 /// contain strips positions and coordinates of the hit
diff --git a/reco/L1/L1Algo/L1IODataManager.cxx b/reco/L1/L1Algo/L1IODataManager.cxx
index 66d695fc590552099f21f7d9c13f4b08dff2b348..bdb5d46ce7f1aaebd986a74e3a6be53424abba60 100644
--- a/reco/L1/L1Algo/L1IODataManager.cxx
+++ b/reco/L1/L1Algo/L1IODataManager.cxx
@@ -25,7 +25,7 @@ bool L1IODataManager::SendInputData(L1Algo* pAlgo)
   InitData();
 
   // Check data before input
-  if (CheckInputData<L1Constants::control::kInputDataQaLevel>()) {
+  if (CheckInputData<constants::control::kInputDataQaLevel>()) {
     assert(pAlgo);
     pAlgo->ReceiveInputData(std::move(fInputData));
     return true;
@@ -42,7 +42,7 @@ bool L1IODataManager::SendInputData(L1InputData& destination)
   InitData();
 
   // Check data before input
-  if (CheckInputData<L1Constants::control::kInputDataQaLevel>()) {
+  if (CheckInputData<constants::control::kInputDataQaLevel>()) {
     destination = std::move(fInputData);
     assert(this->GetNofHits() == 0);
     return true;
@@ -80,7 +80,7 @@ void L1IODataManager::ResetInputData(L1HitIndex_t nHits) noexcept
   L1InputData tmp;
   fInputData.Swap(tmp);
   fLastStreamId = -1;
-  fInputData.fStreamStartIndices.reserve(2000);  // TODO: What are these numbers? Please, put them into L1Constants.h
+  fInputData.fStreamStartIndices.reserve(2000);  // TODO: What are these numbers? Please, put them into constants.h
   fInputData.fStreamStopIndices.reserve(2000);
   fInputData.fHits.reserve(nHits);
 }
@@ -93,7 +93,7 @@ void L1IODataManager::InitData()
 
   //std::cout << "N data streams: " << fInputData.fStreamStartIndices.size() << std::endl;
 
-  // TODO: SZh 14.08.2023: Move the max allowed number of streams to the L1Constants.h
+  // TODO: SZh 14.08.2023: Move the max allowed number of streams to the constants.h
   if (fInputData.fStreamStartIndices.size() > 3000) {
     LOG(warning) << "L1: unexpected order of input data: too many data streams!!! ";
     fInputData.fStreamStartIndices.reduce(3000);
@@ -111,7 +111,7 @@ void L1IODataManager::InitData()
 void L1IODataManager::WriteInputData(const std::string& fileName) const
 {
   // Check current data object for consistency
-  if (!CheckInputData<L1Constants::control::kInputDataQaLevel>()) {
+  if (!CheckInputData<constants::control::kInputDataQaLevel>()) {
     LOG(error) << "L1: input data writer: attempt to write invalid input data object to file \"" << fileName << "\"";
     return;
   }
diff --git a/reco/L1/L1Algo/L1IODataManager.h b/reco/L1/L1Algo/L1IODataManager.h
index b7902481d6b81077285cf27457398ffd47f466de..0787d8b1a8baaff85cc79c6055e9f87d4918890a 100644
--- a/reco/L1/L1Algo/L1IODataManager.h
+++ b/reco/L1/L1Algo/L1IODataManager.h
@@ -10,7 +10,7 @@
 #ifndef L1IODataManager_h
 #define L1IODataManager_h 1
 
-#include "L1Constants.h"
+#include "CaConstants.h"
 #include "L1InputData.h"
 
 class L1Algo;
@@ -18,7 +18,7 @@ class L1Algo;
 
 /// Class L1IODataManager defines the interface for input and output data flow in the L1 tracking algorithm
 ///
-class alignas(L1Constants::misc::kAlignment) L1IODataManager {
+class alignas(constants::misc::kAlignment) L1IODataManager {
 public:
   // ***************************
   // ** Member functions list **
diff --git a/reco/L1/L1Algo/L1InitManager.cxx b/reco/L1/L1Algo/L1InitManager.cxx
index 0f0f49120eecc6e57d5c74bd5234c507ab0f1736..49d602b0af1d50c4ddb0e149a76b6f91abffd2d9 100644
--- a/reco/L1/L1Algo/L1InitManager.cxx
+++ b/reco/L1/L1Algo/L1InitManager.cxx
@@ -20,9 +20,9 @@
 #include "L1Assert.h"
 #include "L1ConfigRW.h"
 
-using L1Constants::clrs::kCL;   // end colored log
-using L1Constants::clrs::kGNb;  // bold green log
-using L1Constants::clrs::kRDb;  // bold red log
+using constants::clrs::kCL;   // end colored log
+using constants::clrs::kGNb;  // bold green log
+using constants::clrs::kRDb;  // bold red log
 
 // ----------------------------------------------------------------------------------------------------------------------
 //
@@ -340,15 +340,15 @@ void L1InitManager::ReadSearchWindows(const std::string& fileName)
       ia >> swBuffer;
       int iStationID = swBuffer.GetStationID();
       int iTrackGrID = swBuffer.GetTrackGroupID();
-      if (iStationID < 0 || iStationID > L1Constants::size::kMaxNstations) {
+      if (iStationID < 0 || iStationID > constants::size::kMaxNstations) {
         errMsg << "\t- wrong station id for entry " << iW << ": " << iStationID << " (should be between 0 and "
-               << L1Constants::size::kMaxNstations << ")\n";
+               << constants::size::kMaxNstations << ")\n";
       }
-      if (iTrackGrID < 0 || iTrackGrID > L1Constants::size::kMaxNtrackGroups) {
+      if (iTrackGrID < 0 || iTrackGrID > constants::size::kMaxNtrackGroups) {
         errMsg << "\t- wrong track group id for entry " << iW << ": " << iTrackGrID << " (should be between 0 and "
-               << L1Constants::size::kMaxNtrackGroups << ")\n";
+               << constants::size::kMaxNtrackGroups << ")\n";
       }
-      fParameters.fSearchWindows[iTrackGrID * L1Constants::size::kMaxNstations + iStationID] = swBuffer;
+      fParameters.fSearchWindows[iTrackGrID * constants::size::kMaxNstations + iStationID] = swBuffer;
     }
     if (errMsg.str().size()) {
       LOG(fatal) << "L1InitManager: some errors occurred while reading search windows: " << errMsg.str();
@@ -508,11 +508,11 @@ void L1InitManager::CheckStationsInfoInit()
     if (!bStationsFinalized) { LOG(fatal) << "At least one of the L1BaseStationInfo objects is not finalized"; }
 
     // (2) Check for maximum allowed number of stations
-    if (fParameters.GetNstationsGeometry() > L1Constants::size::kMaxNstations) {
+    if (fParameters.GetNstationsGeometry() > constants::size::kMaxNstations) {
       LOG(fatal) << "Actual total number of registered stations in geometry (" << fParameters.GetNstationsGeometry()
-                 << ") is larger then possible (" << L1Constants::size::kMaxNstations
+                 << ") is larger then possible (" << constants::size::kMaxNstations
                  << "). Please, select another set of active tracking detectors or recompile the code with enlarged"
-                 << " L1Constants::size::kMaxNstations value";
+                 << " constants::size::kMaxNstations value";
     }
   }
   fInitController.SetFlag(EInitKey::kStationsInfo, ifInitPassed);
diff --git a/reco/L1/L1Algo/L1InitManager.h b/reco/L1/L1Algo/L1InitManager.h
index b73102b3fb8cc744fe4fec04d7197b0c8a42f9b0..65cd46ca053228c860f862665fdd88329822b33e 100644
--- a/reco/L1/L1Algo/L1InitManager.h
+++ b/reco/L1/L1Algo/L1InitManager.h
@@ -17,9 +17,9 @@
 #include <type_traits>
 #include <unordered_map>
 
+#include "CaConstants.h"
 #include "L1BaseStationInfo.h"
 #include "L1CAIteration.h"
-#include "L1Constants.h"
 #include "L1EArray.h"
 #include "L1Field.h"
 #include "L1ObjectInitController.h"
@@ -95,7 +95,7 @@ private:
   using L1FieldFunction_t    = std::function<void(const double (&xyz)[3], double (&B)[3])>;
   using InitController_t     = L1ObjectInitController<static_cast<int>(EInitKey::kEnd), EInitKey>;
   template<typename T>
-  using L1DetectorIDArr_t = std::array<T, L1Constants::size::kMaxNdetectors>;
+  using L1DetectorIDArr_t = std::array<T, constants::size::kMaxNdetectors>;
 
 public:
   /// Default constructor
@@ -227,8 +227,8 @@ public:
   template<size_t Size>
   void SetDetectorNames(const std::array<const char*, Size>& container)
   {
-    static_assert(Size <= L1Constants::size::kMaxNdetectors,
-                  "Please, be ensured that the L1Constants::size::kMaxNdetectors is not lower then the "
+    static_assert(Size <= constants::size::kMaxNdetectors,
+                  "Please, be ensured that the constants::size::kMaxNdetectors is not lower then the "
                   "L1DetectorID::kEND value, provided by your setup");
     std::copy(container.begin(), container.end(), fvDetectorNames.begin());
   }
diff --git a/reco/L1/L1Algo/L1InputData.h b/reco/L1/L1Algo/L1InputData.h
index ae5c8a930b5cdb6d0d1ef701bd35bcae6162863d..75f29174869f2b9c1bd0094afb475887d653f490 100644
--- a/reco/L1/L1Algo/L1InputData.h
+++ b/reco/L1/L1Algo/L1InputData.h
@@ -13,13 +13,14 @@
 #include <boost/serialization/access.hpp>
 #include <boost/serialization/array.hpp>
 
+#include "CaConstants.h"
 #include "L1Hit.h"
 #include "L1Vector.h"
 
 /// Class L1InputData represents a block of the input data to the L1 tracking algorithm per event or time slice.
 /// Filling of the L1InputData is carried out with L1IODataManager class
 ///
-class alignas(L1Constants::misc::kAlignment) L1InputData {
+class alignas(constants::misc::kAlignment) L1InputData {
 public:
   // **************************
   // ** Friend classes list  **
diff --git a/reco/L1/L1Algo/L1Parameters.cxx b/reco/L1/L1Algo/L1Parameters.cxx
index 184c118030be32a4119f6dbc5fb3b52e8517712b..5b74c59a66c43d059421da9b8b34debd3cccbb29 100644
--- a/reco/L1/L1Algo/L1Parameters.cxx
+++ b/reco/L1/L1Algo/L1Parameters.cxx
@@ -206,10 +206,10 @@ void L1Parameters::Print(int /*verbosityLevel*/) const { LOG(info) << ToString()
 //
 std::string L1Parameters::ToString(int verbosity, int indentLevel) const
 {
-  using L1Constants::clrs::kCL;  // color the log text
-  using L1Constants::clrs::kCLb;
-  using L1Constants::clrs::kGN;
-  using L1Constants::clrs::kRD;
+  using constants::clrs::kCL;  // color the log text
+  using constants::clrs::kCLb;
+  using constants::clrs::kGN;
+  using constants::clrs::kRD;
   using std::setfill;
   using std::setw;
   std::stringstream msg {};
@@ -223,11 +223,11 @@ std::string L1Parameters::ToString(int verbosity, int indentLevel) const
 
   msg << " ----- CA parameters list -----\n";
   msg << indent << kCLb << "COMPILE TIME CONSTANTS:\n" << kCL;
-  msg << indent << indentCh << "Bits to code one station:           " << L1Constants::size::kStationBits << '\n';
-  msg << indent << indentCh << "Bits to code one triplet:           " << L1Constants::size::kTripletBits << '\n';
-  msg << indent << indentCh << "Max number of detectors:            " << L1Constants::size::kMaxNdetectors << '\n';
-  msg << indent << indentCh << "Max number of stations:             " << L1Constants::size::kMaxNstations << '\n';
-  msg << indent << indentCh << "Max number of triplets:             " << L1Constants::size::kMaxNtriplets << '\n';
+  msg << indent << indentCh << "Bits to code one station:           " << constants::size::kStationBits << '\n';
+  msg << indent << indentCh << "Bits to code one triplet:           " << constants::size::kTripletBits << '\n';
+  msg << indent << indentCh << "Max number of detectors:            " << constants::size::kMaxNdetectors << '\n';
+  msg << indent << indentCh << "Max number of stations:             " << constants::size::kMaxNstations << '\n';
+  msg << indent << indentCh << "Max number of triplets:             " << constants::size::kMaxNtriplets << '\n';
   msg << indent << kCLb << "RUNTIME CONSTANTS:\n" << kCL;
   msg << indent << indentCh << "Random seed:                        " << fRandomSeed << '\n';
   msg << indent << indentCh << "Max number of doublets per singlet: " << fMaxDoubletsPerSinglet << '\n';
@@ -243,13 +243,13 @@ std::string L1Parameters::ToString(int verbosity, int indentLevel) const
   }
   msg << indent << indentCh << kCLb << "NUMBER OF STATIONS:\n" << kCL;
   msg << indent << indentCh << indentCh << "Number of stations (Geometry): ";
-  for (int iDet = 0; iDet < L1Constants::size::kMaxNdetectors; ++iDet) {
+  for (int iDet = 0; iDet < constants::size::kMaxNdetectors; ++iDet) {
     msg << setw(2) << setfill(' ') << this->GetNstationsGeometry(static_cast<L1DetectorID>(iDet)) << ' ';
   }
   msg << " | total = " << setw(2) << setfill(' ') << this->GetNstationsGeometry();
   msg << '\n';
   msg << indent << indentCh << indentCh << "Number of stations (Active):   ";
-  for (int iDet = 0; iDet < L1Constants::size::kMaxNdetectors; ++iDet) {
+  for (int iDet = 0; iDet < constants::size::kMaxNdetectors; ++iDet) {
     msg << setw(2) << setfill(' ') << this->GetNstationsActive(static_cast<L1DetectorID>(iDet)) << ' ';
   }
   msg << " | total = " << setw(2) << setfill(' ') << this->GetNstationsActive();
diff --git a/reco/L1/L1Algo/L1Parameters.h b/reco/L1/L1Algo/L1Parameters.h
index 4b0a650f7f6861f7c7bacf26defb9445c4b8aa1e..5b27bc361f538aee93b044e8d939762d1360dc76 100644
--- a/reco/L1/L1Algo/L1Parameters.h
+++ b/reco/L1/L1Algo/L1Parameters.h
@@ -18,8 +18,8 @@
 #include <type_traits>
 #include <utility>
 
+#include "CaConstants.h"
 #include "L1CAIteration.h"
-#include "L1Constants.h"
 #include "L1Material.h"
 #include "L1SearchWindow.h"
 #include "L1Station.h"
@@ -31,15 +31,15 @@ enum class L1DetectorID;
 
 /// Type definitions for used containers
 using L1IterationsContainer_t = L1Vector<L1CAIteration>;
-using L1StationsContainer_t   = std::array<L1Station, L1Constants::size::kMaxNstations>;
-using L1MaterialContainer_t   = std::array<L1Material, L1Constants::size::kMaxNstations>;
+using L1StationsContainer_t   = std::array<L1Station, constants::size::kMaxNstations>;
+using L1MaterialContainer_t   = std::array<L1Material, constants::size::kMaxNstations>;
 
 
 /// Class L1Parameters represents a container for all external parameters of the L1 tracking algorithm,
 /// including geometry parameters and physics cuts. The instance of the L1Parameters is constructed inside
 /// L1InitManager class and then moved to the L1Algo instance.
 ///
-class alignas(L1Constants::misc::kAlignment) L1Parameters {
+class alignas(constants::misc::kAlignment) L1Parameters {
 
   // ********************************
   // ** Friend classes declaration **
@@ -49,7 +49,7 @@ class alignas(L1Constants::misc::kAlignment) L1Parameters {
 
   using L1DetectorID_t = std::underlying_type_t<L1DetectorID>;
   template<typename T>
-  using StationArray_t = std::array<T, L1Constants::size::kMaxNstations>;
+  using StationArray_t = std::array<T, constants::size::kMaxNstations>;
 
 public:
   /// Default constructor
@@ -144,7 +144,7 @@ public:
   {
     assert(iStation < fNstationsActiveTotal && iStation > 0);
     assert(iTrackGr < int(fCAIterations.size()));
-    return fSearchWindows[iTrackGr * L1Constants::size::kMaxNstations + iStation];
+    return fSearchWindows[iTrackGr * constants::size::kMaxNstations + iStation];
   }
 
   /// @brief Gets reference to the array of station thickness map
@@ -221,41 +221,41 @@ private:
   unsigned int fMaxDoubletsPerSinglet {150};  ///< Upper-bound cut on max number of doublets per one singlet
   unsigned int fMaxTripletPerDoublets {15};   ///< Upper-bound cut on max number of triplets per one doublet
 
-  alignas(L1Constants::misc::kAlignment) L1IterationsContainer_t fCAIterations {};  ///< L1 tracking iterations vector
+  alignas(constants::misc::kAlignment) L1IterationsContainer_t fCAIterations {};  ///< L1 tracking iterations vector
 
   /*************************
    ** Geometry parameters **
    *************************/
   /// Target position
-  alignas(L1Constants::misc::kAlignment) std::array<fvec, /*nDimensions*/ 3> fTargetPos {L1Utils::kNaN, L1Utils::kNaN,
-                                                                                         L1Utils::kNaN};
+  alignas(constants::misc::kAlignment) std::array<fvec, /*nDimensions*/ 3> fTargetPos {L1Utils::kNaN, L1Utils::kNaN,
+                                                                                       L1Utils::kNaN};
 
   /// Field value object at primary vertex (between target and the first station)
-  alignas(L1Constants::misc::kAlignment) L1FieldValue fVertexFieldValue {};
+  alignas(constants::misc::kAlignment) L1FieldValue fVertexFieldValue {};
 
   /// Field region object at primary vertex (between target and the first station)
-  alignas(L1Constants::misc::kAlignment) L1FieldRegion fVertexFieldRegion {};
+  alignas(constants::misc::kAlignment) L1FieldRegion fVertexFieldRegion {};
 
   /// Array of stations
-  alignas(L1Constants::misc::kAlignment) L1StationsContainer_t fStations {};
+  alignas(constants::misc::kAlignment) L1StationsContainer_t fStations {};
 
   /// Array of station thickness map
-  alignas(L1Constants::misc::kAlignment) L1MaterialContainer_t fThickMap {};
+  alignas(constants::misc::kAlignment) L1MaterialContainer_t fThickMap {};
 
   // ** Station layout arrays **
   /// @brief First index of the station on the particular detector
   /// The last element of the array corresponds to the total number of geometry stations
-  alignas(L1Constants::misc::kAlignment) std::array<int, L1Constants::size::kMaxNdetectors + 1> fvFirstGeoId {};
+  alignas(constants::misc::kAlignment) std::array<int, constants::size::kMaxNdetectors + 1> fvFirstGeoId {};
 
   /// @brief Map of (local, det) to geo indices
   ///
   /// @note Usage:
   ///      iStGeo = fvLocaToGeoIdMap[fvFirstGeoId[iDet] + iStLocal];
   ///      geo index.
-  alignas(L1Constants::misc::kAlignment) StationArray_t<int> fvLocalToGeoIdMap {};
+  alignas(constants::misc::kAlignment) StationArray_t<int> fvLocalToGeoIdMap {};
 
   /// @brief Map of geo to (local, det) indices
-  alignas(L1Constants::misc::kAlignment) StationArray_t<std::pair<L1DetectorID, int>> fvGeoToLocalIdMap {};
+  alignas(constants::misc::kAlignment) StationArray_t<std::pair<L1DetectorID, int>> fvGeoToLocalIdMap {};
 
   /// @brief Map of geo to active indices
   ///
@@ -264,26 +264,25 @@ private:
   /// @example Let stations 1 and 4 be inactive. Then:
   ///   geometry index:  0  1  2  3  4  5  6  7  8  9  0  0  0  0
   ///   active index:    0 -1  1  2 -1  3  4  5  6  7  0  0  0  0
-  alignas(L1Constants::misc::kAlignment) StationArray_t<int> fvGeoToActiveMap {};
+  alignas(constants::misc::kAlignment) StationArray_t<int> fvGeoToActiveMap {};
 
   /// @brief Map of active to geo indices
-  alignas(L1Constants::misc::kAlignment) StationArray_t<int> fvActiveToGeoMap {};
+  alignas(constants::misc::kAlignment) StationArray_t<int> fvActiveToGeoMap {};
 
 
-  alignas(L1Constants::misc::kAlignment) int fNstationsActiveTotal = -1;  ///< total number of active tracking stations
+  alignas(constants::misc::kAlignment) int fNstationsActiveTotal = -1;  ///< total number of active tracking stations
 
 
   /// @brief Map of search windows vs. active station global index and tracks group
   ///
   /// The tracks group can be defined by minimum momentum (fast/all tracks), origin (primary/secondary) and particle
   /// type (electron, muon, all). Other options also can be added
-  alignas(L1Constants::misc::kAlignment)
-    std::array<L1SearchWindow, L1Constants::size::kMaxNstations* L1Constants::size::kMaxNtrackGroups> fSearchWindows =
-      {};
+  alignas(constants::misc::kAlignment)
+    std::array<L1SearchWindow, constants::size::kMaxNstations* constants::size::kMaxNtrackGroups> fSearchWindows = {};
 
   int fGhostSuppression = 0;  ///< flag: if true, ghost tracks are suppressed
   int fRandomSeed       = 1;  ///< random seed
-  float fDefaultMass    = L1Constants::phys::kMuonMass;
+  float fDefaultMass    = constants::phys::kMuonMass;
 
   // ***************************
   // ** Flags for development **
diff --git a/reco/L1/L1Algo/L1TrackFitter.cxx b/reco/L1/L1Algo/L1TrackFitter.cxx
index 8414ac51eed82b8c9aef84f1745d633c13d2bb64..b594b4eb7b4b9500d7e273ed82a64992a8bf4cd8 100644
--- a/reco/L1/L1Algo/L1TrackFitter.cxx
+++ b/reco/L1/L1Algo/L1TrackFitter.cxx
@@ -49,14 +49,14 @@ void L1Algo::L1KFTrackFitter()
 
   // Spatial-time position of a hit vs. station and track in the portion
 
-  fvec x[L1Constants::size::kMaxNstations];     // Hit position along the x-axis [cm]
-  fvec y[L1Constants::size::kMaxNstations];     // Hit position along the y-axis [cm]
-  L1XYMeasurementInfo cov_xy[L1Constants::size::kMaxNstations];  // Covariance matrix for x,y
+  fvec x[constants::size::kMaxNstations];                      // Hit position along the x-axis [cm]
+  fvec y[constants::size::kMaxNstations];                      // Hit position along the y-axis [cm]
+  L1XYMeasurementInfo cov_xy[constants::size::kMaxNstations];  // Covariance matrix for x,y
 
-  fvec z[L1Constants::size::kMaxNstations];  // Hit position along the z-axis (precised) [cm]
+  fvec z[constants::size::kMaxNstations];  // Hit position along the z-axis (precised) [cm]
 
-  fvec time[L1Constants::size::kMaxNstations];  // Hit time [ns]
-  fvec dt2[L1Constants::size::kMaxNstations];   // Hit time uncertainty [ns] squared
+  fvec time[constants::size::kMaxNstations];  // Hit time [ns]
+  fvec dt2[constants::size::kMaxNstations];   // Hit time uncertainty [ns] squared
 
   fvec x_first;
   fvec y_first;
@@ -75,9 +75,9 @@ void L1Algo::L1KFTrackFitter()
   fvec dt2_last;
   //  fvec dt2_lst;  /// TODO: Why are there two different variables for the time error on the last station?
 
-  fvec By[L1Constants::size::kMaxNstations];
-  fmask w[L1Constants::size::kMaxNstations];
-  fmask w_time[L1Constants::size::kMaxNstations];  // !!!
+  fvec By[constants::size::kMaxNstations];
+  fmask w[constants::size::kMaxNstations];
+  fmask w_time[constants::size::kMaxNstations];  // !!!
 
   fvec y_temp;
   fvec x_temp;
@@ -87,10 +87,10 @@ void L1Algo::L1KFTrackFitter()
   fvec z_start;
   fvec z_end;
 
-  L1FieldValue fB[L1Constants::size::kMaxNstations], fB_temp _fvecalignment;
+  L1FieldValue fB[constants::size::kMaxNstations], fB_temp _fvecalignment;
 
 
-  fvec ZSta[L1Constants::size::kMaxNstations];
+  fvec ZSta[constants::size::kMaxNstations];
   for (int ista = 0; ista < nStations; ista++) {
     ZSta[ista]       = sta[ista].fZ;
     cov_xy[ista].C00 = 1.f;
@@ -124,8 +124,8 @@ void L1Algo::L1KFTrackFitter()
 
     for (int iVec = 0; iVec < nTracks_SIMD; iVec++) {
 
-      int nHitsTrack = t[iVec]->NHits;
-      int iSta[L1Constants::size::kMaxNstations];
+      int nHitsTrack = t[iVec]->fNofHits;
+      int iSta[constants::size::kMaxNstations];
 
       for (int ih = 0; ih < nHitsTrack; ih++) {
 
@@ -286,13 +286,13 @@ void L1Algo::L1KFTrackFitter()
       if (kGlobal == fTrackingMode) { Tf.qp = fitpv.Tr().qp; }
 
       for (int iVec = 0; iVec < nTracks_SIMD; iVec++) {
-        Tf.copyToArrays(iVec, t[iVec]->TFirst, t[iVec]->CFirst);
-        t[iVec]->chi2 = Tf.chi2[iVec];
-        t[iVec]->NDF  = (int) Tf.NDF[iVec];
+        Tf.copyToArrays(iVec, t[iVec]->fParFirst, t[iVec]->fCovFirst);
+        t[iVec]->fChi2 = Tf.chi2[iVec];
+        t[iVec]->fNDF  = (int) Tf.NDF[iVec];
       }
 
       for (int iVec = 0; iVec < nTracks_SIMD; iVec++) {
-        fitpv.Tr().copyToArrays(iVec, t[iVec]->Tpv, t[iVec]->Cpv);
+        fitpv.Tr().copyToArrays(iVec, t[iVec]->fParPV, t[iVec]->fCovPV);
       }
 
       if (iter == 1) { break; }  // only 1.5 iterations
@@ -358,9 +358,9 @@ void L1Algo::L1KFTrackFitter()
       if (kGlobal == fTrackingMode) { Tl.qp = fitpv.Tr().qp; }
 
       for (int iVec = 0; iVec < nTracks_SIMD; iVec++) {
-        Tl.copyToArrays(iVec, t[iVec]->TLast, t[iVec]->CLast);
-        t[iVec]->chi2 = Tl.chi2[iVec];
-        t[iVec]->NDF  = (int) Tl.NDF[iVec];
+        Tl.copyToArrays(iVec, t[iVec]->fParLast, t[iVec]->fCovLast);
+        t[iVec]->fChi2 = Tl.chi2[iVec];
+        t[iVec]->fNDF  = (int) Tl.NDF[iVec];
       }
 
     }  // iter
diff --git a/reco/L1/L1Algo/L1TripletConstructor.cxx b/reco/L1/L1Algo/L1TripletConstructor.cxx
index d07a1552a3e5555db010e815a1b832e5cbc499d1..3e4785f8364e15c419bb63468505f729a0c6119a 100644
--- a/reco/L1/L1Algo/L1TripletConstructor.cxx
+++ b/reco/L1/L1Algo/L1TripletConstructor.cxx
@@ -70,7 +70,7 @@ void L1TripletConstructor::InitStations(int istal, int istam, int istar)
   }
 
   fFit.SetParticleMass(fAlgo->GetDefaultParticleMass());
-  if (fAlgo->fpCurrentIteration->GetElectronFlag()) { fFit.SetParticleMass(L1Constants::phys::kElectronMass); }
+  if (fAlgo->fpCurrentIteration->GetElectronFlag()) { fFit.SetParticleMass(constants::phys::kElectronMass); }
   fFit.SetMask(fmask::One());
 
   fIsInitialized = true;
@@ -383,7 +383,7 @@ void L1TripletConstructor::FitTriplets()
   L1Fit fit;
   fit.SetMask(fmask::One());
 
-  if (fAlgo->fpCurrentIteration->GetElectronFlag()) { fit.SetParticleMass(L1Constants::phys::kElectronMass); }
+  if (fAlgo->fpCurrentIteration->GetElectronFlag()) { fit.SetParticleMass(constants::phys::kElectronMass); }
   else {
     fit.SetParticleMass(fAlgo->GetDefaultParticleMass());
   }
diff --git a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
index 329a2c660313b1bb79e839dafdbea3bcd06aacc1..63aebd7ac79566b35e2f84e66b38e7c0e7e28932 100644
--- a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
+++ b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
@@ -239,8 +239,8 @@ void L1AlgoDraw::DrawRecoTracks()
   int curRecoHit                   = 0;
   L1Vector<L1HitIndex_t>& recoHits = algo->fSliceRecoHits;
   for (vector<Track>::iterator it = algo->fSliceRecoTracks.begin(); it != algo->fSliceRecoTracks.end(); ++it) {
-    Track& T   = *it;
-    int nHits  = T.NHits;
+    Track& T  = *it;
+    int nHits = T.fNofHits;
     //     if (nHits > 5) continue; // draw clones
     //     YZ->cd(); YZ->Update();
     //     XZ->cd(); XZ->Update();
diff --git a/reco/L1/catools/CaToolsMCData.h b/reco/L1/catools/CaToolsMCData.h
index a20946c73b5a94dc8fc05cc5feb10b9622681b54..dedd743afcf5e497b5442991db4ee4c61de3d740 100644
--- a/reco/L1/catools/CaToolsMCData.h
+++ b/reco/L1/catools/CaToolsMCData.h
@@ -13,10 +13,10 @@
 #include <numeric>
 #include <string>
 
+#include "CaConstants.h"
 #include "CaToolsLinkKey.h"
 #include "CaToolsMCPoint.h"
 #include "CaToolsMCTrack.h"
-#include "L1Constants.h"
 #include "L1EArray.h"
 #include "L1Vector.h"
 
@@ -184,8 +184,8 @@ namespace ca::tools
     L1Vector<MCPoint> fvPoints = {"ca::tools::MCData::fvPoints"};  ///< Container of points
     L1Vector<MCTrack> fvTracks = {"ca::tools::MCData::fvTracks"};  ///< Container of tracks
 
-    std::array<int, L1Constants::size::kMaxNdetectors> fvNofPointsOrig = {0};  ///< Total number of points by detector
-    std::array<int, L1Constants::size::kMaxNdetectors> fvNofPointsUsed = {0};  ///< Number of points used vs. detector
+    std::array<int, constants::size::kMaxNdetectors> fvNofPointsOrig = {0};  ///< Total number of points by detector
+    std::array<int, constants::size::kMaxNdetectors> fvNofPointsUsed = {0};  ///< Number of points used vs. detector
 
     std::unordered_map<LinkKey, int> fmPointLinkMap = {};  ///< MC point internal index vs. link
     std::unordered_map<LinkKey, int> fmTrackLinkMap = {};  ///< MC track internal index vs. link
diff --git a/reco/L1/catools/CaToolsMCPoint.h b/reco/L1/catools/CaToolsMCPoint.h
index 5b5466dcd2398e78a13079a3e222bb3553b05ef9..a2744b2fce2521b8f4122eeef8b045bd2da8c09a 100644
--- a/reco/L1/catools/CaToolsMCPoint.h
+++ b/reco/L1/catools/CaToolsMCPoint.h
@@ -12,8 +12,8 @@
 
 #include <string>
 
+#include "CaConstants.h"
 #include "CaToolsLinkKey.h"
-#include "L1Constants.h"
 #include "L1Undef.h"
 #include "L1Vector.h"
 
@@ -21,6 +21,8 @@ enum class L1DetectorID;
 
 namespace ca::tools
 {
+  namespace phys = cbm::algo::ca::constants::phys;
+
   /// @brief Class describes a unified MC-point, used in CA tracking QA analysis
   ///
   class MCPoint {
@@ -76,19 +78,19 @@ namespace ca::tools
     /// @brief Gets inverse speed at reference z of station [ns/cm]
     int GetInvSpeed() const
     {
-      return std::sqrt(1. + GetMass() * GetMass() / GetP() / GetP()) * L1Constants::phys::kSpeedOfLightInv;
+      return std::sqrt(1. + GetMass() * GetMass() / GetP() / GetP()) * constants::phys::kSpeedOfLightInv;
     }
 
     /// @brief Gets inverse speed at entrance to station [ns/cm]
     int GetInvSpeedIn() const
     {
-      return std::sqrt(1. + GetMass() * GetMass() / GetPIn() / GetPIn()) * L1Constants::phys::kSpeedOfLightInv;
+      return std::sqrt(1. + GetMass() * GetMass() / GetPIn() / GetPIn()) * constants::phys::kSpeedOfLightInv;
     }
 
     /// @brief Gets inverse speed at exit of station [ns/cm]
     int GetInvSpeedOut() const
     {
-      return std::sqrt(1. + GetMass() * GetMass() / GetPOut() / GetPOut()) * L1Constants::phys::kSpeedOfLightInv;
+      return std::sqrt(1. + GetMass() * GetMass() / GetPOut() / GetPOut()) * constants::phys::kSpeedOfLightInv;
     }
 
     /// @brief Gets container of matched hit indexes
diff --git a/reco/L1/catools/CaToolsMCTrack.h b/reco/L1/catools/CaToolsMCTrack.h
index c2dcd38e57c6ef4496858309574273025201795a..7d11d749f0e4759ffa647c727dec208c27ba187b 100644
--- a/reco/L1/catools/CaToolsMCTrack.h
+++ b/reco/L1/catools/CaToolsMCTrack.h
@@ -17,7 +17,6 @@
 #include <functional>
 
 #include "CaToolsLinkKey.h"
-#include "L1Constants.h"
 #include "L1Undef.h"
 #include "L1Vector.h"
 
diff --git a/reco/L1/catools/CaToolsWindowFinder.cxx b/reco/L1/catools/CaToolsWindowFinder.cxx
index 501bc325746b4f67b02d04ec72f635dacbb84d4c..fe51859d19d4840a5cb97809a39e2dda0242a266 100644
--- a/reco/L1/catools/CaToolsWindowFinder.cxx
+++ b/reco/L1/catools/CaToolsWindowFinder.cxx
@@ -24,13 +24,13 @@
 
 #include <yaml-cpp/yaml.h>
 
+#include "CaConstants.h"
 #include "CaToolsWFExpression.h"
 #include "L1ConfigRW.h"
-#include "L1Constants.h"
 #include "L1SearchWindow.h"
 
 using namespace ca::tools;
-using namespace L1Constants::clrs;  // for colored logs
+using namespace cbm::algo::ca::constants::clrs;  // for colored logs
 
 ClassImp(ca::tools::WindowFinder);
 
diff --git a/reco/L1/qa/CbmCaInputQaBase.cxx b/reco/L1/qa/CbmCaInputQaBase.cxx
index 4b54e7c81b9db7f5fa9715d384d27a6869e295ec..5c5ef2a9fbd50e40caca9835c68f96d42fa43dac 100644
--- a/reco/L1/qa/CbmCaInputQaBase.cxx
+++ b/reco/L1/qa/CbmCaInputQaBase.cxx
@@ -55,10 +55,9 @@
 #include <numeric>
 #include <tuple>
 
-#include "L1Constants.h"
-
-namespace phys = L1Constants::phys;  // from L1Constants.h
+#include "CaConstants.h"
 
+using cbm::algo::ca::constants::phys::kSpeedOfLight;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
@@ -488,7 +487,7 @@ void CbmCaInputQaBase<DetID>::FillHistograms()
       double shiftZ = fHitQaData.GetHitZ() - zMC;  // Difference between hit and point z positions
       double xMCs   = xMC + shiftZ * pxMC / pzMC;
       double yMCs   = yMC + shiftZ * pyMC / pzMC;
-      double tMCs   = tMC + shiftZ / (pzMC * phys::kSpeedOfLight) * sqrt(mass * mass + pMC * pMC);
+      double tMCs   = tMC + shiftZ / (pzMC * kSpeedOfLight) * sqrt(mass * mass + pMC * pMC);
 
       fHitQaData.SetPointTime(tMCs);
       fHitQaData.SetPointX(xMCs);
diff --git a/reco/L1/qa/CbmCaInputQaSts.cxx b/reco/L1/qa/CbmCaInputQaSts.cxx
index e12ab9e10e567e26669179446bdbe2b33e5d8d2b..fd814c877ec11f398f24693d5eadd6c69b983ab4 100644
--- a/reco/L1/qa/CbmCaInputQaSts.cxx
+++ b/reco/L1/qa/CbmCaInputQaSts.cxx
@@ -45,12 +45,8 @@
 #include <numeric>
 #include <tuple>
 
-#include "L1Constants.h"
-
 ClassImp(CbmCaInputQaSts);
 
-namespace phys = L1Constants::phys;  // from L1Constants.h
-
 // ---------------------------------------------------------------------------------------------------------------------
 //
 CbmCaInputQaSts::CbmCaInputQaSts(int verbose, bool isMCUsed) : CbmCaInputQaBase("CbmCaInputQaSts", verbose, isMCUsed)
diff --git a/reco/L1/qa/CbmCaInputQaTof.cxx b/reco/L1/qa/CbmCaInputQaTof.cxx
index a2bb124366c5f7b3bb5a89ee17301433a43bcfb6..71e90d76e81026078062d3a969dd6a213a5eb6d0 100644
--- a/reco/L1/qa/CbmCaInputQaTof.cxx
+++ b/reco/L1/qa/CbmCaInputQaTof.cxx
@@ -36,12 +36,9 @@
 #include <numeric>
 
 #include "CaToolsLinkKey.h"
-#include "L1Constants.h"
 
 ClassImp(CbmCaInputQaTof);
 
-namespace phys = L1Constants::phys;  // from L1Constants.h
-
 // ---------------------------------------------------------------------------------------------------------------------
 //
 CbmCaInputQaTof::CbmCaInputQaTof(int verbose, bool isMCUsed) : CbmCaInputQaBase("CbmCaInputQaTof", verbose, isMCUsed)
diff --git a/reco/L1/qa/CbmCaTrackFitQa.h b/reco/L1/qa/CbmCaTrackFitQa.h
index a76ccd2426c353f44f8f26626bbaa79aee2fec63..cf346daff1ccd7d8a7c03484bfa255ae89f34862 100644
--- a/reco/L1/qa/CbmCaTrackFitQa.h
+++ b/reco/L1/qa/CbmCaTrackFitQa.h
@@ -14,7 +14,7 @@
 
 #include <array>
 
-#include "L1Constants.h"
+#include "CaConstants.h"
 #include "L1EArray.h"
 #include "L1Field.h"
 #include "L1Fit.h"
@@ -199,7 +199,7 @@ namespace cbm::ca
 
     TString fsTitle = "";  ///< Title of the point
 
-    double fMass = L1Constants::phys::kMuonMass;  /// Mass of particle
+    double fMass = constants::phys::kMuonMass;  /// Mass of particle
   };
 
   // *****************************
diff --git a/reco/L1/utils/CbmCaIdealHitProducerDet.h b/reco/L1/utils/CbmCaIdealHitProducerDet.h
index 6393f354c3b6dc416aad60ff3b59e27ae4b7b9cc..60c28c88d08b1ec56e38298eeed3f9430bf2e232 100644
--- a/reco/L1/utils/CbmCaIdealHitProducerDet.h
+++ b/reco/L1/utils/CbmCaIdealHitProducerDet.h
@@ -55,7 +55,6 @@
 
 #include "CaAlgoRandom.h"
 #include "CaUvConverter.h"
-#include "L1Constants.h"
 #include "L1Def.h"
 #include "L1Undef.h"