ATLAS Offline Software
MdtHistCoder.h
Go to the documentation of this file.
1 #include <stdint.h>
2 
3 #include <array>
4 
5 class MdtHistCoder {
6 public:
7  enum { region = 0, layer = 1, crate_region = 2, crate = 3, phi = 4 }; // bitshifts
8 
9 private:
10  static constexpr std::array<uint16_t, 5> m_bitshift{{0, 2, 4, 6, 8}}; // region, layer, crate_region, crate, phi
11  static constexpr std::array<uint16_t, 5> m_bitmask{{0x3, 0x3, 0x3, 0x3, 0xF}};
12  // region (on two bits)
13  // layer (on two bits)
14  // crate_region (on two bits)
15  // crate (on two bits)
16  // phi (on four bits)
17 
18 public:
19  static uint16_t encode(const uint16_t regionIn, const uint16_t layerIn, const uint16_t phiIn, const uint16_t crate_regionIn,
20  const uint16_t crateIn) {
21  uint16_t result = (regionIn & m_bitmask[region]) << m_bitshift[region] | (layerIn & m_bitmask[layer]) << m_bitshift[layer] |
22  (phiIn & m_bitmask[phi]) << m_bitshift[phi] |
23  (crate_regionIn & m_bitmask[crate_region]) << m_bitshift[crate_region] |
24  (crateIn & m_bitmask[crate]) << m_bitshift[crate];
25 
26  return result;
27  }
28 
29  static uint16_t decode(const uint16_t value, const uint16_t field) { return (value >> m_bitshift[field]) & m_bitmask[field]; }
30 };
get_generator_info.result
result
Definition: get_generator_info.py:21
MdtHistCoder::encode
static uint16_t encode(const uint16_t regionIn, const uint16_t layerIn, const uint16_t phiIn, const uint16_t crate_regionIn, const uint16_t crateIn)
Definition: MdtHistCoder.h:19
athena.value
value
Definition: athena.py:122
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
MdtHistCoder::region
@ region
Definition: MdtHistCoder.h:7
MdtHistCoder::crate
@ crate
Definition: MdtHistCoder.h:7
MdtHistCoder::phi
@ phi
Definition: MdtHistCoder.h:7
MdtHistCoder
Definition: MdtHistCoder.h:5
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
MdtHistCoder::m_bitshift
static constexpr std::array< uint16_t, 5 > m_bitshift
Definition: MdtHistCoder.h:10
MdtHistCoder::crate_region
@ crate_region
Definition: MdtHistCoder.h:7
MdtHistCoder::m_bitmask
static constexpr std::array< uint16_t, 5 > m_bitmask
Definition: MdtHistCoder.h:11
MdtHistCoder::layer
@ layer
Definition: MdtHistCoder.h:7
MdtHistCoder::decode
static uint16_t decode(const uint16_t value, const uint16_t field)
Definition: MdtHistCoder.h:29