BmnRoot
26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Toggle main menu visibility
Loading...
Searching...
No Matches
MicrosliceDescriptor.h
Go to the documentation of this file.
1
// Copyright 2013 Jan de Cuveland <cmail@cuveland.de>
2
/// \file
3
/// \brief Defines the fles::MicrosliceDescriptor struct and corresponding
4
/// enums.
5
#ifndef FLES_MICROSLICEDESCRIPTOR_H
6
#define FLES_MICROSLICEDESCRIPTOR_H
7
8
#include <boost/serialization/access.hpp>
9
#include <cstdint>
10
11
/// Main FLES namespace.
12
namespace
fles
13
{
14
15
/**
16
* \brief Subsystem identifier enum.
17
*
18
* This enum defines the possible values for the
19
* fles::MicrosliceDescriptor::sys_id variable.
20
*/
21
enum class
SubsystemIdentifier
: uint8_t
22
{
23
// CBM detectors
24
STS
= 0x10,
///< Silicon Tracking System (STS)
25
MVD
= 0x20,
///< Micro-Vertex Detector (MVD)
26
RICH
= 0x30,
///< Ring Imaging CHerenkov detector (RICH)
27
TRD
= 0x40,
///< Transition Radiation Detector (TRD)
28
MUCH
= 0x50,
///< Muon Chamber system (MuCh)
29
RPC
= 0x60,
///< Resistive Plate Chambers (RPC)
30
ECAL
= 0x70,
///< Electromagnetic CALorimeter (ECAL)
31
PSD
= 0x80,
///< Projectile Spectator Detector (PSD)
32
33
// Other detectors (experimental)
34
TRB3
= 0xE0,
///< TRB3 Stream
35
Hodoscope
= 0xE1,
///< Fiber Hodoscope
36
Cherenkov
= 0xE2,
///< Cherenkov
37
LeadGlass
= 0xE3,
///< Lead Glas Calorimeter
38
39
// FLES (pattern generators)
40
FLES
= 0xF0
///< First-level Event Selector (FLES)
41
};
42
43
enum class
SubsystemFormatFLES
: uint8_t
44
{
45
// FLIB hardware pattern generators
46
CbmNetPattern
= 0x10,
///< FLIB hardware pattern generator ("pgen")
47
CbmNetFrontendEmulation
= 0x11,
///< FLIB front-end emulation ("emu")
48
FlibPattern
= 0x20,
49
50
// Flesnet software pattern generators
51
Uninitialized
= 0x80,
///< Uninitialized data content (without crc)
52
BasicRampPattern
= 0x81
///< Basic test pattern (without crc)
53
};
54
55
/**
56
* \brief Header format identifier enum.
57
*
58
* This enum defines the possible values for the
59
* fles::MicrosliceDescriptor::hdr_id variable.
60
*/
61
enum class
HeaderFormatIdentifier
: uint8_t
62
{
63
Standard
= 0xDD
64
};
65
66
/**
67
* \brief Header format version enum.
68
*
69
* This enum defines the possible values for the
70
* fles::MicrosliceDescriptor::hdr_ver variable.
71
*/
72
enum class
HeaderFormatVersion
: uint8_t
73
{
74
Standard
= 0x01
75
};
76
77
/**
78
* \brief Microslice status and error flags.
79
*
80
* This enum defines the bits in the
81
* fles::MicrosliceDescriptor::flags word.
82
*/
83
enum class
MicrosliceFlags
: uint16_t
84
{
85
CrcValid
= 0x0001,
// information in CRC field is valid
86
OverflowFlim
= 0x0002,
// truncated by FLIM
87
OverflowUser
= 0x0004,
// truncated by user logic
88
DataError
= 0x0008
// data error flag set by user logic
89
};
90
91
#pragma pack(1)
92
93
/**
94
* \brief %Microslice descriptor struct.
95
*
96
* This packed struct matches the descriptor generated by the FLIB hardware.
97
*/
98
struct
MicrosliceDescriptor
99
{
100
uint8_t
hdr_id
;
///< Header format identifier (0xDD)
101
uint8_t
hdr_ver
;
///< Header format version (0x01)
102
uint16_t
eq_id
;
///< Equipment identifier
103
uint16_t
flags
;
///< Status and error flags
104
uint8_t
sys_id
;
///< Subsystem identifier
105
uint8_t
sys_ver
;
///< Subsystem format/version
106
uint64_t
idx
;
///< Microslice index / start time
107
uint32_t
crc
;
///< CRC-32C (Castagnoli polynomial) of data content
108
uint32_t
size
;
///< Content size (bytes)
109
uint64_t
offset
;
///< Offset in event buffer (bytes)
110
111
friend
class
boost::serialization::access;
112
/// Provide boost serialization access.
113
template
<
class
Archive>
114
void
serialize
(Archive& ar,
const
unsigned
int
/* version */
)
115
{
116
ar &
hdr_id
;
117
ar &
hdr_ver
;
118
ar &
eq_id
;
119
ar &
flags
;
120
ar &
sys_id
;
121
ar &
sys_ver
;
122
ar &
idx
;
123
ar &
crc
;
124
ar &
size
;
125
ar &
offset
;
126
}
127
};
128
129
#pragma pack()
130
131
}
// namespace fles
132
133
#endif
// FLES_MICROSLICEDESCRIPTOR_H
fles
Main FLES namespace.
Definition
ArchiveDescriptor.h:15
fles::HeaderFormatIdentifier
HeaderFormatIdentifier
Header format identifier enum.
Definition
MicrosliceDescriptor.h:62
fles::HeaderFormatIdentifier::Standard
@ Standard
Definition
MicrosliceDescriptor.h:63
fles::HeaderFormatVersion
HeaderFormatVersion
Header format version enum.
Definition
MicrosliceDescriptor.h:73
fles::SubsystemIdentifier
SubsystemIdentifier
Subsystem identifier enum.
Definition
MicrosliceDescriptor.h:22
fles::SubsystemIdentifier::ECAL
@ ECAL
Electromagnetic CALorimeter (ECAL).
Definition
MicrosliceDescriptor.h:30
fles::SubsystemIdentifier::MVD
@ MVD
Micro-Vertex Detector (MVD).
Definition
MicrosliceDescriptor.h:25
fles::SubsystemIdentifier::Hodoscope
@ Hodoscope
Fiber Hodoscope.
Definition
MicrosliceDescriptor.h:35
fles::SubsystemIdentifier::RPC
@ RPC
Resistive Plate Chambers (RPC).
Definition
MicrosliceDescriptor.h:29
fles::SubsystemIdentifier::Cherenkov
@ Cherenkov
Cherenkov.
Definition
MicrosliceDescriptor.h:36
fles::SubsystemIdentifier::MUCH
@ MUCH
Muon Chamber system (MuCh).
Definition
MicrosliceDescriptor.h:28
fles::SubsystemIdentifier::TRB3
@ TRB3
TRB3 Stream.
Definition
MicrosliceDescriptor.h:34
fles::SubsystemIdentifier::PSD
@ PSD
Projectile Spectator Detector (PSD).
Definition
MicrosliceDescriptor.h:31
fles::SubsystemIdentifier::LeadGlass
@ LeadGlass
Lead Glas Calorimeter.
Definition
MicrosliceDescriptor.h:37
fles::SubsystemIdentifier::RICH
@ RICH
Ring Imaging CHerenkov detector (RICH).
Definition
MicrosliceDescriptor.h:26
fles::SubsystemIdentifier::STS
@ STS
Silicon Tracking System (STS).
Definition
MicrosliceDescriptor.h:24
fles::SubsystemIdentifier::FLES
@ FLES
First-level Event Selector (FLES).
Definition
MicrosliceDescriptor.h:40
fles::SubsystemIdentifier::TRD
@ TRD
Transition Radiation Detector (TRD).
Definition
MicrosliceDescriptor.h:27
fles::MicrosliceFlags
MicrosliceFlags
Microslice status and error flags.
Definition
MicrosliceDescriptor.h:84
fles::MicrosliceFlags::OverflowFlim
@ OverflowFlim
Definition
MicrosliceDescriptor.h:86
fles::MicrosliceFlags::DataError
@ DataError
Definition
MicrosliceDescriptor.h:88
fles::MicrosliceFlags::OverflowUser
@ OverflowUser
Definition
MicrosliceDescriptor.h:87
fles::MicrosliceFlags::CrcValid
@ CrcValid
Definition
MicrosliceDescriptor.h:85
fles::SubsystemFormatFLES
SubsystemFormatFLES
Definition
MicrosliceDescriptor.h:44
fles::SubsystemFormatFLES::CbmNetFrontendEmulation
@ CbmNetFrontendEmulation
FLIB front-end emulation ("emu").
Definition
MicrosliceDescriptor.h:47
fles::SubsystemFormatFLES::FlibPattern
@ FlibPattern
Definition
MicrosliceDescriptor.h:48
fles::SubsystemFormatFLES::BasicRampPattern
@ BasicRampPattern
Basic test pattern (without crc).
Definition
MicrosliceDescriptor.h:52
fles::SubsystemFormatFLES::CbmNetPattern
@ CbmNetPattern
FLIB hardware pattern generator ("pgen").
Definition
MicrosliceDescriptor.h:46
fles::SubsystemFormatFLES::Uninitialized
@ Uninitialized
Uninitialized data content (without crc).
Definition
MicrosliceDescriptor.h:51
fles::MicrosliceDescriptor::flags
uint16_t flags
Status and error flags.
Definition
MicrosliceDescriptor.h:103
fles::MicrosliceDescriptor::idx
uint64_t idx
Microslice index / start time.
Definition
MicrosliceDescriptor.h:106
fles::MicrosliceDescriptor::hdr_id
uint8_t hdr_id
Header format identifier (0xDD).
Definition
MicrosliceDescriptor.h:100
fles::MicrosliceDescriptor::size
uint32_t size
Content size (bytes).
Definition
MicrosliceDescriptor.h:108
fles::MicrosliceDescriptor::sys_id
uint8_t sys_id
Subsystem identifier.
Definition
MicrosliceDescriptor.h:104
fles::MicrosliceDescriptor::crc
uint32_t crc
CRC-32C (Castagnoli polynomial) of data content.
Definition
MicrosliceDescriptor.h:107
fles::MicrosliceDescriptor::eq_id
uint16_t eq_id
Equipment identifier.
Definition
MicrosliceDescriptor.h:102
fles::MicrosliceDescriptor::hdr_ver
uint8_t hdr_ver
Header format version (0x01).
Definition
MicrosliceDescriptor.h:101
fles::MicrosliceDescriptor::serialize
void serialize(Archive &ar, const unsigned int)
Provide boost serialization access.
Definition
MicrosliceDescriptor.h:114
fles::MicrosliceDescriptor::sys_ver
uint8_t sys_ver
Subsystem format/version.
Definition
MicrosliceDescriptor.h:105
fles::MicrosliceDescriptor::offset
uint64_t offset
Offset in event buffer (bytes).
Definition
MicrosliceDescriptor.h:109
install
include
MicrosliceDescriptor.h
Generated on
for BmnRoot by
1.17.0