ATLAS Offline Software
SectorLogicRXReadOutStructure.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2018 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 #include <fstream>
8 #include <iostream>
9 #include <string>
10 
11 //----------------------------------------------------------------------------//
13  //
14  // Constructor used by the simulation program
15  //
16  setInit();
17 }
18 //----------------------------------------------------------------------------//
20  //
21  // Constructor used by the simulation program
22  //
23  decodeFragment(inputData, m_field);
24 }
25 //----------------------------------------------------------------------------//
27 //----------------------------------------------------------------------------//
28 
30  m_word = set16Bits(s_headerNum, s_headerPos.data(), inputData); // theHeader);
31  return m_word;
32 }
33 //----------------------------------------------------------------------------//
35  m_word = set16Bits(s_footerNum, s_footerPos.data(), inputData);
36  return m_word;
37 }
38 //----------------------------------------------------------------------------//
40  // bool last=false;
41  // Remove errorCode because it is not used
42  // ubit16 errorCode=0;
43  setInit();
44  m_word = inputWord;
45  // errorCode=0;
46  if (isHeader()) {
47  m_field = 'H';
48  m_fel1id = get16Bits(inputWord, s_headerPos[2], s_headerLen[2]);
49  m_slid = get16Bits(inputWord, s_headerPos[1], s_headerLen[1]);
50  } else if (isFooter()) {
51  m_field = 'F';
52  m_status = get16Bits(inputWord, s_footerPos[1], s_footerLen[1]);
53  m_crc = get16Bits(inputWord, s_footerPos[2], s_footerLen[2]);
54  } else if (isSubHeader()) {
55  m_field = 'S';
56  m_slbcid = get16Bits(inputWord, s_subHeaderPos[1], s_subHeaderLen[1]);
57  } else if (isInputHeader()) {
58  m_field = 'I';
61  } else if (isInputBody()) {
62  m_field = 'B';
69 
70  } else if (isOutputHeader()) {
71  m_field = 'O';
73  ubit16 outTrigger = get16Bits(inputWord, s_outputHeaderPos[2], s_outputHeaderLen[2]);
74  m_outTriggerWord.clear();
75  m_outTriggerWord.push_back(outTrigger);
76  } else if (isOutputBody()) {
77  m_field = 'M';
78  ubit16 outTrigger = get16Bits(inputWord, s_outputBodyPos[1], s_outputBodyLen[1]);
79  m_outTriggerWord.push_back(outTrigger);
80  if (m_outTriggerWord.size() == 3) {
81  uint32_t muctpiWord =
82  ((m_outTriggerWord[0] & 0x00ff) << 24) | ((m_outTriggerWord[1] & 0x0fff) << 12) | ((m_outTriggerWord[2] & 0x0fff));
83 
84  m_moreThan2TriggerCand = (muctpiWord & 0x1);
85  m_outputTriggerBcid = (muctpiWord >> 27) & 0x7;
86  m_nTriggerCand = 0;
87  int iTriggerCand = 0;
88  if (((muctpiWord >> 19) & 0x7) != 0x7) {
90  iTriggerCand = m_nTriggerCand - 1;
91  m_outputThreshold[iTriggerCand] = (muctpiWord >> 19) & 0x7;
92  m_outputRoi[iTriggerCand] = (muctpiWord >> 1) & 0x1f;
93  m_outputOverlap[iTriggerCand] = (muctpiWord >> 8) & 0x3;
94  }
95  if (((muctpiWord >> 22) & 0x7) != 0x7) {
97  iTriggerCand = m_nTriggerCand - 1;
98  m_outputThreshold[iTriggerCand] = (muctpiWord >> 22) & 0x7;
99  m_outputRoi[iTriggerCand] = (muctpiWord >> 10) & 0x1f;
100  m_outputOverlap[iTriggerCand] = (muctpiWord >> 17) & 0x3;
101  }
102  }
103  }
104 
105  field = m_field;
106  return 0; // temporary: force return to 0
107 }
108 
109 //----------------------------------------------------------------------------//
111  bool status = false;
112  ubit16 theHeader[s_headerNum] = {s_headerVal};
113  if ((m_word & s_last4bitsON) == set16Bits(1, s_headerPos.data(), theHeader)) status = true;
114  return status;
115 }
116 //----------------------------------------------------------------------------//
118  bool status = false;
119  ubit16 theSubHeader[s_subHeaderNum] = {s_subHeaderVal};
120  if ((m_word & s_last4bitsON) == set16Bits(1, s_subHeaderPos.data(), theSubHeader)) status = true;
121  return status;
122 }
123 //----------------------------------------------------------------------------//
125  bool status = false;
126  ubit16 theInputHeader[s_inputHeaderNum] = {s_inputHeaderVal};
127  if ((m_word & s_last4bitsON) == set16Bits(1, s_inputHeaderPos.data(), theInputHeader)) status = true;
128  return status;
129 }
130 //----------------------------------------------------------------------------//
132  bool status = false;
133  ubit16 theOutputHeader[s_outputHeaderNum] = {s_outputHeaderVal};
134  if ((m_word & s_last4bitsON) == set16Bits(1, s_outputHeaderPos.data(), theOutputHeader)) status = true;
135  return status;
136 }
137 //----------------------------------------------------------------------------//
139  bool status = false;
140  ubit16 theInputBody[s_inputBodyNum] = {s_inputBodyVal};
141  if ((m_word & s_last4bitsON) == set16Bits(1, s_inputBodyPos.data(), theInputBody)) status = true;
142  return status;
143 }
144 
145 //----------------------------------------------------------------------------//
147  bool status = false;
148  ubit16 theOutputBody[s_outputBodyNum] = {s_outputBodyVal};
149  if ((m_word & s_last4bitsON) == set16Bits(1, s_outputBodyPos.data(), theOutputBody)) status = true;
150  return status;
151 }
152 
153 //-----------------------------------------------------------------------//
155  bool status = false;
156  ubit16 theFooter[s_footerNum] = {s_footerVal};
157  if ((m_word & s_last4bitsON) == set16Bits(1, s_footerPos.data(), theFooter)) status = true;
158  return status;
159 }
SectorLogicRXReadOutStructure::m_outputOverlap
std::array< ubit16, 2 > m_outputOverlap
Definition: SectorLogicRXReadOutStructure.h:98
SectorLogicRXReadOutStructure::s_headerVal
static constexpr ubit16 s_headerVal
Definition: SectorLogicRXReadOutStructure.h:115
SectorLogicRXReadOutStructure::s_subHeaderNum
static constexpr ubit16 s_subHeaderNum
Definition: SectorLogicRXReadOutStructure.h:117
SectorLogicRXReadOutStructure::isFooter
bool isFooter()
Definition: SectorLogicRXReadOutStructure.cxx:154
SectorLogicRXReadOutStructure::m_inputOuterPlane
ubit16 m_inputOuterPlane
Definition: SectorLogicRXReadOutStructure.h:94
xAOD::uint32_t
setEventNumber uint32_t
Definition: EventInfo_v1.cxx:127
SectorLogicRXReadOutStructure::s_outputBodyNum
static constexpr ubit16 s_outputBodyNum
Definition: SectorLogicRXReadOutStructure.h:137
SectorLogicRXReadOutStructure::s_footerPos
static constexpr std::array< ubit16, s_footerNum > s_footerPos
Definition: SectorLogicRXReadOutStructure.h:143
RPCReadOut::s_last4bitsON
static constexpr ubit16 s_last4bitsON
Definition: RPCReadOut.h:56
SectorLogicRXReadOutStructure::isHeader
bool isHeader()
Definition: SectorLogicRXReadOutStructure.cxx:110
SectorLogicRXReadOutStructure::m_status
ubit16 m_status
Definition: SectorLogicRXReadOutStructure.h:103
SectorLogicRXReadOutStructure::s_outputBodyVal
static constexpr ubit16 s_outputBodyVal
Definition: SectorLogicRXReadOutStructure.h:140
SectorLogicRXReadOutStructure::isSubHeader
bool isSubHeader()
Definition: SectorLogicRXReadOutStructure.cxx:117
SectorLogicRXReadOutStructure::m_outputThreshold
std::array< ubit16, 2 > m_outputThreshold
Definition: SectorLogicRXReadOutStructure.h:97
ReadOfcFromCool.field
field
Definition: ReadOfcFromCool.py:48
SectorLogicRXReadOutStructure::makeHeader
ubit16 makeHeader(ubit16 *inputData)
Definition: SectorLogicRXReadOutStructure.cxx:29
SectorLogicRXReadOutStructure::status
ubit16 status() const
Definition: SectorLogicRXReadOutStructure.h:68
RPCReadOut::get16Bits
ubit16 get16Bits(const ubit16 input, const ubit16 position, const ubit16 length) const
Definition: RPCReadOut.h:47
SectorLogicRXReadOutStructure::s_outputBodyPos
static constexpr std::array< ubit16, s_outputBodyNum > s_outputBodyPos
Definition: SectorLogicRXReadOutStructure.h:138
SectorLogicRXReadOutStructure::s_inputBodyLen
static constexpr std::array< ubit16, s_inputBodyNum > s_inputBodyLen
Definition: SectorLogicRXReadOutStructure.h:134
SectorLogicRXReadOutStructure::m_nTriggerCand
ubit16 m_nTriggerCand
Definition: SectorLogicRXReadOutStructure.h:100
SectorLogicRXReadOutStructure::s_inputBodyVal
static constexpr ubit16 s_inputBodyVal
Definition: SectorLogicRXReadOutStructure.h:135
SectorLogicRXReadOutStructure::isOutputBody
bool isOutputBody()
Definition: SectorLogicRXReadOutStructure.cxx:146
SectorLogicRXReadOutStructure::setInit
void setInit()
Definition: SectorLogicRXReadOutStructure.cxx:26
SectorLogicRXReadOutStructure::isOutputHeader
bool isOutputHeader()
Definition: SectorLogicRXReadOutStructure.cxx:131
SectorLogicRXReadOutStructure::s_headerNum
static constexpr ubit16 s_headerNum
Definition: SectorLogicRXReadOutStructure.h:112
SectorLogicRXReadOutStructure::s_outputHeaderVal
static constexpr ubit16 s_outputHeaderVal
Definition: SectorLogicRXReadOutStructure.h:130
SectorLogicRXReadOutStructure::m_outTriggerWord
std::vector< ubit16 > m_outTriggerWord
Definition: SectorLogicRXReadOutStructure.h:87
SectorLogicRXReadOutStructure::m_crc
ubit16 m_crc
Definition: SectorLogicRXReadOutStructure.h:104
SectorLogicRXReadOutStructure::s_headerLen
static constexpr std::array< ubit16, s_headerNum > s_headerLen
Definition: SectorLogicRXReadOutStructure.h:114
SectorLogicRXReadOutStructure::isInputHeader
bool isInputHeader()
Definition: SectorLogicRXReadOutStructure.cxx:124
SectorLogicRXReadOutStructure::s_inputBodyNum
static constexpr ubit16 s_inputBodyNum
Definition: SectorLogicRXReadOutStructure.h:132
SectorLogicRXReadOutStructure.h
SectorLogicRXReadOutStructure::m_inputOverlapPhi
ubit16 m_inputOverlapPhi
Definition: SectorLogicRXReadOutStructure.h:93
SectorLogicRXReadOutStructure::s_footerVal
static constexpr ubit16 s_footerVal
Definition: SectorLogicRXReadOutStructure.h:145
SectorLogicRXReadOutStructure::m_inputOverlapEta
ubit16 m_inputOverlapEta
Definition: SectorLogicRXReadOutStructure.h:92
SectorLogicRXReadOutStructure::s_inputHeaderPos
static constexpr std::array< ubit16, s_inputHeaderNum > s_inputHeaderPos
Definition: SectorLogicRXReadOutStructure.h:123
SectorLogicRXReadOutStructure::s_inputHeaderVal
static constexpr ubit16 s_inputHeaderVal
Definition: SectorLogicRXReadOutStructure.h:125
SectorLogicRXReadOutStructure::s_footerLen
static constexpr std::array< ubit16, s_footerNum > s_footerLen
Definition: SectorLogicRXReadOutStructure.h:144
SectorLogicRXReadOutStructure::m_inputRoi
ubit16 m_inputRoi
Definition: SectorLogicRXReadOutStructure.h:91
RPCReadOut::m_field
char m_field
Definition: RPCReadOut.h:28
RPCReadOut::field
char field() const
Definition: RPCReadOut.h:19
SectorLogicRXReadOutStructure::m_outputRowinBcid
ubit16 m_outputRowinBcid
Definition: SectorLogicRXReadOutStructure.h:85
SectorLogicRXReadOutStructure::m_inputPadId
ubit16 m_inputPadId
Definition: SectorLogicRXReadOutStructure.h:83
SectorLogicRXReadOutStructure::s_inputHeaderNum
static constexpr ubit16 s_inputHeaderNum
Definition: SectorLogicRXReadOutStructure.h:122
SectorLogicRXReadOutStructure::isInputBody
bool isInputBody()
Definition: SectorLogicRXReadOutStructure.cxx:138
SectorLogicRXReadOutStructure::m_slbcid
ubit16 m_slbcid
Definition: SectorLogicRXReadOutStructure.h:80
SectorLogicRXReadOutStructure::s_subHeaderVal
static constexpr ubit16 s_subHeaderVal
Definition: SectorLogicRXReadOutStructure.h:120
SectorLogicRXReadOutStructure::m_inputThreshold
ubit16 m_inputThreshold
Definition: SectorLogicRXReadOutStructure.h:90
SectorLogicRXReadOutStructure::m_outputTriggerBcid
ubit16 m_outputTriggerBcid
Definition: SectorLogicRXReadOutStructure.h:96
SectorLogicRXReadOutStructure::s_outputBodyLen
static constexpr std::array< ubit16, s_outputBodyNum > s_outputBodyLen
Definition: SectorLogicRXReadOutStructure.h:139
SectorLogicRXReadOutStructure::s_footerNum
static constexpr ubit16 s_footerNum
Definition: SectorLogicRXReadOutStructure.h:142
SectorLogicRXReadOutStructure::s_outputHeaderNum
static constexpr ubit16 s_outputHeaderNum
Definition: SectorLogicRXReadOutStructure.h:127
SectorLogicRXReadOutStructure::makeFooter
ubit16 makeFooter(ubit16 errorCode)
Definition: SectorLogicRXReadOutStructure.h:24
SectorLogicRXReadOutStructure::s_outputHeaderLen
static constexpr std::array< ubit16, s_outputHeaderNum > s_outputHeaderLen
Definition: SectorLogicRXReadOutStructure.h:129
SectorLogicRXReadOutStructure::s_headerPos
static constexpr std::array< ubit16, s_headerNum > s_headerPos
Definition: SectorLogicRXReadOutStructure.h:113
SectorLogicRXReadOutStructure::m_fel1id
ubit16 m_fel1id
Definition: SectorLogicRXReadOutStructure.h:78
SectorLogicRXReadOutStructure::m_slid
ubit16 m_slid
Definition: SectorLogicRXReadOutStructure.h:77
RPCReadOut::set16Bits
ubit16 set16Bits(const ubit16 n, const ubit16 *pos, const ubit16 *val) const
Definition: RPCReadOut.h:30
SectorLogicRXReadOutStructure::SectorLogicRXReadOutStructure
SectorLogicRXReadOutStructure()
Definition: SectorLogicRXReadOutStructure.cxx:12
SectorLogicRXReadOutStructure::s_inputBodyPos
static constexpr std::array< ubit16, s_inputBodyNum > s_inputBodyPos
Definition: SectorLogicRXReadOutStructure.h:133
SectorLogicRXReadOutStructure::m_inputRowinBcid
ubit16 m_inputRowinBcid
Definition: SectorLogicRXReadOutStructure.h:82
SectorLogicRXReadOutStructure::decodeFragment
ubit16 decodeFragment(ubit16 inputWord, char &field)
Definition: SectorLogicRXReadOutStructure.cxx:39
SectorLogicRXReadOutStructure::s_outputHeaderPos
static constexpr std::array< ubit16, s_outputHeaderNum > s_outputHeaderPos
Definition: SectorLogicRXReadOutStructure.h:128
ubit16
unsigned short int ubit16
Definition: RpcByteStreamEncoder.h:20
SectorLogicRXReadOutStructure::m_moreThan2TriggerCand
bool m_moreThan2TriggerCand
Definition: SectorLogicRXReadOutStructure.h:101
SectorLogicRXReadOutStructure::s_subHeaderPos
static constexpr std::array< ubit16, s_subHeaderNum > s_subHeaderPos
Definition: SectorLogicRXReadOutStructure.h:118
SectorLogicRXReadOutStructure::m_outputRoi
std::array< ubit16, 2 > m_outputRoi
Definition: SectorLogicRXReadOutStructure.h:99
SectorLogicRXReadOutStructure::s_inputHeaderLen
static constexpr std::array< ubit16, s_inputHeaderNum > s_inputHeaderLen
Definition: SectorLogicRXReadOutStructure.h:124
SectorLogicRXReadOutStructure::m_inputTriggerBcid
ubit16 m_inputTriggerBcid
Definition: SectorLogicRXReadOutStructure.h:89
RPCReadOut::m_word
ubit16 m_word
Definition: RPCReadOut.h:27
SectorLogicRXReadOutStructure::s_subHeaderLen
static constexpr std::array< ubit16, s_subHeaderNum > s_subHeaderLen
Definition: SectorLogicRXReadOutStructure.h:119