Skip to content

Commit 65892d3

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 5d5d9cc commit 65892d3

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

PWGDQ/Tasks/qaMatching.cxx

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1599,30 +1599,30 @@ struct QaMatching {
15991599
}
16001600

16011601
template <typename TMCH, typename TMFT, class C>
1602-
o2::dataformats::GlobalFwdTrack propagateToVertexMft(const TMFT& muon,
1602+
o2::dataformats::GlobalFwdTrack propagateToVertexMft(const TMFT& mftTrack,
16031603
const TMCH& mchTrack,
16041604
const C& collision)
16051605
{
16061606
// extrapolation with MCH tools
16071607
auto mchTrackAtMFT = mExtrap.FwdtoMCH(fwdToTrackPar(mchTrack));
1608-
o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrackAtMFT, muon.z());
1608+
o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrackAtMFT, mftTrack.z());
16091609

1610-
auto muonTrackProp = mExtrap.FwdtoMCH(fwdToTrackPar(muon));
1610+
auto mftTrackProp = mExtrap.FwdtoMCH(fwdToTrackPar(mftTrack));
16111611

16121612
// update global track momentum from the MCH track
1613-
double pRatio = muonTrackProp.p() / mchTrackAtMFT.p();
1614-
double newInvBendMom = muonTrackProp.getInverseBendingMomentum() * pRatio;
1615-
muonTrackProp.setInverseBendingMomentum(newInvBendMom);
1616-
muonTrackProp.setCharge(mchTrackAtMFT.getCharge());
1613+
double pRatio = mftTrackProp.p() / mchTrackAtMFT.p();
1614+
double newInvBendMom = mftTrackProp.getInverseBendingMomentum() * pRatio;
1615+
mftTrackProp.setInverseBendingMomentum(newInvBendMom);
1616+
mftTrackProp.setCharge(mchTrackAtMFT.getCharge());
16171617

1618-
o2::mch::TrackExtrap::extrapToVertex(muonTrackProp,
1618+
o2::mch::TrackExtrap::extrapToVertex(mftTrackProp,
16191619
collision.posX(),
16201620
collision.posY(),
16211621
collision.posZ(),
16221622
collision.covXX(),
16231623
collision.covYY());
16241624

1625-
return mExtrap.MCHtoFwd(muonTrackProp);
1625+
return mExtrap.MCHtoFwd(mftTrackProp);
16261626
}
16271627

16281628
template <class MCP>
@@ -2440,7 +2440,7 @@ struct QaMatching {
24402440
void fillDimuonPlotsMc(const CollisionInfo& collisionInfo,
24412441
C const& collisions,
24422442
TMUON const& muonTracks,
2443-
TMFT const& /*mftTracks*/)
2443+
TMFT const& mftTracks)
24442444
{
24452445
std::vector<MuonPair> muonPairs;
24462446
std::vector<GlobalMuonPair> globalMuonPairs;
@@ -2476,12 +2476,12 @@ struct QaMatching {
24762476

24772477
auto const& collision = collisions.rawIteratorAt(muon1.first);
24782478

2479-
auto const& muonTrack1 = muonTracks.rawIteratorAt(candidates1[0].globalTrackId);
2480-
auto const& muonTrack2 = muonTracks.rawIteratorAt(candidates2[0].globalTrackId);
2479+
auto const& mchTrack1 = muonTracks.rawIteratorAt(candidates1[0].muonTrackId);
2480+
auto const& mchTrack2 = muonTracks.rawIteratorAt(candidates2[0].muonTrackId);
24812481
auto matchScore1 = candidates1[0].matchScore;
24822482
auto matchScore2 = candidates2[0].matchScore;
2483-
auto const& mchTrack1 = muonTrack1.template matchMCHTrack_as<TMUON>();
2484-
auto const& mchTrack2 = muonTrack2.template matchMCHTrack_as<TMUON>();
2483+
auto const& mftTrack1 = mftTracks.rawIteratorAt(candidates1[0].mftTrackId);
2484+
auto const& mftTrack2 = mftTracks.rawIteratorAt(candidates2[0].mftTrackId);
24852485
int sign1 = mchTrack1.sign();
24862486
int sign2 = mchTrack2.sign();
24872487

@@ -2507,8 +2507,8 @@ struct QaMatching {
25072507

25082508
double massMCH = getMuMuInvariantMass(propagateToVertexMch(mchTrack1, collision),
25092509
propagateToVertexMch(mchTrack2, collision));
2510-
double mass = getMuMuInvariantMass(propagateToVertexMch(muonTrack1, collision),
2511-
propagateToVertexMch(muonTrack2, collision));
2510+
double mass = getMuMuInvariantMass(propagateToVertexMft(mftTrack1, mchTrack1, collision),
2511+
propagateToVertexMft(mftTrack2, mchTrack2, collision));
25122512
registryDimuon.get<TH1>(HIST("dimuon/invariantMass_MuonKine_GlobalMuonCuts"))->Fill(massMCH);
25132513
registryDimuon.get<TH1>(HIST("dimuon/invariantMass_ScaledMftKine_GlobalMuonCuts"))->Fill(mass);
25142514
registryDimuon.get<TH2>(HIST("dimuon/MC/invariantMass_MuonKine_GlobalMuonCuts_vs_match_type"))->Fill(massMCH, matchType);

0 commit comments

Comments
 (0)