From 17c48feed2637f4b6edb0aa4dbcc537930057d24 Mon Sep 17 00:00:00 2001 From: Volker Friese <v.friese@gsi.de> Date: Thu, 8 Dec 2022 14:24:25 +0000 Subject: [PATCH] Introduce digi container classes for each detector --- algo/data/CMakeLists.txt | 4 +-- core/data/CMakeLists.txt | 15 +++++++-- core/data/CbmDataLinkDef.h | 12 ++++---- core/data/base/CbmDigiData.h | 29 ++++++++---------- core/data/much/CbmMuchDigiData.h | 52 ++++++++++++++++++++++++++++++++ core/data/psd/CbmPsdDigiData.h | 52 ++++++++++++++++++++++++++++++++ core/data/rich/CbmRichDigiData.h | 52 ++++++++++++++++++++++++++++++++ core/data/sts/CbmStsDigiData.h | 52 ++++++++++++++++++++++++++++++++ core/data/tof/CbmTofDigiData.h | 52 ++++++++++++++++++++++++++++++++ core/data/trd/CbmTrdDigiData.h | 52 ++++++++++++++++++++++++++++++++ 10 files changed, 345 insertions(+), 27 deletions(-) create mode 100644 core/data/much/CbmMuchDigiData.h create mode 100644 core/data/psd/CbmPsdDigiData.h create mode 100644 core/data/rich/CbmRichDigiData.h create mode 100644 core/data/sts/CbmStsDigiData.h create mode 100644 core/data/tof/CbmTofDigiData.h create mode 100644 core/data/trd/CbmTrdDigiData.h diff --git a/algo/data/CMakeLists.txt b/algo/data/CMakeLists.txt index 8d09e99b7d..d35d41d14f 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 f5497b388d..29151c2da7 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 d16afef6d0..50694aa1c0 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 28448e2466..c8b8e20385 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 0000000000..9e748a8334 --- /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 0000000000..3c5d6dda4a --- /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 0000000000..07597098c3 --- /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 0000000000..0aaca34199 --- /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 0000000000..45cabfbe8e --- /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 0000000000..a3c3b750ce --- /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 -- GitLab