Skip to content
Snippets Groups Projects
Commit e878ebfe authored by Volker Friese's avatar Volker Friese Committed by Pierre-Alain Loizeau
Browse files

Make CbmDigiData, CbmDigiEvent and CbmDigiTimeslice classes (previously...

Make CbmDigiData, CbmDigiEvent and CbmDigiTimeslice classes (previously structs) with ROOT streamers
parent bddfe3b4
No related branches found
No related tags found
1 merge request!1051Make CbmDigiData, CbmDigiEvent and CbmDigiTimeslice classes (previously...
/* 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();
......
/* 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 */
/* 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();
......
......@@ -14,6 +14,7 @@
#include <boost/serialization/access.hpp>
#include <boost/serialization/base_object.hpp>
#include <boost/serialization/vector.hpp>
#include <vector>
......
......@@ -28,7 +28,7 @@
#include <chrono>
#include <vector>
struct CbmDigiTimeslice;
class CbmDigiTimeslice;
class CbmTsEventHeader;
class TimesliceMetaData;
......
......@@ -30,7 +30,7 @@
#include "UnpackSts.h"
class TimesliceMetaData;
struct CbmDigiTimeslice;
class CbmDigiTimeslice;
class CbmDevUnpack : public FairMQDevice {
public:
......
......@@ -19,7 +19,7 @@
class CbmDigiBranchBase;
class CbmDigiManager;
struct CbmDigiTimeslice;
class CbmDigiTimeslice;
using namespace std;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment