50 const double startDriftLengthStd =
sqrt(startDriftLengthVar);
54 const double middleDriftLengthStd =
sqrt(middleDriftLengthVar);
58 const double endDriftLengthStd =
sqrt(endDriftLengthVar);
68 const double startToMiddleLength = startToMiddleTangentialVector.
norm();
69 const double startToEndLength = startToEndTangentialVector.
norm();
70 const double middleToEndLength = middleToEndTangentialVector.
norm();
72 const double startCos = startToMiddleTangentialVector.
cosWith(startToEndTangentialVector);
73 const double middleCos = startToMiddleTangentialVector.
cosWith(middleToEndTangentialVector);
74 const double endCos = startToEndTangentialVector.
cosWith(middleToEndTangentialVector);
76 const double startPhi = acos(startCos);
77 const double middlePhi = acos(middleCos);
78 const double endPhi = acos(endCos);
80 const double startToMiddleSigmaPhi = startDriftLengthStd / startToMiddleLength;
81 const double startToEndSigmaPhi = startDriftLengthStd / startToEndLength;
83 const double middleToStartSigmaPhi = middleDriftLengthStd / startToMiddleLength;
84 const double middleToEndSigmaPhi = middleDriftLengthStd / middleToEndLength;
86 const double endToStartSigmaPhi = endDriftLengthStd / startToEndLength;
87 const double endToMiddleSigmaPhi = endDriftLengthStd / middleToEndLength;
89 const double startPhiSigma = hypot3(startToEndSigmaPhi - startToMiddleSigmaPhi,
90 middleToStartSigmaPhi,
93 const double middlePhiSigma = hypot3(startToMiddleSigmaPhi,
94 middleToStartSigmaPhi + middleToEndSigmaPhi,
97 const double endPhiSigma = hypot3(startToEndSigmaPhi,
99 endToStartSigmaPhi - endToMiddleSigmaPhi);
101 const double startPhiPull = startPhi / startPhiSigma;
102 const double middlePhiPull = middlePhi / middlePhiSigma;
103 const double endPhiPull = endPhi / endPhiSigma;
113 std::fmin(0.1, (startPhiPull + middlePhiPull + endPhiPull) /
m_param_phiPullCut / 1000);
117 return 3 - miniPenalty;