Skip to content

Commit bc00c9e

Browse files
committed
[PWGDQ] use correct momentum scaling when computing invariant mass
The mu+mu- invariant mass from global forward tracks in now computed by extrapolating the MFT tracks with the momentum rescaled to the MCH one (momentum scaling method), while previously it was computed by directly extrapolating the global refitted tracks.
1 parent 685cf1f commit bc00c9e

1 file changed

Lines changed: 16 additions & 14 deletions

File tree

PWGDQ/Tasks/qaMatching.cxx

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,30 +1594,30 @@ struct QaMatching {
15941594
}
15951595

15961596
template <typename TMCH, typename TMFT, class C>
1597-
o2::dataformats::GlobalFwdTrack propagateToVertexMft(const TMFT& muon,
1597+
o2::dataformats::GlobalFwdTrack propagateToVertexMft(const TMFT& mftTrack,
15981598
const TMCH& mchTrack,
15991599
const C& collision)
16001600
{
16011601
// extrapolation with MCH tools
16021602
auto mchTrackAtMFT = mExtrap.FwdtoMCH(fwdToTrackPar(mchTrack));
1603-
o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrackAtMFT, muon.z());
1603+
o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrackAtMFT, mftTrack.z());
16041604

1605-
auto muonTrackProp = mExtrap.FwdtoMCH(fwdToTrackPar(muon));
1605+
auto mftTrackProp = mExtrap.FwdtoMCH(fwdToTrackPar(mftTrack));
16061606

16071607
// update global track momentum from the MCH track
1608-
double pRatio = muonTrackProp.p() / mchTrackAtMFT.p();
1609-
double newInvBendMom = muonTrackProp.getInverseBendingMomentum() * pRatio;
1610-
muonTrackProp.setInverseBendingMomentum(newInvBendMom);
1611-
muonTrackProp.setCharge(mchTrackAtMFT.getCharge());
1608+
double pRatio = mftTrackProp.p() / mchTrackAtMFT.p();
1609+
double newInvBendMom = mftTrackProp.getInverseBendingMomentum() * pRatio;
1610+
mftTrackProp.setInverseBendingMomentum(newInvBendMom);
1611+
mftTrackProp.setCharge(mchTrackAtMFT.getCharge());
16121612

1613-
o2::mch::TrackExtrap::extrapToVertex(muonTrackProp,
1613+
o2::mch::TrackExtrap::extrapToVertex(mftTrackProp,
16141614
collision.posX(),
16151615
collision.posY(),
16161616
collision.posZ(),
16171617
collision.covXX(),
16181618
collision.covYY());
16191619

1620-
return mExtrap.MCHtoFwd(muonTrackProp);
1620+
return mExtrap.MCHtoFwd(mftTrackProp);
16211621
}
16221622

16231623
template <class MCP>
@@ -2537,7 +2537,7 @@ struct QaMatching {
25372537
void fillDimuonPlotsMc(const CollisionInfo& collisionInfo,
25382538
C const& collisions,
25392539
TMUON const& muonTracks,
2540-
TMFT const& /*mftTracks*/)
2540+
TMFT const& mftTracks)
25412541
{
25422542
std::vector<MuonPair> muonPairs;
25432543
std::vector<GlobalMuonPair> globalMuonPairs;
@@ -2577,8 +2577,10 @@ struct QaMatching {
25772577
auto const& muonTrack2 = muonTracks.rawIteratorAt(candidates2[0].globalTrackId);
25782578
auto matchScore1 = candidates1[0].matchScore;
25792579
auto matchScore2 = candidates2[0].matchScore;
2580-
auto const& mchTrack1 = muonTrack1.template matchMCHTrack_as<TMUON>();
2581-
auto const& mchTrack2 = muonTrack2.template matchMCHTrack_as<TMUON>();
2580+
auto const& mchTrack1 = muonTracks.rawIteratorAt(candidates1[0].muonTrackId);
2581+
auto const& mchTrack2 = muonTracks.rawIteratorAt(candidates2[0].muonTrackId);
2582+
auto const& mftTrack1 = mftTracks.rawIteratorAt(candidates1[0].mftTrackId);
2583+
auto const& mftTrack2 = mftTracks.rawIteratorAt(candidates2[0].mftTrackId);
25822584
int sign1 = mchTrack1.sign();
25832585
int sign2 = mchTrack2.sign();
25842586

@@ -2604,8 +2606,8 @@ struct QaMatching {
26042606

26052607
double massMCH = getMuMuInvariantMass(propagateToVertexMch(mchTrack1, collision),
26062608
propagateToVertexMch(mchTrack2, collision));
2607-
double mass = getMuMuInvariantMass(propagateToVertexMch(muonTrack1, collision),
2608-
propagateToVertexMch(muonTrack2, collision));
2609+
double mass = getMuMuInvariantMass(propagateToVertexMft(mftTrack1, mchTrack1, collision),
2610+
propagateToVertexMft(mftTrack2, mchTrack2, collision));
26092611
registryDimuon.get<TH1>(HIST("dimuon/invariantMass_MuonKine_GlobalMuonCuts"))->Fill(massMCH);
26102612
registryDimuon.get<TH1>(HIST("dimuon/invariantMass_ScaledMftKine_GlobalMuonCuts"))->Fill(mass);
26112613
registryDimuon.get<TH2>(HIST("dimuon/MC/invariantMass_MuonKine_GlobalMuonCuts_vs_match_type"))->Fill(massMCH, matchType);

0 commit comments

Comments
 (0)