From 0fc228c4b0d4fe2c360b226088d40cf6d3792d65 Mon Sep 17 00:00:00 2001 From: P-A Loizeau <p.-a.loizeau@gsi.de> Date: Thu, 2 Jul 2020 14:58:12 +0200 Subject: [PATCH] Add boost serializer interface to RICH, TRD and PSD digi + add interface for waveform fit to PSD digi --- core/data/psd/CbmPsdDigi.h | 62 ++++++++++++++++++++++++++++++------ core/data/rich/CbmRichDigi.h | 12 +++++++ core/data/trd/CbmTrdDigi.h | 13 ++++++++ 3 files changed, 77 insertions(+), 10 deletions(-) diff --git a/core/data/psd/CbmPsdDigi.h b/core/data/psd/CbmPsdDigi.h index 6a4b84765a..8e3d8ac6ab 100644 --- a/core/data/psd/CbmPsdDigi.h +++ b/core/data/psd/CbmPsdDigi.h @@ -24,6 +24,10 @@ #include "CbmDefs.h" // for ECbmModuleId::kPsd #include "CbmPsdAddress.h" // for CbmPsdAddress +#include <boost/serialization/access.hpp> +#include <boost/serialization/base_object.hpp> + + class CbmPsdDigi { @@ -33,23 +37,25 @@ class CbmPsdDigi **/ CbmPsdDigi(); + /** @brief Constructor with assignment ** @param address Unique channel address ** @param edep Energy deposition - ** @param time Time [adc counts] + ** @param time Time [ns] **/ CbmPsdDigi( UInt_t address, Double_t edep, Double_t time ); + /** @brief Constructor with detailed assignment. ** @param moduleID Module Identifier ** @param sectionID Section Identifier ** @param edep Energy deposition - ** @param time Time [adc counts] + ** @param time Time [ns] **/ CbmPsdDigi( UInt_t moduleId, UInt_t sectionId, Double_t edep, Double_t time ); - /** @brief Copy constructor **/ + /** Copy constructor **/ CbmPsdDigi(const CbmPsdDigi&); @@ -57,17 +63,19 @@ class CbmPsdDigi CbmPsdDigi(CbmPsdDigi&&); - /** @brief Destructor **/ - ~CbmPsdDigi(); - - /** Assignment operator **/ CbmPsdDigi& operator=(const CbmPsdDigi&); - /** Move assignment operator **/ + /** Move Assignment operator **/ CbmPsdDigi& operator=(CbmPsdDigi&&); + + /** Destructor **/ + ~CbmPsdDigi(); + + + /** @brief Address ** @return Unique channel address (see CbmPsdAddress) **/ @@ -134,6 +142,18 @@ class CbmPsdDigi **/ std::string ToString() const; +//additional + UInt_t GetAmpl() const { return fuAmpl; }; + UInt_t GetZL() const { return fuZL; }; + Double_t GetEdepWfm() const { return fdEdepWfm; }; + void SetAmpl(UInt_t ampl) { fuAmpl = ampl; } + void SetZL(UInt_t zl) { fuZL = zl; } + void SetEdepWfm( Double_t edep ) { fdEdepWfm = edep; } + + Float_t ffFitHarmonic1 = 0.; + Float_t ffFitHarmonic2 = 0.; + Float_t ffFitR2 = 999.; + Float_t ffFitEdep = 0.; private: @@ -141,7 +161,29 @@ class CbmPsdDigi Double_t fdTime = -1.; /// Time of measurement UInt_t fuAddress = 0; /// Unique channel address - ClassDefNV(CbmPsdDigi, 3); +//additional + UInt_t fuAmpl = 0; + UInt_t fuZL = 0; + Double_t fdEdepWfm = 0.; + + /// BOOST serialization interface + friend class boost::serialization::access; + template <class Archive> + void serialize(Archive& ar, const unsigned int /*version*/) + { + ar& ffFitHarmonic1; + ar& ffFitHarmonic2; + ar& ffFitR2; + ar& ffFitEdep; + ar& fdEdep; + ar& fdTime; + ar& fuAddress; + ar& fuAmpl; + ar& fuZL; + ar& fdEdepWfm; + } + + ClassDefNV(CbmPsdDigi, 4); }; -#endif // CBMPSDDIGIM_H +#endif // CBMPSDDIGI_H diff --git a/core/data/rich/CbmRichDigi.h b/core/data/rich/CbmRichDigi.h index 6aa71b4ff9..bb036c3b59 100644 --- a/core/data/rich/CbmRichDigi.h +++ b/core/data/rich/CbmRichDigi.h @@ -16,6 +16,8 @@ #include "CbmDefs.h" // for kRich +#include <boost/serialization/access.hpp> +#include <boost/serialization/base_object.hpp> #ifndef DATA_RICH_CBMRICHDIGI_H_ #define DATA_RICH_CBMRICHDIGI_H_ @@ -96,6 +98,16 @@ private: */ Double_t fToT; + /// BOOST serialization interface + friend class boost::serialization::access; + template <class Archive> + void serialize(Archive& ar, const unsigned int /*version*/) + { + ar& fAddress; + ar& fTime; + ar& fToT; + } + ClassDefNV(CbmRichDigi, 3); }; diff --git a/core/data/trd/CbmTrdDigi.h b/core/data/trd/CbmTrdDigi.h index f85c9d82dd..6bc98ce69e 100644 --- a/core/data/trd/CbmTrdDigi.h +++ b/core/data/trd/CbmTrdDigi.h @@ -8,6 +8,9 @@ #include "CbmDefs.h" // for kTrd +#include <boost/serialization/access.hpp> +#include <boost/serialization/base_object.hpp> + class CbmTrdDigi { public: @@ -202,6 +205,16 @@ private: static const Int_t fgkFlgOffset = 26; static const Int_t fgkTrgOffset = 29; static const Int_t fgkTypOffset = 31; + + /// BOOST serialization interface + friend class boost::serialization::access; + template <class Archive> + void serialize(Archive& ar, const unsigned int /*version*/) + { + ar& fInfo; + ar& fCharge; + ar& fTime; + } ClassDefNV(CbmTrdDigi, 3); // Production ready TRD digit }; -- GitLab