13#include "AthLinks/ElementLink.h"
26 declareInterface<IMuonPrintingTool>(
this);
38 return StatusCode::SUCCESS;
44 return StatusCode::SUCCESS;
48 std::ostringstream sout;
49 sout <<
" pt : " << tp.pt() <<
" eta : " << tp.eta() <<
" phi : " << tp.phi();
54 std::ostringstream sout;
56 sout <<
"##### Muon, pt : " << muon.pt() <<
" eta : " << muon.eta() <<
" phi : " << muon.phi() <<
" mass : " << muon.m()
57 <<
" author " << muon.author() <<
" type : " << muon.muonType() <<
" secondary authors: ";
58 for (
int a = 0;
a < xAOD::Muon::NumberOfMuonAuthors; ++
a) {
59 xAOD::Muon::Author author =
static_cast<xAOD::Muon::Author
>(
a);
60 if (author != muon.author() && muon.isAuthor(author)) sout <<
" " <<
a;
64 sout <<
" ParamDef available:" << std::endl;
65 float spectrometerFieldIntegral = 0;
66 if (muon.parameter(spectrometerFieldIntegral, xAOD::Muon::spectrometerFieldIntegral))
67 sout <<
" spectrometerFieldIntegral : " << spectrometerFieldIntegral << std::endl;
68 float scatteringCurvatureSignificance = 0;
69 if (muon.parameter(scatteringCurvatureSignificance, xAOD::Muon::scatteringCurvatureSignificance))
70 sout <<
" scatteringCurvatureSignificance : " << scatteringCurvatureSignificance << std::endl;
71 float scatteringNeighbourSignificance = 0;
72 if (muon.parameter(scatteringNeighbourSignificance, xAOD::Muon::scatteringNeighbourSignificance))
73 sout <<
" scatteringNeighbourSignificance : " << scatteringNeighbourSignificance << std::endl;
74 float momentumBalanceSignificance = 0;
75 if (muon.parameter(momentumBalanceSignificance, xAOD::Muon::momentumBalanceSignificance))
76 sout <<
" momentumBalanceSignificance : " << momentumBalanceSignificance << std::endl;
77 float segmentDeltaEta = 0;
78 if (muon.parameter(segmentDeltaEta, xAOD::Muon::segmentDeltaEta)) sout <<
" segmentDeltaEta : " << segmentDeltaEta << std::endl;
79 float segmentDeltaPhi = 0;
80 if (muon.parameter(segmentDeltaPhi, xAOD::Muon::segmentDeltaPhi)) sout <<
" segmentDeltaPhi : " << segmentDeltaPhi << std::endl;
81 float segmentChi2OverDoF = 0;
82 if (muon.parameter(segmentChi2OverDoF, xAOD::Muon::segmentChi2OverDoF))
83 sout <<
" segmentChi2OverDoF : " << segmentChi2OverDoF << std::endl;
85 if (muon.parameter(
t0, xAOD::Muon::t0)) sout <<
" t0 : " <<
t0 << std::endl;
87 if (muon.parameter(beta, xAOD::Muon::beta)) sout <<
" beta : " << beta << std::endl;
89 if (muon.parameter(annBarrel, xAOD::Muon::annBarrel)) sout <<
" annBarrel : " << annBarrel << std::endl;
91 if (muon.parameter(annEndCap, xAOD::Muon::annEndCap)) sout <<
" annEndCap : " << annEndCap << std::endl;
93 if (muon.parameter(innAngle, xAOD::Muon::innAngle)) sout <<
" innAngle : " << innAngle << std::endl;
95 if (muon.parameter(midAngle, xAOD::Muon::midAngle)) sout <<
" midAngle : " << midAngle << std::endl;
96 float msInnerMatchChi2 = 0;
97 if (muon.parameter(msInnerMatchChi2, xAOD::Muon::msInnerMatchChi2)) sout <<
" msInnerMatchChi2 : " << msInnerMatchChi2 << std::endl;
98 int msInnerMatchDOF = 0;
99 if (muon.parameter(msInnerMatchDOF, xAOD::Muon::msInnerMatchDOF)) sout <<
" msInnerMatchDOF : " << msInnerMatchDOF << std::endl;
100 float msOuterMatchChi2 = 0;
101 if (muon.parameter(msOuterMatchChi2, xAOD::Muon::msOuterMatchChi2)) sout <<
" msOuterMatchChi2 : " << msOuterMatchChi2 << std::endl;
102 int msOuterMatchDOF = 0;
103 if (muon.parameter(msOuterMatchDOF, xAOD::Muon::msOuterMatchDOF)) sout <<
" msOuterMatchDOF : " << msOuterMatchDOF << std::endl;
104 float meanDeltaADCCountsMDT = 0;
105 if (muon.parameter(meanDeltaADCCountsMDT, xAOD::Muon::meanDeltaADCCountsMDT))
106 sout <<
" meanDeltaADCCountsMDT : " << meanDeltaADCCountsMDT << std::endl;
107 float CaloLRLikelihood = 0;
108 if (muon.parameter(CaloLRLikelihood, xAOD::Muon::CaloLRLikelihood)) sout <<
" CaloLRLikelihood : " << CaloLRLikelihood << std::endl;
109 float CaloMuonScore = 0;
110 if (muon.parameter(CaloLRLikelihood, xAOD::Muon::CaloMuonScore)) sout <<
" CaloMuonScore : " << CaloMuonScore << std::endl;
111 int CaloMuonIDTag = 0;
112 if (muon.parameter(CaloMuonIDTag, xAOD::Muon::CaloMuonIDTag)) sout <<
" CaloMuonIDTag : " << CaloMuonIDTag << std::endl;
113 float FSR_CandidateEnergy = 0;
114 if (muon.parameter(FSR_CandidateEnergy, xAOD::Muon::FSR_CandidateEnergy))
115 sout <<
" FSR_CandidateEnergy : " << FSR_CandidateEnergy << std::endl;
116 float EnergyLoss = 0;
117 if (muon.parameter(EnergyLoss, xAOD::Muon::EnergyLoss)) sout <<
" EnergyLoss : " << EnergyLoss << std::endl;
118 float ParamEnergyLoss = 0;
119 if (muon.parameter(ParamEnergyLoss, xAOD::Muon::ParamEnergyLoss)) sout <<
" ParamEnergyLoss : " << ParamEnergyLoss << std::endl;
120 float MeasEnergyLoss = 0;
121 if (muon.parameter(MeasEnergyLoss, xAOD::Muon::MeasEnergyLoss)) sout <<
" MeasEnergyLoss : " << MeasEnergyLoss << std::endl;
122 float EnergyLossSigma = 0;
123 if (muon.parameter(EnergyLossSigma, xAOD::Muon::EnergyLossSigma)) sout <<
" EnergyLossSigma : " << EnergyLossSigma << std::endl;
124 float ParamEnergyLossSigmaPlus = 0;
125 if (muon.parameter(ParamEnergyLossSigmaPlus, xAOD::Muon::ParamEnergyLossSigmaPlus))
126 sout <<
" ParamEnergyLossSigmaPlus : " << ParamEnergyLossSigmaPlus << std::endl;
127 float ParamEnergyLossSigmaMinus = 0;
128 if (muon.parameter(ParamEnergyLossSigmaMinus, xAOD::Muon::ParamEnergyLossSigmaMinus))
129 sout <<
" ParamEnergyLossSigmaMinus : " << ParamEnergyLossSigmaMinus << std::endl;
130 float MeasEnergyLossSigma = 0;
131 if (muon.parameter(MeasEnergyLossSigma, xAOD::Muon::MeasEnergyLossSigma))
132 sout <<
" MeasEnergyLossSigma : " << MeasEnergyLossSigma << std::endl;
133 uint8_t energyLossType = muon.energyLossType();
135 sout <<
" EnergyLossType : " <<
static_cast<int>(energyLossType) << std::endl;
137 uint8_t nprecisionLayers = 0;
138 uint8_t nprecisionHoleLayers = 0;
139 uint8_t nphiLayers = 0;
140 uint8_t ntrigEtaLayers = 0;
141 uint8_t nphiHoleLayers = 0;
142 uint8_t ntrigEtaHoleLayers = 0;
143 uint8_t mainSector = 0;
144 uint8_t secondSector = 0;
145 if (muon.primaryTrackParticleLink().isValid()) {
154 sout <<
" No valid primaryTrackParticleLink for this muon" << std::endl;
158 sout <<
" Station Layers: precision " <<
static_cast<int>(nprecisionLayers) <<
" holes " <<
static_cast<int>(nprecisionHoleLayers)
159 <<
" phi " <<
static_cast<int>(nphiLayers) <<
" holes " <<
static_cast<int>(nphiHoleLayers) <<
" trigEta "
160 <<
static_cast<int>(ntrigEtaLayers) <<
" holes " <<
static_cast<int>(ntrigEtaHoleLayers) <<
" main sector "
161 <<
static_cast<int>(mainSector) <<
" secondary " <<
static_cast<int>(secondSector) << std::endl;
163 bool printMeasurements =
true;
165 if (
muon.combinedTrackParticleLink().isValid()) {
168 sout <<
" --- Combined Muon track --- " <<
print(*cbtp);
170 sout <<
" No Track link";
173 const Trk::Track* cbtr = *cbtp->
trackLink();
174 if (cbtr) sout << std::endl << m_edmPrinter->printStations(*cbtr);
175 if (cbtr && printMeasurements) sout << std::endl << m_edmPrinter->printMeasurements(*cbtr);
181 if (
muon.inDetTrackParticleLink().isValid()) {
184 sout <<
" --- InDet --- " <<
print(*idtp);
187 sout <<
" No Track link";
210 if (
muon.extrapolatedMuonSpectrometerTrackParticleLink().isValid()) {
213 sout <<
" --- Extrapolated Muon track --- " <<
print(*satp);
215 sout <<
" No Track link";
216 ATH_MSG_DEBUG(
"Extrapolated track particle without Trk::Track");
218 const Trk::Track* satr = *satp->
trackLink();
219 if (satr) sout << std::endl << m_edmPrinter->printStations(*satr);
220 if (satr && printMeasurements) sout << std::endl << m_edmPrinter->printMeasurements(*satr);
226 if (
muon.muonSpectrometerTrackParticleLink().isValid()) {
229 sout <<
" --- MuonSpectrometer track --- " <<
print(*satp);
231 sout <<
" No Track link";
234 const Trk::Track* satr = *satp->
trackLink();
235 if (satr) sout << std::endl << m_edmPrinter->printStations(*satr);
236 if (satr && printMeasurements) sout << std::endl << m_edmPrinter->printMeasurements(*satr);
259 std::ostringstream sout;
260 sout <<
"Muon Container Size :" << muons.
size() << std::endl;
262 for (
const auto *m : muons) { sout <<
print(*m); }
#define ATH_CHECK
Evaluate an expression and check for errors.
void print(char *figname, TCanvas *c1)
size_type size() const noexcept
Returns the number of elements in the collection.
bool isValid() const
Test to see if the link can be dereferenced.
const ElementLink< TrackCollection > & trackLink() const
Returns a link (which can be invalid) to the Trk::Track which was used to make this TrackParticle.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Muon_v1 Muon
Reference the current persistent version:
MuonContainer_v1 MuonContainer
Definition of the current "Muon container 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].
@ primarySector
primary sector crossed by the muon
@ secondarySector
secondary sector crossed by the muon (set to the primary if the muon only passed one sector)