ATLAS Offline Software
Loading...
Searching...
No Matches
TgcL0RootOutputAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6
9
10namespace L0Muon {
11
13 ATH_CHECK(m_inputKey.initialize());
14 m_tree.setPath("L0MuonS1TGCValidation");
15 ATH_CHECK(m_tree.init(this));
16 return StatusCode::SUCCESS;
17}
18
19StatusCode TgcL0RootOutputAlg::execute(const EventContext& ctx) {
21 ATH_CHECK(input.isValid());
22
23 const TgcL0ValidationCheckResult check =
25 if (!check.valid) {
27 ATH_MSG_ERROR("Invalid TGC validation data: " << check.message);
28 return StatusCode::FAILURE;
29 }
30 ATH_MSG_WARNING("Skipping invalid TGC validation data: "
31 << check.message);
32 return StatusCode::SUCCESS;
33 }
34
35 copyToBranches(*input);
36 return m_tree.fill(ctx) ? StatusCode::SUCCESS : StatusCode::FAILURE;
37}
38
40 ATH_CHECK(m_tree.write());
41 return StatusCode::SUCCESS;
42}
43
45 const TgcL0ValidationEvent& input) {
46 m_runNumber = input.event.runNumber;
47 m_eventNumber = input.event.eventNumber;
48 m_lumiBlock = input.event.lumiBlock;
49 m_bcid = input.event.bcid;
50
51 m_truthPdgId = input.truth.pdgId;
52 m_truthBarcode = input.truth.barcode;
53 m_truthPt = input.truth.pt;
54 m_truthEta = input.truth.eta;
55 m_truthPhi = input.truth.phi;
56 m_truthCharge = input.truth.charge;
57 m_truthExtrapolatedStationMask = input.truth.extrapolatedStationMask;
58 m_truthM1Eta = input.truth.m1Eta;
59 m_truthM1Phi = input.truth.m1Phi;
60 m_truthM2Eta = input.truth.m2Eta;
61 m_truthM2Phi = input.truth.m2Phi;
62 m_truthM3Eta = input.truth.m3Eta;
63 m_truthM3Phi = input.truth.m3Phi;
64 m_truthMatched = input.truth.matched;
65 m_truthMatchedCandidateIndex = input.truth.matchedCandidateIndex;
66 m_truthMatchMeanDeltaR = input.truth.matchMeanDeltaR;
67 m_truthUnmatchedReason = input.truth.unmatchedReason;
68 m_truthFinalCandidateMatched = input.truth.finalCandidateMatched;
69 m_truthMatchedFinalCandidateIndex =
70 input.truth.matchedFinalCandidateIndex;
71 m_truthFinalCandidateMatchDeltaR =
72 input.truth.finalCandidateMatchDeltaR;
73 m_truthFinalCandidateUnmatchedReason =
74 input.truth.finalCandidateUnmatchedReason;
75 m_truthWireSegmentMatched = input.truth.wireSegmentMatched;
76 m_truthStripSegmentMatched = input.truth.stripSegmentMatched;
77 m_truthMatchedWireSegmentIndex = input.truth.matchedWireSegmentIndex;
78 m_truthMatchedStripSegmentIndex = input.truth.matchedStripSegmentIndex;
79 m_truthWireSegmentMatchResidual = input.truth.wireSegmentMatchResidual;
80 m_truthStripSegmentMatchResidual = input.truth.stripSegmentMatchResidual;
81
82 m_segmentSubdetectorId = input.segments.subdetectorId;
83 m_segmentTriggerSector = input.segments.triggerSector;
84 m_segmentBcTag = input.segments.bcTag;
85 m_segmentProjection = input.segments.projection;
86 m_segmentStationMask = input.segments.stationMask;
87 m_segmentSummedQuality = input.segments.summedQuality;
88 m_segmentNStations = input.segments.nStations;
89 m_segmentEta = input.segments.eta;
90 m_segmentPhi = input.segments.phi;
91 m_segmentResidual = input.segments.residual;
92 m_segmentOutputResidual = input.segments.outputResidual;
93 m_segmentConsistency = input.segments.consistency;
94 m_segmentPivotChannel = input.segments.pivotChannel;
95 m_segmentTruthIndex = input.segments.truthIndex;
96 m_segmentTruthMatchResidual = input.segments.truthMatchResidual;
97
98 m_candidateSubdetectorId = input.candidates.subdetectorId;
99 m_candidateTriggerSector = input.candidates.triggerSector;
100 m_candidateReadoutSector = input.candidates.readoutSector;
101 m_candidateBcTag = input.candidates.bcTag;
102 m_candidateStationMask = input.candidates.stationMask;
103 m_candidateWireStationMask = input.candidates.wireStationMask;
104 m_candidateStripStationMask = input.candidates.stripStationMask;
105 m_candidateEta = input.candidates.eta;
106 m_candidatePhi = input.candidates.phi;
107 m_candidateDeltaTheta = input.candidates.deltaTheta;
108 m_candidateDeltaPhi = input.candidates.deltaPhi;
109 m_candidatePt = input.candidates.pt;
110 m_candidateThreshold = input.candidates.threshold;
111 m_candidateCharge = input.candidates.charge;
112 m_candidateGoodMagneticField = input.candidates.goodMagneticField;
113 m_candidateTruthIndex = input.candidates.truthIndex;
114
115 m_finalCandidateSourceCandidateIndex =
116 input.finalCandidates.sourceCandidateIndex;
117 m_finalCandidateReferenceStation =
118 input.finalCandidates.referenceStation;
119 m_finalCandidateSubdetectorId = input.finalCandidates.subdetectorId;
120 m_finalCandidateTriggerSector = input.finalCandidates.triggerSector;
121 m_finalCandidateBcTag = input.finalCandidates.bcTag;
122 m_finalCandidateTcId = input.finalCandidates.tcId;
123 m_finalCandidateRawEta = input.finalCandidates.rawEta;
124 m_finalCandidateRawPhi = input.finalCandidates.rawPhi;
125 m_finalCandidateEta = input.finalCandidates.eta;
126 m_finalCandidatePhi = input.finalCandidates.phi;
127 m_finalCandidatePtCode = input.finalCandidates.ptCode;
128 m_finalCandidatePt = input.finalCandidates.pt;
129 m_finalCandidateThreshold = input.finalCandidates.threshold;
130 m_finalCandidateCharge = input.finalCandidates.charge;
131 m_finalCandidateInnerCoincidence =
132 input.finalCandidates.innerCoincidence;
133 m_finalCandidateGoodMagneticField =
134 input.finalCandidates.goodMagneticField;
135 m_finalCandidateTruthIndex = input.finalCandidates.truthIndex;
136 m_finalCandidateTruthMatchDeltaR =
137 input.finalCandidates.truthMatchDeltaR;
138
139 m_sectorLogicInputCandidateIndex =
140 input.sectorLogic.inputCandidateIndex;
141 m_sectorLogicCandWord = input.sectorLogic.candWord;
142 m_sectorLogicCandExtraWord = input.sectorLogic.candExtraWord;
143 m_sectorLogicBoardId = input.sectorLogic.boardId;
144 m_sectorLogicFiberId = input.sectorLogic.fiberId;
145 m_sectorLogicBcidOffset = input.sectorLogic.bcidOffset;
146 m_sectorLogicVeto = input.sectorLogic.veto;
147}
148
149} // namespace L0Muon
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
Handle class for reading from StoreGate.
MuonVal::ScalarBranch< std::uint32_t > & m_bcid
virtual StatusCode initialize() override
MuonVal::ScalarBranch< std::uint32_t > & m_runNumber
MuonVal::ScalarBranch< std::uint32_t > & m_lumiBlock
Gaudi::Property< bool > m_failOnInvalidData
MuonVal::MuonTesterTree m_tree
MuonVal::ScalarBranch< std::uint64_t > & m_eventNumber
SG::ReadHandleKey< TgcL0ValidationEvent > m_inputKey
virtual StatusCode execute(const EventContext &ctx) override
Execute method.
virtual StatusCode finalize() override
void copyToBranches(const TgcL0ValidationEvent &input)
TgcL0ValidationCheckResult checkTgcL0ValidationEvent(const TgcL0ValidationEvent &event)
Check vector sizes and reciprocal cross-block indices.
Result of a structural validation-data consistency check.
ROOT-independent validation data for one event.