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 "JDAQ/JDAQRoot.hh"
9 #include "JDAQ/JDAQPreamble.hh"
10 #include "JDAQ/JDAQSummaryFrame.hh"
12 #include "JDAQ/JDAQTimeslice.hh"
13 #include "JDAQ/JDAQClock.hh"
14 #include "JIO/JSerialisable.hh"
15 #include "JIO/JSTDIO.hh"
16 
17 
18 /**
19  * \author mdejong
20  */
21 
22 namespace KM3NETDAQ {
23 
24  using JIO::JReader;
25  using JIO::JWriter;
26 
27 
28  /**
29  * Data summary slice.
30  */
32  public JDAQPreamble,
34  public std::vector<JDAQSummaryFrame>
35  {
36  public:
37  /**
38  * Default constructor.
39  */
44  {}
45 
46 
47  /**
48  * Constructor.
49  *
50  * \param chronometer DAQ chronometer
51  */
52  JDAQSummaryslice(const JDAQChronometer& chronometer) :
54  JDAQSummarysliceHeader(chronometer),
56  {}
57 
58 
59  /**
60  * Constructor.
61  *
62  * \param timeslice time slice
63  */
64  JDAQSummaryslice(const JDAQTimeslice& timeslice) :
66  JDAQSummarysliceHeader(timeslice),
68  {
69  for (JDAQTimeslice::const_iterator i = timeslice.begin(); i != timeslice.end(); ++i) {
70  this->push_back(JDAQSummaryFrame(*i));
71  }
72  }
73 
74 
75  /**
76  * Virtual destructor.
77  */
79  {}
80 
81 
82  /**
83  * Read DAQ summaryslice from input.
84  *
85  * \param in JReader
86  * \param summaryslice JDAQSummaryslice
87  * \return JReader
88  */
89  friend inline JReader& operator>>(JReader& in, JDAQSummaryslice& summaryslice)
90  {
91  summaryslice.clear();
92 
93  in >> static_cast<JDAQPreamble&> (summaryslice);
94  in >> static_cast<JDAQSummarysliceHeader&> (summaryslice);
95  in >> static_cast<std::vector<JDAQSummaryFrame>&>(summaryslice);
96 
97  return in;
98  }
99 
100 
101  /**
102  * Write DAQ summaryslice to output.
103  *
104  * \param out JWriter
105  * \param summaryslice JDAQSummaryslice
106  * \return JWriter
107  */
108  friend inline JWriter& operator<<(JWriter& out, const JDAQSummaryslice& summaryslice)
109  {
110  out << static_cast<const JDAQPreamble&> (summaryslice);
111  out << static_cast<const JDAQSummarysliceHeader&> (summaryslice);
112  out << static_cast<const std::vector<JDAQSummaryFrame>&>(summaryslice);
113 
114  return out;
115  }
116 
117 
118  /**
119  * Print DAQ summary.
120  *
121  * \param out output stream
122  * \param lpr long print
123  * \return output stream
124  */
125  std::ostream& print(std::ostream& out, const bool lpr = false) const
126  {
127  using namespace std;
128 
129  out << this->ClassName() << endl;
130  out << dynamic_cast<const JDAQPreamble&> (*this) << endl;
131  out << dynamic_cast<const JDAQChronometer&>(*this) << endl;
132 
133  for (JDAQSummaryslice::const_iterator module = this->begin(); module != this->end(); ++module) {
134 
135  out << ' ' << setw(10) << module->getModuleID();
136  out << ' ' << setw(8) << setfill('0') << hex << module->getStatus() << dec << setfill(' ');
137  out << '|' << setw(8) << setfill('0') << hex << module->getFIFOStatus() << dec << setfill(' ');
138  out << ' ' << setw(2) << module->getUDPNumberOfReceivedPackets();
139  out << ' ' << setw(2) << module->getUDPMaximalSequenceNumber();
140 
141  if (lpr) {
142  for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
143  out << ' ' << fixed << showpoint << setw(4) << setprecision(1) << module->getRate(pmt) * 1.0e-3;
144  }
145  }
146 
147  out << endl;
148  }
149 
150  return out;
151  }
152 
153 
154  /**
155  * Get size of object.
156  *
157  * \return number of bytes
158  */
159  virtual int getSize() const
160  {
161  int len = 0;
162 
163  len += JDAQPreamble ::sizeOf();
165 
166  len += sizeof(int);
167  len += this->size() * JDAQSummaryFrame::sizeOf();
168 
169  return len;
170  }
171 
172 
173  /**
174  * Action method at file open.
175  *
176  * \param version version
177  */
178  static void actionAtFileOpen(int version)
179  {
181  }
182 
184  };
185 
186 
187  /**
188  * Print DAQ summary.
189  *
190  * \param out output stream
191  * \param summary summary
192  * \return output stream
193  */
194  inline std::ostream& operator<<(std::ostream& out, const KM3NETDAQ::JDAQSummaryslice& summary)
195  {
196  return summary.print(out, getDAQLongprint());
197  }
198 
199 
200  /**
201  * Equal operator for DAQ summary slices.
202  *
203  * \param first summary slice
204  * \param second summary slice
205  * \result true if first summary slice equal to second; else false
206  */
207  inline bool operator==(const JDAQSummaryslice& first,
208  const JDAQSummaryslice& second)
209  {
210  return (first.getDAQSummarysliceHeader() == second.getDAQSummarysliceHeader() &&
211  static_cast<const std::vector<JDAQSummaryFrame>&>(first) == static_cast<const std::vector<JDAQSummaryFrame>&>(second));
212  }
213 
214 
215  /**
216  * Not-equal operator for DAQ summary slices.
217  *
218  * \param first summary slice
219  * \param second summary slice
220  * \result true if first summary slice not equal to second; else false
221  */
222  inline bool operator!=(const JDAQSummaryslice& first,
223  const JDAQSummaryslice& second)
224  {
225  return !(first == second);
226  }
227 }
228 
229 #endif
KM3NETDAQ::JDAQSummaryslice::operator<<
friend JWriter & operator<<(JWriter &out, const JDAQSummaryslice &summaryslice)
Write DAQ summaryslice to output.
Definition: JDAQSummaryslice.hh:108
JIO::JReader
Interface for binary input.
Definition: JSerialisable.hh:62
KM3NETDAQ::JDAQSummaryslice::~JDAQSummaryslice
virtual ~JDAQSummaryslice()
Virtual destructor.
Definition: JDAQSummaryslice.hh:78
KM3NETDAQ::JDAQSummaryslice::getSize
virtual int getSize() const
Get size of object.
Definition: JDAQSummaryslice.hh:159
KM3NETDAQ::JDAQSummaryslice::JDAQSummaryslice
JDAQSummaryslice()
Default constructor.
Definition: JDAQSummaryslice.hh:40
std::vector
Definition: JSTDTypes.hh:12
KM3NETDAQ::JDAQSummarysliceHeader::getDAQSummarysliceHeader
const JDAQSummarysliceHeader & getDAQSummarysliceHeader() const
Get DAQ summary slice header.
Definition: JDAQSummarysliceHeader.hh:49
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:178
KM3NETDAQ::JDAQTimeslice
Data time slice.
Definition: JDAQTimeslice.hh:36
JDAQClock.hh
KM3NETDAQ::JDAQPreamble::sizeOf
static int sizeOf()
Get size of object.
Definition: JDAQPreamble.hh:110
KM3NETDAQ::JDAQSummaryslice::operator>>
friend JReader & operator>>(JReader &in, JDAQSummaryslice &summaryslice)
Read DAQ summaryslice from input.
Definition: JDAQSummaryslice.hh:89
JDAQTimeslice.hh
KM3NETDAQ::JDAQSummaryslice::JDAQSummaryslice
JDAQSummaryslice(const JDAQTimeslice &timeslice)
Constructor.
Definition: JDAQSummaryslice.hh:64
KM3NETDAQ::JDAQSummaryFrame::ROOT_IO_VERSION
static int ROOT_IO_VERSION
Streamer version of JDAQSummaryslice as obtained from ROOT file.
Definition: JDAQSummaryFrame.hh:533
JDAQSummarysliceHeader.hh
KM3NETDAQ::JDAQSummaryFrame
Data storage class for rate measurements of all PMTs in one module.
Definition: JDAQSummaryFrame.hh:320
JSerialisable.hh
JSTDIO.hh
KM3NETDAQ::operator!=
bool operator!=(const JDAQChronometer &first, const JDAQChronometer &second)
Not-equal operator for DAQ chronometers.
Definition: JDAQChronometer.hh:303
KM3NETDAQ::JDAQSummaryslice::ClassDef
ClassDef(JDAQSummaryslice, 6)
JIO::JWriter
Interface for binary output.
Definition: JSerialisable.hh:130
JDAQSummaryFrame.hh
KM3NETDAQ::JDAQSummaryslice
Data summary slice.
Definition: JDAQSummaryslice.hh:31
JDAQRoot.hh
KM3NETDAQ::operator==
bool operator==(const JDAQChronometer &first, const JDAQChronometer &second)
Equal operator for DAQ chronometers.
Definition: JDAQChronometer.hh:286
KM3NETDAQ::JDAQHeader::sizeOf
static int sizeOf()
Get size of object.
Definition: JDAQHeader.hh:103
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
KM3NETDAQ::JDAQSummaryFrame::sizeOf
static int sizeOf()
Get size of object.
Definition: JDAQSummaryFrame.hh:525
std
Definition: jaanetDictionary.h:36
KM3NETDAQ
KM3NeT DAQ data structures and auxiliaries.
Definition: DataQueue.cc:39
KM3NETDAQ::JDAQSummaryslice::print
std::ostream & print(std::ostream &out, const bool lpr=false) const
Print DAQ summary.
Definition: JDAQSummaryslice.hh:125
KM3NETDAQ::JDAQSummaryslice::JDAQSummaryslice
JDAQSummaryslice(const JDAQChronometer &chronometer)
Constructor.
Definition: JDAQSummaryslice.hh:52
JDAQPreamble.hh
KM3NETDAQ::JDAQSummarysliceHeader
JDAQ summaryslice header.
Definition: JDAQSummarysliceHeader.hh:22
KM3NETDAQ::JDAQPreamble
DAQ preamble.
Definition: JDAQPreamble.hh:39
KM3NETDAQ::JDAQChronometer
DAQ chronometer.
Definition: JDAQChronometer.hh:26