ATLAS Offline Software
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 
20 
22 
24 {
25 }
26 
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;
43  timeslices);
44 }
45 
46 // Return number of timeslices
47 
49 {
50  int slices = slices1();
51  if (slices == 0 && format() == NEUTRAL) {
53  }
54  if (slices == 0) slices = 1;
55  return slices;
56 }
57 
58 // Static function to determine CMX type
59 
61 {
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 
85 {
86  return L1CaloSubBlock::wordId(word) == s_wordIdVal;
87 }
88 
89 } // end namespace
LVL1BS::CmxSubBlock::CMX_ENERGY
@ CMX_ENERGY
Definition: CmxSubBlock.h:25
LVL1BS::CmxSubBlock::CMX_JET
@ CMX_JET
Definition: CmxSubBlock.h:25
vtune_athena.format
format
Definition: vtune_athena.py:14
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LVL1BS::CmxSubBlock::CmxFirmwareCode
CmxFirmwareCode
Definition: CmxSubBlock.h:25
LVL1BS::CmxSubBlock::s_cmxPositionMask
static const uint32_t s_cmxPositionMask
Definition: CmxSubBlock.h:57
LVL1BS::CmxSubBlock::CMX_UNKNOWN
@ CMX_UNKNOWN
Definition: CmxSubBlock.h:26
LVL1BS::L1CaloSubBlock::NEUTRAL
@ NEUTRAL
Definition: L1CaloSubBlock.h:28
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::wordId
int wordId() const
Definition: L1CaloSubBlock.h:238
LVL1BS::L1CaloSubBlock::slice
int slice() const
Definition: L1CaloSubBlock.h:258
LVL1BS::CmxSubBlock::cmxBlock
static bool cmxBlock(uint32_t word)
Determine if header word corresponds to CMX.
Definition: CmxSubBlock.cxx:84
LVL1BS::L1CaloSubBlock::crate
int crate() const
Definition: L1CaloSubBlock.h:263
LVL1BS::CmxSubBlock::s_glinkBitsPerSlice
static const int s_glinkBitsPerSlice
Needed for neutral format.
Definition: CmxSubBlock.h:59
LVL1BS::CmxSubBlock::s_cmxSummingMask
static const uint32_t s_cmxSummingMask
Definition: CmxSubBlock.h:55
LVL1BS::CmxSubBlock::timeslices
int timeslices() const
Definition: CmxSubBlock.cxx:48
LVL1BS::CmxSubBlock::~CmxSubBlock
~CmxSubBlock()
Definition: CmxSubBlock.cxx:27
LVL1BS::CmxSubBlock::s_wordIdVal
static const int s_wordIdVal
CMX header word ID.
Definition: CmxSubBlock.h:50
perfmonmt-refit.slice
slice
Definition: perfmonmt-refit.py:52
CmxSubBlock.h
LVL1BS::L1CaloSubBlock::format
int format() const
Definition: L1CaloSubBlock.h:248
LVL1BS::CmxSubBlock::s_cmxSummingBit
static const int s_cmxSummingBit
Definition: CmxSubBlock.h:52
LVL1BS::CmxSubBlock::s_cmxPositionBit
static const int s_cmxPositionBit
Definition: CmxSubBlock.h:54
LVL1BS::L1CaloSubBlock::version
int version() const
Definition: L1CaloSubBlock.h:243
pmontree.code
code
Definition: pmontree.py:443
LVL1BS::L1CaloSubBlock::slices1
int slices1() const
Definition: L1CaloSubBlock.h:278
LVL1BS::L1CaloSubBlock::dataWords
int dataWords() const
Return number of data words.
Definition: L1CaloSubBlock.h:233
LVL1BS::CmxSubBlock::s_cmxFirmwareMask
static const uint32_t s_cmxFirmwareMask
Definition: CmxSubBlock.h:56
LVL1BS::CmxSubBlock::CMX_CP
@ CMX_CP
Definition: CmxSubBlock.h:25
LVL1BS::CmxSubBlock::cmxType
static CmxFirmwareCode cmxType(uint32_t word)
CMX differentiation (CMX_CP, CMX_JET, or CMX_ENERGY)
Definition: CmxSubBlock.cxx:60
LVL1BS::L1CaloSubBlock::module
int module() const
Definition: L1CaloSubBlock.h:268
LVL1BS::CmxSubBlock::s_cmxFirmwareBit
static const int s_cmxFirmwareBit
Definition: CmxSubBlock.h:53
get_generator_info.version
version
Definition: get_generator_info.py:33
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
python.CaloScaleNoiseConfig.type
type
Definition: CaloScaleNoiseConfig.py:78
LVL1BS
Definition: ZdcByteStreamReadV1V2Tool.h:47
LVL1BS::CmxSubBlock::CmxSubBlock
CmxSubBlock()
Definition: CmxSubBlock.cxx:23
keylayer_zslicemap.slices
slices
Definition: keylayer_zslicemap.py:112