diff --git a/reco/steer/CbmRecoUnpack.cxx b/reco/steer/CbmRecoUnpack.cxx
index 191dcff0cfc30eb89ff61288807ea7fcc61e3cd6..c5e02f9be42ad2043bbeb19609723e35c0f4810a 100644
--- a/reco/steer/CbmRecoUnpack.cxx
+++ b/reco/steer/CbmRecoUnpack.cxx
@@ -41,8 +41,8 @@ void CbmRecoUnpack::Finish()
   if (fRichConfig) fRichConfig->GetUnpacker()->Finish();
   if (fStsConfig) fStsConfig->GetUnpacker()->Finish();
   if (fTofConfig) fTofConfig->GetUnpacker()->Finish();
-  if (fTrdConfig) fTrdConfig->GetUnpacker()->Finish();
-  if (fTrdConfig2D) fTrdConfig2D->GetUnpacker()->Finish();
+  if (fTrd1DConfig) fTrd1DConfig->GetUnpacker()->Finish();
+  if (fTrd2DConfig) fTrd2DConfig->GetUnpacker()->Finish();
 }
 
 // ----------------------------------------------------------------------------
@@ -70,20 +70,27 @@ Bool_t CbmRecoUnpack::Init()
   // --- Sts
   if (fStsConfig) fStsConfig->Init(ioman);
   // --- Tof
-  // if (fTofConfig) fTofConfig->Init(ioman);
+  if (fTofConfig) fTofConfig->Init(ioman);
   // --- Trd
-  if (fTrdConfig) fTrdConfig->Init(ioman);
+  if (fTrd1DConfig) fTrd1DConfig->Init(ioman);
   // --- TRD2D
-  if (fTrdConfig2D->GetOutputBranchName() == fTrdConfig->GetOutputBranchName()) {
-    fTrdConfig2D->SetOutputVec(fTrdConfig->GetOutputVec());
-    if (fTrdConfig2D) fTrdConfig2D->InitUnpacker();
-  }
-  else {
-    if (fTrdConfig2D) fTrdConfig2D->Init(ioman);
+  if (fTrd2DConfig) {
+    if (fTrd1DConfig) {
+      if (fTrd2DConfig->GetOutputBranchName() == fTrd1DConfig->GetOutputBranchName()) {
+        LOG(info) << fTrd2DConfig->GetName() << "::Init() ---------------------------------";
+        fTrd2DConfig->SetOutputVec(fTrd1DConfig->GetOutputVec());
+        fTrd2DConfig->InitUnpacker();
+        LOG(info) << fTrd2DConfig->GetName() << " succesful initialized -----------------\n";
+      }
+      else {
+        fTrd2DConfig->Init(ioman);
+      }
+    }
+    else {
+      fTrd2DConfig->Init(ioman);
+    }
   }
   // This is an ugly work around, because the TRD and TRD2D want to access the same vector and there is no function to retrieve a writeable vector<obj> from the FairRootManager, especially before the branches are created, as far as I am aware. The second option workaround is in in Init() to look for the fasp config and create a separate branch for fasp created CbmTrdDigis PR 072021
-  // --- Tof
-  if (fTofConfig) fTofConfig->Init(ioman);
 
   return kTRUE;
 }
@@ -102,13 +109,11 @@ void CbmRecoUnpack::Reset()
   // ---- Sts ----
   if (fStsConfig) fStsConfig->Reset();
   // ---- Tof ----
-  // if (fTofConfig) fTofConfig->Reset();
+  if (fTofConfig) fTofConfig->Reset();
   // ---- Trd ----
-  if (fTrdConfig) fTrdConfig->Reset();
+  if (fTrd1DConfig) fTrd1DConfig->Reset();
   // ---- Trd2D ----
-  if (fTrdConfig2D) fTrdConfig2D->Reset();
-  // ---- Tof ----
-  if (fTofConfig) fTofConfig->Reset();
+  if (fTrd2DConfig) fTrd2DConfig->Reset();
 }
 
 // ----------------------------------------------------------------------------
@@ -148,25 +153,24 @@ void CbmRecoUnpack::Unpack(unique_ptr<Timeslice> ts)
             unpack(&timeslice, component, fStsConfig, fStsConfig->GetOptOutAVec(), fStsConfig->GetOptOutBVec()));
         break;
       }
+      case fkFlesTof: {
+        if (fTofConfig)
+          fCbmTsEventHeader->SetNDigisTof(
+            unpack(&timeslice, component, fTofConfig, fTofConfig->GetOptOutAVec(), fTofConfig->GetOptOutBVec()));
+        break;
+      }
       case fkFlesTrd: {
-        if (fTrdConfig)
+        if (fTrd1DConfig)
           fCbmTsEventHeader->SetNDigisTrd(
-            unpack(&timeslice, component, fTrdConfig, fTrdConfig->GetOptOutAVec(), fTrdConfig->GetOptOutBVec()));
+            unpack(&timeslice, component, fTrd1DConfig, fTrd1DConfig->GetOptOutAVec(), fTrd1DConfig->GetOptOutBVec()));
         break;
       }
       case fkFlesTrd2D: {
-        if (fTrdConfig2D)
+        if (fTrd2DConfig)
           fCbmTsEventHeader->SetNDigisTrd2D(
-            unpack(&timeslice, component, fTrdConfig2D, fTrdConfig2D->GetOptOutAVec(), fTrdConfig2D->GetOptOutBVec()));
-        break;
-      }
-      case fkFlesTof: {
-        if (fTofConfig)
-          fCbmTsEventHeader->SetNDigisTof(
-            unpack(&timeslice, component, fTofConfig, fTofConfig->GetOptOutAVec(), fTofConfig->GetOptOutBVec()));
+            unpack(&timeslice, component, fTrd2DConfig, fTrd2DConfig->GetOptOutAVec(), fTrd2DConfig->GetOptOutBVec()));
         break;
       }
-
       default: {
         if (fDoDebugPrints) LOG(error) << "Unpack: Unknown system ID " << systemId << " for component " << component;
         break;
diff --git a/reco/steer/CbmRecoUnpack.h b/reco/steer/CbmRecoUnpack.h
index c1d9cd2c0178cc9afb790ad5c18d30f91f5dc421..755034d561ae2d791d1ac454887e9e8f251dd7d0 100644
--- a/reco/steer/CbmRecoUnpack.h
+++ b/reco/steer/CbmRecoUnpack.h
@@ -82,10 +82,10 @@ public:
   // void SetUnpackConfig(std::shared_ptr<CbmTofUnpackConfig> config) { fTofConfig = config; }
 
   /** @brief Set the Trd Unpack Config @param config */
-  void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfig> config) { fTrdConfig = config; }
+  void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfig> config) { fTrd1DConfig = config; }
 
   /** @brief Set the Trd2D Unpack Config @param config */
-  void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfigFasp2D> config) { fTrdConfig2D = config; }
+  void SetUnpackConfig(std::shared_ptr<CbmTrdUnpackConfigFasp2D> config) { fTrd2DConfig = config; }
 
   /** @brief Set the Tof Unpack Config @param config */
   void SetUnpackConfig(std::shared_ptr<CbmTofUnpackConfig> config) { fTofConfig = config; }
@@ -210,10 +210,10 @@ private:
   std::shared_ptr<CbmTofUnpackConfig> fTofConfig = nullptr;  //!
 
   /** @brief Configuration of the Trd unpacker. Provides the configured algorithm */
-  std::shared_ptr<CbmTrdUnpackConfig> fTrdConfig = nullptr;  //!
+  std::shared_ptr<CbmTrdUnpackConfig> fTrd1DConfig = nullptr;  //!
 
   /** @brief Configuration of the Trd unpacker. Provides the configured algorithm */
-  std::shared_ptr<CbmTrdUnpackConfigFasp2D> fTrdConfig2D = nullptr;  //!
+  std::shared_ptr<CbmTrdUnpackConfigFasp2D> fTrd2DConfig = nullptr;  //!
 
   /** @brief Pointer to the Timeslice start time used to write it to the output tree @remark since we hand this to the FairRootManager it also wants to delete it and we do not have to take care of deletion */
   CbmTsEventHeader* fCbmTsEventHeader = nullptr;