![]() |
KaliVeda
Toolkit for HIC analysis
|
Particle identification in KaliVeda is handled by the KVIDTelescope class family. A basic KVIDTelescope associates 2 successive detectors on any of the particle trajectories through the array which in principle can provide \(\Delta E\)- \(E\) identification. Specialised classes are available to handle single-detector identification methods as required (such as PSA in silicon detectors for FAZIA (KVFAZIAIDSiPSA), or fast-slow identification in CsI(Tl) crystals for INDRA (KVIDINDRACsI)).
The actual identification procedure can be handled in different ways, but the method which attempts to identify whatever passed through the detector(s) is
x and y here refer to coordinates in a 2-D identification map (for \(\Delta E\)- \(E\) identification we would have x= \(E\) and y= \(\Delta E\)). The results of the identification attempt are returned in the KVIdentificationResult object passed as first argument. This is a very detailed report on how well (or not) the identification went (see KVIdentificationResult for details).
As the x and y arguments have default values, this method can be called without providing their values, and indeed this is how it is used most of the time. In this case the methods
are used to provide the coordinates for the identification map. As will be seen below, the values to be used for the coordinates are automatically computed even if several identification grids are assigned to the same telescope.
The most common way of implementing the identification of particles is by defining identification grids, which are a collection of lines and contours in a 2-D map which can be used to reject or accept particles, assign them a value of \(Z\) and/or \(A\), depending on where they fall in the map, and this in turn depends on how we assign \((x,y)\) coordinates to each particle.
This decision is made when histograms are prepared from data in order to draw the identification grid. Naively, for a simple \(\Delta E\)- \(E\) telescope, one would think to fill this histogram as follows:
using the calibrated energy of each of the two detectors (see Detector signals and calibrations). However this is unlikely and discouraged for two reasons:
One is therefore more likely to use some 'raw' data signal for each detector, or a combination of them (the following example is just to illustrate the possibilities, not a serious suggestion):
assuming of course that all of the above signals exist for each of the two detectors (see Detector signals and calibrations).
Next you draw your grid(s), and as long as you define the VARX, VARY parameters (using the graphical interface, KVIDGridEditor) to be
then when the grid will be loaded by the identification telescope using
the default KVIDTelescope::GetIDGridCoords() method will automatically return the correct values for your grid, according to the expressions in VARX and VARY.
Some identifications require several grids for them to be correctly handled: for example, when high gain and low gain signals are available for one or both of the detectors concerned. This can be handled by KVIDTelescope, you just need to give the order in which the grids should be tried in an environment variable (.kvrootrc file):
Identification with each grid will be attempted in the order given; the first successful identification (with quality code < 4; see KVIDZAGrid) will be accepted.
When data is reconstructed, each reconstructed nucleus in each event retains all informations on each and every identification which was attempted for it, including of course the one that was finally chosen to identify it. You can check how it all went by inspecting each reconstructed nucleus in the following ways.
Assuming that you have opened a ROOT file containing a TTree with reconstructed events, connected a KVReconstructedEvent to the appropriate branch in the TTree, and built the detector array corresponding to the data with all parameters for the corresponding run being set (see 'Debugging reconstructed events'), let us consider the following reconstructed nucleus:
This reconstructed nucleus was detected by the FAZIA array, apparently stopping in a SI2 detector and identified as a \(Z=30\) (zinc) nucleus by a SI1-SI2 identification telescope:
As can be seen at the top of the KVReconstructedNucleus::Print() output, there were 2 identification attempts made for this nucleus:
The order of these identification results represents the order in which the identification attempts were made during the reconstruction: first of all, the first identification telescope containing the detector in which the nucleus stopped (but not any detector placed 'behind' i.e. further away from the target than the 'stopping detector'), and then each identification telescope in turn moving up the particle's reconstruction trajectory towards the target. In this case, the particle punches through the SI1 detector in which pulse shape analysis (PSA) identification is used, therefore it is not surprising that the identification using this method is not coherent with the one from the \(\Delta E-E\) telescope, SI1-SI2. Unless (unexpected) inconsistencies are found between the different identification methods, it is the first successful identification which wins, as is the case here.
To look in more detail at the identifications, we need to retrieve the KVIdentificationResult for each one in the list above. For the 'winning' identification, this can be done like so:
as KVReconstructedNucleus::GetIdentifyingTelescope() returns the address of the KVIDTelescope in which the particle was identified. For the other identification result in the list, you can do one of:
The equivalent of these last two for the 'identifying telescope' would be:
See the KVIdentificationResult class documentation for the list of informations which are available for each identification attempt
Each identification is associated with a grid used to deduce particle identity from the correlations in a 2-dimensional map. In order to retrieve each grid, each identification result contains the name of the grid that was used for identification (there can be more than one grid for certain identification telescopes):
For identifications other than the 'winning' identification, you need to retrieve the KVIDTelescope from the particle's reconstruction trajectory using the type which is stored in the identification result:
Once you have pointers to the grid and the identification telescope, you can retrieve the coordinates used for the present identification. First of all, we can ask for the symbolic names of the \(x-\) and \(y-\)coordinates, which usually correspond to names of signals (KVDetectorSignal) associated with the detectors in the telescope:
Now, because when reconstructed events are read in from a file, we set the raw signal values of the corresponding detectors in the array to the values measured in the event, you can retrieve the coordinates used in the identification map to identify this particle by doing:
If you look back to when we first printed all the informations on this particle, you will see that these are indeed the values of the I1.Amplitude and QH1.FPGAEnergy signals for the detector SI1-141 in the event.