44 const std::vector<IdentifierHash>& rdoIdhVect,
45 std::vector<std::unique_ptr<STGC_RawDataCollection>>& rdo_map)
const
51 }
catch (
const eformat::Issue &ex) {
53 return StatusCode::SUCCESS;
66 bool seeded_mode(!rdoIdhVect.empty());
70 const std::vector<Muon::nsw::NSWElink *>& elinks = common_decoder.
get_elinks();
73 return StatusCode::SUCCESS;
78 for (
auto* elink : elinks) {
81 if (elink->isNull()) {
86 const char* station_name = elink->elinkId()->is_large_station() ?
"STL" :
"STS";
87 int station_eta = (int)elink->elinkId()->station_eta();
88 unsigned int station_phi = (
unsigned int)elink->elinkId()->station_phi();
89 unsigned int multi_layer = (
unsigned int)elink->elinkId()->multi_layer();
90 unsigned int gas_gap = (
unsigned int)elink->elinkId()->gas_gap();
97 if (seeded_mode && std::ranges::find(rdoIdhVect, module_hashID) == rdoIdhVect.end()) {
100 std::unique_ptr<STGC_RawDataCollection>& rdo = rdo_map[module_hashID];
101 if (!rdo) rdo = std::make_unique<STGC_RawDataCollection>(module_hashID);
104 const std::vector<Muon::nsw::VMMChannel*>& channels = elink->get_channels();
105 for (
auto *channel : channels) {
106 unsigned int channel_number = channel->channel_number();
107 unsigned int channel_type = channel->channel_type();
108 if (channel_number == 0)
continue;
111 if (sTgcCablingMap) {
112 std::optional<Identifier> correctedChannelId = sTgcCablingMap->
correctChannel(channel_ID, msgStream());
113 if (!correctedChannelId) {
114 ATH_MSG_DEBUG(
"Channel was shifted outside its connector and is therefore not decoded into and RDO");
117 channel_ID = (*correctedChannelId);
119 bool isOuterQ1{
false};
120 if(std::abs(station_eta)==1 && dcsData){
122 if (!roElement->
stripPosition(channel_ID, localPos))
continue;
123 isOuterQ1 = !(roElement->
isEtaZero(channel_ID, localPos));
126 if (dcsData && !dcsData->
isGood(ctx, channel_ID, isOuterQ1))
continue;
127 bool timeAndChargeInCounts =
true;
128 rdo->push_back(std::make_unique<STGC_RawData>(channel_ID, channel->rel_bcid(), channel->tdo(), channel->pdo(),
false,timeAndChargeInCounts));
132 return StatusCode::SUCCESS;
virtual StatusCode fillCollection(const EventContext &ctx, const OFFLINE_FRAGMENTS_NAMESPACE::ROBFragment &fragment, const std::vector< IdentifierHash > &chamberToDecode, std::vector< std::unique_ptr< STGC_RawDataCollection > > &rdo_map) const override
bool isGood(const EventContext &ctx, const Identifier &channelId, bool issTgcQ1OuterHv=false) const
Returns whether the channel is alive, i.e. DCS state on, etc...