diff --git a/core/data/base/CbmDigiData.h b/core/data/base/CbmDigiData.h
index c8b8e20385334bbe60053637ce4be2a46074c111..a6fe40612a86825f38a5ae3f1faa06b490d091a7 100644
--- a/core/data/base/CbmDigiData.h
+++ b/core/data/base/CbmDigiData.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2021-2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Volker Friese [committer] */
 
@@ -6,60 +6,40 @@
 #ifndef CBMDIGIDATA_H
 #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>
+#include <boost/serialization/base_object.hpp>
 
-#include <vector>
+#ifndef NO_ROOT
+#include <Rtypes.h>  // for ClassDef
+#endif
 
 
-/** @struct DigiVec
- ** @brief Digi collection in a std::vector
- **
- ** This is the simplest form of a collection of detector digis. A detector-specific
- ** implementation may choose a different representation (i.e., several vectors) or
- ** add meta-data.
+/** @class CbmDigiData
+ ** @brief Collection of digis from all detector systems
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
  **/
-template<class Digi>
-struct DigiVec {
-  std::vector<Digi> fDigis;
-  friend class boost::serialization::access;
-  template<class Archive>
-  void serialize(Archive& ar, const unsigned int /*version*/)
-  {
-    ar& fDigis;
-  }
-  void Clear() { fDigis.clear(); }
-};
+class CbmDigiData {
 
+public:
+  CbmTofDigiData fT0;     ///< Beam monitor data
+  CbmStsDigiData fSts;    ///< STS data
+  CbmMuchDigiData fMuch;  ///< MUCH data
+  CbmRichDigiData fRich;  ///< RICH data
+  CbmTrdDigiData fTrd;    ///< TRD data
+  CbmTofDigiData fTof;    ///< TOF data
+  CbmPsdDigiData fPsd;    ///< PSD data
 
-/** @struct CbmDigiData
- ** @brief Collection of digis from all detector systems
- **
- ** If no detector-specific collection class is provided, the simplest form (DigiVector)
- ** is used.
- **/
-struct CbmDigiData {
   friend class boost::serialization::access;
-  CbmTofDigiData fT0;
-  CbmStsDigiData fSts;
-  CbmMuchDigiData fMuch;
-  CbmRichDigiData fRich;
-  CbmTrdDigiData fTrd;
-  CbmTofDigiData fTof;
-  CbmPsdDigiData fPsd;
+  /** @brief BOOST serializer**/
   template<class Archive>
   void serialize(Archive& ar, const unsigned int /*version*/)
   {
@@ -71,6 +51,13 @@ struct CbmDigiData {
     ar& fPsd;
     ar& fRich;
   }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmDigiData, 1);
+#endif
+
+  /** @brief Clear content **/
   void Clear()
   {
     fT0.Clear();
diff --git a/core/data/global/CbmDigiEvent.h b/core/data/global/CbmDigiEvent.h
index 5f4dfd96c85b52b6362fcadd88e8c442ed67aaf9..189755391c922260772133584243f4bdecb79f25 100644
--- a/core/data/global/CbmDigiEvent.h
+++ b/core/data/global/CbmDigiEvent.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2021-22 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Volker Friese [committer] */
 
@@ -10,14 +10,22 @@
 #include <boost/serialization/access.hpp>
 
 
-/** @struct CbmDigiEvent
- ** @brief Container of digis from all detectors in an event
+/** @class CbmDigiEvent
+ ** @brief Collection of digis from all detector systems within one event
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
  **/
-struct CbmDigiEvent {
+class CbmDigiEvent {
+
+public:
   CbmDigiData fData;  ///< Event data
   uint64_t fNumber;   ///< Event identifier
   double fTime;       ///< Event trigger time [ns]
+
+
   friend class boost::serialization::access;
+  /** @brief BOOST serializer**/
   template<class Archive>
   void serialize(Archive& ar, const unsigned int /*version*/)
   {
@@ -25,6 +33,19 @@ struct CbmDigiEvent {
     ar& fNumber;
     ar& fTime;
   }
+
+  // --- ROOT serializer
+#ifndef NO_ROOT
+  ClassDefNV(CbmDigiEvent, 1);
+#endif
+
+  /** @brief Clear content **/
+  void Clear()
+  {
+    fData.Clear();
+    fNumber = 0;
+    fTime   = 0.;
+  }
 };
 
 #endif /* CBMDIGIEVENT_H */
diff --git a/core/data/global/CbmDigiTimeslice.h b/core/data/global/CbmDigiTimeslice.h
index b6b9e0f29b97686b1aab3f67645fa44c4cadd1a2..b4c0ace2822f650180c6c51608d41b5e2705b9f6 100644
--- a/core/data/global/CbmDigiTimeslice.h
+++ b/core/data/global/CbmDigiTimeslice.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+/* Copyright (C) 2021-2022 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
    SPDX-License-Identifier: GPL-3.0-only
    Authors: Volker Friese [committer] */
 
@@ -12,19 +12,28 @@
 #include <boost/serialization/access.hpp>
 
 
-/** @struct CbmDigiTimeslice
- ** @brief Container of digis from all detectors in a time slice
+/** @class CbmDigiTimeslice
+ ** @brief Collection of digis from all detector systems within one timeslice
+ ** @author Volker Friese <v.friese@gsi.de>
+ ** @since 7.12.2022
+ ** @version 1.0
  **/
-struct CbmDigiTimeslice {
-  CbmDigiData fData;
-  fles::TimesliceDescriptor fDesc;
+class CbmDigiTimeslice {
+
+public:
+  CbmDigiData fData;                ///< Timeslice data
+  fles::TimesliceDescriptor fDesc;  ///< Timeslice descriptor (metadata)
+
   friend class boost::serialization::access;
+  /** @brief BOOST serializer**/
   template<class Archive>
   void serialize(Archive& ar, const unsigned int /*version*/)
   {
     ar& fData;
     ar& fDesc;
   }
+
+  /** @brief Clear content **/
   void Clear()
   {
     fData.Clear();
diff --git a/core/data/tof/CbmTofDigiData.h b/core/data/tof/CbmTofDigiData.h
index 45cabfbe8e9d65871345054787ed68460520ad1b..dcd73b15988a039ddcafb01588787d8c493d39d1 100644
--- a/core/data/tof/CbmTofDigiData.h
+++ b/core/data/tof/CbmTofDigiData.h
@@ -14,6 +14,7 @@
 
 #include <boost/serialization/access.hpp>
 #include <boost/serialization/base_object.hpp>
+#include <boost/serialization/vector.hpp>
 
 #include <vector>
 
diff --git a/reco/mq/CbmDevTrigger.h b/reco/mq/CbmDevTrigger.h
index ffe7acfe59414d9dc3e296f09f564dc27aafe5ed..5ab19fdf16ded615eb797db1462477a019725c5a 100644
--- a/reco/mq/CbmDevTrigger.h
+++ b/reco/mq/CbmDevTrigger.h
@@ -28,7 +28,7 @@
 #include <chrono>
 #include <vector>
 
-struct CbmDigiTimeslice;
+class CbmDigiTimeslice;
 class CbmTsEventHeader;
 class TimesliceMetaData;
 
diff --git a/reco/mq/CbmDevUnpack.h b/reco/mq/CbmDevUnpack.h
index 03bde82adb2e785322fe0b5f0cb8039acd3602a1..af5a996e045e8d7f11c32e10ff0a7eb81f67a2e9 100644
--- a/reco/mq/CbmDevUnpack.h
+++ b/reco/mq/CbmDevUnpack.h
@@ -30,7 +30,7 @@
 #include "UnpackSts.h"
 
 class TimesliceMetaData;
-struct CbmDigiTimeslice;
+class CbmDigiTimeslice;
 
 class CbmDevUnpack : public FairMQDevice {
 public:
diff --git a/reco/tasks/CbmTaskTriggerDigi.h b/reco/tasks/CbmTaskTriggerDigi.h
index 61060979847d39ad0ea7c89d56bd67f18d8e7340..3a6f0bf59dcd4eb4a577e25e5518130382e6e608 100644
--- a/reco/tasks/CbmTaskTriggerDigi.h
+++ b/reco/tasks/CbmTaskTriggerDigi.h
@@ -19,7 +19,7 @@
 
 class CbmDigiBranchBase;
 class CbmDigiManager;
-struct CbmDigiTimeslice;
+class CbmDigiTimeslice;
 
 using namespace std;