ATLAS Offline Software
Loading...
Searching...
No Matches
MdtCsmReadOut.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "MdtCsmReadOut.h"
6
7//#include "GaudiKernel/ISvcLocator.h"
8//#include "GaudiKernel/Bootstrap.h"
9//#include "GaudiKernel/MsgStream.h"
10//#include "GaudiKernel/IMessageSvc.h"
11
13 m_dataWord(0),
14 m_wordHeader(0),
15 m_lvl1Id(0),
16 m_clwc(0),
17 m_ftyp(0),
18 m_flags(0),
19 m_ecnt(0),
20 m_ctwc(0),
21 m_mrodId(0),
22 m_csmId(0),
23 m_error(0),
24 m_zeroSupp(0) {}
25
26void MdtCsmReadOut::decodeWord(uint32_t dataWord) {
27 setZero();
28
29 m_dataWord = dataWord;
30 m_word = dataWord;
31 m_wordHeader = (dataWord >> s_headerPos) & s_headerBits;
32
33 if (is_BOB()) {
35 } else if (is_LWC()) {
36 m_ftyp = getBits(getBitsWord(23, 20));
37 m_clwc = getBits(getBitsWord(19, 0));
38 } else if (is_BOL()) {
39 m_error = (bool)getBits(getBitsWord(20, 20));
40 m_zeroSupp = (bool)getBits(getBitsWord(16, 16));
43 } else if (is_TLP()) {
44 m_flags = getBits(getBitsWord(17, 0));
45 } else if (is_TWC()) {
46 m_ecnt = getBits(getBitsWord(23, 12));
47 m_ctwc = getBits(getBitsWord(11, 0));
48 }
49}
50
51uint32_t MdtCsmReadOut::makeBOB(uint32_t lvl1Id) {
52 uint16_t nData = 2;
53 uint32_t inputData[2] = {s_BOBvalue, lvl1Id};
54 uint16_t inputPos[2] = {s_headerPos, 0};
55
56 return setBits(nData, inputData, inputPos);
57}
58
59uint32_t MdtCsmReadOut::makeLWC(uint32_t clwc) {
60 uint16_t nData = 3;
61 uint32_t inputData[3] = {s_LWCvalue, 0, clwc};
62 uint16_t inputPos[3] = {s_headerPos, 20, 0};
63
64 return setBits(nData, inputData, inputPos);
65}
66
67uint32_t MdtCsmReadOut::makeBOL(uint16_t mrodId, uint16_t csmId) {
68 uint16_t nData = 5;
69 // Error and Zero-suppression bits are by now set to 0 (no error)
70 // and 1 (Zero-suppression activated)
71 uint32_t inputData[5] = {s_BOLvalue, 0, 1, mrodId, csmId};
72 uint16_t inputPos[5] = {s_headerPos, 20, 16, 4, 0};
73
74 return setBits(nData, inputData, inputPos);
75}
76
77uint32_t MdtCsmReadOut::makeTLP(uint32_t flags) {
78 uint16_t nData = 4;
79 uint32_t inputData[4] = {s_TLPvalue, 0, 0, flags};
80 uint16_t inputPos[4] = {s_headerPos, 20, 18, 0};
81
82 return setBits(nData, inputData, inputPos);
83}
84
85uint32_t MdtCsmReadOut::makeTWC(uint16_t ecnt, uint16_t ctwc) {
86 uint16_t nData = 3;
87 uint16_t inputData[3] = {s_TWCvalue, ecnt, ctwc};
88 uint16_t inputPos[3] = {s_headerPos, 12, 0};
89
90 return setBits(nData, inputData, inputPos);
91}
92
93uint32_t MdtCsmReadOut::makeEOB(uint32_t wcnt) {
94 uint16_t nData = 2;
95 uint32_t inputData[2] = {s_EOBvalue, wcnt};
96 uint16_t inputPos[2] = {s_headerPos, 0};
97
98 return setBits(nData, inputData, inputPos);
99}
100
102 m_lvl1Id = 0; // Lvl1 Id
103 m_clwc = 0; // Link word count
104 m_ftyp = 0; // flag type
105 m_flags = 0; // flags
106
107 m_ecnt = 0; // Event counter
108 m_ctwc = 0; // Trailer word count
109
110 m_mrodId = 0; // MROD number
111 m_csmId = 0; // CSM Link number
112 m_error = false; // Error flag
113 m_zeroSupp = false; // TDC zero-suppressed flag
114}
uint32_t m_clwc
static constexpr uint16_t s_BOLvalue
uint32_t makeEOB(uint32_t wcnt)
static constexpr uint16_t s_TWCvalue
bool is_TWC() const
static constexpr uint16_t s_EOBvalue
uint16_t m_ftyp
uint16_t ctwc() const
bool is_BOB() const
uint32_t flags() const
static constexpr uint16_t s_TLPvalue
uint32_t makeBOB(uint32_t lvl1Id)
uint32_t makeTLP(uint32_t flags)
uint16_t m_csmId
static constexpr uint16_t s_headerPos
uint16_t csmId() const
uint16_t m_mrodId
static constexpr uint16_t s_LWCvalue
bool is_TLP() const
void decodeWord(uint32_t dataWord)
uint16_t m_ctwc
uint16_t ecnt() const
static constexpr uint16_t s_BOBvalue
bool is_BOL() const
uint32_t m_dataWord
bool is_LWC() const
uint32_t makeLWC(uint32_t clwc)
uint16_t m_wordHeader
uint32_t makeBOL(uint16_t mrodId, uint16_t csmId)
static constexpr uint16_t s_headerBits
uint16_t mrodId() const
uint32_t clwc() const
uint32_t lvl1Id() const
uint32_t makeTWC(uint16_t ecnt, uint16_t ctwc)
uint32_t m_flags
uint16_t m_ecnt
uint32_t m_lvl1Id
uint32_t getBits(std::pair< uint32_t, uint16_t > wordbstop) const
Definition MdtReadOut.h:27
static uint32_t setBits(uint16_t nData, const uint16_t *inputData, const uint16_t *inputPos)
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