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 Kalmanfilter; Matchingwith 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 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.
The MpdRoot environment also uses another method of track reconstruction–L1 (CBM) tracking. Tracks are usually defined by specifying their integer identification number, the particle code (integer code also known as the “PDG code”from the list by the Particle Data Group which maintains a standard for designating Standard Model particles and resonances), the parent track (if any), anda 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 theprimary tracks extrapolation at the origin. The global averageof this distribution is the vertex position. The figure 1 shows the place of event reconstruction in the processing chainforexperimental and simulated data.
Figure1.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, run_reco_Mpd.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:100.
The main macro lines are described below. On the first steps of the macro all libraries required for reconstruction are loaded:
gROOT->LoadMacro(“$VMCWORKDIR/macro/run/Mpdloadlibs.C”); Mpdloadlibs();
Then there construction macro creates FairRunAna (runanalysis) class.To set input file with simulated or experimental data and output file with reconstructed data in DST format, the following lines are executed:
fRun->SetInputFile(inFile);fRun->SetOutputFile(outFile);
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 benoted.Init() function initializes task and its variables and is executed inside FairRunAna::Initfunction.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 run_reco_Mpd.C macro:
MpdTof1HitProducer* tof1HP = new MpdTof1HitProducer();fRun->AddTask(tof1HP);
In general, a task can be added not only to the FairRunAna instance but also to another task,i.e.all tasks canbe 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:
FairRunAna* ana = FairRunAna::Instance();
FairRuntimeDb* rtdb = ana->GetRuntimeDb();
FairBaseParSet* baseParSet=(FairBaseParSet*) rtdb->getContainer(“FairBaseParSet”); //and then use gGeoManager
The figure 3 presents the mainmodulesof the MpdRoot frameworkand their relationshipduring the reconstruction.
Figure3. 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.