CbmRoot
Loading...
Searching...
No Matches
CbmBmonDigi.h
Go to the documentation of this file.
1/* Copyright (C) 2022-2025 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau, Volker Friese [committer], Sergei Zharko */
4
5
6#ifndef CBMBMONDIGI_H
7#define CBMBMONDIGI_H 1
8
9#include "CbmDefs.h"
10#include "CbmTofAddress.h"
11
12#ifndef NO_ROOT
13#include <Rtypes.h> // for ClassDef
14#endif
15
16#include <boost/serialization/access.hpp>
17#include <boost/serialization/base_object.hpp>
18
19#include <cstdint>
20
21#ifndef CBMTOFDIGI_H
22class CbmTofDigi; // For declaration of the conversion constructor without starting a cyclic dependency
23#endif // CBMTOFDIGI_H
24
32
33public:
36 CbmBmonDigi() = default;
37
43 CbmBmonDigi(int32_t addr, double time, float charge) : fAddress(addr), fTime(time), fCharge(charge) {};
44
45
49 CbmBmonDigi(const CbmTofDigi& digi);
50
51
55 CbmBmonDigi(const CbmTofDigi* digi);
56
57
60
64 static const char* GetBranchName() { return "BmonDigi"; }
65
66
70 static const char* GetClassName() { return "CbmBmonDigi"; }
71
72
77
81 int32_t GetAddress() const { return fAddress; }
82
83
87 double GetTime() const { return fTime; }
88
93 int32_t GetChannel() const { return CbmTofAddress::GetChannelId(fAddress); }
94
98 double GetCharge() const { return fCharge; }
99
100
104 void SetAddress(int32_t addr) { fAddress = addr; }
105
106
110 void SetTime(double time) { fTime = time; }
111
112
116 void SetCharge(float charge) { fCharge = charge; }
117
118
119private:
120 // FIXME: SZh 5.2.2025: change address type int32_t -> uint32_t
122 double fTime = -1.;
123 float fCharge = -1.;
124
126
127 template<class Archive>
128 void serialize(Archive& ar, const unsigned int /*version*/)
129 {
130 ar& fAddress;
131 ar& fTime;
132 ar& fCharge;
133 }
134
135#ifndef NO_ROOT
137#endif
138};
139
140#endif /* CBMBMONDIGI_H */
XPU_D constexpr auto ToIntegralType(T enumerator) -> typename std::underlying_type< T >::type
Definition CbmDefs.h:29
ECbmModuleId
Definition CbmDefs.h:39
Data class for a signal in the t-zero detector.
Definition CbmBmonDigi.h:31
~CbmBmonDigi()
Destructor.
Definition CbmBmonDigi.h:59
double GetTime() const
Time.
Definition CbmBmonDigi.h:87
double GetCharge() const
Charge.
Definition CbmBmonDigi.h:98
static const char * GetBranchName()
Get the desired name of the branch for this objects in the cbm output tree (static)
Definition CbmBmonDigi.h:64
int32_t fAddress
Unique CBM address.
double fTime
Time of signal in BMON [ns].
void serialize(Archive &ar, const unsigned int)
void SetCharge(float charge)
Set the measured charge.
int32_t GetAddress() const
Address.
Definition CbmBmonDigi.h:81
static ECbmModuleId GetSystem()
Definition CbmBmonDigi.h:76
CbmBmonDigi(int32_t addr, double time, float charge)
Constructor.
Definition CbmBmonDigi.h:43
ClassDefNV(CbmBmonDigi, 1)
void SetAddress(int32_t addr)
Set the address.
int32_t GetChannel() const
Gets channel ID.
Definition CbmBmonDigi.h:93
friend class boost::serialization::access
float fCharge
Charge.
static const char * GetClassName()
Class name (static)
Definition CbmBmonDigi.h:70
CbmBmonDigi()=default
Default Constructor.
void SetTime(double time)
Set the measurement time.
static int32_t GetChannelId(uint32_t address)
Data class for expanded digital TOF information.
Definition CbmTofDigi.h:47