4#ifndef L0MUONS1TGCVALIDATION_TGCL0ROOTOUTPUTALG_H
5#define L0MUONS1TGCVALIDATION_TGCL0ROOTOUTPUTALG_H
27 virtual StatusCode
execute(
const EventContext& ctx)
override;
28 virtual StatusCode
finalize()
override;
34 this,
"InputKey",
"L0MuonTGCValidationEvent",
35 "Calculated event-local truth-validation data"};
37 this,
"FailOnInvalidData",
true,
38 "Fail instead of skipping structurally inconsistent validation data"};
43 m_tree.newScalar<std::uint32_t>(
"runNumber")};
45 m_tree.newScalar<std::uint64_t>(
"eventNumber")};
47 m_tree.newScalar<std::uint32_t>(
"lumiBlock")};
49 m_tree.newScalar<std::uint32_t>(
"bcid")};
51#define TGCL0_VECTOR_BRANCH(TYPE, MEMBER, NAME) \
52 MuonVal::VectorBranch<TYPE>& MEMBER{m_tree.newVector<TYPE>(NAME)}
61 "truthExtrapolatedStationMask");
70 "truthMatchedCandidateIndex");
72 "truthMatchMeanDeltaR");
74 "truthUnmatchedReason");
76 "truthFinalCandidateMatched");
78 "truthMatchedFinalCandidateIndex");
80 "truthFinalCandidateMatchDeltaR");
82 m_truthFinalCandidateUnmatchedReason,
83 "truthFinalCandidateUnmatchedReason");
85 "truthWireSegmentMatched");
87 "truthStripSegmentMatched");
89 "truthMatchedWireSegmentIndex");
91 "truthMatchedStripSegmentIndex");
93 "truthWireSegmentMatchResidual");
95 "truthStripSegmentMatchResidual");
98 "segmentSubdetectorId");
100 "segmentTriggerSector");
103 "segmentProjection");
105 "segmentStationMask");
107 "segmentSummedQuality");
114 "segmentOutputResidual");
117 "segmentPivotChannel");
120 "segmentTruthMatchResidual");
123 "candidateSubdetectorId");
125 "candidateTriggerSector");
127 "candidateReadoutSector");
130 "candidateStationMask");
132 "candidateWireStationMask");
134 "candidateStripStationMask");
141 "candidateThreshold");
144 "candidateGoodMagneticField");
148 "finalCandidateSourceCandidateIndex");
150 "finalCandidateReferenceStation");
152 "finalCandidateSubdetectorId");
154 "finalCandidateTriggerSector");
156 "finalCandidateBcTag");
158 "finalCandidateTcId");
160 "finalCandidateRawEta");
162 "finalCandidateRawPhi");
166 "finalCandidatePtCode");
169 "finalCandidateThreshold");
171 "finalCandidateCharge");
173 "finalCandidateInnerCoincidence");
175 "finalCandidateGoodMagneticField");
177 "finalCandidateTruthIndex");
179 "finalCandidateTruthMatchDeltaR");
182 "sectorLogicInputCandidateIndex");
184 "sectorLogicCandWord");
186 "sectorLogicCandExtraWord");
188 "sectorLogicBoardId");
190 "sectorLogicFiberId");
192 "sectorLogicBcidOffset");
196#undef TGCL0_VECTOR_BRANCH
Property holding a SG store/key/clid from which a ReadHandle is made.
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
MuonTester backend for event-level TGC truth-validation data.
TGCL0_VECTOR_BRANCH(std::uint16_t, m_candidateBcTag, "candidateBcTag")
TGCL0_VECTOR_BRANCH(float, m_segmentResidual, "segmentResidual")
TGCL0_VECTOR_BRANCH(int, m_truthMatchedStripSegmentIndex, "truthMatchedStripSegmentIndex")
TGCL0_VECTOR_BRANCH(float, m_truthMatchMeanDeltaR, "truthMatchMeanDeltaR")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_candidateWireStationMask, "candidateWireStationMask")
MuonVal::ScalarBranch< std::uint32_t > & m_bcid
TGCL0_VECTOR_BRANCH(float, m_segmentTruthMatchResidual, "segmentTruthMatchResidual")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_truthWireSegmentMatched, "truthWireSegmentMatched")
TGCL0_VECTOR_BRANCH(float, m_truthCharge, "truthCharge")
TGCL0_VECTOR_BRANCH(int, m_truthMatchedWireSegmentIndex, "truthMatchedWireSegmentIndex")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_finalCandidateSubdetectorId, "finalCandidateSubdetectorId")
TGCL0_VECTOR_BRANCH(int, m_truthBarcode, "truthBarcode")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_candidateStripStationMask, "candidateStripStationMask")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_candidateStationMask, "candidateStationMask")
TGCL0_VECTOR_BRANCH(float, m_truthStripSegmentMatchResidual, "truthStripSegmentMatchResidual")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_finalCandidateRawEta, "finalCandidateRawEta")
TGCL0_VECTOR_BRANCH(float, m_finalCandidateEta, "finalCandidateEta")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_finalCandidateRawPhi, "finalCandidateRawPhi")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_finalCandidateGoodMagneticField, "finalCandidateGoodMagneticField")
TGCL0_VECTOR_BRANCH(float, m_segmentOutputResidual, "segmentOutputResidual")
virtual StatusCode initialize() override
TGCL0_VECTOR_BRANCH(float, m_finalCandidateTruthMatchDeltaR, "finalCandidateTruthMatchDeltaR")
TGCL0_VECTOR_BRANCH(std::uint32_t, m_sectorLogicCandWord, "sectorLogicCandWord")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_truthFinalCandidateMatched, "truthFinalCandidateMatched")
TGCL0_VECTOR_BRANCH(int, m_truthMatchedCandidateIndex, "truthMatchedCandidateIndex")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_candidateTriggerSector, "candidateTriggerSector")
TGCL0_VECTOR_BRANCH(float, m_truthPhi, "truthPhi")
TGCL0_VECTOR_BRANCH(int, m_finalCandidateSourceCandidateIndex, "finalCandidateSourceCandidateIndex")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_segmentTriggerSector, "segmentTriggerSector")
MuonVal::ScalarBranch< std::uint32_t > & m_runNumber
TGCL0_VECTOR_BRANCH(std::uint8_t, m_finalCandidateReferenceStation, "finalCandidateReferenceStation")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_truthExtrapolatedStationMask, "truthExtrapolatedStationMask")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_segmentNStations, "segmentNStations")
TGCL0_VECTOR_BRANCH(float, m_truthM3Phi, "truthM3Phi")
TGCL0_VECTOR_BRANCH(int, m_finalCandidateTruthIndex, "finalCandidateTruthIndex")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_candidateGoodMagneticField, "candidateGoodMagneticField")
TGCL0_VECTOR_BRANCH(float, m_finalCandidatePhi, "finalCandidatePhi")
TGCL0_VECTOR_BRANCH(std::uint32_t, m_sectorLogicCandExtraWord, "sectorLogicCandExtraWord")
MuonVal::ScalarBranch< std::uint32_t > & m_lumiBlock
TGCL0_VECTOR_BRANCH(std::uint8_t, m_finalCandidateInnerCoincidence, "finalCandidateInnerCoincidence")
TGCL0_VECTOR_BRANCH(int, m_sectorLogicBcidOffset, "sectorLogicBcidOffset")
TGCL0_VECTOR_BRANCH(float, m_truthPt, "truthPt")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_truthUnmatchedReason, "truthUnmatchedReason")
TGCL0_VECTOR_BRANCH(int, m_truthPdgId, "truthPdgId")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_truthFinalCandidateUnmatchedReason, "truthFinalCandidateUnmatchedReason")
TGCL0_VECTOR_BRANCH(float, m_segmentPhi, "segmentPhi")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_sectorLogicBoardId, "sectorLogicBoardId")
TGCL0_VECTOR_BRANCH(float, m_candidatePt, "candidatePt")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_sectorLogicVeto, "sectorLogicVeto")
TGCL0_VECTOR_BRANCH(int, m_truthMatchedFinalCandidateIndex, "truthMatchedFinalCandidateIndex")
TGCL0_VECTOR_BRANCH(float, m_truthM1Phi, "truthM1Phi")
Gaudi::Property< bool > m_failOnInvalidData
TGCL0_VECTOR_BRANCH(float, m_truthWireSegmentMatchResidual, "truthWireSegmentMatchResidual")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_finalCandidateBcTag, "finalCandidateBcTag")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_finalCandidateTriggerSector, "finalCandidateTriggerSector")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_finalCandidatePtCode, "finalCandidatePtCode")
TGCL0_VECTOR_BRANCH(std::int8_t, m_candidateCharge, "candidateCharge")
TGCL0_VECTOR_BRANCH(float, m_truthM1Eta, "truthM1Eta")
TGCL0_VECTOR_BRANCH(float, m_truthM3Eta, "truthM3Eta")
TGCL0_VECTOR_BRANCH(int, m_candidateTruthIndex, "candidateTruthIndex")
TGCL0_VECTOR_BRANCH(float, m_segmentEta, "segmentEta")
TGCL0_VECTOR_BRANCH(std::uint32_t, m_sectorLogicInputCandidateIndex, "sectorLogicInputCandidateIndex")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_truthStripSegmentMatched, "truthStripSegmentMatched")
MuonVal::MuonTesterTree m_tree
MuonVal::ScalarBranch< std::uint64_t > & m_eventNumber
TGCL0_VECTOR_BRANCH(float, m_truthEta, "truthEta")
TGCL0_VECTOR_BRANCH(float, m_finalCandidatePt, "finalCandidatePt")
SG::ReadHandleKey< TgcL0ValidationEvent > m_inputKey
TGCL0_VECTOR_BRANCH(std::uint8_t, m_segmentSummedQuality, "segmentSummedQuality")
virtual StatusCode execute(const EventContext &ctx) override
Execute method.
TGCL0_VECTOR_BRANCH(std::int8_t, m_finalCandidateCharge, "finalCandidateCharge")
TGCL0_VECTOR_BRANCH(float, m_truthM2Phi, "truthM2Phi")
TGCL0_VECTOR_BRANCH(float, m_truthFinalCandidateMatchDeltaR, "truthFinalCandidateMatchDeltaR")
TGCL0_VECTOR_BRANCH(float, m_truthM2Eta, "truthM2Eta")
TGCL0_VECTOR_BRANCH(float, m_candidateDeltaPhi, "candidateDeltaPhi")
AthHistogramAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
TGCL0_VECTOR_BRANCH(std::uint16_t, m_candidateSubdetectorId, "candidateSubdetectorId")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_sectorLogicFiberId, "sectorLogicFiberId")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_truthMatched, "truthMatched")
virtual StatusCode finalize() override
TGCL0_VECTOR_BRANCH(std::uint8_t, m_finalCandidateThreshold, "finalCandidateThreshold")
TGCL0_VECTOR_BRANCH(int, m_segmentTruthIndex, "segmentTruthIndex")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_finalCandidateTcId, "finalCandidateTcId")
TGCL0_VECTOR_BRANCH(float, m_segmentConsistency, "segmentConsistency")
TGCL0_VECTOR_BRANCH(float, m_candidateEta, "candidateEta")
TGCL0_VECTOR_BRANCH(float, m_candidatePhi, "candidatePhi")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_candidateReadoutSector, "candidateReadoutSector")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_segmentBcTag, "segmentBcTag")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_candidateThreshold, "candidateThreshold")
TGCL0_VECTOR_BRANCH(std::uint8_t, m_segmentStationMask, "segmentStationMask")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_segmentSubdetectorId, "segmentSubdetectorId")
TGCL0_VECTOR_BRANCH(std::uint16_t, m_segmentPivotChannel, "segmentPivotChannel")
TGCL0_VECTOR_BRANCH(float, m_candidateDeltaTheta, "candidateDeltaTheta")
void copyToBranches(const TgcL0ValidationEvent &input)
TGCL0_VECTOR_BRANCH(std::uint8_t, m_segmentProjection, "segmentProjection")
Property holding a SG store/key/clid from which a ReadHandle is made.
ROOT-independent validation data for one event.