14 return StatusCode::SUCCESS;
22 ATH_MSG_DEBUG(
"Retrieved " << rdoContainer->size() <<
" TGC RDOs.");
32 for (; tgcRDO != rdoContainer->end(); ++tgcRDO) {
36 return StatusCode::SUCCESS;
48 std::map<std::vector<uint16_t>,
uint16_t> stripMap;
62 if (rawData->isCoincidence())
continue;
64 if (rawData->sswId() == 7)
continue;
65 if (rawData->bitpos() < 112 || rawData->bitpos() > 199)
continue;
67 std::vector<uint16_t> stripId(5, 0);
68 stripId.at(0) = rawData->subDetectorId();
69 stripId.at(1) = rawData->rodId();
70 stripId.at(2) = rawData->sswId();
71 stripId.at(3) = rawData->bitpos();
72 stripId.at(4) = rawData->bcTag();
73 uint16_t stripSlbBits = 0x1 << (rawData->slbId() - 16);
75 if (itMap == stripMap.end()) {
76 stripMap.insert(std::map<std::vector<uint16_t>,
uint16_t>::
value_type(stripId, stripSlbBits));
78 itMap->second |= stripSlbBits;
82 for (
auto& jtPair : stripMap) {
83 if (jtPair.second <= 31) {
87 static const uint16_t originalHitBits[32] = {
88 0, 1, 0, 3, 0, 0, 4, 7,
90 0, 0, 0, 0, 8, 9, 12, 15,
92 0, 0, 0, 0, 0, 0, 0, 0,
94 16, 17, 0, 19, 24, 25, 28, 31};
95 jtPair.second = originalHitBits[jtPair.second];
104 if (rawData->isCoincidence())
continue;
108 rawData->sswId() != 7 &&
109 rawData->bitpos() >= 112 && rawData->bitpos() <= 199
111 std::vector<uint16_t> stripId(5, 0);
112 stripId.at(0) = rawData->subDetectorId();
113 stripId.at(1) = rawData->rodId();
114 stripId.at(2) = rawData->sswId();
115 stripId.at(3) = rawData->bitpos();
116 stripId.at(4) = rawData->bcTag();
118 if (itMap != stripMap.end()) {
119 uint16_t stripSlbBits = 0x1 << (rawData->slbId() - 16);
120 if (!(itMap->second & stripSlbBits))
continue;
126 for (
int iOr = 0; iOr < 2; ++iOr) {
134 const bool o_found =
m_tgcCabling->isOredChannel(rawData->subDetectorId(), rawData->rodId(), rawData->sswId(),
135 rawData->slbId(), rawData->bitpos());
145 const bool e_found =
m_tgcCabling->getElementIDfromReadoutID(elementId, rawData->subDetectorId(), rawData->rodId(),
146 rawData->sswId(), rawData->slbId(), rawData->bitpos(), orFlag);
149 bool show_warning_level =
true;
155 if (rawData->subDetectorId() == 103 && rawData->rodId() == 9 && rawData->sswId() == 6 && rawData->slbId() == 20 &&
156 rawData->bitpos() == 151) {
162 <<
" sub=" << rawData->subDetectorId() <<
" rod=" << rawData->rodId() <<
" ssw=" << rawData->sswId()
163 <<
" slb=" << rawData->slbId() <<
" bitpos=" << rawData->bitpos() <<
" orFlag=" << orFlag);
172 if (!newDigit)
continue;
176 if (
m_idHelperSvc->tgcIdHelper().get_hash(elementId, coll_hash, &tgcContext)) {
178 <<
"context begin_index = " << tgcContext.
begin_index()
179 <<
" context end_index = " << tgcContext.
end_index() <<
" the identifier is ");
183 if (elementId != oldElementId) {
185 const auto *coll = tgcContainer->
indexFindPtr(coll_hash);
186 if (
nullptr != coll) {
188 collection = aCollection;
191 ATH_MSG_DEBUG(
"Created a new digit collection : " << coll_hash);
196 oldElementId = elementId;
200 ATH_MSG_WARNING(
"TgcRdoToTgcDigit::decodeTgc TgcDigitCollection* collection is null.");
201 return StatusCode::SUCCESS;
205 bool duplicate =
false;
215 collection->push_back(newDigit.release());
219 return StatusCode::SUCCESS;