Jpp test-rotations-old
the software that should make you happy
Loading...
Searching...
No Matches
JBuildL0.hh
Go to the documentation of this file.
1#ifndef __JTRIGGER__JBUILDL0__
2#define __JTRIGGER__JBUILDL0__
3
6#include "JTrigger/JHit.hh"
7#include "JTrigger/JHitL0.hh"
8#include "JTrigger/JHitR0.hh"
9#include "JTrigger/JHitR1.hh"
11#include "JTrigger/JBuild.hh"
14#include "JDetector/JModule.hh"
15
16
17/**
18 * \author mdejong
19 */
20
21namespace JTRIGGER {}
22namespace JPP { using namespace JTRIGGER; }
23
24namespace JTRIGGER {
25
28
29 /**
30 * Template L0 hit builder.
31 *
32 * An L0 hit is a hit from a PMT.
33 */
34 template<class JHit_t>
35 class JBuildL0 :
36 public JBuildHelper< JBuildL0<JHit_t> >,
37 public JBuild<JHit_t>
38 {
39 public:
40
41 using JBuildHelper< JBuildL0<JHit_t> >::operator();
42
44
45
46 /**
47 * Default constructor.
48 */
50 {}
51
52
53 /**
54 * Build hits from calibrated data.
55 *
56 * Note that the output data are not time sorted.
57 *
58 * \param input input L0 data
59 * \param out output L0 data
60 */
61 template<class JOutput_t>
62 void operator()(const JSuperFrame2D<JHit_t>& input, JOutput_t out) const
63 {
64 for (typename JSuperFrame2D<JHit_t>::const_iterator frame = input.begin(); frame != input.end(); ++frame) {
65
66 int n = frame->size();
67
68 for (typename JSuperFrame2D<JHit_t>::value_type::const_iterator i = frame->begin(); n != 0; ++i, --n) {
69 *out = *i;
70 ++out;
71 }
72 }
73 }
74
75
76 /**
77 * Build hits from uncalibrated DAQ data.
78 *
79 * The time calibration is applied.
80 * Note that the output data are not time sorted.
81 *
82 * \param input DAQ super frame
83 * \param module module
84 * \param out output L0 data
85 */
86 template<class JOutput_t>
87 void operator()(const JDAQSuperFrame& input,
88 const JModule& module,
89 JOutput_t out) const
90 {
91 if (!input.empty()) {
92 (*this)(this->demultiplex(input, module), out);
93 }
94 }
95 };
96
97
98 /**
99 * Template specialisation of L0 builder for JHitL0 data type.
100 */
101 template<>
103 public JBuildHelper< JBuildL0<JHitL0> >,
104 public JBuild<JHit>
105 {
106 public:
107
108 using JBuildHelper< JBuildL0<JHitL0> >::operator();
109
111
112
113 /**
114 * Default constructor.
115 */
117 {}
118
119
120 /**
121 * Build hits from calibrated data.
122 *
123 * Note that the output data are not time sorted.
124 *
125 * \param input input L0 data
126 * \param out output L0 data
127 */
128 template<class JOutput_t>
129 void operator()(const JSuperFrame2D<JHit>& input, JOutput_t out) const
130 {
131 using namespace JPP;
132
133 for (typename JSuperFrame2D<JHit>::const_iterator frame = input.begin(); frame != input.end(); ++frame) {
134
135 const JDAQPMTIdentifier& id = frame->getPMTIdentifier();
136 const JAxis3D& axis = frame->getAxis();
137
138 int n = frame->size();
139
140 for (typename JSuperFrame2D<JHit>::value_type::const_iterator i = frame->begin(); n != 0; ++i, --n) {
141 *out = JHitL0(id, axis, *i);
142 ++out;
143 }
144 }
145 }
146
147
148 /**
149 * Build hits from uncalibrated DAQ data.
150 *
151 * The time calibration is applied.
152 * Note that the output data are not time sorted.
153 *
154 * \param input DAQ super frame
155 * \param module module
156 * \param out output L0 data
157 */
158 template<class JOutput_t>
159 void operator()(const JDAQSuperFrame& input,
160 const JModule& module,
161 JOutput_t out) const
162 {
163 if (!input.empty()) {
164 (*this)(this->demultiplex(input, module), out);
165 }
166 }
167 };
168
169
170 /**
171 * Template specialisation of L0 builder for JHitR0 data type.
172 */
173 template<>
175 public JBuildHelper< JBuildL0<JHitR0> >,
176 public JBuild<JHit>
177 {
178 public:
179
180 using JBuildHelper< JBuildL0<JHitR0> >::operator();
181
183
184
185 /**
186 * Default constructor.
187 */
189 {}
190
191
192 /**
193 * Build hits from calibrated data.
194 *
195 * Note that the output data are not time sorted.
196 *
197 * \param input input L0 data
198 * \param out output L0 data
199 */
200 template<class JOutput_t>
201 void operator()(const JSuperFrame2D<JHit>& input, JOutput_t out) const
202 {
203 using namespace JPP;
204
205 for (typename JSuperFrame2D<JHit>::const_iterator frame = input.begin(); frame != input.end(); ++frame) {
206
207 const JDAQPMTIdentifier& id = frame->getPMTIdentifier();
208
209 int n = frame->size();
210
211 for (typename JSuperFrame2D<JHit>::value_type::const_iterator i = frame->begin(); n != 0; ++i, --n) {
212 *out = JHitR0(id.getPMTAddress(), *i);
213 ++out;
214 }
215 }
216 }
217
218
219 /**
220 * Build hits from uncalibrated DAQ data.
221 *
222 * The time calibration is applied.
223 * Note that the output data are not time sorted.
224 *
225 * \param input DAQ super frame
226 * \param module module
227 * \param out output L0 data
228 */
229 template<class JOutput_t>
230 void operator()(const JDAQSuperFrame& input,
231 const JModule& module,
232 JOutput_t out) const
233 {
234 if (!input.empty()) {
235 (*this)(this->demultiplex(input, module), out);
236 }
237 }
238 };
239
240
241 /**
242 * Template specialisation of L0 builder for JHitR1 data type.
243 */
244 template<>
246 public JBuildHelper< JBuildL0<JHitR1> >,
247 public JBuild<JHit>
248 {
249 public:
250
251 using JBuildHelper< JBuildL0<JHitR1> >::operator();
252
254
255
256 /**
257 * Default constructor.
258 */
260 {}
261
262
263 /**
264 * Build hits from calibrated data.
265 *
266 * Note that the output data are not time sorted.
267 *
268 * \param input input L0 data
269 * \param out output L0 data
270 */
271 template<class JOutput_t>
272 void operator()(const JSuperFrame2D<JHit>& input, JOutput_t out) const
273 {
274 using namespace JPP;
275
276 for (typename JSuperFrame2D<JHit>::const_iterator frame = input.begin(); frame != input.end(); ++frame) {
277
278 const JDAQModuleIdentifier& id = frame->getModuleIdentifier();
279 const JPosition3D& pos = frame->getPosition();
280
281 int n = frame->size();
282
283 for (typename JSuperFrame2D<JHit>::value_type::const_iterator i = frame->begin(); n != 0; ++i, --n) {
284 *out = JHitR1(id, pos, *i);
285 ++out;
286 }
287 }
288 }
289
290
291 /**
292 * Build hits from uncalibrated DAQ data.
293 *
294 * The time calibration is applied.
295 * Note that the output data are not time sorted.
296 *
297 * \param input DAQ super frame
298 * \param module module
299 * \param out output L0 data
300 */
301 template<class JOutput_t>
302 void operator()(const JDAQSuperFrame& input,
303 const JModule& module,
304 JOutput_t out) const
305 {
306 if (!input.empty()) {
307 (*this)(this->demultiplex(input, module), out);
308 }
309 }
310 };
311}
312
313#endif
Basic data structure for L0 hit.
Basic data structure for L0 hit.
Reduced data structure for L1 hit.
Tools for handling different hit types.
Data structure for optical module.
Basic data structure for time and time over threshold information of hit.
Data structure for a composite optical module.
Definition JModule.hh:75
Axis object.
Definition JAxis3D.hh:41
const JAxis3D & getAxis() const
Get axis.
Definition JAxis3D.hh:98
Data structure for position in three dimensions.
const JPosition3D & getPosition() const
Get position.
void operator()(const JSuperFrame2D< JHit > &input, JOutput_t out) const
Build hits from calibrated data.
Definition JBuildL0.hh:129
JBuildL0()
Default constructor.
Definition JBuildL0.hh:116
void operator()(const JDAQSuperFrame &input, const JModule &module, JOutput_t out) const
Build hits from uncalibrated DAQ data.
Definition JBuildL0.hh:159
JBuildL0()
Default constructor.
Definition JBuildL0.hh:188
void operator()(const JSuperFrame2D< JHit > &input, JOutput_t out) const
Build hits from calibrated data.
Definition JBuildL0.hh:201
void operator()(const JDAQSuperFrame &input, const JModule &module, JOutput_t out) const
Build hits from uncalibrated DAQ data.
Definition JBuildL0.hh:230
void operator()(const JDAQSuperFrame &input, const JModule &module, JOutput_t out) const
Build hits from uncalibrated DAQ data.
Definition JBuildL0.hh:302
void operator()(const JSuperFrame2D< JHit > &input, JOutput_t out) const
Build hits from calibrated data.
Definition JBuildL0.hh:272
JBuildL0()
Default constructor.
Definition JBuildL0.hh:259
Template L0 hit builder.
Definition JBuildL0.hh:38
void operator()(const JSuperFrame2D< JHit_t > &input, JOutput_t out) const
Build hits from calibrated data.
Definition JBuildL0.hh:62
void operator()(const JDAQSuperFrame &input, const JModule &module, JOutput_t out) const
Build hits from uncalibrated DAQ data.
Definition JBuildL0.hh:87
JBuildL0()
Default constructor.
Definition JBuildL0.hh:49
container_type::const_iterator const_iterator
Definition JFrame.hh:46
Data structure for L0 hit.
Definition JHitL0.hh:31
Reduced data structure for L0 hit.
Definition JHitR0.hh:27
Reduced data structure for L1 hit.
Definition JHitR1.hh:35
2-dimensional frame with time calibrated data from one optical module.
std::vector< value_type >::const_iterator const_iterator
bool empty() const
Definition JDAQFrame.hh:181
const JDAQModuleIdentifier & getModuleIdentifier() const
Get Module identifier.
const JDAQPMTIdentifier & getPMTIdentifier() const
Get PMT identifier.
Data frame of one optical module.
This name space includes all other name spaces (except KM3NETDAQ, KM3NET and ANTARES).
const int n
Definition JPolint.hh:791
Auxiliary classes and methods for triggering.
Auxiliary class to set-up Hit.
Definition JSirene.hh:58
Auxiliary class to extend hit building functionality to all DAQ data types.
Auxiliary base class for hit building.
Definition JBuild.hh:36
JSuperFrame2D< JHit_t > & demultiplex(const JDAQSuperFrame &input, const JModule &module) const
Demultiplex and pre-process DAQ super frame.
Definition JBuild.hh:103