ATLAS Offline Software
|
The package PixelDigitization provides the simulation of the pixel detector response. It reads the pixel detector hits generated by Geant4 and 'digitizes' the information. In addition several other detector effects not necessarily related to hits are treated. The result is output as so called RDO objects. These are then read by e.g the clustering and tracking algorithm further upstream of the processing.
The package consists of three groups of classes:
Together with SCT_Digitization, the package inherits functionality from SiDigitization. Briefly they are:
1. SiDigitization | : contains common framework with SCT_Digitization |
2. SiChargedDiodeProcessor | : charged diode processor; all charge modifiers must inherit from this class |
3. SiChargedDiode | : a class that contains the charge of a given pixel element |
4. SiChargedDiodeCollection | : the container used internally to keep track of the generated charges |
5. SiHelper | : static class with members operating on the SiChargeDiode status flag |
6. SiRandomDisabledCellGenerator | : disables random pixels according to a given probability |
NOTE: the current software design of the charge processors should be migrated to using (private) AlgTools (F.T, 26/7/2007)
In the table below, all the classes in the package are summarized. Columns 2-4 refers to how they operate on the collection of charged diodes.
Class | Modifies | Adds | Removes | Description |
PixelDigitization | X | X | X | main class |
PixelSimpleSurfaceChargesGenerator | X | generates the initial charge collection from the G4 hits | ||
PixelChargeSmearer | X | adds random gaussian noise to existing charges | ||
PixelDiodeCrossTalkGenerator | X | generates cross talk | ||
PixelGangedMerger | X | X | merges ganged pixels | |
SpecialPixelGenerator | X | simulates special pixels using special pixel maps, simulated or from cond. DB | ||
PixelTimeWalkGenerator | X | X | simulates the timing of the RDOs | |
PixelCellDiscriminator | X | simulates the discrimination |
The order of the following subsections follow the actual order they are executed.
Uses class PixelSimpleSurfaceChargesGenerator
The algorithm finds the entry and exit points of the track in the detector element. This distance is divided into a number of steps (default = 5). It is then assumed that an equal fraction of the total charge is deposited at each step. The obtained charge is then split into several charges (default = 100), each of which are then diffused to the surface of the detector. It takes into account the Lorentz angle and the stochastic nature of the diffusion.
Uses class PixelDiodeCrossTalkGenerator
Cross talk is generated if the original pixel has a minimum charge of 3 times the discriminator threshold. If that is true, the neighboring pixels with one side in common will be given a charge. The length of the common side is referred to as intersection length. For a neighbor with the same column number this length will be 400 microns (600 for long pixels). If the row number is the same, the length is then 50 microns. The deposited charge is proportional (jobOpt DiodeCrossTalk) to the product of this length and the original charge.
Uses class PixelChargeSmearer
Each charge created up to this point is smeared with a gaussian of a given amplitude (currently 200e-). This does not create any new charged pixels.
Uses class PixelNoisyCellGenerator
The purpose with this is to add noise to random pixels irrespective if they have hits or not. As with the thermal noise, this adds a gaussian. However, in this case the mean is 3 sigma over the discriminator threshold with the same spread as the threshold. This will both modify existing charges and create new charged pixels.
Uses class PixelGangedMerger
This modifier merges ganged pixels and masks out the pixel not corresponding to the read out electronics (is the mask out really needed??).
Uses class SpecialPixelGenerator
In reality the detector will have problematic pixels that either will be completely silent or noisy. They are masked out using special pixel maps. The maps may be obtained from conditions database or simulated using a set of probabilities. If they are simulated, there is the option of simulating various Interval Of Validity (IOV) scenarios. All types of special pixels are defined here.
In addition to the special pixel maps, pixels may also be randomly disabled independently of the special pixel map. This is to simulate random inefficiencies. The frequency is controlled through a single probability.
Uses class SiRandomDisabledCellGenerator
The purpose of this modifer is to randomly disable pixelson an event-by-event basis. This simulates random inefficiences arising from non-masked pixels being temporarily disabled. A pixel is declared as disabled if a flat random number is below RndDisableProb.
Uses class PixelTimeWalkGenerator and PixelCellDiscriminator
The timing is simulated as follows:
If the obtained BCID is outside the range [0,timeBCN-1], the pixel is flagged as below threshold and thus removed from further processing.
The discrimination compares the charge of the pixel with a threshold drawn randomly from a gaussian with mean and width from conditions database. Optionally, they may be set in jobOptions (DiscrThresh and DiscrThreshVar). If the charge is below the obtained threshold, the pixel is flagged as such.
The TOT is calculated using a paremtrization where the parameters are either supplied by the user or taken from cond DB.
For each valid charge collection, a RDO is created and stored in storegate.In addition a collection of SDO objects (not clear if they are used??). The collection contains a map between the deposited charge and the truth (InDetSimData).For debugging purposes there exists an option RDOfromSPM. If set, a RDO collection will be created containing just the special pixel map. The RDOs in this collection will have a fixed ToT and time. Its name is derived by adding the postfix "_SPM" to the RDO collection name. Both RDO collections can be viewed using for example the PixelMonitoring package.