diff --git a/algo/CMakeLists.txt b/algo/CMakeLists.txt
index 6e2033806a01075c831811b36a00e446db35ad01..60d0bd9993f917ededef158ace472798e6d8043e 100644
--- a/algo/CMakeLists.txt
+++ b/algo/CMakeLists.txt
@@ -135,6 +135,7 @@ set(SRCS
   detectors/rich/ReadoutConfig.cxx
   detectors/rich/Unpack.cxx
   detectors/rich/UnpackMS.cxx
+  global/ParFiles.cxx
   global/Reco.cxx
   global/RecoResultsInputArchive.cxx
   global/RecoResultsOutputArchive.cxx
diff --git a/algo/ca/TrackingChain.cxx b/algo/ca/TrackingChain.cxx
index e44a7341af6bfffcae385f0484485d3c3271cf3a..c5213d0b85f5fd8c8035cd29f077ac5ffa747dea 100644
--- a/algo/ca/TrackingChain.cxx
+++ b/algo/ca/TrackingChain.cxx
@@ -13,6 +13,7 @@
 #include "CaHit.h"
 #include "CaInitManager.h"
 #include "CaParameters.h"
+#include "ParFiles.h"
 #include "compat/OpenMP.h"
 #include "yaml/Yaml.h"
 
@@ -56,7 +57,8 @@ void TrackingChain::Init()
 
 
   // ------ Read tracking chain parameters from the config
-  fConfig = yaml::ReadFromFile<TrackingChainConfig>(Opts().ParamsDir() / "TrackingChainConfig.yaml");
+  ParFiles parFiles(Opts().RunId());
+  fConfig = yaml::ReadFromFile<TrackingChainConfig>(Opts().ParamsDir() / parFiles.ca.mainConfig);
 
   // ------ Read parameters from binary
   auto geomCfgFile = (Opts().ParamsDir() / fConfig.fsGeomConfig).string();
diff --git a/algo/detectors/tof/TrackingInterface.cxx b/algo/detectors/tof/TrackingInterface.cxx
index 7e98e648b1c9aa3273d6880cd7fc10f60926a890..e8a6d0c9a9c6f19318866ecc906f1ff952dd2394 100644
--- a/algo/detectors/tof/TrackingInterface.cxx
+++ b/algo/detectors/tof/TrackingInterface.cxx
@@ -11,6 +11,7 @@
 
 #include "CbmTofAddress.h"
 #include "HitfindSetup.h"
+#include "ParFiles.h"
 #include "fmt/format.h"
 #include "log.hpp"
 
@@ -57,7 +58,8 @@ void TrackingInterface::Init()
     fvTrackingStationId[9] = {1, 2, 3, 4};
   }
   else {
-    auto setup = yaml::ReadFromFile<HitfindSetup>(Opts().ParamsDir() / "TofHitfinderPar.yaml");
+    ParFiles parFiles(Opts().RunId());
+    auto setup = yaml::ReadFromFile<HitfindSetup>(Opts().ParamsDir() / parFiles.tof.hitfinder);
     fvNofSm    = std::move(setup.NbSm);
     fvNofRpc   = std::move(setup.NbRpc);
     assert(fvNofSm.size() == fvNofRpc.size());
diff --git a/algo/global/ParFiles.cxx b/algo/global/ParFiles.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..96285ba4f8d05150cb679d1a3914b8658eee3190
--- /dev/null
+++ b/algo/global/ParFiles.cxx
@@ -0,0 +1,44 @@
+/* Copyright (C) 2024 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Felix Weiglhofer [committer] */
+#include "ParFiles.h"
+
+using namespace cbm::algo;
+
+ParFiles::ParFiles(uint32_t runId)
+{
+  bool is2024 = 2724 <= runId;
+
+  if (is2024) {
+    sts.readout   = "StsReadout_mcbm2024.yaml";
+    sts.chanMask  = "StsChannelMaskSet_mcbm2024.yaml";
+    sts.walkMap   = "StsWalkMap_mcbm2024.yaml";
+    sts.hitfinder = "StsHitfinder_mcbm2024.yaml";
+
+    tof.calibrate = "TofCalibratePar_mcbm2024.yaml";
+    tof.hitfinder = "TofHitfinderPar_mcbm2024.yaml";
+
+    trd.readout     = "TrdReadoutSetup_mcbm2024.yaml";
+    trd.readout2d   = "TrdReadout2DSetup_mcbm2022.yaml";  // TODO: no new readout for TRD2D?
+    trd.hitfinder   = "TrdHitfinderPar_mcbm2024.yaml";
+    trd.hitfinder2d = "TrdHitfinder2DPar_mcbm2024.yaml";
+
+    ca.mainConfig = "TrackingChainConfig_mcbm2024.yaml";
+  }
+  else {  // Assume 2022 setup
+    sts.readout   = "StsReadout_mcbm2022.yaml";
+    sts.chanMask  = "StsChannelMaskSet_mcbm2022.yaml";
+    sts.walkMap   = "StsWalkMap_mcbm2022.yaml";
+    sts.hitfinder = "StsHitfinder_mcbm2022.yaml";
+
+    tof.calibrate = "TofCalibratePar_mcbm2022.yaml";
+    tof.hitfinder = "TofHitfinderPar_mcbm2022.yaml";
+
+    trd.readout     = "TrdReadoutSetup_mcbm2022.yaml";
+    trd.readout2d   = "TrdReadout2DSetup_mcbm2022.yaml";
+    trd.hitfinder   = "TrdHitfinderPar_mcbm2022.yaml";
+    trd.hitfinder2d = "TrdHitfinder2DPar_mcbm2022.yaml";
+
+    ca.mainConfig = "TrackingChainConfig_mcbm2022.yaml";
+  }
+}
diff --git a/algo/global/ParFiles.h b/algo/global/ParFiles.h
new file mode 100644
index 0000000000000000000000000000000000000000..877e06e000c78f960265375d78b910688680706a
--- /dev/null
+++ b/algo/global/ParFiles.h
@@ -0,0 +1,48 @@
+/* Copyright (C) 2024 FIAS Frankfurt Institute for Advanced Studies, Frankfurt / Main
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Felix Weiglhofer [committer] */
+#pragma once
+
+/**
+ * @file ParFiles.h
+ * @brief This file contains the definition of the ParFiles class.
+ */
+
+#include "compat/Filesystem.h"
+
+namespace cbm::algo
+{
+
+  /**
+   * @class ParFiles
+   * @brief Class to hold the paths to the parameter files for the different detectors.
+  **/
+  struct ParFiles {
+
+    ParFiles(uint32_t runId);
+
+    struct {
+      fs::path readout;
+      fs::path chanMask;
+      fs::path walkMap;
+      fs::path hitfinder;
+    } sts;
+
+    struct {
+      fs::path calibrate;
+      fs::path hitfinder;
+    } tof;
+
+    struct {
+      fs::path readout;
+      fs::path readout2d;
+      fs::path hitfinder;
+      fs::path hitfinder2d;
+    } trd;
+
+    struct {
+      fs::path mainConfig;
+    } ca;
+  };
+
+}  // namespace cbm::algo
diff --git a/algo/global/Reco.cxx b/algo/global/Reco.cxx
index 5862bfd83e08b580de7892149ee9ae3a35bfee10..1796c2745fd9f7fbb29521ef42400ff671259aeb 100644
--- a/algo/global/Reco.cxx
+++ b/algo/global/Reco.cxx
@@ -8,6 +8,7 @@
 #include "EventbuildChain.h"
 #include "Exceptions.h"
 #include "HistogramSender.h"
+#include "ParFiles.h"
 #include "StsDigiQa.h"
 #include "TrackingSetup.h"
 #include "bmon/Unpack.h"
@@ -96,6 +97,8 @@ void Reco::Init(const Options& opts)
   // Reco Params
   fContext.recoParams = yaml::ReadFromFile<RecoParams>(opts.ParamsDir() / "RecoParams.yaml");
 
+  ParFiles parFiles(opts.RunId());
+
   // Unpackers
   if (Opts().Has(Subsystem::BMON) && Opts().Has(Step::Unpack)) {
     bmon::ReadoutConfig cfg{};
@@ -113,18 +116,9 @@ void Reco::Init(const Options& opts)
   }
 
   if (Opts().Has(Subsystem::STS) && Opts().Has(Step::Unpack)) {
-    fs::path readoutFile  = "StsReadout_mcbm2022.yaml";
-    fs::path chanMaskFile = "StsChannelMaskSet_mcbm2022.yaml";
-    fs::path walkFile     = "StsWalkMap_mcbm2022.yaml";
-    if (2724 <= Opts().RunId()) {
-      readoutFile  = "StsReadout_mcbm2024.yaml";
-      chanMaskFile = "StsChannelMaskSet_mcbm2024.yaml";
-      walkFile     = "StsWalkMap_mcbm2024.yaml";
-    }
-
-    sts::ReadoutSetup readoutSetup = yaml::ReadFromFile<sts::ReadoutSetup>(Opts().ParamsDir() / readoutFile);
-    auto chanMask                  = yaml::ReadFromFile<sts::ChannelMaskSet>(Opts().ParamsDir() / chanMaskFile);
-    auto walkMap                   = yaml::ReadFromFile<sts::WalkMap>(Opts().ParamsDir() / walkFile);
+    sts::ReadoutSetup readoutSetup = yaml::ReadFromFile<sts::ReadoutSetup>(Opts().ParamsDir() / parFiles.sts.readout);
+    auto chanMask = yaml::ReadFromFile<sts::ChannelMaskSet>(Opts().ParamsDir() / parFiles.sts.chanMask);
+    auto walkMap  = yaml::ReadFromFile<sts::WalkMap>(Opts().ParamsDir() / parFiles.sts.walkMap);
 
     sts::ReadoutConfig readout{readoutSetup, chanMask};
     sts::Unpack::Config cfg{.readout = readout, .walkMap = walkMap};
@@ -143,13 +137,12 @@ void Reco::Init(const Options& opts)
   }
 
   if (Opts().Has(Subsystem::TRD) && Opts().Has(Step::Unpack)) {
-    fs::path readoutFile = 2724 <= Opts().RunId() ? "TrdReadoutSetup_mcbm2024.yaml" : "TrdReadoutSetup_mcbm2022.yaml";
-    auto cfg             = yaml::ReadFromFile<trd::ReadoutConfig>(Opts().ParamsDir() / readoutFile);
-    fTrdUnpack           = std::make_unique<trd::Unpack>(cfg);
+    auto cfg   = yaml::ReadFromFile<trd::ReadoutConfig>(Opts().ParamsDir() / parFiles.trd.readout);
+    fTrdUnpack = std::make_unique<trd::Unpack>(cfg);
   }
 
   if (Opts().Has(Subsystem::TRD2D) && Opts().Has(Step::Unpack)) {
-    auto cfg     = yaml::ReadFromFile<trd2d::ReadoutConfig>(Opts().ParamsDir() / "Trd2dReadoutSetup.yaml");
+    auto cfg     = yaml::ReadFromFile<trd2d::ReadoutConfig>(Opts().ParamsDir() / parFiles.trd.readout2d);
     fTrd2dUnpack = std::make_unique<trd2d::Unpack>(cfg);
   }
 
@@ -169,7 +162,8 @@ void Reco::Init(const Options& opts)
 
   // STS Hitfinder
   if (Opts().Has(fles::Subsystem::STS) && Opts().Has(Step::LocalReco)) {
-    sts::HitfinderPars hitFinderSetup = yaml::ReadFromFile<sts::HitfinderPars>(opts.ParamsDir() / "StsHitfinder.yaml");
+    sts::HitfinderPars hitFinderSetup =
+      yaml::ReadFromFile<sts::HitfinderPars>(opts.ParamsDir() / parFiles.sts.hitfinder);
     hitFinderSetup.landauTable        = sts::LandauTable::FromFile(opts.ParamsDir() / "LandauWidthTable.txt");
     sts::HitfinderChainPars hitFinderPars;
     hitFinderPars.setup  = std::move(hitFinderSetup);
@@ -182,17 +176,16 @@ void Reco::Init(const Options& opts)
 
   // TOF Hitfinder
   if (Opts().Has(fles::Subsystem::TOF) && Opts().Has(Step::LocalReco)) {
-    auto calibSetup = yaml::ReadFromFile<tof::CalibrateSetup>(opts.ParamsDir() / "TofCalibratePar.yaml");
+    auto calibSetup = yaml::ReadFromFile<tof::CalibrateSetup>(opts.ParamsDir() / parFiles.tof.calibrate);
     fTofCalibrator  = std::make_unique<tof::Calibrate>(calibSetup);
 
-    auto hitfindSetup = yaml::ReadFromFile<tof::HitfindSetup>(opts.ParamsDir() / "TofHitfinderPar.yaml");
+    auto hitfindSetup = yaml::ReadFromFile<tof::HitfindSetup>(opts.ParamsDir() / parFiles.tof.hitfinder);
     fTofHitFinder     = std::make_unique<tof::Hitfind>(hitfindSetup);
   }
 
   if (Opts().Has(fles::Subsystem::TRD) && Opts().Has(Step::LocalReco)) {
-    // TODO load setup files!!!
-    auto setup   = yaml::ReadFromFile<trd::HitfindSetup>(opts.ParamsDir() / "TrdHitfinderPar.yaml");
-    auto setup2d = yaml::ReadFromFile<trd::Hitfind2DSetup>(opts.ParamsDir() / "TrdHitfinder2DPar.yaml");
+    auto setup   = yaml::ReadFromFile<trd::HitfindSetup>(opts.ParamsDir() / parFiles.trd.hitfinder);
+    auto setup2d = yaml::ReadFromFile<trd::Hitfind2DSetup>(opts.ParamsDir() / parFiles.trd.hitfinder2d);
     fTrdHitfind  = std::make_unique<trd::Hitfind>(setup, setup2d);
   }
 
diff --git a/external/InstallParameter.cmake b/external/InstallParameter.cmake
index 6fabadfe6676898310a660e5554424f87640cde5..6807410688325433f0c517443fe118b25c9d9d97 100644
--- a/external/InstallParameter.cmake
+++ b/external/InstallParameter.cmake
@@ -1,4 +1,4 @@
-set(PARAMETER_VERSION 356c63407315fdf944f45e1351237ea4efe41faf) # 2024-04-25
+set(PARAMETER_VERSION 208494d2f668ff0fc349180008279739a7da864e) # 2024-04-27
 
 set(PARAMETER_SRC_URL "https://git.cbm.gsi.de/CbmSoft/cbmroot_parameter.git")