@@ -27,34 +27,27 @@ namespace o2::aod::pwgem::dilepton::utils::emtrackutil
2727template <typename T>
2828float 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// _______________________________________________________________________
4136template <typename T>
4237float 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// _______________________________________________________________________
6053template <typename T>
@@ -72,28 +65,28 @@ float dcaZinSigma(T const& track)
7265template <typename T>
7366float 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// _______________________________________________________________________
8674template <typename T>
8775float 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// _______________________________________________________________________
9992template <bool is_wo_acc = false , typename TTrack, typename TCut, typename TTracks>
0 commit comments