Orion
high-rate readout
|
Fragment headers. More...
#include <cassert>
#include <vector>
#include <span>
Go to the source code of this file.
Classes | |
class | itk::fragment::FelixPacket |
Felix Packet structure. More... | |
struct | itk::fragment::FelixID |
struct | itk::fragment::FLX::Header |
struct | itk::fragment::SWROD::Header |
struct | itk::fragment::ROD::Header |
struct | itk::fragment::ROD::Trailer |
struct | itk::fragment::ROB::BaseHeader |
struct | itk::fragment::ROB::Header< n > |
Typedefs | |
using | itk::fragment::uint = uint32_t |
Enumerations | |
enum | itk::fragment::ROB::checksum_t { itk::fragment::ROB::CHECKSUM_NONE = 0x0 , itk::fragment::ROB::CHECKSUM_CRC16 = 0x1 , itk::fragment::ROB::CHECKSUM_ADLER32 = 0x2 } |
Checksum type. More... | |
Functions | |
struct itk::fragment::FelixID | itk::fragment::__attribute__ ((packed, aligned(4))) |
struct itk::fragment::FLX::Header | itk::fragment::FLX::__attribute__ ((packed, aligned(4))) |
struct itk::fragment::SWROD::Header | itk::fragment::SWROD::__attribute__ ((packed, aligned(4))) |
struct itk::fragment::ROD::Header | itk::fragment::ROD::__attribute__ ((packed, aligned(4))) |
template<int n> | |
struct itk::fragment::ROB::Header | itk::fragment::ROB::__attribute__ ((packed, aligned(4))) |
Variables | |
union { | |
uint64_t felix_id | |
struct { | |
uint stream_id: 8 | |
union { | |
struct { | |
uint transport_id: 14 | |
uint link_id: 14 | |
} | |
struct { | |
uint proto_id: 7 | |
uint direction: 1 | |
uint elink_id: 19 | |
uint virtlink: 1 | |
} | |
} | |
uint connector_id: 16 | |
uint detector_id: 8 | |
uint version_id: 4 | |
} | |
}; | |
uint32_t | fragment_size = 0 |
header marker More... | |
uint8_t | padding_bytes |
size of fragment in words | |
uint8_t | felix_status = 0 |
bytes added to align to word More... | |
uint8_t | format_type |
Virtual[1].ElinkID[19]. | |
uint8_t | swrod_status = 0 |
format type More... | |
uint32_t | timestamp = 0 |
SWROD status. More... | |
uint16_t | size = 0 |
constexpr uint32_t | itk::fragment::SWROD::HEADER_SIZE = sizeof(Header)/4 |
SWROD header size. | |
constexpr uint32_t | itk::fragment::ROD::HEADER_MARKER = 0xee1234ee |
ROD Header marker. | |
constexpr uint32_t | itk::fragment::ROD::HEADER_SIZE = 9 |
ROD Header fragment size. | |
uint32_t | header_marker = HEADER_MARKER |
uint32_t | header_size = HEADER_SIZE |
header marker, for ROD = 0xee1234ee More... | |
uint32_t | format_version |
header size in words | |
uint32_t | source_id = 0 |
format version major[16].minor[16] | |
uint32_t | run_number |
origin of the fragment : optional[8].sub-detector[8].ROL[16] | |
uint32_t | ext_l1id |
run number | |
uint32_t | bcid |
extended Level1 ID : ecr[8].l1id[24] | |
uint32_t | trigger_type |
bunch crossing ID : bcid[12] | |
uint32_t | event_type |
Leve1 ID trigger type. | |
uint32_t | status_size = 0 |
origin of the fragment [sub-detector id, module id] | |
uint32_t | data_size = 0 |
number of status elements | |
uint32_t | status_pos = 1 |
number of data elements | |
enum itk::fragment::ROB::checksum_t | itk::fragment::ROB::__attribute__ |
constexpr uint32_t | itk::fragment::ROB::HEADER_MARKER = 0xdd1234dd |
ROB Header marker. | |
uint32_t | status [n] |
number of status elements | |
uint32_t | checksum_type = 0 |
status elements | |
uint32_t | felix_device = 0xF |
Timestamp for ROB in bunch crossing. | |
Fragment headers.
uint8_t felix_status = 0 |
bytes added to align to word
size of fragment including header in 4 byte words
uint32_t fragment_size = 0 |
header marker
32 24 16 8 0 ╭──────╮╭──────╮╭──────╮╭──────╮ [status][][...fragment_size....] [.type.][.... packet_size......] ..link...][.transport..][stream] [........timestamp.........][... ╰──────╯╰──────╯╰──────╯╰──────╯
uint32_t header_size = HEADER_SIZE |
header marker, for ROD = 0xee1234ee
size of fragment in words
uint16_t size = 0 |
32 24 16 8 0 ╭──────╮╭──────╮╭──────╮╭──────╮ [swrod.][status][.....size.....] [............link_id...........] ╰──────╯╰──────╯╰──────╯╰──────╯
uint8_t swrod_status = 0 |
format type
felix status
uint64_t timestamp = 0 |
SWROD status.
check sum type, after status elements
Detector Specific Header ╭──────╮╭──────╮╭──────╮╭──────╮ ...........timestamp...........] [..........timestamp............ -—[V.][.Det..][..Connector...] ╰──────╯╰──────╯╰──────╯╰──────╯