Jpp
JDAQSummaryslice.hh
Go to the documentation of this file.
1 #ifndef __JDAQSUMMARYSLICE__
2 #define __JDAQSUMMARYSLICE__
3 
4 #include <ostream>
5 #include <iomanip>
6 #include <vector>
7 
8 #include "JDAQRoot.hh"
9 #include "JDAQPreamble.hh"
10 #include "JDAQSummaryFrame.hh"
12 #include "JDAQTimeslice.hh"
13 #include "JDAQClock.hh"
14 
15 
16 /**
17  * \author mdejong
18  */
19 
20 namespace KM3NETDAQ {
21 
22  /**
23  * Data summary slice.
24  */
26  public JDAQPreamble,
28  public std::vector<JDAQSummaryFrame>
29  {
30  public:
31 
32  friend size_t getSizeof(const JDAQSummaryslice&);
34  friend JWriter& operator<<(JWriter&, const JDAQSummaryslice&);
35 
36  /**
37  * Default constructor.
38  */
43  {}
44 
45 
46  /**
47  * Constructor.
48  *
49  * \param chronometer DAQ chronometer
50  */
51  JDAQSummaryslice(const JDAQChronometer& chronometer) :
53  JDAQSummarysliceHeader(chronometer),
55  {}
56 
57 
58  /**
59  * Constructor.
60  *
61  * \param timeslice time slice
62  */
63  JDAQSummaryslice(const JDAQTimeslice& timeslice) :
65  JDAQSummarysliceHeader(timeslice),
67  {
68  for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
69  this->push_back(JDAQSummaryFrame(*i));
70  }
71  }
72 
73 
74  /**
75  * Virtual destructor.
76  */
78  {}
79 
80 
81  /**
82  * Print DAQ summary.
83  *
84  * \param out output stream
85  * \param lpr long print
86  * \return output stream
87  */
88  std::ostream& print(std::ostream& out, const bool lpr = false) const
89  {
90  using namespace std;
91 
92  out << this->ClassName() << endl;
93  out << dynamic_cast<const JDAQPreamble&> (*this) << endl;
94  out << dynamic_cast<const JDAQChronometer&>(*this) << endl;
95 
96  for (JDAQSummaryslice::const_iterator module = this->begin(); module != this->end(); ++module) {
97 
98  out << ' ' << setw(10) << module->getModuleID();
99  out << ' ' << setw(8) << setfill('0') << hex << module->getStatus() << dec << setfill(' ');
100  out << '|' << setw(8) << setfill('0') << hex << module->getFIFOStatus() << dec << setfill(' ');
101  out << ' ' << setw(2) << module->getUDPNumberOfReceivedPackets();
102  out << ' ' << setw(2) << module->getUDPMaximalSequenceNumber();
103 
104  if (lpr) {
105  for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
106  out << ' ' << fixed << showpoint << setw(4) << setprecision(1) << module->getRate(pmt) * 1.0e-3;
107  }
108  }
109 
110  out << endl;
111  }
112 
113  return out;
114  }
115 
116 
117  /**
118  * Action method at file open.
119  *
120  * \param version version
121  */
122  static void actionAtFileOpen(int version)
123  {
125  }
126 
127 
129  };
130 
131 
132  /**
133  * Print DAQ summary.
134  *
135  * \param out output stream
136  * \param summary summary
137  * \return output stream
138  */
139  inline std::ostream& operator<<(std::ostream& out, const KM3NETDAQ::JDAQSummaryslice& summary)
140  {
141  return summary.print(out, getDAQLongprint());
142  }
143 
144 
145  /**
146  * Equal operator for DAQ summary slices.
147  *
148  * \param first summary slice
149  * \param second summary slice
150  * \result true if first summary slice equal to second; else false
151  */
152  inline bool operator==(const JDAQSummaryslice& first,
153  const JDAQSummaryslice& second)
154  {
155  return (first.getDAQSummarysliceHeader() == second.getDAQSummarysliceHeader() &&
156  static_cast<const std::vector<JDAQSummaryFrame>&>(first) == static_cast<const std::vector<JDAQSummaryFrame>&>(second));
157  }
158 
159 
160  /**
161  * Not-equal operator for DAQ summary slices.
162  *
163  * \param first summary slice
164  * \param second summary slice
165  * \result true if first summary slice not equal to second; else false
166  */
167  inline bool operator!=(const JDAQSummaryslice& first,
168  const JDAQSummaryslice& second)
169  {
170  return !(first == second);
171  }
172 }
173 
174 #endif
JIO::JReader
Interface for binary input.
Definition: JSerialisable.hh:62
KM3NETDAQ::JDAQSummaryslice::~JDAQSummaryslice
virtual ~JDAQSummaryslice()
Virtual destructor.
Definition: JDAQSummaryslice.hh:77
KM3NETDAQ::JDAQSummaryslice::JDAQSummaryslice
JDAQSummaryslice()
Default constructor.
Definition: JDAQSummaryslice.hh:39
std::vector
Definition: JSTDTypes.hh:12
KM3NETDAQ::JDAQSummarysliceHeader::getDAQSummarysliceHeader
const JDAQSummarysliceHeader & getDAQSummarysliceHeader() const
Get DAQ summary slice header.
Definition: JDAQSummarysliceHeader.hh:44
KM3NETDAQ::NUMBER_OF_PMTS
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
KM3NETDAQ::JDAQSummaryslice::actionAtFileOpen
static void actionAtFileOpen(int version)
Action method at file open.
Definition: JDAQSummaryslice.hh:122
KM3NETDAQ::JDAQTimeslice
Data time slice.
Definition: JDAQTimeslice.hh:30
JDAQClock.hh
KM3NETDAQ::JDAQSummaryslice::operator<<
friend JWriter & operator<<(JWriter &, const JDAQSummaryslice &)
Write DAQ summary slice to output.
Definition: JDAQSummarysliceIO.hh:59
JDAQTimeslice.hh
KM3NETDAQ::JDAQSummaryslice::JDAQSummaryslice
JDAQSummaryslice(const JDAQTimeslice &timeslice)
Constructor.
Definition: JDAQSummaryslice.hh:63
KM3NETDAQ::JDAQSummaryFrame::ROOT_IO_VERSION
static int ROOT_IO_VERSION
Streamer version of JDAQSummaryslice as obtained from ROOT file.
Definition: JDAQSummaryFrame.hh:487
JDAQSummarysliceHeader.hh
KM3NETDAQ::JDAQSummaryFrame
Data storage class for rate measurements of all PMTs in one module.
Definition: JDAQSummaryFrame.hh:320
KM3NETDAQ::operator!=
bool operator!=(const JDAQChronometer &first, const JDAQChronometer &second)
Not-equal operator for DAQ chronometers.
Definition: JDAQChronometer.hh:253
KM3NETDAQ::JDAQSummaryslice::ClassDef
ClassDef(JDAQSummaryslice, 6)
JIO::JWriter
Interface for binary output.
Definition: JSerialisable.hh:131
JDAQSummaryFrame.hh
KM3NETDAQ::JDAQSummaryslice
Data summary slice.
Definition: JDAQSummaryslice.hh:25
JDAQRoot.hh
KM3NETDAQ::operator==
bool operator==(const JDAQChronometer &first, const JDAQChronometer &second)
Equal operator for DAQ chronometers.
Definition: JDAQChronometer.hh:236
KM3NETDAQ::getDAQLongprint
bool & getDAQLongprint()
Get DAQ print option.
Definition: JDAQPrint.hh:15
KM3NETDAQ::JDAQType
Auxiliary class for a DAQ type holder.
Definition: JDAQDataTypes.hh:15
std
Definition: jaanetDictionary.h:36
KM3NETDAQ
KM3NeT DAQ data structures and auxiliaries.
Definition: DataQueue.cc:39
KM3NETDAQ::JDAQSummaryslice::operator>>
friend JReader & operator>>(JReader &, JDAQSummaryslice &)
Read DAQ summary slice from input.
Definition: JDAQSummarysliceIO.hh:40
KM3NETDAQ::JDAQPreamble::getSizeof
friend size_t getSizeof()
Definition of method to get size of data type.
KM3NETDAQ::JDAQSummaryslice::print
std::ostream & print(std::ostream &out, const bool lpr=false) const
Print DAQ summary.
Definition: JDAQSummaryslice.hh:88
KM3NETDAQ::JDAQSummaryslice::JDAQSummaryslice
JDAQSummaryslice(const JDAQChronometer &chronometer)
Constructor.
Definition: JDAQSummaryslice.hh:51
JDAQPreamble.hh
KM3NETDAQ::JDAQSummarysliceHeader
JDAQ summaryslice header.
Definition: JDAQSummarysliceHeader.hh:17
KM3NETDAQ::JDAQPreamble
DAQ preamble.
Definition: JDAQPreamble.hh:26
KM3NETDAQ::JDAQChronometer
DAQ chronometer.
Definition: JDAQChronometer.hh:21