ATLAS Offline Software
Loading...
Searching...
No Matches
L0Muon::TgcL0Floating::RdoDecoder Class Reference

Decode Run-3 TGC hit RDOs and group the decoded hits. More...

#include <TgcL0RdoDecoder.h>

Collaboration diagram for L0Muon::TgcL0Floating::RdoDecoder:

Public Member Functions

StatusCode decode (const TgcRdoContainer &rdos, HitGroups &hitGroups, DecodeStatistics &statistics) const

Detailed Description

Decode Run-3 TGC hit RDOs and group the decoded hits.

Definition at line 16 of file TgcL0RdoDecoder.h.

Member Function Documentation

◆ decode()

StatusCode L0Muon::TgcL0Floating::RdoDecoder::decode ( const TgcRdoContainer & rdos,
HitGroups & hitGroups,
DecodeStatistics & statistics ) const

Definition at line 41 of file TgcL0RdoDecoder.cxx.

43 {
44 hitGroups.clear();
45 statistics = DecodeStatistics{};
46
47 // The decoder assumes the Run-3 ROD, SSW and SLB-based TGC RDO format.
48 // The Run-4 TGC RDO will have a substantially different structure, and
49 // this decoder and its hit organization are expected to require a broad
50 // rewrite when that format becomes available. The HitGroups output is the
51 // boundary to the later reconstruction, so the downstream segment,
52 // candidate, Inner Coincidence and Track Selector code is not expected to
53 // require corresponding changes.
54 for (const TgcRdo* rdo : rdos) {
55 for (const TgcRawData* rawData : *rdo) {
56 ++statistics.nRawData;
57 if (rawData->type() != TgcRawData::TYPE_HIT) {
58 continue;
59 }
60
61 const Station hitStation = station(rawData->slbType());
62 const bool hitIsStrip = isStrip(rawData->slbType());
63 const Hit hit{
64 .subDetectorId = rawData->subDetectorId(),
65 .detectorSector = rawData->rodId(),
66 .bcTag = rawData->bcTag(),
67 .sswId = rawData->sswId(),
68 .slbId = rawData->slbId(),
69 .channel = rawData->channel(),
70 .station = hitStation,
71 .isStrip = hitIsStrip,
72 };
73 const HitGroupKey key{
74 .subDetectorId = hit.subDetectorId,
75 .detectorSector = hit.detectorSector,
76 .bcTag = hit.bcTag,
77 .station = hit.station,
78 .isStrip = hit.isStrip,
79 };
80 hitGroups[key].push_back(hit);
81
82 ++statistics.nHits;
83 if (hitIsStrip) {
84 ++statistics.nStripHits;
85 } else {
86 ++statistics.nWireHits;
87 }
88 switch (hitStation) {
89 case Station::M1:
90 ++statistics.nM1Hits;
91 break;
92 case Station::M2M3:
93 ++statistics.nM2M3Hits;
94 break;
95 case Station::Inner:
96 ++statistics.nInnerHits;
97 break;
98 default:
99 ++statistics.nUnknownStation;
100 break;
101 }
102 }
103 }
104 return StatusCode::SUCCESS;
105}
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

The documentation for this class was generated from the following files: