16#ifndef O2_MID_DECODER_H
17#define O2_MID_DECODER_H
20#if !defined(MID_RAW_VECTORS)
21#include <unordered_map>
46 void process(gsl::span<const uint8_t> bytes);
48 void process(gsl::span<const uint8_t> payload,
const RDH& rdh)
51 auto feeId = o2::raw::RDHUtils::getFEEID(rdh);
52#if defined(MID_RAW_VECTORS)
53 mLinkDecoders[feeId]->process(payload, o2::raw::RDHUtils::getHeartBeatOrbit(rdh), o2::raw::RDHUtils::getTriggerType(rdh), mData, mROFRecords);
57 linkDecoder->second->process(payload, o2::raw::RDHUtils::getHeartBeatOrbit(rdh), o2::raw::RDHUtils::getTriggerType(rdh), mData, mROFRecords);
59 LOG(alarm) <<
"Unexpected feeId " << feeId <<
" in RDH";
64 const std::vector<ROBoard>&
getData()
const {
return mData; }
67 const std::vector<ROFRecord>&
getROFRecords()
const {
return mROFRecords; }
72#if defined(MID_RAW_VECTORS)
75 std::unordered_map<uint16_t, std::unique_ptr<LinkDecoder>>
mLinkDecoders{};
79 std::vector<ROBoard> mData{};
80 std::vector<ROFRecord> mROFRecords{};
83std::unique_ptr<Decoder>
createDecoder(
const o2::header::RDHAny& rdh,
bool isDebugMode,
const ElectronicsDelay& electronicsDelay,
const CrateMasks& crateMasks,
const FEEIdConfig& feeIdConfig);
84std::unique_ptr<Decoder>
createDecoder(
const o2::header::RDHAny& rdh,
bool isDebugMode,
const char* electronicsDelayFile =
"",
const char* crateMasksFile =
"",
const char* feeIdConfigFile =
"");
Raw data utilities for MID.
Delay parameters for MID electronics.
Hardware Id to FeeId mapper.
Class interface for the MID link decoder.
Structure to store the readout board information.
std::unordered_map< uint16_t, std::unique_ptr< LinkDecoder > > mLinkDecoders
const std::vector< ROFRecord > & getROFRecords() const
Gets the vector of data RO frame records.
void process(gsl::span< const uint8_t > payload, const RDH &rdh)
const std::vector< ROBoard > & getData() const
Gets the vector of data.
virtual ~Decoder()=default
std::unique_ptr< Decoder > createDecoder(const o2::header::RDHAny &rdh, bool isDebugMode, const ElectronicsDelay &electronicsDelay, const CrateMasks &crateMasks, const FEEIdConfig &feeIdConfig)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
LOG(info)<< "Compressed in "<< sw.CpuTime()<< " s"