20 if (not ptrFacetRelation)
return false;
23 const CDCFacet& fromFacet = *facetRelation.first;
24 const CDCFacet& toFacet = *facetRelation.second;
51 const double fromAB = fromStartToMiddle.
tangential().R();
52 const double fromAC = fromStartToEnd.
tangential().R();
53 const double fromBC = fromMiddleToEnd.
tangential().R();
55 const double toBC = toStartToMiddle.
tangential().R();
56 const double toBD = toStartToEnd.
tangential().R();
57 const double toCD = toMiddleToEnd.
tangential().R();
59 const double sAB = fromAB;
60 const double sBC = (fromBC + toBC) / 2;
61 const double sCD = toCD;
63 const double sAC = fromAC;
64 const double sBD = toBD;
68 const double fromDeltaPhi =
70 const double toDeltaPhi =
73 const double deltaPhi = fromDeltaPhi - toDeltaPhi;
75 const double fromCurv = 2 * fromDeltaPhi / sAC;
76 const double toCurv = 2 * toDeltaPhi / sBD;
77 const double deltaCurv = toCurv - fromCurv;
79 const double dPhiA = 1 / sAB;
80 const double dPhiB = 1 / sAB + 2 / sBC;
81 const double dPhiC = 1 / sCD + 2 / sBC;
82 const double dPhiD = 1 / sCD;
84 const double dCurvA = 2 / sAC / sAB;
85 const double dCurvB = 2 / sAC / sAB + (2 / sAC + 2 / sBD) / sBC;
86 const double dCurvC = 2 / sBD / sCD + (2 / sAC + 2 / sBD) / sBC;
87 const double dCurvD = 2 / sBD / sCD;
89 const double varLA = fromStartVarL;
90 const double varLB = (fromMiddleVarL + toStartVarL) / 2;
91 const double varLC = (fromEndVarL + toMiddleVarL) / 2;
92 const double varLD = toEndVarL;
94 const double deltaPhiVar =
95 varLA * dPhiA * dPhiA +
96 varLB * dPhiB * dPhiB +
97 varLC * dPhiC * dPhiC +
98 varLD * dPhiD * dPhiD;
100 const double deltaCurvVar =
101 varLA * dCurvA * dCurvA +
102 varLB * dCurvB * dCurvB +
103 varLC * dCurvC * dCurvC +
104 varLD * dCurvD * dCurvD;
106 const double deltaCurvPull = deltaCurv / std::sqrt(deltaCurvVar);
107 const double deltaPhiPull = deltaPhi / std::sqrt(deltaPhiVar);
109 var<
named(
"delta_phi")>() = std::fabs(deltaPhi);
110 var<
named(
"delta_phi_pull")>() = std::fabs(deltaPhiPull);
111 var<
named(
"delta_curv")>() = std::fabs(deltaCurv);
112 var<
named(
"delta_curv_pull")>() = std::fabs(deltaCurvPull);
115 var<
named(
"delta_phi_pull_per_r")>() = std::fabs(deltaPhiPull) / r;
116 var<
named(
"delta_curv_pull_per_r")>() = std::fabs(deltaCurvPull) / r;