Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 13 additions & 17 deletions PWGDQ/Tasks/muonGlobalAlignment.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1301,8 +1301,8 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
collision.posX(),
collision.posY(),
collision.posZ(),
collision.covXX(),
collision.covYY());
std::sqrt(collision.covXX()),
std::sqrt(collision.covYY()));
}

template <class TMFT>
Expand Down Expand Up @@ -1449,24 +1449,20 @@ struct muonGlobalAlignment { // o2-linter: disable=name/workflow-file,name/struc
{
// extrapolation with MCH tools
auto mchTrackAtMFT = FwdtoMCH(mchTrackPar);
o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrackAtMFT, mftTrackPar.getZ());

auto mftTrackProp = FwdtoMCH(mftTrackPar);
o2::mch::TrackExtrap::extrapToVertex(mchTrackAtMFT,
mftTrackPar.getX(),
mftTrackPar.getY(),
mftTrackPar.getZ(),
std::sqrt(mftTrackPar.getSigma2X()),
std::sqrt(mftTrackPar.getSigma2Y()));

// update global track momentum from the MCH track
double pRatio = mftTrackProp.p() / mchTrackAtMFT.p();
double newInvBendMom = mftTrackProp.getInverseBendingMomentum() * pRatio;
mftTrackProp.setInverseBendingMomentum(newInvBendMom);
mftTrackProp.setCharge(mchTrackAtMFT.getCharge());
auto fwdTrackProp = fwdtrackutils::refitGlobalMuonCov(MCHtoFwd(mchTrackAtMFT), mftTrackPar);

o2::mch::TrackExtrap::extrapToVertex(mftTrackProp,
collision.posX(),
collision.posY(),
collision.posZ(),
collision.covXX(),
collision.covYY());
auto geoMan = o2::base::GeometryManager::meanMaterialBudget(fwdTrackProp.getX(), fwdTrackProp.getY(), fwdTrackProp.getZ(), collision.posX(), collision.posY(), collision.posZ());
auto x2x0 = static_cast<float>(geoMan.meanX2X0);
fwdTrackProp.propagateToVtxhelixWithMCS(collision.posZ(), {collision.posX(), collision.posY()}, {collision.covXX(), collision.covYY()}, mBzAtMftCenter, x2x0);

return MCHtoFwd(mftTrackProp);
return fwdTrackProp;
}

void getMuonPairs(const CollisionInfo& collisionInfo,
Expand Down
34 changes: 15 additions & 19 deletions PWGDQ/Tasks/qaMatching.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
#include "PWGDQ/Core/VarManager.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"
Expand Down Expand Up @@ -1640,8 +1641,8 @@ struct QaMatching {
collision.posX(),
collision.posY(),
collision.posZ(),
collision.covXX(),
collision.covYY());
std::sqrt(collision.covXX()),
std::sqrt(collision.covYY()));
}

o2::dataformats::GlobalFwdTrack propagateToVertexMft(o2::dataformats::GlobalFwdTrack muon,
Expand All @@ -1667,8 +1668,8 @@ struct QaMatching {
collision.posX(),
collision.posY(),
collision.posZ(),
collision.covXX(),
collision.covYY());
std::sqrt(collision.covXX()),
std::sqrt(collision.covYY()));
}

template <typename TMCH, typename TMFT, class C>
Expand All @@ -1678,24 +1679,19 @@ struct QaMatching {
{
// extrapolation with MCH tools
auto mchTrackAtMFT = mExtrap.FwdtoMCH(fwdToTrackPar(mchTrack));
o2::mch::TrackExtrap::extrapToVertexWithoutBranson(mchTrackAtMFT, mftTrack.z());
o2::mch::TrackExtrap::extrapToVertex(mchTrackAtMFT,
mftTrack.x(),
mftTrack.y(),
mftTrack.z(),
0, 0);

auto mftTrackProp = mExtrap.FwdtoMCH(fwdToTrackPar(mftTrack));
auto fwdTrackProp = fwdtrackutils::refitGlobalMuonCov(mExtrap.MCHtoFwd(mchTrackAtMFT), fwdToTrackPar(mftTrack));

// update global track momentum from the MCH track
double pRatio = mftTrackProp.p() / mchTrackAtMFT.p();
double newInvBendMom = mftTrackProp.getInverseBendingMomentum() * pRatio;
mftTrackProp.setInverseBendingMomentum(newInvBendMom);
mftTrackProp.setCharge(mchTrackAtMFT.getCharge());

o2::mch::TrackExtrap::extrapToVertex(mftTrackProp,
collision.posX(),
collision.posY(),
collision.posZ(),
collision.covXX(),
collision.covYY());
auto geoMan = o2::base::GeometryManager::meanMaterialBudget(fwdTrackProp.getX(), fwdTrackProp.getY(), fwdTrackProp.getZ(), collision.posX(), collision.posY(), collision.posZ());
auto x2x0 = static_cast<float>(geoMan.meanX2X0);
fwdTrackProp.propagateToVtxhelixWithMCS(collision.posZ(), {collision.posX(), collision.posY()}, {collision.covXX(), collision.covYY()}, mBzAtMftCenter, x2x0);

return mExtrap.MCHtoFwd(mftTrackProp);
return fwdTrackProp;
}

template <class MCP>
Expand Down
Loading