Jpp  18.2.1-ARCA-DF-PATCH
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
JDAQSuperFrame.hh
Go to the documentation of this file.
1 #ifndef __JDAQSUPERFRAME__
2 #define __JDAQSUPERFRAME__
3 
11 
12 
13 /**
14  * \author mdejong
15  */
16 
17 namespace KM3NETDAQ {
18 
19  /**
20  * Data frame of one optical module.
21  */
23  public JDAQPreamble,
24  public JDAQSuperFrameHeader,
25  public JDAQFrame
26  {
27  public:
28 
33 
34  friend size_t getSizeof(const JDAQSuperFrame&);
36  friend JWriter& operator<<(JWriter&, const JDAQSuperFrame&);
37 
38  /**
39  * Default constructor.
40  */
44  JDAQFrame()
45  {}
46 
47 
48  /**
49  * Constructor.
50  *
51  * \param header JDAQ super frame header
52  */
55  JDAQSuperFrameHeader(header),
56  JDAQFrame()
57  {}
58 
59 
60  /**
61  * Copy constructor.
62  *
63  * \param super_frame JDAQ super frame
64  */
65  JDAQSuperFrame(const JDAQSuperFrame& super_frame) :
68  JDAQFrame(super_frame)
69  {}
70 
71 
72  /**
73  * Add data from same optical module.
74  *
75  * \param super_frame JDAQ super frame
76  * \return this JDAQ super frame
77  */
78  JDAQSuperFrame& add(const JDAQSuperFrame& super_frame)
79  {
80  if (this->getModuleID() != super_frame.getModuleID())
81  throw JDAQException("JDAQSuperFrame::add(): Different module identifiers.");
82 
83  return add(static_cast<const JDAQFrame&>(super_frame));
84  }
85 
86 
87  /**
88  * Add hit.
89  *
90  * \param hit JDAQ hit
91  * \return this JDAQ frame
92  */
93  JDAQSuperFrame& add(const JDAQHit& hit)
94  {
95  return add(1, &hit);
96  }
97 
98 
99  /**
100  * Add data.
101  *
102  * \param frame JDAQ frame
103  * \return this JDAQ frame
104  */
105  JDAQSuperFrame& add(const JDAQFrame& frame)
106  {
107  return add(frame.numberOfHits, frame.buffer);
108  }
109 
110 
111  /**
112  * Add data.
113  *
114  * \param number_of_hits number of hits
115  * \param data pointer to data
116  * \return this data frame
117  */
118  JDAQSuperFrame& add(const int number_of_hits, const JDAQHit* data)
119  {
120  JDAQFrame::add(number_of_hits, data);
121 
122  return *this;
123  }
124 
125 
127  };
128 
129 
130  /**
131  * Equal operator for DAQ super frames.
132  *
133  * \param first super frame
134  * \param second super frame
135  * \result true if first super frame equal to second; else false
136  */
137  inline bool operator==(const JDAQSuperFrame& first,
138  const JDAQSuperFrame& second)
139  {
140  if (first.getDAQSuperFrameHeader() == second.getDAQSuperFrameHeader() &&
141  first.size() == second.size()) {
142 
143  for (JDAQSuperFrame::const_iterator p = first.begin(), q = second.begin(); p != first.end(); ++p, ++q) {
144  if (*p != *q) {
145  return false;
146  }
147  }
148 
149  return true;
150 
151  } else {
152 
153  return false;
154  }
155  }
156 
157 
158  /**
159  * Not-equal operator for DAQ super frames.
160  *
161  * \param first super frame
162  * \param second super frame
163  * \result true if first super frame not equal to second; else false
164  */
165  inline bool operator!=(const JDAQSuperFrame& first,
166  const JDAQSuperFrame& second)
167  {
168  return !(first == second);
169  }
170 }
171 
172 #endif
bool operator==(const JDAQChronometer &first, const JDAQChronometer &second)
Equal operator for DAQ chronometers.
ClassDef(JDAQSuperFrame, 3)
Interface for binary output.
int getModuleID() const
Get module identifier.
Auxiliary class for a DAQ type holder.
std::reverse_iterator< iterator > reverse_iterator
Definition: JDAQFrame.hh:72
const JDAQHit * data() const
Definition: JDAQFrame.hh:185
friend size_t getSizeof()
Definition of method to get size of data type.
friend JWriter & operator<<(JWriter &, const JDAQSuperFrame &)
Write JDAQSuperFrame to output.
JDAQSuperFrame & add(const int number_of_hits, const JDAQHit *data)
Add data.
JDAQSuperFrame()
Default constructor.
then echo The file $DIR KM3NeT_00000001_00000000 root already please rename or remove it first
JDAQFrame::const_iterator const_iterator
std::reverse_iterator< const_iterator > const_reverse_iterator
Definition: JDAQFrame.hh:71
Hit data structure.
Definition: JDAQHit.hh:34
const_iterator begin() const
Definition: JDAQFrame.hh:165
Data frame.
Definition: JDAQFrame.hh:65
JDAQSuperFrame & add(const JDAQHit &hit)
Add hit.
Interface for binary input.
JDAQSuperFrame(const JDAQSuperFrame &super_frame)
Copy constructor.
JDAQSuperFrame(const JDAQSuperFrameHeader &header)
Constructor.
JDAQFrame & add(const JDAQFrame &frame)
Add data.
Definition: JDAQFrame.hh:219
JDAQFrame::const_reverse_iterator const_reverse_iterator
JDAQFrame::iterator iterator
General exception.
const JDAQSuperFrameHeader & getDAQSuperFrameHeader() const
Get DAQ super frame header.
JDAQSuperFrame & add(const JDAQFrame &frame)
Add data.
JDAQFrame::reverse_iterator reverse_iterator
friend JReader & operator>>(JReader &, JDAQSuperFrame &)
Read JDAQ super frame from input.
KM3NeT DAQ constants, bit handling, etc.
bool operator!=(const JDAQChronometer &first, const JDAQChronometer &second)
Not-equal operator for DAQ chronometers.
int size() const
Definition: JDAQFrame.hh:183
Data frame of one optical module.
JDAQSuperFrame & add(const JDAQSuperFrame &super_frame)
Add data from same optical module.
const_iterator end() const
Definition: JDAQFrame.hh:166