24 if (not ptrSegmentRelation)
return false;
40 const ROOT::Math::XYVector fromLastHitPos = fromLastHit.
getRecoPos2D();
41 const ROOT::Math::XYVector fromFirstHitPos = fromFirstHit.
getRecoPos2D();
43 const ROOT::Math::XYVector toFirstHitPos = toFirstHit.
getRecoPos2D();
44 const ROOT::Math::XYVector toLastHitPos = toLastHit.
getRecoPos2D();
46 const ROOT::Math::XYVector hitPosGap = toFirstHitPos - fromLastHitPos;
47 const ROOT::Math::XYVector longHitPosGap = toLastHitPos - fromFirstHitPos;
49 const double hitDistance = hitPosGap.R();
50 const double longHitDistance = longHitPosGap.R();
55 finitevar<
named(
"delta_hit_pos_phi")>() = ROOT::Math::VectorUtil::DeltaPhi(fromLastHitPos, toFirstHitPos);
56 finitevar<
named(
"delta_hit_mom_phi")>() = ROOT::Math::VectorUtil::DeltaPhi(fromLastHitMom, toFirstHitMom);
58 double fromLastHitAlpha = fromLastHit.
getAlpha();
59 double toFirstHitAlpha = toFirstHit.
getAlpha();
65 finitevar<
named(
"delta_hit_distance")>() = longHitDistance - hitDistance;
67 finitevar<
named(
"from_hit_forward")>() = hitPosGap.Dot(fromLastHitMom);
68 finitevar<
named(
"to_hit_forward")>() = hitPosGap.Dot(toFirstHitMom);
69 finitevar<
named(
"hit_forward")>() = hitPosGap.Dot(VectorUtil::average(fromLastHitMom, toFirstHitMom));
71 const ROOT::Math::XYVector fromStretch = fromLastHitPos - fromFirstHitPos;
72 const ROOT::Math::XYVector toStretch = toLastHitPos - toFirstHitPos;
74 const double fromLength = fromStretch.R();
75 const double toLength = toStretch.R();
77 const ROOT::Math::XYVector firstPosGap = toFirstHitPos - fromFirstHitPos;
78 const ROOT::Math::XYVector lastPosGap = toLastHitPos - fromLastHitPos;
80 const double firstOffset = firstPosGap.R();
81 const double lastOffset = lastPosGap.R();
84 firstOffset * lastOffset - longHitDistance * hitDistance - fromLength * toLength;