The calling sequence (with links to the source code) is:
This module takes geant hits (input verghit) combined with various
calibration and geometry parameters (dMvdPar, dMvbPar, dMvcPar, dMvdTrigPar,
dMvdGeo, dMvbGeo, dMvcGeo) and produces a list of digitized hits in
the output raw data tables for the barrel (dMvbRaw) and pads (dMvcRaw).
The first step of this process is to fill local internal arrays
containing the energy loss (in keV) in each strip and pad of the
MVD. In the barrel, most particles hit more than one strip, the energy
deposition in a geant hit is divided among the different strips by
assuming the fraction is proportional to the pathlength through
each strip. That is, fluctuations along the path through the Si
are ignored. For the pads, the position of the particle half-way
through the Si pad is taken (they are 300 microns thick) and all
energy loss is assigned to the pad corresponding to that position.
The charge is never shared between adjacent pads.
There is one piece of "illegal code" which makes use of geant
information. The table dMvdFic contains the true number of particles
which hit the MVD (one variable each for inner barrel, outer barrel,
north and south pads).
After adding up the signals, "noise" is added to the signals -- still
working in keV per strip or pad. Noise is assumed to have a gaussian
distribution (cernlib routine rg32) with sigma = dMvdPar->skev_noise.
The noise (can be a positive or negative number) is then added
to the "true" signal. Typical, dMvdPar->skev_noise is 0.1*(signal from
a 1 mip particle).
Then the signals+noise, still in keV units, are digitized. They are converted
to ADC values assuming the full scale ADC value (in ADC counts) is
dMvdPar->full_scale (currently this is 255) which is assumed to
correspond to an energy loss of dMvdPar->smax_kev (which is currently
set to 8 mips = 8*119 keV).
Next, cross talk is added (for the barrel only) using "database"
parameters contained in dMvbDbase[channel].cross_talk. Cross talk
is expressed as a fraction from 0 to 1. The observed signal in
channel N is assumed to be crosstalk*(true signal in channel N-1) +
(1 - 2*crosstalk)*(true signal in channel N) +
crosstalk*(true signal in channel N+1).
Typically, crosstalk is 0.01.
Some channels (listed in the dead channel database) are assumed
to be dead. The dead channel "database" is controoled by an
ascii file at the moment. The information is passed to this
routine via dMvbDbase[i].flag_dead_channel and
dMvcDbase[i].flag_dead_channel.
mMvdSetUcal
verghit
dMvdPar
dMvbPar
dMvcPar
dMvdTrigPar
dMvdGeo
dMvbGeo
dMvcGeo
dMvbDbase
dMvcDbase
dMvbCal
dMvcCal
dMvbRaw
dMvcRaw
dMvdFic
John Sullivan
comments to: sullivan@lanl.gov
updated 23-Dec-1999