21 m_trigDecisionTool(
"Trig::TrigDecisionTool/TrigDecisionTool"),
22 m_trigMatchTool(
"TrigMatchTool/TrigMatchTool"),
23 m_trigNames(std::
vector<std::string>()),
24 m_trigMatchDeltaR(0.1),
25 m_muonSelectionTool(
"CP::MuonSelectionTool/MuonSelectionTool"),
26 m_muonIDKeys(std::
vector<std::string>()),
34 m_doOppositeSignReq(false)
36 declareInterface<DerivationFramework::IAugmentationTool>(
this);
65 if (m_trigNames.size()>0) {
66 if (m_trigDecisionTool.retrieve().isFailure()) {
67 ATH_MSG_FATAL(
"Failed to retrieve tool: " << m_trigDecisionTool);
68 return StatusCode::FAILURE;
70 ATH_MSG_INFO(
"TriggerDecisionTool: " << m_trigDecisionTool);
72 if (m_trigMatchTool.empty()) {
74 return StatusCode::FAILURE;
76 CHECK(m_trigMatchTool.retrieve());
80 CHECK(m_muonSelectionTool.retrieve());
84 ATH_CHECK(m_KinkTrkDiMuMassKey.initialize());
85 ATH_CHECK(m_KinkTrkProbeMuPtKey.initialize());
87 return StatusCode::SUCCESS;
94 return StatusCode::SUCCESS;
111 msg(MSG::WARNING) <<
"No Muon container found, will skip this event" <<
endmsg;
112 return StatusCode::FAILURE;
117 msg(MSG::WARNING) <<
"No MS track container found, will skip this event" <<
endmsg;
118 return StatusCode::FAILURE;
121 for (
auto muon: *muons) {
122 if (!checkTagMuon(
muon))
continue;
123 for (
auto track: *mstracks) {
124 if (!checkMSTrack(
track))
continue;
125 if (!checkMuonTrackPair(
muon,
track))
continue;
126 diMuonTrkMass->push_back((
muon->p4()+
track->p4()).M());
127 probeMuPt->push_back(
track->pt());
131 return StatusCode::SUCCESS;
138 if (m_trigDecisionTool->isPassed(
triggers[
i]))
return true;
146 if (!passMuonQuality(
muon))
return false;
148 if (!passMuonTrigMatch(
muon, m_trigNames))
return false;
156 if (!passMSTrackQuality(
track))
return false;
163 if (std::abs(
muon->p4().DeltaPhi(
track->p4())) > m_dPhiMax)
return false;
164 if (m_doOppositeSignReq) {
165 if (
muon->charge()*
track->charge() > 0)
return false;
168 if (
mass < m_diMuonMassLow)
return false;
169 if (
mass > m_diMuonMassHigh)
return false;
176 if(
muon->pt() < m_muonPtCut )
return false;
177 if( std::abs(
muon->eta()) > m_muonEtaMax )
return false;
178 if( !m_muonSelectionTool->passedMuonCuts(*
muon) )
return false;
188 if (
track->pt() < m_trackPtCut)
return false;
189 if (std::abs(
track->eta()) > m_trackEtaMax)
return false;