169 {
170 size_t packet_size_w =
Size(ver);
171
172 if (std::size(payload) != packet_size_w) {
173 throw std::runtime_error(
174 Muon::nsw::format(
"Packet vector has size {} instead of expected size {}", std::size(payload), packet_size_w));
175 }
176 auto readPointer = std::size_t{0};
177 const auto packets = std::span{
payload.data(), std::size(payload)};
178 auto decode = [&packets](std::size_t& readPointer,
const std::size_t size) {
180 };
181
182 if (ver < 3)
183 {
184
185
186
190 }
191 else
192 {
196 }
197
207
208 }
209
212
213
214}
std::uint32_t m_lut_choice
size_t Size(const int ver)
std::uint32_t m_valid_segment_selector
std::array< SegmentData, STGTPSegments::num_segments > m_segmentData
std::uint32_t m_nsw_segment_selector
double decode(number_type binnedWeight)
Convert weight from unsigned to double.
constexpr int size_output_segment_dTheta
constexpr int size_output_segment_phiRes
constexpr int size_output_segment_phiID
constexpr int size_sectorID
constexpr int size_nsw_segment_selector
constexpr int size_v3_padding
constexpr int size_output_segment_monitor
constexpr int size_output_segment_spare
constexpr int size_lut_choice_selection
constexpr std::size_t num_segments
constexpr std::size_t size_valid_segment_v3
constexpr int size_output_segment_lowRes
constexpr int size_valid_segment_selector
constexpr int size_output_segment_rIndex
std::string format(const std::string &str, const T &arg)
constexpr Target decode_and_advance(const std::span< const Source > words, std::size_t &start, const std::size_t size)
Decode bits from data of words and advance the read pointer.