We can ‘filter’ simulated data either in order to establish the geometrical (or other) efficiency of a given experimental set-up, or to make a comparison between theoretical predictions and measured data which includes the biases and distortions introduced by the experimental apparatus.
In the KaliVeda framework, a complete description of some experimental set-up is given by an instance of the KVMultiDetArray
class; theoretical or simulated data are stored in collections of KVSimEvent
objects; and experimental data reconstructed from measured energy losses etc. are handled by KVReconstructedEvent
objects.1 The method which simulates the detection and reconstruction of simulated heavy-ion collisions is
void KVMultiDetArray::DetectEvent(KVEvent* input, KVReconstructedEvent* output, const char* det_frame = "")
where
KVEvent* input
is the simulated data event to be treated;KVReconstructedEvent* output
is the reconstructed event which will be filled with the result of the detection and reconstruction;const char* det_frame
is an optional argument which can be used to indicate the name of the kinematical reference frame to be used for calculating particles’ energy losses in detectors, in case their default reference frame does not coincide with the laboratory/detector frame (see Defining kinematical reference frames).There are many possible replies to the question ‘What does a filter do?’. Three of them are implemented as types of filter which can be chosen by calling the method
void KVMultiDetArray::SetFilterType(Int_t)
with one of these values:
KVMultiDetArray::kFilterType_Geo
(Geometric filter)Simulate effects of detector geometry on simulated events.
All charged particles with non-zero kinetic energy in the detector reference frame are kept if their initial trajectory would hit at least 1 detector in the array. Each such particle is copied into the reconstructed ‘detected’ event with its simulated Z, A, and kinetic energy, but its direction of motion is drawn at random within the acceptance of the hit detector.
No treatment of pile-up in detectors/telescopes, i.e. if 4 particles all hit the same detector, they will all be counted as ‘well identified’. Also if a particle stops in the first stage of a ΔE-E telescope, it is considered ‘well identified’.
KVMultiDetArray::kFilterType_GeoThresh
(Geometry + thresholds)Geometric filter with thresholds: charged particles are considered ‘detected & well identified’ if they have enough energy to leave the target (if present), and if their remaining energy is sufficient to punch-through the first stage of a ΔE-E telescope in the array.
KVMultiDetArray::kFilterType_Full
(Full simulation of experimental events)Full simulation of detection of particles by the array. the calibration parameters for the chosen run are inverted in order to calculate raw acquisition data.
By default, the ROOT geometry package is used to calculate particle trajectories through multidetector array geometries.
After filtering, the simulated event whose address was given as first argument to KVMultiDetArray::DetectEvent
(see Simulating the detection of an event) will contain full information on the ‘detection’ of each particle.
Particles are sorted into groups according to detection status (see Labelling & sorting particles), and parameters are added to each particle (see Adding parameters to particles) containing all other information such as the list of detectors seen by the particle, its energy loss in each, where it stopped, etc. etc.
The groups to which a particle is affected can be listed by calling method KVParticle::ListGroups()
. See Labelling & sorting particles for details on using particle groups.
Detection and/or identification of particle failed. To give additional information on the reason for this failure, the particle will also be classed in one of the following groups:
Particle detection was successful, and at least partial identification is possible.
complete particle identification impossible, for one of the following reasons:
KVIDTelescope::CheckTheoreticalIdentificationThreshold
).The list of parameters (a KVNameValueList
object) associated with a particle can be accessed via method KVNameValueList* KVParticle::GetParameters()
. It is also displayed when KVParticle::Print()
is called. For more details, see Adding parameters to particles.
Depending on the informations on particle detection stored in the simulated event, and on the selected Filter type, the KVReconstructedEvent
object will contain a reconstructed nucleus for each detected particle.
All particles with Detection Status Group DETECTED
or STOPPED IN TARGET
or THRESHOLD
are reconstructed and considered to be well-identified. The charge, mass, and energy of the detected particle are the same as that of the simulated particle. The direction of motion (in the laboratory/detector frame) are randomised over the surface of the detector in which the particle stopped.
A check is made for pile-up in the stopping detector. Two or more particles stopping in the same detector will lead to the creation of as many reconstructed nuclei in the event, which could not occur experimentally: the different particles would be seen as one ‘hit’. In this case, all but one of the particles which stop in the same detector will be given the status KVReconstructedNucleus::kStatusPileupGhost
.