Skip to content

Commit 837ca24

Browse files
authored
[PWGCF] Fix for femto framework (#14699)
1 parent 4ce2489 commit 837ca24

File tree

1 file changed

+17
-5
lines changed

1 file changed

+17
-5
lines changed

PWGCF/Femto/Core/tripletHistManager.h

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -383,13 +383,25 @@ class TripletHistManager
383383
float getQ3() const { return mQ3; }
384384

385385
private:
386+
ROOT::Math::PxPyPzEVector getqij(ROOT::Math::PtEtaPhiMVector const& pi, ROOT::Math::PtEtaPhiMVector const& pj)
387+
{
388+
// Convert to PxPyPzEVector to get proper Lorentz dot product
389+
ROOT::Math::PxPyPzEVector vi(pi);
390+
ROOT::Math::PxPyPzEVector vj(pj);
391+
392+
auto trackSum = vi + vj;
393+
auto trackDifference = vi - vj;
394+
double scaling = trackDifference.Dot(trackSum) / trackSum.Dot(trackSum);
395+
return trackDifference - scaling * trackSum;
396+
}
397+
386398
float getQ3(ROOT::Math::PtEtaPhiMVector const& part1, ROOT::Math::PtEtaPhiMVector const& part2, ROOT::Math::PtEtaPhiMVector const& part3)
387399
{
388-
double q12 = -(part1 - part2).M2();
389-
double q23 = -(part2 - part3).M2();
390-
double q31 = -(part3 - part1).M2();
391-
double q = q12 + q23 + q31;
392-
return static_cast<float>(std::sqrt(std::max(0., q))); // protection if rounding error give a value below 0
400+
auto q12 = getqij(part1, part2);
401+
auto q23 = getqij(part2, part3);
402+
auto q31 = getqij(part3, part1);
403+
double q = q12.M2() + q23.M2() + q31.M2();
404+
return static_cast<float>(std::sqrt(-q));
393405
}
394406

395407
void initAnalysis(std::map<TripletHist, std::vector<o2::framework::AxisSpec>> const& Specs)

0 commit comments

Comments
 (0)