Calorimeter response simulation

The routine ZDCALO then decides the fate of the particle as follows :

If the particle passes under threshold, or was not seen due to inefficiency, the following detectors are also checked. Minimum ionising particles are always checked in all detectors it crosses.

For seen showering particles, the energy response is simulated by generating a gaussian random-number with expectation value equal to the true energy, and with the standard deviation calculated according to the formula

\begin{displaymath}
\sigma_{E_{seen}} = \sqrt{ R^{2}_{1}/E^{2}_{true} + R^{2}_{2} }
\end{displaymath}

$R_1$ and $R_2$ are coefficients given in the geometry description file by the user. For seen minimum ionising particles, the response is simulated by a gaussian with fixed expectation value and standard deviation, both given by the user.

The shower axis is then simulated. Several possibilities can be chosen for this step. Either the calorimeter is fine-grained. ie. measures the shower with a spatial granularity much smaller than the size of the shower, or it is coarse-grained, with modules of a size comparable to the size of the showers. In the former case, both the shower start-point and it's axis is measured by the calorimeter alone, and will be simulated by generating four gaussian random-numbers, with expectation-values equal to the true values, and standard-deviations according to the four parameters given, two parameters for the position of the shower start-point, and two for the polar and azimuthal angles of the shower in the calorimeter. These four numbers are constants, ie. with no energy dependence. In the latter case, only the shower start-point will be simulated, and it is simply given by the position of the centre of the module hit. There are possibilities to specify different ways to subdivide the calorimeter in modules: ($\phi$,z) or ($\phi$, $\theta$) for barrel calorimeters and ($\phi$,R) or (x, y) for forward calorimeters. The error on the position is set to the module width devided by $\sqrt {12}$.

The next step is to calculated the particle identification code:

                      EM calorimeter   Had. calorimeter
                         shower           shower

   charged particle      e+-                pi+-

   neutral particle      gamma              K0_L

Finally, the measured momentum of the particle is calculated, using the simulated seen energy and shower axis directions. In many cases, the direction of the momentum is better calculated by the line between the main vertex and the start-point of the shower (neutrals) or by the measurement in the tracking detectors (charged). However, with the way SGV does the calculation, the values from the calorimeter reflects what was actually measured by the calorimeter alone. The user should feel free to replace this in the analysis code if wanted !

Hence, SGV does NOT simulate the development of the showers in the calorimeters. This is a quite conscious choice; simulating shower development is taking a large fraction of the time used in a full scale detector simulation, and if implemented in SGV would largely denigrate the idea of the program (that is, SPEED !). However, since finding which detectors the particle passes through and the actual simulation of the response are separated (routines ZTCALO and ZDCALO respectively), the user can replace the latter with a routine that does perform full shower development simulation, if that is really unavoidable.