diff --git a/reco/detectors/tof/CbmTofEventClusterizer.cxx b/reco/detectors/tof/CbmTofEventClusterizer.cxx
index 22b3f682d0cefc44c14173ec5331c258953f2695..22cab5bf42a29c0600b999804de0bcd268fdd3b3 100644
--- a/reco/detectors/tof/CbmTofEventClusterizer.cxx
+++ b/reco/detectors/tof/CbmTofEventClusterizer.cxx
@@ -31,6 +31,7 @@
 #include "CbmTofGeoHandler.h"       // in tof/TofTools
 #include "CbmTofHit.h"              // in cbmdata/tof
 #include "CbmTofPoint.h"            // in cbmdata/tof
+#include "CbmTzdDigi.h"             // in cbmdata/global
 #include "CbmVertex.h"
 
 #include "TTrbHeader.h"
@@ -392,13 +393,13 @@ void CbmTofEventClusterizer::Exec(Option_t* option)
 
       for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kT0Digi); iDigi++) {
         Int_t iDigiIndex       = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kT0Digi, iDigi));
-        CbmTofDigi tDigi       = fT0DigiVec->at(iDigiIndex);
+        CbmTofDigi tDigi(fDigiMan->Get<CbmTzdDigi>(iDigiIndex));
         if (tDigi.GetType() != 5)
           LOG(fatal) << "Wrong T0 type " << tDigi.GetType() << ", Addr 0x" << std::hex << tDigi.GetAddress();
         if (tDigi.GetSide() == 1) {  // HACK for May22 setup
           tDigi.SetAddress(tDigi.GetSm(), tDigi.GetRpc(), tDigi.GetChannel() + 6, 0, tDigi.GetType());
         }
-        fTofDigiVec.push_back(CbmTofDigi(tDigi));
+        fTofDigiVec.push_back(tDigi);
       }
       for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kTofDigi); iDigi++) {
         Int_t iDigiIndex        = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofDigi, iDigi));
@@ -582,10 +583,9 @@ Bool_t CbmTofEventClusterizer::RegisterInputs()
     LOG(error) << GetName() << ": No Tof digi input!";
     return kFALSE;
   }
-  if (fDigiMan->IsPresent(ECbmModuleId::kT0)) { LOG(info) << GetName() << ": separate T0 digi input!"; }
+  if (fDigiMan->IsPresent(ECbmModuleId::kT0)) { LOG(info) << GetName() << ": found separate T0 digi input!"; }
   else {
-    fT0DigiVec = fManager->InitObjectAs<std::vector<CbmTofDigi> const*>("T0Digi");
-    if (!fT0DigiVec) { LOG(info) << "No T0 digi input vector found."; }
+    LOG(info) << "No separate T0 digi input found.";
   }  // if( ! fT0DigiVec )
 
   fTrbHeader = (TTrbHeader*) fManager->GetObject("TofTrbHeader.");
diff --git a/reco/detectors/tof/CbmTofEventClusterizer.h b/reco/detectors/tof/CbmTofEventClusterizer.h
index fb32c43542ef0186e3cfef91825f58a3734637c3..85e01933ab06a071d375feb547df5ae501a6403c 100644
--- a/reco/detectors/tof/CbmTofEventClusterizer.h
+++ b/reco/detectors/tof/CbmTofEventClusterizer.h
@@ -253,7 +253,6 @@ private:
   const std::vector<CbmMatch>* fTofDigiPointMatches = nullptr;  // TOF MC point matches
   //TClonesArray          * fTofDigisColl;     // TOF Digis
   std::vector<CbmTofDigi> fTofDigiVec {};               //! TOF Digis
-  const std::vector<CbmTofDigi>* fT0DigiVec = nullptr;  //! T0 Digis
   CbmDigiManager* fDigiMan;                             // TOF Input Digis
   TClonesArray* fEventsColl;                            // CBMEvents (time based)
 
diff --git a/reco/detectors/tof/CbmTofHitMaker.cxx b/reco/detectors/tof/CbmTofHitMaker.cxx
index d37137748293e48d89d5a19a453ca752a12af7c4..57c79293881800df2fe7d972018daba615a25e16 100644
--- a/reco/detectors/tof/CbmTofHitMaker.cxx
+++ b/reco/detectors/tof/CbmTofHitMaker.cxx
@@ -31,6 +31,7 @@
 #include "CbmTofGeoHandler.h"       // in tof/TofTools
 #include "CbmTofHit.h"              // in cbmdata/tof
 #include "CbmTofPoint.h"            // in cbmdata/tof
+#include "CbmTzdDigi.h"             // in cbmdata/global
 #include "CbmVertex.h"
 
 #include "TTrbHeader.h"
@@ -336,10 +337,10 @@ void CbmTofHitMaker::Exec(Option_t* option)
 
       for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kT0Digi); iDigi++) {
         Int_t iDigiIndex       = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kT0Digi, iDigi));
-        const CbmTofDigi tDigi = fT0DigiVec->at(iDigiIndex);
+        CbmTofDigi tDigi(fDigiMan->Get<CbmTzdDigi>(iDigiIndex));
         if (tDigi.GetType() != 5)
           LOG(fatal) << "Wrong T0 type " << tDigi.GetType() << ", Addr 0x" << std::hex << tDigi.GetAddress();
-        fTofDigiVec.push_back(CbmTofDigi(tDigi));
+        fTofDigiVec.push_back(tDigi);
       }
       for (Int_t iDigi = 0; iDigi < tEvent->GetNofData(ECbmDataType::kTofDigi); iDigi++) {
         Int_t iDigiIndex        = static_cast<Int_t>(tEvent->GetIndex(ECbmDataType::kTofDigi, iDigi));
@@ -476,10 +477,9 @@ Bool_t CbmTofHitMaker::RegisterInputs()
     LOG(error) << GetName() << ": No Tof digi input!";
     return kFALSE;
   }
-  if (fDigiMan->IsPresent(ECbmModuleId::kT0)) { LOG(info) << GetName() << ": separate T0 digi input!"; }
+  if (fDigiMan->IsPresent(ECbmModuleId::kT0)) { LOG(info) << GetName() << ": found separate T0 digi input!"; }
   else {
-    fT0DigiVec = fManager->InitObjectAs<std::vector<CbmTofDigi> const*>("T0Digi");
-    if (!fT0DigiVec) { LOG(info) << "No T0 digi input vector found."; }
+    LOG(info) << "No separate T0 digi input found.";
   }  // if( ! fT0DigiVec )
 
   fTrbHeader = (TTrbHeader*) fManager->GetObject("TofTrbHeader.");
diff --git a/reco/detectors/tof/CbmTofHitMaker.h b/reco/detectors/tof/CbmTofHitMaker.h
index f3c76a4cefcd3c0b1151fad43884fc61a16cb905..fb2fd0c84e2b0e1fe51dff4210dc250c40634bac 100644
--- a/reco/detectors/tof/CbmTofHitMaker.h
+++ b/reco/detectors/tof/CbmTofHitMaker.h
@@ -245,7 +245,6 @@ private:
   TClonesArray* fMcTracksColl;   // MC tracks
   //TClonesArray          * fTofDigisColl;     // TOF Digis
   std::vector<CbmTofDigi> fTofDigiVec {};               //! TOF Digis
-  const std::vector<CbmTofDigi>* fT0DigiVec = nullptr;  //! T0 Digis
   CbmDigiManager* fDigiMan;                             // TOF Input Digis
   TClonesArray* fEventsColl;                            // CBMEvents (time based)