BmnRoot
Loading...
Searching...
No Matches
MicrosliceDescriptor.h
Go to the documentation of this file.
1// Copyright 2013 Jan de Cuveland <cmail@cuveland.de>
5#pragma once
6
7#include <boost/serialization/access.hpp>
8#include <cstdint>
9
11namespace fles
12{
13
20enum class SubsystemIdentifier : uint8_t
21{
22 // CBM detectors
23 STS = 0x10,
24 MVD = 0x20,
25 RICH = 0x30,
26 TRD = 0x40,
27 MUCH = 0x50,
28 RPC = 0x60,
29 ECAL = 0x70,
30 PSD = 0x80,
31
32 // Other detectors (experimental)
33 TRB3 = 0xE0,
34 Hodoscope = 0xE1,
35 Cherenkov = 0xE2,
36 LeadGlass = 0xE3,
37
38 // FLES (pattern generators)
39 FLES = 0xF0
40};
41
42enum class SubsystemFormatFLES : uint8_t
43{
44 // FLIB hardware pattern generators
45 CbmNetPattern = 0x10,
47 FlibPattern = 0x20,
48
49 // Flesnet software pattern generators
50 Uninitialized = 0x80,
51 BasicRampPattern = 0x81
52};
53
60enum class HeaderFormatIdentifier : uint8_t
61{
62 Standard = 0xDD
63};
64
71enum class HeaderFormatVersion : uint8_t
72{
73 Standard = 0x01
74};
75
82enum class MicrosliceFlags : uint16_t
83{
84 CrcValid = 0x0001, // information in CRC field is valid
85 OverflowFlim = 0x0002, // truncated by FLIM
86 OverflowUser = 0x0004, // truncated by user logic
87 DataError = 0x0008 // data error flag set by user logic
88};
89
90#pragma pack(1)
91
97struct MicrosliceDescriptor
98{
99 uint8_t hdr_id;
100 uint8_t hdr_ver;
101 uint16_t eq_id;
102 uint16_t flags;
103 uint8_t sys_id;
104 uint8_t sys_ver;
105 uint64_t idx;
106 uint32_t crc;
107 uint32_t size;
108 uint64_t offset;
109
110 friend class boost::serialization::access;
112 template<class Archive>
113 void serialize(Archive& ar, const unsigned int /* version */)
114 {
115 ar & hdr_id;
116 ar & hdr_ver;
117 ar & eq_id;
118 ar & flags;
119 ar & sys_id;
120 ar & sys_ver;
121 ar & idx;
122 ar & crc;
123 ar & size;
124 ar & offset;
125 }
126};
127
128#pragma pack()
129
130} // namespace fles
Main FLES namespace.
HeaderFormatIdentifier
Header format identifier enum.
HeaderFormatVersion
Header format version enum.
SubsystemIdentifier
Subsystem identifier enum.
@ ECAL
Electromagnetic CALorimeter (ECAL)
@ MVD
Micro-Vertex Detector (MVD)
@ Hodoscope
Fiber Hodoscope.
@ RPC
Resistive Plate Chambers (RPC)
@ MUCH
Muon Chamber system (MuCh)
@ PSD
Projectile Spectator Detector (PSD)
@ LeadGlass
Lead Glas Calorimeter.
@ RICH
Ring Imaging CHerenkov detector (RICH)
@ STS
Silicon Tracking System (STS)
@ FLES
First-level Event Selector (FLES)
@ TRD
Transition Radiation Detector (TRD)
MicrosliceFlags
Microslice status and error flags.
@ CbmNetFrontendEmulation
FLIB front-end emulation ("emu")
@ BasicRampPattern
Basic test pattern (without crc)
@ CbmNetPattern
FLIB hardware pattern generator ("pgen")
@ Uninitialized
Uninitialized data content (without crc)
uint16_t flags
Status and error flags.
uint64_t idx
Microslice index / start time.
uint8_t hdr_id
Header format identifier (0xDD)
uint32_t size
Content size (bytes)
uint8_t sys_id
Subsystem identifier.
uint32_t crc
CRC-32C (Castagnoli polynomial) of data content.
uint16_t eq_id
Equipment identifier.
uint8_t hdr_ver
Header format version (0x01)
void serialize(Archive &ar, const unsigned int)
Provide boost serialization access.
uint8_t sys_ver
Subsystem format/version.
uint64_t offset
Offset in event buffer (bytes)