diff --git a/core/data/CbmDataLinkDef.h b/core/data/CbmDataLinkDef.h
new file mode 100644
index 0000000000000000000000000000000000000000..ecec751d79a71d6c3a51c2bac3caec43d041ea20
--- /dev/null
+++ b/core/data/CbmDataLinkDef.h
@@ -0,0 +1,206 @@
+/* Copyright (C) 2009-2020 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
+   SPDX-License-Identifier: GPL-3.0-only
+   Authors: Florian Uhlig [committer], Volker Friese */
+
+#ifdef __CINT__
+
+#pragma link off all globals;
+#pragma link off all classes;
+#pragma link off all functions;
+
+#pragma link C++ class CbmAddress;
+#pragma link C++ class CbmTimeSlice;
+#pragma link C++ class CbmDigiBranchBase + ;
+#pragma link C++ class CbmEvent + ;
+#pragma link C++ class CbmEventStore + ;
+#pragma link C++ class CbmHit;
+#pragma link C++ class CbmMCTrack + ;
+#pragma link C++ class CbmPixelHit + ;
+#pragma link C++ class CbmStripHit + ;
+#pragma link C++ class CbmTrack + ;
+#pragma link C++ class CbmTrackParam;
+#pragma link C++ class CbmTrackMatch + ;
+#pragma link C++ class CbmCluster + ;
+#pragma link C++ class CbmMatch + ;
+#pragma link C++ class CbmTrackMatchNew + ;
+#pragma link C++ class CbmLink + ;
+#pragma link C++ class CbmModuleList;
+#pragma link C++ class CbmErrorMessage + ;
+#pragma link C++ class CbmRawEvent + ;
+#pragma link C++ class CbmTsEventHeader + ;
+#pragma link C++ class std::vector<CbmErrorMessage> + ;
+
+// ---In base
+#pragma link C++ class CbmDigiBranchBase + ;
+#pragma link C++ class CbmDigiContainer + ;
+
+#pragma link C++ class CbmMCTrack + ;
+#pragma link C++ class CbmMCEventList;
+#pragma link C++ class CbmMCEventInfo;
+
+#pragma link C++ class CbmMvdCluster + ;
+#pragma link C++ class CbmMvdDetectorId + ;
+#pragma link C++ class CbmMvdDigi + ;
+#pragma link C++ class CbmMvdHit + ;
+#pragma link C++ class CbmMvdPoint + ;
+#pragma link C++ class CbmMvdHitMatch + ;
+
+#pragma link C++ namespace CbmStsAddress;
+#pragma link C++ class CbmStsCluster + ;
+#pragma link C++ class CbmStsDigi + ;
+#pragma link C++ class CbmStsHit + ;
+#pragma link C++ class CbmStsPoint + ;
+#pragma link C++ class CbmStsTrack + ;
+#pragma link C++ enum EStsElementLevel;
+
+#pragma link C++ class CbmRichPoint + ;
+#pragma link C++ class CbmRichHit + ;
+#pragma link C++ class CbmRichRing + ;
+#pragma link C++ class CbmRichTrbDigi + ;
+#pragma link C++ class CbmRichDigi + ;
+
+#pragma link C++ class CbmMuchCluster + ;
+#pragma link C++ class CbmMuchPixelHit + ;
+#pragma link C++ class CbmMuchPoint + ;
+#pragma link C++ class CbmMuchDigi + ;
+#pragma link C++ class CbmMuchBeamTimeDigi + ;
+#pragma link C++ class CbmMuchDigiMatch + ;
+#pragma link C++ class CbmMuchTrack + ;
+#pragma link C++ class CbmMuchAddress + ;
+
+#pragma link C++ class CbmTrdHit + ;
+#pragma link C++ class CbmTrdPoint + ;
+#pragma link C++ class CbmTrdTrack + ;
+#pragma link C++ class CbmTrdDigi + ;
+#pragma link C++ class CbmTrdAddress + ;
+#pragma link C++ class CbmTrdCluster + ;
+#pragma link C++ class CbmTrdRawMessageSpadic + ;
+
+#pragma link C++ class CbmTofHit + ;
+#pragma link C++ class CbmTofPoint + ;
+#pragma link C++ class CbmTofDigi + ;
+#pragma link C++ class CbmTofAddress + ;
+#pragma link C++ class CbmTofTracklet + ;
+#pragma link C++ class CbmTofTrackletParam + ;
+
+#pragma link C++ class CbmPsdDigi + ;
+#pragma link C++ class CbmPsdDsp + ;
+#pragma link C++ class CbmPsdHit;
+#pragma link C++ class CbmPsdPoint + ;
+#pragma link C++ class CbmPsdAddress;
+#pragma link C++ class CbmPsdMCbmHit;
+
+// --- data/global
+#pragma link C++ class CbmGlobalTrack + ;
+#pragma link C++ class CbmTofTrack + ;
+#pragma link C++ class CbmVertex + ;
+#pragma link C++ class std::vector < CbmDigiEvent>;
+
+// --- data/raw
+#pragma link C++ class AccTimingEvent;
+#pragma link C++ class AccStatusTs;
+#pragma link C++ class stsxyter::Message;
+#pragma link C++ class gdpbv100::Message;
+#pragma link C++ class gdpbv100::FullMessage;
+#pragma link C++ class critof001::Message;
+#pragma link C++ class critof001::FullMessage;
+#pragma link C++ class TimesliceMetaData;
+#pragma link C++ class PsdDataV000::PsdGbtReader;
+#pragma link C++ class PsdDataV100::PsdGbtReader;
+
+#pragma link C++ class std::vector < stsxyter::Message>;
+#pragma link C++ class std::vector < gdpbv100::Message>;
+#pragma link C++ class std::vector < CbmTrdRawMessageSpadic>;
+
+#pragma link C++ enum ECbmTreeAccess;
+#pragma link C++ enum ECbmModuleId;
+#pragma link C++ enum ECbmDataType;
+
+#pragma link C++ class vector < CbmMvdDigi> + ;
+#pragma link C++ class vector < CbmStsDigi> + ;
+#pragma link C++ class vector < CbmRichDigi> + ;
+#pragma link C++ class vector < CbmMuchDigi> + ;
+#pragma link C++ class vector < CbmMuchBeamTimeDigi> + ;
+#pragma link C++ class vector < CbmTrdDigi> + ;
+#pragma link C++ class vector < CbmTofDigi> + ;
+#pragma link C++ class vector < CbmPsdDigi> + ;
+#pragma link C++ class vector < CbmPsdDsp> + ;
+#pragma link C++ class vector < CbmMatch> + ;
+#pragma link C++ class CbmDigiVector < CbmMvdDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmStsDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmRichDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmMuchDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmMuchBeamTimeDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmTrdDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmTofDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmPsdDigi> + ;
+#pragma link C++ class CbmDigiVector < CbmPsdDsp> + ;
+#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> + ;
+#pragma link C++ class CbmDigiTimeslice + ;
+
+/* clang-format off */
+#pragma read sourceClass="CbmStsDigi" version="[7]" targetClass="CbmStsDigi" \
+    source="int64_t fTime; int32_t fAddress; uint16_t fChannel; uint16_t fCharge" \
+    target="" \
+    include="Logger.h" \
+    code="{ newObj->SetAddressAndTime(onfile.fAddress, onfile.fTime); \
+            newObj->SetChannelAndCharge(onfile.fChannel, onfile.fCharge); \
+          }"
+
+#pragma read sourceClass = "CbmTofDigi" version = "[1-2]" targetClass = "CbmTofDigi" source =                          \
+  "uint32_t fuAddress" target = "fuAddress" include = "Logger.h" code =                                                \
+    "{ uint32_t system = (onfile.fuAddress >> 0) & ((1 << 4) - 1); \
+           uint32_t smId = (onfile.fuAddress >> 4) & ((1 << 8) - 1); \
+           uint32_t smType = (onfile.fuAddress >> 12) & ((1 << 4) - 1); \
+           uint32_t rpcId = (onfile.fuAddress >> 16) & ((1 << 7) - 1); \
+           uint32_t chSide = (onfile.fuAddress >> 23) & ((1 << 1) - 1); \
+           uint32_t chId = (onfile.fuAddress >> 24) & ((1 << 8) - 1); \
+           if ( smId > 127 || rpcId > 63 || chId > 63 ) { \
+             LOG(error) << \"You are trying to read an outdated version of CbmTofDigi\"; \
+             LOG(error) << \"where the unique tof address can't be converted\"; \
+             LOG(error) << \"automatically to the new tof addressing scheme.\"; \
+             LOG(fatal) << \"Stop execution.\"; \
+           } \
+           uint32_t rpcType = 0; \
+           fuAddress = (system & ((1 << 4) - 1)) \
+                     + ((smId & ((1 << 7) - 1)) << 4) \
+                     + ((smType & ((1 << 4) - 1)) << 11) \
+                     + ((chSide & ((1 << 1) - 1)) << 21) \
+                     + ((rpcId & ((1 << 6) - 1)) << 15) \
+                     + ((chId & ((1 << 6) - 1)) << 22) \
+                     + ((rpcType & ((1 << 4) - 1)) << 28); \
+         }"
+/* clang-format on */
+
+
+#pragma read sourceClass = "CbmTofHit" version = "[1-4]" targetClass = "CbmTofHit" source = "" target = "" include =   \
+  "Logger.h" code                                                                                     = "{ \
+           LOG(error); \
+           LOG(error) << \"You are trying to read an outdated version of CbmTofHit\"; \
+           LOG(error) << \"where the unique tof address can't be converted\"; \
+           LOG(error) << \"automatically to the new tof addressing scheme.\"; \
+           LOG(error); \
+           LOG(fatal) << \"Stop execution.\"; \
+         }"
+
+#pragma read sourceClass = "CbmTofPoint" version = "[1-3]" targetClass = "CbmTofPoint" source = "" target =            \
+  "" include = "Logger.h" code = "{ \
+           LOG(error); \
+           LOG(error) << \"You are trying to read an outdated version of CbmTofPoint\"; \
+           LOG(error) << \"where the unique tof address can't be converted\"; \
+           LOG(error) << \"automatically to the new tof addressing scheme.\"; \
+           LOG(error); \
+           LOG(fatal) << \"Stop execution.\"; \
+         }"
+#endif