Belle II Software  release-05-01-25
PXDDAQDHEStatus.h
1 /**************************************************************************
2  * BASF2 (Belle Analysis Framework 2) *
3  * Copyright(C) 2010 - Belle II Collaboration *
4  * *
5  * Author: The Belle II Collaboration *
6  * Contributors: bjoern.spruck@belle2.org *
7  * Created: Dez 2017 *
8  * *
9  * This software is provided "as is" without any warranty. *
10  **************************************************************************/
11 
12 #pragma once
13 
14 #include <vxd/dataobjects/VxdID.h>
15 #include <pxd/dataobjects/PXDDAQDHPStatus.h>
16 #include <pxd/dataobjects/PXDErrorFlags.h>
17 
18 
19 namespace Belle2 {
26  typedef std::tuple<uint8_t, uint16_t, uint8_t> PXDDAQDHPComMode;
27  using Belle2::PXD::PXDError::PXDErrorFlags;
28  using Belle2::PXD::PXDError::EPXDErrMask;
29 
37  class PXDDAQDHEStatus {
38  public:
39 
43  m_rawCount(0), m_redCount(0), m_errorinfo(0) {}
44 
52  PXDDAQDHEStatus(VxdID id, int dheid, PXDErrorFlags mask, unsigned short tg,
53  unsigned short fn) : m_errorMask(mask), m_critErrorMask(0), m_usable(true), m_sensorID(id), m_dheID(dheid),
55  {}
56 
60  bool isUsable() const { return m_usable; }
61 
64  void markUnusable() { m_usable = false; m_errorMask |= EPXDErrMask::c_UNUSABLE_DATA;}
65 
69  void setErrorMask(PXDErrorFlags m) { m_errorMask = m; }
70 
74  PXDErrorFlags getErrorMask(void) const { return m_errorMask; }
75 
79  void setCritErrorMask(PXDErrorFlags m) { m_critErrorMask = m; }
80 
84  PXDErrorFlags getCritErrorMask(void) const { return m_critErrorMask; }
85 
91  void Decide(void) {m_usable = (m_errorMask & m_critErrorMask) == 0ull && (m_errorMask & EPXDErrMask::c_UNUSABLE_DATA) == 0ull;}
92 
94  void setDHEID(VxdID id, int dheid) { m_sensorID = id; m_dheID = dheid;};
96  unsigned short getDHEID(void) const { return m_dheID;};
98  VxdID getSensorID(void) const { return m_sensorID;};
99 
101  void setCounters(uint32_t raw, uint32_t red) {m_rawCount = raw; m_redCount = red;};
103  void getCounters(uint32_t& raw, uint32_t& red) const { raw = m_rawCount; red = m_redCount;};
105  uint32_t getRawCnt(void) const { return m_rawCount;};
107  uint32_t getRedCnt(void) const { return m_redCount;};
109  void setTriggerGate(unsigned int tg) { m_triggerGate = tg;};
111  unsigned short getTriggerGate(void) const { return m_triggerGate;};
113  unsigned short getStartRow(void) const { return m_triggerGate * 4;};
115  void setFrameNr(unsigned int fn) { m_frameNr = fn;};
117  unsigned short getFrameNr(void) const { return m_frameNr;};
118 
119 
121  unsigned short getDHPFoundMask(void) { return m_dhp_found_mask;};
123  void setDHPFoundMask(unsigned short dhpmask) { m_dhp_found_mask = dhpmask;};
124 
126  void setEndErrorInfo(uint32_t e) { m_errorinfo = e;};
128  uint32_t getEndErrorInfo(void) const { return m_errorinfo;};
129 
133  void addDHP(PXDDAQDHPStatus& daqdhp) { m_pxdDHP.push_back(daqdhp);};
134 
139  template<class ...Args> PXDDAQDHPStatus& newDHP(Args&& ... params)
140  {
141  /*return*/ m_pxdDHP.emplace_back(std::forward<Args>(params)...);
142  return m_pxdDHP.back();
143  }
144 
146  std::vector<PXDDAQDHPStatus>::iterator begin() { return m_pxdDHP.begin(); };
148  std::vector<PXDDAQDHPStatus>::iterator end() { return m_pxdDHP.end(); };
149 
151  std::vector<PXDDAQDHPStatus>::const_iterator cbegin() const { return m_pxdDHP.cbegin(); };
153  std::vector<PXDDAQDHPStatus>::const_iterator cend() const { return m_pxdDHP.cend(); };
155  PXDDAQDHPStatus& dhp_back() { return m_pxdDHP.back(); };
157  size_t dhp_size() const { return m_pxdDHP.size(); };
158 
162  auto addCM(PXDDAQDHPComMode& daqcm) { return m_commode.push_back(daqcm);};
163 
165  std::vector<PXDDAQDHPComMode>::iterator cm_begin() { return m_commode.begin(); };
167  std::vector<PXDDAQDHPComMode>::iterator cm_end() { return m_commode.end(); };
169  PXDDAQDHPComMode& cm_back() { return m_commode.back(); };
171  size_t cm_size() const { return m_commode.size(); };
173  int get_cm_dhp(int i) const { return std::get<0>(m_commode[i]); };
175  int get_cm_row(int i) const { return std::get<1>(m_commode[i]); };
177  int get_cm_value(int i) const { return std::get<2>(m_commode[i]); };
178 
179  private:
180  PXDErrorFlags m_errorMask;
181  PXDErrorFlags m_critErrorMask;
182  bool m_usable;
184  unsigned short m_sensorID;
185  unsigned short m_dheID;
186  unsigned short m_triggerGate;
187  unsigned short m_frameNr;
188  unsigned short m_dhp_found_mask;
189  uint32_t m_rawCount;
190  uint32_t m_redCount;
191  uint32_t m_errorinfo;
194  std::vector< PXDDAQDHPStatus> m_pxdDHP;
195 
197  std::vector < PXDDAQDHPComMode> m_commode;
198 
201 
202  }; // class PXDDAQDHEStatus
203 
205 } // end namespace Belle2
Belle2::PXDDAQDHEStatus::markUnusable
void markUnusable()
Mark Data in DHE as Unusable.
Definition: PXDDAQDHEStatus.h:73
Belle2::PXDDAQDHEStatus::get_cm_value
int get_cm_value(int i) const
Returns CM value at position i.
Definition: PXDDAQDHEStatus.h:186
Belle2::PXDDAQDHEStatus::get_cm_row
int get_cm_row(int i) const
Returns CM row at position i.
Definition: PXDDAQDHEStatus.h:184
Belle2::PXDDAQDHEStatus::getRedCnt
uint32_t getRedCnt(void) const
Set Reduced Data counter for reduction calculation.
Definition: PXDDAQDHEStatus.h:116
Belle2::PXDDAQDHEStatus::get_cm_dhp
int get_cm_dhp(int i) const
Returns CM DHP ID at position i.
Definition: PXDDAQDHEStatus.h:182
Belle2::PXDDAQDHEStatus::newDHP
PXDDAQDHPStatus & newDHP(Args &&... params)
New DHP information.
Definition: PXDDAQDHEStatus.h:148
Belle2::PXDDAQDHEStatus::m_redCount
uint32_t m_redCount
reduced byte count for monitoring
Definition: PXDDAQDHEStatus.h:199
Belle2::PXDDAQDHPComMode
std::tuple< uint8_t, uint16_t, uint8_t > PXDDAQDHPComMode
tuple of Chip ID (2 bit), Row (10 bit), Common Mode (6 bit)
Definition: PXDDAQDHEStatus.h:35
Belle2::PXDDAQDHEStatus::getCounters
void getCounters(uint32_t &raw, uint32_t &red) const
Get Data counters for reduction calculation.
Definition: PXDDAQDHEStatus.h:112
Belle2::PXDDAQDHEStatus::end
std::vector< PXDDAQDHPStatus >::iterator end()
iterator-based iteration for DHPs
Definition: PXDDAQDHEStatus.h:157
Belle2::PXDDAQDHEStatus::dhp_size
size_t dhp_size() const
Returns number of DHPs.
Definition: PXDDAQDHEStatus.h:166
Belle2::PXDDAQDHEStatus::isUsable
bool isUsable() const
Return Usability of data.
Definition: PXDDAQDHEStatus.h:69
Belle2::PXDDAQDHEStatus::Decide
void Decide(void)
Calculate the usability decision If any of the critical bits is set in the error mask the PXD data fr...
Definition: PXDDAQDHEStatus.h:100
Belle2::PXDDAQDHEStatus::getEndErrorInfo
uint32_t getEndErrorInfo(void) const
get erroinfo from the DHE END
Definition: PXDDAQDHEStatus.h:137
Belle2::PXDDAQDHEStatus::m_usable
bool m_usable
data is useable.
Definition: PXDDAQDHEStatus.h:191
Belle2::PXDDAQDHEStatus::getFrameNr
unsigned short getFrameNr(void) const
get Readout Frame number
Definition: PXDDAQDHEStatus.h:126
Belle2::PXDDAQDHEStatus::setDHPFoundMask
void setDHPFoundMask(unsigned short dhpmask)
set Mask for found DHPs with valid data
Definition: PXDDAQDHEStatus.h:132
Belle2::PXDDAQDHEStatus::ClassDef
ClassDef(PXDDAQDHEStatus, 7)
necessary for ROOT
Belle2::PXDDAQDHEStatus::getSensorID
VxdID getSensorID(void) const
Get VxdID of sensor.
Definition: PXDDAQDHEStatus.h:107
Belle2::PXDDAQDHEStatus::getDHPFoundMask
unsigned short getDHPFoundMask(void)
get Mask for found DHPs with valid data
Definition: PXDDAQDHEStatus.h:130
Belle2::PXDDAQDHEStatus::m_triggerGate
unsigned short m_triggerGate
Trigger Gate ("Startrow") from DHE header.
Definition: PXDDAQDHEStatus.h:195
Belle2::PXDDAQDHEStatus::m_rawCount
uint32_t m_rawCount
raw byte count for monitoring
Definition: PXDDAQDHEStatus.h:198
Belle2::PXDDAQDHEStatus::cm_begin
std::vector< PXDDAQDHPComMode >::iterator cm_begin()
iterator-based iteration for Common Mode
Definition: PXDDAQDHEStatus.h:174
Belle2::PXDDAQDHEStatus::setCounters
void setCounters(uint32_t raw, uint32_t red)
Set Data counters for reduction calculation.
Definition: PXDDAQDHEStatus.h:110
Belle2::PXDDAQDHEStatus::getRawCnt
uint32_t getRawCnt(void) const
Set Raw Data counter for reduction calculation.
Definition: PXDDAQDHEStatus.h:114
Belle2::PXDDAQDHEStatus::addCM
auto addCM(PXDDAQDHPComMode &daqcm)
Add Common Mode information.
Definition: PXDDAQDHEStatus.h:171
Belle2::PXDDAQDHEStatus::dhp_back
PXDDAQDHPStatus & dhp_back()
Returns PXDDAQDHPStatus for the last DHP.
Definition: PXDDAQDHEStatus.h:164
Belle2::PXDDAQDHEStatus::setDHEID
void setDHEID(VxdID id, int dheid)
Set VxdID and DHE ID of sensor.
Definition: PXDDAQDHEStatus.h:103
Belle2::PXDDAQDHEStatus::cm_back
PXDDAQDHPComMode & cm_back()
Returns last Common Mode for this event.
Definition: PXDDAQDHEStatus.h:178
Belle2::PXDDAQDHEStatus::cend
std::vector< PXDDAQDHPStatus >::const_iterator cend() const
const iterator-based iteration for DHPs
Definition: PXDDAQDHEStatus.h:162
Belle2::PXDDAQDHEStatus::begin
std::vector< PXDDAQDHPStatus >::iterator begin()
iterator-based iteration for DHPs
Definition: PXDDAQDHEStatus.h:155
Belle2::PXDDAQDHEStatus::getStartRow
unsigned short getStartRow(void) const
get Trigger Start Row
Definition: PXDDAQDHEStatus.h:122
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXDDAQDHEStatus::m_dheID
unsigned short m_dheID
DHE ID as delivered by DAQ.
Definition: PXDDAQDHEStatus.h:194
Belle2::PXDDAQDHEStatus::cbegin
std::vector< PXDDAQDHPStatus >::const_iterator cbegin() const
const iterator-based iteration for DHPs
Definition: PXDDAQDHEStatus.h:160
Belle2::PXDDAQDHEStatus::addDHP
void addDHP(PXDDAQDHPStatus &daqdhp)
Add DHP information.
Definition: PXDDAQDHEStatus.h:142
Belle2::PXDDAQDHEStatus::cm_size
size_t cm_size() const
Returns number of Common Mode blocks in this event.
Definition: PXDDAQDHEStatus.h:180
Belle2::PXDDAQDHEStatus::setTriggerGate
void setTriggerGate(unsigned int tg)
set Trigger Gate
Definition: PXDDAQDHEStatus.h:118
Belle2::PXDDAQDHEStatus::m_sensorID
unsigned short m_sensorID
Sensor ID.
Definition: PXDDAQDHEStatus.h:193
Belle2::PXDDAQDHEStatus::setCritErrorMask
void setCritErrorMask(PXDErrorFlags m)
Set Critical Error bit mask.
Definition: PXDDAQDHEStatus.h:88
Belle2::PXDDAQDHEStatus
The PXD DAQ DHE Status class.
Definition: PXDDAQDHEStatus.h:46
Belle2::PXDDAQDHEStatus::getDHEID
unsigned short getDHEID(void) const
Get DHE ID of sensor.
Definition: PXDDAQDHEStatus.h:105
Belle2::PXDDAQDHEStatus::getTriggerGate
unsigned short getTriggerGate(void) const
get Trigger Gate
Definition: PXDDAQDHEStatus.h:120
Belle2::PXDDAQDHEStatus::getErrorMask
PXDErrorFlags getErrorMask(void) const
Return Error bit mask.
Definition: PXDDAQDHEStatus.h:83
Belle2::PXDDAQDHEStatus::m_errorinfo
uint32_t m_errorinfo
erroinfo from the DHE END
Definition: PXDDAQDHEStatus.h:200
Belle2::PXDDAQDHEStatus::PXDDAQDHEStatus
PXDDAQDHEStatus()
Default constructor for the ROOT IO.
Definition: PXDDAQDHEStatus.h:50
Belle2::PXDDAQDHEStatus::getCritErrorMask
PXDErrorFlags getCritErrorMask(void) const
Return Critical Error bit mask.
Definition: PXDDAQDHEStatus.h:93
Belle2::PXDDAQDHEStatus::m_critErrorMask
PXDErrorFlags m_critErrorMask
critical error mask
Definition: PXDDAQDHEStatus.h:190
Belle2::PXDDAQDHEStatus::setFrameNr
void setFrameNr(unsigned int fn)
set Readout Frame number
Definition: PXDDAQDHEStatus.h:124
Belle2::PXDDAQDHEStatus::setEndErrorInfo
void setEndErrorInfo(uint32_t e)
set erroinfo from the DHE END
Definition: PXDDAQDHEStatus.h:135
Belle2::PXDDAQDHEStatus::m_errorMask
PXDErrorFlags m_errorMask
errors found in this DHE/sensor
Definition: PXDDAQDHEStatus.h:186
Belle2::PXDDAQDHEStatus::setErrorMask
void setErrorMask(PXDErrorFlags m)
Set Error bit mask.
Definition: PXDDAQDHEStatus.h:78
Belle2::PXDDAQDHEStatus::m_pxdDHP
std::vector< PXDDAQDHPStatus > m_pxdDHP
Vector of DHP informations belonging to this event.
Definition: PXDDAQDHEStatus.h:203
Belle2::PXDDAQDHEStatus::m_commode
std::vector< PXDDAQDHPComMode > m_commode
Vector of Common Mode informations belonging to this event.
Definition: PXDDAQDHEStatus.h:206
Belle2::PXDDAQDHEStatus::cm_end
std::vector< PXDDAQDHPComMode >::iterator cm_end()
iterator-based iteration for Common Mode
Definition: PXDDAQDHEStatus.h:176
Belle2::PXDDAQDHPStatus
The PXD DAQ DHP Status class.
Definition: PXDDAQDHPStatus.h:39
Belle2::PXDDAQDHEStatus::m_frameNr
unsigned short m_frameNr
Frame number (low bits) from DHE header.
Definition: PXDDAQDHEStatus.h:196
Belle2::PXDDAQDHEStatus::m_dhp_found_mask
unsigned short m_dhp_found_mask
Mask for DHP with valid data.
Definition: PXDDAQDHEStatus.h:197