54 const double startDriftLengthStd =
sqrt(startDriftLengthVar);
58 const double middleDriftLengthStd =
sqrt(middleDriftLengthVar);
62 const double endDriftLengthStd =
sqrt(endDriftLengthVar);
68 const ROOT::Math::XYVector& startToMiddleTangentialVector = startToMiddleLine.
tangential();
69 const ROOT::Math::XYVector& startToEndTangentialVector = startToEndLine.
tangential();
70 const ROOT::Math::XYVector& middleToEndTangentialVector = middleToEndLine.
tangential();
72 const double startToMiddleLength = startToMiddleTangentialVector.R();
73 const double startToEndLength = startToEndTangentialVector.R();
74 const double middleToEndLength = middleToEndTangentialVector.R();
76 const double startCos = VectorUtil::CosPhi(startToMiddleTangentialVector, startToEndTangentialVector);
77 const double middleCos = VectorUtil::CosPhi(startToMiddleTangentialVector, middleToEndTangentialVector);
78 const double endCos = VectorUtil::CosPhi(startToEndTangentialVector, middleToEndTangentialVector);
80 const double startPhi = acos(startCos);
81 const double middlePhi = acos(middleCos);
82 const double endPhi = acos(endCos);
84 const double startToMiddleSigmaPhi = startDriftLengthStd / startToMiddleLength;
85 const double startToEndSigmaPhi = startDriftLengthStd / startToEndLength;
87 const double middleToStartSigmaPhi = middleDriftLengthStd / startToMiddleLength;
88 const double middleToEndSigmaPhi = middleDriftLengthStd / middleToEndLength;
90 const double endToStartSigmaPhi = endDriftLengthStd / startToEndLength;
91 const double endToMiddleSigmaPhi = endDriftLengthStd / middleToEndLength;
93 const double startPhiSigma = hypot3(startToEndSigmaPhi - startToMiddleSigmaPhi,
94 middleToStartSigmaPhi,
97 const double middlePhiSigma = hypot3(startToMiddleSigmaPhi,
98 middleToStartSigmaPhi + middleToEndSigmaPhi,
101 const double endPhiSigma = hypot3(startToEndSigmaPhi,
103 endToStartSigmaPhi - endToMiddleSigmaPhi);
105 const double startPhiPull = startPhi / startPhiSigma;
106 const double middlePhiPull = middlePhi / middlePhiSigma;
107 const double endPhiPull = endPhi / endPhiSigma;
117 std::fmin(0.1, (startPhiPull + middlePhiPull + endPhiPull) /
m_param_phiPullCut / 1000);
121 return 3 - miniPenalty;