Jpp test-rotations-new
the software that should make you happy
Loading...
Searching...
No Matches
JDAQTestkit.hh
Go to the documentation of this file.
1#ifndef __JDAQTESTKIT__
2#define __JDAQTESTKIT__
3
4#include "TRandom3.h"
5
11#include "JDAQ/JDAQEventIO.hh"
14#include "JMath/JRandom.hh"
15
16/**
17 * \author mdejong
18 */
19
20namespace KM3NETDAQ {
21
22 using JMATH::getRandom;
23
24 /**
25 * Randomize chronometer.
26 *
27 * \param p pointer to valid object
28 */
29 inline void randomize(JDAQChronometer* p)
30 {
31 new (p) JDAQChronometer(getRandom<int>(1, 100000), //! detector
32 getRandom<int>(1, 99999999), //! run
33 getRandom<int>(1, 99999999)); //! frame index
34 };
35
36
37 /**
38 * Randomize hit.
39 *
40 * \param p pointer to valid object
41 */
42 inline void randomize(JDAQHit* p)
43 {
44 new (p) JDAQHit(getRandom<JDAQHit::JPMT_t>(0, NUMBER_OF_PMTS),
45 getRandom<JDAQHit::JTDC_t>(0, getRTS()),
46 getRandom<JDAQHit::JTOT_t>());
47 }
48
49
50 /**
51 * Randomize trigger mask.
52 *
53 * \param p pointer to valid object
54 */
55 inline void randomize(JDAQTriggerMask* p)
56 {
57 new (p) JDAQTriggerMask(getRandom<JTriggerMask_t>(1, 0xFFFFFFFF));
58 };
59
60
61 /**
62 * Randomize event.
63 *
64 * \param p pointer to valid object
65 */
66 inline void randomize(JDAQEvent* p)
67 {
68 p->clear();
69 p->setDAQChronometer(getRandom<JDAQChronometer>());
70 p->setDAQTriggerMask(getRandom<JDAQTriggerMask>());
71
72 for (int i = getRandom<int>(1, 1000); i != 0; --i) {
73 p->push_back(JDAQKeyHit(getRandom<int>(0, 100000),
74 getRandom<JDAQHit>()));
75 }
76
77 for (int i = getRandom<int>(1, 10); i != 0; --i) {
78 p->push_back(JDAQTriggeredHit(getRandom<int>(0, 100000),
79 getRandom<JDAQHit>(),
80 p->getDAQTriggerMask()));
81 }
82 }
83
84
85 /**
86 * Randomize frame status.
87 *
88 * \param p pointer to valid object
89 */
90 inline void randomize(JDAQFrameStatus* p)
91 {
92 int daq = (DAQ_UDP_RECEIVED_PACKETS.write(gRandom->Integer(99)) | //
93 DAQ_UDP_SEQUENCE_NUMBER .write(gRandom->Integer(99))); // DAQ status
94 int status = DAQ_WHITE_RABBIT.write(gRandom->Rndm() < 0.5 ? 0 : 1); // TDC status
95 int fifo = DAQ_UDP_TRAILER .write(gRandom->Rndm() < 0.5 ? 0 : 1); // FIFO status
96
97 for (size_t pmt = 0; pmt != NUMBER_OF_PMTS; ++pmt) {
98 JBit(pmt).set(status, gRandom->Rndm() < 0.5 ? 0 : 1); // high-rate veto
99 }
100
101 new (p) JDAQFrameStatus(daq, status, fifo);
102 }
103
104
105 /**
106 * Randomize summary frame.
107 *
108 * \param p pointer to valid object
109 */
111 {
112 p->setDAQFrameStatus (getRandom<JDAQFrameStatus>());
113 p->setModuleIdentifier(getRandom<int>(0, 100000));
114
115 for (int i = 0; i != NUMBER_OF_PMTS; ++i) {
116 p->setRate(i, getRandom<double>(0, 1.0e6));
117 }
118 }
119
120
121 /**
122 * Randomize summary slice.
123 *
124 * \param p pointer to valid object
125 */
127 {
128 p->clear();
129 p->setDAQChronometer(getRandom<JDAQChronometer>());
130
131 for (UInt_t i = gRandom->Integer(100); i != 0; --i) {
132 p->push_back(getRandom<JDAQSummaryFrame>());
133 }
134 }
135
136
137 /**
138 * Randomize timeslice.
139 *
140 * \param p pointer to valid object
141 */
142 inline void randomize(JDAQSuperFrame* p)
143 {
144 p->clear();
145
146 p->setDAQSuperFrameHeader(JDAQSuperFrameHeader(getRandom<JDAQChronometer>(),
147 getRandom<int>(0, 100000),
148 getRandom<JDAQFrameStatus>()));
149
150 for (int i = getRandom<int>(0, 10000); i != 0; --i) {
151 p->add(getRandom<JDAQHit>());
152 }
153 }
154
155
156 /**
157 * Randomize timeslice.
158 *
159 * \param p pointer to valid object
160 */
161 inline void randomize(JDAQTimeslice* p)
162 {
163 p->clear();
164 p->setDAQChronometer(getRandom<JDAQChronometer>());
165
166 JDAQSuperFrame buffer(JDAQSuperFrameHeader(p->getDAQChronometer(), getRandom<int>(0, 100000)));
167
168 for (int i = getRandom<int>(0, 10000); i != 0; --i) {
169 buffer.add(getRandom<JDAQHit>());
170 }
171
172 p->push_back(buffer);
173 }
174}
175
176#endif
KM3NeT DAQ constants, bit handling, etc.
Definition of random value generator.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
void setDAQChronometer(const JDAQChronometer &chronometer)
Set DAQ chronometer.
void clear()
Clear event.
Definition JDAQEvent.hh:191
void push_back(const JDAQKeyHit &hit)
Add hit.
Definition JDAQEvent.hh:203
void setDAQFrameStatus(const JDAQFrameStatus &status)
Set DAQ frame status.
void clear()
Clear data.
Definition JDAQFrame.hh:154
Hit data structure.
Definition JDAQHit.hh:35
void setModuleIdentifier(const JDAQModuleIdentifier &module)
Set Module identifier.
Data storage class for rate measurements of all PMTs in one module.
void setRate(const int tdc, const double rate_Hz)
Set count rate.
void setDAQSuperFrameHeader(const JDAQSuperFrameHeader &header)
Set DAQ super frame header.
Data frame of one optical module.
JDAQSuperFrame & add(const JDAQSuperFrame &super_frame)
Add data from same optical module.
void clear()
Clear data.
Auxiliary class for trigger mask.
const JDAQTriggerMask & getDAQTriggerMask() const
Get DAQ trigger mask.
void setDAQTriggerMask(const JDAQTriggerMask &mask)
Set trigger mask.
T getRandom()
Get random value.
KM3NeT DAQ data structures and auxiliaries.
Definition DataQueue.cc:39
static const JBits DAQ_UDP_RECEIVED_PACKETS(0, 15)
Mask of UDP received packets.
static const JBits DAQ_UDP_SEQUENCE_NUMBER(16, 31)
Mask of UDP sequence number.
double getRTS()
Get TDC dynamic range.
Definition JDAQClock.hh:173
void randomize(JDAQChronometer *p)
Randomize chronometer.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition JDAQ.hh:26
static const JBit DAQ_WHITE_RABBIT(31)
White Rabbit status.
static const JBit DAQ_UDP_TRAILER(31)
UDP trailer.
Auxiliary data structure for single bit.
Definition JDAQ.hh:36
int write(const int value) const
Write given value as bit mask.
Definition JDAQ.hh:115
void set(int &mask) const
Set bit in given bit mask.
Definition JDAQ.hh:77
int write(const int value) const
Write given value as bit mask.
Definition JDAQ.hh:238