1 #ifndef BUFFER_CONFIG_HH_
2 #define BUFFER_CONFIG_HH_
5 #include "Mu2e-STMDAQ/config/config.hh"
6 #include "Mu2e-STMDAQ/config/include/zs_config.hh"
12 const size_t raw_size;
17 const size_t max_packet_num;
19 const size_t max_packet_size;
21 const size_t max_packet_len;
24 const size_t max_event_num;
37 const size_t baseline_size;
39 const size_t baseline_len;
45 const size_t queue_capacity;
48 const size_t pool_size;
52 const std::shared_ptr<AsyncLogger> logger,
56 const uint16_t MAX_PACKET_SIZE) :
57 raw_size(cfg.getValue<
int>(
"stm.buffers.raw_size")),
58 raw_len(raw_size/
sizeof(int16_t)),
59 max_packet_num(std::floor((
61 - (
double)mu2e_config.max_event_size)
62 /(
double)MAX_PACKET_SIZE
64 max_packet_size(max_packet_num*MAX_PACKET_SIZE),
65 max_packet_len(max_packet_size/
sizeof(int16_t)),
66 max_event_num(std::ceil((
double)max_packet_size
67 /(
double)mu2e_config.min_event_size)
70 zs_len(zs_size/
sizeof(int16_t)),
71 ph_size(raw_size/
sizeof(int16_t)*
sizeof(
double)),
72 ph_len(ph_size/
sizeof(
double)),
73 baseline_size(cfg.getValue<
int>(
"stm.buffers.baseline_size")),
74 baseline_len(baseline_size/
sizeof(int16_t)),
75 extra(cfg.getValue<
double>(
"stm.buffers.extra")),
76 queue_capacity(cfg.getValue<
int>(
"stm.buffers.queue_capacity")),
77 pool_size(cfg.getValue<
int>(
"stm.buffers.buffer_pool_size"))
82 logger->log(
"Config:buffer_info: Raw data (int16_t) buffer size = " +
83 std::to_string(raw_size) +
" bytes = " +
84 std::to_string(raw_len) +
" ADC values.",1);
85 logger->log(
"Config:buffer_info: Maximum 8198 byte packets per raw buffer = " +
86 std::to_string(max_packet_num) +
" packets = " +
87 std::to_string(max_packet_size) +
" bytes.",1);
88 logger->log(
"Config:buffer_info: Maximum number of " +
89 std::to_string(mu2e_config.min_event_period) +
90 " us (minimum) Mu2e events per raw buffer = " +
91 std::to_string(max_event_num) +
" events.",1);
92 logger->log(
"Config:buffer_info: Zero suppressed (int16_t) data buffer size = " +
93 std::to_string(zs_size) +
" bytes = " +
94 std::to_string(zs_len) +
" ADC values.",1);
95 logger->log(
"Config:buffer_info: Pulse height (double) data buffer size = " +
96 std::to_string(ph_size) +
" bytes = " +
97 std::to_string(ph_len) +
" ADC values.",1);
98 logger->log(
"Config:buffer_info: ADC baseline (int16_t) data buffer size = " +
99 std::to_string(baseline_size) +
" bytes = " +
100 std::to_string(baseline_len) +
" ADC values = " +
101 std::to_string(baseline_len*fw_config.tADC) +
" us .",1);
102 logger->log(
"Config:buffer_info: % extra of total allocated buffer size (metadata) = " +
103 std::to_string(extra) +
" %.",1);
104 logger->log(
"Config:buffer_info: Queue capacity for each operation = " +
105 std::to_string(queue_capacity) +
" .",1);
106 logger->log(
"Config:buffer_info: Buffer pool for each operation = " +
107 std::to_string(pool_size) +
" .",1);