![]() |
Project
|
Contains all the tools to:
Fit a track to the clusters attached to it, using the Kalman Filter.
The seeds for the track parameters and covariances are computed using the position and resolution of the 2 clusters in the last two fired chambers. An estimate of the bending momentum is obtained by assuming that the track is coming from the vertex (0,0,0) and crosses a constant magnetic field (both with sufficiently large uncertainties to do not bias the final result). The initial track parameters and covariances are then propagated to every clusters, up to the most upstream one, and are updated at each step by "attaching" the cluster with the Kalman filter. The dispersion from MCS is added to the covariances each time a chamber is crossed. This algorithm gives the track parameters and covariances at the first cluster (the last attached one). Optionally, the Smoother algorithm can be run to fit back the track and compute the track parameters and covariances at every clusters. If the pointer to the parameters at one of the attached clusters is given, the fit is resumed starting from this point.
This is a reimplementation of the original tracking algorithm from AliRoot.
It takes as input a list of reconstructed clusters, the clusters' position being given in the global coordinate system. It returns the list of reconstructed tracks, each of them containing (in the TrackParams) the pointers to the associated clusters.
The original tracking algorithm is described in detail here: https://edms.cern.ch/ui/file/1054937/1/ALICE-INT-2009-044.pdf
The main difference with the original implementation is in the order the tracking of the initial candidates (made of clusters in stations 4&5) is performed. In the original implementation, all candidates are propagated to station 3 to search for compatible clusters, tracks are duplicated to consider all possibilities, then all candidates are propagated to station 2, and so on. In some events with very high multiplicity, it results in a temporarily huge number of candidates in memory at the same time (>10000) and a limitation is needed to abort the tracking in such case to do not break the reconstruction. In the new implementation, each candidate is treated one by one. The current candidate is propagated to station 3 to search for compatible clusters, duplicated to consider every posibilities, then each of them is tracked one by one to station 2, then to station 1. This limits drastically the number of candidates in memory at the same time, thus avoiding to abort the tracking for any event, while reconstructing exactly the same tracks in the end.
This is the implementation of the new tracking algorithm.
It takes as input a list of reconstructed clusters, the clusters' position being given in the global coordinate system. It returns the list of reconstructed tracks, each of them containing (in the TrackParams) the pointers to the associated clusters.
In all stations, the search for compatible clusters is done in a way to consider every possibilities, i.e. every combinations of 1 to 4 clusters, while skipping the already tested combinations. This includes subsets of previously found combinations, so that we always attach the maximum number of clusters to a candidate (e.g. if we can attach 4 clusters in one station because of the overlaps, we do not consider the possibility to attach only 3, 2, or 1 of them even if the track would still be valid).
A more detailed description of the various parts of the algorithm is given in the code itself.
Take as input the list of all MCH tracks (TrackMCH) in the current time frame, the list of all associated clusters (Cluster) and the list of ROF records (ROFRecord) pointing to the tracks associated to each interaction, with the data description "TRACKSIN", "TRACKCLUSTERSIN" and "TRACKROFSIN", respectively. Send the list of all refitted MCH tracks (TrackMCH) in the time frame, the list of all associated clusters (Cluster) and the list of ROF records (ROFRecord) pointing to the tracks associated to each interaction in three separate messages with the data description "TRACKS", "TRACKCLUSTERS" and "TRACKROFS", respectively.
--l3Current xxx
and --dipoleCurrent yyy
allow to specify the current in L3 and in the dipole to be used to set the magnetic field.
Take as input the list of all clusters (Cluster) in the current time frame, with the data description "CLUSTERS", and the list of ROF records (ROFRecord) pointing to the clusters associated to each interaction, with the data description "CLUSTERROFS". Send the list of all MCH tracks (TrackMCH) in the time frame, the list of all associated clusters (Cluster), the list of ROF records (ROFRecord) pointing to the tracks associated to each interaction and the list of processing errors (Error) in four separate messages with the data description "TRACKS", "TRACKCLUSTERS", "TRACKROFS" and "TRACKERRORS", respectively. Depending on the options, it may also need as input the list of digits (Digit) associated to clusters, with the data description "CLUSTERDIGITS", and send the list of digits (Digit) associated to tracks, with the data description "TRACKDIGITS".
--original
allows to use the original track finding algorithm (the new one is used by default).
--disable-magfield-from-ccdb
allows to disable the loading of the magnetic field from the CCDB. In this case, the magnetic field is loaded from the GRP file if available. Otherwise, it is created using the provided currents in L3 and in the dipole.
--grp-file
allows to set the name of the GRP file containing the magnetic field.
--l3Current xxx
and --dipoleCurrent yyy
allow to specify the current in L3 and in the dipole to be used to set the magnetic field.
--disable-time-computation
allows to disable the computation of the track time from the associated digits. Instead, the track time is set to cover the ROF duration.
--digits
allows to send the list of digits associated to the tracks.
--debug x
allows to enable the debug level x (0 = no debug, 1 or 2).
--mch-config "file.json"
or --mch-config "file.ini"
allows to change the tracking parameters from a configuration file. This file can be either in JSON or in INI format, as described below:
--configKeyValues "key1=value1;key2=value2;..."
allows to change the tracking parameters from the command line. The parameters changed from the command line will supersede the ones changed from a configuration file.
clusters.in
, run the new tracking algorithm, read the associated vertex from the file vertices.in
, extrapolate the tracks to the vertex and write the result (tracks at vertex, MCH tracks and associated clusters) in the file tracks.out
:tracks.in
, refit them and write them in the file tracks.out
: