63 {
64 hitGroups.clear();
65 statistics = FloatingDecodeStatistics{};
66
67
68
69
70 for (
const TgcRdo* rdo : rdos) {
72 ++statistics.nRawData;
74
77 identifier, rawData->subDetectorId(), rawData->rodId(),
78 rawData->sswId(), rawData->slbId(), rawData->channel());
80 ++statistics.nMappingFailures;
81 continue;
82 }
83
90 const MuonGM::TgcReadoutElement* readoutElement =
92 if (readoutElement != nullptr) {
94 eta =
static_cast<float>(globalPosition.eta());
95 phi =
static_cast<float>(globalPosition.phi());
96 r =
static_cast<float>(globalPosition.perp());
97 z =
static_cast<float>(globalPosition.z());
98 }
99 const std::uint16_t hitTriggerSector = triggerSector(
phi);
100 if (hitTriggerSector == 0U) {
101 ++statistics.nMappingFailures;
102 continue;
103 }
104
105 const FloatingHit
hit{
106 .subDetectorId = rawData->subDetectorId(),
107 .triggerSector = hitTriggerSector,
108 .detectorSector = rawData->rodId(),
109 .bcTag = rawData->bcTag(),
110 .sswId = rawData->sswId(),
111 .slbId = rawData->slbId(),
112 .readoutChannel = rawData->channel(),
113 .stationEta = static_cast<std::int16_t>(
115 .stationPhi = static_cast<std::uint16_t>(
117 .gasGap = static_cast<std::uint8_t>(
119 .channel = static_cast<std::uint16_t>(
121 .station = hitStation,
122 .isStrip = hitIsStrip,
127 };
128 const FloatingHitGroupKey
key{.subDetectorId =
hit.subDetectorId,
129 .triggerSector =
hit.triggerSector,
131 hitGroups[
key].emplace_back(
hit);
132
133 ++statistics.nHits;
134 if (hitIsStrip) ++statistics.nStripHits;
135 else ++statistics.nWireHits;
136 switch (hitStation) {
138 ++statistics.nM1Hits;
139 break;
141 ++statistics.nM2Hits;
142 break;
144 ++statistics.nM3Hits;
145 break;
147 ++statistics.nInnerHits;
148 break;
149 default:
150 ++statistics.nUnknownStation;
151 break;
152 }
153 }
154 }
155 return StatusCode::SUCCESS;
156}
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