diff --git a/PWGDQ/Core/VarManager.h b/PWGDQ/Core/VarManager.h index e39a7ae2aaf..6b42a762560 100644 --- a/PWGDQ/Core/VarManager.h +++ b/PWGDQ/Core/VarManager.h @@ -1178,6 +1178,11 @@ class VarManager : public TObject fgMagField = magField; } + static float GetMagneticField() + { + return fgMagField; + } + // Setup plane position for MFT-MCH matching static void SetMatchingPlane(float z) { @@ -1195,6 +1200,11 @@ class VarManager : public TObject fgzShiftFwd = z; } + static float GetZShift() + { + return fgzShiftFwd; + } + // Setup the 2 prong KFParticle static void SetupTwoProngKFParticle(float magField) { @@ -1734,8 +1744,7 @@ void VarManager::FillMuonPDca(const T& muon, const C& collision, float* values) if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) { - o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muon, collision); - o2::dataformats::GlobalFwdTrack propmuonAtDCA = PropagateMuon(muon, collision, kToDCA); + o2::dataformats::GlobalFwdTrack propmuonAtDCA = o2::aod::fwdtrackutils::propagateMuon(muon, muon, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, fgzShiftFwd, fgMagField); float dcaX = (propmuonAtDCA.getX() - collision.posX()); float dcaY = (propmuonAtDCA.getY() - collision.posY()); @@ -1758,7 +1767,7 @@ void VarManager::FillPropagateMuon(const T& muon, const C& collision, float* val } if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0 || (fillMap & MuonCovRealign) > 0) { - o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muon, collision); + o2::dataformats::GlobalFwdTrack propmuon = o2::aod::fwdtrackutils::propagateMuon(muon, muon, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, fgzShiftFwd, fgMagField); values[kPt] = propmuon.getPt(); values[kX] = propmuon.getX(); values[kY] = propmuon.getY(); @@ -1770,8 +1779,8 @@ void VarManager::FillPropagateMuon(const T& muon, const C& collision, float* val // Redo propagation only for muon tracks // propagation of MFT tracks alredy done in fwdtrack-extention task if (static_cast(muon.trackType()) > 2) { - o2::dataformats::GlobalFwdTrack propmuonAtDCA = PropagateMuon(muon, collision, kToDCA); - o2::dataformats::GlobalFwdTrack propmuonAtRabs = PropagateMuon(muon, collision, kToRabs); + o2::dataformats::GlobalFwdTrack propmuonAtDCA = o2::aod::fwdtrackutils::propagateMuon(muon, muon, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, fgzShiftFwd, fgMagField); + o2::dataformats::GlobalFwdTrack propmuonAtRabs = o2::aod::fwdtrackutils::propagateMuon(muon, muon, collision, o2::aod::fwdtrackutils::propagationPoint::kToRabs, 0, fgMagField); float dcaX = (propmuonAtDCA.getX() - collision.posX()); float dcaY = (propmuonAtDCA.getY() - collision.posY()); values[kMuonDCAx] = dcaX; @@ -1807,7 +1816,7 @@ void VarManager::FillGlobalMuonRefit(T1 const& muontrack, T2 const& mfttrack, co values = fgValues; } if constexpr ((fillMap & MuonCov) > 0 || (fillMap & ReducedMuonCov) > 0) { - o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muontrack, collision); + o2::dataformats::GlobalFwdTrack propmuon = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, fgzShiftFwd, fgMagField); double px = propmuon.getP() * sin(M_PI / 2 - atan(mfttrack.tgl())) * cos(mfttrack.phi()); double py = propmuon.getP() * sin(M_PI / 2 - atan(mfttrack.tgl())) * sin(mfttrack.phi()); double pz = propmuon.getP() * cos(M_PI / 2 - atan(mfttrack.tgl())); @@ -1832,7 +1841,7 @@ void VarManager::FillGlobalMuonRefitCov(T1 const& muontrack, T2 const& mfttrack, } if constexpr ((MuonfillMap & MuonCov) > 0) { if constexpr ((MFTfillMap & MFTCov) > 0) { - o2::dataformats::GlobalFwdTrack propmuon = PropagateMuon(muontrack, collision); + o2::dataformats::GlobalFwdTrack propmuon = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, fgzShiftFwd, fgMagField); auto mft = o2::aod::fwdtrackutils::getTrackParCovFwdShift(mfttrack, fgzShiftFwd, mftcov); o2::dataformats::GlobalFwdTrack globalRefit = o2::aod::fwdtrackutils::refitGlobalMuonCov(propmuon, mft); @@ -3166,7 +3175,7 @@ void VarManager::FillTrackCollision(T const& track, C const& collision, float* v } if constexpr ((fillMap & MuonCov) > 0 || (fillMap & MuonCovRealign) > 0 || (fillMap & ReducedMuonCov) > 0) { - o2::dataformats::GlobalFwdTrack propmuonAtDCA = PropagateMuon(track, collision, kToDCA); + o2::dataformats::GlobalFwdTrack propmuonAtDCA = o2::aod::fwdtrackutils::propagateMuon(track, track, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, fgzShiftFwd, fgMagField); float dcaX = (propmuonAtDCA.getX() - collision.posX()); float dcaY = (propmuonAtDCA.getY() - collision.posY()); @@ -3427,8 +3436,8 @@ void VarManager::FillPairPropagateMuon(T1 const& muon1, T2 const& muon2, const C if (!values) { values = fgValues; } - o2::dataformats::GlobalFwdTrack propmuon1 = PropagateMuon(muon1, collision); - o2::dataformats::GlobalFwdTrack propmuon2 = PropagateMuon(muon2, collision); + o2::dataformats::GlobalFwdTrack propmuon1 = o2::aod::fwdtrackutils::propagateMuon(muon1, muon1, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, fgzShiftFwd, fgMagField); + o2::dataformats::GlobalFwdTrack propmuon2 = o2::aod::fwdtrackutils::propagateMuon(muon2, muon2, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, fgzShiftFwd, fgMagField); float m = o2::constants::physics::MassMuon; diff --git a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx index 39cee24788c..3cf0f3911ed 100644 --- a/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMakerMC_withAssoc.cxx @@ -29,6 +29,7 @@ #include "Common/CCDB/EventSelectionParams.h" #include "Common/CCDB/RCTSelectionFlags.h" +#include "Common/Core/fwdtrackUtilities.h" #include "Common/DataModel/Centrality.h" #include "Common/DataModel/CollisionAssociationTables.h" #include "Common/DataModel/EventSelection.h" @@ -1074,8 +1075,9 @@ struct TableMakerMC { o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); if (fConfigVariousOptions.fzMatching.value < 0.) { + float bz = VarManager::GetMagneticField(); mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, fConfigVariousOptions.fzMatching.value); - muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); + muonprop = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToMatchingPlane, fConfigVariousOptions.fzMatching.value, bz); } std::vector output; std::vector inputML = matchingMlResponse.getInputFeaturesGlob(muon, muonprop, mftprop, collision); diff --git a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx index adc962dc783..4fe666b7510 100644 --- a/PWGDQ/TableProducer/tableMaker_withAssoc.cxx +++ b/PWGDQ/TableProducer/tableMaker_withAssoc.cxx @@ -31,6 +31,7 @@ #include "Common/CCDB/RCTSelectionFlags.h" #include "Common/CCDB/ctpRateFetcher.h" #include "Common/Core/Zorro.h" +#include "Common/Core/fwdtrackUtilities.h" #include "Common/DataModel/Centrality.h" #include "Common/DataModel/CollisionAssociationTables.h" #include "Common/DataModel/EventSelection.h" @@ -1479,8 +1480,9 @@ struct TableMaker { o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); o2::dataformats::GlobalFwdTrack muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); if (fConfigVariousOptions.fzMatching.value < 0.) { + float bz = VarManager::GetMagneticField(); mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, fConfigVariousOptions.fzMatching.value); - muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); + muonprop = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToMatchingPlane, fConfigVariousOptions.fzMatching.value, bz); } std::vector output; std::vector inputML = matchingMlResponse.getInputFeaturesGlob(muon, muonprop, mftprop, collision); diff --git a/PWGDQ/Tasks/mftMchMatcher.cxx b/PWGDQ/Tasks/mftMchMatcher.cxx index 12381a9cde3..322a7a1d95e 100644 --- a/PWGDQ/Tasks/mftMchMatcher.cxx +++ b/PWGDQ/Tasks/mftMchMatcher.cxx @@ -14,6 +14,7 @@ #include "PWGDQ/Core/VarManager.h" +#include "Common/Core/fwdtrackUtilities.h" #include "Common/DataModel/CollisionAssociationTables.h" #include "Common/DataModel/EventSelection.h" #include "Common/DataModel/Multiplicity.h" @@ -651,9 +652,11 @@ struct mftMchMatcher { o2::track::TrackParCovFwd mftprop = VarManager::FwdToTrackPar(mfttrack, mfttrackcov); o2::track::TrackParCovFwd muonprop = VarManager::FwdToTrackPar(muontrack, muontrack); if (fzMatching.value < 0.) { + float bz = VarManager::GetMagneticField(); mftprop = VarManager::PropagateFwd(mfttrack, mfttrackcov, fzMatching.value); - muonprop = VarManager::PropagateMuon(muontrack, collision, VarManager::kToMatching); + muonprop = o2::aod::fwdtrackutils::propagateMuon(muontrack, muontrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToMatchingPlane, fzMatching.value, bz); } + auto muonpropCov = muonprop.getCovariances(); auto mftpropCov = mftprop.getCovariances();