Back to home page

sPhenix code displayed by LXR

 
 

    


Warning, /acts/docs/old/tracking.md is written in an unsupported language. File is not indexed.

0001 # Tracking in a nutshell
0002 
0003 Track reconstruction is the process to recover the properties of a charged
0004 particle from a set of measurements caused by the interaction with some form of
0005 sensitive detector. The goal is to find which measurements are likely to have
0006 been caused by which particle, to group them accordingly, and to estimate the
0007 associated trajectory. Such charged particle trajectories form the basic input
0008 to the majority of higher-level reconstruction procedures in many cases.
0009 
0010 :::{figure} /figures/tracking/tracking.svg
0011 :width: 400px
0012 :align: center
0013 Illustration of a track reconstruction chain starting from spacepoints to fully
0014 formed tracks.
0015 :::
0016 
0017 This section provides a high-level view of a track reconstruction chain, and is
0018 largely based on [^phd:gessinger:2021]. It gives an overview of the basic
0019 building blocks conceptually, and also connects these building blocks with the
0020 concrete implementations in the core ACTS library, where available.
0021 
0022 ## Charged particle detection
0023 
0024 The first step in the chain to reconstruct charged particles is their
0025 detection using sensitive elements. Charged particle detection can be
0026 achieved in a variety of ways with very different technologies. It can be
0027 achieved by measuring the interaction of charged particles with matter. When
0028 this occurs, the interacting particle typically ionizes the surrounding
0029 material. Particle detectors make use of this fact by converting the
0030 resulting charge into a measurable signal in various ways.
0031 
0032 (segmentation)=
0033 :::{figure} /figures/tracking/segmentation.svg
0034 :align: center
0035 :width: 400px
0036 
0037 Illustration of a one-dimensional (a) and a two-dimensional segmentation (b) of a silicon sensor.
0038 :::
0039 
0040 A very common electronic detection approach is the use of semiconducting
0041 particle detectors, often made of silicon. When a charged particle traverses
0042 such a sensor, it ionizes the material in the depletion zone, caused by the
0043 interface of two different semiconducting materials. The result are pairs of
0044 opposite charges. These charge pairs are separated by an electric field and
0045 drift toward the electrodes. At this point, an electric signal is created
0046 which can be amplified and read out. By means of segmentation, the measured
0047 signal can be associated with a location on the sensor. Silicon sensors are
0048 usually segmented in one dimension (*strips*) or in two dimensions
0049 (*pixels*) (see {numref}`segmentation`).
0050 
0051 (track_parametrization)=
0052 ## Track parametrization
0053 
0054 To express the properties of a particle's trajectory, a choice of parameters
0055 has to be made. The parameters need to express all the relevant quantities of
0056 interest. In the presence of a magnetic field, which affects charged
0057 trajectories, the global position and momentum, as well as the charge are
0058 needed to fully specify the particle properties. In addition, a time parameter
0059 can be included. Apart from the global reference frame, track quantities often
0060 need to be represented with respect to a surface. This can be achieved with a
0061 parametrization like
0062 
0063 \begin{equation*}
0064   \vec x = \left(l_0, l_1, \phi, \theta, q/p, t\right)^T
0065 \end{equation*}
0066 
0067 although other parameter conventions exist as well.
0068 {numref}`parameters` illustrates this choice of parameters. $l_0$, $l_1$ are
0069 the local coordinates of the corresponding surface, $\phi \in [-\pi,\pi)$ and
0070 $\theta \in [0,\pi]$ are the angles in the transverse and longitudinal
0071 direction of the global frame, expressed with respect to the current location
0072 along the trajectory, as indicated in {numref}`parameters` (b). $\theta$ is
0073 the polar angle relative to the positive $z$-axis, and $\phi$ is the azimuth
0074 angle in the transverse plane. Finally, $q/p$ combines the charge of the
0075 particle with the inverse momentum. In {numref}`parameters` (a), the global
0076 momentum vector $\vec p$ is shown, which can be recovered from the parameters
0077 $\vec x$ using $\phi$, $\theta$ and $q/p$.
0078 
0079 (parameters)=
0080 :::{figure} /figures/tracking/parameters.svg
0081 :width: 500px
0082 :align: center
0083 Illustration of the parametrization of a particle track with respect to a
0084 two-dimensional surface. (a) shows the local position, global momentum and
0085 their corresponding uncertainties. (b) displays the angles $\phi$ and $\theta$
0086 in the transverse and longitudinal planes.
0087 :::
0088 
0089 (perigee)=
0090 :::{figure} /figures/tracking/perigee.svg
0091 :width: 200px
0092 :align: center
0093 Illustration of the perigee parametrization which uses the point of closest
0094 approach relative to a reference point. The impact parameter $d_0$, the
0095 position $l$ and the momentum vector $\vec p$ are shown.
0096 :::
0097 
0098 Aside from the nominal quantities captured in $\vec x$, the related
0099 uncertainties and correlations need to be taken into account as well. They
0100 can be expressed as a $6\times 6$ covariance matrix like
0101 
0102 \begin{equation*}
0103   C =
0104   \begin{bmatrix}
0105    \sigma^2(l_0)& \text{cov}(l_0,l_1) & \text{cov}(l_0, \phi) & \text{cov}(l_0, \theta) & \text{cov}(l_0, q/p) & \text{cov}(l_0, t) \\
0106    . & \sigma^2(l_1) & \text{cov}(l_1, \phi) & \text{cov}(l_1, \theta) & \text{cov}(l_1, q/p) & \text{cov}(l_1, t) \\
0107    . & . &  \sigma^2(\phi) & \text{cov}(\phi,\theta) & \text{cov}(\phi, q/p) & \text{cov}(\phi, t) \\
0108    . & . & . & \sigma^2(\theta) & \text{cov}(\theta, q/p) & \text{cov}(\theta, t) \\
0109    . & . & . & . & \sigma^2(q/p) & \text{cov}(q/p, t) \\
0110    . & . & . & . & . & \sigma^2(t)
0111   \end{bmatrix}
0112 \end{equation*}
0113 
0114 Here, $\text{cov}(X,Y)$ is the covariance of variables $X$ and $Y$, while
0115 $\sigma^2(X)$ are the regular variances. As the covariance matrix $C$ is
0116 symmetric, only the upper right half is shown in the matrix above. The
0117 uncertainties associated with the local position, as well as the momentum
0118 direction are indicated in {numref}`parameters` (a) as an ellipse and a cone
0119 around the momentum vector $\vec p$, respectively.
0120 
0121 (particle_propagation)=
0122 ## Particle propagation
0123 
0124 :::{tip}
0125 A dedicated description of the ACTS implementation of particle propagation can be found [here](propagation_impl).
0126 :::
0127 
0128 A central part of track reconstruction is the ability to calculate the trajectory
0129 of a charged particle, given its properties at a given point. This process,
0130 called *particle propagation* or *extrapolation*, is used to predict a
0131 particle's properties after it has travelled a certain distance. In many cases,
0132 the projected intersection with various types of surfaces is desired. The
0133 trajectory of a charged particle is governed by the [magnetic
0134 field](#magnetic-field-core) through which it travels, as well as any
0135 [material effects](#material-core). In case of a homogeneous magnetic field,
0136 and in the absence of material interaction, the particle follows a helical
0137 trajectory. Such a helix can be calculated purely analytically, although
0138 intersections require numerical methods nevertheless.
0139 
0140 Often, magnetic fields are not homogeneous, however. In the presence of such
0141 changing fields, the corresponding differential equations of motions need to be
0142 solved using numerical integration techniques.
0143 
0144 ### Numerical integration
0145 
0146 In ACTS, numerical integration is done using the *Runge-Kutta-Nyström* (RKN) method.
0147 Commonly used in the variant at fourth order, the RKN method describes how to calculate a
0148 solution to an initial value problem that can be formulated generically like
0149 
0150 $$
0151   \frac{dy}{dt} = f(t,y), \qquad y(t_0) = y_0,
0152 $$
0153 
0154  where $y_0$ refers to the initial value of $y$ at $t_0$, and
0155 $f(t,y)$ is the functional form describing the dynamics. The method then
0156 successively approximates the analytical solution $y(t)$ in a stepwise
0157 fashion. At each step $(t_n, y_n)$, the goal is effectively to approximate
0158 the next step $y(t_{n+1})$. Using a step size $h$, the algorithm evaluates
0159 the function $f$ at four points $k_{1-4}$:
0160 
0161 $$
0162   \begin{aligned}
0163     k_1 &= f(t_n, y_n) \\
0164     k_2 &= f\left( t_n + \frac h 2, y_n + h \frac{k_1} 2 \right) \\
0165     k_3 &= f\left( t_n + \frac h 2, y_n + h \frac{k_2} 2 \right)\\
0166     k_4 &= f\left( t_n + h, y_n + hk_3 \right).
0167   \end{aligned}
0168 $$
0169 
0170 
0171 (rk)=
0172 :::{figure} /figures/tracking/rk.svg
0173 :width: 400px
0174 :align: center
0175 Illustration of the RKN method approximating a first order
0176 differential equation. Shown is the calculation of an estimate $y_{n+1}$ at
0177 $t_{n+1} = t_n + h$, based on the current step $(t_n,y_n)$. Shown are the four
0178 distinct points at which function $y(t)$ is evaluated, and which are blended to
0179 form the estimate.
0180 :::
0181 
0182 
0183 Looking at {numref}`rk`, the meaning of these four points in relation
0184 to the step size $h$ can be understood. $k_1$ is the derivative at the
0185 current location, $k_{2,3}$ use $k_1$ and $k_2$ respectively to calculate two
0186 envelope derivatives at $h/2$ and $k_4$ uses $k_3$ to make an estimate of the
0187 derivative at $h$. Combining $k_{1-4}$, $(t_{n+1},y_{n+1})$ can be calculated
0188 as the approximation of $y(t_{n+1})$ like
0189 
0190 $$
0191   \begin{aligned}
0192     y_{n+1} &= y_n + \frac 1 6 h ( k_1 + 2 k_2 + 2 k_3 + k_4)\\
0193     t_{n+1} &= t_n + h
0194   \end{aligned}
0195 $$
0196 
0197 by effectively averaging the four derivatives. It is apparent that
0198 the step size crucially influences the accuracy of the approximation. A large
0199 step size weakens the approximation, especially if the magnetic field changes
0200 strongly. On the other hand, a too small step size will negatively affect the
0201 execution time of the algorithm.
0202 
0203 The Runge-Kutta-Nyström method from above can be adapted to handle second order
0204 differential equations, as is needed for the equations of motion in question,
0205 
0206 $$
0207   \frac{d^2 \vec r}{ds^2} = \frac q p \left( \frac{d\vec r}{ds} \times \vec B (\vec r) \right) = f(s, \vec r, \vec T), \qquad \vec T \equiv \frac{d \vec r}{ds},
0208 $$
0209 
0210 with the global position $\vec r$, the path element $s$, the
0211 normalized tangent vector $\vec T$ and the magnetic field $\vec B(\vec r)$ at
0212 the global position. A slight modification of $k_{1-4}$ is also required,
0213 incorporating the first derivative of $f(s, \vec r, \vec r')$, finally
0214 leading to
0215 
0216 $$
0217   \begin{aligned}
0218     \vec T_{n+1} &= \vec T_n + \frac h 6 (k_1 + 2k_2 + 2k_3 + k_4) \\
0219     \vec r_{n+1} &= \vec r_n + h \vec T_n + \frac{h^2}{6} (k_1 + k_2 + k_3).
0220   \end{aligned}
0221 $$
0222 
0223 A strategy exists to dynamically adapt the step size according to the magnetic
0224 field strength, with the definition of a target accuracy that the algorithm
0225 tries to achieve. Here, the step size $h$ will successively be decreased and
0226 the approximation recalculated until the accuracy goal is achieved. Even with
0227 these additional calculations, the approach is still preferable over a
0228 consistently low step size.
0229 
0230 ### Covariance transport
0231 
0232 Aside from the prediction of the track parameters at a given path length, a key
0233 ingredient to many dependent applications are the uncertainties in the form of
0234 the associated covariance matrix $C$. Conversions between covariance matrices
0235 $C^i\to C^f$ can generally be achieved like
0236 
0237 $$
0238   C^f = J \cdot C^i \cdot J^T,
0239 $$
0240 
0241 using the Jacobian matrix
0242 
0243 
0244 $$
0245   J = \begin{bmatrix}
0246     \frac{\partial l_0^f}{\partial l_0^i} & \cdots  & \frac{\partial l_0^f}{\partial (t_{0})^i} \\
0247     \vdots & \ddots & \vdots \\
0248     \frac{\partial (t_{0})^f}{\partial l_0^i} & \cdots  & \frac{\partial (t_0)^f}{\partial (t_0)^i}
0249   \end{bmatrix},
0250 $$
0251 
0252 
0253 between initial and final parameters $\vec x^i$ and $\vec x^f$. The
0254 task therefore becomes calculating the necessary Jacobians to achieve correct
0255 transformation.
0256 
0257 One part is the transformation between different coordinate systems, but at the
0258 same location along the trajectory. For this purpose, generic Jacobians can be
0259 calculated between each coordinate system type, and a common coordinate system.
0260 The common coordinate system used for this purpose is the curvilinear frame,
0261 which consists of the global direction angles, and a plane surface located at
0262 the track location, with the normal of the plane surface aligned with the track
0263 momentum. By using Jacobians to the curvilinear frame and the corresponding
0264 inverse matrices, conversions between any two coordinate systems can be
0265 performed.
0266 
0267 The second part is the calculation of the evolution of the covariance matrix
0268 during the propagation between surfaces. To this end, a semi-analytical
0269 method which calculates the effective derivatives between two consecutive
0270 RKN steps can be used. By accumulating the Jacobian
0271 matrices calculated for each step, the effective Jacobian between the
0272 starting point and the destination can be obtained.
0273 
0274 ## Material effects
0275 
0276 Charged particles interact with matter as they pass through it. Since
0277 particle detectors inevitably consist of some form or material, this effect
0278 cannot be completely avoided. By building tracking detectors as light as
0279 possible, and arranging passive components, such as services and support
0280 structures carefully, the material a particle encounters before being
0281 measured can be reduced. Charged particles traversing any form of matter
0282 undergo elastic and inelastic interactions with the atomic structure of the
0283 material, depending on the particle properties.
0284 
0285 (multiple_scattering)=
0286 :::{figure} /figures/tracking/multiple_scattering.svg
0287 :width: 200px
0288 :align: center
0289 Illustration of the effect of multiple scattering on the
0290 trajectory of a charged particle passing through a block of material.
0291 Entering from the left, it undergoes a series of scattering events,
0292 deflecting the trajectory statistically, before exiting on the right.
0293 :::
0294 
0295 In elastic interactions, the particle does not lose a significant amount of
0296 energy, while its trajectory is affected. {numref}`multiple_scattering` shows a
0297 sketch of the way multiple Coulomb scattering affects the direction of a
0298 particle trajectory. In addition, a shift in the transverse plane relative to
0299 the incident direction can occur. As the scattering events occur in
0300 statistically independent directions, the means of both the deflection and
0301 offset tends toward zero as the number of scatters increases. Therefore, in the
0302 numerical particle propagation, this can be accounted for by simply increasing
0303 the uncertainties associated with the direction, depending on the amount of
0304 material encountered.
0305 
0306 On the other hand, there are interactions during which the particle loses some
0307 of its energy. Relevant processes here are ionization, as well as
0308 bremsstrahlung for light particles like electrons. For hadronic particles,
0309 hadronic interactions with the nuclei of surrounding material is another
0310 process of interest. In such hadronic interactions, the incoming particle often
0311 disintegrates, and does not propagate further. Since the size of ionization
0312 losses only fluctuates to a small degree for thin layers of material, they can
0313 usually be accounted for by reducing the trajectory energy correspondingly. For
0314 bremsstrahlung, where fluctuations are much larger and the effect cannot be
0315 modelled adequately with a Gaussian distribution, dedicated techniques are
0316 needed (see [](gsf_core)).
0317 
0318 Two main approaches are implemented in ACTS. The first approximates the
0319 material interaction by using a description that averages the real material
0320 onto thin surfaces across the detector (more on this in
0321 [](#geometry-and-material-modelling)). When the propagation encounters such a
0322 surface, it retrieves the material properties, and executes parametrized
0323 modifications to the particle properties and uncertainties. In the second
0324 approach, material effects are continuously incorporated during propagation,
0325 rather than at discrete locations. The latter approach is especially suited for
0326 propagation through volumes of dense material, where the discretization of the
0327 material distribution will not work as well.
0328 
0329 ## Geometry and material modelling
0330 
0331 :::{tip}
0332 A dedicated description of the ACTS implementation of the tracking geometry model can be found [here](geometry_impl).
0333 :::
0334 
0335 A detailed model of the geometry of an experiment is required for tracking. In
0336 many cases, external information is needed to associate a sensitive element
0337 with a position and rotation in the laboratory frame. In case of silicon
0338 sensors, the intrinsic information captured by the sensor is restricted to the
0339 measurement plane. Using a transformation matrix, this local measurement can be
0340 turned into a global one.
0341 
0342 Full simulation using tools like Geant4 are frequently used in HEP.
0343 It includes its own geometry
0344 description framework. For the precise simulation of particle interactions
0345 with the detector, this geometry modelling
0346 is highly detailed. Even very small details of the
0347 physical hardware can be crucial, and are often included in the geometry
0348 description. An example for this are readout chips on silicon sensors, or cooling
0349 elements. {numref}`geometry_detail` (a) shows a sketch of such a detailed
0350 geometry description. Shown as an example is a *layer* of silicon
0351 sensors in a barrel configuration. The green rectangles represent the actual
0352 sensitive surfaces, while other elements include cooling, readout and other components.
0353 
0354 (geometry_detail)=
0355 :::{figure} /figures/tracking/geometry_detail.svg
0356 :align: center
0357 
0358 Sketch of the way a fully detailed simulation geometry (a) models passive
0359 elements, in addition to the sensitive elements shown in green. (b) shows a
0360 simplified version, where all non-sensitive elements are approximated.
0361 :::
0362 
0363 In the majority of cases in track reconstruction, this detailed
0364 geometry is unnecessary. During track reconstruction, the aforementioned
0365 associated information needs to be accessible for measurements, so all
0366 sensitive elements need to be included in some form. Passive elements, on the
0367 other hand, are only required to factor in material interaction effects (see
0368 [](#particle-propagation)). Moreover, the fully detailed geometry comes
0369 at the disadvantage of introducing significant overhead during navigation. In
0370 this process, an algorithm attempts to figure out which elements the particle
0371 propagation needs to target, as the trajectory is likely to intersect them.
0372 With a geometry description this precise, the navigation process becomes a
0373 significant performance bottleneck.
0374 
0375 (layer_barrel)=
0376 :::{figure} /figures/tracking/layer_barrel.svg
0377 :width: 300px
0378 :align: center
0379 Sketch of the way sensitive elements are grouped into layers.
0380 Shown is an $xy$-view of a number of sensors, arranged as in e.g. the ATLAS
0381 silicon detector barrels. The grouping is based on their mounting radius.
0382 The layers are indicated in different colors.
0383 :::
0384 
0385 As a compromise between modelling accuracy and performance, ACTS
0386 uses a simplified geometry model. It
0387 focusses on the sensitive elements, which are strictly needed, while passive
0388 elements are discarded from the explicit description and approximated.
0389 {numref}`geometry_detail` (b) shows such a simplified geometry. Here, the
0390 sensitive elements are still shown in green, and other elements are greyed
0391 out, indicating that they are discarded. The sensitive elements are then
0392 grouped into layers, as sketched in {numref}`layer_barrel`. How exactly the
0393 grouping occurs depends on the concrete experiment geometry. In some cases, the layers have the shape
0394 of cylinder surfaces with increasing radii. This example is shown in the
0395 figure in the transverse plane at radii $r_{1,2,3}$. In the endcaps, where
0396 modules are often arranged on disks, these are used as the layer shape. An
0397 illustration of endcap disk layers can be found in {numref}`layer_ec`, where
0398 six disks are located at six distinct positions in $\pm z_{1,2,3}$, and
0399 shown in different colors.
0400 
0401 (layer_ec)=
0402 :::{figure} /figures/tracking/layer_ec.svg
0403 :width: 400px
0404 :align: center
0405 Sketch of the way sensitive elements are grouped into layers.
0406 Shown is a view of a number of sensors, arranged as in e.g. the ATLAS
0407 silicon detector endcaps. They are grouped into disks based on their
0408 mounting position in $z$. The layers are indicated in different colors.
0409 :::
0410 
0411 During particle propagation, the navigation makes use of this layer
0412 system. Each layer contains a binned structure, which maps a bin to a set
0413 of sensitive surfaces that overlap with the bin area. This is illustrated in
0414 {numref}`geo_binning`, where the left picture shows the sensitive surface
0415 structure of an exemplary endcap disk. The picture on the right overlays the
0416 binning structure that can be used to enable fast retrieval of compatible
0417 sensitive surfaces. By performing a simple bin lookup, the navigation can
0418 ascertain which sensors it needs to attempt propagation to.
0419 
0420 
0421 (geo_binning)=
0422 :::{figure} /figures/tracking/surface_array.svg
0423 :width: 400px
0424 :align: center
0425 Illustration of the binning structure that is used to subdivide
0426 layer surfaces. (a) shows two sensor rings of
0427 different radii grouped into one disk layer. (b)
0428 overlays the binning structure that the navigation queries for compatible
0429 surfaces.
0430 :::
0431 
0432 Furthermore, layers are grouped into volumes. Each volume loosely corresponds
0433 to a region of the detector.
0434 Volumes are set up such that their boundary surfaces always touch another
0435 volume. An exception to this is the outermost volume. Each volume's boundary
0436 surfaces store which volume is located on their other side, essentially
0437 forming portals between the volumes. This glueing enables the geometry
0438 navigation between volumes. When the propagation has finished processing a
0439 set of layers, it attempts to target the boundary surfaces. Once a boundary
0440 surface is reached, the active volume is switched, and the next set of layers
0441 is processed.
0442 
0443 Care has to be taken to correctly model the passive material, that is
0444 initially discarded with non-sensitive elements. For the material effects to
0445 be correctly taken into account during particle propagation, the material is
0446 projected onto dedicated material surfaces. These material surfaces are
0447 spread across the detector geometry. Each layer is created with two
0448 *approach surfaces* on either side. Their distance can be interpreted as
0449 the thickness of the layer in question. Examples of these approach surfaces
0450 can be found in {numref}`geometry_detail`, at the inner and outer radius.
0451 Approach surfaces, and the boundary surfaces between volumes mentioned before,
0452 are candidates to receive a projection of the surrounding material.
0453 Additional artificial material layers can also be inserted to receive
0454 projected material.
0455 
0456 The projection procedure (see [](#material-core) and [](#material_mapping_howto_core)) works
0457 by extrapolating test particles using the fully detailed simulation geometry.
0458 During the extrapolation, the material properties of the geometry are sampled
0459 in small intervals. Subsequently, the same test particle is extrapolated
0460 through the tracking geometry. All material samples are then assigned and
0461 projected onto the closest material surface. Finally, the projection is
0462 averaged. The exact number and placement of the material surfaces has to be
0463 optimized to yield a sufficiently accurate representation of the inactive
0464 material in the detector.
0465 
0466 The numerical integration uses these projected material surfaces. Whenever
0467 such a surface is encountered in the propagation, the material properties are
0468 retrieved, and the corresponding modifications to the trajectory are
0469 executed. In case material is supposed to be integrated in a continuous way
0470 (as mentioned in [](#particle-propagation)), volumes can also store an
0471 effective volumetric material composition, which is queried by the numerical
0472 integration when needed. As the actual physical location of the detection
0473 hardware can vary over time, possible misalignment of the sensors needs to be
0474 handled correctly.
0475 
0476 ## Clustering
0477 
0478 :::{tip}
0479 See [](clustering_core) for information of the implementation of clustering in
0480 the core library.
0481 :::
0482 
0483 The actual track reconstruction procedure itself starts with the conversion of
0484 raw inputs that have been read out from the detector. In case of silicon
0485 detectors, the readout can either be performed in a binary way, only recording
0486 which segments fired, or the amount of charges measured in the segment can be
0487 recorded, e.g. via *time-over-threshold* readout. In all cases, the readout is
0488 attached to an identifier uniquely locating the segment on the corresponding
0489 sensor.
0490 
0491 As a next step, these raw readouts need to be *clustered*, in order to
0492 extract an estimate of where particles intersect with the sensor. The general
0493 strategy of clustering algorithms follows the Connected Component Analysis (CCA)
0494 approach, where subsets of segments are successively grouped into clusters.
0495 In case of the Pixel detector, this clustering occurs in two dimensions,
0496 corresponding to the segmentation of its sensors. Here, the CCA can
0497 either consider all eight surrounding pixels as neighboring a central one, or
0498 only consider the four non-diagonal ones, as shown in
0499 {numref}`clustering_cca`. The figure only shows the simplest possible
0500 cluster starting from the central pixel. In reality, the CCA will iteratively
0501 continue from the pixels on the cluster edges.
0502 
0503 (clustering_cca)=
0504 :::{figure} /figures/tracking/cca.svg
0505 :align: center
0506 :width: 400px
0507 Illustration of both eight and four cell connectivity.
0508 :::
0509 
0510 Subsequently, the effective cluster position needs to be estimated. Multiple
0511 factors play a role here. First of all, the average position of the cluster
0512 can be calculated either using only the geometry position of the segments,
0513 
0514 $$
0515   \vec r = \frac{1}{N} \sum_{i=1}^N \vec l_i,
0516 $$
0517 
0518 or be weighted by the charge collected in each segment:
0519 
0520 $$
0521   \vec r = \frac{1}{\sum_{i=1}^N q_i} \sum_{i=1}^N q_i \vec l_i.
0522 $$
0523 
0524 Here, $\vec l_i$ is the local position of the $i$-th segment while
0525 $q_i$ is its charge.
0526 
0527 An illustration of the clusterization can be found in {numref}`clustering_image`,
0528 where a pixel sensor is shown to be intersected by a charged particle,
0529 entering on the lower left and exiting on the top right. Three cells shown
0530 with a red frame receive energy from the particle, but the amount is under
0531 the readout threshold. Four other cells receive energy above the threshold
0532 and are read out. The clustering will then group these four cells into a
0533 cluster, and subsequently estimate the cluster position based on the energy
0534 deposited in the cells. In case no charge information is not available
0535 for a given detector, the calculation is purely geometric.
0536 
0537 
0538 (clustering_image)=
0539 :::{figure} /figures/tracking/clustering.svg
0540 :align: center
0541 :width: 400px
0542 Illustration of the clustering of multiple pixels into a cluster,
0543 in a three-dimensional view on the left and a projection onto the
0544 $xy$-plane on the right. A particle enters the center in the lower left,
0545 crosses several segments before exiting the sensor on the top right. The
0546 cell colors indicate how far along the trajectory they are encountered.
0547 :::
0548 
0549 Another factor that needs to be accounted for is the drift direction of the
0550 created charges. In addition to the collection field of the sensor itself,
0551 the surrounding magnetic field modifies the drift direction by the
0552 *Lorentz-angle* $\theta_\text{L}$. Depending on the field strength, this
0553 additional angle can cause segments to be activated that would otherwise not
0554 be geometrically within reach of the charges. Other effects, such as the fact
0555 that the modules are not perfectly flat, as the geometry description assumes,
0556 or cross-talk between readout channels, also play a role at this stage.
0557 
0558 In the presence of high event activity, particle intersections on single
0559 sensors can be close enough to one another to result in clusters that are not
0560 clearly separated from each other. This circumstance can be somewhat
0561 mitigated by allowing tracks to share clusters with other particles, which
0562 comes at the price of allowing duplicated tracks to some extent.
0563 Additionally, merged clusters typically feature worse position resolution,
0564 which manifests itself since it negatively affects the final fit of the
0565 track.
0566 
0567 (tracking_sp_formation)=
0568 ## Spacepoint formation
0569 
0570 The basic input to most forms of pattern recognition algorithms for tracking
0571 are space points, which need to be assembled from the raw measurements. To this
0572 end, the raw measurements are combined with information provided by the
0573 geometry description, such as the location and rotation of the sensors. In this
0574 way, the locations, which are restricted to be local to the sensor surfaces
0575 intrinsically, can be converted into three dimensional points in space.  See
0576 [](spacepoint_formation_core) for a description of the implementation of
0577 spacepoint formation in the core library.
0578 
0579 {numref}`sensor` shows an illustration of the information that is consumed for
0580 a pixel measurement. Shown are three clusters on a sensor, which are caused by
0581 three tracks intersecting it. The corresponding cluster positions are indicated
0582 as well, and can be converted to global positions using the inverse of the
0583 global-to-local transformation matrix, that is provided by the geometry
0584 description.
0585 
0586 (sensor)=
0587 :::{figure} /figures/tracking/sp_l2g.svg
0588 :align: center
0589 :width: 400px
0590 Illustration of a pixel sensor and its local coordinate system in
0591 relation to the global laboratory frame. A transformation allows conversion
0592 between the two systems. Shown are three tracks intersecting the sensor,
0593 alongside clusters that they produce.
0594 :::
0595 
0596 In strip detectors, on the other hand, only a single
0597 dimension is segmented, and an individual measurement is therefore only
0598 constrained in one direction on the surface. However, usually the
0599 strip modules are mounted in pairs, with a stereo angle rotation
0600 between the pairs. To form global space points, measurements from both
0601 sensors of a pair need to be combined.
0602 Due to the stereo angle, a two dimensional
0603 location on the orthogonal projection plane relative to the two parallel
0604 pairs can be found. Using the global transformations of the pair, the
0605 combined measurement location can be converted to global coordinates. If
0606 multiple measurements are located on a stereo pair of strip sensors, there
0607 exists an ambiguity on how to combine strips to form space points, which has to be resolved.
0608 
0609 
0610 ## Seeding
0611 
0612 The next step after space point formation is pattern recognition, which be
0613 implemented in various ways.  Global methods exist which attempt to cluster
0614 space points, such as conformal mapping. In this approach, the space points are
0615 transformed into a feature parameter space that reveals patterns for hits
0616 belonging to the same track. In the specific example of a Hough transform, a
0617 parameter space $\left(\phi, q/p_\mathrm{T}\right)$ is used. As a result, each
0618 space point is effectively transformed into a line, as a series of combinations
0619 of these parameters would lead to the same space point. The lines from a set of
0620 space points of a single track will intersect in one common area. Such an
0621 intersection can be used to identify which space points originate from the same
0622 track. However, this task grows in complexity as detector activity increases
0623 and is susceptible to material effects. See [](seeding_core) for a description
0624 of the seeding implementation in the core library.
0625 
0626 Another group of approaches is the one of seeding and track following. These
0627 algorithms differ from the global ones in that they evaluate individual
0628 combinations of space points, and successively explore the events. One
0629 algorithm from this group is the cellular automaton that iteratively forms
0630 chains of space points going from one layer to the next.
0631 
0632 The main approach in ACTS is an algorithm that operates on coarse
0633 subdivisions of the detector is used. This seeding algorithm attempts to find
0634 triplets of space points from increasing radii which are likely to belong to
0635 the same track. It achieves this by iterating the combinatorial triplets and
0636 successively filtering them. Filtering is performed based on the momentum and
0637 impact parameters, which the algorithm attempts to estimate for each triplet.
0638 
0639 Under the assumption of a homogeneous magnetic field along the $z$-axis,
0640 charged particles should follow helical trajectories. In the transverse plane,
0641 the motion is circular, while it is a straight line in the $rz$-plane.  The
0642 transverse impact parameter and momentum can be estimated from the radius of
0643 the circle in the transverse plane like
0644 
0645 $$
0646   d_0 = \sqrt{c_x^2 + c_y^2} - \rho,
0647 $$
0648 
0649 with the circle center $(c_x, c_y)$ and radius $\rho$. The
0650 transverse momentum can be related to available quantities like
0651 
0652 $$
0653   p_\mathrm{T} \propto \cdot q B \rho
0654 $$
0655 
0656 with the charge $q$ and the magnetic field $B$. An intersection
0657 between the straight line in the $rz$-plane with the $z$-axis gives an
0658 estimate of the longitudinal impact parameter.
0659 An illustration of seeds in the transverse plane is found in
0660 {numref}`seeding_figure`. Note that seeds can incorporate hits spread across all of
0661 the layers shown, although this can be a configuration parameter.
0662 
0663 
0664 (seeding_figure)=
0665 :::{figure} /figures/tracking/seeding.svg
0666 :width: 300px
0667 :align: center
0668 Sketch of seeds in the transverse plane for a number of tracks on
0669 four layers. Seeds can combine hits on any three of these layers. The shown
0670 seeds appear compatible with having originated in the center of the
0671 detector, which is also drawn.
0672 :::
0673 
0674 ## Track finding and track fitting
0675 
0676 In the track seeding and following approach, track candidates are built from
0677 the initial seeds. One method implemented in ACTS, the [Combinatorial Kalman
0678 Filter](#combinatorial-kalman-filter) (CKF), uses the *Kalman formalism*.
0679 Originally developed for monitoring and steering mechanical systems, it can
0680 also be used to iteratively calculate a track estimate. After a set of track
0681 candidates has been assembled and filtered (see [](#ambiguity-resolution)), an
0682 additional track fit is usually performed to extract the best estimate of the
0683 track. The Kalman formalism can also be used for this, with the addition of a
0684 smoothing step that has certain benefits.  Other fit strategies exist, such as
0685 a global $\chi^2$ fit that minimizes the distances between track-sensor
0686 intersections and measurements on all sensors at the same time. One drawback of
0687 this method is the necessity to invert very large matrices, which is
0688 computationally expensive.
0689 
0690 In a track fit, the Kalman formalism can be shown to yield optimal estimates
0691 for Gaussian uncertainties. This assumption breaks down when effects like
0692 bremsstrahlung come into play. An extension of the Kalman Filter (KF) exists
0693 that relies on the individual propagation of a set of trajectories, instead of
0694 a single one, to model these biased uncertainties by a sum of Gaussian
0695 components. This [Gaussian Sum Filter](gsf_core) (GSF) achieves better results when
0696 fitting particles such as electrons, likely to undergo bremsstrahlung, and is
0697 deployed in e.g. the ATLAS tracking chain.
0698 
0699 
0700 ### Kalman formalism and Kalman track fitter
0701 
0702 :::{tip}
0703 See [](kf_core) for a description of the implementation of the Kalman Filter in
0704 the core library.
0705 :::
0706 
0707 The basis of the Kalman formalism is a state vector, that can be identified
0708 with the set of track parameters $\vec x$. Note that the concrete
0709 parametrization plays a subordinate role in this context. Rather than building
0710 an estimate of the state of a system in real time, a Kalman track fit can be
0711 understood as estimating the parameters iteratively in steps. In the track
0712 fitting application, each step is defined by a measurement to be included.
0713 The evolution of the state vector is described by
0714 
0715 $$
0716   \vec x_k = \mathbf F_{k-1} \vec x_{k-1} + \vec w_{k-1},
0717 $$
0718 
0719 where the linear function $\mathbf F_{k-1}$ transports the state vector at
0720 step $k-1$ to step $k$. $\vec w_{k-1}$ is additional so-called process noise
0721 that affects the transport additively. Each step has an associated
0722 measurement, with the fixed relationship between the measurement and the state vector
0723 
0724 $$
0725   \vec m_k = \mathbf H_k \vec x_k + \epsilon_k.
0726 $$
0727 
0728 Here, $\mathbf H_k$ is the *measurement mapping function*, which
0729 transforms the state vector into the measurement space. In the ideal case,
0730 this purpose can be achieved by a simple projection matrix, which extracts a
0731 subspace of the state vector. Additionally, $\epsilon_k$ represents the
0732 measurement uncertainty.
0733 
0734 The Kalman fit process is divided into different phases:
0735 
0736 1. **Prediction** of the state vector at the next step $k+1$ based on the information at the current step $k$.
0737 2. **Filtering** of the prediction by incorporating the measurement associated to the step
0738 3. **Smoothing** of the state vector by walking back the steps and using information for the subsequent step $k+1$ to improve the estimate at the current step $k$.
0739 
0740 An illustration of these concepts is found in {numref}`kalman_filter`. Here,
0741 a series of three sensors is shown with measurements on them. The KF
0742 then predicts the track parameters at an intersection, shown in blue.
0743 Subsequently, a filtered set of parameters is calculated as a mixture between
0744 the measurement and the prediction. Not shown in this picture is the
0745 smoothing step.
0746 
0747 (kalman_filter)=
0748 :::{figure} /figures/tracking/kalman.svg
0749 :width: 400px
0750 :align: center
0751 Illustration of the KF. Two of the three stages, the prediction and the
0752 filtering are shown. The filtering updates the prediction with information from
0753 the measurement.
0754 :::
0755 
0756 
0757 In many cases, the first two phases run in tandem, with prediction and
0758 filtering happening alternatingly at each step. The smoothing phase is
0759 launched once the last measurement has been encountered.
0760 Starting from a state $k$, first, a prediction of the state vector at the
0761 next measurement location is obtained via
0762 
0763 (kf_pred)=
0764 $$
0765   \vec x_k^{k-1} = \mathbf F_{k-1} \vec x_{k-1},
0766 $$
0767 
0768 with the linear transport function from above. $\vec x_k^{k-1}$ is
0769 the prediction of the state vector at step $k$ based on step $k-1$. The next
0770 stage is the filtering. Here, the state vector is refined by taking into
0771 account the measurement at the current step. Following one of two variants of
0772 filtering from [^Fruhwirth:1987fm], the gain matrix formalism, the state
0773 vector is updated like
0774 
0775 $$
0776   \vec x_k = \vec x_k^{k-1} + \mathbf K_k \left( \vec m_k - \mathbf H_k \vec x_k^{k-1} \right),
0777 $$
0778 
0779 with the *Kalman gain matrix*
0780 
0781 $$
0782   \mathbf K_k = \mathbf C_k^{k-1} \mathbf H_k^\mathrm{T}
0783     \left(
0784       \mathbf V_k + \mathbf H_k \mathbf C_k^{k-1} \mathbf H_k^\mathrm{T}
0785     \right)^{-1}
0786     .
0787 $$
0788 
0789 Note that $\vec x_k$ is the filtered state vector at step $k$,
0790 based on information from previous steps and step $k$ itself. This is in
0791 contrast to $\vec x_k^{k-1}$, which is the prediction of the state vector at
0792 step $k$ based on $k-1$, and is used to calculate the filtered state vector.
0793 One input to these equations is the covariance matrix prediction $\mathbf
0794 C_k^{k-1}$ at step $k$ based on step $k-1$, which can be written as
0795 
0796 $$
0797   \mathbf C_k^{k-1}  = \mathbf F_{k-1} \mathbf C_{k-1} \mathbf F_{k-1}^\mathrm{T} + \mathbf Q_{k-1}
0798 $$
0799 
0800 in the linear version from [^Fruhwirth:1987fm], with the
0801 covariance $\mathbf C_{k-1}$ at step $k-1$, and the covariance $\mathbf
0802 Q_{k-1}$ associated with $\vec w_{k-1}$ from above. Also needed is $\mathbf
0803 V_k$, which is the covariance associated with $\epsilon_k$, effectively
0804 representing the measurement uncertainty.
0805 
0806 Similar to the state vector itself, the corresponding covariance matrix is
0807 also filtered using
0808 
0809 (kf_cov_pred)=
0810 $$
0811   \mathbf C_k = \left( \mathbb 1 - \mathbf K_k \mathbf H_k \right) \mathbf C_k^{k-1}.
0812 $$
0813 
0814 In the smoothing phase, the state vector at step $k$ is improved using the
0815 information from the subsequent step $k+1$ using
0816 
0817 $$
0818   \vec x_k^n = \vec x_k + \mathbf A_k \left( \vec x_{k+1}^n - \vec x_{k+1}^k \right).
0819 $$
0820 
0821 Here, $\vec x_{k+1}^n$ is the smoothed state vector and $\vec
0822 x_{k+1}^k$ the predicted state vector at the subsequent step $k+1$. Also
0823 needed is the *smoother gain matrix*
0824 
0825 $$
0826   \mathbf A_k = \mathbf C_k \mathbf F_k^\mathrm{T} \left( \mathbf C^k_{k+1} \right)^{-1},
0827 $$
0828 
0829 with the predicted covariance at step $k+1$, $\mathbf C_k^{k+1}$.
0830 Finally, the covariance at the current step $k$ can also be smoothed with
0831 
0832 $$
0833   \mathbf C_k^n = \mathbf C_k + \mathbf A_k \left(\mathbf C_{k+1}^n - \mathbf C_{k+1}^k \right) \mathbf A_k^\mathrm{T}.
0834 $$
0835 
0836 After smoothing, the parameter estimate at the first step contains information
0837 from all other measurement states. As mentioned above, in case the
0838 uncertainties entering the Kalman fit are Gaussian distributions without
0839 biases, the KF can be shown to be the optimal solution minimizing mean
0840 square estimation error. However, certain caveats exist. The KF assumes
0841 that a linear transport function $\mathbf F$ exists that can propagate the
0842 state vector. In the presence of inhomogeneous magnetic fields this is not
0843 the case. Instead of explicitly applying $\mathbf F$ to the state vector for
0844 the prediction, the ACTS KF turns to the numerical integration,
0845 discussed in [](#numerical-integration). With it, the prediction from
0846 [this equation](kf_pred) is simply the intersection of the extrapolated trajectory
0847 with the next sensitive surface. Aside from this, $\mathbf F$ is also used to
0848 transport the covariance between steps (see [here](kf_cov_pred)). Here, the
0849 semi-analytical method for covariance transport in the numerical integration
0850 can be used. $\mathbf F$ can then be identified with the transport
0851 Jacobian accumulated between surfaces.
0852 
0853 For smoothing, two possibilities exist to obtain the needed covariances from
0854 subsequent measurement steps. Either, the inverse transport Jacobian is used
0855 and applied, in a way similar to [this equation](kf_cov_pred), or the numerical
0856 integration is executed again in an inverse fashion, propagating from the
0857 subsequent step to the current one.
0858 
0859 ### Combinatorial Kalman Filter
0860 
0861 :::{tip}
0862 See [](ckf_core) for information on the CKF implementation found in the core
0863 library.
0864 :::
0865 
0866 As mentioned above, the Kalman formalism can be used for track finding. In this
0867 case, the smoothing step can be dropped, as the resulting track candidates are
0868 likely to be refit regardless, therefore saving some time. The CKF explores the
0869 event starting from an initial track seed. It does this by considering not only
0870 a single sequence of measurements, but allowing the branching of the fit at
0871 each sensitive surface that is encountered. To this end, all or a subset of
0872 measurements that are found on each surface are considered. Measurements are
0873 selected based on their compatibility with the current state estimate, by using
0874 their residuals. A predicted residual
0875 
0876 $$
0877   \vec r_k^{k-1} = \vec m_k - \mathbf H_k \vec x_k^{k-1},
0878 $$
0879 
0880 and a filtered residual
0881 
0882 $$
0883   \vec r_k = \vec m_k - \mathbf H_k \vec x_k
0884   ,
0885 $$
0886 
0887 can be defined, depending on which state estimate is compared with
0888 the measurement $\vec m_k$. Using the filtered residual, an effective
0889 $\chi^2$ increment
0890 
0891 $$
0892   \chi^2_+ = \vec r_k^\mathrm{T}
0893   \left[ \left( \mathbb 1 - \mathbf H_k  \mathbf K_k \right)  \mathbf V_k \right]^{-1}
0894   \vec r_k
0895 $$
0896 
0897 can be calculated. The global $\chi^2$ of the track candidate can
0898 be calculated as the sum of all $\chi^2_+$ across the steps. Measurements
0899 with a large $\chi^2_+$ are considered as outliers, which have low
0900 compatibility with the trajectory. By branching out for measurements below a
0901 certain $\chi^2_+$, and following the branches, a tree-like structure of
0902 compatible track candidates originating from a track seed is assembled. This
0903 feature is shown in {numref}`tracking_ckf`, which displays a circular
0904 trajectory, and a set of iteratively assembled track candidates. Basic
0905 quality criteria can be applied at this stage, to remove bad candidates. A
0906 dedicated [](#ambiguity-resolution).
0907 selects the candidates most likely to belong to real particle tracks.
0908 
0909 (tracking_ckf)=
0910 :::{figure} /figures/tracking/finding.svg
0911 :width: 300px
0912 :align: center
0913 Illustration of the way the CKF iteratively explores
0914 measurements from a seed outwards. Measurements are added successively, and
0915 can be shared between the resulting track candidates. Shown in green is a
0916 circular *real* trajectory.
0917 :::
0918 
0919 ## Ambiguity resolution
0920 
0921 Due to the combinatorial nature of track finding, and to achieve high
0922 efficiencies, this set of candidates is often large, and contains a
0923 non-negligible fraction of *fake* candidates. These fake candidates are either
0924 completely combinatorial, or arise from real particle measurements with
0925 combinatorial additions. Track candidates coming from a single seed necessarily
0926 share a common stem of measurements. Measurements can potentially also be
0927 shared between candidates from different seeds.
0928 
0929 One possibility to resolve this (as is done in e.g. ATLAS tracking) is an
0930 ambiguity resolution algorithm, that attempts to filter out as many undesirable
0931 tracks as possible. This is implemented by means of a scoring function, that
0932 combines properties of the track parameters. Higher scores are correlated with
0933 a larger probability to be a desirable track candidate. A larger number of hits
0934 results in an increase in the score, as longer compatible hit chains are less
0935 likely to be random combinations. On the other hand, missing hits in sensors
0936 where a hit was expected negatively impact the score.  Experiment specific
0937 scoring of hits from different subsystems is also implemented. The overall
0938 $\chi^2$ value computed for the track candidate also plays a role. Candidates
0939 that share hits with other candidates are penalized. Another quantity is the
0940 measured particle $p_\mathrm{Y}$, which enters the score, to give preference to
0941 tracks with large momenta. For tracks containing measurements with a
0942 substantial local $\chi^2_+$ at the start or end of the trajectory, the
0943 ambiguity resolution step can also attempt to remove these hits, and determine
0944 whether a refit without them yields a more favorable global $\chi^2$.
0945 
0946 Finally, the output of the ambiguity resolution step is a set of track candidates
0947 that contain an enhanced fraction of tracks from actual particles, while fake
0948 tracks are suppressed. They are passed into the final precision fit outlined
0949 in [](#track-finding-and-track-fitting), to extract the parameter estimate, and used
0950 for further aspects of reconstruction.
0951 
0952 ## Vertex reconstruction
0953 
0954 :::{tip}
0955 See [](vertexing_core) for a dedicated description of the vertexing as
0956 implemented in ACTS.
0957 :::
0958 
0959 A vertex is a point within the detector, where an interaction or a
0960 decay occurred. We distinguish between primary vertices (from
0961 collisions/interactions) and secondary vertices (from subsequent particle
0962 decays), see {numref}`vertexing_illust`. Primary vertices are further divided
0963 into hard-scatter and pile-up vertices. While primary vertices are located in
0964 the luminous region, secondary vertices are slightly displaced due to the finite
0965  life time of the decaying particle.
0966 
0967 (vertexing_illust)=
0968 :::{figure} /figures/tracking/vertexing.svg
0969 :width: 400px
0970 :align: center
0971 Illustration of a set of three vertices in a proton-proton
0972 collision. We distinguish between primary hard-scatter, primary pile-up, and
0973 secondary vertices.
0974 :::
0975 
0976 Vertices play an important role in higher-level reconstruction algorithms. For
0977 example, secondary vertices can help with the identification of particles:
0978 During *$b$-tagging*, a displaced vertex located inside a jet is a sign for the
0979 decay of a $b$-hadron.
0980 
0981 In analogy to track reconstruction, vertex reconstruction can be divided into
0982 two stages: vertex finding and vertex fitting. As a first step of vertex
0983 finding, we compute a rough estimate of the vertex position from a set of
0984 tracks. This first estimate can be calculated in many different ways, and is
0985 referred to as "vertex seed". Seeding algorithms differ for primary and
0986 secondary vertexing. For primary vertex seeding, one option is to use a
0987 histogram approach to cluster tracks on the $z$-axis[^phd:piacquadio:2010].
0988 This is based on the assumption that primary vertices will be close to the
0989 beamline. Other approaches model tracks as multivariate Gaussian distributions
0990 and identify regions of high track density as vertex seeds[^phd:schlag:2022].
0991 For secondary vertexing, seeds are formed from pairs of reconstructed tracks as
0992 the constraint to the beamline does not apply.
0993 
0994 Once a vertex seed is determined, tracks that are compatible with it are
0995 selected as part of the vertex finding.
0996 
0997 Before the vertex fit, we linearize tracks in the vicinity of the vertex seed
0998 under assuming that they follow a helical (for constant magnetic field) or
0999 straight (for no magnetic field) trajectory[^phd:piacquadio:2010]. The vertex
1000 fitter then uses this linearization to improve the position of the vertex seed.
1001 Furthermore, the track momenta are refitted under the assumption that the tracks
1002 originate at the vertex[^Fruhwirth:1987fm] [^billoirfitting:1992] .
1003 
1004 One issue with an approach like this is that the assignment of tracks to
1005 vertices is ambiguous. As an improvement, one can perform a multi-vertex fit,
1006 where vertices compete for tracks. This means that one track can be assigned to
1007 several vertices. Their contribution to each vertex fit is determined by a
1008 weight factor, which, in turn, depends on the tracks' compatibility with respect
1009 to all vertices[^fruwirth:amvfitting:2004].
1010 
1011 A flowchart of a multi-vertex reconstruction chain is shown in
1012 {numref}`vertexing_flowchart`.
1013 
1014 (vertexing_flowchart)=
1015 :::{figure} /figures/tracking/vertexing_flowchart.svg
1016 :width: 600px
1017 :align: center
1018 Simplified flowchart of multi-vertex reconstruction. From a set of seed tracks,
1019 we first compute a rough estimate of the vertex position, i.e., the vertex seed.
1020 Then, we evaluate the compatibility of all tracks with the the latter. If a
1021 track is deemed compatible, it is assigned a weight and attached to the vertex
1022 seed. Next, the vertex seed and all previously found vertices that share tracks
1023 with it are (re-)fitted. Finally, after convergence of the fit, we check whether
1024 the vertex candidate is merged with other vertices and discard it if that is the
1025 case. For the next iteration, all tracks that were assigned to the vertex seed
1026 and that have a weight above a certain threshold are removed from the seed
1027 tracks.
1028 :::
1029 
1030 [^phd:gessinger:2021]: Gessinger-Befurt, Paul, 30.04.2021. Development and improvement of track reconstruction software and search for disappearing tracks with the ATLAS experiment. [10.25358/openscience-5901](https://doi.org/10.25358/openscience-5901)
1031 [^Fruhwirth:1987fm]: R. Frühwirth, 1987, Application of Kalman filtering to track and vertex fitting, , [11.1016/0168-9002(87)90887-4](https://doi.org/10.1016/0168-9002(87)90887-4)
1032 [^phd:piacquadio:2010]: G. Piacquadio, 2010, Identification of b-jets and investigation of the discovery potential of a Higgs boson in the $W H \rightarrow l \nu \bar{b} b$ channel with the ATLAS experiment.
1033 [^phd:schlag:2022]: B. Schlag, 2022, Advanced Algorithms and Software for Primary Vertex Reconstruction and Search for Flavor-Violating Supersymmetry with the ATLAS Experiment.
1034 [^billoirfitting:1992]: P. Billoir et al., 1992, Fast vertex fitting with a local parametrization of tracks.
1035 [^fruwirth:amvfitting:2004]: R. Frühwirth et al., 2004, Adaptive Multi-Vertex fitting.