64 {
65 hitGroups.clear();
66 statistics = DecodeStatistics{};
67
68
69
70
71 for (
const TgcRdo* rdo : rdos) {
73 ++statistics.nRawData;
75
78 identifier, rawData->subDetectorId(), rawData->rodId(),
79 rawData->sswId(), rawData->slbId(), rawData->channel());
81 ++statistics.nMappingFailures;
82 continue;
83 }
84
85 const Station hitStation = station(identifier, idHelperSvc);
91 const MuonGM::TgcReadoutElement* readoutElement =
93 if (readoutElement != nullptr) {
95 eta =
static_cast<float>(globalPosition.eta());
96 phi =
static_cast<float>(globalPosition.phi());
97 r =
static_cast<float>(globalPosition.perp());
98 z =
static_cast<float>(globalPosition.z());
99 }
100 const std::uint16_t hitTriggerSector = triggerSector(
phi);
101 if (hitTriggerSector == 0U) {
102 ++statistics.nMappingFailures;
103 continue;
104 }
105
107 .subDetectorId = rawData->subDetectorId(),
108 .triggerSector = hitTriggerSector,
109 .detectorSector = rawData->rodId(),
110 .bcTag = rawData->bcTag(),
111 .sswId = rawData->sswId(),
112 .slbId = rawData->slbId(),
113 .readoutChannel = rawData->channel(),
114 .stationEta = static_cast<std::int16_t>(
116 .stationPhi = static_cast<std::uint16_t>(
118 .gasGap = static_cast<std::uint8_t>(
120 .channel = static_cast<std::uint16_t>(
122 .station = hitStation,
123 .isStrip = hitIsStrip,
128 };
129 const HitGroupKey
key{.subDetectorId =
hit.subDetectorId,
130 .triggerSector =
hit.triggerSector,
132 hitGroups[
key].emplace_back(
hit);
133
134 ++statistics.nHits;
135 if (hitIsStrip) ++statistics.nStripHits;
136 else ++statistics.nWireHits;
137 switch (hitStation) {
139 ++statistics.nM1Hits;
140 break;
142 ++statistics.nM2Hits;
143 break;
145 ++statistics.nM3Hits;
146 break;
148 ++statistics.nInnerHits;
149 break;
150 default:
151 ++statistics.nUnknownStation;
152 break;
153 }
154 }
155 }
156 return StatusCode::SUCCESS;
157}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current TgcRawData
Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Current Athena::TPCnvVers::Old Athena::TPCnvVers::Old TgcRdo
const TgcReadoutElement * getTgcReadoutElement(const Identifier &id) const
access via extended identifier (requires unpacking)
Amg::Vector3D channelPos(const Identifier &id) const
Returns the position of the active channel (wireGang or strip).
virtual const TgcIdHelper & tgcIdHelper() const =0
access to TgcIdHelper
int isStrip(const Identifier &id) const
isStrip corresponds to measuresPhi
std::vector< std::string > mapped
Eigen::Matrix< double, 3, 1 > Vector3D
constexpr uint8_t stationPhi
station Phi 1 to 8
constexpr uint8_t stationEta
1 to 3