29 if (not ptrSegmentPair)
return false;
45 const ROOT::Math::XYVector fromLastHitPos = fromLastHit.
getRecoPos2D();
46 const ROOT::Math::XYVector fromFirstHitPos = fromFirstHit.
getRecoPos2D();
48 const ROOT::Math::XYVector toFirstHitPos = toFirstHit.
getRecoPos2D();
49 const ROOT::Math::XYVector toLastHitPos = toLastHit.
getRecoPos2D();
51 const ROOT::Math::XYVector hitPosGap = toFirstHitPos - fromLastHitPos;
52 const ROOT::Math::XYVector longHitPosGap = toLastHitPos - fromFirstHitPos;
54 const double hitDistance = hitPosGap.R();
55 const double longHitDistance = longHitPosGap.R();
60 finitevar<
named(
"delta_hit_pos_phi")>() = ROOT::Math::VectorUtil::DeltaPhi(fromLastHitPos, toFirstHitPos);
61 finitevar<
named(
"delta_hit_mom_phi")>() = ROOT::Math::VectorUtil::DeltaPhi(fromLastHitMom, toFirstHitMom);
63 double fromLastHitAlpha = fromLastHit.
getAlpha();
64 double toFirstHitAlpha = toFirstHit.
getAlpha();
70 finitevar<
named(
"delta_hit_distance")>() = longHitDistance - hitDistance;
72 finitevar<
named(
"from_hit_forward")>() = hitPosGap.Dot(fromLastHitMom);
73 finitevar<
named(
"to_hit_forward")>() = hitPosGap.Dot(toFirstHitMom);
74 finitevar<
named(
"hit_forward")>() = hitPosGap.Dot(VectorUtil::average(fromLastHitMom, toFirstHitMom));
79 const ROOT::Math::XYVector axialHitPos = axialHit.
getRecoPos2D();
86 ROOT::Math::XYVector relRefPos = wireLine.
refPos2D() - axialHitPos;
89 double z = VectorUtil::Cross(-relRefPos, axialHitMom) / VectorUtil::Cross(movePerZ, axialHitMom);
90 ROOT::Math::XYVector stereoHitPos = stereoHit.
getRecoPos2D() + movePerZ * z;
94 double arcLengthGap = (stereoHitPos - axialHitPos).Dot(axialHitMom);