GeneralBrokenLines V03-01-02
gblpy3
|
For a track with an initial trajectory from a prefit of the (2D, 4D or 5D) measurements (internal seed) or an external prediction (external seed) the description of multiple scattering is added by offsets in a local system. Along the initial trajectory points are defined with can describe a measurement or a scatterer or both. Multiple measurements can be added to a point to implement ambiguities. The refit provides corrections to the local track parameters (in the local system) and the corresponding covariance matrix at any of those points. Non-diagonal covariance matrices will be diagonalized internally. Outliers can be down-weighted by use of M-estimators. At one point the measurements can be omitted from the refit to calculate unbiased residuals.
A position measurement is in a plane defined by two directions. Along one direction the measurement precision may be zero, defining a 1D measurement in the other direction.
The broken lines trajectory is defined by (2D) offsets at the first and last point and all points with a scatterer. The prediction for a measurement is obtained by interpolation of the enclosing offsets and for triplets of adjacent offsets kink angles are determined (thin scatterer, single offset) or for quadruplets of adjacent offsets kink angles and steps are determined (thick scatterer, two offsets, see logo). This requires for all points the jacobians for propagation to the previous and next point with an offset. These are calculated from the point-to-point jacobians along the initial trajectory. The sequence of points has to be strictly monotonic in arc-length.
Additional local or global parameters can be added and the trajectories can be written to special binary files for calibration and alignment with Millepede-II. (V. Blobel, NIM A, 566 (2006), pp. 5-13).
The conventions for the coordinate systems follow: Derivation of Jacobians for the propagation of covariance matrices of track parameters in homogeneous magnetic fields A. Strandlie, W. Wittek, NIM A, 566 (2006) 687-698.
The source code is available at the DESY GitLab server, see: https://gitlab.desy.de/claus.kleinwort/general-broken-lines/-/wikis/home
traj = GblTrajectory()
point = GblPoint(jacobian)
point.addMeasurement(..)
point.addLocals(..)
point.addGlobals(..)
point.addScatterer(..)
label = traj.addPoint(point)
traj.addExternalSeed(..)
[..] = traj.fit()
[..] = traj.getResults(label)
[..] = traj.getMeasResults(label)
[..] = traj.getScatResults(label)
traj.milleOut(..)
Alternatively trajectories can by read from MP binary files and fitted. As the points on the initial trajectory are not stored in this files results at points (corrections, covariance matrix) are not available and omission of measurements from a point is not possible.
Technical examples are given in gbltst.py, an example silicon tracker in gblsit.py.