Event reconstruction is the process of interpreting the electronic signals produced by the detector to determine the original particles that passed through, their momenta, directions, and the primary vertex of the event. Event reconstruction consists of the following main steps:
- Hit reconstruction in subdetectors;
- Track reconstruction usually composed of: Searching for track candidates in main tracker; Track propagation, e.g. using Kalman filter; Matching with other detectors (global tracking)
- Vertex finding;
- Particle identification
The tasks for charged-track reconstruction in experimental high energy physics are pattern recognition (i.e. track finding) and track fitting. The common approach to the track reconstruction problem is based on the Kalman filtering technique. The Kalman filtering method provides a mean to do pattern recognition and track fitting simultaneously. The multiple scattering can also be handled properly by the method. The Kalman filter is a set of mathematical equations that provides an efficient computational (recursive) solution of the least-squares method.
The algorithm starts from track candidates (“seeds”), for which vectors of initial parameters and covariance matrices are evaluated. Then each track is propagated to some surface (detector or intermediate point). The new covariance matrix can be obtained using the Jacobian matrix of the transformation, i.e. the matrix of derivatives of propagated track parameters with respect to current parameters.
Tracks are usually defined by specifying their integer identification number, the particle code (integer code also known as the “PDG code” from the Particle Data Group maintaining a standard for designating Standard Model particles and resonances), the parent track (if any), and a particle object. In addition, each track has a (possibly empty) list of daughters that are secondary tracks originating from it. Precise knowing of the primary events vertex position essentially improves the momentum resolution and secondary vertices finding efficiency. The primary vertex is found by extrapolating all primary tracks reconstructed back to the origin, and its resolution is found as the RMS of the distribution of the primary tracks extrapolation at the origin. The global average of this distribution is the vertex position. The figure 1 shows the place of event reconstruction in the processing chain for experimental and simulated data.
Figure 1. The chain of event processing for experimental and simulated data To reconstruct MPD events of particle collisions with a fixed target registered by the MPD facility, runReco.C macro is used. Function parameters of the macro: TString inFile–path of the input file with MC data, default value: evetest.root; TString outFile–path of the result file with reconstructed DSTdata, default: mpddst.root; Int_t n StartEvent–number (start with zero) of the first event to process, default: 0; Int_t nEvents–number of events to process(0-all events of given file), default:10.
The main macro lines are described below. On the first steps the macro loading all libraries required for the reconstruction is included:
Then there construction macro creates FairRunAna (run analysis) class. To set input file with simulated or experimental data and output file with reconstructed data in DST format, the following lines are executed:
FairSource *fFileSource = new FairFileSource(inFile);
The data reconstruction and analysis in the MpdRoot is organized by a list of analysis tasks (tasks can also be used in the simulation with FairRunSim class). Each task participating in event processing is inherited from the base class FairTask (TTask). Two main functions of tasks can be noted. Init() function initializes task and its variables and is executed inside FairRunAna::Init function. Exec(Option_t* option) function contains the main function code of the task and is called by FairRunAna::Run function. The scheme of task initialization and execution is presented on the figure 2.
Figure 2. The scheme of task initialization and execution
The following example demonstrates task definition and adding to the task list in runReco.C macro:
MpdClusterFinderMlem* tpcClusFind = new MpdClusterFinderMlem(); fRun->AddTask(tpcClusFind);
In general, a task can be added not only to the FairRunAna instance but also to another task, i.e. all tasks can be organized into a hierarchy. If you want to get detector geometry from the given input file in your analysis task (if gGeoManager has not been known yet), you can execute:
FairRuntimeDb* rtdb = fRun->GetRuntimeDb(); FairBaseParSet* baseParSet=(FairBaseParSet*) rtdb->getContainer("FairBaseParSet");
and then use gGeoManager.
The figure 3 presents the main modules of the MpdRoot framework and their relationship during the reconstruction.
Figure 3. The scheme of the MpdRoot modules in the reconstruction
The result DST file contains reconstructed (physical and geometrical) data about particles and particle tracks of collision events registered by the MPD facility.