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;