Belle II Software  release-05-01-25
PXDDAQStatus.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: 23.10.2017 *
8  * *
9  * This software is provided "as is" without any warranty. *
10  **************************************************************************/
11 
12 #pragma once
13 
14 #include <pxd/dataobjects/PXDDAQPacketStatus.h>
15 #include <TObject.h>
16 #include <pxd/dataobjects/PXDErrorFlags.h>
17 
18 namespace Belle2 {
25  using Belle2::PXD::PXDError::PXDErrorFlags;
26 
36  class PXDDAQStatus : public TObject {
37  public:
38 
40  PXDDAQStatus() : m_errorMask(0), m_critErrorMask(0), m_usable(false) , m_gated(false), m_unfiltered(false) {}
41 
45  explicit PXDDAQStatus(PXDErrorFlags mask) : m_errorMask(mask), m_critErrorMask(0), m_usable(false) , m_gated(false),
46  m_unfiltered(false) {}
47 
52  const PXDDAQDHEStatus* findDHE(const VxdID& id) const;
53 
57  bool isUsable() const { return m_usable; }
58 
62  void setUnfiltered(bool b) { m_unfiltered = b; }
63 
67  bool isUnfiltered() const { return m_unfiltered; }
68 
72  void setGated(bool b) { m_gated = b; }
73 
77  bool isGated() const { return m_gated; }
78 
83  void setErrorMask(PXDErrorFlags m) { m_errorMask = m; }
84 
89  void addErrorMask(PXDErrorFlags m) { m_errorMask |= m; }
90 
95  PXDErrorFlags getErrorMask(void) const { return m_errorMask; }
96 
100  void setCritErrorMask(PXDErrorFlags m) { m_critErrorMask = m; }
101 
105  PXDErrorFlags getCritErrorMask(void) const { return m_critErrorMask; }
106 
112  void Decide(void) {m_usable = (m_errorMask & m_critErrorMask) == 0 && !m_gated;}
113 
117  void addPacket(PXDDAQPacketStatus& daqpktstat) {m_pxdPacket.push_back(daqpktstat);};
118 
123  template<class ...Args> PXDDAQPacketStatus& newPacket(Args&& ... params)
124  {
125  /*return*/ m_pxdPacket.emplace_back(std::forward<Args>(params)...);
126  return m_pxdPacket.back();
127  }
128 
132  std::map <VxdID , bool> getUsable() const;
133 
134 
136  std::vector<PXDDAQPacketStatus>::iterator begin() { return m_pxdPacket.begin(); };
138  std::vector<PXDDAQPacketStatus>::iterator end() { return m_pxdPacket.end(); };
139 
141  std::vector<PXDDAQPacketStatus>::const_iterator cbegin() const { return m_pxdPacket.cbegin(); };
143  std::vector<PXDDAQPacketStatus>::const_iterator cend() const { return m_pxdPacket.cend(); };
145  PXDDAQPacketStatus& pkt_back() { return m_pxdPacket.back(); };
147  size_t pkt_size() const { return m_pxdPacket.size(); };
148 
149  private:
150  PXDErrorFlags m_errorMask;
151  PXDErrorFlags m_critErrorMask;
153  bool m_usable;
154  bool m_gated;
155  bool m_unfiltered;
158  std::vector <PXDDAQPacketStatus> m_pxdPacket;
159 
160  ClassDef(PXDDAQStatus, 2)
161 
162  }; // class PXDDAQStatus
163 
165 } // end namespace Belle2
Belle2::VxdID
Class to uniquely identify a any structure of the PXD and SVD.
Definition: VxdID.h:43
Belle2::PXDDAQStatus::isUnfiltered
bool isUnfiltered() const
Return if data was recorded without ROI filtering.
Definition: PXDDAQStatus.h:76
Belle2::PXDDAQStatus::cbegin
std::vector< PXDDAQPacketStatus >::const_iterator cbegin() const
const iterator-based iteration for packets
Definition: PXDDAQStatus.h:150
Belle2::PXDDAQStatus::setCritErrorMask
void setCritErrorMask(PXDErrorFlags m)
Set Critical Error bit mask.
Definition: PXDDAQStatus.h:109
Belle2::PXDDAQStatus::begin
std::vector< PXDDAQPacketStatus >::iterator begin()
iterator-based iteration for packets
Definition: PXDDAQStatus.h:145
Belle2::PXDDAQStatus::addPacket
void addPacket(PXDDAQPacketStatus &daqpktstat)
Add Data packet information including its DHC/DHE tree.
Definition: PXDDAQStatus.h:126
Belle2::PXDDAQStatus::getCritErrorMask
PXDErrorFlags getCritErrorMask(void) const
Return Critical Error bit mask.
Definition: PXDDAQStatus.h:114
Belle2::PXDDAQStatus::isUsable
bool isUsable() const
Return Usability of data.
Definition: PXDDAQStatus.h:66
Belle2::PXDDAQStatus::PXDDAQStatus
PXDDAQStatus()
Default constructor for the ROOT IO.
Definition: PXDDAQStatus.h:49
Belle2::PXDDAQStatus::findDHE
const PXDDAQDHEStatus * findDHE(const VxdID &id) const
Return pointer to PXDDAQDHEStatus for the DHE connected to sensor with VxdID id If id not found,...
Definition: PXDDAQStatus.cc:17
Belle2::PXDDAQStatus::newPacket
PXDDAQPacketStatus & newPacket(Args &&... params)
Add new Packet information.
Definition: PXDDAQStatus.h:132
Belle2::PXDDAQStatus::m_pxdPacket
std::vector< PXDDAQPacketStatus > m_pxdPacket
Vector of packet informations beloning to this event.
Definition: PXDDAQStatus.h:167
Belle2
Abstract base class for different kinds of events.
Definition: MillepedeAlgorithm.h:19
Belle2::PXDDAQStatus::m_unfiltered
bool m_unfiltered
Data was not ROI filtered.
Definition: PXDDAQStatus.h:164
Belle2::PXDDAQStatus::end
std::vector< PXDDAQPacketStatus >::iterator end()
iterator-based iteration for packets
Definition: PXDDAQStatus.h:147
Belle2::PXDDAQStatus::m_gated
bool m_gated
Sensor was in gated mode.
Definition: PXDDAQStatus.h:163
Belle2::PXDDAQStatus::m_usable
bool m_usable
Data is useable.
Definition: PXDDAQStatus.h:162
Belle2::PXDDAQStatus::cend
std::vector< PXDDAQPacketStatus >::const_iterator cend() const
const iterator-based iteration for packets
Definition: PXDDAQStatus.h:152
Belle2::PXDDAQStatus
The PXD DAQ Status class.
Definition: PXDDAQStatus.h:45
Belle2::PXDDAQStatus::getErrorMask
PXDErrorFlags getErrorMask(void) const
Return Error bit mask This is the OR of error masks of all sub-objects (DHC, DHE)
Definition: PXDDAQStatus.h:104
Belle2::PXDDAQDHEStatus
The PXD DAQ DHE Status class.
Definition: PXDDAQDHEStatus.h:46
Belle2::PXDDAQStatus::setUnfiltered
void setUnfiltered(bool b)
Set flag that data was recorded without ROI filtering.
Definition: PXDDAQStatus.h:71
Belle2::PXDDAQStatus::m_critErrorMask
PXDErrorFlags m_critErrorMask
critical error mask
Definition: PXDDAQStatus.h:160
Belle2::PXDDAQStatus::isGated
bool isGated() const
Return if data was recorded while detector was gated.
Definition: PXDDAQStatus.h:86
Belle2::PXDDAQStatus::setErrorMask
void setErrorMask(PXDErrorFlags m)
Set Error bit mask This should be the OR of error masks of all sub-objects (DHC, DHE)
Definition: PXDDAQStatus.h:92
Belle2::PXDDAQStatus::m_errorMask
PXDErrorFlags m_errorMask
errors found in any packet/DHC/DHE
Definition: PXDDAQStatus.h:156
Belle2::PXDDAQStatus::getUsable
std::map< VxdID, bool > getUsable() const
Return map of module usability.
Definition: PXDDAQStatus.cc:31
Belle2::PXDDAQStatus::pkt_back
PXDDAQPacketStatus & pkt_back()
Returns PXDDAQPacketStatus for last packet in this event
Definition: PXDDAQStatus.h:154
Belle2::PXDDAQStatus::addErrorMask
void addErrorMask(PXDErrorFlags m)
Add (OR) Error bit mask This should be the OR of error masks of all sub-objects (DHC,...
Definition: PXDDAQStatus.h:98
Belle2::PXDDAQStatus::pkt_size
size_t pkt_size() const
Returns number of packets in this event
Definition: PXDDAQStatus.h:156
Belle2::PXDDAQPacketStatus
The PXD DAQ Packet Status class.
Definition: PXDDAQPacketStatus.h:42
Belle2::PXDDAQStatus::setGated
void setGated(bool b)
Set flag that data was while detector was gated.
Definition: PXDDAQStatus.h:81
Belle2::PXDDAQStatus::Decide
void Decide(void)
Calculate the usability decision If any of the critical bits is set in the error mask,...
Definition: PXDDAQStatus.h:121