Jpp  18.3.1
the software that should make you happy
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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
static const JBits DAQ_UDP_RECEIVED_PACKETS(0, 15)
Mask of UDP received packets.
void setDAQTriggerMask(const JDAQTriggerMask &mask)
Set trigger mask.
void clear()
Clear data.
void clear()
Clear data.
Definition: JDAQFrame.hh:154
DAQ key hit.
Definition: JDAQKeyHit.hh:19
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:115
Auxiliary class for trigger mask.
int write(const int value) const
Write given value as bit mask.
Definition: JDAQ.hh:238
Definition of random value generator.
then for NAME in JDAQPreamble JDAQChronometer JDAQModuleIdentifier JDAQPMTIdentifier JDAQFrameStatus JDAQUTCExtended JDAQTimeslice JDAQTimesliceHeader JDAQSuperFrame JDAQSuperFrameHeader JDAQHit JDAQSummaryslice JDAQSummarysliceHeader JDAQSummaryFrame JDAQEvent JDAQEventHeader JDAQTriggerCounter JDAQTriggerMask JDAQKeyHit JDAQTriggeredHit
void setDAQSuperFrameHeader(const JDAQSuperFrameHeader &header)
Set DAQ super frame header.
Hit data structure.
Definition: JDAQHit.hh:34
Data storage class for rate measurements of all PMTs in one module.
const JDAQChronometer & getDAQChronometer() const
Get DAQ chronometer.
Data time slice.
void setDAQChronometer(const JDAQChronometer &chronometer)
Set DAQ chronometer.
static const JBit DAQ_UDP_TRAILER(31)
UDP trailer.
Auxiliary data structure for single bit.
Definition: JDAQ.hh:36
void setModuleIdentifier(const JDAQModuleIdentifier &module)
Set Module identifier.
double getRTS()
Get TDC dynamic range.
Definition: JDAQClock.hh:173
void setDAQFrameStatus(const JDAQFrameStatus &status)
Set DAQ frame status.
bool write(const Vec &v, std::ostream &os)
Write a Vec(tor) to a stream.
Definition: io_ascii.hh:155
static const JBit DAQ_WHITE_RABBIT(31)
White Rabbit status.
T getRandom()
Get random value.
Definition: JRandom.hh:113
void push_back(const JDAQKeyHit &hit)
Add hit.
Definition: JDAQEvent.hh:203
static const JBits DAQ_UDP_SEQUENCE_NUMBER(16, 31)
Mask of UDP sequence number.
void setRate(const int tdc, const double rate_Hz)
Set count rate.
KM3NeT DAQ constants, bit handling, etc.
static const int NUMBER_OF_PMTS
Total number of PMTs in module.
Definition: JDAQ.hh:26
Data frame of one optical module.
JDAQSuperFrame & add(const JDAQSuperFrame &super_frame)
Add data from same optical module.
void clear()
Clear event.
Definition: JDAQEvent.hh:191
const JDAQTriggerMask & getDAQTriggerMask() const
Get DAQ trigger mask.
void randomize(JDAQChronometer *p)
Randomize chronometer.
Definition: JDAQTestkit.hh:29