Jpp
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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  */
43  std::vector<JDAQSummaryFrame>()
44  {}
45 
46 
47  /**
48  * Constructor.
49  *
50  * \param chronometer DAQ chronometer
51  */
52  JDAQSummaryslice(const JDAQChronometer& chronometer) :
54  JDAQSummarysliceHeader(chronometer),
55  std::vector<JDAQSummaryFrame>()
56  {}
57 
58 
59  /**
60  * Constructor.
61  *
62  * \param timeslice time slice
63  */
64  JDAQSummaryslice(const JDAQTimeslice& timeslice) :
66  JDAQSummarysliceHeader(timeslice),
67  std::vector<JDAQSummaryFrame>()
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(5) << module->getModuleID();
136  out << ' ' << setw(8) << hex << module->getStatus() << dec;
137  out << ' ' << setw(2) << module->getUDPNumberOfReceivedPackets();
138  out << ' ' << setw(2) << module->getUDPMaximalSequenceNumber();
139 
140  if (lpr) {
141  for (int pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
142  out << ' ' << fixed << showpoint << setw(4) << setprecision(1) << module->getRate(pmt) * 1.0e-3;
143  }
144  }
145 
146  out << endl;
147  }
148 
149  return out;
150  }
151 
152 
153  /**
154  * Get size of object.
155  *
156  * \return number of bytes
157  */
158  virtual int getSize() const
159  {
160  int len = 0;
161 
162  len += JDAQPreamble ::sizeOf();
164 
165  len += sizeof(int);
166  len += this->size() * JDAQSummaryFrame::sizeOf();
167 
168  return len;
169  }
170 
171 
172  /**
173  * Action method at file open.
174  *
175  * \param version version
176  */
177  static void actionAtFileOpen(int version)
178  {
180  }
181 
183  };
184 
185 
186  /**
187  * Print DAQ summary.
188  *
189  * \param out output stream
190  * \param summary summary
191  * \return output stream
192  */
193  inline std::ostream& operator<<(std::ostream& out, const KM3NETDAQ::JDAQSummaryslice& summary)
194  {
195  return summary.print(out, getDAQLongprint());
196  }
197 
198 
199  /**
200  * Equal operator for DAQ summary slices.
201  *
202  * \param first summary slice
203  * \param second summary slice
204  * \result true if first summary slice equal to second; else false
205  */
206  inline bool operator==(const JDAQSummaryslice& first,
207  const JDAQSummaryslice& second)
208  {
209  return (first.getDAQSummarysliceHeader() == second.getDAQSummarysliceHeader() &&
210  static_cast<const std::vector<JDAQSummaryFrame>&>(first) == static_cast<const std::vector<JDAQSummaryFrame>&>(second));
211  }
212 
213 
214  /**
215  * Not-equal operator for DAQ summary slices.
216  *
217  * \param first summary slice
218  * \param second summary slice
219  * \result true if first summary slice not equal to second; else false
220  */
221  inline bool operator!=(const JDAQSummaryslice& first,
222  const JDAQSummaryslice& second)
223  {
224  return !(first == second);
225  }
226 }
227 
228 #endif
JDAQSummaryslice()
Default constructor.
bool operator==(const JDAQChronometer &first, const JDAQChronometer &second)
Equal operator for DAQ chronometers.
Interface for binary output.
Auxiliary class for a DAQ type holder.
friend JWriter & operator<<(JWriter &out, const JDAQSummaryslice &summaryslice)
Write DAQ summaryslice to output.
virtual ~JDAQSummaryslice()
Virtual destructor.
JDAQSummaryslice(const JDAQTimeslice &timeslice)
Constructor.
static int ROOT_IO_VERSION
Streamer version of JDAQSummaryslice as obtained from ROOT file.
static void actionAtFileOpen(int version)
Action method at file open.
ClassDef(JDAQSummaryslice, 6)
friend JReader & operator>>(JReader &in, JDAQSummaryslice &summaryslice)
Read DAQ summaryslice from input.
Data storage class for rate measurements of all PMTs in one module.
virtual int getSize() const
Get size of object.
Data time slice.
std::ostream & print(std::ostream &out, const bool lpr=false) const
Print DAQ summary.
Interface for binary input.
static int sizeOf()
Get size of object.
static int sizeOf()
Get size of object.
Definition: JDAQHeader.hh:103
const JDAQSummarysliceHeader & getDAQSummarysliceHeader() const
Get DAQ summary slice header.
JDAQSummaryslice(const JDAQChronometer &chronometer)
Constructor.
bool operator!=(const JDAQChronometer &first, const JDAQChronometer &second)
Not-equal operator for DAQ chronometers.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
bool & getDAQLongprint()
Get DAQ print option.
Definition: JDAQPrint.hh:15
STD extensions for binary I/O.
static int sizeOf()
Get size of object.