An Introduction to the Kalman Vertexer for GLAST

Johann Cohen-Tanugi

The Kalman vertexer is still under construction, as well as this document!

Miscellaneous preliminary remarks

With respect to collider experiments, GLAST presents several peculiarities:

It is important to emphasize the fact that GLAST program relies on the measurements of incident gammas energy and direction. The position of the pair production vertex is not mandatory. It may help to analyse an event, for instance by providing an ``in converter decay'' constraint. The Kalman vertexer will eventually provide for such capability. Nevertheless, the main purpose of the Kalman vertexer lies in the fact that it provides an automated rigorous agregation of the different tracks covariance matrix. This is essential for a good understanding of the reconstruction errors, that would not rely on the MonteCarlo exclusively.

I note also here an interesting feature that I came aware of during a discussion with Bill Atwood: Given the fact that track direction errors arise primarily from MS, which is independant for each track, one can consider that each reconstructed track, provided that it is not too badly reconstructed, is an independent estimation of the initial gamma direction, to be properly weighted by its error matrix. This gives rise to a prescription for gamma direction which is completely different from the case where one adds the physical momentum of the tracks to make up the candidate photon momentum. The first prescription exemplified in TkrComboVtxRecon.cxx, amounts to the following estimation:

\begin{displaymath}\begin{aligned}dir_\gamma &= \frac{\frac{dir_{t_1}}{C_1}+\fra...
...= \frac{1}{C(dir_{t_1})} + \frac{1}{C(dir_{t_2})} \end{aligned}\end{displaymath}

whereas the logical outcome of the Kalman vertexer will be 1

\begin{displaymath}\begin{aligned}p_\gamma &= p_{t_1} + p_{t_2} \quad\text{where...
...um}\ C_\gamma &= C_1 + C_2 + Cov(1,2) + Cov(2,1) \end{aligned}\end{displaymath}

Kalman Vertexer: general equations

Given a list of tracks k, with their ``measured'' parameter vector mk, a Kalman filter can be designed in order to estimate the common vertex of tracks. It is an iterative process: starting with an initial estimate of the vertex x0 and its covariance matrix C0, it adds one track at a time and reestimate vertex and cov. matrix at each step (filter procedure.) At the end, a smoother procedure propagate the final result to all tracks in order to reestimate their parameters at the final vertex estimate.

Let's define the following:

Then, the Kalman procedure relies on the measurement equation, which defines a mapping from mk to the (xt, qtk):

\begin{displaymath}\begin{aligned}m_k &= h_k(x^t,q^t_k) + v_k. \end{aligned}\end{displaymath}

Besides, its application requires hk to be linear. For (x0k, q0k) chosen in the vicinity of (xt, qtk), linearization of hk yields:

\begin{displaymath}\begin{aligned}h_k(x^t,q^t_k) &\approx c^0_k + A_k x^t + B_k ...
... c^0_k &= h_k(x^0_k,q^0_k) - A_k x^0_k- B_k q^0_k \end{aligned}\end{displaymath}

Usually, x0k is set to xk - 1, i.e. the vertex estimate after k - 1 step, and for q0k the momentum of the track at the POCA to x0k.

A least $ \chi_{2}^{}$ prescription allows to update information at each step, with the following filtering formula:

\begin{displaymath}\begin{aligned}x_k &= C_k[C_{k-1}^{-1} x_{k-1} + A^T_k G^B_k(...
... A_k)^{-1} G^B_k &= G_k - G_k B_k W_k B^T_k G_k \end{aligned}\end{displaymath}

The $ \chi^{2}_{}$ increase when adding track k is computed as:

\begin{displaymath}\begin{aligned}\chi^2_{KF} &= r^T_k G_k r_k + (x_k - x_{k-1})...
..._{k-1}) r_k &= m_k - c^0_k - A_k x_k - B_k q_k. \end{aligned}\end{displaymath}

If $ \chi^{2}_{KF}$ exceeds a user defined upper value, track k can be discarded from the fit. The total $ \chi^{2}_{}$ is $\displaystyle{\chi^2_k = \chi^2_{k-1} + \chi^2_{KF}}$.

The smoothing step goes over all accepted tracks and recomputes qNk,DNk and ENk, using the final estimates x and C in the filtering equations instead of xk and Ck. It also allows to compute:

\begin{displaymath}\begin{aligned}Q_{kj} &\equiv cov(q^N_k-q^t_k,q^N_j-q^t_j) = W_k B^T_k G_k A_k C A^T_j G_j B_j W_j. \end{aligned}\end{displaymath}

Note that, in the event that x is noticeably different from x0, the whole procedure can be performed again with x0 and C0 set to x and C respectively.

Implementation in GLAST software

GLAST Track fitting uses the following parametrization (one needs a point on the track, and the latter's direction):

In order to remain consistent with the track reconstruction paradigm, we use projected slopes in order to parametrize the direction of the track: by definition, the ``geometrical'' momentum is the vector (SX, SY, E) defined for each track. The track being a straight line, it doesn't change all along the track 2, so that there is no extra work required to compute q0k from the measured qk.

In order to determine the measurement equation, one needs to define a reference plane where ``geometrical'' momentum is defined. In collider experiment, this would be, typically, the normal plane to the beamline, containing the POCA on the track to the beamline (i.e. Z=0 axis).

In the case of GLAST, we take as reference plane the horizontal plane containing the first hit of the best track, which is the first one in the track list. This seems a reasonable, though probably biasing, estimate for a vicinity to the true vertex. All tracks should have their measurement vector mk defined at this point 3. As a result, the measurement equation (without noise) $m_k = h_k(x^t,q^t_k)$ reads:

\begin{displaymath}\begin{aligned}X_k &= X^t + S^t_{X}(Z_{ref} - Z^t) {S_X}_k ...
...(Z_{ref} - Z^t) {S_Y}_k &= S^t_Y E_k &= E^t_k \end{aligned}\end{displaymath}

Matrices Ak and Bk are straightforward to compute:

\begin{displaymath}\begin{aligned}A_k &= \begin{pmatrix}1 & 0 & -{S_X}^0_k  0 ...
..._k & 0  0 & 1 & 0  0 & 0 & 1  \end{pmatrix} \end{aligned}\end{displaymath}

It is interesting to note that the measurement equation is very close to being linear:

\begin{displaymath}\begin{aligned}h_k(x^t,q^t_k) &= h_k(x^0_k,q^0_k) + A_k (x^t-...
...t_Y-{S_Y}^0_k)(z^t-z^0_k)  0  0 \end{pmatrix} \end{aligned}\end{displaymath}

On the change of parameters

Once it is computed, the total covariance matrix must be reformulated in the same parameters as the ``physical momentum'', which needs a transformation $(S_X,S_Y, E)\rightarrow(Eu_x,Eu_y,Eu_z)$.

\begin{displaymath}\begin{aligned}T &= \frac{\partial(Eu_x,Eu_y,Eu_z)}{(S_X,S_Y,...
...)   -ES_X & -ES_Y & 1+S_X^2+S_Y^2 \end{pmatrix} \end{aligned}\end{displaymath}

and the transformation formula: Q'=TT . Q . T.

caveat and todo list

caveats: To do List:

About this document ...

An Introduction to the Kalman Vertexer for GLAST

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.47)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -nomath -html_version 4.0,math -white -no_navigation -noreuse KalVtx.tex

The translation was initiated by Johann COHEN-TANUGI on 2002-09-05


Footnotes

... be1
The sum of momenta can actually not be equal to the initial momentum, as the nucleus must have an unknown recoil. This should be completely negligible
... track2
We assume that E doesn't need to be reevaluated.
... point3
as well as the covariance matrix, which is the only ``extra work'' needed.


Johann COHEN-TANUGI 2002-09-05