75 <<
". In theory this should not be called, but may happen"
76 <<
" if multiple concurrent events are being processed out of order.");
77 return StatusCode::SUCCESS;
81 std::unique_ptr<ITkPixelCablingData> pCabling = std::make_unique<ITkPixelCablingData>();
91 ATH_MSG_DEBUG(
"Using test cabling generated with ITkPixelCablingAlg::generateTestCabling(...)");
95 return StatusCode::FAILURE;
98 return StatusCode::SUCCESS;
102 const int numEntries = pCabling->size();
103 ATH_MSG_DEBUG(numEntries <<
" entries were made to the identifier map.");
106 const EventIDBase start{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, 0, 0, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
107 const EventIDBase stop{EventIDBase::UNDEFNUM, EventIDBase::UNDEFEVT, EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM-1, EventIDBase::UNDEFNUM, EventIDBase::UNDEFNUM};
108 const EventIDRange rangeW{start, stop};
109 if (writeHandle.
record(rangeW, std::move(pCabling)).isFailure()) {
111 <<
" with EventRange " << rangeW
112 <<
" into Conditions Store");
113 return StatusCode::FAILURE;
115 ATH_MSG_VERBOSE(
"recorded new conditions data object " << writeHandle.
key() <<
" with range " << rangeW <<
" into Conditions Store");
116 return (numEntries==0) ? (StatusCode::FAILURE) : (StatusCode::SUCCESS);
126 std::unordered_set<uint32_t> seen;
128 for (
size_t hash = 0; hash <
m_idHelper->wafer_hash_max(); hash++){
130 uint32_t onID = (
id.get_identifier32().get_compact());
138 uint32_t sourceID = std::abs(
m_idHelper->barrel_ec(
id)) << 26 |
m_idHelper->layer_disk(
id) << 20;
139 if (seen.insert(sourceID).second) cabling->addSourceID(sourceID);
175 cabling->addEntryOffOn((onID >> 8) | 0x00000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0x00000000));
176 cabling->addEntryOffOn((onID >> 8) | 0x40000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0x40000000));
177 cabling->addEntryOffOn((onID >> 8) | 0x80000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0x80000000));
178 cabling->addEntryOffOn((onID >> 8) | 0xC0000000,
ITkPixelOnlineId(sourceID, (onID >> 8) | 0xC0000000));
206 return StatusCode::SUCCESS;
213 auto [payload, since, until] = tag->getPayloadAt(
m_crestTime);
214 auto config = payload.toJson();
216 if (config.contains(
"0")) {
217 config[
"sideAC"] = std::move(config[
"0"]);
221 if (config.contains(
"sideAC") && config[
"sideAC"].is_array()) {
222 for (
auto& item : config[
"sideAC"]) {
223 if (item.is_string()) {
224 std::string
str = item.get<std::string>();
226 if (
str.rfind(
"b'", 0) == 0) {
232 item = nlohmann::json::parse(
str);
236 std::unordered_set<uint32_t> seen;
238 for (
const auto& [side, groups] : config.items()) {
240 for (
const auto& group : groups) {
242 for (
const auto& entry : group) {
244 const uint32_t detectorResourceID = std::stoul(entry.at(
"DetectorResourceID").get<std::string>(),
nullptr, 16);
246 const uint32_t trueDetectorResourceID = std::stoul(entry.at(
"TrueDetectorResourceID").get<std::string>(),
nullptr, 16);
248 const uint32_t sourceID = std::stoul(entry.at(
"SourceID").get<std::string>(),
nullptr, 16);
252 if (seen.insert(sourceID).second) cabling->addSourceID(sourceID);
256 Identifier id(
static_cast<Identifier::value_type
>(moduleID));
266 return StatusCode::SUCCESS;
DataModel_detail::iterator< DVL > remove(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end, const T &value)
Specialization of remove for DataVector/List.