Details
-
Bug
-
Status: Closed (View Workflow)
-
Medium
-
Resolution: Fixed
-
6.12/06
-
None
-
macOS 10.13.6, ROOT 6.12/06
Description
Two bugs in TEveTrackPropagator:
1) In function TEveTrackPropagator::IntersectPlane, file TEveTrackPropagator.cxx, line 934:
{{ if (fH.fCharge && fMagFieldObj && p.Perp2() > kPtMinSqr)}}
has to be changed to
{{ if (fH.fCharge && fMagFieldObj)}}
Explanation: p.Perp2() is the transversal momentum component i.e. hypot(px, py). The logic of the current check is that if the magnetic field is along z, then if the momentum is along z, the trajectory is a line. But here a generic field is supported. But kPtMinSqr is 1e-20. But if one is generating momentum components on a grid, it can happen that px=py=0 exactly.
2) In function TEveTrackPropagator::HelixIntersectPlane, file TEveTrackPropagator.cxx, lines 882-883:
{{ delta = forwV - pos;}}
itsect = pos + delta * (d / (d - new_d));
has to be changed to
delta = forwV - pos4;
itsect = pos4 + delta * ((point - pos4).Dot / delta.Dot
);
Explanation: pos is the starting position of the track, so the current code is computing the intersection with the plane using a line from the starting position to the last propagated position. The new code uses the last segment of the trajectory.