11 #endif // not XAOD_ANALYSIS
18 m_sType(std::move(sType))
30 Double_t ptBins[] = {5, 10, 25, 60, 100, 200, 1000};
31 Double_t
etaBins[] = {-2.7, -2.5, -1.7, -1.05, -0.1, 0.1, 1.05, 1.7, 2.5, 2.7};
34 const unsigned int nptBins =
sizeof(ptBins)/
sizeof(ptBins[0])-1;
35 const unsigned int netaBins =
sizeof(
etaBins)/
sizeof(
etaBins[0])-1;
51 if (!(muon.muonType()==
xAOD::Muon::Combined || muon.muonType()==xAOD::Muon::SegmentTagged || muon.muonType()==xAOD::Muon::MuonStandAlone))
return;
54 if (!muPrimaryTrk)
return;
56 const xAOD::TrackParticle* msExtrapTrk = muon.trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
57 if (!msExtrapTrk) msExtrapTrk = muon.trackParticle(xAOD::Muon::MuonSpectrometerTrackParticle);
59 float eta = truthMu.
eta();
60 float pt = 0.001*truthMu.
pt();
62 float pTruth = truthMu.
p4().P();
63 float pCB = muPrimaryTrk->
p4().P();
65 if (msExtrapTrk) pME = msExtrapTrk->
p4().P();
67 if (msTrk) pMS = msTrk->
p4().P();
70 if (muon.parameter(eloss,xAOD::Muon::MeasEnergyLoss)) {;}
81 pTruthMS = pvecTruthMS.mag();
84 if (muon.muonType()!=xAOD::Muon::SegmentTagged) {
86 float dpCB = 0.001*(pCB-pTruth);
91 float dpME = 0.001*(pME-pTruth);
95 if (pMS && pTruthMS) {
96 float dpMS = 0.001*(pME - pMS - pTruth + pTruthMS);
106 if (eloss>2000 && pTruthMS && pTruth) {
107 float dpEloss = 0.001*(pTruth - pTruthMS - eloss);