77 <<
". In theory this should not be called, but may happen"
78 <<
" if multiple concurrent events are being processed out of order.");
79 return StatusCode::SUCCESS;
86 return StatusCode::FAILURE;
88 const std::string& pl = (*attr)[
"cabling"].data<std::string>();
91 std::unique_ptr<ITkPixelCablingData> pCabling = std::make_unique<ITkPixelCablingData>();
101 ATH_MSG_DEBUG(
"Using test cabling generated with ITkPixelCablingAlg::generateTestCabling(...)");
105 return StatusCode::FAILURE;
108 return StatusCode::SUCCESS;
112 const int numEntries = pCabling->size();
113 ATH_MSG_DEBUG(numEntries <<
" entries were made to the identifier map.");
116 const EventIDBase start{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, 0, 0, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
117 const EventIDBase stop{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
118 const EventIDRange rangeW{start, stop};
119 if (writeHandle.
record(rangeW, std::move(pCabling)).isFailure()) {
121 <<
" with EventRange " << rangeW
122 <<
" into Conditions Store");
123 return StatusCode::FAILURE;
125 ATH_MSG_VERBOSE(
"recorded new conditions data object " << writeHandle.
key() <<
" with range " << rangeW <<
" into Conditions Store");
126 return (numEntries==0) ? (StatusCode::FAILURE) : (StatusCode::SUCCESS);
136 std::unordered_set<uint32_t> seen;
138 for (
size_t hash = 0; hash <
m_idHelper->wafer_hash_max(); hash++){
140 uint32_t onID = (
id.get_identifier32().get_compact());
148 uint32_t sourceID = std::abs(
m_idHelper->barrel_ec(
id)) << 26 |
m_idHelper->layer_disk(
id) << 20;
149 if (seen.insert(sourceID).second) cabling->addSourceID(sourceID);
185 cabling->addEntryOffOn((onID >> 8) | 0x00000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0x00000000));
186 cabling->addEntryOffOn((onID >> 8) | 0x40000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0x40000000));
187 cabling->addEntryOffOn((onID >> 8) | 0x80000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0x80000000));
188 cabling->addEntryOffOn((onID >> 8) | 0xC0000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0xC0000000));
216 return StatusCode::SUCCESS;
224 c.substr(0, 2) ==
"b'" &&
226 s = c.substr(2, c.size() - 3);
229 nlohmann::json config = nlohmann::json::parse(s);
231 std::unordered_set<uint32_t> seen;
233 for (
const auto& entry : config) {
235 const uint32_t detectorResourceID = std::stoul(entry.at(
"DetectorResourceID").get<std::string>(),
nullptr, 16);
237 const uint32_t trueDetectorResourceID = std::stoul(entry.at(
"TrueDetectorResourceID").get<std::string>(),
nullptr, 16);
239 const uint32_t sourceID = std::stoul(entry.at(
"SourceID").get<std::string>(),
nullptr, 16);
243 if (seen.insert(sourceID).second) cabling->addSourceID(sourceID);
247 Identifier id(
static_cast<Identifier::value_type
>(moduleID));
254 return StatusCode::SUCCESS;