Skip to content

Commit 2b9eb44

Browse files
committed
PWGEM/Dilepton: fix DCA calculation
1 parent db49f47 commit 2b9eb44

File tree

2 files changed

+29
-36
lines changed

2 files changed

+29
-36
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: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -27,34 +27,27 @@ namespace o2::aod::pwgem::dilepton::utils::emtrackutil
2727
template <typename T>
2828
float sigmaDca3D(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
30+
float dcaXY = track.dcaXY(); // in cm
31+
float dcaZ = track.dcaZ(); // in cm
3532
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);
33+
return dca3d / dca3DinSigma(track);
3934
}
4035
//_______________________________________________________________________
4136
template <typename T>
4237
float dca3DinSigma(T const& track)
4338
{
44-
return std::sqrt(track.dcaXY() * track.dcaXY() + track.dcaZ() * track.dcaZ()) / sigmaDca3D(track);
39+
float cYY = track.cYY();
40+
float cZZ = track.cZZ();
41+
float cZY = track.cZY();
42+
float dcaXY = track.dcaXY(); // in cm
43+
float dcaZ = track.dcaZ(); // in cm
4544

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-
// }
45+
float det = cYY * cZZ - cZY * cZY; // determinant
46+
if (det < 0) {
47+
return 999.f;
48+
} else {
49+
return std::sqrt(std::fabs((dcaXY * dcaXY * cZZ + dcaZ * dcaZ * cYY - 2. * dcaXY * dcaZ * cZY) / det / 2.)); // dca 3d in sigma
50+
}
5851
}
5952
//_______________________________________________________________________
6053
template <typename T>
@@ -72,28 +65,28 @@ float dcaZinSigma(T const& track)
7265
template <typename T>
7366
float sigmaFwdDcaXY(T const& track)
7467
{
75-
float cXX = track.cXXatDCA(); // in cm^2
76-
float cYY = track.cYYatDCA(); // in cm^2
77-
float cXY = track.cXYatDCA(); // in cm^2
7868
float dcaX = track.fwdDcaX(); // in cm
7969
float dcaY = track.fwdDcaY(); // in cm
8070
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);
71+
return dcaXY / fwdDcaXYinSigma(track);
8472
}
8573
//_______________________________________________________________________
8674
template <typename T>
8775
float fwdDcaXYinSigma(T const& track)
8876
{
89-
return std::sqrt(track.fwdDcaX() * track.fwdDcaX() + track.fwdDcaY() * track.fwdDcaY()) / sigmaFwdDcaXY(track);
77+
float cXX = track.cXXatDCA(); // in cm^2
78+
float cYY = track.cYYatDCA(); // in cm^2
79+
float cXY = track.cXYatDCA(); // in cm^2
80+
float dcaX = track.fwdDcaX(); // in cm
81+
float dcaY = track.fwdDcaY(); // in cm
82+
float dcaXY = std::sqrt(dcaX * dcaX + dcaY * dcaY); // in cm
83+
float det = cXX * cYY - cXY * cXY; // determinant
9084

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+
if (det < 0) {
86+
return 999.f;
87+
} else {
88+
return std::sqrt(std::fabs((dcaX * dcaX * cYY + dcaY * dcaY * cXX - 2. * dcaX * dcaY * cXY) / det / 2.)); // dca xy in sigma
89+
}
9790
}
9891
//_______________________________________________________________________
9992
template <bool is_wo_acc = false, typename TTrack, typename TCut, typename TTracks>

0 commit comments

Comments
 (0)