ATLAS Offline Software
MdtCsmReadOut.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 MUONBYTESTREAM_MDTCSMREADOUT_H
6 #define MUONBYTESTREAM_MDTCSMREADOUT_H
7 
8 #include <stdint.h>
9 
10 #include "MdtReadOut.h"
11 
12 // Decoding methods for an MDT Csm block
13 // S. Rosati Feb 2003
14 
15 class MdtCsmReadOut : public MdtReadOut {
16 private:
17  // Raw data word and word header
20 
21  // Decoded data
22  uint32_t m_lvl1Id; // Lvl1 Id
23  uint32_t m_clwc; // Link word count
24  uint16_t m_ftyp; // flag type
25  uint32_t m_flags; // flags
26 
27  uint16_t m_ecnt; // Event counter
28  uint16_t m_ctwc; // Trailer word count
29 
30  uint16_t m_mrodId; // MROD number
31  uint16_t m_csmId; // CSM Link number
32  bool m_error; // Error flag
33  bool m_zeroSupp; // TDC zero-suppressed flag
34 
35  // Word header Position and values
36  // The word header occupies the 8 highest bits of each CSM word
37  static constexpr uint16_t s_headerPos = 24;
38  static constexpr uint16_t s_headerBits = 0xff;
39 
40  // Beginning of buffer
41  static constexpr uint16_t s_BOBvalue = 0x80;
42  // Link Word Count: first word of a CSM link block
43  static constexpr uint16_t s_LWCvalue = 0x81;
44  // Beginning of Link: signals which CSM link is giving its data
45  static constexpr uint16_t s_BOLvalue = 0x18;
46  // TDC Link Present
47  static constexpr uint16_t s_TLPvalue = 0x89;
48  // Trailer Word Count: last word of a CSM link block
49  static constexpr uint16_t s_TWCvalue = 0x8a;
50  // End of Block (end of data from the CSMs)
51  static constexpr uint16_t s_EOBvalue = 0xf0;
52 
53 public:
54  MdtCsmReadOut();
55  ~MdtCsmReadOut() = default;
56 
57  void decodeWord(uint32_t dataWord);
58 
59  bool is_BOB() const { return m_wordHeader == s_BOBvalue; };
60  bool is_LWC() const { return m_wordHeader == s_LWCvalue; };
61  bool is_BOL() const { return m_wordHeader == s_BOLvalue; };
62  bool is_TLP() const { return m_wordHeader == s_TLPvalue; };
63  bool is_TWC() const { return m_wordHeader == s_TWCvalue; };
64  bool is_EOB() const { return m_wordHeader == s_EOBvalue; };
65 
66  // Methods to access the decoded information
67  uint32_t lvl1Id() const { return m_lvl1Id; }
68  uint32_t clwc() const { return m_clwc; }
69  uint16_t ftyp() const { return m_ftyp; }
70  uint32_t flags() const { return m_flags; }
71  uint16_t ecnt() const { return m_ecnt; }
72  uint16_t ctwc() const { return m_ctwc; }
73  uint16_t mrodId() const { return m_mrodId; }
74  uint16_t csmId() const { return m_csmId; }
75 
76  // Word encoders
83 
84 private:
85  // Private methods
86  void setZero();
87 };
88 
89 #endif // MUONBYTESTREAM_MDTCSMREADOUT_H
MdtCsmReadOut::ecnt
uint16_t ecnt() const
Definition: MdtCsmReadOut.h:71
MdtCsmReadOut::is_TWC
bool is_TWC() const
Definition: MdtCsmReadOut.h:63
MdtCsmReadOut::decodeWord
void decodeWord(uint32_t dataWord)
Definition: MdtCsmReadOut.cxx:26
MdtCsmReadOut::s_BOBvalue
static constexpr uint16_t s_BOBvalue
Definition: MdtCsmReadOut.h:41
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
MdtCsmReadOut::makeBOL
uint32_t makeBOL(uint16_t mrodId, uint16_t csmId)
Definition: MdtCsmReadOut.cxx:67
MdtReadOut
Definition: MdtReadOut.h:14
MdtCsmReadOut::setZero
void setZero()
Definition: MdtCsmReadOut.cxx:101
MdtCsmReadOut::m_ctwc
uint16_t m_ctwc
Definition: MdtCsmReadOut.h:28
MdtCsmReadOut::clwc
uint32_t clwc() const
Definition: MdtCsmReadOut.h:68
MdtCsmReadOut::ctwc
uint16_t ctwc() const
Definition: MdtCsmReadOut.h:72
MdtCsmReadOut::is_TLP
bool is_TLP() const
Definition: MdtCsmReadOut.h:62
MdtCsmReadOut::m_csmId
uint16_t m_csmId
Definition: MdtCsmReadOut.h:31
MdtCsmReadOut::is_LWC
bool is_LWC() const
Definition: MdtCsmReadOut.h:60
MdtCsmReadOut::is_BOL
bool is_BOL() const
Definition: MdtCsmReadOut.h:61
MdtCsmReadOut::csmId
uint16_t csmId() const
Definition: MdtCsmReadOut.h:74
MdtCsmReadOut::m_zeroSupp
bool m_zeroSupp
Definition: MdtCsmReadOut.h:33
MdtCsmReadOut
Definition: MdtCsmReadOut.h:15
MdtCsmReadOut::lvl1Id
uint32_t lvl1Id() const
Definition: MdtCsmReadOut.h:67
xAOD::uint16_t
setWord1 uint16_t
Definition: eFexEMRoI_v1.cxx:88
MdtCsmReadOut::s_TLPvalue
static constexpr uint16_t s_TLPvalue
Definition: MdtCsmReadOut.h:47
MdtCsmReadOut::m_ftyp
uint16_t m_ftyp
Definition: MdtCsmReadOut.h:24
MdtCsmReadOut::is_EOB
bool is_EOB() const
Definition: MdtCsmReadOut.h:64
MdtReadOut.h
MdtCsmReadOut::makeLWC
uint32_t makeLWC(uint32_t clwc)
Definition: MdtCsmReadOut.cxx:59
MdtCsmReadOut::MdtCsmReadOut
MdtCsmReadOut()
Definition: MdtCsmReadOut.cxx:12
MdtCsmReadOut::m_lvl1Id
uint32_t m_lvl1Id
Definition: MdtCsmReadOut.h:22
MdtCsmReadOut::m_flags
uint32_t m_flags
Definition: MdtCsmReadOut.h:25
MdtCsmReadOut::is_BOB
bool is_BOB() const
Definition: MdtCsmReadOut.h:59
MdtCsmReadOut::makeBOB
uint32_t makeBOB(uint32_t lvl1Id)
Definition: MdtCsmReadOut.cxx:51
MdtCsmReadOut::makeEOB
uint32_t makeEOB(uint32_t wcnt)
Definition: MdtCsmReadOut.cxx:93
MdtCsmReadOut::makeTLP
uint32_t makeTLP(uint32_t flags)
Definition: MdtCsmReadOut.cxx:77
MdtCsmReadOut::s_LWCvalue
static constexpr uint16_t s_LWCvalue
Definition: MdtCsmReadOut.h:43
MdtCsmReadOut::s_headerPos
static constexpr uint16_t s_headerPos
Definition: MdtCsmReadOut.h:37
MdtCsmReadOut::mrodId
uint16_t mrodId() const
Definition: MdtCsmReadOut.h:73
MdtCsmReadOut::m_clwc
uint32_t m_clwc
Definition: MdtCsmReadOut.h:23
MdtCsmReadOut::ftyp
uint16_t ftyp() const
Definition: MdtCsmReadOut.h:69
MdtCsmReadOut::m_dataWord
uint32_t m_dataWord
Definition: MdtCsmReadOut.h:18
MdtCsmReadOut::m_wordHeader
uint16_t m_wordHeader
Definition: MdtCsmReadOut.h:19
MdtCsmReadOut::s_TWCvalue
static constexpr uint16_t s_TWCvalue
Definition: MdtCsmReadOut.h:49
MdtCsmReadOut::s_BOLvalue
static constexpr uint16_t s_BOLvalue
Definition: MdtCsmReadOut.h:45
MdtCsmReadOut::m_error
bool m_error
Definition: MdtCsmReadOut.h:32
MdtCsmReadOut::flags
uint32_t flags() const
Definition: MdtCsmReadOut.h:70
MdtCsmReadOut::s_EOBvalue
static constexpr uint16_t s_EOBvalue
Definition: MdtCsmReadOut.h:51
MdtCsmReadOut::m_mrodId
uint16_t m_mrodId
Definition: MdtCsmReadOut.h:30
MdtCsmReadOut::makeTWC
uint32_t makeTWC(uint16_t ecnt, uint16_t ctwc)
Definition: MdtCsmReadOut.cxx:85
MdtCsmReadOut::s_headerBits
static constexpr uint16_t s_headerBits
Definition: MdtCsmReadOut.h:38
MdtCsmReadOut::~MdtCsmReadOut
~MdtCsmReadOut()=default
MdtCsmReadOut::m_ecnt
uint16_t m_ecnt
Definition: MdtCsmReadOut.h:27