15#include "AthLinks/ElementLink.h"
16#include "GaudiKernel/ConcurrencyFlags.h"
28 declareInterface<MuonCombinedDebuggerTool>(
this);
32 ATH_MSG_INFO(
"initialize " << name() <<
" for debugging purposes of the muon reconstruction");
36 if (Gaudi::Concurrency::ConcurrencyFlags::numThreads() > 1) {
38 << Gaudi::Concurrency::ConcurrencyFlags::numThreads()
39 <<
", to run this tool. Which should never happen as the results will be a total desaster");
40 return StatusCode::FAILURE;
43 return StatusCode::SUCCESS;
48 ATH_MSG_WARNING(
"bookBranches() must be called once only! No tree booked!");
162 unsigned int imu = 0;
163 const EventContext& ctx = Gaudi::Hive::currentContext();
164 for (
const auto* muonCandidate : muonCandidates) {
165 bool hasExtr = muonCandidate->extrapolatedTrack();
167 for (
const auto* inDetCandidate : inDetCandidates) {
169 double outerMatchChi2 =
m_matchQuality->outerMatchChi2(*inDetCandidate->indetTrackParticle().track(),
170 muonCandidate->muonSpectrometerTrack(), ctx);
172 m_matchQuality->outerMatchDOF(*inDetCandidate->indetTrackParticle().track(), muonCandidate->muonSpectrometerTrack());
173 double outerMatchProb =
m_matchQuality->outerMatchProbability(*inDetCandidate->indetTrackParticle().track(),
174 muonCandidate->muonSpectrometerTrack(), ctx);
175 double innerMatchChi2 = -1;
176 int innerMatchDoF = -1;
177 double innerMatchProb = -1;
179 innerMatchChi2 =
m_matchQuality->innerMatchChi2(*inDetCandidate->indetTrackParticle().track(),
180 *muonCandidate->extrapolatedTrack(), ctx);
182 m_matchQuality->innerMatchDOF(*inDetCandidate->indetTrackParticle().track(), *muonCandidate->extrapolatedTrack());
183 innerMatchProb =
m_matchQuality->innerMatchProbability(*inDetCandidate->indetTrackParticle().track(),
184 *muonCandidate->extrapolatedTrack(), ctx);
234 for (
const auto* inDetCandidate : inDetCandidates) {
236 m_idtrack_sur_x.push_back(inDetCandidate->indetTrackParticle().track()->perigeeParameters()->associatedSurface().center().x());
237 m_idtrack_sur_y.push_back(inDetCandidate->indetTrackParticle().track()->perigeeParameters()->associatedSurface().center().y());
238 m_idtrack_sur_z.push_back(inDetCandidate->indetTrackParticle().track()->perigeeParameters()->associatedSurface().center().z());
239 m_idtrack_d0.push_back(inDetCandidate->indetTrackParticle().track()->perigeeParameters()->parameters()[
Trk::d0]);
240 m_idtrack_z0.push_back(inDetCandidate->indetTrackParticle().track()->perigeeParameters()->parameters()[
Trk::z0]);
241 m_idtrack_phi0.push_back(inDetCandidate->indetTrackParticle().track()->perigeeParameters()->parameters()[
Trk::phi0]);
244 const AmgSymMatrix(5)* covid = inDetCandidate->indetTrackParticle().track()->perigeeParameters()->covariance();
261 truthParticleLinkAcc(
"truthParticleLink");
262 if (truthParticleLinkAcc.
isAvailable(inDetCandidate->indetTrackParticle())) {
264 truthParticleLinkAcc(inDetCandidate->indetTrackParticle());
368 for (
const auto* muonCandidate : muonCandidates) {
369 bool hasExtr = muonCandidate->extrapolatedTrack();
370 const Trk::TrackParameters* muonPars = hasExtr ? muonCandidate->extrapolatedTrack()->perigeeParameters()
371 : muonCandidate->muonSpectrometerTrack().perigeeParameters();
378 m_mstrack_sur_x.push_back(muonCandidate->muonSpectrometerTrack().perigeeParameters()->associatedSurface().center().x());
379 m_mstrack_sur_y.push_back(muonCandidate->muonSpectrometerTrack().perigeeParameters()->associatedSurface().center().y());
380 m_mstrack_sur_z.push_back(muonCandidate->muonSpectrometerTrack().perigeeParameters()->associatedSurface().center().z());
381 m_mstrack_d0.push_back(muonCandidate->muonSpectrometerTrack().perigeeParameters()->parameters()[
Trk::d0]);
382 m_mstrack_z0.push_back(muonCandidate->muonSpectrometerTrack().perigeeParameters()->parameters()[
Trk::z0]);
386 const AmgSymMatrix(5)* cov = muonCandidate->muonSpectrometerTrack().perigeeParameters()->covariance();
438 truthParticleLinkAcc(
"truthParticleLink");
439 if (truthParticleLinkAcc.
isAvailable(**muonCandidate->muonSpectrometerTrackLink())) {
441 truthParticleLinkAcc(**muonCandidate->muonSpectrometerTrackLink());
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
Helper class to provide constant type-safe access to aux data.
#define AmgSymMatrix(dim)
DataVector< MuonCombined::InDetCandidate > InDetCandidateCollection
This typedef represents a collection of InDetCandidate objects.
DataVector< MuonCombined::MuonCandidate > MuonCandidateCollection
This typedef represents a collection of MuonCandidate objects.
size_type size() const noexcept
Returns the number of elements in the collection.
ElementLink implementation for ROOT usage.
bool isValid() const
Test to see if the link can be dereferenced.
Helper class to provide constant type-safe access to aux data.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
virtual const Surface & associatedSurface() const override=0
Access to the Surface associated to the Parameters.
const Amg::Vector3D & center() const
Returns the center position of the Surface.
constexpr int UNDEFINED_ID
The MuonTagToSegMap is an auxillary construct that links the MuonSegments associated with a combined ...
ParametersBase< TrackParametersDim, Charged > TrackParameters