diff --git a/macro/beamtime/mcbm2020/MonitorTrd.C b/macro/beamtime/mcbm2020/MonitorTrd.C
index 19682fc5c56371ad04d916429379dfb1795cd2ab..c6ee21ff9cd46bfa0ab10fe3f34bb55e5613e5cb 100644
--- a/macro/beamtime/mcbm2020/MonitorTrd.C
+++ b/macro/beamtime/mcbm2020/MonitorTrd.C
@@ -3,7 +3,7 @@
  * Created Date: Wednesday March 25th 2020
  * Author: Pascal Raisig -- praisig@ikf.uni-frankfurt.de
  * -----
- * Last Modified: Wednesday March 25th 2020 15:00:38
+ * Last Modified: Thursday September 17th 2020 17:20:43
  * Modified By: Pascal Raisig
  * -----
  * Purpose: macro to test and run mCbm2020 trd unpacking
@@ -18,15 +18,25 @@
 #include <TList.h>
 #include <TObjString.h>
 #include <TString.h>
+#include <TSystem.h>
 
+// Includes needed for IDE
+#if !defined(__CLING__)
+
+#include "FairEventHeader.h"
 #include "FairLogger.h"
+#include "FairParAsciiFileIo.h"
 #include "FairRootFileSink.h"
 #include "FairRunOnline.h"
 #include "FairRuntimeDb.h"
 
-// #include "CbmMcbm2018Source.h"
-// #include "CbmMcbm2018UnpackerTaskTrdR.h"
-// #include "CbmTbEvent.h"
+#include "CbmDefs.h"
+#include "CbmMcbm2018Source.h"
+#include "CbmMcbm2018UnpackerTaskTrdR.h"
+#include "CbmMcbmUnpack.h"
+#include "CbmSetup.h"
+
+#endif
 
 FairRunOnline* run = nullptr;
 
@@ -36,18 +46,17 @@ void MonitorTrd(TString inFile           = "",
                 Int_t iServerRefreshRate = 100,
                 UInt_t uRunId            = 0,
                 UInt_t nrEvents          = 0,
-                TString outDir           = "data",
-                TString inDir            = "") {
+                std::string geoSetupTag  = "mcbm_beam_2020_03") {
+
+  std::string myName = "MonitorTrd";
+
   // --- Specify number of events to be produced.
   // --- -1 means run until the end of the input file.
   Int_t nEvents = -1;
 
-  // inFile = "/home/praisig/CBM/software/testEnv/data/desy2019/r0070_20190831_0159_0000.tsa"; // FIXME: This is just for testing smarter solution needed! One can probably iterate over files via SetInputDir and the code behind it.
-  // inFile = "/home/dspicker/desy2019/r0004_20200220_1951_0000.tsa";
+
   if ("" == inFile && "" == sHostname)
     inFile = "/local/dschmidt/tsa/pulser07.tsa";  // long pulser file
-  // outDir = "/home/praisig/CBM/software/testEnv/data/desy2019/data/";
-  //outDir = "output";
 
   TString srcDir = gSystem->Getenv("VMCWORKDIR");
 
@@ -65,24 +74,29 @@ void MonitorTrd(TString inFile           = "",
   gLogger->SetLogVerbosityLevel("medium");
   //gLogger->SetLogVerbosityLevel("low");
 
+  // -----   Load the geometry setup   -------------------------------------
+  std::cout << std::endl;
+  std::cout << "-I- " << myName.data() << ": Loading setup " << geoSetupTag
+            << std::endl;
+  CbmSetup* geoSetup = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+  // geoSetup->Print();
+
   // --- Define parameter files
+  // ---- Trd ----
   TList* parFileList = new TList();
-
-  //  adjust to required parameter files
-  // TString paramDirTrd = srcDir + "/parameters/trd/trd_ikfLabOneSpadic";
-  TString paramDirTrd = srcDir + "/parameters/trd/trd_v18q_mcbm";
-
-  parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
-  // parFileList->Add(new TObjString(Form("%s.digi.par", paramDirTrd.Data())));
-  // parFileList->Add(new TObjString(Form("%s.gas.par", paramDirTrd.Data())));
-  // parFileList->Add(new TObjString(Form("%s.gain.par", paramDirTrd.Data())));
-
-  for (auto parFileVecIt : *parFileList) {
-    LOG(debug) << Form("TrdParams - %s - added to parameter file list\n",
-                       parFileVecIt->GetName());
+  TString geoTagTrd  = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
   }
 
-
   // --- Set debug level
   gDebug = 0;
 
@@ -102,25 +116,6 @@ void MonitorTrd(TString inFile           = "",
   //  unpacker_trdR ->SetIgnoreOverlapMs(); /// Default is kTRUE
 
   unpacker_trdR->SetWriteOutput(kFALSE);
-  /*
-  unpacker_trdR->SetDebugWriteOutput(); // write rawMessage vector to file
-*/
-  //     // TODO: check trdR task for further needed settings
-
-  //     // Use this switch to pass run specific settings to the unpacker task
-  //   switch( uRunId )
-  //   {
-  //     /*
-  //      case 159:
-  //      {
-
-  //         break;
-  //      } // 159
-  //     */
-
-  //      default:
-  //         break;
-  //   } // switch( uRunId )
 
   //   // --- Source task
   CbmMcbm2018Source* source = new CbmMcbm2018Source();
@@ -133,12 +128,8 @@ void MonitorTrd(TString inFile           = "",
     source->SetSubscriberHwm(10);
   }  // else of if( "" != inFile )
 
-  // source->SetInputDir(inDir);
-  source->AddUnpacker(
-    unpacker_trdR,
-    0x40,
-    ECbmModuleId::
-      kTrd);  // Trd flibId (0x40) as at desy2019. kTrd defined in CbmDefs.h
+  source->AddUnpacker(unpacker_trdR, 0x40, ECbmModuleId::kTrd);
+  // Trd flibId (0x40) as at desy2019. kTrd defined in CbmDefs.h
 
   source->SetSubscriberHwm(1000);
 
diff --git a/macro/beamtime/mcbm2020/unpack_check_time_mcbm_kronos.C b/macro/beamtime/mcbm2020/unpack_check_time_mcbm_kronos.C
index 873408a66c176283b468970f3fb4bbbc4900e321..2ac45c1c9d60cd02aea4ae05e8a1b4c7313448f6 100644
--- a/macro/beamtime/mcbm2020/unpack_check_time_mcbm_kronos.C
+++ b/macro/beamtime/mcbm2020/unpack_check_time_mcbm_kronos.C
@@ -61,6 +61,12 @@ void unpack_check_time_mcbm_kronos(UInt_t uRunIdx  = 99999,
   TList* parFileList = new TList();
   TString paramDir   = srcDir + "/macro/beamtime/mcbm2020/";
 
+  // ---- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
   TString paramFileSts       = paramDir + "mStsPar.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -69,18 +75,19 @@ void unpack_check_time_mcbm_kronos(UInt_t uRunIdx  = 99999,
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString geoTagTrd = "v18q_mcbm";
-  // parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
-  // if ( geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTag) ) // this would be nice to have already here
-  // {
-  TString paramFilesTrd(
-    Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
-  std::vector<TString> paramFilesTrdVec = {"asic", "digi", "gas", "gain"};
-  for (auto parIt : paramFilesTrdVec) {
-    parFileList->Add(
-      new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.Data())));
+
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
   }
-  // }
 
   TString paramFileTof       = paramDir + "mTofPar.par";
   TObjString* parTofFileName = new TObjString(paramFileTof);
diff --git a/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C b/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C
index 7c9685e7a43c0b4317f928cf8d33a26b36b397bf..f097c1f7fdd9cdecc683e6b6231acea42f15d775 100644
--- a/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C
+++ b/macro/beamtime/mcbm2020/unpack_check_timing_any_mcbm.C
@@ -37,6 +37,13 @@ void unpack_check_timing_any_mcbm(TString inFile  = "",
   TList* parFileList = new TList();
   TString paramDir   = srcDir + "/macro/beamtime/mcbm2020/";
 
+  // ---- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
+
   TString paramFileSts       = paramDir + "mStsPar.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -45,18 +52,20 @@ void unpack_check_timing_any_mcbm(TString inFile  = "",
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString geoTagTrd = "v18q_mcbm";
-  // parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
-  // if ( geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTag) ) // this would be nice to have already here
-  // {
-  TString paramFilesTrd(
-    Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
-  std::vector<TString> paramFilesTrdVec = {"asic", "digi", "gas", "gain"};
-  for (auto parIt : paramFilesTrdVec) {
-    parFileList->Add(
-      new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.Data())));
+
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
   }
-  // }
+
 
   TString paramFileTof = paramDir + "mTofPar.par";
   if (uRunId >= 708 && uRunId < 754)
diff --git a/macro/beamtime/mcbm2020/unpack_pulser_mcbm.C b/macro/beamtime/mcbm2020/unpack_pulser_mcbm.C
index 0eab3e627e74990344177aba85c741f482103b3e..d404d58d4aed20e21c85150b26f9bec9eb8fa433 100644
--- a/macro/beamtime/mcbm2020/unpack_pulser_mcbm.C
+++ b/macro/beamtime/mcbm2020/unpack_pulser_mcbm.C
@@ -39,6 +39,12 @@ void unpack_pulser_mcbm(UInt_t uRunId            = 0,
   TList* parFileList = new TList();
   TString paramDir   = "./";
 
+  // ---- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
   TString paramFileSts       = paramDir + "mStsPar_pulser.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -47,8 +53,18 @@ void unpack_pulser_mcbm(UInt_t uRunId            = 0,
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString paramDirTrd = srcDir + "/parameters/trd/trd_v18q_mcbm";
-  parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
+  }
 
   TString paramFileTof       = paramDir + "mTofPar.par";
   TObjString* parTofFileName = new TObjString(paramFileTof);
diff --git a/macro/beamtime/mcbm2020/unpack_pulser_mcbm_stsbinning.C b/macro/beamtime/mcbm2020/unpack_pulser_mcbm_stsbinning.C
index f5bb61ef5b87dd1956b46cff649add968883a00f..da4a29b89bbab62820ad4e422a3f4585bdf3f105 100644
--- a/macro/beamtime/mcbm2020/unpack_pulser_mcbm_stsbinning.C
+++ b/macro/beamtime/mcbm2020/unpack_pulser_mcbm_stsbinning.C
@@ -39,6 +39,12 @@ void unpack_pulser_mcbm_stsbinning(UInt_t uRunId            = 0,
   TList* parFileList = new TList();
   TString paramDir   = "./";
 
+  // ---- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
   TString paramFileSts       = paramDir + "mStsPar_pulser.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -47,8 +53,18 @@ void unpack_pulser_mcbm_stsbinning(UInt_t uRunId            = 0,
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString paramDirTrd = srcDir + "/parameters/trd/trd_v18q_mcbm";
-  parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
+  }
 
   TString paramFileTof       = paramDir + "mTofPar.par";
   TObjString* parTofFileName = new TObjString(paramFileTof);
diff --git a/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C b/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C
index 733d59f84fa21fff0989a99f36f61addf00af6ba..d2ce5a95f148246b13f4d09a56b026483d06e1cf 100644
--- a/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C
+++ b/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C
@@ -36,6 +36,12 @@ void unpack_tsa_mcbm(TString inFile  = "",
   TList* parFileList = new TList();
   TString paramDir   = srcDir + "/macro/beamtime/mcbm2020/";
 
+  // --- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
   TString paramFileSts       = paramDir + "mStsPar.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -44,18 +50,18 @@ void unpack_tsa_mcbm(TString inFile  = "",
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString geoTagTrd = "v18q_mcbm";
-  // parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
-  // if ( geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTag) ) // this would be nice to have already here
-  // {
-  TString paramFilesTrd(
-    Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
-  std::vector<TString> paramFilesTrdVec = {"asic", "digi", "gas", "gain"};
-  for (auto parIt : paramFilesTrdVec) {
-    parFileList->Add(
-      new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.Data())));
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
   }
-  // }
 
   TString paramFileTof = paramDir + "mTofPar.par";
   if (uRunId >= 708 && uRunId < 754)
diff --git a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C
index 85a6984e96d8bb5f0827b89ae2089c33edec115f..b01fa2db22fc12a9234d807ad80bcac5ac5dfcbf 100644
--- a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C
+++ b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C
@@ -61,6 +61,12 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx  = 99999,
   TList* parFileList = new TList();
   TString paramDir   = srcDir + "/macro/beamtime/mcbm2020/";
 
+  // --- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
   TString paramFileSts       = paramDir + "mStsPar.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -69,18 +75,18 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx  = 99999,
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString geoTagTrd = "v18q_mcbm";
-  // parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
-  // if ( geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTag) ) // this would be nice to have already here
-  // {
-  TString paramFilesTrd(
-    Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
-  std::vector<TString> paramFilesTrdVec = {"asic", "digi", "gas", "gain"};
-  for (auto parIt : paramFilesTrdVec) {
-    parFileList->Add(
-      new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.Data())));
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
   }
-  // }
 
   TString paramFileTof = paramDir + "mTofPar.par";
   if (uRunId >= 708 && uRunId < 754)
diff --git a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C
index 17ef8620f3e5991ea00f6c29ffc30a59880dd3da..6c63ba62983868bf33440d03cea2996a6a183de8 100644
--- a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C
+++ b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C
@@ -37,6 +37,12 @@ void unpack_tsa_mcbm_mfles(UInt_t uRunId   = 0,
   TList* parFileList = new TList();
   TString paramDir   = srcDir + "/macro/beamtime/mcbm2020/";
 
+  // --- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
   TString paramFileSts       = paramDir + "mStsPar.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -45,8 +51,18 @@ void unpack_tsa_mcbm_mfles(UInt_t uRunId   = 0,
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString paramDirTrd = srcDir + "/parameters/trd/trd_v18q_mcbm";
-  parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
+  }
 
   TString paramFileTof       = paramDir + "mTofPar.par";
   TObjString* parTofFileName = new TObjString(paramFileTof);
diff --git a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_stsmuchbinning.C b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_stsmuchbinning.C
index a95ac7af896518ff726720df2962cb95d58d4617..65093cc34f58cb3d8b23688eae4a197a797e67ac 100644
--- a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_stsmuchbinning.C
+++ b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_stsmuchbinning.C
@@ -36,6 +36,12 @@ void unpack_tsa_mcbm_stsmuchbinning(TString inFile  = "",
   TList* parFileList = new TList();
   TString paramDir   = srcDir + "/macro/beamtime/mcbm2020/";
 
+  // --- Load the geometry setup ----
+  // This is currently only required by the TRD
+  std::string geoSetupTag = "mcbm_beam_2020_03";
+  CbmSetup* geoSetup      = CbmSetup::Instance();
+  geoSetup->LoadSetup(geoSetupTag.data());
+
   TString paramFileSts       = paramDir + "mStsPar.par";
   TObjString* parStsFileName = new TObjString(paramFileSts);
   parFileList->Add(parStsFileName);
@@ -44,8 +50,18 @@ void unpack_tsa_mcbm_stsmuchbinning(TString inFile  = "",
   TObjString* parMuchFileName = new TObjString(paramFileMuch);
   parFileList->Add(parMuchFileName);
 
-  TString paramDirTrd = srcDir + "/parameters/trd/trd_v18q_mcbm";
-  parFileList->Add(new TObjString(Form("%s.asic.par", paramDirTrd.Data())));
+  // ---- Trd ----
+  TString geoTagTrd = "";
+  if (geoSetup->GetGeoTag(ECbmModuleId::kTrd, geoTagTrd)) {
+    TString paramFilesTrd(
+      Form("%s/parameters/trd/trd_%s", srcDir.Data(), geoTagTrd.Data()));
+    std::vector<std::string> paramFilesVecTrd;
+    CbmTrdParManager::GetParFileExtensions(&paramFilesVecTrd);
+    for (auto parIt : paramFilesVecTrd) {
+      parFileList->Add(
+        new TObjString(Form("%s.%s.par", paramFilesTrd.Data(), parIt.data())));
+    }
+  }
 
   TString paramFileTof       = paramDir + "mTofPar.par";
   TObjString* parTofFileName = new TObjString(paramFileTof);