15 return StatusCode::SUCCESS;
24 return StatusCode::SUCCESS;
37 for (; tgcRDO != rdoContainer->
end(); ++tgcRDO) {
41 return StatusCode::SUCCESS;
53 std::map<std::vector<uint16_t>,
uint16_t> stripMap;
67 if (rawData->isCoincidence())
continue;
69 if (rawData->sswId() == 7)
continue;
70 if (rawData->bitpos() < 112 || rawData->bitpos() > 199)
continue;
72 std::vector<uint16_t> stripId(5, 0);
73 stripId.at(0) = rawData->subDetectorId();
74 stripId.at(1) = rawData->rodId();
75 stripId.at(2) = rawData->sswId();
76 stripId.at(3) = rawData->bitpos();
77 stripId.at(4) = rawData->bcTag();
78 uint16_t stripSlbBits = 0x1 << (rawData->slbId() - 16);
80 if (itMap == stripMap.end()) {
81 stripMap.insert(std::map<std::vector<uint16_t>,
uint16_t>::
value_type(stripId, stripSlbBits));
83 itMap->second |= stripSlbBits;
87 for (
auto& jtPair : stripMap) {
88 if (jtPair.second <= 31) {
92 static const uint16_t originalHitBits[32] = {
93 0, 1, 0, 3, 0, 0, 4, 7,
95 0, 0, 0, 0, 8, 9, 12, 15,
97 0, 0, 0, 0, 0, 0, 0, 0,
99 16, 17, 0, 19, 24, 25, 28, 31};
100 jtPair.second = originalHitBits[jtPair.second];
109 if (rawData->isCoincidence())
continue;
113 rawData->sswId() != 7 &&
114 rawData->bitpos() >= 112 && rawData->bitpos() <= 199
116 std::vector<uint16_t> stripId(5, 0);
117 stripId.at(0) = rawData->subDetectorId();
118 stripId.at(1) = rawData->rodId();
119 stripId.at(2) = rawData->sswId();
120 stripId.at(3) = rawData->bitpos();
121 stripId.at(4) = rawData->bcTag();
123 if (itMap != stripMap.end()) {
124 uint16_t stripSlbBits = 0x1 << (rawData->slbId() - 16);
125 if (!(itMap->second & stripSlbBits))
continue;
131 for (
int iOr = 0; iOr < 2; ++iOr) {
139 const bool o_found =
m_tgcCabling->isOredChannel(rawData->subDetectorId(), rawData->rodId(), rawData->sswId(),
140 rawData->slbId(), rawData->bitpos());
150 const bool e_found =
m_tgcCabling->getElementIDfromReadoutID(elementId, rawData->subDetectorId(), rawData->rodId(),
151 rawData->sswId(), rawData->slbId(), rawData->bitpos(), orFlag);
154 bool show_warning_level =
true;
160 if (rawData->subDetectorId() == 103 && rawData->rodId() == 9 && rawData->sswId() == 6 && rawData->slbId() == 20 &&
161 rawData->bitpos() == 151) {
167 <<
" sub=" << rawData->subDetectorId() <<
" rod=" << rawData->rodId() <<
" ssw=" << rawData->sswId()
168 <<
" slb=" << rawData->slbId() <<
" bitpos=" << rawData->bitpos() <<
" orFlag=" << orFlag);
177 if (!newDigit)
continue;
181 if (
m_idHelperSvc->tgcIdHelper().get_hash(elementId, coll_hash, &tgcContext)) {
183 <<
"context begin_index = " << tgcContext.
begin_index()
184 <<
" context end_index = " << tgcContext.
end_index() <<
" the identifier is ");
188 if (elementId != oldElementId) {
190 const auto *coll = tgcContainer->
indexFindPtr(coll_hash);
191 if (
nullptr != coll) {
193 collection = aCollection;
196 ATH_MSG_DEBUG(
"Created a new digit collection : " << coll_hash);
201 oldElementId = elementId;
205 ATH_MSG_WARNING(
"TgcRdoToTgcDigit::decodeTgc TgcDigitCollection* collection is null.");
206 return StatusCode::SUCCESS;
210 bool duplicate =
false;
220 collection->push_back(newDigit.release());
224 return StatusCode::SUCCESS;