78 const nlohmann::json& payload)
const {
84 std::map<unsigned, FlatCablePtr> readoutCards{};
85 for (
const auto& flatCable : payload[
"readoutCards"].items()) {
86 nlohmann::json cabl_payload = flatCable.value();
87 const unsigned id = cabl_payload[
"flatCableId"];
88 FlatCablePtr& newCard = readoutCards[id];
89 newCard = std::make_unique<RpcFlatCableTranslator>(
id);
90 for (
const auto& pinAssign : cabl_payload[
"pinAssignment"]) {
91 const std::array<unsigned, 2> pin = pinAssign;
92 if (!newCard->mapChannels(pin[0], pin[1], msgStream())){
93 return StatusCode::FAILURE;
98 constexpr int8_t phiBit = CablingData::measPhiBit;
99 constexpr int8_t sideBit = CablingData::stripSideBit;
100 for (
const auto& cabl_chan : payload[
"chamberMap"].items()) {
101 nlohmann::json cabl_payload = cabl_chan.value();
102 CablingData cabl_data{};
103 const std::string
stName{cabl_payload[
"station"]};
105 cabl_data.eta = cabl_payload[
"eta"];
106 cabl_data.phi = cabl_payload[
"phi"];
107 cabl_data.doubletR = cabl_payload[
"doubletR"];
108 cabl_data.doubletPhi = cabl_payload[
"doubletPhi"];
109 cabl_data.doubletZ = cabl_payload[
"doubletZ"];
110 const int8_t phiAndStrip = cabl_payload[
"measPhi"];
111 cabl_data.setMeasPhiAndSide(phiAndStrip & phiBit, phiAndStrip & sideBit);
112 cabl_data.gasGap = cabl_payload[
"gasGap"];
114 cabl_data.subDetector = cabl_payload[
"subDetector"];
115 cabl_data.boardSector = cabl_payload[
"boardSector"];
116 cabl_data.board = cabl_payload[
"board"];
117 cabl_data.firstStrip = cabl_payload[
"firstStrip"];
118 unsigned int flatCable = cabl_payload[
"flatCableId"];
119 if (!readoutCards[flatCable]) {
121 return StatusCode::FAILURE;
123 cabl_data.flatCable = readoutCards[flatCable];
124 if (!cabling_map.
insertChannels(std::move(cabl_data), msgStream())) {
125 return StatusCode::FAILURE;
128 return StatusCode::SUCCESS;
Helper struct to ship all information from the Database.