diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index c313adaf552..f5779cb204d 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -2049,6 +2049,18 @@ void VarManager::FillTrackCollision(T const& track, C const& collision, float* v } } } + if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) { + + o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(track, collision); + o2::dataformats::GlobalFwdTrack propmuonAtDCA = PropagateMuon(track, collision, kToDCA); + + float dcaX = (propmuonAtDCA.getX() - collision.posX()); + float dcaY = (propmuonAtDCA.getY() - collision.posY()); + float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY); + values[kMuonPDca] = track.p() * dcaXY; + values[kMuonDCAx] = dcaX; + values[kMuonDCAy] = dcaY; + } } template diff --git a/PWGDQ/TableProducer/tableMaker.cxx b/PWGDQ/TableProducer/tableMaker.cxx index fdf51557de7..9f96e5c5f8b 100644 --- a/PWGDQ/TableProducer/tableMaker.cxx +++ b/PWGDQ/TableProducer/tableMaker.cxx @@ -668,9 +668,9 @@ struct TableMaker { // recalculte pDca for global muon tracks if (static_cast(muon.trackType()) < 2) { auto const& matchMCH = muon.template matchMCHTrack_as(); - VarManager::FillMuonPDca(matchMCH, collision); + VarManager::FillTrackCollision(matchMCH, collision); } else if (static_cast(muon.trackType()) > 2) { - VarManager::FillMuonPDca(muon, collision); + VarManager::FillTrackCollision(muon, collision); } if (fPropMuon) { @@ -1039,9 +1039,9 @@ struct TableMaker { // recalculte pDca for global muon tracks if (static_cast(muon.trackType()) < 2) { auto const& matchMCH = tracksMuon.rawIteratorAt(static_cast(muon.matchMCHTrackId())); - VarManager::FillMuonPDca(matchMCH, collision); + VarManager::FillTrackCollision(matchMCH, collision); } else if (static_cast(muon.trackType()) > 2) { - VarManager::FillMuonPDca(muon, collision); + VarManager::FillTrackCollision(muon, collision); } if (fPropMuon) { @@ -1545,7 +1545,7 @@ struct TableMaker { { for (auto& collision : collisions) { auto muonIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); - fullSkimmingIndices(collision, bcs, nullptr, tracksMuon, nullptr, muonIdsThisCollision); + fullSkimmingIndices(collision, bcs, nullptr, tracksMuon, nullptr, muonIdsThisCollision); } } @@ -1554,7 +1554,7 @@ struct TableMaker { { for (auto& collision : collisions) { auto muonIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); - fullSkimmingIndices(collision, bcs, nullptr, tracksMuon, nullptr, muonIdsThisCollision); + fullSkimmingIndices(collision, bcs, nullptr, tracksMuon, nullptr, muonIdsThisCollision); } } @@ -1563,7 +1563,7 @@ struct TableMaker { { for (auto& collision : collisions) { auto muonIdsThisCollision = fwdtrackIndices.sliceBy(fwdtrackIndicesPerCollision, collision.globalIndex()); - fullSkimmingIndices(collision, bcs, nullptr, tracksMuon, nullptr, muonIdsThisCollision); + fullSkimmingIndices(collision, bcs, nullptr, tracksMuon, nullptr, muonIdsThisCollision); } } diff --git a/PWGDQ/TableProducer/tableMakerMC.cxx b/PWGDQ/TableProducer/tableMakerMC.cxx index 7ad83d257ac..df6e47f8818 100644 --- a/PWGDQ/TableProducer/tableMakerMC.cxx +++ b/PWGDQ/TableProducer/tableMakerMC.cxx @@ -1254,9 +1254,9 @@ struct TableMakerMC { // recalculte pDca for global muon tracks if (static_cast(muon.trackType()) < 2) { auto const& matchMCH = tracksMuon.rawIteratorAt(static_cast(muon.matchMCHTrackId())); - VarManager::FillMuonPDca(matchMCH, collision); + VarManager::FillTrackCollision(matchMCH, collision); } else if (static_cast(muon.trackType()) > 2) { - VarManager::FillMuonPDca(muon, collision); + VarManager::FillTrackCollision(muon, collision); } if (fPropMuon) { VarManager::FillPropagateMuon(muon, collision); @@ -1595,28 +1595,28 @@ struct TableMakerMC { soa::Filtered const& tracksMuon, aod::McCollisions const& mcEvents, aod::McParticles_001 const& mcTracks, aod::FwdTrackAssoc const& fwdtrackIndices) { - fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); + fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); } void processAssociatedMuonOnlyWithCov(MyEvents const& collisions, aod::BCsWithTimestamps const& bcs, - soa::Filtered const& tracksMuon, + soa::Filtered const& tracksMuon, aod::McCollisions const& mcEvents, aod::McParticles_001 const& mcTracks, aod::FwdTrackAssoc const& fwdtrackIndices) { - fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); + fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); } - void processAssociatedMuonOnlyWithCovAndCent(MyEvents const& collisions, aod::BCsWithTimestamps const& bcs, - soa::Filtered const& tracksMuon, + void processAssociatedMuonOnlyWithCovAndCent(MyEventsWithCent const& collisions, aod::BCsWithTimestamps const& bcs, + soa::Filtered const& tracksMuon, aod::McCollisions const& mcEvents, aod::McParticles_001 const& mcTracks, aod::FwdTrackAssoc const& fwdtrackIndices) { - fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); + fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); } - void processAssociatedMuonOnlyWithCovAndMults(MyEvents const& collisions, aod::BCsWithTimestamps const& bcs, - soa::Filtered const& tracksMuon, + void processAssociatedMuonOnlyWithCovAndMults(MyEventsWithCentAndMults const& collisions, aod::BCsWithTimestamps const& bcs, + soa::Filtered const& tracksMuon, aod::McCollisions const& mcEvents, aod::McParticles_001 const& mcTracks, aod::FwdTrackAssoc const& fwdtrackIndices) { - fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); + fullSkimmingIndices(collisions, bcs, nullptr, tracksMuon, mcEvents, mcTracks, nullptr, fwdtrackIndices); } // Produce muon tables only for ambiguous tracks studies -------------------------------------------------------------------------------------- void processAmbiguousMuonOnly(MyEvents const& collisions, aod::BCsWithTimestamps const& bcs,