DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
ErrorBitGenerator.hpp
Go to the documentation of this file.
1
7
8#ifndef DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_UTILS_ERRORBITGENERATOR_HPP_
9#define DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_UTILS_ERRORBITGENERATOR_HPP_
10
11#include <random>
12#include <unistd.h>
13
14namespace dunedaq {
15namespace datahandlinglibs {
16
24
26{
27public:
28 explicit ErrorBitGenerator(double rate = 0)
29 : m_error_rate(rate)
35 , m_set_error_bits(true)
36 {
37 }
57
58 void generate()
59 {
60 std::random_device rd;
61 std::mt19937 mt(rd());
62 std::uniform_int_distribution<uint16_t> err_bit_dis(0, 65535); // NOLINT(build/unsigned)
63 std::uniform_int_distribution<int> duration_dis(1, 100000);
64
65 for (int i = 0; i < m_size; ++i) {
66 m_error_bits[i] = err_bit_dis(mt);
67 }
68 for (int i = 0; i < m_size; ++i) {
69 m_error_occurrences[i] = duration_dis(mt) * m_error_rate;
70 m_no_error_occurrences[i] = duration_dis(mt) * (1 - m_error_rate);
71 }
72 }
73
74private:
75 int m_size = 1000;
77 uint16_t m_error_bits[1000]; // NOLINT(build/unsigned)
86};
87
88} // namespace datahandlinglibs
89} // namespace dunedaq
90
91#endif // DATAHANDLINGLIBS_INCLUDE_DATAHANDLINGLIBS_UTILS_ERRORBITGENERATOR_HPP_
The DUNE-DAQ namespace.