51 const double startDriftLengthStd =
sqrt(startDriftLengthVar);
55 const double middleDriftLengthStd =
sqrt(middleDriftLengthVar);
59 const double endDriftLengthStd =
sqrt(endDriftLengthVar);
69 const double startToMiddleLength = startToMiddleTangentialVector.
norm();
70 const double startToEndLength = startToEndTangentialVector.
norm();
71 const double middleToEndLength = middleToEndTangentialVector.
norm();
73 const double startCos = startToMiddleTangentialVector.
cosWith(startToEndTangentialVector);
74 const double middleCos = startToMiddleTangentialVector.
cosWith(middleToEndTangentialVector);
75 const double endCos = startToEndTangentialVector.
cosWith(middleToEndTangentialVector);
77 const double startPhi = acos(startCos);
78 const double middlePhi = acos(middleCos);
79 const double endPhi = acos(endCos);
81 const double startToMiddleSigmaPhi = startDriftLengthStd / startToMiddleLength;
82 const double startToEndSigmaPhi = startDriftLengthStd / startToEndLength;
84 const double middleToStartSigmaPhi = middleDriftLengthStd / startToMiddleLength;
85 const double middleToEndSigmaPhi = middleDriftLengthStd / middleToEndLength;
87 const double endToStartSigmaPhi = endDriftLengthStd / startToEndLength;
88 const double endToMiddleSigmaPhi = endDriftLengthStd / middleToEndLength;
90 const double startPhiSigma = hypot3(startToEndSigmaPhi - startToMiddleSigmaPhi,
91 middleToStartSigmaPhi,
94 const double middlePhiSigma = hypot3(startToMiddleSigmaPhi,
95 middleToStartSigmaPhi + middleToEndSigmaPhi,
98 const double endPhiSigma = hypot3(startToEndSigmaPhi,
100 endToStartSigmaPhi - endToMiddleSigmaPhi);
102 const double startPhiPull = startPhi / startPhiSigma;
103 const double middlePhiPull = middlePhi / middlePhiSigma;
104 const double endPhiPull = endPhi / endPhiSigma;
114 std::fmin(0.1, (startPhiPull + middlePhiPull + endPhiPull) /
m_param_phiPullCut / 1000);
118 return 3 - miniPenalty;