Home Calorimeters E-mail Notes Meetings Subsystems Search

Olivier Callot
8 September 2000

The Calorimeter digitisation

This short note describes the CaloDigitisatioAlgorithm, and the options and parameters it uses. Also some questions and issues to improve are listed.

1- Basic principles

The digitisation algorithm takes as input a collection of objects of type MCCaloSummedDeposits, and produces a collection of MCCaloDigit objects. As this algorithm makes sense only for Monte-Carlo, there is no problem of choosing the type of output. In fact, the output is a collection of objects having the CaloDigit interface, so that they can be processed later as if it was online data. The processing has two steps, a digitisation (conversion to ADC count and back to energy) and a zero suppression.

2- Digitisation

From the input data, a simple channel per channel processing is performed, with the following steps:

  1. Convert the energy deposited in the active material (activeE) to a calibrated energy, corresponding to the total energy loss including in the passive material. This is controlled by the DetectorElement attribute 'ActiveToTotal'
  2. Get the gain of the cell, from the DetectorElement. It is described by two DetectorElement attributes:
    • EtInCenter : The maximum transverse energy to saturate the ADC a 0 degree.
    • EtSlope : The change in this maximum transverse energy as function of the sine of the angle of the cell.  In fact, a constant maximum Energy can be just defined with EtInCenter=0, EtSlope=MaximumEnergy, this is the Prs/Spd case.
  3. Convert the energy to (float) ADC count. At this point, one applies a gain fluctuation, controlled by the algorithm parameter 'GainError' which is a fractional gain error, typically .01
  4. Add a coherent noise, identical for all cells, defined as a Gaussian whose width is controlled by the algorithm parameter 'CoherentNoise', expressed in ADC count.
  5. Add an incoherent noise, defined as a Gaussian whose width is
    controlled by the algorithm parameter 'IncoherentNoise' expressed
    in ADC counts.
  6. Convert to integer, apply a saturation if the result is bigger than 95 % of the full scale. In this case the output is the full scale, defined by the DetectorElement attribute 'AdcMax'
    In the case of the Spd, we want a yes/no output, and this is obtained by a 1 bit ADC (adcMax=1). The only caution is to remove the previously mentioned 95 % saturation. The adc value is either 0 or 'EtSlope'. CAUTION: As we do rounding in the digitisation, the threshold is half the maximum ADC value 'EtSlope'.
  7. Convert back to energy, ready to store.

3- Zero suppression

Once the cell is converted, one has to decide if one should output it. Three options are implemented, selected by the algorithm parameter 'ZsupMethod'.

  1. Option "NO": No zero suppression, every channel is output. In fact one puts a very negative threshold on the ADC.
  2. Option "1D": A threshold is applied on each cell. This threshold is expressed in ADC counts. Every cell with content greater or equal to the threshold, defined by the algorithm parameter 'ZsupThresholkd' is output.
  3. Option "2D": A (higher) threshold is applied on each cell. This cell and all its neighbours (in the same area) are output. The same parameter is used to define the threshold. The list of neighbours is provided by the DetectorElement for each cell.

As the Prs and Spd are read by the same FE card, the foreseen Zero Suppression will be performed is a special way: The Prs data is output is over Threshold or if the SPd in the same cell has fired the trigger (= non zero digit). To simulate that feature, the Spd has to be digitised first, and its result passed to the Prs digitisation (option TagData), which uses it to force the corresponding Prs channels to be output independently of their content.

4- Parameters

Algorithm options are in /options , with the name of the instance of the algorithm, for example 'EcalDigi.opts' for the ECAL digitisation.

EcalDigi.InputData = "/Event/MC/Ecal/SummedDeposits";
EcalDigi.OutputData = "/Event/MC/Ecal/Digit";
EcalDigi.TagData = "";
EcalDigi.Detector = "/dd/Structure/LHCb/Ecal";
EcalDigi.CoherentNoise = 0.3 ;
EcalDigi.IncoherentNoise = 1.4 ;
EcalDigi.GainError = 0.01;
EcalDigi.ZsupMethod = "2D";
EcalDigi.ZsupThreshold = 20 ; 

DetectorElement attributes in /Ecal/structure.xml

<EtInCenter value = "12000." /> <!-- 12 GeV Et Max in centre -->
<EtSlope value = "-7000." /> <!-- 12 - .3*7 = 10 GeV at 300 mrad -->
<AdcMax value = "4095" />
<ActiveToTotal value = "6.1" /> 

5- Problems and future evolution

The repartition between DetectorElement attributes and algorithm options is not based on clear decisions. The gain map is defined by the first two attributes, in the future it can evolve to a calibration map, so maybe it is better to have it from the DetectorElement. The rest can be in one or the other.