17 #include "GaudiKernel/ConcurrencyFlags.h"
25 declareInterface<IMuonCombinedTool>(
this);
31 debugger_tool->
fillBranches(muonCandidates, inDetCandidates);
43 return StatusCode::SUCCESS;
48 const EventContext& ctx)
const {
50 if (inDetCandidates.
empty())
return;
51 if (muonCandidates.
empty())
return;
53 ATH_MSG_ERROR(
"Number of tag maps does not match number of tag tools");
62 muonCandidate->extrapolatedTrack() ? *muonCandidate->extrapolatedTrack() : muonCandidate->muonSpectrometerTrack();
65 std::vector<const InDetCandidate*> associatedIdCandidates;
66 associate(*muonCandidate, inDetCandidates, associatedIdCandidates);
67 if (associatedIdCandidates.empty())
continue;
68 ATH_MSG_DEBUG(
"Associated ID candidates " << associatedIdCandidates.size());
73 tool->combine(*muonCandidate, associatedIdCandidates, *(tagMaps.at(
count)), combinedTracks, METracks, ctx);
80 std::vector<const InDetCandidate*>& associatedIdCandidates)
const {
81 associatedIdCandidates.clear();
84 associatedIdCandidates.push_back(indetCand);
92 if (!ms_trk && !msoe_trk) {
114 if (!msoe_entrance) msoe_entrance = ms_entrance;
115 if (!ms_entrance) ms_entrance = msoe_entrance;
119 if ((!id_exit && !id_extension) || !ms_entrance) {
122 if (!id_trk)
ATH_MSG_WARNING(
"Trk::Track not found for InDetTrack candidate!");
129 const double deltaEta = std::abs(muon_p3.eta() - idtr_p3.eta());
132 const double muonPt = muon_p3.perp();
133 const double indetPt = idtr_p3.perp();
134 const double ptBal = muonPt > 0. ? std::abs(muonPt - indetPt) / muonPt : 1.;
138 const Amg::Vector3D id_ex_pos = (id_extension ? id_extension : id_exit->trackParameters())->position();
139 const Amg::Vector3D ms_en_pos = ms_entrance->trackParameters()->position();
140 const Amg::Vector3D msoe_en_pos = msoe_entrance->trackParameters()->position();
143 const double deltaEta = std::abs(id_ex_pos.eta() - ms_en_pos.eta());
146 const double deltaEtaMSOE = std::abs(id_ex_pos.eta() - msoe_en_pos.eta());
157 const double muonPt = muonPars->
momentum().perp();
159 const double ptBal = muonPt > 0. ? std::abs(muonPt - indetPt) / muonPt : 1.;