ATLAS Offline Software
Loading...
Searching...
No Matches
MdtHptdcReadOut Class Reference

#include <MdtHptdcReadOut.h>

Inheritance diagram for MdtHptdcReadOut:
Collaboration diagram for MdtHptdcReadOut:

Public Member Functions

 MdtHptdcReadOut ()
 ~MdtHptdcReadOut ()=default
void decodeWord (uint32_t dataWord)
void encodeWord (uint16_t headerVal)
bool is_BOT () const
bool is_EOT () const
bool is_TSM () const
bool is_TCM () const
bool is_TES () const
uint16_t tdcId () const
uint16_t ecnt () const
uint16_t bcId () const
uint16_t channel () const
uint16_t coarse () const
uint16_t fine () const
uint16_t width () const
bool errflag () const
bool isLeading () const
uint32_t makeBOT (uint16_t tdcId, uint16_t ecnt, uint16_t bcid)
uint32_t makeEOT (uint16_t tdcId, uint16_t ecnt, uint16_t wcnt)
uint32_t makeTSM (uint16_t tdcId, uint16_t channel, bool leading, uint16_t coarse, uint16_t fine)
uint32_t makeTCM (uint16_t tdcId, uint16_t channel, uint16_t width, uint16_t coarse, uint16_t fine)

Protected Member Functions

constexpr std::pair< uint32_t, uint16_t > getBitsWord (const uint16_t bstart, const uint16_t bstop)
uint32_t getBits (std::pair< uint32_t, uint16_t > wordbstop) const

Static Protected Member Functions

static uint32_t setBits (uint16_t nData, const uint16_t *inputData, const uint16_t *inputPos)
static uint32_t setBits (uint16_t nData, const uint32_t *inputData, const uint16_t *inputPos)

Protected Attributes

uint32_t m_word

Private Member Functions

void setZero ()

Private Attributes

uint32_t m_dataWord
uint16_t m_wordHeader
uint16_t m_tdcId
uint16_t m_ecnt
uint16_t m_bcId
uint16_t m_wcnt
uint16_t m_channel
uint16_t m_coarse
uint16_t m_fine
uint16_t m_width
bool m_errflag
bool m_leading

Static Private Attributes

static constexpr uint16_t HEADERPOS = 28
static constexpr uint16_t HEADERBITS = 0xf
static constexpr uint16_t BOTVALUE1 = 0xa
static constexpr uint16_t BOTVALUE2 = 0xb
static constexpr uint16_t EOTVALUE = 0xc
static constexpr uint16_t TSMVALUE_LEAD = 0x4
static constexpr uint16_t TSMVALUE_TAIL = 0x5
static constexpr uint16_t TCMVALUE = 0x9
static constexpr uint16_t TESVALUE = 0x6

Detailed Description

Definition at line 15 of file MdtHptdcReadOut.h.

Constructor & Destructor Documentation

◆ MdtHptdcReadOut()

MdtHptdcReadOut::MdtHptdcReadOut ( )

Definition at line 7 of file MdtHptdcReadOut.cxx.

7 :
8 m_dataWord(0),
10 m_tdcId(0),
11 m_ecnt(0),
12 m_bcId(0),
13 m_wcnt(0),
14 m_channel(0),
15 m_coarse(0),
16 m_fine(0),
17 m_width(0),
18 m_errflag(0),
19 m_leading(false) {}

◆ ~MdtHptdcReadOut()

MdtHptdcReadOut::~MdtHptdcReadOut ( )
default

Member Function Documentation

◆ bcId()

uint16_t MdtHptdcReadOut::bcId ( ) const
inline

Definition at line 88 of file MdtHptdcReadOut.h.

88{ return m_bcId; }

◆ channel()

uint16_t MdtHptdcReadOut::channel ( ) const
inline

Definition at line 90 of file MdtHptdcReadOut.h.

90{ return m_channel; }

◆ coarse()

uint16_t MdtHptdcReadOut::coarse ( ) const
inline

Definition at line 91 of file MdtHptdcReadOut.h.

91{ return m_coarse; }

◆ decodeWord()

void MdtHptdcReadOut::decodeWord ( uint32_t dataWord)

Definition at line 21 of file MdtHptdcReadOut.cxx.

21 {
22 // Zero all the decoded quantities
23 setZero();
24 m_dataWord = dataWord;
25 m_word = dataWord;
26 m_wordHeader = (dataWord >> HEADERPOS) & HEADERBITS;
27
28 if (is_TSM()) // TDC single measurement
29 {
30 m_leading = !((bool)getBits(getBitsWord(28, 28)));
31 m_tdcId = getBits(getBitsWord(27, 24));
32 m_channel = getBits(getBitsWord(23, 19));
34 m_fine = getBits(getBitsWord(4, 0));
35 } else if (is_TCM()) // TDC combined measurement
36 {
37 m_tdcId = getBits(getBitsWord(27, 24));
38 m_channel = getBits(getBitsWord(23, 19));
39 m_width = getBits(getBitsWord(18, 12));
41 m_fine = getBits(getBitsWord(4, 0));
42 } else if (is_BOT()) // Beginning of TDC
43 {
44 // One header bit is used for TDC numbers > 15
45 m_tdcId = getBits(getBitsWord(28, 24));
46 m_ecnt = getBits(getBitsWord(23, 12));
47 m_bcId = getBits(getBitsWord(11, 0));
48 } else if (is_EOT()) // End of TDC
49 {
50 m_tdcId = getBits(getBitsWord(27, 24));
51 m_ecnt = getBits(getBitsWord(23, 12));
52 m_wcnt = getBits(getBitsWord(11, 0));
53 } else if (is_TES()) // TDC error status
54 {
55 m_tdcId = getBits(getBitsWord(27, 24));
57 }
58}
bool is_TCM() const
static constexpr uint16_t HEADERBITS
bool is_TSM() const
bool is_BOT() const
bool is_TES() const
static constexpr uint16_t HEADERPOS
bool is_EOT() const
uint32_t getBits(std::pair< uint32_t, uint16_t > wordbstop) const
Definition MdtReadOut.h:27
uint32_t m_word
Definition MdtReadOut.h:38
constexpr std::pair< uint32_t, uint16_t > getBitsWord(const uint16_t bstart, const uint16_t bstop)
Definition MdtReadOut.h:20
setBGCode setTAP setLVL2ErrorBits bool

◆ ecnt()

uint16_t MdtHptdcReadOut::ecnt ( ) const
inline

Definition at line 87 of file MdtHptdcReadOut.h.

87{ return m_ecnt; }

◆ encodeWord()

void MdtHptdcReadOut::encodeWord ( uint16_t headerVal)

◆ errflag()

bool MdtHptdcReadOut::errflag ( ) const
inline

Definition at line 94 of file MdtHptdcReadOut.h.

94{ return m_errflag; }

◆ fine()

uint16_t MdtHptdcReadOut::fine ( ) const
inline

Definition at line 92 of file MdtHptdcReadOut.h.

92{ return m_fine; }

◆ getBits()

uint32_t MdtReadOut::getBits ( std::pair< uint32_t, uint16_t > wordbstop) const
inlineprotectedinherited

Definition at line 27 of file MdtReadOut.h.

27 {
28 uint32_t result = (m_word >> wordbstop.second) & (wordbstop.first | 1);
29 return result;
30 }
setEventNumber uint32_t

◆ getBitsWord()

std::pair< uint32_t, uint16_t > MdtReadOut::getBitsWord ( const uint16_t bstart,
const uint16_t bstop )
inlineconstexprprotectedinherited

Definition at line 20 of file MdtReadOut.h.

20 {
21 uint32_t word = 0;
22 for (uint16_t i = bstop; i < bstart; i++) word = ((word | 1) << 1);
23 return std::make_pair(word, bstop);
24 }

◆ is_BOT()

bool MdtHptdcReadOut::is_BOT ( ) const
inline

Definition at line 75 of file MdtHptdcReadOut.h.

75{ return ((m_wordHeader == BOTVALUE1) || (m_wordHeader == BOTVALUE2)); };
static constexpr uint16_t BOTVALUE1
static constexpr uint16_t BOTVALUE2

◆ is_EOT()

bool MdtHptdcReadOut::is_EOT ( ) const
inline

Definition at line 77 of file MdtHptdcReadOut.h.

77{ return (m_wordHeader == EOTVALUE); };
static constexpr uint16_t EOTVALUE

◆ is_TCM()

bool MdtHptdcReadOut::is_TCM ( ) const
inline

Definition at line 81 of file MdtHptdcReadOut.h.

81{ return (m_wordHeader == TCMVALUE); };
static constexpr uint16_t TCMVALUE

◆ is_TES()

bool MdtHptdcReadOut::is_TES ( ) const
inline

Definition at line 83 of file MdtHptdcReadOut.h.

83{ return (m_wordHeader == TESVALUE); };
static constexpr uint16_t TESVALUE

◆ is_TSM()

bool MdtHptdcReadOut::is_TSM ( ) const
inline

Definition at line 79 of file MdtHptdcReadOut.h.

79{ return ((m_wordHeader == TSMVALUE_LEAD) || (m_wordHeader == TSMVALUE_TAIL)); };
static constexpr uint16_t TSMVALUE_TAIL
static constexpr uint16_t TSMVALUE_LEAD

◆ isLeading()

bool MdtHptdcReadOut::isLeading ( ) const
inline

Definition at line 95 of file MdtHptdcReadOut.h.

95{ return m_leading; }

◆ makeBOT()

uint32_t MdtHptdcReadOut::makeBOT ( uint16_t tdcId,
uint16_t ecnt,
uint16_t bcid )

Definition at line 75 of file MdtHptdcReadOut.cxx.

75 {
76 uint16_t inputData[4];
77 constexpr uint16_t inputPos[4] = {HEADERPOS, 24, 12, 0};
78 uint16_t nData = 4;
79
80 if (tdcId < 16) {
81 inputData[0] = BOTVALUE1;
82 } else {
83 inputData[0] = BOTVALUE2;
84 tdcId -= 16;
85 }
86
87 inputData[1] = tdcId;
88 inputData[2] = ecnt;
89 inputData[3] = bcid;
90
91 return setBits(nData, inputData, inputPos);
92}
uint16_t tdcId() const
uint16_t ecnt() const
static uint32_t setBits(uint16_t nData, const uint16_t *inputData, const uint16_t *inputPos)
setEventNumber setTimeStamp bcid
setWord1 uint16_t

◆ makeEOT()

uint32_t MdtHptdcReadOut::makeEOT ( uint16_t tdcId,
uint16_t ecnt,
uint16_t wcnt )

Definition at line 95 of file MdtHptdcReadOut.cxx.

95 {
96 uint16_t inputData[4] = {EOTVALUE, tdcId, ecnt, wcnt};
97 constexpr uint16_t inputPos[4] = {HEADERPOS, 24, 12, 0};
98 uint16_t nData = 4;
99
100 return setBits(nData, inputData, inputPos);
101}

◆ makeTCM()

uint32_t MdtHptdcReadOut::makeTCM ( uint16_t tdcId,
uint16_t channel,
uint16_t width,
uint16_t coarse,
uint16_t fine )

Definition at line 116 of file MdtHptdcReadOut.cxx.

116 {
117 uint16_t inputData[5] = {TCMVALUE, static_cast<uint16_t>(tdcId & 0xf), static_cast<uint16_t>(channel & 0x1f),
118 static_cast<uint16_t>(width & 0x7f), static_cast<uint16_t>(coarse & 0xfff)};
119 constexpr uint16_t inputPos[5] = {HEADERPOS, 24, 19, 12, 0};
120 uint16_t nData = 5;
121
122 return setBits(nData, inputData, inputPos);
123}
uint16_t coarse() const
uint16_t width() const
uint16_t channel() const

◆ makeTSM()

uint32_t MdtHptdcReadOut::makeTSM ( uint16_t tdcId,
uint16_t channel,
bool leading,
uint16_t coarse,
uint16_t fine )

Definition at line 104 of file MdtHptdcReadOut.cxx.

104 {
105 uint16_t TSMvalue = leading ? TSMVALUE_LEAD : TSMVALUE_TAIL;
106
107 uint16_t inputData[4] = {TSMvalue, static_cast<uint16_t>(tdcId & 0xf), static_cast<uint16_t>(channel & 0x1f),
108 static_cast<uint16_t>(coarse & 0x7ffff)};
109 constexpr uint16_t inputPos[4] = {HEADERPOS, 24, 19, 0};
110 uint16_t nData = 4;
111
112 return setBits(nData, inputData, inputPos);
113}

◆ setBits() [1/2]

uint32_t MdtReadOut::setBits ( uint16_t nData,
const uint16_t * inputData,
const uint16_t * inputPos )
staticprotectedinherited

Definition at line 14 of file MdtReadOut.cxx.

14 {
15 uint32_t result = 0;
16 uint32_t input = 0;
17 uint16_t pos = 0;
18 for (uint16_t i = 0; i < nData; i++) {
19 input = *(inputData + i);
20 pos = *(inputPos + i);
21 result = result | (input << pos);
22 }
23 return result;
24}

◆ setBits() [2/2]

uint32_t MdtReadOut::setBits ( uint16_t nData,
const uint32_t * inputData,
const uint16_t * inputPos )
staticprotectedinherited

Definition at line 27 of file MdtReadOut.cxx.

27 {
28 uint32_t result = 0;
29 uint32_t input = 0;
30 uint16_t pos = 0;
31 for (uint16_t i = 0; i < nData; i++) {
32 input = *(inputData + i);
33 pos = *(inputPos + i);
34 result = result | (input << pos);
35 }
36 return result;
37}

◆ setZero()

void MdtHptdcReadOut::setZero ( )
private

Definition at line 60 of file MdtHptdcReadOut.cxx.

60 {
61 m_tdcId = 0;
62 m_ecnt = 0;
63 m_bcId = 0;
64 m_wcnt = 0;
65 m_channel = 0;
66 m_coarse = 0;
67 m_fine = 0;
68 m_width = 0;
69 m_errflag = 0;
70 m_leading = false;
71}

◆ tdcId()

uint16_t MdtHptdcReadOut::tdcId ( ) const
inline

Definition at line 86 of file MdtHptdcReadOut.h.

86{ return m_tdcId; }

◆ width()

uint16_t MdtHptdcReadOut::width ( ) const
inline

Definition at line 93 of file MdtHptdcReadOut.h.

93{ return m_width; }

Member Data Documentation

◆ BOTVALUE1

uint16_t MdtHptdcReadOut::BOTVALUE1 = 0xa
staticconstexprprivate

Definition at line 48 of file MdtHptdcReadOut.h.

◆ BOTVALUE2

uint16_t MdtHptdcReadOut::BOTVALUE2 = 0xb
staticconstexprprivate

Definition at line 49 of file MdtHptdcReadOut.h.

◆ EOTVALUE

uint16_t MdtHptdcReadOut::EOTVALUE = 0xc
staticconstexprprivate

Definition at line 52 of file MdtHptdcReadOut.h.

◆ HEADERBITS

uint16_t MdtHptdcReadOut::HEADERBITS = 0xf
staticconstexprprivate

Definition at line 44 of file MdtHptdcReadOut.h.

◆ HEADERPOS

uint16_t MdtHptdcReadOut::HEADERPOS = 28
staticconstexprprivate

Definition at line 43 of file MdtHptdcReadOut.h.

◆ m_bcId

uint16_t MdtHptdcReadOut::m_bcId
private

Definition at line 25 of file MdtHptdcReadOut.h.

◆ m_channel

uint16_t MdtHptdcReadOut::m_channel
private

Definition at line 31 of file MdtHptdcReadOut.h.

◆ m_coarse

uint16_t MdtHptdcReadOut::m_coarse
private

Definition at line 32 of file MdtHptdcReadOut.h.

◆ m_dataWord

uint32_t MdtHptdcReadOut::m_dataWord
private

Definition at line 18 of file MdtHptdcReadOut.h.

◆ m_ecnt

uint16_t MdtHptdcReadOut::m_ecnt
private

Definition at line 24 of file MdtHptdcReadOut.h.

◆ m_errflag

bool MdtHptdcReadOut::m_errflag
private

Definition at line 35 of file MdtHptdcReadOut.h.

◆ m_fine

uint16_t MdtHptdcReadOut::m_fine
private

Definition at line 33 of file MdtHptdcReadOut.h.

◆ m_leading

bool MdtHptdcReadOut::m_leading
private

Definition at line 37 of file MdtHptdcReadOut.h.

◆ m_tdcId

uint16_t MdtHptdcReadOut::m_tdcId
private

Definition at line 23 of file MdtHptdcReadOut.h.

◆ m_wcnt

uint16_t MdtHptdcReadOut::m_wcnt
private

Definition at line 28 of file MdtHptdcReadOut.h.

◆ m_width

uint16_t MdtHptdcReadOut::m_width
private

Definition at line 34 of file MdtHptdcReadOut.h.

◆ m_word

uint32_t MdtReadOut::m_word
protectedinherited

Definition at line 38 of file MdtReadOut.h.

◆ m_wordHeader

uint16_t MdtHptdcReadOut::m_wordHeader
private

Definition at line 20 of file MdtHptdcReadOut.h.

◆ TCMVALUE

uint16_t MdtHptdcReadOut::TCMVALUE = 0x9
staticconstexprprivate

Definition at line 59 of file MdtHptdcReadOut.h.

◆ TESVALUE

uint16_t MdtHptdcReadOut::TESVALUE = 0x6
staticconstexprprivate

Definition at line 62 of file MdtHptdcReadOut.h.

◆ TSMVALUE_LEAD

uint16_t MdtHptdcReadOut::TSMVALUE_LEAD = 0x4
staticconstexprprivate

Definition at line 55 of file MdtHptdcReadOut.h.

◆ TSMVALUE_TAIL

uint16_t MdtHptdcReadOut::TSMVALUE_TAIL = 0x5
staticconstexprprivate

Definition at line 56 of file MdtHptdcReadOut.h.


The documentation for this class was generated from the following files: