From c807a369762ae3fe5d05428f8985654b983755a0 Mon Sep 17 00:00:00 2001
From: Dominik Smith <smith@th.physik.uni-frankfurt.de>
Date: Thu, 12 Aug 2021 13:43:32 +0200
Subject: [PATCH] Implemented automated switching between STS unpackers in
 CbmStsUnpackConfig and run_unpack_tsa.

---
 macro/run/run_unpack_tsa.C                       |  2 +-
 reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx | 10 ++++++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/macro/run/run_unpack_tsa.C b/macro/run/run_unpack_tsa.C
index 2152366abb..a230e2d5a3 100644
--- a/macro/run/run_unpack_tsa.C
+++ b/macro/run/run_unpack_tsa.C
@@ -114,7 +114,7 @@ void run_unpack_tsa(std::string infile = "test.tsa", UInt_t runid = 0, const cha
   // ---- STS ----
   std::shared_ptr<CbmStsUnpackConfig> stsconfig = nullptr;
 
-  stsconfig = std::make_shared<CbmStsUnpackConfig>("", runid);
+  stsconfig = std::make_shared<CbmStsUnpackConfig>(std::string(setupName), runid);
   if (stsconfig) {
     // stsconfig->SetDebugState();
     stsconfig->SetDoWriteOutput();
diff --git a/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx b/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
index c862b1d93f..2e073eccb4 100644
--- a/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
+++ b/reco/detectors/sts/unpack/CbmStsUnpackConfig.cxx
@@ -68,11 +68,17 @@ std::shared_ptr<CbmStsUnpackAlgoBase> CbmStsUnpackConfig::chooseAlgo()
 {
   if (fDoLog) LOG(info) << fName << "::Init - chooseAlgo";
 
+  // Non default unpacker selection
+  // Legacy unpacker for data taken before mcbm 2021
+  if (fGeoSetupTag.find("mcbm_beam_2020_03") != fGeoSetupTag.npos) {
+    auto algo = std::make_shared<CbmStsUnpackAlgoLegacy>();
+    LOG(info) << fName << "::chooseAlgo() - selected algo = " << algo->Class_Name();
+    return algo;
+  }
+
   // Default unpacker selection
   // Unpacker algo from mcbm 2021 on and hopefully default for a long time.
   auto algo = std::make_shared<CbmStsUnpackAlgo>();
-  //auto algo = std::make_shared<CbmStsUnpackAlgoLegacy>();  // for 2020 runs
-
   LOG(info) << fName << "::chooseAlgo() - selected algo = " << algo->Class_Name();
   return algo;
 
-- 
GitLab