diff --git a/algo/data/CMakeLists.txt b/algo/data/CMakeLists.txt
index 8d09e99b7da59372acb61c44f172a8b25e9f0c1f..d35d41d14f9c440e456a653d40b1df030111f753 100644
--- a/algo/data/CMakeLists.txt
+++ b/algo/data/CMakeLists.txt
@@ -6,9 +6,9 @@ set(SRCS
   ${CMAKE_SOURCE_DIR}/core/data/CbmDefs.cxx
   ${CMAKE_SOURCE_DIR}/core/data/CbmAddress.cxx
 
-  ${CMAKE_SOURCE_DIR}/core/data/sts/CbmStsDigi.cxx
   ${CMAKE_SOURCE_DIR}/core/data/sts/CbmStsAddress.cxx
-
+  ${CMAKE_SOURCE_DIR}/core/data/sts/CbmStsDigi.cxx
+ 
   ${CMAKE_SOURCE_DIR}/core/data/rich/CbmRichDigi.cxx
 
   ${CMAKE_SOURCE_DIR}/core/data/much/CbmMuchDigi.cxx
diff --git a/core/data/CMakeLists.txt b/core/data/CMakeLists.txt
index f5497b388d3f1ad8d23df1d81d904b5f31ed38f4..29151c2da7ca25e5b8d215b88ae3b47abc97cdd1 100644
--- a/core/data/CMakeLists.txt
+++ b/core/data/CMakeLists.txt
@@ -125,7 +125,9 @@ set(NO_DICT_SRCS
 SET_SOURCE_FILES_PROPERTIES(tof/etof/star_rhicf.c PROPERTIES COMPILE_FLAGS -Wno-pointer-sign)
 
 
-list(APPEND HEADERS base/CbmDigiData.h global/CbmDigiEvent.h global/CbmDigiTimeslice.h)
+list(APPEND HEADERS base/CbmDigiData.h global/CbmDigiEvent.h global/CbmDigiTimeslice.h 
+sts/CbmStsDigiData.h much/CbmMuchDigiData.h rich/CbmRichDigiData.h trd/CbmTrdDigiData.h 
+tof/CbmTofDigiData.h psd/CbmPsdDigiData.h)
 
 set(LIBRARY_NAME CbmData)
 set(LINKDEF ${LIBRARY_NAME}LinkDef.h)
@@ -148,8 +150,15 @@ generate_cbm_library()
 
 # Install file which has no corresponding source file
 Install(FILES
-        CbmDefs.h rich/CbmRichRingLight.h base/CbmDigiVector.h
-        base/CbmDigiData.h global/CbmDigiEvent.h global/CbmDigiTimeslice.h
+        CbmDefs.h 
+        base/CbmDigiData.h base/CbmDigiVector.h
+        much/CbmMuchDigiData.h
+        psd/CbmPsdDigiData.h
+        rich/CbmRichDigiData.h rich/CbmRichRingLight.h 
+        sts/CbmStsDigiData.h
+        trd/CbmTrdDigiData.h
+        tof/CbmTofDigiData.h
+        global/CbmDigiEvent.h global/CbmDigiTimeslice.h
         raw/bitmask_operators.hpp raw/StsXyterFinalHit.h raw/PsdGbtDataFormat-v0.00.h raw/PsdGbtDataFormat-v1.00.h
         DESTINATION include
        )
diff --git a/core/data/CbmDataLinkDef.h b/core/data/CbmDataLinkDef.h
index d16afef6d038d466d14731e556574e501a98fdcb..50694aa1c0da9dc0b5ba3fd3cd2b309de7ee6d55 100644
--- a/core/data/CbmDataLinkDef.h
+++ b/core/data/CbmDataLinkDef.h
@@ -48,6 +48,7 @@
 #pragma link C++ namespace CbmStsAddress;
 #pragma link C++ class CbmStsCluster + ;
 #pragma link C++ class CbmStsDigi + ;
+#pragma link C++ class CbmStsDigiData + ;
 #pragma link C++ class CbmStsHit + ;
 #pragma link C++ class CbmStsPoint + ;
 #pragma link C++ class CbmStsTrack + ;
@@ -58,11 +59,13 @@
 #pragma link C++ class CbmRichRing + ;
 #pragma link C++ class CbmRichTrbDigi + ;
 #pragma link C++ class CbmRichDigi + ;
+#pragma link C++ class CbmRichDigiData + ;
 
 #pragma link C++ class CbmMuchCluster + ;
 #pragma link C++ class CbmMuchPixelHit + ;
 #pragma link C++ class CbmMuchPoint + ;
 #pragma link C++ class CbmMuchDigi + ;
+#pragma link C++ class CbmMuchDigiData + ;
 #pragma link C++ class CbmMuchBeamTimeDigi + ;
 #pragma link C++ class CbmMuchDigiMatch + ;
 #pragma link C++ class CbmMuchTrack + ;
@@ -72,6 +75,7 @@
 #pragma link C++ class CbmTrdPoint + ;
 #pragma link C++ class CbmTrdTrack + ;
 #pragma link C++ class CbmTrdDigi + ;
+#pragma link C++ class CbmTrdDigiData + ;
 #pragma link C++ class CbmTrdAddress + ;
 #pragma link C++ class CbmTrdCluster + ;
 #pragma link C++ class CbmTrdRawMessageSpadic + ;
@@ -79,12 +83,14 @@
 #pragma link C++ class CbmTofHit + ;
 #pragma link C++ class CbmTofPoint + ;
 #pragma link C++ class CbmTofDigi + ;
+#pragma link C++ class CbmTofDigiData + ;
 #pragma link C++ class CbmTofAddress + ;
 #pragma link C++ class CbmTofTrack + ;
 #pragma link C++ class CbmTofTracklet + ;
 #pragma link C++ class CbmTofTrackletParam + ;
 
 #pragma link C++ class CbmPsdDigi + ;
+#pragma link C++ class CbmPsdDigiData + ;
 #pragma link C++ class CbmPsdDsp + ;
 #pragma link C++ class CbmPsdHit;
 #pragma link C++ class CbmPsdPoint + ;
@@ -140,12 +146,6 @@
 #pragma link C++ class vector < CbmEventStore> + ;
 
 #pragma link C++ class std::vector < CbmEvent> + ;
-#pragma link C++ class StsDigiData + ;
-#pragma link C++ class MuchDigiData + ;
-#pragma link C++ class RichDigiData + ;
-#pragma link C++ class TrdDigiData + ;
-#pragma link C++ class TofDigiData + ;
-#pragma link C++ class PsdDigiData + ;
 #pragma link C++ class CbmDigiData + ;
 #pragma link C++ class CbmDigiEvent + ;
 #pragma link C++ class std::vector < CbmDigiEvent> + ;
diff --git a/core/data/base/CbmDigiData.h b/core/data/base/CbmDigiData.h
index 28448e246602411581c0baddb4290dafe5530fca..c8b8e20385334bbe60053637ce4be2a46074c111 100644
--- a/core/data/base/CbmDigiData.h
+++ b/core/data/base/CbmDigiData.h
@@ -7,11 +7,17 @@
 #define CBMDIGIDATA_H 1
 
 #include "CbmMuchDigi.h"
+#include "CbmMuchDigiData.h"
 #include "CbmPsdDigi.h"
+#include "CbmPsdDigiData.h"
 #include "CbmRichDigi.h"
+#include "CbmRichDigiData.h"
 #include "CbmStsDigi.h"
+#include "CbmStsDigiData.h"
 #include "CbmTofDigi.h"
+#include "CbmTofDigiData.h"
 #include "CbmTrdDigi.h"
+#include "CbmTrdDigiData.h"
 
 #include <boost/serialization/access.hpp>
 #include <boost/serialization/vector.hpp>
@@ -38,15 +44,6 @@ struct DigiVec {
   void Clear() { fDigis.clear(); }
 };
 
-/** Unless a detector-specific implementation for the digi data is present, the
- ** simplest form (std::vector) will be used. **/
-typedef DigiVec<CbmStsDigi> StsDigiData;
-typedef DigiVec<CbmMuchDigi> MuchDigiData;
-typedef DigiVec<CbmRichDigi> RichDigiData;
-typedef DigiVec<CbmTrdDigi> TrdDigiData;
-typedef DigiVec<CbmTofDigi> TofDigiData;
-typedef DigiVec<CbmPsdDigi> PsdDigiData;
-
 
 /** @struct CbmDigiData
  ** @brief Collection of digis from all detector systems
@@ -56,13 +53,13 @@ typedef DigiVec<CbmPsdDigi> PsdDigiData;
  **/
 struct CbmDigiData {
   friend class boost::serialization::access;
-  TofDigiData fT0;
-  StsDigiData fSts;
-  MuchDigiData fMuch;
-  RichDigiData fRich;
-  TrdDigiData fTrd;
-  TofDigiData fTof;
-  PsdDigiData fPsd;
+  CbmTofDigiData fT0;
+  CbmStsDigiData fSts;
+  CbmMuchDigiData fMuch;
+  CbmRichDigiData fRich;
+  CbmTrdDigiData fTrd;
+  CbmTofDigiData fTof;
+  CbmPsdDigiData fPsd;
   template<class Archive>
   void serialize(Archive& ar, const unsigned int /*version*/)
   {
diff --git a/core/data/much/CbmMuchDigiData.h b/core/data/much/CbmMuchDigiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..9e748a83349a0e039d73e2a552099cd3488310db
--- /dev/null
+++ b/core/data/much/CbmMuchDigiData.h
@@ -0,0 +1,52 @@
+/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Volker Friese [committer] */
+
+#ifndef CBMMUCHDIGIDATA_H
+#define CBMMUCHDIGIDATA_H 1
+
+
+#include "CbmMuchDigi.h"
+
+#ifndef NO_ROOT
+#include <Rtypes.h>  // for ClassDef
+#endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+
+#include <vector>
+
+/** @class CbmMuchDigiData
+ ** @brief Container class for CbmMuchDigi objects
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
+ **
+ ** Container class for transporting CbmMuchDigi objects.
+ ** The current implementation is the simplest one: a std::vector.
+ **/
+class CbmMuchDigiData {
+
+public:
+  std::vector<CbmMuchDigi> fDigis = {};  ///< Data vector
+
+  friend class boost::serialization::access;
+
+  /** @brief BOOST serializer**/
+  template<class Archive>
+  void serialize(Archive& ar, const unsigned int /*version*/)
+  {
+    ar& fDigis;
+  }
+
+  /** @brief Clear content **/
+  void Clear() { fDigis.clear(); }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmMuchDigiData, 1);
+#endif
+};
+
+#endif
diff --git a/core/data/psd/CbmPsdDigiData.h b/core/data/psd/CbmPsdDigiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..3c5d6dda4afc7cf4ca4c16079effafa2bf549afc
--- /dev/null
+++ b/core/data/psd/CbmPsdDigiData.h
@@ -0,0 +1,52 @@
+/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Volker Friese [committer] */
+
+#ifndef CBMPSDDIGIDATA_H
+#define CBMPSDDIGIDATA_H 1
+
+
+#include "CbmPsdDigi.h"
+
+#ifndef NO_ROOT
+#include <Rtypes.h>  // for ClassDef
+#endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+
+#include <vector>
+
+/** @class CbmPsdDigiData
+ ** @brief Container class for CbmPsdDigi objects
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
+ **
+ ** Container class for transporting CbmPsdDigi objects.
+ ** The current implementation is the simplest one: a std::vector.
+ **/
+class CbmPsdDigiData {
+
+public:
+  std::vector<CbmPsdDigi> fDigis = {};  ///< Data vector
+
+  friend class boost::serialization::access;
+
+  /** @brief BOOST serializer**/
+  template<class Archive>
+  void serialize(Archive& ar, const unsigned int /*version*/)
+  {
+    ar& fDigis;
+  }
+
+  /** @brief Clear content **/
+  void Clear() { fDigis.clear(); }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmPsdDigiData, 1);
+#endif
+};
+
+#endif
diff --git a/core/data/rich/CbmRichDigiData.h b/core/data/rich/CbmRichDigiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..07597098c3c3c79add2587e70360bf87c3a8a9fb
--- /dev/null
+++ b/core/data/rich/CbmRichDigiData.h
@@ -0,0 +1,52 @@
+/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Volker Friese [committer] */
+
+#ifndef CBMRICHDIGIDATA_H
+#define CBMRICHDIGIDATA_H 1
+
+
+#include "CbmRichDigi.h"
+
+#ifndef NO_ROOT
+#include <Rtypes.h>  // for ClassDef
+#endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+
+#include <vector>
+
+/** @class CbmRichDigiData
+ ** @brief Container class for CbmRichDigi objects
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
+ **
+ ** Container class for transporting CbmRichDigi objects.
+ ** The current implementation is the simplest one: a std::vector.
+ **/
+class CbmRichDigiData {
+
+public:
+  std::vector<CbmRichDigi> fDigis = {};  ///< Data vector
+
+  friend class boost::serialization::access;
+
+  /** @brief BOOST serializer**/
+  template<class Archive>
+  void serialize(Archive& ar, const unsigned int /*version*/)
+  {
+    ar& fDigis;
+  }
+
+  /** @brief Clear content **/
+  void Clear() { fDigis.clear(); }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmRichDigiData, 1);
+#endif
+};
+
+#endif
diff --git a/core/data/sts/CbmStsDigiData.h b/core/data/sts/CbmStsDigiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..0aaca341997533d91b7dc4d7a4b029402850dc4e
--- /dev/null
+++ b/core/data/sts/CbmStsDigiData.h
@@ -0,0 +1,52 @@
+/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Volker Friese [committer] */
+
+#ifndef CBMSTSDIGIDATA_H
+#define CBMSTSDIGIDATA_H 1
+
+
+#include "CbmStsDigi.h"
+
+#ifndef NO_ROOT
+#include <Rtypes.h>  // for ClassDef
+#endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+
+#include <vector>
+
+/** @class CbmStsDigiData
+ ** @brief Container class for CbmStsDigi objects
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
+ **
+ ** Container class for transporting CnmStsDigi objects.
+ ** The current implementation is the simplest one: a std::vector.
+ **/
+class CbmStsDigiData {
+
+public:
+  std::vector<CbmStsDigi> fDigis = {};  ///< Data vector
+
+  friend class boost::serialization::access;
+
+  /** @brief BOOST serializer**/
+  template<class Archive>
+  void serialize(Archive& ar, const unsigned int /*version*/)
+  {
+    ar& fDigis;
+  }
+
+  /** @brief Clear content **/
+  void Clear() { fDigis.clear(); }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmStsDigiData, 1);
+#endif
+};
+
+#endif
diff --git a/core/data/tof/CbmTofDigiData.h b/core/data/tof/CbmTofDigiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..45cabfbe8e9d65871345054787ed68460520ad1b
--- /dev/null
+++ b/core/data/tof/CbmTofDigiData.h
@@ -0,0 +1,52 @@
+/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Volker Friese [committer] */
+
+#ifndef CBMTOFDIGIDATA_H
+#define CBMTOFDIGIDATA_H 1
+
+
+#include "CbmTofDigi.h"
+
+#ifndef NO_ROOT
+#include <Rtypes.h>  // for ClassDef
+#endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+
+#include <vector>
+
+/** @class CbmTofDigiData
+ ** @brief Container class for CbmTofDigi objects
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
+ **
+ ** Container class for transporting CbmTofDigi objects.
+ ** The current implementation is the simplest one: a std::vector.
+ **/
+class CbmTofDigiData {
+
+public:
+  std::vector<CbmTofDigi> fDigis = {};  ///< Data vector
+
+  friend class boost::serialization::access;
+
+  /** @brief BOOST serializer**/
+  template<class Archive>
+  void serialize(Archive& ar, const unsigned int /*version*/)
+  {
+    ar& fDigis;
+  }
+
+  /** @brief Clear content **/
+  void Clear() { fDigis.clear(); }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmTofDigiData, 1);
+#endif
+};
+
+#endif
diff --git a/core/data/trd/CbmTrdDigiData.h b/core/data/trd/CbmTrdDigiData.h
new file mode 100644
index 0000000000000000000000000000000000000000..a3c3b750ceca2f82f9ef41a1cc859ea789b368b7
--- /dev/null
+++ b/core/data/trd/CbmTrdDigiData.h
@@ -0,0 +1,52 @@
+/* Copyright (C) 2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Volker Friese [committer] */
+
+#ifndef CBMTRDDIGIDATA_H
+#define CBMTRDDIGIDATA_H 1
+
+
+#include "CbmTrdDigi.h"
+
+#ifndef NO_ROOT
+#include <Rtypes.h>  // for ClassDef
+#endif
+
+#include <boost/serialization/access.hpp>
+#include <boost/serialization/base_object.hpp>
+
+#include <vector>
+
+/** @class CbmTrdDigiData
+ ** @brief Container class for CbmTrdDigi objects
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
+ **
+ ** Container class for transporting CbmTrdDigi objects.
+ ** The current implementation is the simplest one: a std::vector.
+ **/
+class CbmTrdDigiData {
+
+public:
+  std::vector<CbmTrdDigi> fDigis = {};  ///< Data vector
+
+  friend class boost::serialization::access;
+
+  /** @brief BOOST serializer**/
+  template<class Archive>
+  void serialize(Archive& ar, const unsigned int /*version*/)
+  {
+    ar& fDigis;
+  }
+
+  /** @brief Clear content **/
+  void Clear() { fDigis.clear(); }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmTrdDigiData, 1);
+#endif
+};
+
+#endif