Generate and assign the contained variables.
19 if (not ptrFacet)
return false;
20 const CDCFacet& facet = *ptrFacet;
23 facet.adjustFitLine();
25 const CDCRLWireHit& startRLWirehit = facet.getStartRLWireHit();
26 const double startDriftLengthVar = startRLWirehit.getRefDriftLengthVariance();
27 const double startDriftLengthSigma = sqrt(startDriftLengthVar);
28 const double startWeight = 1.0 / startDriftLengthVar;
30 const CDCRLWireHit& middleRLWirehit = facet.getMiddleRLWireHit();
31 const double middleDriftLengthVar = middleRLWirehit.getRefDriftLengthVariance();
32 const double middleDriftLengthSigma = sqrt(middleDriftLengthVar);
33 const double middleWeight = 1.0 / middleDriftLengthVar;
35 const CDCRLWireHit& endRLWirehit = facet.getEndRLWireHit();
36 const double endDriftLengthVar = endRLWirehit.getRefDriftLengthVariance();
37 const double endDriftLengthSigma = sqrt(endDriftLengthVar);
38 const double endWeight = 1.0 / endDriftLengthVar;
40 const double sumWeight = startWeight + middleWeight + endWeight;
42 const ParameterLine2D& startToMiddleLine = facet.getStartToMiddleLine();
43 const ParameterLine2D& startToEndLine = facet.getStartToEndLine();
44 const ParameterLine2D& middleToEndLine = facet.getMiddleToEndLine();
46 const double startDistance = middleToEndLine.distance(startRLWirehit.getRefPos2D()) - startRLWirehit.getSignedRefDriftLength();
47 const double middleDistance = startToEndLine.distance(middleRLWirehit.getRefPos2D()) - middleRLWirehit.getSignedRefDriftLength();
48 const double endDistance = startToMiddleLine.distance(endRLWirehit.getRefPos2D()) - endRLWirehit.getSignedRefDriftLength();
50 const double startOptimalStep = startDistance * startWeight / sumWeight;
51 const double middleOptimalStep = middleDistance * middleWeight / sumWeight;
52 const double endOptimalStep = endDistance * endWeight / sumWeight;
54 const double startChi2 = startDistance * (startDistance - startOptimalStep) * startWeight;
55 const double middleChi2 = middleDistance * (middleDistance - middleOptimalStep) * middleWeight;
56 const double endChi2 = endDistance * (endDistance - endOptimalStep) * endWeight;
58 const Vector2D& startToMiddleTangentialVector = startToMiddleLine.tangential();
59 const Vector2D& startToEndTangentialVector = startToEndLine.tangential();
60 const Vector2D& middleToEndTangentialVector = middleToEndLine.tangential();
62 const double startToMiddleLength = startToMiddleTangentialVector.norm();
63 const double startToEndLength = startToEndTangentialVector.norm();
64 const double middleToEndLength = middleToEndTangentialVector.norm();
66 const double startPhi = startToMiddleTangentialVector.angleWith(startToEndTangentialVector);
67 const double middlePhi = startToMiddleTangentialVector.angleWith(middleToEndTangentialVector);
68 const double endPhi = startToEndTangentialVector.angleWith(middleToEndTangentialVector);
70 const double startToMiddleSigmaPhi = startDriftLengthSigma / startToMiddleLength;
71 const double startToEndSigmaPhi = startDriftLengthSigma / startToEndLength;
73 const double middleToStartSigmaPhi = middleDriftLengthSigma / startToMiddleLength;
74 const double middleToEndSigmaPhi = middleDriftLengthSigma / middleToEndLength;
76 const double endToStartSigmaPhi = endDriftLengthSigma / startToEndLength;
77 const double endToMiddleSigmaPhi = endDriftLengthSigma / middleToEndLength;
79 const double startPhiSigma = hypot3(startToEndSigmaPhi - startToMiddleSigmaPhi,
80 middleToStartSigmaPhi,
83 const double middlePhiSigma = hypot3(startToMiddleSigmaPhi,
84 middleToStartSigmaPhi + middleToEndSigmaPhi,
87 const double endPhiSigma = hypot3(startToEndSigmaPhi,
89 endToStartSigmaPhi - endToMiddleSigmaPhi);
91 const double startPhiPull = startPhi / startPhiSigma;
92 const double middlePhiPull = middlePhi / middlePhiSigma;
93 const double endPhiPull = endPhi / endPhiSigma;
95 const double curv = 2 * middlePhi / startToEndLength;
96 const double curvSigma = 2 * middlePhiSigma / startToEndLength;
97 const double curvPull = middlePhiPull / startToEndLength;
99 var<
named(
"start_phi")>() = startPhi;
100 var<
named(
"start_phi_sigma")>() = startPhiSigma;
101 var<
named(
"start_phi_pull")>() = startPhiPull;
102 var<
named(
"start_d")>() = startDistance;
103 var<
named(
"start_chi2")>() = startChi2;
105 var<
named(
"middle_phi")>() = middlePhi;
106 var<
named(
"middle_phi_sigma")>() = middlePhiSigma;
107 var<
named(
"middle_phi_pull")>() = middlePhiPull;
108 var<
named(
"middle_d")>() = middleDistance;
109 var<
named(
"middle_chi2")>() = middleChi2;
112 var<
named(
"end_phi_sigma")>() = endPhiSigma;
113 var<
named(
"end_phi_pull")>() = endPhiPull;
114 var<
named(
"end_d")>() = endDistance;
117 var<
named(
"s")>() = startToEndLength;
120 var<
named(
"curv_sigma")>() = curvSigma;
121 var<
named(
"curv_pull")>() = curvPull;