Skip to content

Commit 421df5d

Browse files
dsekihatalibuild
andauthored
[PWGEM/Dilepton] fix DCA calculation (#10912)
Co-authored-by: ALICE Action Bot <alibuild@cern.ch>
1 parent 3cee692 commit 421df5d

File tree

2 files changed

+33
-41
lines changed

2 files changed

+33
-41
lines changed

PWGEM/Dilepton/Tasks/matchingMFT.cxx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -273,8 +273,8 @@ struct matchingMFT {
273273
float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY);
274274
float dcaZ = -dcaXY * std::sinh(eta);
275275

276-
float dFdx = 2.f * dcaX / dcaXY;
277-
float dFdy = 2.f * dcaY / dcaXY;
276+
float dFdx = dcaX / dcaXY;
277+
float dFdy = dcaY / dcaXY;
278278
float sigma_dcaXY = std::sqrt(cXXatDCA * dFdx * dFdx + cYYatDCA * dFdy * dFdy + 2.f * cXYatDCA * dFdx * dFdy);
279279

280280
o2::dataformats::GlobalFwdTrack propmuonAtPV_Matched = propagateMuon(mchtrack, collision, propagationPoint::kToVertex);

PWGEM/Dilepton/Utils/EMTrackUtilities.h

Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,36 +25,29 @@ namespace o2::aod::pwgem::dilepton::utils::emtrackutil
2525
{
2626
//_______________________________________________________________________
2727
template <typename T>
28-
float sigmaDca3D(T const& track)
28+
float dca3DinSigma(T const& track)
2929
{
30-
float cYY = track.cYY(); // in cm^2
31-
float cZZ = track.cZZ(); // in cm^2
32-
float cZY = track.cZY(); // in cm^2
33-
float dcaXY = track.dcaXY(); // in cm
34-
float dcaZ = track.dcaZ(); // in cm
35-
float dca3d = std::sqrt(dcaXY * dcaXY + dcaZ * dcaZ); // in cm
36-
float dFdxy = 2.f * dcaXY / dca3d;
37-
float dFdz = 2.f * dcaZ / dca3d;
38-
return std::sqrt(cYY * dFdxy * dFdxy + cZZ * dFdz * dFdz + 2.f * cZY * dFdxy * dFdz);
30+
float cYY = track.cYY();
31+
float cZZ = track.cZZ();
32+
float cZY = track.cZY();
33+
float dcaXY = track.dcaXY(); // in cm
34+
float dcaZ = track.dcaZ(); // in cm
35+
36+
float det = cYY * cZZ - cZY * cZY; // determinant
37+
if (det < 0) {
38+
return 999.f;
39+
} else {
40+
return std::sqrt(std::fabs((dcaXY * dcaXY * cZZ + dcaZ * dcaZ * cYY - 2. * dcaXY * dcaZ * cZY) / det / 2.)); // dca 3d in sigma
41+
}
3942
}
4043
//_______________________________________________________________________
4144
template <typename T>
42-
float dca3DinSigma(T const& track)
45+
float sigmaDca3D(T const& track)
4346
{
44-
return std::sqrt(track.dcaXY() * track.dcaXY() + track.dcaZ() * track.dcaZ()) / sigmaDca3D(track);
45-
46-
// float cYY = track.cYY();
47-
// float cZZ = track.cZZ();
48-
// float cZY = track.cZY();
49-
// float dcaXY = track.dcaXY(); // in cm
50-
// float dcaZ = track.dcaZ(); // in cm
51-
52-
// float det = cYY * cZZ - cZY * cZY; // determinant
53-
// if (det < 0) {
54-
// return 999.f;
55-
// } else {
56-
// return std::sqrt(std::fabs((dcaXY * dcaXY * cZZ + dcaZ * dcaZ * cYY - 2. * dcaXY * dcaZ * cZY) / det / 2.)); // dca 3d in sigma
57-
// }
47+
float dcaXY = track.dcaXY(); // in cm
48+
float dcaZ = track.dcaZ(); // in cm
49+
float dca3d = std::sqrt(dcaXY * dcaXY + dcaZ * dcaZ); // in cm
50+
return dca3d / dca3DinSigma(track);
5851
}
5952
//_______________________________________________________________________
6053
template <typename T>
@@ -70,30 +63,29 @@ float dcaZinSigma(T const& track)
7063
}
7164
//_______________________________________________________________________
7265
template <typename T>
73-
float sigmaFwdDcaXY(T const& track)
66+
float fwdDcaXYinSigma(T const& track)
7467
{
7568
float cXX = track.cXXatDCA(); // in cm^2
7669
float cYY = track.cYYatDCA(); // in cm^2
7770
float cXY = track.cXYatDCA(); // in cm^2
7871
float dcaX = track.fwdDcaX(); // in cm
7972
float dcaY = track.fwdDcaY(); // in cm
80-
float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY); // in cm
81-
float dFdx = 2.f * dcaX / dcaXY;
82-
float dFdy = 2.f * dcaY / dcaXY;
83-
return std::sqrt(cXX * dFdx * dFdx + cYY * dFdy * dFdy + 2.f * cXY * dFdx * dFdy);
73+
float det = cXX * cYY - cXY * cXY; // determinant
74+
75+
if (det < 0) {
76+
return 999.f;
77+
} else {
78+
return std::sqrt(std::fabs((dcaX * dcaX * cYY + dcaY * dcaY * cXX - 2. * dcaX * dcaY * cXY) / det / 2.)); // dca xy in sigma
79+
}
8480
}
8581
//_______________________________________________________________________
8682
template <typename T>
87-
float fwdDcaXYinSigma(T const& track)
83+
float sigmaFwdDcaXY(T const& track)
8884
{
89-
return std::sqrt(track.fwdDcaX() * track.fwdDcaX() + track.fwdDcaY() * track.fwdDcaY()) / sigmaFwdDcaXY(track);
90-
91-
// float det = cXX * cYY - cXY * cXY; // determinant
92-
// if (det < 0) {
93-
// return 999.f;
94-
// } else {
95-
// return std::sqrt(std::fabs((dcaX * dcaX * cYY + dcaY * dcaY * cXX - 2. * dcaX * dcaY * cXY) / det / 2.)); // dca xy in sigma
96-
// }
85+
float dcaX = track.fwdDcaX(); // in cm
86+
float dcaY = track.fwdDcaY(); // in cm
87+
float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY); // in cm
88+
return dcaXY / fwdDcaXYinSigma(track);
9789
}
9890
//_______________________________________________________________________
9991
template <bool is_wo_acc = false, typename TTrack, typename TCut, typename TTracks>

0 commit comments

Comments
 (0)