18 if (not ptrFacetRelation)
return false;
21 const CDCFacet& fromFacet = *facetRelation.first;
22 const CDCFacet& toFacet = *facetRelation.second;
57 const double sAB = fromAB;
58 const double sBC = (fromBC + toBC) / 2;
59 const double sCD = toCD;
61 const double sAC = fromAC;
62 const double sBD = toBD;
66 const double fromDeltaPhi =
68 const double toDeltaPhi =
71 const double deltaPhi = fromDeltaPhi - toDeltaPhi;
73 const double fromCurv = 2 * fromDeltaPhi / sAC;
74 const double toCurv = 2 * toDeltaPhi / sBD;
75 const double deltaCurv = toCurv - fromCurv;
77 const double dPhiA = 1 / sAB;
78 const double dPhiB = 1 / sAB + 2 / sBC;
79 const double dPhiC = 1 / sCD + 2 / sBC;
80 const double dPhiD = 1 / sCD;
82 const double dCurvA = 2 / sAC / sAB;
83 const double dCurvB = 2 / sAC / sAB + (2 / sAC + 2 / sBD) / sBC;
84 const double dCurvC = 2 / sBD / sCD + (2 / sAC + 2 / sBD) / sBC;
85 const double dCurvD = 2 / sBD / sCD;
87 const double varLA = fromStartVarL;
88 const double varLB = (fromMiddleVarL + toStartVarL) / 2;
89 const double varLC = (fromEndVarL + toMiddleVarL) / 2;
90 const double varLD = toEndVarL;
92 const double deltaPhiVar =
93 varLA * dPhiA * dPhiA +
94 varLB * dPhiB * dPhiB +
95 varLC * dPhiC * dPhiC +
96 varLD * dPhiD * dPhiD;
98 const double deltaCurvVar =
99 varLA * dCurvA * dCurvA +
100 varLB * dCurvB * dCurvB +
101 varLC * dCurvC * dCurvC +
102 varLD * dCurvD * dCurvD;
104 const double deltaCurvPull = deltaCurv / std::sqrt(deltaCurvVar);
105 const double deltaPhiPull = deltaPhi / std::sqrt(deltaPhiVar);
107 var<
named(
"delta_phi")>() = std::fabs(deltaPhi);
108 var<
named(
"delta_phi_pull")>() = std::fabs(deltaPhiPull);
109 var<
named(
"delta_curv")>() = std::fabs(deltaCurv);
110 var<
named(
"delta_curv_pull")>() = std::fabs(deltaCurvPull);
113 var<
named(
"delta_phi_pull_per_r")>() = std::fabs(deltaPhiPull) / r;
114 var<
named(
"delta_curv_pull_per_r")>() = std::fabs(deltaCurvPull) / r;