58 {
59 hitGroups.clear();
60 statistics = DecodeStatistics{};
61
62
63
64
65 for (
const TgcRdo* rdo : rdos) {
67 ++statistics.nRawData;
69
72 identifier, rawData->subDetectorId(), rawData->rodId(),
73 rawData->sswId(), rawData->slbId(), rawData->channel());
75 ++statistics.nMappingFailures;
76 continue;
77 }
78
79 const Station hitStation = station(identifier, idHelperSvc);
85 const MuonGM::TgcReadoutElement* readoutElement =
87 if (readoutElement != nullptr) {
89 eta =
static_cast<float>(globalPosition.eta());
90 phi =
static_cast<float>(globalPosition.phi());
91 r =
static_cast<float>(globalPosition.perp());
92 z =
static_cast<float>(globalPosition.z());
93 }
94 const std::uint16_t hitTriggerSector = triggerSector(
phi);
95 if (hitTriggerSector == 0U) {
96 ++statistics.nMappingFailures;
97 continue;
98 }
99
101 .subDetectorId = rawData->subDetectorId(),
102 .triggerSector = hitTriggerSector,
103 .detectorSector = rawData->rodId(),
104 .bcTag = rawData->bcTag(),
105 .sswId = rawData->sswId(),
106 .slbId = rawData->slbId(),
107 .readoutChannel = rawData->channel(),
108 .stationEta = static_cast<std::int16_t>(
110 .stationPhi = static_cast<std::uint16_t>(
112 .gasGap = static_cast<std::uint8_t>(
114 .channel = static_cast<std::uint16_t>(
116 .station = hitStation,
117 .isStrip = hitIsStrip,
122 };
123 const HitGroupKey
key{.subDetectorId =
hit.subDetectorId,
124 .triggerSector =
hit.triggerSector,
126 hitGroups[
key].emplace_back(
hit);
127
128 ++statistics.nHits;
129 if (hitIsStrip) ++statistics.nStripHits;
130 else ++statistics.nWireHits;
131 switch (hitStation) {
133 ++statistics.nM1Hits;
134 break;
136 ++statistics.nM2Hits;
137 break;
139 ++statistics.nM3Hits;
140 break;
142 ++statistics.nInnerHits;
143 break;
144 default:
145 ++statistics.nUnknownStation;
146 break;
147 }
148 }
149 }
150 return StatusCode::SUCCESS;
151}
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