diff --git a/core/base/CbmTrackingDetectorInterfaceBase.cxx b/core/base/CbmTrackingDetectorInterfaceBase.cxx
index e8a69dbbd0595ceda1bda2903342add1c68d7f76..8720cf43e9ef4f7242d4cd83831278a5bf33c7f7 100644
--- a/core/base/CbmTrackingDetectorInterfaceBase.cxx
+++ b/core/base/CbmTrackingDetectorInterfaceBase.cxx
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -125,19 +125,6 @@ std::string CbmTrackingDetectorInterfaceBase::ToString() const
     table << setw(10) << IsTimeInfoProvided(iSt) << ' ';
     table << '\n';
   }
-  table << "--------------\n";
-  for (int iSt = 0; iSt < GetNtrackingStations(); ++iSt) {
-    table << setw(5) << iSt << ' ';
-    table << setw(10) << fvStations[iSt].fZref << ' ';
-    table << setw(10) << fvStations[iSt].fZmin << ' ';
-    table << setw(10) << fvStations[iSt].fZmax << ' ';
-    table << setw(10) << fvStations[iSt].fXmin << ' ';
-    table << setw(10) << fvStations[iSt].fXmax << ' ';
-    table << setw(10) << fvStations[iSt].fYmin << ' ';
-    table << setw(10) << fvStations[iSt].fYmax << ' ';
-    table << setw(10) << IsTimeInfoProvided(iSt) << ' ';
-    table << '\n';
-  }
   return table.str();
 }
 
diff --git a/core/base/CbmTrackingDetectorInterfaceBase.h b/core/base/CbmTrackingDetectorInterfaceBase.h
index 0271756774a0e9463dbf82b4d7e21d5186ed2872..d66f152516774e9b6a080fe518635e8614c0eb62 100644
--- a/core/base/CbmTrackingDetectorInterfaceBase.h
+++ b/core/base/CbmTrackingDetectorInterfaceBase.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -67,7 +67,7 @@ public:
   virtual std::string GetDetectorName() const = 0;
 
   /// @brief Gets actual number of stations, provided by the current geometry setup
-  virtual int GetNtrackingStations() const = 0;
+  int GetNtrackingStations() const { return fvStations.size(); }
 
   /// @brief Gets stereo angles of the two independent measured coordinates
   /// @note  The tracking does not use this method. It is only used by the QA task.
@@ -93,27 +93,27 @@ public:
   /// @brief  Gets upper bound of a station along the X-axis
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Size of station along the X-axis [cm]
-  virtual double GetXmax(int stationId) const = 0;
+  double GetXmax(int stationId) const { return fvStations[stationId].fXmax; }
 
   /// @brief  Gets lower bound of a station along the X-axis
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Size of station along the X-axis [cm]
-  virtual double GetXmin(int stationId) const = 0;
+  double GetXmin(int stationId) const { return fvStations[stationId].fXmin; }
 
   /// @brief  Gets upper bound of a station along the Y-axis
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Size of station along the Y-axis [cm]
-  virtual double GetYmax(int stationId) const = 0;
+  double GetYmax(int stationId) const { return fvStations[stationId].fYmax; }
 
   /// @brief  Gets lower bound of a station along the Y-axis
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Size of station along the Y-axis [cm]
-  virtual double GetYmin(int stationId) const = 0;
+  double GetYmin(int stationId) const { return fvStations[stationId].fYmin; }
 
   /// @brief  Gets reference z of the station
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Reference z position of the station [cm]
-  virtual double GetZref(int stationId) const = 0;
+  double GetZref(int stationId) const { return fvStations[stationId].fZref; };
 
   /// @brief  Gets reference z of the detector module (e.g., RPC for TOF)
   /// @param  address  Address of the module
@@ -123,12 +123,12 @@ public:
   /// @brief  Gets min z of the station
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return min Z of the station [cm]
-  virtual double GetZmin(int stationId) const = 0;
+  double GetZmin(int stationId) const { return fvStations[stationId].fZmin; }
 
   /// @brief  Gets max z of the station
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return max Z of the station [cm]
-  virtual double GetZmax(int stationId) const = 0;
+  double GetZmax(int stationId) const { return fvStations[stationId].fZmax; }
 
   /// @brief  Check if station provides time measurements
   /// @param  stationId  Tracking station ID in the setup
@@ -138,7 +138,7 @@ public:
   /// @brief  Gets x,y,t ranges of a CbmPixelHit
   /// @param  hit  A hit
   /// @return range X, Y, T
-  std::tuple<double, double, double> GetHitRanges(const CbmPixelHit& hit) const
+  virtual std::tuple<double, double, double> GetHitRanges(const CbmPixelHit& hit) const
   {
     // by default assume gaussian distributions of errors
     return std::tuple(3.5 * hit.GetDx(), 3.5 * hit.GetDy(), 3.5 * hit.GetTimeError());
@@ -168,6 +168,7 @@ public:
 
   /// @brief Creates volume info from a geo node provided by path
   /// @param path  Path to volume in TGeoManager
+  /// @throw std::runtime_error  If node is not found by path
   VolumeInfo ReadVolume(const TString& path);
 
   std::vector<VolumeInfo> fvStations{};  ///< Geometric properties of stations
diff --git a/core/detectors/much/CbmMuchTrackingInterface.cxx b/core/detectors/much/CbmMuchTrackingInterface.cxx
index 341172164904bc13c6255e029529a42cfbe60efd..60a9f619843cab5050b30bf82cf5085eeeb27d28 100644
--- a/core/detectors/much/CbmMuchTrackingInterface.cxx
+++ b/core/detectors/much/CbmMuchTrackingInterface.cxx
@@ -19,34 +19,21 @@ ClassImp(CbmMuchTrackingInterface)
 
   CbmMuchTrackingInterface* CbmMuchTrackingInterface::fpInstance = nullptr;
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmMuchTrackingInterface::CbmMuchTrackingInterface() : FairTask("CbmMuchTrackingInterface")
 {
   if (!fpInstance) { fpInstance = this; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmMuchTrackingInterface::~CbmMuchTrackingInterface()
 {
   if (fpInstance == this) { fpInstance = nullptr; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
-//
-int CbmMuchTrackingInterface::GetNtrackingStations() const
-{
-  // NOTE: For MuCh detector subsystem, a MuCh layer is assigned as a tracking station! Thus, we here separate names for MuCh stations:
-  // iMuchSt, muchStationId and for the tracking stations - iSt, stationId
-  int nStations = 0;
-  for (int iMuchSt = 0; iMuchSt < fGeoScheme->GetNStations(); ++iMuchSt) {
-    nStations += fGeoScheme->GetStation(iMuchSt)->GetNLayers();
-  }
-  return nStations;
-}
-
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmMuchTrackingInterface::Init()
 {
@@ -106,7 +93,7 @@ InitStatus CbmMuchTrackingInterface::Init()
   return kSUCCESS;
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmMuchTrackingInterface::ReInit()
 {
@@ -114,13 +101,13 @@ InitStatus CbmMuchTrackingInterface::ReInit()
   return Init();
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 void CbmMuchTrackingInterface::SetParContainers() {}
 
-//-------------------------------------------------------------------------------------------------------------------------------------
-//
 
+// ---------------------------------------------------------------------------------------------------------------------
+//
 std::pair<int, int> CbmMuchTrackingInterface::ConvTrackingStationId2MuchId(int traStationId) const
 {
   int muchStation = fFirstTrackingStation.size() - 1;
diff --git a/core/detectors/much/CbmMuchTrackingInterface.h b/core/detectors/much/CbmMuchTrackingInterface.h
index 8449b0b05f85306f0127b2a09384ddd0e6e70939..a9d6163ae0285eefcf8c6dd2b4bedd7338e3a952 100644
--- a/core/detectors/much/CbmMuchTrackingInterface.h
+++ b/core/detectors/much/CbmMuchTrackingInterface.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -56,10 +56,10 @@ public:
   CbmMuchTrackingInterface& operator=(CbmMuchTrackingInterface&&) = delete;
 
   /// @brief FairTask: Init method
-  InitStatus Init();
+  InitStatus Init() override;
 
   /// @brief FairTask: ReInit method
-  InitStatus ReInit();
+  InitStatus ReInit() override;
 
   /// @brief Gets pointer to the instance of the CbmMuchTrackingInterface
   static CbmMuchTrackingInterface* Instance() { return fpInstance; }
@@ -67,33 +67,15 @@ public:
   /// @brief Gets name of this subsystem
   std::string GetDetectorName() const { return "MuCh"; }
 
-  /// @brief Gets actual number of tracking stations, provided by the current geometry setup
-  int GetNtrackingStations() const;
-
-  /// @brief  Gets reference z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Reference z position of the station [cm]
-  double GetZref(int stationId) const { return GetMuchLayer(stationId)->GetZ(); }
-
-  /// @brief  Gets min z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return min Z of the station [cm]
-  double GetZmin(int stationId) const { return GetZref(stationId) - 0.5 * GetMuchLayer(stationId)->GetDz(); }
-
-  /// @brief  Gets max z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return max Z of the station [cm]
-  double GetZmax(int stationId) const { return GetZref(stationId) + 0.5 * GetMuchLayer(stationId)->GetDz(); }
-
   /// @brief  Gets a tracking station of a CbmHit
   /// @param  hit  A pointer to CbmHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const CbmHit* hit) const { return GetTrackingStationIndex(hit->GetAddress()); }
+  int GetTrackingStationIndex(const CbmHit* hit) const override { return GetTrackingStationIndex(hit->GetAddress()); }
 
   /// @brief  Gets a tracking station by the address of element
   /// @param  address  Unique element address
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(int address) const
+  int GetTrackingStationIndex(int address) const override
   {
     return fFirstTrackingStation.at(CbmMuchGeoScheme::GetStationIndex(address))
            + CbmMuchGeoScheme::GetLayerIndex(address);
@@ -102,50 +84,29 @@ public:
   /// @brief  Gets a tracking station of a FairMCPoint
   /// @param  point  A pointer to FairMCHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const FairMCPoint* point) const
+  int GetTrackingStationIndex(const FairMCPoint* point) const override
   {
     return GetTrackingStationIndex(point->GetDetectorID());
   }
 
-  // TODO: SZh 30.08.2023: Provide automatic definintion of bounds
-  /// @brief  Gets upper bound of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmax(int /*stationId*/) const { return 100.; }
-
-  // TODO: SZh 30.08.2023: Provide automatic definintion of bounds
-  /// @brief  Gets lower bound of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmin(int /*stationId*/) const { return -100.; }
-
-  // TODO: SZh 30.08.2023: Provide automatic definintion of bounds
-  /// @brief  Gets upper bound of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmax(int /*stationId*/) const { return 100.; }
-
-  // TODO: SZh 30.08.2023: Provide automatic definintion of bounds
-  /// @brief  Gets lower bound of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmin(int /*stationId*/) const { return -100.; }
-
   /// @brief  Check if station provides time measurements
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Flag: true - station provides time measurements, false - station does not provide time measurements
-  bool IsTimeInfoProvided(int /*stationId*/) const { return true; }
+  bool IsTimeInfoProvided(int /*stationId*/) const override { return true; }
 
   /// @brief  Gets stereo angles of the two independent measured coordinates
   /// @note   The tracking does not use this method. It is only used by the QA task.
   /// @param  address  detector unique identifier
   /// @return [phiU, phiV] - Stereo angles [rad]
-  std::tuple<double, double> GetStereoAnglesSensor(int /*address*/) const { return std::tuple(0., TMath::Pi() / 2.); }
+  std::tuple<double, double> GetStereoAnglesSensor(int /*address*/) const override
+  {
+    return std::tuple(0., TMath::Pi() / 2.);
+  }
 
   /// @brief FairTask: sets parameter containers up
-  void SetParContainers();
+  void SetParContainers() override;
 
-private:
+ private:
   /// @brief  Gets pointer to the TRD module
   /// @param  stationId  Tracking staton ID
   /// @return Pointer to the particular CbmTrdParModDigi object
diff --git a/core/detectors/mvd/CbmMvdTrackingInterface.cxx b/core/detectors/mvd/CbmMvdTrackingInterface.cxx
index eaadd4eeaf492ea9bf287334020570d2bd75ac62..85898f50bdbb0cd8a0c72ca54e954e083ed8742d 100644
--- a/core/detectors/mvd/CbmMvdTrackingInterface.cxx
+++ b/core/detectors/mvd/CbmMvdTrackingInterface.cxx
@@ -21,21 +21,21 @@ ClassImp(CbmMvdTrackingInterface)
 
   CbmMvdTrackingInterface* CbmMvdTrackingInterface::fpInstance = nullptr;
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmMvdTrackingInterface::CbmMvdTrackingInterface() : FairTask("CbmMvdTrackingInterface")
 {
   if (!fpInstance) { fpInstance = this; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmMvdTrackingInterface::~CbmMvdTrackingInterface()
 {
   if (fpInstance == this) { fpInstance = nullptr; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmMvdTrackingInterface::Init()
 {
@@ -66,7 +66,7 @@ InitStatus CbmMvdTrackingInterface::Init()
   return kSUCCESS;
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmMvdTrackingInterface::ReInit()
 {
@@ -74,13 +74,12 @@ InitStatus CbmMvdTrackingInterface::ReInit()
   return Init();
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 void CbmMvdTrackingInterface::SetParContainers() {}
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
-
 int CbmMvdTrackingInterface::GetTrackingStationIndex(const FairMCPoint* point) const
 {
   const CbmMvdPoint* mvdPoint = [&] {
diff --git a/core/detectors/mvd/CbmMvdTrackingInterface.h b/core/detectors/mvd/CbmMvdTrackingInterface.h
index eed072bf09995f05ec12fa1dd27253e3113d3de5..ec899d06a4773dc1986dfc46a571e460ffd00609 100644
--- a/core/detectors/mvd/CbmMvdTrackingInterface.h
+++ b/core/detectors/mvd/CbmMvdTrackingInterface.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -58,9 +58,6 @@ public:
   /// @brief Gets name of this subsystem
   std::string GetDetectorName() const { return "MVD"; }
 
-  /// @brief Gets actual number of tracking stations, provided by the current geometry setup
-  int GetNtrackingStations() const { return fMvdStationPar->GetStationCount(); }
-
   /// --- to be removed --- Gets the tracking station radiation length
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Radiation length [cm]
@@ -74,7 +71,10 @@ public:
   /// @note   The tracking does not use this method. It is only used by the QA task.
   /// @param  address  detector unique identifier
   /// @return [phiU, phiV] - Stereo angles [rad]
-  std::tuple<double, double> GetStereoAnglesSensor(int /*address*/) const { return std::tuple(0., TMath::Pi() / 2.); }
+  std::tuple<double, double> GetStereoAnglesSensor(int /*address*/) const override
+  {
+    return std::tuple(0., TMath::Pi() / 2.);
+  }
 
   /// --- to be removed --- Gets the tracking station thickness along the Z-axis
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
@@ -85,7 +85,7 @@ public:
   /// @brief  Gets a tracking station of a CbmHit
   /// @param  hit  A pointer to CbmHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const CbmHit* hit) const
+  int GetTrackingStationIndex(const CbmHit* hit) const override
   {
     auto hitMvd = [&] {
       if constexpr (kUseDynamicCast) { return dynamic_cast<const CbmMvdHit*>(hit); }
@@ -99,50 +99,16 @@ public:
   /// @brief  Gets a tracking station of a FairMCPoint
   /// @param  point  A pointer to FairMCHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const FairMCPoint* point) const;
+  int GetTrackingStationIndex(const FairMCPoint* point) const override;
 
   /// @brief  Gets a tracking station by the address of element (detectorID in terms of MVD)
   /// @param  detectorId  Unique element address (detectorID in terms of MVD)
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(int detectorId) const { return StationNr(detectorId); }
-
-  /// @brief  Gets upper bound of a tracking station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmax(int stationId) const { return fMvdStationPar->GetWidth(stationId); }
-
-  /// @brief  Gets lower bound of a tracking station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmin(int stationId) const { return -fMvdStationPar->GetWidth(stationId); }
-
-  /// @brief  Gets upper bound of a tracking station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmax(int stationId) const { return fMvdStationPar->GetHeight(stationId); }
-
-  /// @brief  Gets lower bound of a tracking station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmin(int stationId) const { return -fMvdStationPar->GetHeight(stationId); }
-
-  /// @brief  Gets reference z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Reference z position of the station [cm]
-  double GetZref(int stationId) const { return fMvdStationPar->GetZPosition(stationId); }
-
-  /// @brief  Gets max z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return max Z of the station [cm]
-  double GetZmax(int stationId) const { return GetZref(stationId) + 0.5 * fMvdStationPar->GetZThickness(stationId); }
+  int GetTrackingStationIndex(int detectorId) const override { return StationNr(detectorId); }
 
-  /// @brief  Gets min z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return min Z of the station [cm]
-  double GetZmin(int stationId) const { return GetZref(stationId) - 0.5 * fMvdStationPar->GetZThickness(stationId); }
 
   /// @brief FairTask: Init method
-  InitStatus Init();
+  InitStatus Init() override;
 
   /// @brief Gets pointer to the instance of the CbmMvdTrackingInterface
   static CbmMvdTrackingInterface* Instance() { return fpInstance; }
@@ -153,12 +119,12 @@ public:
   bool IsTimeInfoProvided(int /*stationId*/) const { return true; }
 
   /// @brief FairTask: ReInit method
-  InitStatus ReInit();
+  InitStatus ReInit() override;
 
   /// @brief FairTask: sets parameter containers up
-  void SetParContainers();
+  void SetParContainers() override;
 
-private:
+ private:
   static CbmMvdTrackingInterface* fpInstance;  ///< Instance of the class
 
   const CbmMvdStationPar* fMvdStationPar {nullptr};  ///< Pointer to the Mvd station parameters
diff --git a/core/detectors/sts/CbmStsTrackingInterface.cxx b/core/detectors/sts/CbmStsTrackingInterface.cxx
index 5e45e6492651fe3827817ae1580a28980b0e7bab..e3c9533a350da370ef3204e3ba575c3bea377576 100644
--- a/core/detectors/sts/CbmStsTrackingInterface.cxx
+++ b/core/detectors/sts/CbmStsTrackingInterface.cxx
@@ -21,21 +21,21 @@ ClassImp(CbmStsTrackingInterface)
 
   CbmStsTrackingInterface* CbmStsTrackingInterface::fpInstance = nullptr;
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmStsTrackingInterface::CbmStsTrackingInterface() : FairTask("CbmStsTrackingInterface")
 {
   if (!fpInstance) { fpInstance = this; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmStsTrackingInterface::~CbmStsTrackingInterface()
 {
   if (fpInstance == this) { fpInstance = nullptr; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 std::tuple<double, double> CbmStsTrackingInterface::GetStereoAnglesSensor(int address) const
 {
@@ -75,7 +75,7 @@ std::tuple<double, double> CbmStsTrackingInterface::GetStereoAnglesSensor(int ad
   return std::tuple(angleF, angleB);
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmStsTrackingInterface::Init()
 {
@@ -121,7 +121,7 @@ InitStatus CbmStsTrackingInterface::Init()
   return kSUCCESS;
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmStsTrackingInterface::ReInit()
 {
@@ -129,7 +129,7 @@ InitStatus CbmStsTrackingInterface::ReInit()
   return Init();
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 void CbmStsTrackingInterface::SetParContainers()
 {
@@ -148,5 +148,3 @@ void CbmStsTrackingInterface::SetParContainers()
   }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
-//
diff --git a/core/detectors/sts/CbmStsTrackingInterface.h b/core/detectors/sts/CbmStsTrackingInterface.h
index b81307ae3935b8fa31a758399e2b473ee8e4c434..c1a4ae8222b59ebd2a516b5f8c2dfc441ee312b9 100644
--- a/core/detectors/sts/CbmStsTrackingInterface.h
+++ b/core/detectors/sts/CbmStsTrackingInterface.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -51,87 +51,46 @@ public:
   /// @brief Move assignment operator
   CbmStsTrackingInterface& operator=(CbmStsTrackingInterface&&) = delete;
 
-
   /// @brief FairTask: Init method
-  InitStatus Init();
+  InitStatus Init() override;
 
   /// @brief FairTask: ReInit method
-  InitStatus ReInit();
+  InitStatus ReInit() override;
 
   /// @brief Gets pointer to the instance of the CbmStsTrackingInterface class
   static CbmStsTrackingInterface* Instance() { return fpInstance; }
 
   /// @brief Gets name of this subsystem
-  std::string GetDetectorName() const { return "STS"; }
-
-  /// @brief Gets actual number of the tracking stations, provided by the current geometry setup
-  int GetNtrackingStations() const { return CbmStsSetup::Instance()->GetNofStations(); }
+  std::string GetDetectorName() const override { return "STS"; }
 
   /// @brief  Gets stereo angles of the two independent measured coordinates
   /// @note   The tracking does not use this method. It is only used by the QA task.
   /// @param  address  detector unique identifier
   /// @return [phiU, phiV] - Stereo angles [rad]
-  std::tuple<double, double> GetStereoAnglesSensor(int address) const;
+  std::tuple<double, double> GetStereoAnglesSensor(int address) const override;
 
   /// @brief  Gets a tracking station of a CbmHit
   /// @param  hit  A pointer to CbmHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const CbmHit* hit) const { return GetTrackingStationIndex(hit->GetAddress()); }
+  int GetTrackingStationIndex(const CbmHit* hit) const override { return GetTrackingStationIndex(hit->GetAddress()); }
 
   /// @brief  Gets a tracking station by the address of element
   /// @param  address  Unique element address
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(int address) const { return CbmStsSetup::Instance()->GetStationNumber(address); }
+  int GetTrackingStationIndex(int address) const override { return CbmStsSetup::Instance()->GetStationNumber(address); }
 
   /// @brief  Gets a tracking station of a FairMCPoint
   /// @param  point  A pointer to FairMCHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const FairMCPoint* point) const
+  int GetTrackingStationIndex(const FairMCPoint* point) const override
   {
     return GetTrackingStationIndex(point->GetDetectorID());
   }
 
-  /// @brief  Gets upper edge of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmax(int stationId) const { return GetStsStation(stationId)->GetXmax(); }
-
-  /// @brief  Gets lower edge of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmin(int stationId) const { return GetStsStation(stationId)->GetXmin(); }
-
-  /// @brief  Gets max size of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmax(int stationId) const { return GetStsStation(stationId)->GetYmax(); }
-
-  /// @brief  Gets lower edge of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmin(int stationId) const { return GetStsStation(stationId)->GetYmin(); }
-
-  /// @brief  Gets reference Z position of the station: approximately == mean Z of all its component
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Reference z position of station [cm]
-  double GetZref(int stationId) const { return GetStsStation(stationId)->GetZ(); }
-
-  /// @brief  Gets maximal z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return max z position of station [cm]
-  // TODO: calculate from components
-  double GetZmax(int stationId) const { return GetStsStation(stationId)->GetZ() + 2.; }
-
-  /// @brief  Gets minimal z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return min z position of station [cm]
-  // TODO: calculate from components
-  double GetZmin(int stationId) const { return GetStsStation(stationId)->GetZ() - 2.; }
-
   /// @brief  Check if station provides time measurements
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Flag: true - station provides time measurements, false - station does not provide time measurements
-  bool IsTimeInfoProvided(int /*stationId*/) const { return true; }
+  bool IsTimeInfoProvided(int /*stationId*/) const override { return true; }
 
   /// -- to be removed -- Gets station radiation length
   /// \param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
@@ -146,9 +105,9 @@ public:
   [[deprecated]] double GetSensorThickness(int stationId) const { return GetStsStation(stationId)->GetSensorD(); }
 
   /// @brief FairTask: sets parameter containers up
-  void SetParContainers();
+  void SetParContainers() override;
 
-private:
+ private:
   /// @brief  Gets pointer to the STS station object
   /// @param  stationId  Tracking staton ID
   /// @return Pointer to the particular CbmStsStation object
diff --git a/core/detectors/tof/CbmTofTrackingInterface.cxx b/core/detectors/tof/CbmTofTrackingInterface.cxx
index f233c523facba6398f3baf6f87b56d38b7c8bf85..ecc9928db26d3be60435d5f219e8e2dfef8735dc 100644
--- a/core/detectors/tof/CbmTofTrackingInterface.cxx
+++ b/core/detectors/tof/CbmTofTrackingInterface.cxx
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -24,7 +24,7 @@ ClassImp(CbmTofTrackingInterface)
 
   CbmTofTrackingInterface* CbmTofTrackingInterface::fpInstance = nullptr;
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmTofTrackingInterface::CbmTofTrackingInterface() : FairTask("CbmTofTrackingInterface")
 {
@@ -33,7 +33,7 @@ CbmTofTrackingInterface::CbmTofTrackingInterface() : FairTask("CbmTofTrackingInt
   }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmTofTrackingInterface::~CbmTofTrackingInterface()
 {
@@ -42,7 +42,7 @@ CbmTofTrackingInterface::~CbmTofTrackingInterface()
   }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmTofTrackingInterface::Init()
 {
@@ -159,7 +159,7 @@ InitStatus CbmTofTrackingInterface::Init()
   return kSUCCESS;
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmTofTrackingInterface::ReInit()
 {
@@ -167,7 +167,7 @@ InitStatus CbmTofTrackingInterface::ReInit()
   return Init();
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 void CbmTofTrackingInterface::SetParContainers()
 {
diff --git a/core/detectors/tof/CbmTofTrackingInterface.h b/core/detectors/tof/CbmTofTrackingInterface.h
index 365db1e32135e9c3e7eece9826419acfe18e53a3..cc970114be2a9a5bb757f5139e9927398ee51538 100644
--- a/core/detectors/tof/CbmTofTrackingInterface.h
+++ b/core/detectors/tof/CbmTofTrackingInterface.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -53,24 +53,24 @@ class CbmTofTrackingInterface : public FairTask, public CbmTrackingDetectorInter
   /// @brief Gets name of this subsystem
   std::string GetDetectorName() const { return "TOF"; }
 
-  /// @brief Gets actual number of tracking stations, provided by the current geometry setup
-  int GetNtrackingStations() const { return fDigiBdfPar->GetNbTrackingStations(); }
-
   /// @brief  Gets stereo angles of the two independent measured coordinates
   /// @note   The tracking does not use this method. It is only used by the QA task.
   /// @param  address  detector unique identifier
   /// @return [phiU, phiV] - Stereo angles [rad]
-  std::tuple<double, double> GetStereoAnglesSensor(int /*address*/) const { return std::tuple(0., TMath::Pi() / 2.); }
+  std::tuple<double, double> GetStereoAnglesSensor(int /*address*/) const override
+  {
+    return std::tuple(0., TMath::Pi() / 2.);
+  }
 
   /// @brief  Gets a tracking station of a ToF hit
   /// @param  hit  A pointer to ToF hit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const CbmHit* hit) const { return GetTrackingStationIndex(hit->GetAddress()); }
+  int GetTrackingStationIndex(const CbmHit* hit) const override { return GetTrackingStationIndex(hit->GetAddress()); }
 
   /// @brief  Gets a tracking station by the address of element
   /// @param  address  Unique element address
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(int address) const
+  int GetTrackingStationIndex(int address) const override
   {
     int iSt = fDigiBdfPar->GetTrackingStation(CbmTofAddress::GetSmType(address), CbmTofAddress::GetSmId(address),
                                               CbmTofAddress::GetRpcId(address));
@@ -80,80 +80,37 @@ class CbmTofTrackingInterface : public FairTask, public CbmTrackingDetectorInter
   /// @brief  Gets a tracking station of a FairMCPoint
   /// @param  point  A pointer to FairMCHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const FairMCPoint* point) const
+  int GetTrackingStationIndex(const FairMCPoint* point) const override
   {
     return GetTrackingStationIndex(point->GetDetectorID());
   }
 
-  // TODO: SZh. 10.09.2023: Provide automatic selection
-  /// @brief  Gets upper bound of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmax(int /*stationId*/) const { return 100; }
-
-  // TODO: SZh. 10.09.2023: Provide automatic definition
-  /// @brief  Gets lower bound of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmin(int /*stationId*/) const { return -100; }
-
-  // TODO: SZh. 10.09.2023: Provide automatic definition
-  /// @brief  Gets max size of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmax(int /*stationId*/) const { return 100; }
-
-  // TODO: SZh. 10.09.2023: Provide automatic definition
-  /// @brief  Gets max size of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmin(int /*stationId*/) const { return -100; }
-
-  /// @brief  Gets reference z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Reference z position of the station [cm]
-  double GetZref(int stationId) const { return fTofStationZ[stationId]; }
-
   /// @brief  Gets reference z of the detector module (e.g., RPC for TOF)
   /// @param  address  Address of the module
   /// @return Reference z of module (if not defined, the ref z of the station will be returned)
-  double GetZrefModule(int address)
+  double GetZrefModule(int address) override
   {
     auto* pCell = dynamic_cast<CbmTofCell*>(fDigiPar->GetCell(address));
     assert(pCell);
     return pCell->GetZ();
   }
 
-  /// Gets max z of the station
-  /// FIXME: Replace GetZref(stationId) + 5 with fTofStationZMax[stationId] + 0.5
-  /// \param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// \return max Z of the station [cm]
-  //double GetZmax(int stationId) const { return GetZref(stationId) + 5.; }
-  double GetZmax(int stationId) const { return fTofStationZMax[stationId] + .5; }
-
-  /// FIXME: Replace GetZref(stationId) - 5 with fTofStationZMin[stationId] - 0.5
-  /// @brief  Gets min z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return min Z of the station [cm]
-  //double GetZmin(int stationId) const { return GetZref(stationId) - 5.; }
-  double GetZmin(int stationId) const { return fTofStationZMin[stationId] - .5; }
-
   /// @brief  Check if station provides time measurements
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Flag: true - station provides time measurements, false - station does not provide time measurements
-  bool IsTimeInfoProvided(int /*stationId*/) const { return true; }
+  bool IsTimeInfoProvided(int /*stationId*/) const override { return true; }
 
   /// @brief FairTask: Init method
-  InitStatus Init();
+  InitStatus Init() override;
 
   /// @brief Gets pointer to the instance of the CbmTofTrackingInterface
   static CbmTofTrackingInterface* Instance() { return fpInstance; }
 
   /// @brief FairTask: ReInit method
-  InitStatus ReInit();
+  InitStatus ReInit() override;
 
   /// @brief FairTask: sets parameter containers up
-  void SetParContainers();
+  void SetParContainers() override;
 
  private:
   static CbmTofTrackingInterface* fpInstance;  ///< Instance of the class
diff --git a/core/detectors/trd/CbmTrdTrackingInterface.cxx b/core/detectors/trd/CbmTrdTrackingInterface.cxx
index 4477b9d0242aa00d56a7122b2bcde236673b201b..8369859c83b64b426f417c99180385086e6dd02b 100644
--- a/core/detectors/trd/CbmTrdTrackingInterface.cxx
+++ b/core/detectors/trd/CbmTrdTrackingInterface.cxx
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -25,41 +25,22 @@ ClassImp(CbmTrdTrackingInterface)
 
   CbmTrdTrackingInterface* CbmTrdTrackingInterface::fpInstance = nullptr;
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmTrdTrackingInterface::CbmTrdTrackingInterface() : FairTask("CbmTrdTrackingInterface")
 {
   if (!fpInstance) { fpInstance = this; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 CbmTrdTrackingInterface::~CbmTrdTrackingInterface()
 {
   if (fpInstance == this) { fpInstance = nullptr; }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
-int CbmTrdTrackingInterface::GetNtrackingStations() const
-{
-  // NOTE: For TRD detector subsystem, a TRD layer is assigned as a tracking station:
-  int nTrdLayers = 0;
-  auto topNodes  = gGeoManager->GetTopNode()->GetNodes();
-  for (int iTopNode = 0; iTopNode < topNodes->GetEntriesFast(); ++iTopNode) {
-    auto topNode = static_cast<TGeoNode*>(topNodes->At(iTopNode));
-    if (TString(topNode->GetName()).Contains("trd")) {
-      auto layers = topNode->GetNodes();
-      for (int iLayer = 0; iLayer < layers->GetEntriesFast(); ++iLayer) {
-        auto layer = static_cast<TGeoNode*>(layers->At(iLayer));
-        if (TString(layer->GetName()).Contains("layer")) { ++nTrdLayers; }
-      }
-    }
-  }
-  return nTrdLayers;
-}
-
-
 std::tuple<double, double> CbmTrdTrackingInterface::GetStereoAnglesSensor(int address) const
 {
   const CbmTrdParModDigi* par = dynamic_cast<const CbmTrdParModDigi*>(fTrdDigiPar->GetModulePar(address));
@@ -74,6 +55,8 @@ std::tuple<double, double> CbmTrdTrackingInterface::GetStereoAnglesSensor(int ad
   return std::tuple(0., TMath::Pi() / 2.);
 }
 
+// ---------------------------------------------------------------------------------------------------------------------
+//
 std::tuple<double, double, double> CbmTrdTrackingInterface::GetHitRanges(const CbmPixelHit& hit) const
 {
   const CbmTrdHit* trdHit = dynamic_cast<const CbmTrdHit*>(&hit);
@@ -102,7 +85,7 @@ std::tuple<double, double, double> CbmTrdTrackingInterface::GetHitRanges(const C
   return std::tuple(rangeX, rangeY, rangeT);
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmTrdTrackingInterface::Init()
 {
@@ -175,7 +158,7 @@ InitStatus CbmTrdTrackingInterface::Init()
   return kSUCCESS;
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 InitStatus CbmTrdTrackingInterface::ReInit()
 {
@@ -183,7 +166,7 @@ InitStatus CbmTrdTrackingInterface::ReInit()
   return Init();
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
+// ---------------------------------------------------------------------------------------------------------------------
 //
 void CbmTrdTrackingInterface::SetParContainers()
 {
@@ -194,5 +177,3 @@ void CbmTrdTrackingInterface::SetParContainers()
   }
 }
 
-//-------------------------------------------------------------------------------------------------------------------------------------
-//
diff --git a/core/detectors/trd/CbmTrdTrackingInterface.h b/core/detectors/trd/CbmTrdTrackingInterface.h
index 88355618d4d6e6ac7ba43819a4f80119fcd9ed25..16ee4d943f967484bcad02eb7c0570cf240390e3 100644
--- a/core/detectors/trd/CbmTrdTrackingInterface.h
+++ b/core/detectors/trd/CbmTrdTrackingInterface.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2022-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2022-2024 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Sergey Gorbunov, Sergei Zharko [committer] */
 
@@ -50,107 +50,53 @@ class CbmTrdTrackingInterface : public FairTask, public CbmTrackingDetectorInter
   CbmTrdTrackingInterface& operator=(CbmTrdTrackingInterface&&) = delete;
 
   /// @brief Gets name of this subsystem
-  std::string GetDetectorName() const { return "TRD"; }
-
-  /// @brief Gets actual number of tracking stations, provided by the current geometry setup
-  int GetNtrackingStations() const;
+  std::string GetDetectorName() const override { return "TRD"; }
 
   /// @brief  Gets stereo angles of the two independent measured coordinates
   /// @note   The tracking does not use this method. It is only used by the QA task.
   /// @param  address  detector unique identifier
   /// @return [phiU, phiV] - Stereo angles [rad]
-  std::tuple<double, double> GetStereoAnglesSensor(int address) const;
+  std::tuple<double, double> GetStereoAnglesSensor(int address) const override;
 
   /// @brief  Gets a tracking station of a CbmHit
   /// @param  hit  A pointer to CbmHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const CbmHit* hit) const { return GetTrackingStationIndex(hit->GetAddress()); }
+  int GetTrackingStationIndex(const CbmHit* hit) const override { return GetTrackingStationIndex(hit->GetAddress()); }
 
   /// @brief  Gets a tracking station by the address
   /// @param  address  Unique element address
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(int address) const { return CbmTrdAddress::GetLayerId(address); }
+  int GetTrackingStationIndex(int address) const override { return CbmTrdAddress::GetLayerId(address); }
 
   /// @brief  Gets a tracking station of a FairMCPoint
   /// @param  point  A pointer to FairMCHit
   /// @return Local index of the tracking station
-  int GetTrackingStationIndex(const FairMCPoint* point) const
+  int GetTrackingStationIndex(const FairMCPoint* point) const override
   {
     return GetTrackingStationIndex(point->GetDetectorID());
   }
 
-  /// @brief  Gets upper edge of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmax(int stationId) const
-  {
-    const auto module = GetTrdModulePar(stationId);
-    return module->GetX() + module->GetSizeX();
-  }
-
-  /// @brief  Gets lower edge coordinate of a station along the X-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the X-axis [cm]
-  double GetXmin(int stationId) const
-  {
-    const auto module = GetTrdModulePar(stationId);
-    return module->GetX() - module->GetSizeX();
-  }
-
-  /// @brief  Gets upper edge of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmax(int stationId) const
-  {
-    const auto module = GetTrdModulePar(stationId);
-    return module->GetY() + module->GetSizeY();
-  }
-
-  /// @brief  Gets lower edge of a station along the Y-axis
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Size of station along the Y-axis [cm]
-  double GetYmin(int stationId) const
-  {
-    const auto module = GetTrdModulePar(stationId);
-    return module->GetY() - module->GetSizeY();
-  }
-
-  /// @brief  Gets reference z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return Reference z position of the station [cm]
-  double GetZref(int stationId) const { return GetTrdModulePar(stationId)->GetZ(); }
-
-  /// @brief  Gets max z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return max Z of the station [cm]
-  double GetZmax(int stationId) const { return GetZref(stationId) + GetTrdModulePar(stationId)->GetSizeZ(); }
-
-  /// @brief  Gets min z of the station
-  /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
-  /// @return min Z of the station [cm]
-  double GetZmin(int stationId) const { return GetZref(stationId) - GetTrdModulePar(stationId)->GetSizeZ(); }
-
   /// @brief  Check if station provides time measurements
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
   /// @return Flag: true - station provides time measurements, false - station does not provide time measurements
-  bool IsTimeInfoProvided(int /*stationId*/) const { return true; }
+  bool IsTimeInfoProvided(int /*stationId*/) const override { return true; }
 
   /// @brief  Gets x,y,t ranges of a CbmTrdHit
   /// @param  hit  A hit
   /// @return range X, Y, T
-  std::tuple<double, double, double> GetHitRanges(const CbmPixelHit& hit) const;
+  std::tuple<double, double, double> GetHitRanges(const CbmPixelHit& hit) const override;
 
   /// @brief FairTask: Init method
-  InitStatus Init();
+  InitStatus Init() override;
 
   /// @brief Gets pointer to the instance of the CbmTrdTrackingInterface
   static CbmTrdTrackingInterface* Instance() { return fpInstance; }
 
   /// @brief FairTask: ReInit method
-  InitStatus ReInit();
+  InitStatus ReInit() override;
 
   /// @brief  FairTask: sets parameter containers up
-  void SetParContainers();
+  void SetParContainers() override;
 
  private:
   /// @brief  Gets pointer to the TRD module