40 }
catch (
const eformat::Issue& ex) {
42 return StatusCode::FAILURE;
48 ATH_MSG_DEBUG(
"NSW sTGC TP Common Decoder found exceptions while reading this STGL1A fragment from " + std::to_string(fragment.rob_source_id()) +
". Skipping. Error id: "+std::to_string(nsw_trigger_decoder.
error_id()));
49 return StatusCode::SUCCESS;
52 if (nsw_trigger_decoder.
get_elinks().size()==1) {
54 ATH_MSG_DEBUG(
"NSW sTGC TP Common Decoder found only one elink in output but inconsistent L1A version: something off with this fragment. Skipping.");
55 return StatusCode::SUCCESS;
57 }
else if (nsw_trigger_decoder.
get_elinks().size()<3 || nsw_trigger_decoder.
get_elinks().size()>5) {
61 ATH_MSG_DEBUG(
"NSW sTGC TP Common Decoder didn't give 3, 4 or 5 elinks in output for: something off with this fragment. Skipping.");
62 return StatusCode::SUCCESS;
65 bool consistent =
true;
67 for(
const auto& baseLink: nsw_trigger_decoder.
get_elinks()) {
69 if (l0->head_sectID() != l->head_sectID()) {consistent =
false;
break;}
70 if (l0->L1ID() != l->L1ID()) {consistent =
false;
break;}
71 if (l0->l1a_versionID() != l->l1a_versionID()) {consistent =
false;
break;}
72 if (l0->l1a_req_BCID() != l->l1a_req_BCID()) {consistent =
false;
break;}
75 ATH_MSG_WARNING(
"NSW sTGC TP Common Decoder found inconsistent header parameters in the elinks: something off with this fragment. Skipping.");
76 return StatusCode::SUCCESS;
82 for(
const auto& baseLink: nsw_trigger_decoder.
get_elinks()){
85 const std::shared_ptr<Muon::nsw::NSWResourceId>& elinkID = link->
elinkId ();
92 rdo->set_moduleID(moduleID);
95 rdo->set_ROD_L1ID(fragment.rod_lvl1_id ());
96 rdo->set_sectID(link->head_sectID());
97 rdo->set_EC(link->head_EC());
98 rdo->set_BCID(link->head_BCID());
99 rdo->set_L1ID(link->L1ID());
100 rdo->set_window_open_bcid(link->l1a_open_BCID());
101 rdo->set_l1a_request_bcid(link->l1a_req_BCID());
102 rdo->set_window_close_bcid(link->l1a_close_BCID());
103 rdo->set_config_window_open_bcid_offset(link->l1a_open_BCID_offset());
104 rdo->set_config_l1a_request_bcid_offset(link->l1a_req_BCID_offset());
105 rdo->set_config_window_close_bcid_offset(link->l1a_close_BCID_offset());
108 const std::vector<STGTPPadPacket>& pad_packets = link->pad_packets();
109 for(
uint i_packetIndex = 0; i_packetIndex<pad_packets.size(); i_packetIndex++){
111 for(
uint i_candidateIndex=0; i_candidateIndex < 4; i_candidateIndex++){
113 uint8_t candidateNumber = (i_packetIndex<<4) | i_candidateIndex;
114 rdo->pad_candidateNumber().push_back(candidateNumber);
115 rdo->pad_phiID().push_back(pad_packet.
PhiID(i_candidateIndex));
116 rdo->pad_bandID().push_back(pad_packet.
BandID(i_candidateIndex));
118 rdo->pad_BCID().push_back(pad_packet.
BCID());
119 rdo->pad_idleFlag().push_back(pad_packet.
PadIdleFlag());
125 const std::vector<STGTPSegmentPacket>& segment_packets = link->segment_packet();
126 for(
uint i_packetIndex = 0; i_packetIndex<segment_packets.size(); i_packetIndex++){
128 uint8_t i_candidateIndex{0};
143 uint8_t candidateNumber = (i_packetIndex<<4) | i_candidateIndex;
146 rdo->merge_segments().push_back(word);
147 rdo->merge_candidateNumber().push_back(candidateNumber);
150 uint16_t merge_BCID_sectorID = (segment_packet.
BCID() << 4) | segment_packet.
SectorID();
151 rdo->merge_BCID_sectorID().push_back(merge_BCID_sectorID);
157 if (link->l1a_versionID() < 3){
158 return StatusCode::SUCCESS;
161 const std::vector<STGTPMMPacket>& mm_packets = link->mm_packet();
162 for(
uint i_packetIndex = 0; i_packetIndex<mm_packets.size(); i_packetIndex++){
163 const STGTPMMPacket& mm_packet = mm_packets.at(i_packetIndex);
164 uint8_t i_candidateIndex{0};
179 uint8_t candidateNumber = (i_packetIndex<<4) | i_candidateIndex;
190 const std::vector<STGTPStripPacket>& strip_packets = link->strip_packet();
191 for(
uint i_packetIndex = 0; i_packetIndex < strip_packets.size(); i_packetIndex++){
195 for(std::size_t i_strip = 0; i_strip <
num_strips; ++i_strip) {
207 for(std::size_t i_offset = 0; i_offset <
num_offsets; ++i_offset) {
221 return StatusCode::SUCCESS;