diff --git a/algo/ca/TrackingChain.cxx b/algo/ca/TrackingChain.cxx
index b5899b3163f7363d3f86dbfcc816a0e681fc5dee..a572e708e203b13204fe6b5c7d2bfbdad74409b2 100644
--- a/algo/ca/TrackingChain.cxx
+++ b/algo/ca/TrackingChain.cxx
@@ -20,11 +20,11 @@
 #include <boost/archive/binary_oarchive.hpp>
 
 #include <fstream>
+#include <set>
 #include <unordered_map>
 
 #include <fmt/format.h>
 #include <xpu/host.h>
-#include <set>
 
 using namespace cbm::algo;
 
@@ -268,13 +268,13 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi
     const auto& [vHits, extHitAddress] = hits.Partition(iPartition);
     // ---- Define data stream and station index
     //int64_t dataStream = dataStreamDet | extHitAddress;
-    int iStLocal  = fpSetup->GetTrackingStation<ca::ToFlesSubsystem<DetID>()>(extHitAddress);
+    int iStLocal = fpSetup->GetTrackingStation<ca::ToFlesSubsystem<DetID>()>(extHitAddress);
     if (iStLocal < 0) {
       continue;  // Station is not used for tracking (e.g. TOF SMtype 5)
     }
 
     int iStActive = fCaFramework.GetParameters().GetStationIndexActive(iStLocal, DetID);
-    
+
     //size_t iOffset = hits.Offsets()[iPartition];
     if (iStActive < 0) {
       continue;  // legit
@@ -294,17 +294,17 @@ void TrackingChain::ReadHits(PartitionedSpan<const ca::HitTypes_t::at<DetID>> hi
       //  switch (extHitAddress) {
       //    case 0x5:
       //      if (!(fabs(hit.Z() - 116.77) < 10)) {
-      //        L_(info) << "AAAAAA!!!!!!!!! " << extHitAddress << ' ' << hit.Z();
+      //        L_(info) << "DBG! " << extHitAddress << ' ' << hit.Z();
       //      }
       //      break;
       //    case 0x15:
       //      if (!(fabs(hit.Z() - 163.8) < 10)) {
-      //        L_(info) << "AAAAAA!!!!!!!!! "  << extHitAddress << ' ' << hit.Z();
+      //        L_(info) << "DBG! "  << extHitAddress << ' ' << hit.Z();
       //      }
       //      break;
       //    case 0x25:
       //      if (!(fabs(hit.Z() - 190.8) < 10)) {
-      //        L_(info) << "AAAAAA!!!!!!!!! "  << extHitAddress << ' ' << hit.Z();
+      //        L_(info) << "DBG! "  << extHitAddress << ' ' << hit.Z();
       //      }
       //      break;
       //  }
diff --git a/algo/ca/TrackingSetup.h b/algo/ca/TrackingSetup.h
index a5f9abf75d7bb7e582c42ec78745f1676e420b04..ba678c4e3bc8429c8aeb40d53faf664b23262b07 100644
--- a/algo/ca/TrackingSetup.h
+++ b/algo/ca/TrackingSetup.h
@@ -54,7 +54,7 @@ namespace cbm::algo
       else if constexpr (DetID == fles::Subsystem::TOF) {
         return fTof.GetTrackingStation(address);
       }
-      return -1; // Default: no station is assigned, hit will be skept !
+      return -1;  // Default: no station is assigned, hit will be skept !
     }
 
     /// \brief Set detector subsystem usage
diff --git a/algo/detectors/sts/TrackingInterface.cxx b/algo/detectors/sts/TrackingInterface.cxx
index fa667fdecf5c88d789b2609b7cbfc295ae00c274..fad68ead46f0add9509b57b26272df92646fa4fe 100644
--- a/algo/detectors/sts/TrackingInterface.cxx
+++ b/algo/detectors/sts/TrackingInterface.cxx
@@ -16,17 +16,14 @@ using cbm::algo::sts::TrackingInterface;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-void TrackingInterface::Init()
-{
-  L_(info) << "STS: TrackingInterface initialization";
-}
+void TrackingInterface::Init() { L_(info) << "STS: TrackingInterface initialization"; }
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
 int TrackingInterface::GetTrackingStation(uint32_t address) const
 {
   // NOTE: SZh 30.04.2024:
-  //   This returns the valid STS station index at least for mCBM at beamtimes 2022 and 2024. There is no 
+  //   This returns the valid STS station index at least for mCBM at beamtimes 2022 and 2024. There is no
   //   guarantie, that it will work for other setups, should be cross-checked.
   return CbmStsAddress::GetElementId(address, kStsUnit);
 }
diff --git a/algo/detectors/sts/TrackingInterface.h b/algo/detectors/sts/TrackingInterface.h
index a037cd2fbc567d03b4d43e42c45bef0291e72dcc..472863eef1ae472ae62f66416d9b1f1cf90853de 100644
--- a/algo/detectors/sts/TrackingInterface.h
+++ b/algo/detectors/sts/TrackingInterface.h
@@ -35,4 +35,4 @@ namespace cbm::algo::sts
     /// \return  Local index of tracking station
     int GetTrackingStation(uint32_t address) const;
   };
-}  // namespace cbm::algo::tof
+}  // namespace cbm::algo::sts
diff --git a/algo/detectors/trd/TrackingInterface.cxx b/algo/detectors/trd/TrackingInterface.cxx
index 7ad681daa4cf197807ea0b41294a7e383b3dcb4a..7b119cb64d96faaae286794f32a74e90af339de5 100644
--- a/algo/detectors/trd/TrackingInterface.cxx
+++ b/algo/detectors/trd/TrackingInterface.cxx
@@ -16,14 +16,8 @@ using cbm::algo::trd::TrackingInterface;
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-void TrackingInterface::Init()
-{
-  L_(info) << "TRD: TrackingInterface initialization";
-}
+void TrackingInterface::Init() { L_(info) << "TRD: TrackingInterface initialization"; }
 
 // ---------------------------------------------------------------------------------------------------------------------
 //
-int TrackingInterface::GetTrackingStation(uint32_t address) const
-{
-  return CbmTrdAddress::GetLayerId(address);
-}
+int TrackingInterface::GetTrackingStation(uint32_t address) const { return CbmTrdAddress::GetLayerId(address); }
diff --git a/algo/detectors/trd/TrackingInterface.h b/algo/detectors/trd/TrackingInterface.h
index 16eedf721d408d015914503a0f6a8ccb04804233..e5f1bf05e8c65a9e5393174a00c13c467b26807a 100644
--- a/algo/detectors/trd/TrackingInterface.h
+++ b/algo/detectors/trd/TrackingInterface.h
@@ -35,4 +35,4 @@ namespace cbm::algo::trd
     /// \return  Local index of tracking station
     int GetTrackingStation(uint32_t address) const;
   };
-}  // namespace cbm::algo::tof
+}  // namespace cbm::algo::trd
diff --git a/core/detectors/tof/CbmTofTrackingInterface.cxx b/core/detectors/tof/CbmTofTrackingInterface.cxx
index 5135054088e8e9fa504b1e9d9a03224063301689..1f11a22e7dfd5d454a7136a8cc5d19eee443868c 100644
--- a/core/detectors/tof/CbmTofTrackingInterface.cxx
+++ b/core/detectors/tof/CbmTofTrackingInterface.cxx
@@ -69,6 +69,9 @@ InitStatus CbmTofTrackingInterface::Init()
   fTofStationZMin.resize(nStations, std::numeric_limits<double>::max());
   fTofStationZMax.resize(nStations, std::numeric_limits<double>::lowest());
 
+  std::vector<std::set<double>> mRpcZ;
+  mRpcZ.resize(nStations, std::set<double>{});
+
   fmAddressToStation.clear();
   for (int iSmType = 0; iSmType < fDigiBdfPar->GetNbSmTypes(); ++iSmType) {
     for (int iSm = 0; iSm < fDigiBdfPar->GetNbSm(iSmType); ++iSm) {
@@ -99,6 +102,7 @@ InitStatus CbmTofTrackingInterface::Init()
         if (5 == iSmType) { continue; }  // Skip Bmon
         if (iStation < 0) { continue; }
 
+        mRpcZ[iStation].insert(chPosZ);
         fTofStationZ[iStation] += chPosZ;
         // FIXME: Sizes of stations are incorrect
         if (chPosZ > fTofStationZMax[iStation]) { fTofStationZMax[iStation] = chPosZ; }
@@ -114,7 +118,7 @@ InitStatus CbmTofTrackingInterface::Init()
   }
 
   /// Get the average values
-  for (int iSt = 0; iSt < this->GetNtrackingStations(); ++iSt) {
+  for (int iSt = 0; iSt < nStations; ++iSt) {
     fTofStationZ[iSt] = fTofStationZ[iSt] / nTofStationModules[iSt];
   }
 
diff --git a/core/detectors/tof/CbmTofTrackingInterface.h b/core/detectors/tof/CbmTofTrackingInterface.h
index 5e7b06eca2764e5e3184e0d34cb5f77196f93746..515bed959ab850d2bafbc85c72db6f87cfe13db7 100644
--- a/core/detectors/tof/CbmTofTrackingInterface.h
+++ b/core/detectors/tof/CbmTofTrackingInterface.h
@@ -129,12 +129,12 @@ public:
   /// 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) + 5.; }
+  double GetZmax(int stationId) const { return fTofStationZMax[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] - 0.5; }
 
   /// @brief  Check if station provides time measurements
   /// @param  stationId  Tracking station ID in the setup (NOTE: must be in range [0..GetNstations()-1])
diff --git a/macro/beamtime/mcbm2024/CMakeLists.txt b/macro/beamtime/mcbm2024/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..56a2a539ab95c2c89735c29663c9eae51a8f17bd
--- /dev/null
+++ b/macro/beamtime/mcbm2024/CMakeLists.txt
@@ -0,0 +1,26 @@
+
+# ROOT macros, par files, documentation files, bash scripts
+Install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+        DESTINATION share/cbmroot/macro/beamtime
+        FILES_MATCHING PATTERN "*.C"
+                       PATTERN "*.par"
+                       PATTERN "*.md"
+                       PATTERN "*.sh"
+       )
+# # RICH calibration file, resolve symlink to get the full file
+# Get_filename_component(_resolvedRichFile ${CMAKE_CURRENT_SOURCE_DIR}/icd_offset_it_0.data REALPATH)
+# Install(FILES ${_resolvedRichFile}
+#         DESTINATION share/cbmroot/macro/beamtime/mcbm2022
+#        )
+# 
+# # SLURM scripts, bash scripts
+# Install(DIRECTORY online
+#         DESTINATION share/cbmroot/macro/beamtime/mcbm2022
+#         FILES_MATCHING PATTERN "*.sbatch"
+#                        PATTERN "*.sh"
+#         )
+# 
+# # Just the empty folder for output
+# Install(DIRECTORY data
+#         DESTINATION share/cbmroot/macro/beamtime/mcbm2022
+#         PATTERN "*" EXCLUDE)