Jpp  master_rocky-37-gf0c5bc59d
the software that should make you happy
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"
13 #include "JDAQ/JDAQTimesliceIO.hh"
14 #include "JMath/JRandom.hh"
15 
16 /**
17  * \author mdejong
18  */
19 
20 namespace 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  */
110  inline void randomize(JDAQSummaryFrame* p)
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  */
126  inline void randomize(JDAQSummaryslice* p)
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.
void setDAQTriggerMask(const JDAQTriggerMask &mask)
Set trigger mask.
const JDAQTriggerMask & getDAQTriggerMask() const
Get DAQ trigger mask.
T getRandom()
Get random value.
Definition: JRandom.hh:113
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.
Definition: JDAQTestkit.hh:29
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