56 std::map<std::vector<uint16_t>, uint16_t> stripMap;
70 if (rawData->isCoincidence())
continue;
72 if (rawData->sswId() == 7)
continue;
73 if (rawData->bitpos() < 112 || rawData->bitpos() > 199)
continue;
75 std::vector<uint16_t> stripId(5, 0);
76 stripId.at(0) = rawData->subDetectorId();
77 stripId.at(1) = rawData->rodId();
78 stripId.at(2) = rawData->sswId();
79 stripId.at(3) = rawData->bitpos();
80 stripId.at(4) = rawData->bcTag();
81 uint16_t stripSlbBits = 0x1 << (rawData->slbId() - 16);
82 std::map<std::vector<uint16_t>, uint16_t>
::iterator itMap = stripMap.find(stripId);
83 if (itMap == stripMap.end()) {
84 stripMap.insert(std::map<std::vector<uint16_t>, uint16_t>
::value_type(stripId, stripSlbBits));
86 itMap->second |= stripSlbBits;
90 for (
auto& jtPair : stripMap) {
91 if (jtPair.second <= 31) {
95 static constexpr std::array<uint16_t, 32> originalHitBits{
96 0, 1, 0, 3, 0, 0, 4, 7,
98 0, 0, 0, 0, 8, 9, 12, 15,
100 0, 0, 0, 0, 0, 0, 0, 0,
102 16, 17, 0, 19, 24, 25, 28, 31};
103 jtPair.second = originalHitBits[jtPair.second];
112 if (rawData->isCoincidence())
continue;
116 rawData->sswId() != 7 &&
117 rawData->bitpos() >= 112 && rawData->bitpos() <= 199
119 std::vector<uint16_t> stripId(5, 0);
120 stripId.at(0) = rawData->subDetectorId();
121 stripId.at(1) = rawData->rodId();
122 stripId.at(2) = rawData->sswId();
123 stripId.at(3) = rawData->bitpos();
124 stripId.at(4) = rawData->bcTag();
125 std::map<std::vector<uint16_t>, uint16_t>
::iterator itMap = stripMap.find(stripId);
126 if (itMap != stripMap.end()) {
127 uint16_t stripSlbBits = 0x1 << (rawData->slbId() - 16);
128 if (!(itMap->second & stripSlbBits))
continue;
134 for (
int iOr = 0; iOr < 2; ++iOr) {
142 const bool o_found = cabling->isOredChannel(rawData->subDetectorId(),
156 const bool e_found = cabling->getElementIDfromReadoutID(elementId, rawData->subDetectorId(), rawData->rodId(),
157 rawData->sswId(), rawData->slbId(), rawData->bitpos(),
161 bool show_warning_level =
true;
167 if (rawData->subDetectorId() == 103 && rawData->rodId() == 9 && rawData->sswId() == 6 && rawData->slbId() == 20 &&
168 rawData->bitpos() == 151) {
172 if (show_warning_level ||
msgLvl(MSG::DEBUG)) {
174 <<
" sub=" << rawData->subDetectorId() <<
" rod=" << rawData->rodId() <<
" ssw=" << rawData->sswId()
175 <<
" slb=" << rawData->slbId() <<
" bitpos=" << rawData->bitpos() <<
" orFlag=" << orFlag);
184 if (!newDigit)
continue;
189 if (coll_hash >= outDigitContainer.size()) {
190 outDigitContainer.resize(coll_hash +1u);
192 std::unique_ptr<TgcDigitCollection>& collection = outDigitContainer[coll_hash];
194 collection = std::make_unique<TgcDigitCollection>(
m_idHelperSvc->chamberId(elementId),
199 if (!std::ranges::any_of(*collection, [&newDigit](
const TgcDigit* digit){
200 return newDigit->identify() == digit->identify() && newDigit->bcTag() == digit->bcTag();
202 collection->push_back(std::move(newDigit));
206 return StatusCode::SUCCESS;