ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Trigger
TrigT1
TrigT1CaloByteStream
src
CmxSubBlock.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
6
#include "
CmxSubBlock.h
"
7
8
namespace
LVL1BS
{
9
10
// Static constant definitions
11
12
const
int
CmxSubBlock::s_wordIdVal
;
13
14
const
int
CmxSubBlock::s_cmxSummingBit
;
15
const
int
CmxSubBlock::s_cmxFirmwareBit
;
16
const
int
CmxSubBlock::s_cmxPositionBit
;
17
const
uint32_t
CmxSubBlock::s_cmxSummingMask
;
18
const
uint32_t
CmxSubBlock::s_cmxFirmwareMask
;
19
const
uint32_t
CmxSubBlock::s_cmxPositionMask
;
20
21
const
int
CmxSubBlock::s_glinkBitsPerSlice
;
22
23
CmxSubBlock::CmxSubBlock
()
24
{
25
}
26
27
CmxSubBlock::~CmxSubBlock
()
28
{
29
}
30
31
// Store CMX header
32
33
void
CmxSubBlock::setCmxHeader
(
const
int
version
,
const
int
format
,
34
const
int
slice
,
const
int
crate
,
35
const
int
summing,
const
int
firmware,
36
const
int
position,
const
int
timeslices
)
37
{
38
int
module
= 0;
39
module
|= (summing & s_cmxSummingMask) << s_cmxSummingBit;
40
module
|= (firmware & s_cmxFirmwareMask) << s_cmxFirmwareBit;
41
module
|= (position & s_cmxPositionMask) << s_cmxPositionBit;
42
setHeader
(
s_wordIdVal
,
version
,
format
,
slice
,
crate
,
module
, 0,
43
timeslices
);
44
}
45
46
// Return number of timeslices
47
48
int
CmxSubBlock::timeslices
()
const
49
{
50
int
slices =
slices1
();
51
if
(slices == 0 &&
format
() ==
NEUTRAL
) {
52
slices =
dataWords
() /
s_glinkBitsPerSlice
;
53
}
54
if
(slices == 0) slices = 1;
55
return
slices;
56
}
57
58
// Static function to determine CMX type
59
60
CmxSubBlock::CmxFirmwareCode
CmxSubBlock::cmxType
(
const
uint32_t word)
61
{
62
CmxFirmwareCode
type
;
63
const
int
module
=
L1CaloSubBlock::module
(word);
64
const
int
code = (
module
>> s_cmxFirmwareBit) & s_cmxFirmwareMask;
65
switch
(code) {
66
case
CMX_CP
:
67
type
=
CMX_CP
;
68
break
;
69
case
CMX_JET
:
70
type
=
CMX_JET
;
71
break
;
72
case
CMX_ENERGY
:
73
type
=
CMX_ENERGY
;
74
break
;
75
default
:
76
type
=
CMX_UNKNOWN
;
77
break
;
78
}
79
return
type
;
80
}
81
82
// Static function to determine if header word corresponds to CMX block
83
84
bool
CmxSubBlock::cmxBlock
(
const
uint32_t word)
85
{
86
return
L1CaloSubBlock::wordId
(word) ==
s_wordIdVal
;
87
}
88
89
}
// end namespace
CmxSubBlock.h
LVL1BS::CmxSubBlock::cmxBlock
static bool cmxBlock(uint32_t word)
Determine if header word corresponds to CMX.
Definition
CmxSubBlock.cxx:84
LVL1BS::CmxSubBlock::s_cmxPositionBit
static const int s_cmxPositionBit
Definition
CmxSubBlock.h:54
LVL1BS::CmxSubBlock::CmxFirmwareCode
CmxFirmwareCode
Definition
CmxSubBlock.h:25
LVL1BS::CmxSubBlock::CMX_UNKNOWN
@ CMX_UNKNOWN
Definition
CmxSubBlock.h:26
LVL1BS::CmxSubBlock::CMX_JET
@ CMX_JET
Definition
CmxSubBlock.h:25
LVL1BS::CmxSubBlock::CMX_ENERGY
@ CMX_ENERGY
Definition
CmxSubBlock.h:25
LVL1BS::CmxSubBlock::CMX_CP
@ CMX_CP
Definition
CmxSubBlock.h:25
LVL1BS::CmxSubBlock::s_cmxPositionMask
static const uint32_t s_cmxPositionMask
Definition
CmxSubBlock.h:57
LVL1BS::CmxSubBlock::s_cmxFirmwareBit
static const int s_cmxFirmwareBit
Definition
CmxSubBlock.h:53
LVL1BS::CmxSubBlock::s_cmxFirmwareMask
static const uint32_t s_cmxFirmwareMask
Definition
CmxSubBlock.h:56
LVL1BS::CmxSubBlock::s_cmxSummingMask
static const uint32_t s_cmxSummingMask
Definition
CmxSubBlock.h:55
LVL1BS::CmxSubBlock::CmxSubBlock
CmxSubBlock()
Definition
CmxSubBlock.cxx:23
LVL1BS::CmxSubBlock::timeslices
int timeslices() const
Definition
CmxSubBlock.cxx:48
LVL1BS::CmxSubBlock::setCmxHeader
void setCmxHeader(int version, int format, int slice, int crate, int summing, int firmware, int position, int timeslices)
Store CMX header.
Definition
CmxSubBlock.cxx:33
LVL1BS::CmxSubBlock::~CmxSubBlock
~CmxSubBlock()
Definition
CmxSubBlock.cxx:27
LVL1BS::CmxSubBlock::cmxType
static CmxFirmwareCode cmxType(uint32_t word)
CMX differentiation (CMX_CP, CMX_JET, or CMX_ENERGY).
Definition
CmxSubBlock.cxx:60
LVL1BS::CmxSubBlock::s_cmxSummingBit
static const int s_cmxSummingBit
Definition
CmxSubBlock.h:52
LVL1BS::CmxSubBlock::s_glinkBitsPerSlice
static const int s_glinkBitsPerSlice
Needed for neutral format.
Definition
CmxSubBlock.h:59
LVL1BS::CmxSubBlock::s_wordIdVal
static const int s_wordIdVal
CMX header word ID.
Definition
CmxSubBlock.h:50
LVL1BS::L1CaloSubBlock::crate
int crate() const
Definition
L1CaloSubBlock.h:263
LVL1BS::L1CaloSubBlock::slices1
int slices1() const
Definition
L1CaloSubBlock.h:278
LVL1BS::L1CaloSubBlock::NEUTRAL
@ NEUTRAL
Definition
L1CaloSubBlock.h:28
LVL1BS::L1CaloSubBlock::slice
int slice() const
Definition
L1CaloSubBlock.h:258
LVL1BS::L1CaloSubBlock::wordId
int wordId() const
Definition
L1CaloSubBlock.h:238
LVL1BS::L1CaloSubBlock::setHeader
void setHeader(int wordId, int version, int format, int seqno, int crate, int module, int slices2, int slices1)
Store header data.
Definition
L1CaloSubBlock.cxx:99
LVL1BS::L1CaloSubBlock::dataWords
int dataWords() const
Return number of data words.
Definition
L1CaloSubBlock.h:233
LVL1BS::L1CaloSubBlock::module
int module() const
Definition
L1CaloSubBlock.h:268
LVL1BS::L1CaloSubBlock::version
int version() const
Definition
L1CaloSubBlock.h:243
LVL1BS::L1CaloSubBlock::format
int format() const
Definition
L1CaloSubBlock.h:248
LVL1BS
Definition
ZdcModifySlices.h:10
xAOD::uint32_t
setEventNumber uint32_t
Definition
EventInfo_v1.cxx:127
type
Generated on
for ATLAS Offline Software by
1.17.0