Skip to content
Merged
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
18 changes: 9 additions & 9 deletions Common/Core/fwdtrackUtilities.h
Original file line number Diff line number Diff line change
Expand Up @@ -108,16 +108,16 @@
return getTrackParCovFwd3DShift(track, 0.f, 0.f, zshift, covOpt...);
}

inline o2::track::TrackParCovFwd getTrackParCovFwdShiftManual(
inline o2::track::TrackParCovFwd getTrackParCovFwd3DShiftManual(
const double x, const double y, const double phi, const double tgl, const double signed1Pt,
const double cXX,
const double cXY, const double cYY,
const double cPhiX, const double cPhiY, const double cPhiPhi,
const double cTglX, const double cTglY, const double cTglPhi, const double cTglTgl,
const double c1PtX, const double c1PtY, const double c1PtPhi, const double c1PtTgl, const double c1Pt21Pt2,
const float z, const float zshift, const float chi2)
const float z, const float xshift, const float yshift, const float zshift, const float chi2)
{
SMatrix5 tpars(x, y, phi, tgl, signed1Pt);
SMatrix5 tpars(x + xshift, y + yshift, phi, tgl, signed1Pt);

SMatrix55 tcovs;
std::vector<double> v1{
Expand Down Expand Up @@ -164,15 +164,15 @@

/// propagate fwdtrack to a certain point.
template <typename TFwdTrack, typename TFwdTrackCov, typename TCollision>
o2::dataformats::GlobalFwdTrack propagateMuon(TFwdTrack const& muon, TFwdTrackCov const& cov, TCollision const& collision, const propagationPoint endPoint, const float matchingZ, const float bzkG, const float zshift = 0.f)
o2::dataformats::GlobalFwdTrack propagateMuon(TFwdTrack const& muon, TFwdTrackCov const& cov, TCollision const& collision, const propagationPoint endPoint, const float matchingZ, const float bzkG, const float xshift = 0.f, const float yshift = 0.f, const float zshift = 0.f)
{
o2::track::TrackParCovFwd trackParCovFwd;
if (muon.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::GlobalMuonTrack) {
trackParCovFwd = getTrackParCovFwdShift(muon, zshift, cov);
trackParCovFwd = getTrackParCovFwd3DShift(muon, xshift, yshift, zshift, cov);
} else if (muon.trackType() == o2::aod::fwdtrack::ForwardTrackTypeEnum::MuonStandaloneTrack) {
trackParCovFwd = getTrackParCovFwdShift(muon, zshift, muon);
trackParCovFwd = getTrackParCovFwd3DShift(muon, xshift, yshift, zshift, muon);
} else {
trackParCovFwd = getTrackParCovFwdShift(muon, zshift, muon);
trackParCovFwd = getTrackParCovFwd3DShift(muon, xshift, yshift, zshift, muon);
}

o2::dataformats::GlobalFwdTrack propmuon = propagateTrackParCovFwd(trackParCovFwd, muon.trackType(), collision, endPoint, matchingZ, bzkG);
Expand All @@ -188,7 +188,7 @@
o2::dataformats::GlobalFwdTrack propmuon;
o2::globaltracking::MatchGlobalFwd mMatching;

if (trackType > 2) { // MCH-MID or MCH standalone

Check failure on line 191 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
o2::dataformats::GlobalFwdTrack track;
track.setParameters(fwdtrack.getParameters());
track.setZ(fwdtrack.getZ());
Expand All @@ -209,7 +209,7 @@
propmuon.setParameters(proptrack.getParameters());
propmuon.setZ(proptrack.getZ());
propmuon.setCovariances(proptrack.getCovariances());
} else if (trackType < 2) { // MFT-MCH-MID

Check failure on line 212 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
// const double centerMFT[3] = {0, 0, -61.4};
// o2::field::MagneticField* field = static_cast<o2::field::MagneticField*>(TGeoGlobalMagField::Instance()->GetField());
// auto Bz = field->getBz(centerMFT); // Get field at centre of MFT in kG.
Expand Down Expand Up @@ -288,7 +288,7 @@

auto trk = inputTrk; // mutable copy

if (std::abs(bz) < 1e-12) {

Check failure on line 291 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
trk.propagateToZlinear(collision.posZ());
} else {
trk.propagateToZhelix(collision.posZ(), bz);
Expand All @@ -299,7 +299,7 @@
float phi = trk.getPhi();
float tgl = trk.getTanl();

if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(phi) || !std::isfinite(tgl) || std::abs(tgl) < 1e-8) {

Check failure on line 302 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
return -1.f;
}

Expand Down Expand Up @@ -332,7 +332,7 @@

float chi2 = (sYY * dx * dx - 2.0 * sXY * dx * dy + sXX * dy * dy) / det;

if (!std::isfinite(chi2) || chi2 < -1e-8) {

Check failure on line 335 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
return -1.f;
}

Expand All @@ -340,17 +340,17 @@
}

template <typename TFullFwdTrack, typename TCollision>
float getFwdChi2IP(const TFullFwdTrack& fwdtrack, const TCollision& collision, const float bz, const float zShift)
float getFwdChi2IP(const TFullFwdTrack& fwdtrack, const TCollision& collision, const float bz, const float xShift, const float yShift, const float zShift)
{
// this function returns imcompatibility of fwdtrack respect to a given PV.
// fwdtracks are never PV contributors in ALICE.
// chi2IP is defined as chi2^{PV}_{with fwdtrack} - chi2^{PV}_{without fwdtrack}. https://arxiv.org/abs/2604.11574
// chi2IP cannot be used to decide the best fwdtrack-to-collision match or MFT-MCH match, because it gives biases toward small muon impact parameter.
// chi2IP should be used only after the best fwdtrack-to-collision association and the best MFT-MCH match are defined.

o2::track::TrackParCovFwd trk = getTrackParCovFwdShift(fwdtrack, zShift, fwdtrack);
o2::track::TrackParCovFwd trk = getTrackParCovFwd3DShift(fwdtrack, xShift, yShift, zShift, fwdtrack);

if (std::abs(bz) < 1e-12) {

Check failure on line 353 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
trk.propagateToZlinear(collision.posZ());
} else {
trk.propagateToZhelix(collision.posZ(), bz);
Expand All @@ -361,7 +361,7 @@
float phi = trk.getPhi();
float tgl = trk.getTanl();

if (!std::isfinite(x) || !std::isfinite(y) || !std::isfinite(phi) || !std::isfinite(tgl) || std::abs(tgl) < 1e-8) {

Check failure on line 364 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
return -1.f;
}

Expand Down Expand Up @@ -394,7 +394,7 @@

float chi2 = (sYY * dx * dx - 2.0 * sXY * dx * dy + sXX * dy * dy) / det;

if (!std::isfinite(chi2) || chi2 < -1e-8) {

Check failure on line 397 in Common/Core/fwdtrackUtilities.h

View workflow job for this annotation

GitHub Actions / O2 linter

[magic-number]

Avoid magic numbers in expressions. Assign the value to a clearly named variable or constant.
return -1.f;
}

Expand Down
30 changes: 19 additions & 11 deletions EventFiltering/PWGEM/globalDimuonFilter.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -147,13 +147,17 @@
// for z shift for propagation
o2::framework::Configurable<bool> cfgApplyZShiftFromCCDB{"cfgApplyZShiftFromCCDB", false, "flag to apply z shift"};
o2::framework::Configurable<std::string> cfgZShiftPath{"cfgZShiftPath", "Users/m/mcoquet/ZShift", "CCDB path for z shift to apply to forward tracks"};
o2::framework::Configurable<float> cfgManualZShift{"cfgManualZShift", 0, "manual z-shift for propagation of global muon to PV"};
o2::framework::Configurable<float> cfgManualXShift{"cfgManualXShift", 0, "manual x shift for propagation of global muon to PV"};
o2::framework::Configurable<float> cfgManualYShift{"cfgManualYShift", 0, "manual y shift for propagation of global muon to PV"};
o2::framework::Configurable<float> cfgManualZShift{"cfgManualZShift", 0, "manual z shift for propagation of global muon to PV"};

o2::framework::HistogramRegistry fRegistry{"output", {}, o2::framework::OutputObjHandlingPolicy::AnalysisObject, false, false};
o2::ccdb::CcdbApi ccdbApi;
o2::framework::Service<o2::ccdb::BasicCCDBManager> ccdb;
int mRunNumber = 0;
float mBz = 0;
float mXShift = 0;
float mYShift = 0;
float mZShift = 0;

void init(o2::framework::InitContext&)
Expand All @@ -165,6 +169,8 @@
ccdbApi.init(ccdburl);
mRunNumber = 0;
mBz = 0;
mXShift = 0;
mYShift = 0;
mZShift = 0;

addHistograms();
Expand Down Expand Up @@ -203,6 +209,8 @@
}
} else {
LOGF(info, "z shift is manually set to %f cm", cfgManualZShift.value);
mXShift = cfgManualXShift;
mYShift = cfgManualYShift;
mZShift = cfgManualZShift;
}
}
Expand Down Expand Up @@ -418,12 +426,12 @@
return false;
}

o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, glMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, glMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
float etaMatchedMCHMID = propmuonAtPV_Matched.getEta();
float phiMatchedMCHMID = propmuonAtPV_Matched.getPhi();
phiMatchedMCHMID = RecoDecay::constrainAngle(phiMatchedMCHMID, 0, 1U);

o2::dataformats::GlobalFwdTrack propmuonAtPV = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, glMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtPV = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, glMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
pt = propmuonAtPV.getPt();
eta = propmuonAtPV.getEta();
phi = propmuonAtPV.getPhi();
Expand All @@ -440,7 +448,7 @@
return false;
}

o2::dataformats::GlobalFwdTrack propmuonAtDCA = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, glMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtDCA = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, glMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
float dcaX = propmuonAtDCA.getX() - collision.posX();
float dcaY = propmuonAtDCA.getY() - collision.posY();
float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY);
Expand Down Expand Up @@ -474,7 +482,7 @@
}
float sigma_dcaXY = dcaXY / dcaXYinSigma / std::sqrt(2.f);

o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, glMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, glMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
float dcaX_Matched = propmuonAtDCA_Matched.getX() - collision.posX();
float dcaY_Matched = propmuonAtDCA_Matched.getY() - collision.posY();
float dcaXY_Matched = std::sqrt(dcaX_Matched * dcaX_Matched + dcaY_Matched * dcaY_Matched);
Expand All @@ -488,7 +496,7 @@
return false;
}

float chi2IP = o2::aod::fwdtrackutils::getFwdChi2IP(fwdtrack, collision, mBz, mZShift);
float chi2IP = o2::aod::fwdtrackutils::getFwdChi2IP(fwdtrack, collision, mBz, mXShift, mYShift, mZShift);

if constexpr (fillHistograms) {
if (fwdtrack.sign() > 0) {
Expand Down Expand Up @@ -605,12 +613,12 @@
return false;
}

o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, tagMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, tagMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
float etaMatchedMCHMID = propmuonAtPV_Matched.getEta();
float phiMatchedMCHMID = propmuonAtPV_Matched.getPhi();
phiMatchedMCHMID = RecoDecay::constrainAngle(phiMatchedMCHMID, 0, 1U);

o2::dataformats::GlobalFwdTrack propmuonAtPV = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, tagMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtPV = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, tagMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
pt = propmuonAtPV.getPt();
eta = propmuonAtPV.getEta();
phi = propmuonAtPV.getPhi();
Expand Down Expand Up @@ -693,12 +701,12 @@
return false;
}

o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, probeMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, probeMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
float etaMatchedMCHMID = propmuonAtPV_Matched.getEta();
float phiMatchedMCHMID = propmuonAtPV_Matched.getPhi();
phiMatchedMCHMID = RecoDecay::constrainAngle(phiMatchedMCHMID, 0, 1U);

o2::dataformats::GlobalFwdTrack propmuonAtPV = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, probeMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtPV = o2::aod::fwdtrackutils::propagateMuon(fwdtrack, fwdtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToVertex, probeMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
pt = propmuonAtPV.getPt();
eta = propmuonAtPV.getEta();
phi = propmuonAtPV.getPhi();
Expand All @@ -722,7 +730,7 @@
return false;
}

o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, probeMuonCutGroup.matchingZ, mBz, mZShift);
o2::dataformats::GlobalFwdTrack propmuonAtDCA_Matched = o2::aod::fwdtrackutils::propagateMuon(mchtrack, mchtrack, collision, o2::aod::fwdtrackutils::propagationPoint::kToDCA, probeMuonCutGroup.matchingZ, mBz, mXShift, mYShift, mZShift);
float dcaX_Matched = propmuonAtDCA_Matched.getX() - collision.posX();
float dcaY_Matched = propmuonAtDCA_Matched.getY() - collision.posY();
float dcaXY_Matched = std::sqrt(dcaX_Matched * dcaX_Matched + dcaY_Matched * dcaY_Matched);
Expand Down Expand Up @@ -880,7 +888,7 @@
} // end end of negative muon loop
} // end end of positive muon loop

for (const auto pos1 : posMuons) {

Check failure on line 891 in EventFiltering/PWGEM/globalDimuonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
auto fwdtrack1 = fwdtracks.rawIteratorAt(pos1);
if (!isBestMatch(collision, fwdtrack1, fwdtracks, mfttracks)) {
continue;
Expand All @@ -891,7 +899,7 @@
}
ROOT::Math::PtEtaPhiMVector v1(pt1, eta1, phi1, o2::constants::physics::MassMuon);

for (const auto pos2 : posMuons) {

Check failure on line 902 in EventFiltering/PWGEM/globalDimuonFilter.cxx

View workflow job for this annotation

GitHub Actions / O2 linter

[const-ref-in-for-loop]

Use constant references for non-modified iterators in range-based for loops.
auto fwdtrack2 = fwdtracks.rawIteratorAt(pos2);
if (pos1 == pos2) {
continue;
Expand Down
5 changes: 0 additions & 5 deletions PWGEM/Dilepton/TableProducer/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,11 +46,6 @@ o2physics_add_dpl_workflow(skimmer-primary-muon
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::GlobalTracking
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(skimmer-primary-muon-qc
SOURCES skimmerPrimaryMuonQC.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore O2::GlobalTracking
COMPONENT_NAME Analysis)

o2physics_add_dpl_workflow(skimmer-primary-track
SOURCES skimmerPrimaryTrack.cxx
PUBLIC_LINK_LIBRARIES O2::Framework O2Physics::AnalysisCore
Expand Down
Loading
Loading