"MarlinReco"
1.32.0
|
Digitizer for Simulated Hits in the Vertex Detector. More...
#include <VTXDigitizer.h>
Public Member Functions | |
VTXDigitizer (const VTXDigitizer &)=delete | |
VTXDigitizer & | operator= (const VTXDigitizer &)=delete |
virtual Processor * | newProcessor () |
virtual void | init () |
Initialisation member function. | |
virtual void | processRunHeader (LCRunHeader *run) |
Processing of run header. | |
virtual void | processEvent (LCEvent *evt) |
Processing of one event. | |
virtual void | check (LCEvent *evt) |
Produces check plots. | |
virtual void | end () |
Termination member function. | |
Protected Member Functions | |
void | FindLocalPosition (SimTrackerHit *hit, double *localPosition, double *localDirection) |
Finds coordinates. | |
void | TransformToLab (double *xLoc, double *xLab) |
void | ProduceIonisationPoints (SimTrackerHit *hit) |
void | ProduceSignalPoints () |
void | ProduceHits (SimTrackerHitImplVec &simTrkVec) |
void | TransformXYToCellID (double x, double y, int &ix, int &iy) |
void | TransformCellIDToXY (int ix, int iy, double &x, double &y) |
void | PoissonSmearer (SimTrackerHitImplVec &simTrkVec) |
void | GainSmearer (SimTrackerHitImplVec &simTrkVec) |
void | PrintInfo (SimTrackerHit *simTrkHit, TrackerHitImpl *recoHit) |
TrackerHitImpl * | ReconstructTrackerHit (SimTrackerHitImplVec &simTrkVec) |
void | TrackerHitToLab (TrackerHitImpl *recoHit) |
void | PositionWithinCell (double x, double y, int &ix, int &iy, double &xCell, double &yCell) |
void | generateBackground (LCCollectionVec *col) |
Protected Attributes | |
std::string | _colName {} |
Input collection name. | |
std::string | _outputCollectionName {} |
std::string | _colVTXRelation {} |
int | _nRun {} |
Run number. | |
int | _nEvt {} |
Event number. | |
double | _tanLorentzAngle {} |
tangent of Lorentz angle | |
double | _cutOnDeltaRays {} |
cut in MeV on delta electrons used in simulation of charge for each ionisation point | |
double | _diffusionCoefficient {} |
Diffusion coefficient in mm for nominla layer thickness. | |
int | _numberOfLayers {} |
layer thickness More... | |
double | _pixelSizeX {} |
double | _pixelSizeY {} |
double | _electronsPerKeV {} |
double | _segmentDepth {} |
double | _currentTotalCharge {} |
std::vector< int > | _laddersInLayer {} |
std::vector< float > | _layerRadius {} |
std::vector< float > | _layerThickness {} |
std::vector< float > | _layerHalfThickness {} |
std::vector< float > | _layerLadderLength {} |
std::vector< float > | _layerLadderHalfWidth {} |
std::vector< float > | _layerPhiOffset {} |
std::vector< float > | _layerActiveSiOffset {} |
std::vector< float > | _layerHalfPhi {} |
std::vector< float > | _layerLadderGap {} |
std::vector< float > | _bkgdHitsInLayer {} |
std::vector< float > | _layerLadderWidth {} |
int | _currentLayer {} |
int | _currentModule {} |
int | _generateBackground {} |
double | _currentParticleMomentum {} |
double | _currentParticleEnergy {} |
double | _currentParticleMass {} |
double | _currentPhi {} |
double | _widthOfCluster {} |
double | PI {} |
double | TWOPI {} |
double | PI2 {} |
double | SCALING {} |
int | _produceFullPattern {} |
int | _numberOfSegments {} |
int | _debug {} |
int | _PoissonSmearing {} |
int | _electronicEffects {} |
int | _useMCPMomentum {} |
int | _removeDrays {} |
double | _threshold {} |
double | _currentLocalPosition [3] {} |
double | _currentEntryPoint [3] {} |
double | _currentExitPoint [3] {} |
double | _electronicNoise {} |
double | _segmentLength {} |
IonisationPointVec | _ionisationPoints {} |
SignalPointVec | _signalPoints {} |
MyG4UniversalFluctuationForSi * | _fluctuate {} |
double | _xLayerReco {} |
double | _yLayerReco {} |
double | _zLayerReco {} |
double | _xLayerSim {} |
double | _yLayerSim {} |
double | _zLayerSim {} |
int | _iLayer {} |
int | _nCoveredX {} |
int | _nCoveredY {} |
int | _nCells {} |
int | _totEntries {} |
double | _totMomentum {} |
double | _momX {} |
double | _momY {} |
double | _momZ {} |
double | _eDep {} |
double | _amplX [20] {} |
double | _amplY [20] {} |
double | _amplC [100] {} |
double | _ampl {} |
double | _amplMax {} |
double | _eSum {} |
double | _energyLoss {} |
double | _clusterWidthX {} |
double | _clusterWidthY {} |
double | _ampl33 {} |
double | _ampl55 {} |
double | _ampl77 {} |
int | _ncell33 {} |
int | _ncell55 {} |
int | _ncell77 {} |
int | _storeNtuple {} |
double | _xLocalRecoCOG {} |
double | _yLocalRecoCOG {} |
double | _xLocalRecoEdge {} |
double | _yLocalRecoEdge {} |
double | _xLocalSim {} |
double | _yLocalSim {} |
std::vector< SimTrackerHitImplVec > | _hitsInLayer {} |
Digitizer for Simulated Hits in the Vertex Detector.
Digitization follows the procedure adopted in the CMS software package.
For each Simulated Tracker Hit the intersection points with
the inner and outer boundaries of sensitive Si layer are calculated.
Track segment within a layer is approximated with the line.
It is divided by n subsegments, where n can be specified by a user
via external Processor parameter. For each subsegment the charge
is simulated according to Landau distribution as expected for Silicon.
The charge transfer from the middle point of track subsegment (referred
hereafter to as ionisation point)
to the outer collection plane is performed taking
into account Lorentz effect in the magnetic field
It is assumed that on the collection plane the electron cloud from
each ionisation point is spread according to the Gaussian distribution
whose width is proportional to the square-root of the drift distance.
The charge on each fired pixel is then calculated as a sum of contributions
from n Gaussians. The VTX ladder is assumed to have matrix of rectangular pixels
(In the future I plan to implement possibility of variying pixel size with
the z coordinate).
The output of the processor is the collection of Reconstructed Tracker Hits.
Each reconstructed hit is assigned the position of the center-of-gravity of
the cluster of fired pixels. Lorentz effect is corrected for.
Processor requires collection of simulated vertex tracker hits.
If such a collection with the user specified name does not exist
processor takes no action.
Processor produces an output collection of the Tracker Hits. Collection has name "VTXTrackerHits".
CollectionName | name of input SimTrackerHit collection (default parameter value : "vxd01_VXD", taken from Mokka) |
TanLorentz | tangent of the Lorentz angle (default parameter value : 0.8) |
CutOnDeltaRays | cut on the energy of delta-electrons (in MeV) (default parameter value : 0.03) |
Diffusion | diffusion coefficient for the nominal active layer thickness (in mm) (default parameter value : 0.002) |
LayerThickness | thickness of the active Silicon layer (in mm) (default parameter value : 0.03744) |
PixelSizeX | pixel size along direction perpendicular to beam axis (in mm) (default value : 0.025) |
PixelSizeY | pixel size along beam axis (in mm) (default value : 0.025) |
ElectronsPerMeV | number of electrons produced per MeV of deposited energy (default parameter value : 270.3) |
Threshold | threshold on charge deposited on one pixel (in electons) (default parameter value : 200.0) |
LaddersInLayer | vector of integers, numbers of phi-ladders in each layer (default parameter values : 8, 8, 12, 16, 20; taken from Mokka database for VXD model vxd01) |
LadderRadius | vector of doubles, radii of layers (in mm) (default parameter values : 15.301, 26.301, 38.301, 49.301, 60.301; taken from Mokka database for VXD model vxd01) |
ActiveLadderOffset | vector of doubles, offset of active Si layer along phi-angle (in mm) for each layer (default parameter values : 1.455, 1.39866, 2.57163, 3.59295, 4.42245) |
LadderHalfWidth | vector of doubles, half-width of the ladders in each layer (in mm) (default parameter values : 6.5, 11.0, 11.0, 11.0, 11.0; taken from Mokka database for VXD model vxd01) |
LadderGaps | vector of doubles, gaps between two symmetric ladders (+/-z) in mm (default parameter values : 0.0, 0.04, 0.04, 0.04, 0.04; taken from Mokka database) |
PhiOffset | vector of doubles, offset in phi angle for starting ladder in each layer (default parameter values : 0, 0, 0, 0, 0; taken from Mokka database for VXD model vxd01) |
SegmentLength | segment length along track path which is used to subdivide track into segments (in mm). The number of track subsegments is calculated as int(TrackLengthWithinActiveLayer/SegmentLength)+1 (default parameter value : 0.005) |
WidthOfCluster | defines width in Gaussian sigmas to perform charge integration for a given pixel (default parameter value : 3.0) |
ElectronicEffects | flag to switch on gaussian smearing of signal (electronic noise) (default parameter value : 1) |
ElectronicNoise | electronic noise in electrons (default parameter value : 100) |
GenerateBackground | flag to switch on pseudo-generation of pair background hits Background hits are uniformly generated in cosQ and Phi (default parameter value : 0) |
BackgroundHitsPerLayer | expected mean value of background hits accumulated in each layer over readout time. This number is calculated as Number of background hits per bunch crossing times number of bunch crossings over integration time. (default values : 34400 23900 9600 5500 3100 corresponding to 100 overlaid bunch crossings) |
Debug | boolean variable, if set to 1, printout is activated (default parameter value : 0) |
|
protected |
layer thickness
layer half-thickness