55 if ( (*muSAEL)->muonType() != xAOD::Muon::MuonType::MuonStandAlone )
continue;
61 EFSAPt = (*muSAEL)->pt()/1e3 * (*muSAEL)->charge();
62 EFSAEta = (*muSAEL)->eta();
63 EFSAPhi = (*muSAEL)->phi();
77 if ( (*muCBEL)->muonType() != xAOD::Muon::MuonType::Combined )
continue;
83 EFCBPt = (*muCBEL)->pt()/1e3 * (*muCBEL)->charge();
84 EFCBEta = (*muCBEL)->eta();
85 EFCBPhi = (*muCBEL)->phi();
98 if ( (*muIsoEL)->muonType() != xAOD::Muon::MuonType::Combined )
continue;
105 float ptcone30 = muonIso30(*(*muIsoEL));
108 PtCone03 = ptcone30/1e3;
109 PtCone03overMuonPt = ptcone30 / (*muIsoEL)->pt();
112 fill(
m_group+
"_"+chain, PtCone03, PtCone03overMuonPt);
116 return StatusCode::SUCCESS;
122 ATH_MSG_DEBUG (
"Filling histograms for " << name() <<
"...");
126 const xAOD::TrackParticle* OfflineSATrack = mu->trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
127 const xAOD::TrackParticle* OfflineCBTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle);
131 if(
m_doEFSA.at(chain) && OfflineSATrack ){
153 OfflineSAPt = OfflineSATrack->
pt()/1e3 * OfflineSATrack->
charge();
154 OfflineSAEta = OfflineSATrack->
eta();
155 OfflineSAPhi = OfflineSATrack->
phi();
160 if( EFSAMuonLinkInfo.
isValid() ){
167 MatchedEFSAPt = EFSATrack->
pt()/1e3 * EFSATrack->
charge();
168 MatchedEFSAEta = EFSATrack->
eta();
169 MatchedEFSAPhi = EFSATrack->
phi();
172 SAdPt = std::abs(OfflineSAPt) - std::abs(MatchedEFSAPt);
173 SAdEta = OfflineSAEta - MatchedEFSAEta;
174 SAdPhi = OfflineSAPhi - MatchedEFSAPhi;
179 const xAOD::Muon *OfflineSAmatchedL2SA {
nullptr};
180 if (chain.contains(
"newFast")) {
187 OfflineSAmatchedL2SA =
m_matchTool->matchFastRecoSAtoOff(ctx, (*L2SAEL));
195 OfflineSAmatchedL2SA =
m_matchTool->matchL2SAtoOff(ctx, (*L2SAEL));
198 if (OfflineSAmatchedL2SA){
199 const xAOD::TrackParticle* OfflineSATrackmatchedL2SA = OfflineSAmatchedL2SA->
trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
200 if ( OfflineSATrackmatchedL2SA ){
202 OfflineSAmatchedL2SAPt = OfflineSATrackmatchedL2SA->
pt()/1e3 * OfflineSATrackmatchedL2SA->
charge();
203 OfflineSAmatchedL2SAEta = OfflineSATrackmatchedL2SA->
eta();
204 OfflineSAmatchedL2SAPhi = OfflineSATrackmatchedL2SA->
phi();
209 fill(
m_group+
"_"+chain, OfflineSAPt, OfflineSAEta, OfflineSAPhi, OfflineSAmatchedL2SAPt, OfflineSAmatchedL2SAEta, OfflineSAmatchedL2SAPhi,
210 MatchedEFSAPt, MatchedEFSAEta, MatchedEFSAPhi, SAdPt, SAdEta, SAdPhi, SAdR, matchedEFSA, matchedL2SA);
215 if(
m_doEFCB.at(chain) && OfflineCBTrack ){
237 OfflineCBPt = OfflineCBTrack->
pt()/1e3 * OfflineCBTrack->
charge();
238 OfflineCBEta = OfflineCBTrack->
eta();
239 OfflineCBPhi = OfflineCBTrack->
phi();
244 if( EFCBMuonLinkInfo.
isValid() ){
249 MatchedEFCBPt = EFCBTrack->
pt()/1e3 * EFCBTrack->
charge();
250 MatchedEFCBEta = EFCBTrack->
eta();
251 MatchedEFCBPhi = EFCBTrack->
phi();
254 CBdPt = std::abs(OfflineCBPt) - std::abs(MatchedEFCBPt);
255 CBdEta = OfflineCBEta - MatchedEFCBEta;
256 CBdPhi = OfflineCBPhi - MatchedEFCBPhi;
263 if(L2CBLinkInfo.size() >1) {
264 ATH_MSG_DEBUG(
"More than one L2CB muon associated to EFCBMuon");
266 ATH_CHECK( L2CBLinkInfo.at(0).isValid() );
271 if (OfflineCBmatchedL2CB){
273 if ( OfflineCBTrackmatchedL2CB ){
275 OfflineCBmatchedL2CBPt = OfflineCBTrackmatchedL2CB->
pt()/1e3 * OfflineCBTrackmatchedL2CB->
charge();
276 OfflineCBmatchedL2CBEta = OfflineCBTrackmatchedL2CB->
eta();
277 OfflineCBmatchedL2CBPhi = OfflineCBTrackmatchedL2CB->
phi();
282 fill(
m_group+
"_"+chain, OfflineCBPt, OfflineCBEta, OfflineCBPhi, OfflineCBmatchedL2CBPt, OfflineCBmatchedL2CBEta, OfflineCBmatchedL2CBPhi,
283 MatchedEFCBPt, MatchedEFCBEta, MatchedEFCBPhi, CBdPt, CBdEta, CBdPhi, CBdR, matchedEFCB, matchedL2CB);
288 float OfflineIsoptcone30=-1.;
297 OfflineIsoPtCone03 = OfflineIsoptcone30/1e3;
298 OfflineIsoPtCone03overMuonPt = OfflineIsoptcone30 / mu->pt();
302 if( EFIsoMuonLinkInfo.
isValid() ){
306 float EFIsoptcone30 = muonIso30(*(*EFIsoMuon));
309 MatchedEFIsoPtCone03 = EFIsoptcone30/1e3;
310 MatchedEFIsoPtCone03overMuonPt = EFIsoptcone30 / (*EFIsoMuon)->pt();
313 fill(
m_group+
"_"+chain, OfflineIsoPtCone03, OfflineIsoPtCone03overMuonPt, MatchedEFIsoPtCone03, MatchedEFIsoPtCone03overMuonPt);
316 return StatusCode::SUCCESS;
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .).
virtual double pt() const override final
The transverse momentum ( ) of the particle.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.