ATLAS Offline Software
Loading...
Searching...
No Matches
MuonDressingTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "MuonDressingTool.h"
6
7#include "TrkTrack/Track.h"
10
11using namespace Muon::MuonStationIndex;
12
13namespace MuonCombined {
15 ATH_CHECK(m_hitSummaryTool.retrieve());
16 ATH_CHECK(m_idHelperSvc.retrieve());
17 return StatusCode::SUCCESS;
18 }
19
20 void MuonDressingTool::addMuonHitSummary(xAOD::Muon& muon, const Trk::TrackSummary* trackSummary) const {
21
22
23 if (!trackSummary && (muon.muonType() != xAOD::Muon::SegmentTagged && muon.muonType() != xAOD::Muon::CaloTagged ) ) {
24 // get link to track particle
25 const xAOD::TrackParticle* primTrk = muon.primaryTrackParticle();
26 if (primTrk->track()) {
27 trackSummary = primTrk->track()->trackSummary();
28 }
29 }
30
31 uint8_t innerSmallHits{0}, innerLargeHits{0}, middleSmallHits{0}, middleLargeHits{0},
32 outerSmallHits{0}, outerLargeHits{0}, extendedSmallHits{0}, extendedLargeHits{0};
33
34 uint8_t innerSmallHoles{0}, innerLargeHoles{0}, middleSmallHoles{0}, middleLargeHoles{0},
35 outerSmallHoles{0}, outerLargeHoles{0}, extendedSmallHoles{0}, extendedLargeHoles{0};
36
37 auto incrementPrecSummary = [&](const Identifier chId, const uint8_t hits, const uint8_t holes) {
38 const ChIndex chIdx = m_idHelperSvc->chamberIndex(chId);
39 switch (toLayerIndex(chIdx)) {
41 (isSmall(chIdx) ? innerSmallHits : innerLargeHits) += hits;
42 (isSmall(chIdx) ? innerSmallHoles : innerLargeHoles) += holes;
43 break;
45 (isSmall(chIdx) ? middleSmallHits : middleLargeHits) += hits;
46 (isSmall(chIdx) ? middleSmallHoles : middleLargeHoles) += holes;
47 break;
49 (isSmall(chIdx) ? outerSmallHits : outerLargeHits) += hits;
50 (isSmall(chIdx) ? outerSmallHoles : outerLargeHoles) += holes;
51 break;
53 (isSmall(chIdx) ? extendedSmallHits : extendedLargeHits) += hits;
54 (isSmall(chIdx) ? extendedSmallHoles : extendedLargeHoles) += holes;
55 break;
57 extendedSmallHits += hits;
58 extendedSmallHoles += holes;
59 break;
62 ATH_MSG_WARNING("Unknown ChamberIndex " << chName(chIdx));
63 break;
64 }
65 };
66
67
68
69 uint8_t phiLayer1Hits{0}, phiLayer2Hits{0}, phiLayer3Hits{0}, phiLayer4Hits{0};
70 uint8_t etaLayer1Hits{0}, etaLayer2Hits{0}, etaLayer3Hits{0}, etaLayer4Hits{0};
71
72 uint8_t phiLayer1Holes{0}, phiLayer2Holes{0}, phiLayer3Holes{0}, phiLayer4Holes{0};
73 uint8_t etaLayer1Holes{0}, etaLayer2Holes{0}, etaLayer3Holes{0}, etaLayer4Holes{0};
74
75 uint8_t phiLayer1RPCHits{0}, phiLayer2RPCHits{0}, phiLayer3RPCHits{0}, phiLayer4RPCHits{0};
76 uint8_t etaLayer1RPCHits{0}, etaLayer2RPCHits{0}, etaLayer3RPCHits{0}, etaLayer4RPCHits{0};
77
78 uint8_t phiLayer1RPCHoles{0}, phiLayer2RPCHoles{0}, phiLayer3RPCHoles{0}, phiLayer4RPCHoles{0};
79 uint8_t etaLayer1RPCHoles{0}, etaLayer2RPCHoles{0}, etaLayer3RPCHoles{0}, etaLayer4RPCHoles{0};
80
81 uint8_t phiLayer1TGCHits{0}, phiLayer2TGCHits{0}, phiLayer3TGCHits{0}, phiLayer4TGCHits{0};
82 uint8_t etaLayer1TGCHits{0}, etaLayer2TGCHits{0}, etaLayer3TGCHits{0}, etaLayer4TGCHits{0};
83
84 uint8_t phiLayer1TGCHoles{0}, phiLayer2TGCHoles{0}, phiLayer3TGCHoles{0}, phiLayer4TGCHoles{0};
85 uint8_t etaLayer1TGCHoles{0}, etaLayer2TGCHoles{0}, etaLayer3TGCHoles{0}, etaLayer4TGCHoles{0};
86
87 uint8_t phiLayer1STGCHits{0}, phiLayer2STGCHits{0};
88 uint8_t etaLayer1STGCHits{0}, etaLayer2STGCHits{0};
89
90 uint8_t phiLayer1STGCHoles{0}, phiLayer2STGCHoles{0};
91 uint8_t etaLayer1STGCHoles{0}, etaLayer2STGCHoles{0};
92
93 auto incrementTrigSummary = [&](const Identifier& chId,
94 const uint8_t etaHits, const uint8_t etaHoles,
95 const uint8_t phiHits, const uint8_t phiHoles) {
96 const PhiIndex phiIndex = m_idHelperSvc->phiIndex(chId);
97 switch (phiIndex) {
98 case PhiIndex::BI1:
99 case PhiIndex::BM1:
100 case PhiIndex::T4:
101 case PhiIndex::CSC:
102 case PhiIndex::STGC1:
103 phiLayer1Hits += phiHits; phiLayer1Holes += phiHoles;
104 etaLayer1Hits += etaHits; etaLayer1Holes += etaHoles;
105 break;
106 case PhiIndex::BI2:
107 case PhiIndex::BM2:
108 case PhiIndex::T1:
109 case PhiIndex::STGC2:
110 phiLayer2Hits += phiHits; phiLayer2Holes += phiHoles;
111 etaLayer2Hits += etaHits; etaLayer2Holes += etaHoles;
112 break;
113 case PhiIndex::BO1:
114 case PhiIndex::T2:
115 phiLayer3Hits += phiHits; phiLayer3Holes += phiHoles;
116 etaLayer3Hits += etaHits; etaLayer3Holes += etaHoles;
117 break;
118 case PhiIndex::BO2:
119 case PhiIndex::T3:
120 phiLayer4Hits += phiHits; phiLayer4Holes += phiHoles;
121 etaLayer4Hits += etaHits; etaLayer4Holes += etaHoles;
122 break;
123
126 ATH_MSG_WARNING("Unknown ChamberIndex" << Muon::MuonStationIndex::phiName(phiIndex));
127 break;
128 }
130 switch (phiIndex) {
133 case PhiIndex::CSC:
134 ATH_MSG_WARNING("Unknown ChamberIndex" << Muon::MuonStationIndex::phiName(phiIndex));
135 break;
136 case PhiIndex::BI1:
137 case PhiIndex::BI2:
138 ATH_MSG_VERBOSE("BI chambers "<<m_idHelperSvc->toString(chId)<<" are not part of the summary");
139 break;
140 case PhiIndex::BM1:
141 phiLayer1RPCHits += phiHits; etaLayer1RPCHits += etaHits;
142 phiLayer1RPCHoles += phiHoles; etaLayer1RPCHoles += etaHoles;
143 break;
144 case PhiIndex::BM2:
145 phiLayer2RPCHits += phiHits; etaLayer2RPCHits += etaHits;
146 phiLayer2RPCHoles += phiHoles; etaLayer2RPCHoles += etaHoles;
147 break;
148 case PhiIndex::BO1:
149 phiLayer3RPCHits += phiHits; etaLayer3RPCHits += etaHits;
150 phiLayer3RPCHoles += phiHoles; etaLayer3RPCHoles += etaHoles;
151 break;
152 case PhiIndex::BO2:
153 phiLayer4RPCHits += phiHits; etaLayer4RPCHits += etaHits;
154 phiLayer4RPCHoles += phiHoles; etaLayer4RPCHoles += etaHoles;
155 break;
156 case PhiIndex::T4:
157 phiLayer1TGCHits += phiHits; etaLayer1TGCHits += etaHits;
158 phiLayer1TGCHoles += phiHoles; etaLayer1TGCHoles += etaHoles;
159 break;
160 case PhiIndex::T1:
161 phiLayer2TGCHits += phiHits; etaLayer2TGCHits += etaHits;
162 phiLayer2TGCHoles += phiHoles; etaLayer2TGCHoles += etaHoles;
163 break;
164 case PhiIndex::T2:
165 phiLayer3TGCHits += phiHits; etaLayer3TGCHits += etaHits;
166 phiLayer3TGCHoles += phiHoles; etaLayer3TGCHoles += etaHoles;
167 break;
168 case PhiIndex::T3:
169 phiLayer4TGCHits += phiHits; etaLayer4TGCHits += etaHits;
170 phiLayer4TGCHoles += phiHoles; etaLayer4TGCHoles += etaHoles;
171 break;
172 case PhiIndex::STGC1:
173 phiLayer1STGCHits += phiHits; etaLayer1STGCHits += etaHits;
174 phiLayer1STGCHoles += phiHoles; etaLayer1STGCHoles += etaHoles;
175 break;
176 case PhiIndex::STGC2:
177 phiLayer2STGCHits += phiHits; etaLayer2STGCHits += etaHits;
178 phiLayer2STGCHoles += phiHoles; etaLayer2STGCHoles += etaHoles;
179 break;
180 }
181 };
182
183 uint8_t innerCloseHits{0}, middleCloseHits{0}, outerCloseHits{0}, extendedCloseHits{0};
184 uint8_t innerOutBoundsHits{0}, middleOutBoundsHits{0}, outerOutBoundsHits{0}, extendedOutBoundsHits{0};
185
186 uint8_t combinedTrackOutBoundsHits{0};
187
188 uint8_t numberOfPrecisionLayers{0}, numberOfPrecisionHoleLayers{0}, numberOfGoodPrecisionLayers{0};
189 uint8_t numberOfPhiLayers{0}, numberOfPhiHoleLayers{0};
190
191 uint8_t numberOfTriggerEtaLayers{0}, numberOfTriggerEtaHoleLayers{0};
192
193
194 uint8_t mainSector{0}, secondSector{0}, isEndcap{0}, isSmall{0};
195
196 uint8_t cscEtaHits{0}, cscUnspoiledEtaHits{0}, MMHits{0}, MMHoles{0};
197
198
199
200 if (trackSummary) {
201 Muon::IMuonHitSummaryTool::CompactSummary summary = m_hitSummaryTool->summary(*trackSummary);
202 mainSector = secondSector = summary.mainSector;
203
204 for (auto sec : summary.sectors) {
205 if (sec != summary.mainSector) {
206 secondSector = sec;
207 }
208 }
209
210 numberOfPrecisionLayers = summary.nprecisionLayers;
211 numberOfPrecisionHoleLayers = summary.nprecisionHoleLayers;
212 numberOfPhiLayers = summary.nphiLayers;
213 numberOfPhiHoleLayers = summary.nphiHoleLayers;
214 numberOfTriggerEtaLayers = summary.ntrigEtaLayers;
215 numberOfTriggerEtaHoleLayers = summary.ntrigEtaHoleLayers;
216 numberOfGoodPrecisionLayers = summary.nprecisionGoodLayers;
217
218 isEndcap = (summary.isEndcap);
219 isSmall = (summary.isSmall);
220
221 for (auto layer : summary.stationLayers) {
222 combinedTrackOutBoundsHits += layer.second.noutBoundsHits;
223 switch (layer.first) {
224 case StIndex::BI:
225 case StIndex::EI:
226 innerCloseHits += layer.second.nprecisionCloseHits;
227 break;
228 case StIndex::BM:
229 case StIndex::EM:
230 middleCloseHits += layer.second.nprecisionCloseHits;
231 break;
232 case StIndex::BO:
233 case StIndex::EO:
234 outerCloseHits += layer.second.nprecisionCloseHits;
235 break;
236 case StIndex::BE:
237 case StIndex::EE:
238 extendedCloseHits += layer.second.nprecisionCloseHits;
239 break;
240 case StIndex::StUnknown:
241 case StIndex::StIndexMax:
242 ATH_MSG_WARNING(__FILE__<<":"<<__LINE__<<" Unexpected st index");
243 break;
244 }
245 }
246
247 // get out-of-bounds from ME track, shouldn't be any on combined track anyway
248 const xAOD::TrackParticle* MStrk = muon.trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle);
249 if (MStrk && MStrk->track() && MStrk->track()->trackSummary()) {
250 for (const auto& layer : m_hitSummaryTool->summary(*MStrk->track()->trackSummary()).stationLayers) {
251 switch (layer.first) {
252 case StIndex::BI:
253 case StIndex::EI:
254 innerOutBoundsHits += layer.second.noutBoundsHits;
255 break;
256 case StIndex::EM:
257 case StIndex::BM:
258 middleOutBoundsHits += layer.second.noutBoundsHits;
259 break;
260 case StIndex::EO:
261 case StIndex::BO:
262 outerOutBoundsHits += layer.second.noutBoundsHits;
263 break;
264 case StIndex::BE:
265 case StIndex::EE:
266 extendedOutBoundsHits += layer.second.noutBoundsHits;
267 break;
268 case StIndex::StUnknown:
269 case StIndex::StIndexMax:
270 ATH_MSG_WARNING("Station index should not be unknown or max");
271 break;
272 }
273 }
274 }
275
276 if (trackSummary->muonTrackSummary()) {
277 const Trk::MuonTrackSummary& mts = *trackSummary->muonTrackSummary();
278 // loop over chambers
280 switch (m_idHelperSvc->technologyIndex(summary.chamberId())) {
283 ATH_MSG_WARNING("Unkown technology");
284 break;
286 incrementPrecSummary(summary.chamberId(), summary.nhits(), summary.nholes());
287 break;
288 } case TechnologyIndex::CSC:{
289 incrementPrecSummary(summary.chamberId(), summary.netaHits(), summary.etaProjection().nholes);
290 cscEtaHits += summary.etaProjection().nhits;
291 cscUnspoiledEtaHits += summary.etaProjection().ngoodHits;
292 break;
293 } case TechnologyIndex::MM:{
294 incrementPrecSummary(summary.chamberId(), summary.nhits(), summary.nholes());
295 MMHits += summary.nhits();
296 MMHoles += summary.nholes();
297 break;
298 } case TechnologyIndex::STGC:{
299 incrementPrecSummary(summary.chamberId(), summary.netaHits(), summary.etaProjection().nholes);
300 incrementTrigSummary(summary.chamberId(),
301 summary.netaHits(), summary.etaProjection().nholes,
302 summary.nphiHits(), summary.phiProjection().nholes);
303 break;
306 incrementTrigSummary(summary.chamberId(),
307 summary.netaHits(), summary.etaProjection().nholes,
308 summary.nphiHits(), summary.phiProjection().nholes);
309 break;
310 }
311 }
312 }
313 }
314 }
315
316 muon.setSummaryValue(numberOfPrecisionLayers, xAOD::numberOfPrecisionLayers);
317 muon.setSummaryValue(numberOfPrecisionHoleLayers, xAOD::numberOfPrecisionHoleLayers);
318 muon.setSummaryValue(numberOfPhiLayers, xAOD::numberOfPhiLayers);
319 muon.setSummaryValue(numberOfPhiHoleLayers, xAOD::numberOfPhiHoleLayers);
320 muon.setSummaryValue(numberOfTriggerEtaLayers, xAOD::numberOfTriggerEtaLayers);
321 muon.setSummaryValue(numberOfTriggerEtaHoleLayers, xAOD::numberOfTriggerEtaHoleLayers);
322 muon.setSummaryValue(numberOfGoodPrecisionLayers, xAOD::numberOfGoodPrecisionLayers);
323
324 muon.setSummaryValue(mainSector, xAOD::primarySector);
325 muon.setSummaryValue(secondSector, xAOD::secondarySector);
326 muon.setSummaryValue(innerSmallHits, xAOD::innerSmallHits);
327 muon.setSummaryValue(innerLargeHits, xAOD::innerLargeHits);
328 muon.setSummaryValue(middleSmallHits, xAOD::middleSmallHits);
329 muon.setSummaryValue(middleLargeHits, xAOD::middleLargeHits);
330 muon.setSummaryValue(outerSmallHits, xAOD::outerSmallHits);
331 muon.setSummaryValue(outerLargeHits, xAOD::outerLargeHits);
332 muon.setSummaryValue(extendedSmallHits, xAOD::extendedSmallHits);
333 muon.setSummaryValue(extendedLargeHits, xAOD::extendedLargeHits);
334
335 muon.setSummaryValue(innerSmallHoles, xAOD::innerSmallHoles);
336 muon.setSummaryValue(innerLargeHoles, xAOD::innerLargeHoles);
337 muon.setSummaryValue(middleSmallHoles, xAOD::middleSmallHoles);
338 muon.setSummaryValue(middleLargeHoles, xAOD::middleLargeHoles);
339 muon.setSummaryValue(outerSmallHoles, xAOD::outerSmallHoles);
340 muon.setSummaryValue(outerLargeHoles, xAOD::outerLargeHoles);
341 muon.setSummaryValue(extendedSmallHoles, xAOD::extendedSmallHoles);
342 muon.setSummaryValue(extendedLargeHoles, xAOD::extendedLargeHoles);
343
344 muon.setSummaryValue(phiLayer1Hits, xAOD::phiLayer1Hits);
345 muon.setSummaryValue(phiLayer2Hits, xAOD::phiLayer2Hits);
346 muon.setSummaryValue(phiLayer3Hits, xAOD::phiLayer3Hits);
347 muon.setSummaryValue(phiLayer4Hits, xAOD::phiLayer4Hits);
348
349 muon.setSummaryValue(etaLayer1Hits, xAOD::etaLayer1Hits);
350 muon.setSummaryValue(etaLayer2Hits, xAOD::etaLayer2Hits);
351 muon.setSummaryValue(etaLayer3Hits, xAOD::etaLayer3Hits);
352 muon.setSummaryValue(etaLayer4Hits, xAOD::etaLayer4Hits);
353
354 muon.setSummaryValue(phiLayer1Holes, xAOD::phiLayer1Holes);
355 muon.setSummaryValue(phiLayer2Holes, xAOD::phiLayer2Holes);
356 muon.setSummaryValue(phiLayer3Holes, xAOD::phiLayer3Holes);
357 muon.setSummaryValue(phiLayer4Holes, xAOD::phiLayer4Holes);
358
359 muon.setSummaryValue(etaLayer1Holes, xAOD::etaLayer1Holes);
360 muon.setSummaryValue(etaLayer2Holes, xAOD::etaLayer2Holes);
361 muon.setSummaryValue(etaLayer3Holes, xAOD::etaLayer3Holes);
362 muon.setSummaryValue(etaLayer4Holes, xAOD::etaLayer4Holes);
363
364 muon.setSummaryValue(phiLayer1RPCHits, xAOD::phiLayer1RPCHits);
365 muon.setSummaryValue(phiLayer2RPCHits, xAOD::phiLayer2RPCHits);
366 muon.setSummaryValue(phiLayer3RPCHits, xAOD::phiLayer3RPCHits);
367 muon.setSummaryValue(phiLayer4RPCHits, xAOD::phiLayer4RPCHits);
368
369 muon.setSummaryValue(etaLayer1RPCHits, xAOD::etaLayer1RPCHits);
370 muon.setSummaryValue(etaLayer2RPCHits, xAOD::etaLayer2RPCHits);
371 muon.setSummaryValue(etaLayer3RPCHits, xAOD::etaLayer3RPCHits);
372 muon.setSummaryValue(etaLayer4RPCHits, xAOD::etaLayer4RPCHits);
373
374 muon.setSummaryValue(phiLayer1RPCHoles, xAOD::phiLayer1RPCHoles);
375 muon.setSummaryValue(phiLayer2RPCHoles, xAOD::phiLayer2RPCHoles);
376 muon.setSummaryValue(phiLayer3RPCHoles, xAOD::phiLayer3RPCHoles);
377 muon.setSummaryValue(phiLayer4RPCHoles, xAOD::phiLayer4RPCHoles);
378
379 muon.setSummaryValue(etaLayer1RPCHoles, xAOD::etaLayer1RPCHoles);
380 muon.setSummaryValue(etaLayer2RPCHoles, xAOD::etaLayer2RPCHoles);
381 muon.setSummaryValue(etaLayer3RPCHoles, xAOD::etaLayer3RPCHoles);
382 muon.setSummaryValue(etaLayer4RPCHoles, xAOD::etaLayer4RPCHoles);
383
384 muon.setSummaryValue(phiLayer1TGCHits, xAOD::phiLayer1TGCHits);
385 muon.setSummaryValue(phiLayer2TGCHits, xAOD::phiLayer2TGCHits);
386 muon.setSummaryValue(phiLayer3TGCHits, xAOD::phiLayer3TGCHits);
387 muon.setSummaryValue(phiLayer4TGCHits, xAOD::phiLayer4TGCHits);
388
389 muon.setSummaryValue(etaLayer1TGCHits, xAOD::etaLayer1TGCHits);
390 muon.setSummaryValue(etaLayer2TGCHits, xAOD::etaLayer2TGCHits);
391 muon.setSummaryValue(etaLayer3TGCHits, xAOD::etaLayer3TGCHits);
392 muon.setSummaryValue(etaLayer4TGCHits, xAOD::etaLayer4TGCHits);
393
394 muon.setSummaryValue(phiLayer1TGCHoles, xAOD::phiLayer1TGCHoles);
395 muon.setSummaryValue(phiLayer2TGCHoles, xAOD::phiLayer2TGCHoles);
396 muon.setSummaryValue(phiLayer3TGCHoles, xAOD::phiLayer3TGCHoles);
397 muon.setSummaryValue(phiLayer4TGCHoles, xAOD::phiLayer4TGCHoles);
398
399 muon.setSummaryValue(etaLayer1TGCHoles, xAOD::etaLayer1TGCHoles);
400 muon.setSummaryValue(etaLayer2TGCHoles, xAOD::etaLayer2TGCHoles);
401 muon.setSummaryValue(etaLayer3TGCHoles, xAOD::etaLayer3TGCHoles);
402 muon.setSummaryValue(etaLayer4TGCHoles, xAOD::etaLayer4TGCHoles);
403
404 // New Small Wheel
405 // STGC
406 muon.setSummaryValue(phiLayer1STGCHits, xAOD::phiLayer1STGCHits);
407 muon.setSummaryValue(phiLayer2STGCHits, xAOD::phiLayer2STGCHits);
408
409 muon.setSummaryValue(etaLayer1STGCHits, xAOD::etaLayer1STGCHits);
410 muon.setSummaryValue(etaLayer2STGCHits, xAOD::etaLayer2STGCHits);
411
412 muon.setSummaryValue(phiLayer1STGCHoles, xAOD::phiLayer1STGCHoles);
413 muon.setSummaryValue(phiLayer2STGCHoles, xAOD::phiLayer2STGCHoles);
414
415 muon.setSummaryValue(etaLayer1STGCHoles, xAOD::etaLayer1STGCHoles);
416 muon.setSummaryValue(etaLayer2STGCHoles, xAOD::etaLayer2STGCHoles);
417
418 // MM
419 muon.setSummaryValue(MMHits, xAOD::MMHits);
420 muon.setSummaryValue(MMHoles, xAOD::MMHoles);
421
422 muon.setSummaryValue(innerCloseHits, xAOD::innerClosePrecisionHits);
423 muon.setSummaryValue(middleCloseHits, xAOD::middleClosePrecisionHits);
424 muon.setSummaryValue(outerCloseHits, xAOD::outerClosePrecisionHits);
425 muon.setSummaryValue(extendedCloseHits, xAOD::extendedClosePrecisionHits);
426
427 muon.setSummaryValue(innerOutBoundsHits, xAOD::innerOutBoundsPrecisionHits);
428 muon.setSummaryValue(middleOutBoundsHits, xAOD::middleOutBoundsPrecisionHits);
429 muon.setSummaryValue(outerOutBoundsHits, xAOD::outerOutBoundsPrecisionHits);
430 muon.setSummaryValue(extendedOutBoundsHits, xAOD::extendedOutBoundsPrecisionHits);
431
432 muon.setSummaryValue(combinedTrackOutBoundsHits, xAOD::combinedTrackOutBoundsPrecisionHits);
433
434 muon.setSummaryValue(isEndcap, xAOD::isEndcapGoodLayers);
435 muon.setSummaryValue(isSmall, xAOD::isSmallGoodSectors);
436
437 muon.setSummaryValue(cscEtaHits, xAOD::cscEtaHits);
438 muon.setSummaryValue(cscUnspoiledEtaHits, xAOD::cscUnspoiledEtaHits);
439 }
440
441} // namespace MuonCombined
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
void addMuonHitSummary(xAOD::Muon &muon, const Trk::TrackSummary *summary=0) const override
ToolHandle< Muon::IMuonHitSummaryTool > m_hitSummaryTool
Detailed track summary for the muon system Give access to hit counts per chamber.
const std::vector< ChamberHitSummary > & chamberHitSummary() const
access to the vector of chamber hit summaries on the track
A summary of the information contained by a track.
const MuonTrackSummary * muonTrackSummary() const
returns a pointer to the MuonTrackSummary if available
const Trk::TrackSummary * trackSummary() const
Returns a pointer to the const Trk::TrackSummary owned by this const track (could be nullptr)
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
The MuonTagToSegMap is an auxillary construct that links the MuonSegments associated with a combined ...
PhiIndex
enum to classify the different phi layers in the muon spectrometer
bool isSmall(const ChIndex index)
Returns true if the chamber index is in a small sector.
const std::string & chName(ChIndex index)
convert ChIndex into a string
const std::string & phiName(PhiIndex index)
convert PhiIndex into a string
LayerIndex toLayerIndex(ChIndex index)
convert ChIndex into LayerIndex
ChIndex
enum to classify the different chamber layers in the muon spectrometer
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Muon_v1 Muon
Reference the current persistent version:
@ numberOfPrecisionLayers
layers with at least 3 hits [unit8_t].
@ numberOfTriggerEtaHoleLayers
layers with trigger eta holes but no hits [unit8_t].
@ numberOfPhiHoleLayers
layers with trigger phi holes but no hits [unit8_t].
@ numberOfTriggerEtaLayers
layers with trigger eta hits [unit8_t].
@ numberOfPhiLayers
layers with a trigger phi hit [unit8_t].
@ numberOfPrecisionHoleLayers
layers with holes AND no hits [unit8_t].
@ numberOfGoodPrecisionLayers
layers with at least 3 hits that are not deweighted [uint8_t]
@ phiLayer3TGCHoles
number of phi holes in the third TGC trigger layer (T2)
@ phiLayer3Hits
number of phi hits in the third trigger layer (BOL1 ot T2)
@ middleSmallHoles
number of precision holes in the middle small layer
@ cscEtaHits
number of CSC eta clusters on the track
@ etaLayer4RPCHits
number of eta hits in the fourth RPC trigger layer (BOL2)
@ phiLayer2TGCHits
number of phi hits in the second TGC trigger layer (T1)
@ outerSmallHits
number of precision hits in the outer small layer
@ etaLayer2TGCHoles
number of eta holes in the second TGC trigger layer (T1)
@ phiLayer1RPCHoles
number of phi holes in the first RPC trigger layer (BML1)
@ phiLayer2Hits
number of phi hits in the second trigger layer (BML2 ot T1)
@ phiLayer1TGCHits
number of phi hits in the first TGC trigger layer (T4)
@ middleSmallHits
number of precision hits in the middle small layer
@ etaLayer1RPCHits
number of eta hits in the first RPC trigger layer (BML1)
@ phiLayer2TGCHoles
number of phi holes in the second TGC trigger layer (T1)
@ phiLayer1RPCHits
number of phi hits in the first RPC trigger layer (BML1)
@ phiLayer4Holes
number of phi holes in the fourth trigger layer (T3)
@ middleClosePrecisionHits
number of close precision hits in the middle layer
@ etaLayer4RPCHoles
number of eta holes in the fourth RPC trigger layer (BOL2)
@ innerClosePrecisionHits
number of close precision hits in the inner layer
@ phiLayer4RPCHits
number of phi hits in the fourth RPC trigger layer (BOL2)
@ phiLayer2RPCHoles
number of phi holes in the second RPC trigger layer (BML2)
@ etaLayer3RPCHoles
number of eta holes in the third RPC trigger layer (BOL1)
@ etaLayer1TGCHits
number of eta hits in the first TGC trigger layer (T4)
@ phiLayer1Holes
number of phi holes in the first trigger layer (BML1 ot T4)
@ etaLayer2STGCHoles
number of eta holes in the second STGC trigger layer (STGC2)
@ outerLargeHits
number of precision hits in the outer large layer
@ phiLayer4RPCHoles
number of phi holes in the fourth RPC trigger layer (BOL2)
@ etaLayer2RPCHoles
number of eta holes in the second RPC trigger layer (BML2)
@ etaLayer4TGCHoles
number of eta holes in the fourth TGC trigger layer (T3)
@ phiLayer3RPCHoles
number of phi holes in the third RPC trigger layer (BOL1)
@ etaLayer1STGCHoles
number of eta holes in the first STGC trigger layer (STGC1)
@ primarySector
primary sector crossed by the muon
@ etaLayer3Hits
number of eta hits in the third trigger layer (BOL1 ot T2)
@ phiLayer1STGCHoles
number of phi holes in the first STGC trigger layer (STGC1)
@ etaLayer3Holes
number of eta holes in the third trigger layer (BOL1 ot T2)
@ secondarySector
secondary sector crossed by the muon (set to the primary if the muon only passed one sector)
@ middleLargeHits
number of precision hits in the middle large layer
@ outerClosePrecisionHits
number of close precision hits in the outer layer
@ etaLayer4TGCHits
number of eta hits in the fourth TGC trigger layer (T3)
@ etaLayer1RPCHoles
number of eta holes in the first RPC trigger layer (BML1)
@ phiLayer4TGCHoles
number of phi holes in the fourth TGC trigger layer (T3)
@ innerOutBoundsPrecisionHits
number of out-of-bounds hits in the inner layer
@ etaLayer1Hits
number of eta hits in the first trigger layer (BML1 ot T4)
@ phiLayer2Holes
number of phi holes in the second trigger layer (BML2 ot T1)
@ etaLayer3RPCHits
number of eta hits in the third RPC trigger layer (BOL1)
@ phiLayer1Hits
number of phi hits in the first trigger layer (BML1 ot T4)
@ isSmallGoodSectors
if non-deweighted track chambers are small
@ phiLayer3Holes
number of phi holes in the third trigger layer (BOL1 ot T2)
@ etaLayer4Holes
number of eta holes in the fourth trigger layer (T3)
@ extendedSmallHits
number of precision hits in the extended small layer
@ etaLayer1TGCHoles
number of eta holes in the first TGC trigger layer (T4)
@ phiLayer1TGCHoles
number of phi holes in the first TGC trigger layer (T4)
@ extendedLargeHits
number of precision hits in the extended large layer
@ etaLayer3TGCHits
number of eta hits in the third TGC trigger layer (T2)
@ phiLayer1STGCHits
number of phi hits in the first STGC trigger layer (STGC1)
@ phiLayer4Hits
number of phi hits in the fourth trigger layer (T3)
@ outerLargeHoles
number of precision holes in the outer large layer
@ extendedSmallHoles
number of precision holes in the extended small layer
@ innerLargeHits
number of precision hits in the inner large layer
@ middleLargeHoles
number of precision holes in the middle large layer
@ middleOutBoundsPrecisionHits
number of out-of-bounds hits in the middle layer
@ etaLayer2STGCHits
number of eta hits in the second STGC trigger layer (STGC2)
@ innerLargeHoles
number of precision holes in the inner large layer
@ phiLayer2RPCHits
number of phi hits in the second RPC trigger layer (BML2)
@ extendedClosePrecisionHits
number of close precision hits in the extended layer
@ etaLayer2RPCHits
number of eta hits in the second RPC trigger layer (BML2)
@ etaLayer4Hits
number of eta hits in the fourth trigger layer (T3)
@ etaLayer3TGCHoles
number of eta holes in the third TGC trigger layer (T2)
@ etaLayer1STGCHits
number of eta hits in the first STGC trigger layer (STGC1)
@ etaLayer2TGCHits
number of eta hits in the second TGC trigger layer (T1)
@ etaLayer2Holes
number of eta holes in the second trigger layer (BML2 ot T1)
@ phiLayer2STGCHits
number of phi hits in the second STGC trigger layer (STGC2)
@ phiLayer3RPCHits
number of phi hits in the third RPC trigger layer (BOL1)
@ etaLayer2Hits
number of eta hits in the second trigger layer (BML2 ot T1)
@ innerSmallHoles
number of precision holes in the inner small layer
@ phiLayer4TGCHits
number of phi hits in the fourth TGC trigger layer (T3)
@ etaLayer1Holes
number of eta holes in the first trigger layer (BML1 ot T4)
@ extendedLargeHoles
number of precision holes in the extended large layer
@ phiLayer3TGCHits
number of phi hits in the third TGC trigger layer (T2)
@ combinedTrackOutBoundsPrecisionHits
total out-of-bounds hits on the combined track
@ cscUnspoiledEtaHits
number of unspoiled CSC eta clusters on track
@ extendedOutBoundsPrecisionHits
number of out-of-bounds hits in the extended layer
@ outerOutBoundsPrecisionHits
number of out-of-bounds hits in the outer layer
@ phiLayer2STGCHoles
number of phi holes in the second STGC trigger layer (STGC2)
@ isEndcapGoodLayers
if non-deweighted track chambers are in endcap
@ outerSmallHoles
number of precision holes in the outer small layer
@ innerSmallHits
number of precision hits in the inner small layer
structure to hold information per chamber in the muon system