17 if (not ptrFacetRelation)
return false;
20 const CDCFacet& fromFacet = *facetRelation.first;
21 const CDCFacet& toFacet = *facetRelation.second;
56 const double sAB = fromAB;
57 const double sBC = (fromBC + toBC) / 2;
58 const double sCD = toCD;
60 const double sAC = fromAC;
61 const double sBD = toBD;
65 const double fromDeltaPhi =
67 const double toDeltaPhi =
70 const double deltaPhi = fromDeltaPhi - toDeltaPhi;
72 const double fromCurv = 2 * fromDeltaPhi / sAC;
73 const double toCurv = 2 * toDeltaPhi / sBD;
74 const double deltaCurv = toCurv - fromCurv;
76 const double dPhiA = 1 / sAB;
77 const double dPhiB = 1 / sAB + 2 / sBC;
78 const double dPhiC = 1 / sCD + 2 / sBC;
79 const double dPhiD = 1 / sCD;
81 const double dCurvA = 2 / sAC / sAB;
82 const double dCurvB = 2 / sAC / sAB + (2 / sAC + 2 / sBD) / sBC;
83 const double dCurvC = 2 / sBD / sCD + (2 / sAC + 2 / sBD) / sBC;
84 const double dCurvD = 2 / sBD / sCD;
86 const double varLA = fromStartVarL;
87 const double varLB = (fromMiddleVarL + toStartVarL) / 2;
88 const double varLC = (fromEndVarL + toMiddleVarL) / 2;
89 const double varLD = toEndVarL;
91 const double deltaPhiVar =
92 varLA * dPhiA * dPhiA +
93 varLB * dPhiB * dPhiB +
94 varLC * dPhiC * dPhiC +
95 varLD * dPhiD * dPhiD;
97 const double deltaCurvVar =
98 varLA * dCurvA * dCurvA +
99 varLB * dCurvB * dCurvB +
100 varLC * dCurvC * dCurvC +
101 varLD * dCurvD * dCurvD;
103 const double deltaCurvPull = deltaCurv / std::sqrt(deltaCurvVar);
104 const double deltaPhiPull = deltaPhi / std::sqrt(deltaPhiVar);
106 var<
named(
"delta_phi")>() = std::fabs(deltaPhi);
107 var<
named(
"delta_phi_pull")>() = std::fabs(deltaPhiPull);
108 var<
named(
"delta_curv")>() = std::fabs(deltaCurv);
109 var<
named(
"delta_curv_pull")>() = std::fabs(deltaCurvPull);
112 var<
named(
"delta_phi_pull_per_r")>() = std::fabs(deltaPhiPull) / r;
113 var<
named(
"delta_curv_pull_per_r")>() = std::fabs(deltaCurvPull) / r;