ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Composite alignment Jacobians

Composite alignment Jacobians

This page documents the composite (hierarchy) Jacobians, which relate the alignment parameters of a component (e.g. a sensor) to those of a rigid structure it belongs to (e.g. a stave, a layer or a half-barrel). It covers the parameter conventions they rely on, the derivation, the implementation, and what is still missing.

Motivation

ACTS computes derivatives of the residuals w.r.t. the alignment parameters of single surfaces. Aligning every sensor individually does not scale to a real tracker: the first steps of a real alignment are done on larger rigid bodies.

Aligning a rigid structure requires the chain rule from the sensor alignment parameters, for which ACTS computes derivatives, to the structure parameters:

\[\frac{\partial r}{\partial \mathbf{A}_\mathrm{structure}} = \frac{\partial r}{\partial \mathbf{a}_\mathrm{sensor}} \cdot \frac{\partial \mathbf{a}_\mathrm{sensor}}{\partial \mathbf{A}_\mathrm{structure}} \]

The second factor is the composite or hierarchy Jacobian. The derivatives of a structure are the sum of this product over all its sensors on the track.

ACTS alignment parameter convention

In short, current ACTS surface alignment parameters are mixed: global-frame translations of the center, and local-frame rotations about the center.

ACTS is expected to move to fully local-frame parameters. The implementation is structured so that only one function changes when that happens (see alignment_composite_convention_adapter).

Derivation

Local-frame parameters

For an object with local-to-global transform \((R, \mathbf{c})\), the local-frame alignment parameters are \((\delta\mathbf{t}, \delta\boldsymbol{\omega})\): a translation along the object's own local axes, and small rotation angles about its own local axes, pivoting on its local origin. The moved object is

\[R' = R\,(1 + [\delta\boldsymbol{\omega}]_\times), \qquad \mathbf{c}' = \mathbf{c} + R\,\delta\mathbf{t}, \]

i.e. \(T' = T \cdot \Delta\) with \(\Delta = (1 + [\delta\boldsymbol{\omega}]_\times,\ \delta\mathbf{t})\). This is the convention used by CMS and Belle II for hierarchical alignment.

Composite to component

Let the composite (structure) have transform \((R_c, \mathbf{c}_c)\) and parameters \((\delta\mathbf{T}, \delta\mathbf{W})\), and the component (sensor) have \((R_s, \mathbf{c}_s)\). A rigid motion of the composite moves the global point \(\mathbf{x}\) by \(R_c\,\delta\mathbf{T} + (R_c\,\delta\mathbf{W}) \times (\mathbf{x} - \mathbf{c}_c)\) and rotates by the global rotation vector \(R_c\,\delta\mathbf{W}\). With the lever arm \(\mathbf{d} = \mathbf{c}_s - \mathbf{c}_c\) (global coordinates), the component therefore moves by

\[\delta\mathbf{c}_s = R_c\,\delta\mathbf{T} - [\mathbf{d}]_\times R_c\,\delta\mathbf{W}, \]

\[R_s' = (1 + [R_c\,\delta\mathbf{W}]_\times)\,R_s = R_s\,(1 + [R_s^T R_c\,\delta\mathbf{W}]_\times). \]

Expressing \(\delta\mathbf{c}_s\) along the component axes ( \(\delta\mathbf{t}_s = R_s^T\,\delta\mathbf{c}_s\)) and reading off \(\delta\boldsymbol{\omega}_s = R_s^T R_c\,\delta\mathbf{W}\) gives

\[\frac{\partial(\delta\mathbf{t}, \delta\boldsymbol{\omega})_s} {\partial(\delta\mathbf{T}, \delta\mathbf{W})_c} = \begin{pmatrix} R_\mathrm{rel}^T & -R_s^T\,[\mathbf{d}]_\times\,R_c \\ 0 & R_\mathrm{rel}^T \end{pmatrix}, \qquad R_\mathrm{rel} = R_c^T R_s . \]

Relation to the CMS form

The CMS form of this matrix is

\[\begin{pmatrix} R^{-1} & (\mathbf{T} \times \mathbf{a}_s)\cdot\mathbf{b} \\ 0 & R^{-1} \end{pmatrix}, \]

with \(R\) the component rotation relative to the composite, \(\mathbf{T}\) the component position relative to the composite, \(\mathbf{a}_s\) the component axes and \(\mathbf{b}\) the composite axes. The two agree:

  • the diagonal blocks are both \(R_\mathrm{rel}^T = R_s^T R_c\);
  • element \((i, j)\) of the top-right block is \(-\hat{a}_i \cdot (\mathbf{d} \times \hat{b}_j) = \hat{b}_j \cdot (\mathbf{d} \times \hat{a}_i) = (\mathbf{d} \times \hat{a}_i)\cdot\hat{b}_j\), the CMS expression with \(\mathbf{T} = \mathbf{d}\), including the sign.

This form is only correct when both levels use local-frame parameters. It does not apply directly to current ACTS surface parameters, whose translations are global. Porting CMS or Belle II code without accounting for this gives a wrong top-left block. On a pure translation test with \(R_c \approx 1\) that mistake can look correct.

Convention adapter

The ACTS parameters of a surface relate to its local-frame parameters by \(\delta\mathbf{c} = R_s\,\delta\mathbf{t}\), with the rotations unchanged:

\[\frac{\partial\,\mathbf{a}_\mathrm{ACTS}}{\partial(\delta\mathbf{t}, \delta\boldsymbol{\omega})} = \begin{pmatrix} R_s & 0 \\ 0 & 1 \end{pmatrix}. \]

The Jacobian used on the derivatives ACTS provides is therefore

\[\frac{\partial\,\mathbf{a}_\mathrm{ACTS}}{\partial(\delta\mathbf{T}, \delta\mathbf{W})} = \begin{pmatrix} R_s & 0 \\ 0 & 1 \end{pmatrix} \begin{pmatrix} R_\mathrm{rel}^T & -R_s^T [\mathbf{d}]_\times R_c \\ 0 & R_\mathrm{rel}^T \end{pmatrix} = \begin{pmatrix} R_c & -[\mathbf{d}]_\times R_c \\ 0 & R_s^T R_c \end{pmatrix}. \]

The adapter is only needed when chaining to structure parameters:

\[\frac{\partial r}{\partial(\delta\mathbf{T}, \delta\mathbf{W})} = \frac{\partial r}{\partial \mathbf{a}_\mathrm{ACTS}} \begin{pmatrix} R_s & 0 \\ 0 & 1 \end{pmatrix} \frac{\partial(\delta\mathbf{t}, \delta\boldsymbol{\omega})_s} {\partial(\delta\mathbf{T}, \delta\mathbf{W})_c}. \]

An alignment of single surfaces uses the derivatives \(\partial r/\partial \mathbf{a}_\mathrm{ACTS}\) as they are: the solver then returns ACTS parameters, which is the convention corrections are applied in, and no adapter enters. Applying the adapter to the surface derivatives alone (the surface as its own structure) would instead give parameters in the surface's local frame.

When ACTS moves to local-frame parameters, the adapter becomes the identity and the composite Jacobian is used unchanged.

Implementation

Acts/Surfaces/detail/AlignmentHelper.hpp provides two free functions next to rotationToLocalAxesDerivative:

namespace Acts::detail {
AlignmentMatrix compositeToComponentJacobian(
const Transform3& compositeTransform, const Transform3& componentTransform);
AlignmentMatrix localFrameToAlignmentParametersJacobian(
const Transform3& surfaceTransform);
} // namespace Acts::detail
Eigen::Transform< double, 3, Eigen::Isometry > Transform3
3D rigid transformation (rotation/reflection plus translation)
Definition Algebra.hpp:104
Matrix< eAlignmentSize, eAlignmentSize > AlignmentMatrix
Square matrix type for alignment parameters.
Definition Alignment.hpp:41

Both take local-to-global transforms. localFrameToAlignmentParametersJacobian is the only place that encodes the ACTS convention.

Limitations and open items

  • Structure frames. The Jacobian needs the frame of the composite: its origin (the pivot of the rotations, entering through the lever arm) and its orientation \(R_c\). The choice is up to the user; a common one is the global orientation centred on the structure, so that the translations are global shifts.
  • Several levels. The Jacobians chain: for a sensor in a stave in a layer, the Jacobian w.r.t. the layer is the product of the sensor-to-stave and stave-to-layer Jacobians, both in local-frame parameters. No helper for multi-level chains is provided yet.
  • Degrees of freedom at several levels. When both a structure and its components float, the structure motion is degenerate with the common motion of its components. The usual way out (CMS, Belle II) is 6 linear constraints per structure, \(\sum_{s \in \mathrm{structure}} J_s^T\, \mathbf{a}_s = 0\), so that the component corrections carry no net rigid-body motion of their structure. Since the component and structure parameters are in different frames, a component degree of freedom maps to a linear combination of structure ones; the degeneracy is not visible in the alignment masks alone.
  • Linearisation point. The Jacobians depend on the transforms they are evaluated with. Evaluating them on the nominal geometry is fine for small misalignments; an iterative alignment with large corrections would have to re-evaluate them on the updated alignment.