ATLAS Offline Software
CmmSubBlock.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_CMMSUBBLOCK_H
6 #define TRIGT1CALOBYTESTREAM_CMMSUBBLOCK_H
7 
8 #include <stdint.h>
9 
10 #include "L1CaloSubBlock.h"
11 
12 namespace LVL1BS {
13 
22 class CmmSubBlock : public L1CaloSubBlock {
23 
24  public:
25  enum CmmFirmwareCode { CMM_CP = 0, CMM_JET = 1, CMM_ENERGY = 2,
26  CMM_UNKNOWN = 3 };
27  enum CmmSummingCode { CRATE = 0, SYSTEM = 1 };
28  enum CmmPositions { LEFT = 0, RIGHT = 1 };
29 
30  CmmSubBlock();
31  ~CmmSubBlock();
32 
34  void setCmmHeader(int version, int format, int slice, int crate,
35  int summing, int firmware, int position, int timeslices);
36 
37  // Return CMM specific header data
38  int cmmSumming() const;
39  int cmmFirmware() const;
40  int cmmPosition() const;
41  int timeslices() const;
42 
44  static CmmFirmwareCode cmmType(uint32_t word);
46  static bool cmmBlock(uint32_t word);
47 
48  private:
50  static const int s_wordIdVal = 0xe;
51  // CMM fields packed in module field
52  static const int s_cmmSummingBit = 3;
53  static const int s_cmmFirmwareBit = 1;
54  static const int s_cmmPositionBit = 0;
55  static const uint32_t s_cmmSummingMask = 0x1;
56  static const uint32_t s_cmmFirmwareMask = 0x3;
57  static const uint32_t s_cmmPositionMask = 0x1;
59  static const int s_glinkBitsPerSlice = 35;
60 
61 };
62 
63 inline int CmmSubBlock::cmmSumming() const
64 {
65  return (module() >> s_cmmSummingBit) & s_cmmSummingMask;
66 }
67 
68 inline int CmmSubBlock::cmmFirmware() const
69 {
71 }
72 
73 inline int CmmSubBlock::cmmPosition() const
74 {
76 }
77 
78 } // end namespace
79 
80 #endif
LVL1BS::CmmSubBlock::cmmType
static CmmFirmwareCode cmmType(uint32_t word)
CMM differentiation (CMM_CP, CMM_JET, or CMM_ENERGY)
Definition: CmmSubBlock.cxx:60
LVL1BS::CmmSubBlock::s_cmmSummingBit
static const int s_cmmSummingBit
Definition: CmmSubBlock.h:52
LVL1BS::CmmSubBlock::RIGHT
@ RIGHT
Definition: CmmSubBlock.h:28
LVL1BS::CmmSubBlock::CMM_JET
@ CMM_JET
Definition: CmmSubBlock.h:25
LVL1BS::CmmSubBlock::CRATE
@ CRATE
Definition: CmmSubBlock.h:27
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
LVL1BS::CmmSubBlock::setCmmHeader
void setCmmHeader(int version, int format, int slice, int crate, int summing, int firmware, int position, int timeslices)
Store CMM header.
Definition: CmmSubBlock.cxx:33
LVL1BS::CmmSubBlock::s_cmmPositionBit
static const int s_cmmPositionBit
Definition: CmmSubBlock.h:54
LVL1BS::CmmSubBlock::cmmBlock
static bool cmmBlock(uint32_t word)
Determine if header word corresponds to CMM.
Definition: CmmSubBlock.cxx:84
LVL1BS::CmmSubBlock::timeslices
int timeslices() const
Definition: CmmSubBlock.cxx:48
LVL1BS::CmmSubBlock
Sub-Block class for CMM data.
Definition: CmmSubBlock.h:22
LVL1BS::CmmSubBlock::s_cmmFirmwareMask
static const uint32_t s_cmmFirmwareMask
Definition: CmmSubBlock.h:56
LVL1BS::L1CaloSubBlock::slice
int slice() const
Definition: L1CaloSubBlock.h:258
LVL1BS::CmmSubBlock::s_glinkBitsPerSlice
static const int s_glinkBitsPerSlice
Needed for neutral format.
Definition: CmmSubBlock.h:59
LVL1BS::CmmSubBlock::s_cmmSummingMask
static const uint32_t s_cmmSummingMask
Definition: CmmSubBlock.h:55
LVL1BS::L1CaloSubBlock::crate
int crate() const
Definition: L1CaloSubBlock.h:263
LVL1BS::CmmSubBlock::CmmPositions
CmmPositions
Definition: CmmSubBlock.h:28
L1CaloSubBlock.h
LVL1BS::CmmSubBlock::cmmFirmware
int cmmFirmware() const
Definition: CmmSubBlock.h:68
LVL1BS::L1CaloSubBlock::format
int format() const
Definition: L1CaloSubBlock.h:248
LVL1BS::CmmSubBlock::CMM_UNKNOWN
@ CMM_UNKNOWN
Definition: CmmSubBlock.h:26
LVL1BS::CmmSubBlock::~CmmSubBlock
~CmmSubBlock()
Definition: CmmSubBlock.cxx:27
LVL1BS::L1CaloSubBlock::version
int version() const
Definition: L1CaloSubBlock.h:243
LVL1BS::CmmSubBlock::CmmFirmwareCode
CmmFirmwareCode
Definition: CmmSubBlock.h:25
LVL1BS::CmmSubBlock::CmmSummingCode
CmmSummingCode
Definition: CmmSubBlock.h:27
LVL1BS::CmmSubBlock::CmmSubBlock
CmmSubBlock()
Definition: CmmSubBlock.cxx:23
LVL1BS::CmmSubBlock::s_cmmPositionMask
static const uint32_t s_cmmPositionMask
Definition: CmmSubBlock.h:57
LVL1BS::L1CaloSubBlock::module
int module() const
Definition: L1CaloSubBlock.h:268
LVL1BS::CmmSubBlock::cmmPosition
int cmmPosition() const
Definition: CmmSubBlock.h:73
LVL1BS::CmmSubBlock::SYSTEM
@ SYSTEM
Definition: CmmSubBlock.h:27
LVL1BS::L1CaloSubBlock
L1Calo Sub-Block base class.
Definition: L1CaloSubBlock.h:24
LVL1BS::CmmSubBlock::CMM_ENERGY
@ CMM_ENERGY
Definition: CmmSubBlock.h:25
LVL1BS
Definition: ZdcByteStreamReadV1V2Tool.h:47
LVL1BS::CmmSubBlock::LEFT
@ LEFT
Definition: CmmSubBlock.h:28
LVL1BS::CmmSubBlock::s_wordIdVal
static const int s_wordIdVal
CMM header word ID.
Definition: CmmSubBlock.h:50
LVL1BS::CmmSubBlock::s_cmmFirmwareBit
static const int s_cmmFirmwareBit
Definition: CmmSubBlock.h:53
LVL1BS::CmmSubBlock::cmmSumming
int cmmSumming() const
Definition: CmmSubBlock.h:63
LVL1BS::CmmSubBlock::CMM_CP
@ CMM_CP
Definition: CmmSubBlock.h:25