From 1741e4ac280acdbff36c79422bb234fee86f8cbc Mon Sep 17 00:00:00 2001
From: "se.gorbunov" <se.gorbunov@gsi.de>
Date: Thu, 12 Oct 2023 23:20:45 +0000
Subject: [PATCH] Ca: move L1Triplet class to /algo

---
 algo/ca/core/CMakeLists.txt                   |   2 +
 algo/ca/core/data/CaTriplet.cxx               |  25 ++++
 algo/ca/core/data/CaTriplet.h                 | 117 ++++++++++++++++++
 reco/L1/CMakeLists.txt                        |   1 -
 reco/L1/L1Algo/L1Algo.h                       |  12 +-
 reco/L1/L1Algo/L1CaTrackFinderSlice.cxx       |  12 +-
 reco/L1/L1Algo/L1CloneMerger.h                |   6 +-
 reco/L1/L1Algo/L1Triplet.cxx                  |  18 ---
 reco/L1/L1Algo/L1Triplet.h                    | 109 ----------------
 reco/L1/L1Algo/L1TripletConstructor.h         |   6 +-
 reco/L1/L1Algo/utils/L1AlgoDraw.cxx           |   6 +-
 reco/L1/L1Algo/utils/L1AlgoDraw.h             |   4 +-
 .../finder/CbmL1RichENNRingFinderParallel.cxx |   4 +-
 13 files changed, 169 insertions(+), 153 deletions(-)
 create mode 100644 algo/ca/core/data/CaTriplet.cxx
 create mode 100644 algo/ca/core/data/CaTriplet.h
 delete mode 100644 reco/L1/L1Algo/L1Triplet.cxx
 delete mode 100644 reco/L1/L1Algo/L1Triplet.h

diff --git a/algo/ca/core/CMakeLists.txt b/algo/ca/core/CMakeLists.txt
index c43f891688..9af82d63e4 100644
--- a/algo/ca/core/CMakeLists.txt
+++ b/algo/ca/core/CMakeLists.txt
@@ -11,6 +11,7 @@ set(SRCS
   ${CMAKE_CURRENT_SOURCE_DIR}/data/CaTrack.cxx
   ${CMAKE_CURRENT_SOURCE_DIR}/data/CaTrackParam.cxx
   ${CMAKE_CURRENT_SOURCE_DIR}/data/CaGrid.cxx
+  ${CMAKE_CURRENT_SOURCE_DIR}/data/CaTriplet.cxx
   ${CMAKE_CURRENT_SOURCE_DIR}/pars/CaConfigReader.cxx
   ${CMAKE_CURRENT_SOURCE_DIR}/pars/CaField.cxx
   ${CMAKE_CURRENT_SOURCE_DIR}/pars/CaInitManager.cxx
@@ -58,6 +59,7 @@ install(
     data/CaGridEntry.h
     data/CaGrid.h
     data/CaGridArea.h
+    data/CaTriplet.h
     pars/CaConstants.h
     pars/CaField.h
     pars/CaInitManager.h
diff --git a/algo/ca/core/data/CaTriplet.cxx b/algo/ca/core/data/CaTriplet.cxx
new file mode 100644
index 0000000000..1e6b74c29b
--- /dev/null
+++ b/algo/ca/core/data/CaTriplet.cxx
@@ -0,0 +1,25 @@
+/* Copyright (C) 2019-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Valentina Akishina, Sergey Gorbunov[committer] */
+
+#include "CaTriplet.h"
+
+#include <sstream>
+#include <string>
+
+std::string cbm::algo::ca::Triplet::ToString(int indentLevel) const
+{
+  /// print the triplet parameters
+  std::stringstream ss {};
+  constexpr char indentChar = '\t';
+  std::string indent(indentLevel, indentChar);
+
+  ss << indent << "Triplet: station L/M/R " << GetLSta() << "/" << GetMSta() << "/" << GetRSta() << "\n"
+     << indent << "          hit L/M/R " << fHitL << "/" << fHitM << "/" << fHitR << "\n"
+     << indent << "          level " << fLevel << " first neighbor " << fFirstNeighbour << " Nneighbors "
+     << fNneighbours << "\n"
+     << indent << "          qp " << fQp << " Cqp " << fCqp << " chi2 " << fChi2 << "\n"
+     << indent << "          tx " << fTx << " Ctx " << fCtx << " ty " << fTy << " Cty " << fCty << std::endl;
+
+  return ss.str();
+}
diff --git a/algo/ca/core/data/CaTriplet.h b/algo/ca/core/data/CaTriplet.h
new file mode 100644
index 0000000000..707fe400d0
--- /dev/null
+++ b/algo/ca/core/data/CaTriplet.h
@@ -0,0 +1,117 @@
+/* Copyright (C) 2019-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Valentina Akishina, Sergey Gorbunov[committer] */
+
+/// \file CaTriplet.h
+/// \author Sergey Gorbunov
+/// \author Valentina Akishina
+/// \date 2021-05-18
+
+#pragma once  // include this header only once per compilation unit
+
+#include <string>
+
+#include "CaHit.h"
+#include "CaSimd.h"
+
+namespace cbm::algo::ca
+{
+
+  namespace
+  {
+    using namespace cbm::algo;  // needed to keep 'ca::' prefix in the code
+  }
+
+  /// \brief Triplet class represents a short 3-hits track segment called a "triplet".
+  ///
+  class Triplet {
+  public:
+    /// Default constructor
+    Triplet() = default;
+
+    /// Constructor
+    Triplet(ca::HitIndex_t iHitL, ca::HitIndex_t iHitM, ca::HitIndex_t iHitR, unsigned int iStaL, unsigned int iStaM,
+            unsigned int iStaR, unsigned char Level, unsigned int firstNeighbour, char nNeighbours, fscal Chi2,
+            fscal Qp, fscal Cqp, fscal tx, fscal Ctx, fscal ty, fscal Cty, bool isMomentumFitted)
+      : fChi2(Chi2)
+      , fQp(Qp)
+      , fCqp(Cqp)
+      , fTx(tx)
+      , fCtx(Ctx)
+      , fTy(ty)
+      , fCty(Cty)
+      , fFirstNeighbour(firstNeighbour)
+      , fHitL(iHitL)
+      , fHitM(iHitM)
+      , fHitR(iHitR)
+      , fNneighbours(nNeighbours)
+      , fLevel(Level)
+      , fSta((iStaL << 4) + ((iStaM - iStaL - 1) << 2) + (iStaR - iStaL - 2))
+      , fIsMomentumFitted(isMomentumFitted)
+    {
+    }
+
+    /// Setters and getters
+
+    void SetLevel(unsigned char Level) { fLevel = Level; }
+    unsigned char GetLevel() const { return fLevel; }
+
+    ca::HitIndex_t GetLHit() const { return fHitL; }
+    ca::HitIndex_t GetMHit() const { return fHitM; }
+    ca::HitIndex_t GetRHit() const { return fHitR; }
+
+    void SetNNeighbours(int n) { fNneighbours = n; }
+    int GetNNeighbours() const { return fNneighbours; }
+
+    void SetFNeighbour(unsigned int n) { fFirstNeighbour = n; }
+    unsigned int GetFNeighbour() const { return fFirstNeighbour; }
+
+    fscal GetQp() const { return fQp; }
+    fscal GetChi2() const { return fChi2; }
+    fscal GetTime() const { return -111.; }
+
+    int GetLSta() const { return fSta >> 4; }
+    int GetMSta() const { return ((fSta % 16) >> 2) + GetLSta() + 1; }
+    int GetRSta() const { return (fSta % 4) + GetLSta() + 2; }
+
+    fscal GetCqp() const { return fCqp; }
+    fscal GetTx() const { return fTx; }
+    fscal GetCtx() const { return fCtx; }
+    fscal GetTy() const { return fTy; }
+    fscal GetCty() const { return fCty; }
+
+    bool IsMomentumFitted() const { return fIsMomentumFitted; }
+    void SetIsMomentumFitted(bool val) { fIsMomentumFitted = val; }
+
+    /// String representation of class contents
+    /// \param indentLevel      number of indent characters in the output
+    std::string ToString(int indentLevel = 0) const;
+
+  private:
+    ///-----------------------------------------------------------------------------------------------
+    /// Data members
+
+    fscal fChi2 {0.};  ///< chi^2
+    fscal fQp {0.};    ///< q/p
+    fscal fCqp {0.};   ///< RMS^2 of q/p
+    fscal fTx {0.};    ///< tx at the left hit
+    fscal fCtx {0.};   ///< RMS^2 of tx
+    fscal fTy {0.};    ///< ty at the left hit
+    fscal fCty {0.};   ///< RMS^2 of ty
+
+    unsigned int fFirstNeighbour {0};  ///< ID of the first neighbouring triplet
+    ca::HitIndex_t fHitL {0};          ///< left hit index (16b) in vHits array
+    ca::HitIndex_t fHitM {0};          ///< middle hit index (16b)
+    ca::HitIndex_t fHitR {0};          ///< right hit index (16b)
+    int fNneighbours {0};              ///< n of neighbouring triplets
+
+    /// Triplet level - its possible position on the longest track candidate it belongs to.
+    /// level 0 = rightmost triplet of a track candidate
+    /// level k = k-ths triplet along the track counting upstream, from right to left.
+    unsigned char fLevel {0};
+
+    unsigned short fSta {0};     ///< packed station numbers: staL (12b), staM-1-staL (2b), staR-2-staL (2b)
+    bool fIsMomentumFitted {0};  ///< if the triplet momentum is fitted
+  };
+
+}  // namespace cbm::algo::ca
diff --git a/reco/L1/CMakeLists.txt b/reco/L1/CMakeLists.txt
index 75be450459..89f6a45074 100644
--- a/reco/L1/CMakeLists.txt
+++ b/reco/L1/CMakeLists.txt
@@ -187,7 +187,6 @@ install(FILES CbmL1Counters.h
   L1Algo/L1Assert.h
   L1Algo/L1EventEfficiencies.h
   L1Algo/L1Branch.h
-  L1Algo/L1Triplet.h
   L1Algo/L1Event.h
   L1Algo/L1EventMatch.h
   L1Algo/L1Utils.h
diff --git a/reco/L1/L1Algo/L1Algo.h b/reco/L1/L1Algo/L1Algo.h
index 535dcf0a29..bb90ffd735 100644
--- a/reco/L1/L1Algo/L1Algo.h
+++ b/reco/L1/L1Algo/L1Algo.h
@@ -38,12 +38,12 @@ class L1AlgoDraw;
 #include "CaStation.h"
 #include "CaTrack.h"
 #include "CaTrackParam.h"
+#include "CaTriplet.h"
 #include "CaVector.h"
 #include "L1Branch.h"
 #include "L1CloneMerger.h"
 #include "L1Fit.h"
-#include "L1Triplet.h"
-#include "L1Utils.h"  // ? DEPRECATED ?
+#include "L1Utils.h"
 
 using namespace cbm::algo::ca;  //TODO: remove
 
@@ -125,7 +125,7 @@ public:
 
   // ** Functions, which pack and unpack indexes of station and triplet **
 
-  // TODO: move to L1Triplet class (S.Zharko)
+  // TODO: move to ca::Triplet class (S.Zharko)
   /// Packs station and triplet indices to an unique triplet ID
   /// \param  iStation  Index of station in the active stations array
   /// \param  iTriplet  Index of triplet
@@ -184,7 +184,7 @@ public:
 
   void ReadWindowData();
 
-  void CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best_L, fscal& best_chi2, const L1Triplet* curr_trip,
+  void CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best_L, fscal& best_chi2, const ca::Triplet* curr_trip,
                    L1Branch& curr_tr, unsigned char& curr_L, fscal& curr_chi2, unsigned char min_best_l,
                    L1Branch* new_tr);
 
@@ -266,7 +266,7 @@ public:
   const CbmL1MCTrack* GetMcTrackForWindowHit(int iHit) const;
 
 private:
-  bool checkTripletMatch(const L1Triplet& l, const L1Triplet& r, fscal& dchi2) const;
+  bool checkTripletMatch(const ca::Triplet& l, const ca::Triplet& r, fscal& dchi2) const;
 
   int fNstationsBeforePipe {0};  ///< number of stations before pipe (MVD stations in CBM)
   int fNfieldStations {0};       ///< number of stations in the field region
@@ -317,7 +317,7 @@ public:
   Vector<ca::HitIndex_t> fSliceRecoHits {"L1Algo::fSliceRecoHits"};  ///< packed hits of reconstructed tracks
 
   /// Created triplets vs station index
-  Vector<L1Triplet> fTriplets[constants::size::MaxNstations] {{"L1Algo::fTriplets"}};
+  Vector<ca::Triplet> fTriplets[constants::size::MaxNstations] {{"L1Algo::fTriplets"}};
 
   /// Track candidates created out of adjacent triplets before the final track selection.
   /// The candidates may share any amount of hits.
diff --git a/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx b/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx
index a184e58eac..d775aaa7b2 100644
--- a/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx
+++ b/reco/L1/L1Algo/L1CaTrackFinderSlice.cxx
@@ -60,7 +60,7 @@ using std::cout;
 using std::endl;
 using Track = cbm::algo::ca::Track;
 
-bool L1Algo::checkTripletMatch(const L1Triplet& l, const L1Triplet& r, fscal& dchi2) const
+bool L1Algo::checkTripletMatch(const ca::Triplet& l, const ca::Triplet& r, fscal& dchi2) const
 {
   dchi2 = 1.e20;
 
@@ -388,7 +388,7 @@ void L1Algo::CaTrackFinderSlice()
 
       for (unsigned int it = 0; it < fTriplets[istal].size(); ++it) {
 
-        L1Triplet& tr = fTriplets[istal][it];
+        ca::Triplet& tr = fTriplets[istal][it];
         tr.SetLevel(0);
         tr.SetFNeighbour(0);
         tr.SetNNeighbours(0);
@@ -407,7 +407,7 @@ void L1Algo::CaTrackFinderSlice()
 
         for (unsigned int iN = 0; iN < nNeighbours; ++iN, ++neighTriplet, ++neighLocation) {
 
-          L1Triplet& neighbour = fTriplets[neighStation][neighTriplet];
+          ca::Triplet& neighbour = fTriplets[neighStation][neighTriplet];
 
           fscal dchi2 = 0.;
           if (!checkTripletMatch(tr, neighbour, dchi2)) continue;
@@ -474,7 +474,7 @@ void L1Algo::CaTrackFinderSlice()
 
         for (Tindex itrip = 0; itrip < (Tindex) fTriplets[istaF].size(); ++itrip) {
 
-          L1Triplet& first_trip = (fTriplets[istaF][itrip]);
+          ca::Triplet& first_trip = (fTriplets[istaF][itrip]);
           if (fvHitKeyFlags[fWindowHits[first_trip.GetLHit()].f]
               || fvHitKeyFlags[fWindowHits[first_trip.GetLHit()].b]) {
             continue;
@@ -751,7 +751,7 @@ void L1Algo::CaTrackFinderSlice()
      ****************************************************************/
 
 void L1Algo::CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best_L, fscal& best_chi2,
-                         const L1Triplet* curr_trip, L1Branch& curr_tr, unsigned char& curr_L, fscal& curr_chi2,
+                         const ca::Triplet* curr_trip, L1Branch& curr_tr, unsigned char& curr_L, fscal& curr_chi2,
                          unsigned char min_best_l, L1Branch* new_tr)
 /// recursive search for tracks
 /// input: @ista - station index, @&best_tr - best track for the privious call, @&best_L -
@@ -837,7 +837,7 @@ void L1Algo::CAFindTrack(int ista, L1Branch& best_tr, unsigned char& best_L, fsc
       unsigned int Station = TripletId2Station(ID);
       unsigned int Triplet = TripletId2Triplet(ID);
 
-      const L1Triplet& new_trip = fTriplets[Station][Triplet];
+      const ca::Triplet& new_trip = fTriplets[Station][Triplet];
 
       fscal dchi2 = 0.;
       if (!checkTripletMatch(*curr_trip, new_trip, dchi2)) continue;
diff --git a/reco/L1/L1Algo/L1CloneMerger.h b/reco/L1/L1Algo/L1CloneMerger.h
index 1cba7f6e60..41a16f16a9 100644
--- a/reco/L1/L1Algo/L1CloneMerger.h
+++ b/reco/L1/L1Algo/L1CloneMerger.h
@@ -10,10 +10,10 @@
 #ifndef L1CloneMerger_h
 #define L1CloneMerger_h 1
 
-#include "CaConstants.h"  // TEMPORARY FOR fvec, fscal
-#include "CaHit.h"        // For ca::HitIndex_t
+#include "CaHit.h"   // For ca::HitIndex_t
+#include "CaSimd.h"  // TEMPORARY FOR fvec, fscal
 #include "CaVector.h"
-#include "L1Def.h"
+//#include "L1Def.h"
 
 
 using namespace cbm::algo::ca;  //TODO: remove
diff --git a/reco/L1/L1Algo/L1Triplet.cxx b/reco/L1/L1Algo/L1Triplet.cxx
deleted file mode 100644
index dd61e3236c..0000000000
--- a/reco/L1/L1Algo/L1Triplet.cxx
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Copyright (C) 2019-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
-   SPDX-License-Identifier: GPL-3.0-only
-   Authors: Valentina Akishina, Sergey Gorbunov[committer] */
-
-#include "L1Triplet.h"
-
-#include <iostream>
-
-void L1Triplet::Print()
-{
-  /// print the tracklet parameters
-  std::cout << " Triplet: station L/M/R " << GetLSta() << "/" << GetMSta() << "/" << GetRSta() << "\n"
-            << "          hit L/M/R " << fHitL << "/" << fHitM << "/" << fHitR << "\n"
-            << "          level " << fLevel << " first neighbor " << fFirstNeighbour << " Nneighbors " << fNneighbours
-            << "\n"
-            << "          qp " << fQp << " Cqp " << fCqp << " chi2 " << fChi2 << "\n"
-            << "          tx " << fTx << " Ctx " << fCtx << " ty " << fTy << " Cty " << fCty << std::endl;
-}
diff --git a/reco/L1/L1Algo/L1Triplet.h b/reco/L1/L1Algo/L1Triplet.h
deleted file mode 100644
index c33f8a3a66..0000000000
--- a/reco/L1/L1Algo/L1Triplet.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/* Copyright (C) 2019-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
-   SPDX-License-Identifier: GPL-3.0-only
-   Authors: Valentina Akishina, Sergey Gorbunov[committer] */
-
-#ifndef L1Triplet_h
-#define L1Triplet_h
-
-// @file L1Triplet.h
-// @author Sergey Gorbunov
-// @author Valentina Akishina
-// @date 2021-05-18
-
-#include "CaSimd.h"
-
-namespace
-{
-  using namespace cbm::algo;
-  using namespace cbm::algo::ca;  // TODO: remove
-}
-
-/// L1Triplet class represents a short 3-hit track segment called a "triplet".
-///
-class L1Triplet {
-public:
-  /// default constructor
-  L1Triplet() = default;
-
-  /// constructor
-  L1Triplet(unsigned int iHitL, unsigned int iHitM, unsigned int iHitR, unsigned int iStaL, unsigned int iStaM,
-            unsigned int iStaR, unsigned char Level, unsigned int firstNeighbour, char nNeighbours, fscal Chi2,
-            fscal Qp, fscal Cqp, fscal tx, fscal Ctx, fscal ty, fscal Cty, bool isMomentumFitted)
-    : fChi2(Chi2)
-    , fQp(Qp)
-    , fCqp(Cqp)
-    , fTx(tx)
-    , fCtx(Ctx)
-    , fTy(ty)
-    , fCty(Cty)
-    , fFirstNeighbour(firstNeighbour)
-    , fHitL(iHitL)
-    , fHitM(iHitM)
-    , fHitR(iHitR)
-    , fNneighbours(nNeighbours)
-    , fLevel(Level)
-    , fSta((iStaL << 4) + ((iStaM - iStaL - 1) << 2) + (iStaR - iStaL - 2))
-    , fIsMomentumFitted(isMomentumFitted)
-  {
-  }
-
-  /// Setters and getters
-
-  void SetLevel(unsigned char Level) { fLevel = Level; }
-  unsigned char GetLevel() const { return fLevel; }
-
-  ca::HitIndex_t GetLHit() const { return fHitL; }
-  ca::HitIndex_t GetMHit() const { return fHitM; }
-  ca::HitIndex_t GetRHit() const { return fHitR; }
-
-  void SetNNeighbours(int n) { fNneighbours = n; }
-  int GetNNeighbours() const { return fNneighbours; }
-
-  void SetFNeighbour(unsigned int n) { fFirstNeighbour = n; }
-  unsigned int GetFNeighbour() const { return fFirstNeighbour; }
-
-  fscal GetQp() const { return fQp; }
-  fscal GetChi2() const { return fChi2; }
-  fscal GetTime() const { return -111.; }
-
-  int GetLSta() const { return fSta >> 4; }
-  int GetMSta() const { return ((fSta % 16) >> 2) + GetLSta() + 1; }
-  int GetRSta() const { return (fSta % 4) + GetLSta() + 2; }
-
-  fscal GetCqp() const { return fCqp; }
-  fscal GetTx() const { return fTx; }
-  fscal GetCtx() const { return fCtx; }
-  fscal GetTy() const { return fTy; }
-  fscal GetCty() const { return fCty; }
-
-  bool IsMomentumFitted() const { return fIsMomentumFitted; }
-  void SetIsMomentumFitted(bool val) { fIsMomentumFitted = val; }
-
-  /// print the tracklet parameters
-  void Print();
-
-private:
-  fscal fChi2 = 0.f;  ///< chi^2
-  fscal fQp   = 0.f;  ///< q/p
-  fscal fCqp  = 0.f;  ///< RMS of q/p
-  fscal fTx   = 0.f;  ///< tx at the left hit
-  fscal fCtx  = 0.f;  ///< RMS of tx
-  fscal fTy   = 0.f;  ///< ty at the left hit
-  fscal fCty  = 0.f;  ///< RMS of ty
-
-  unsigned int fFirstNeighbour = 0;  ///< ID of the first neighbouring triplet
-  ca::HitIndex_t fHitL         = 0;  ///< left hit index (16b) in vHits array
-  ca::HitIndex_t fHitM         = 0;  ///< middle hit index (16b)
-  ca::HitIndex_t fHitR         = 0;  ///< right hit index (16b)
-  int fNneighbours             = 0;  ///< n of neighbouring triplets
-
-  /// Triplet level - its possible position on the longest track candidate it belongs to.
-  /// level 0 = rightmost triplet of a track candidate
-  /// level k = k-ths triplet along the track counting upstream, from right to left.
-  unsigned char fLevel = 0;
-
-  unsigned short fSta    = 0;  ///< packed station numbers: staL (12b), staM-1-staL (2b), staR-2-staL (2b)
-  bool fIsMomentumFitted = 0;  ///< if the triplet momentum is fitted
-};
-
-#endif
diff --git a/reco/L1/L1Algo/L1TripletConstructor.h b/reco/L1/L1Algo/L1TripletConstructor.h
index 3a3eba9fab..bce1a1cea7 100644
--- a/reco/L1/L1Algo/L1TripletConstructor.h
+++ b/reco/L1/L1Algo/L1TripletConstructor.h
@@ -9,10 +9,10 @@
 #include "CaGridEntry.h"
 #include "CaStation.h"
 #include "CaTrackParam.h"
+#include "CaTriplet.h"
 #include "CaVector.h"
 #include "L1Algo.h"
 #include "L1Fit.h"
-#include "L1Triplet.h"
 
 namespace
 {  // TMP!!
@@ -52,7 +52,7 @@ public:
 
   void CreateTripletsForHit(int istal, int istam, int istar, ca::HitIndex_t ihl);
 
-  const Vector<L1Triplet>& GetTriplets() const { return fTriplets; }
+  const Vector<ca::Triplet>& GetTriplets() const { return fTriplets; }
 
   /// Find the doublets. Reformat data in the portion of doublets.
   void FindDoublets();
@@ -108,7 +108,7 @@ private:
   Vector<ca::HitIndex_t> fHitsM_3 {"L1TripletConstructor::fHitsM_3"};
   Vector<ca::HitIndex_t> fHitsR_3 {"L1TripletConstructor::fHitsR_3"};
 
-  Vector<L1Triplet> fTriplets {"L1TripletConstructor::fTriplets"};
+  Vector<ca::Triplet> fTriplets {"L1TripletConstructor::fTriplets"};
 
   L1Fit fFit;
 
diff --git a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
index 1886583885..17da462b57 100644
--- a/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
+++ b/reco/L1/L1Algo/utils/L1AlgoDraw.cxx
@@ -304,11 +304,11 @@ void L1AlgoDraw::DrawRecoTracks()
   XYZ->Update();
 }
 
-void L1AlgoDraw::DrawTriplets(vector<L1Triplet>& triplets, const ca::HitIndex_t* realIHit)
+void L1AlgoDraw::DrawTriplets(vector<ca::Triplet>& triplets, const ca::HitIndex_t* realIHit)
 {
-  //   vector <L1Triplet> triplets = algo->vTriplets;
+  //   vector <ca::Triplet> triplets = algo->vTriplets;
   for (unsigned int iTrip = 0; iTrip < triplets.size(); iTrip++) {
-    L1Triplet& trip = triplets[iTrip];
+    ca::Triplet& trip = triplets[iTrip];
 
     unsigned int iLHit = trip.GetLHit();
     iLHit              = realIHit[iLHit];
diff --git a/reco/L1/L1Algo/utils/L1AlgoDraw.h b/reco/L1/L1Algo/utils/L1AlgoDraw.h
index 326ccbcbd6..a58c2e770a 100644
--- a/reco/L1/L1Algo/utils/L1AlgoDraw.h
+++ b/reco/L1/L1Algo/utils/L1AlgoDraw.h
@@ -12,8 +12,8 @@
 
 #include "CaHit.h"
 #include "CaStation.h"
+#include "CaTriplet.h"
 #include "L1Def.h"
-#include "L1Triplet.h"
 
 namespace
 {
@@ -38,7 +38,7 @@ public:
   void DrawMCTracks();
   void DrawRecoTracks();
 
-  void DrawTriplets(std::vector<L1Triplet>& triplets, const ca::HitIndex_t* realIHit);
+  void DrawTriplets(std::vector<ca::Triplet>& triplets, const ca::HitIndex_t* realIHit);
   void DrawDoublets(std::vector<ca::HitIndex_t>* Doublets_hits,
                     std::map<ca::HitIndex_t, ca::HitIndex_t>* Doublets_start, const int MaxArrSize,
                     ca::HitIndex_t* HitsStartIndex, unsigned int* realIHit);
diff --git a/reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.cxx b/reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.cxx
index 9b18c59912..1a0d3dac3f 100644
--- a/reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.cxx
+++ b/reco/detectors/rich/finder/CbmL1RichENNRingFinderParallel.cxx
@@ -511,7 +511,7 @@ void CbmL1RichENNRingFinderParallel::ENNRingFinder(const int NHits, cbm::algo::c
     if (ca::utils::IsUnlikely(validRing.isEmpty())) continue;
 
       ///////////
-#if 0   // TODO 1
+#if 0  // TODO 1
     {
       ENNRingV &ringV = rings_tmp[nRings_tmp++];
     
@@ -656,7 +656,7 @@ void CbmL1RichENNRingFinderParallel::ENNRingFinder(const int NHits, cbm::algo::c
 #ifdef PRINT_TIMING
     GetTimer("Ring finding: Store ring").Stop();
 #endif  // PRINT_TIMING
-  }     // i_main
+  }  // i_main
 #ifdef PRINT_TIMING
   GetTimer("Ring finding").Stop();
 
-- 
GitLab