ATLAS Offline Software
CmxSubBlock.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef TRIGT1CALOBYTESTREAM_CMXSUBBLOCK_H
6 #define TRIGT1CALOBYTESTREAM_CMXSUBBLOCK_H
7 
8 #include <stdint.h>
9 
10 #include "L1CaloSubBlock.h"
11 
12 namespace LVL1BS {
13 
22 class CmxSubBlock : public L1CaloSubBlock {
23 
24  public:
25  enum CmxFirmwareCode { CMX_CP = 0, CMX_JET = 1, CMX_ENERGY = 2, // <<== CHECK
26  CMX_UNKNOWN = 3 };
27  enum CmxSummingCode { CRATE = 0, SYSTEM = 1 };
28  enum CmxPositions { LEFT = 0, RIGHT = 1 };
29 
30  CmxSubBlock();
31  ~CmxSubBlock();
32 
34  void setCmxHeader(int version, int format, int slice, int crate,
35  int summing, int firmware, int position, int timeslices);
36 
37  // Return CMX specific header data
38  int cmxSumming() const;
39  int cmxFirmware() const;
40  int cmxPosition() const;
41  int timeslices() const;
42 
44  static CmxFirmwareCode cmxType(uint32_t word);
46  static bool cmxBlock(uint32_t word);
47 
48  private:
50  static const int s_wordIdVal = 0xe;
51  // CMX fields packed in module field
52  static const int s_cmxSummingBit = 3;
53  static const int s_cmxFirmwareBit = 1;
54  static const int s_cmxPositionBit = 0;
55  static const uint32_t s_cmxSummingMask = 0x1;
56  static const uint32_t s_cmxFirmwareMask = 0x3;
57  static const uint32_t s_cmxPositionMask = 0x1;
59  static const int s_glinkBitsPerSlice = 97;
60 
61 };
62 
63 inline int CmxSubBlock::cmxSumming() const
64 {
65  return (module() >> s_cmxSummingBit) & s_cmxSummingMask;
66 }
67 
68 inline int CmxSubBlock::cmxFirmware() const
69 {
71 }
72 
73 inline int CmxSubBlock::cmxPosition() const
74 {
76 }
77 
78 } // end namespace
79 
80 #endif
LVL1BS::CmxSubBlock::CMX_ENERGY
@ CMX_ENERGY
Definition: CmxSubBlock.h:25
LVL1BS::CmxSubBlock::CMX_JET
@ CMX_JET
Definition: CmxSubBlock.h:25
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LVL1BS::CmxSubBlock::CmxPositions
CmxPositions
Definition: CmxSubBlock.h:28
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::CmxSubBlock
Sub-Block class for CMX data post LS1.
Definition: CmxSubBlock.h:22
LVL1BS::L1CaloSubBlock::slice
int slice() const
Definition: L1CaloSubBlock.h:258
LVL1BS::CmxSubBlock::LEFT
@ LEFT
Definition: CmxSubBlock.h:28
LVL1BS::CmxSubBlock::cmxBlock
static bool cmxBlock(uint32_t word)
Determine if header word corresponds to CMX.
Definition: CmxSubBlock.cxx:84
LVL1BS::CmxSubBlock::cmxFirmware
int cmxFirmware() const
Definition: CmxSubBlock.h:68
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::RIGHT
@ RIGHT
Definition: CmxSubBlock.h:28
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
L1CaloSubBlock.h
LVL1BS::L1CaloSubBlock::format
int format() const
Definition: L1CaloSubBlock.h:248
LVL1BS::CmxSubBlock::SYSTEM
@ SYSTEM
Definition: CmxSubBlock.h:27
LVL1BS::CmxSubBlock::CmxSummingCode
CmxSummingCode
Definition: CmxSubBlock.h:27
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
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
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::L1CaloSubBlock
L1Calo Sub-Block base class.
Definition: L1CaloSubBlock.h:24
LVL1BS
Definition: ZdcByteStreamReadV1V2Tool.h:47
LVL1BS::CmxSubBlock::cmxSumming
int cmxSumming() const
Definition: CmxSubBlock.h:63
LVL1BS::CmxSubBlock::cmxPosition
int cmxPosition() const
Definition: CmxSubBlock.h:73
LVL1BS::CmxSubBlock::CmxSubBlock
CmxSubBlock()
Definition: CmxSubBlock.cxx:23
LVL1BS::CmxSubBlock::CRATE
@ CRATE
Definition: CmxSubBlock.h:27