#include <SiStripDigi.h>
Public Member Functions | |
virtual Processor * | newProcessor () |
Method that returns a new instance of this processor. More... | |
SiStripDigi () | |
Constructor - set processor description and register processor parameters. More... | |
virtual void | init () |
Method called at the beginning of data processing - used for initialization. More... | |
virtual void | processRunHeader (LCRunHeader *run) |
Method called for each run - used for run header processing. More... | |
virtual void | processEvent (LCEvent *event) |
Method called for each event - used for event data processing. More... | |
virtual void | check (LCEvent *event) |
Method called after each event - used for data checking. More... | |
virtual void | end () |
Method called after all data processing. More... | |
Protected Member Functions | |
void | digitize (const SimTrackerDigiHit *hit, SensorStripMap &sensorMap) |
Method digitizing given SimTrackerDigiHit - takes into account all relevant physical processes: landau fluctuations, drift, diffusion, Lorentz shift in magnetic field (input parameter: a pointer to digitized hit, output. More... | |
void | calcClusters (const SimTrackerDigiHit *hit, DigiClusterVec &hClusterVec) |
Method that calculates e-h clusters, where clusters are worked out from the hits (simulated in Geant 4 and transformed into local reference system) using predefined space precision. More... | |
void | calcCrossTalk (SensorStripMap &sensorMap) |
Method that calculates crosstalk effect, i.e. More... | |
void | genNoise (SensorStripMap &sensorMap) |
Method generating random noise using Gaussian distribution and add this effect to the final results. More... | |
void | transformSimHit (SimTrackerDigiHit *simDigiHit) |
Method transforming given SimTrackerHit into local ref. More... | |
double | getElecDiffusivity (double pos) |
Get method - returns ELECTRON diffusivity (parameters: electron mobility in cm^2/s, respectively position in cm). More... | |
double | getHoleDiffusivity (double pos) |
Get method - returns HOLE diffusivity (parameters: hole mobility in cm^2/s, respectively position in cm). More... | |
double | getElecDriftTime (double pos) |
Get method - returns total ELECTRON drift time (parameters: electron position in cm). More... | |
double | getHoleDriftTime (double pos) |
Get method - returns total HOLE drift time (parameters: hole position in cm). More... | |
double | getEField (double pos) |
Get method - returns electric intensity (parameters: position X in cm). More... | |
double | getElecMobility (double pos) |
Get method - returns ELECTRON mobility (parameters: electric intenzity in V/cm, respectively position X in cm). More... | |
double | getHoleMobility (double pos) |
Get method - returns HOLE mobility (parameters: electric intenzity in V/cm, respectively position X in cm). More... | |
CLHEP::Hep3Vector | getElecLorentzShift (double posZ) |
Method used for precise calculation of tan(Lorentz angle) - an angle of ELECTRON deflection due to magnetic field. More... | |
CLHEP::Hep3Vector | getHoleLorentzShift (double pos) |
Method used for precise calculation of tan(Lorentz angle) - an angle of HOLES deflection due to magnetic field. More... | |
double | getElecVelocity (double pos) |
Get method - returns ELECTRON actual velocity, calculated as follows: More... | |
double | getElecInvVelocity (double pos) |
Get method - returns actual ELECTRON inverse velocity, calculated as. More... | |
double | getHoleVelocity (double pos) |
Get method - returns HOLE actual velocity, calculated as follows: More... | |
double | getHoleInvVelocity (double pos) |
Get method - returns actual HOLE inverse velocity, calculated as follows: More... | |
void | printClusterInfo (const DigiCluster &cluster) const |
Method printing cluster info. More... | |
void | printClustersInfo (std::string info, const DigiClusterVec &clusterVec) const |
Method printing clusters info (parameter: info - extra information) More... | |
void | printHitInfo (std::string info, const SimTrackerDigiHit *hit) const |
Method printing hit info (parameter: info - extra information) More... | |
void | printProcessorParams () const |
Method printing processor parameters. More... | |
void | printStripsInfo (std::string info, const SensorStripMap &sensorMap) const |
Method printing info about signals at each strip. More... | |
Protected Attributes | |
std::string | _inColName |
LCIO input collection name. More... | |
std::string | _outColName |
LCIO output collection name. More... | |
std::string | _relColNamePlsToSim |
LCIO relation collection name - TrkPulse (Digit) <-> SimTrkHit. More... | |
std::string | _subdetector |
float | _Vdepl |
Sensor depletion voltage in volts. More... | |
float | _Vbias |
Sensor bias voltage in volts. More... | |
float | _temp |
Sensor temperature in Kelvins. More... | |
bool | _electronicEffects |
Add crosstalk + noise? More... | |
float | _capInterStrip |
Mutual interstrip capacitance. More... | |
float | _capBackPlane |
Strip-to-backplane capacitance. More... | |
float | _capCoupl |
AC coupling - capacitance. More... | |
float | _elNoise |
CMS-like (common mode subtracted) noise added to the signal. More... | |
bool | _floatStripsRPhi |
Is every even strip floating in R-Phi? More... | |
bool | _floatStripsZ |
Is every even strip floating in Z? More... | |
float | _epsSpace |
Absolute digi precision in space in um. More... | |
float | _epsAngle |
Relative digi precision in Lorentz angle. More... | |
float | _epsTime |
Relative digi precision in Drift time. More... | |
bool | _landauFluct |
Define if internal Landau fluctuations (instead of Geant4) used. More... | |
float | _landauBetaGammaCut |
Below this beta*gamma factor internal Landau fluctuations not used. More... | |
double | _prodThreshOnDeltaRays |
Production threshold cut on delta electrons in keV (for Landau fluct.) - use the same as in Geant4 (80keV ~ 0.05 mm) More... | |
double | _pitchFront |
Pitch in the front sensors (in the middle) More... | |
double | _pitchRear |
Pitch in the rear sensors (in the middle) More... | |
bool | _integrationWindow |
Use integration window? More... | |
double | _startIntegration |
Start time of integration of the sensors in ns (everything before this value will not be digitized) More... | |
double | _stopIntegration |
Stop time of integration of the sensors in ns(everything after this value will not be digitized) More... | |
int | _currentCellID |
Actual layer+ladder+sensor ID encoded into one number. More... | |
short int | _currentLayerID |
Actual layer ID. More... | |
short int | _currentLadderID |
Actual ladder ID. More... | |
short int | _currentSensorID |
Actual sensor ID. More... | |
float | _sensorThick |
Actual sensor - Si wafer thickness in system of units. More... | |
CLHEP::Hep3Vector | _magField |
Magnetic field in T in detector reference system. More... | |
SiStripGeom * | _geometry |
All geometry information from Gear xml file. More... | |
CLHEP::RandGauss * | _genGauss |
Random number generator - Gaussian distribution. More... | |
SiEnergyFluct * | _fluctuate |
Private Attributes | |
double | _timeCPU |
CPU time. More... | |
int | _nRun |
Run number. More... | |
int | _nEvent |
Event number. More... | |
Definition at line 154 of file SiStripDigi.h.
sistrip::SiStripDigi::SiStripDigi | ( | ) |
Constructor - set processor description and register processor parameters.
Definition at line 68 of file SiStripDigi.cc.
|
protected |
Method that calculates e-h clusters, where clusters are worked out from the hits (simulated in Geant 4 and transformed into local reference system) using predefined space precision.
As the precision might be different from a precision in Geant 4, the Landau fluctuations are performed here too, using internal Landau fluctuator. Required parameters: a pointer to SimTrackerDigiHit and two vectors of pointers to electron, resp. hole clusters (pairs) )
Definition at line 995 of file SiStripDigi.cc.
|
protected |
Method that calculates crosstalk effect, i.e.
each total charge is redistributed according the following relation: Q_neigh = Q_centr * C_inter/(C_inter + C_back + C_coupl), where neigh denotes neighbouring, centr central, inter interstrip, back strip2backplane and coupl coupling.
Definition at line 1100 of file SiStripDigi.cc.
|
virtual |
Method called after each event - used for data checking.
Definition at line 739 of file SiStripDigi.cc.
|
protected |
Method digitizing given SimTrackerDigiHit - takes into account all relevant physical processes: landau fluctuations, drift, diffusion, Lorentz shift in magnetic field (input parameter: a pointer to digitized hit, output.
parameter: a sensor map of strips with total integrated charge and time when particle crossed the sensor)
Definition at line 795 of file SiStripDigi.cc.
|
virtual |
Method called after all data processing.
Definition at line 746 of file SiStripDigi.cc.
|
protected |
Method generating random noise using Gaussian distribution and add this effect to the final results.
Definition at line 1255 of file SiStripDigi.cc.
|
protected |
Get method - returns electric intensity (parameters: position X in cm).
The intensity is calculated using analytically expressible relation between electron, resp. hole, position and electric field, derived for simple abrupt p-n junction with depletion voltage Vd and bias voltage Vb.
Relation:
E(x) = -(Vb+Vd/d - 2*x/d^2*Vd) in V/cm
Where d represents sensor thickness.
Definition at line 1444 of file SiStripDigi.cc.
|
protected |
Get method - returns ELECTRON diffusivity (parameters: electron mobility in cm^2/s, respectively position in cm).
The diffusivity is calculated according to the Einstein relation:
D = k*temp/e * mobil(E(x),temp) in cm^2/s
Where k represents Boltzmann constant and e an elementary charge.
Definition at line 1365 of file SiStripDigi.cc.
|
protected |
Get method - returns total ELECTRON drift time (parameters: electron position in cm).
The total time is obtained as a numerical solution of following equation of motion:
dx/dt = v = mobil(E(x), temp) * E(x) Int(x0,d){1/(mobility(E(x), temp) * E(x)) * dx} = t Int(x0,d){1/v(E(x), temp) * dx} = t
Where mobil represents electron mobility, d sensor thickness, which corresponds to sensor back side (DSSDs - back strip side), i.e. the one with high voltage set; and v to electron actual velocity.
Definition at line 1387 of file SiStripDigi.cc.
|
protected |
Get method - returns actual ELECTRON inverse velocity, calculated as.
follows: dt/dx = v^-1 = 1/(mobil(E(x), temp) * E(x))
Where E corresponds to elec. intenzity a mobil to electron mobility. (parameters: electron position in cm)
Definition at line 1580 of file SiStripDigi.cc.
|
protected |
Method used for precise calculation of tan(Lorentz angle) - an angle of ELECTRON deflection due to magnetic field.
(parameters: position z in cm). The Lorentz angle calculation utilizes so-called Romberg integration method, quite fast and reasonably precise method. The precision of the calculation is set via variable: _epsAngle by a user.
Relation:
tan(thetaL) = Int(x,d){mobil(E(z))*r*B*dz}/Int(z,d){dz} shiftX = -Int(x,d){mobil(E(z))*r*By*dz} shiftY = Int(x,d){mobil(E(z))*r*Bx*dz}
Where r = 1.13 + 0.0008*(temp-273) represents Hall scattering factor for electrons and d sensor thickness, corresponding to sensor back side.
Definition at line 1501 of file SiStripDigi.cc.
|
protected |
Get method - returns ELECTRON mobility (parameters: electric intenzity in V/cm, respectively position X in cm).
For the region where the mobility is dependent on the electric field, applied along <111> direction, following parametrization can be used:
mobil = vm/Ec * 1/(1 + (E(x)/Ec)^beta)^(1/beta) in cm^2/V.s
vm = 1.53*10^9*temp^(-0.87) cm/s Ec = 1.01*temp^(1.55) V/cm beta = 2.57*10^(-2)*temp(0.66)
For more details about parametrization see: A review of some charge transport properties of silicon by C.Jacobini et. al. (Solid-State Electronics, 1977, Vol. 20, p. 77-89)
Definition at line 1462 of file SiStripDigi.cc.
|
protected |
Get method - returns ELECTRON actual velocity, calculated as follows:
dz/dt = v = mobil(E(x), temp) * E(x)
Where E corresponds to elec. intenzity a mobil to electron mobility. (parameters: electron position in cm)
Definition at line 1572 of file SiStripDigi.cc.
|
protected |
Get method - returns HOLE diffusivity (parameters: hole mobility in cm^2/s, respectively position in cm).
The diffusivity is calculated according to the Einstein relation:
D = k*temp/e * mobil(E(x),temp) in cm^2/s
Where k represents Boltzmann constant and e an elementary charge.
Definition at line 1376 of file SiStripDigi.cc.
|
protected |
Get method - returns total HOLE drift time (parameters: hole position in cm).
The total time is obtained as a numerical solution of following equation of motion:
dx/dt = v = mobil(E(x), temp) * E(x) Int(x0,0){1/(mobility(E(x), temp) * E(x))*dx} = t Int(x0,0){1/v(E(x), temp) * dx} = t
Where mobil represents hole mobility, 0 corresponds to sensor strip side (with high voltage set to 0) and v to hole actual velocity.
Definition at line 1415 of file SiStripDigi.cc.
|
protected |
Get method - returns actual HOLE inverse velocity, calculated as follows:
dt/dx = v^-1 = 1/(mobil(E(x), temp) * E(x))
Where E corresponds to elec. intenzity a mobil to hole mobility. (parameters: hole position in cm)
Definition at line 1596 of file SiStripDigi.cc.
|
protected |
Method used for precise calculation of tan(Lorentz angle) - an angle of HOLES deflection due to magnetic field.
(parameters: position z in cm). The Lorentz angle calculation utilizes so-called Romberg integration method, quite fast and reasonably precise method. The precision of the calculation is set via variable: _epsAngle by a user.
Relation:
tan(thetaL) = Int(z,0){mobil(E(z))*r*B*dz}/Int(z,0){dz}
Where r = 0.72 - 0.0005*(temp-273) represents Hall scattering factor for holes and 0 corresponds to sensor strip side.
Definition at line 1538 of file SiStripDigi.cc.
|
protected |
Get method - returns HOLE mobility (parameters: electric intenzity in V/cm, respectively position X in cm).
For the region where the mobility is dependent on the electric field, applied along <111> direction, following parametrization can be used:
mobil = vm/Ec * 1/(1 + (E(x)/Ec)^beta)^(1/beta) in cm^2/V.s
vm = 1.62*10^8*temp^(-0.52) cm/s Ec = 1.24*temp^(1.68) V/cm beta = 0.46*temp(0.17)
For more details about parametrization see: A review of some charge transport properties of silicon by C.Jacobini et. al. (Solid-State Electronics, 1977, Vol. 20, p. 77-89)
Definition at line 1479 of file SiStripDigi.cc.
|
protected |
Get method - returns HOLE actual velocity, calculated as follows:
dx/dt = v = mobil(E(x), temp) * E(x)
Where E corresponds to elec. intenzity a mobil to hole mobility. (parameters: hole position in cm)
Definition at line 1588 of file SiStripDigi.cc.
|
virtual |
Method called at the beginning of data processing - used for initialization.
Definition at line 207 of file SiStripDigi.cc.
|
inlinevirtual |
Method that returns a new instance of this processor.
Definition at line 158 of file SiStripDigi.h.
|
protected |
Method printing cluster info.
Definition at line 1607 of file SiStripDigi.cc.
|
protected |
Method printing clusters info (parameter: info - extra information)
Definition at line 1626 of file SiStripDigi.cc.
|
protected |
Method printing hit info (parameter: info - extra information)
Definition at line 1639 of file SiStripDigi.cc.
|
protected |
Method printing processor parameters.
Definition at line 1662 of file SiStripDigi.cc.
|
protected |
Method printing info about signals at each strip.
Definition at line 1709 of file SiStripDigi.cc.
|
virtual |
Method called for each event - used for event data processing.
Definition at line 309 of file SiStripDigi.cc.
|
virtual |
Method called for each run - used for run header processing.
Definition at line 288 of file SiStripDigi.cc.
|
protected |
Method transforming given SimTrackerHit into local ref.
system of each sensor, resp. wafer, where the center is positioned such as x, y and z coordinates are always positive and x is in direction of thickness.
Definition at line 1294 of file SiStripDigi.cc.
|
protected |
Strip-to-backplane capacitance.
Definition at line 409 of file SiStripDigi.h.
|
protected |
AC coupling - capacitance.
Definition at line 410 of file SiStripDigi.h.
|
protected |
Mutual interstrip capacitance.
Definition at line 408 of file SiStripDigi.h.
|
protected |
Actual layer+ladder+sensor ID encoded into one number.
Definition at line 433 of file SiStripDigi.h.
|
protected |
Actual ladder ID.
Definition at line 435 of file SiStripDigi.h.
|
protected |
Actual layer ID.
Definition at line 434 of file SiStripDigi.h.
|
protected |
Actual sensor ID.
Definition at line 436 of file SiStripDigi.h.
|
protected |
Add crosstalk + noise?
Definition at line 407 of file SiStripDigi.h.
|
protected |
CMS-like (common mode subtracted) noise added to the signal.
Definition at line 411 of file SiStripDigi.h.
|
protected |
Relative digi precision in Lorentz angle.
Definition at line 416 of file SiStripDigi.h.
|
protected |
Absolute digi precision in space in um.
Definition at line 415 of file SiStripDigi.h.
|
protected |
Relative digi precision in Drift time.
Definition at line 417 of file SiStripDigi.h.
|
protected |
Is every even strip floating in R-Phi?
Definition at line 412 of file SiStripDigi.h.
|
protected |
Is every even strip floating in Z?
Definition at line 413 of file SiStripDigi.h.
|
protected |
Definition at line 450 of file SiStripDigi.h.
|
protected |
Random number generator - Gaussian distribution.
Definition at line 447 of file SiStripDigi.h.
|
protected |
All geometry information from Gear xml file.
Definition at line 444 of file SiStripDigi.h.
|
protected |
LCIO input collection name.
Definition at line 395 of file SiStripDigi.h.
|
protected |
Use integration window?
Definition at line 428 of file SiStripDigi.h.
|
protected |
Below this beta*gamma factor internal Landau fluctuations not used.
Definition at line 421 of file SiStripDigi.h.
|
protected |
Define if internal Landau fluctuations (instead of Geant4) used.
Definition at line 420 of file SiStripDigi.h.
|
protected |
Magnetic field in T in detector reference system.
Definition at line 441 of file SiStripDigi.h.
|
private |
Event number.
Definition at line 464 of file SiStripDigi.h.
|
private |
Run number.
Definition at line 463 of file SiStripDigi.h.
|
protected |
LCIO output collection name.
Definition at line 396 of file SiStripDigi.h.
|
protected |
Pitch in the front sensors (in the middle)
Definition at line 424 of file SiStripDigi.h.
|
protected |
Pitch in the rear sensors (in the middle)
Definition at line 425 of file SiStripDigi.h.
|
protected |
Production threshold cut on delta electrons in keV (for Landau fluct.) - use the same as in Geant4 (80keV ~ 0.05 mm)
Definition at line 422 of file SiStripDigi.h.
|
protected |
LCIO relation collection name - TrkPulse (Digit) <-> SimTrkHit.
Definition at line 397 of file SiStripDigi.h.
|
protected |
Actual sensor - Si wafer thickness in system of units.
Definition at line 437 of file SiStripDigi.h.
|
protected |
Start time of integration of the sensors in ns (everything before this value will not be digitized)
Definition at line 429 of file SiStripDigi.h.
|
protected |
Stop time of integration of the sensors in ns(everything after this value will not be digitized)
Definition at line 430 of file SiStripDigi.h.
|
protected |
Definition at line 401 of file SiStripDigi.h.
|
protected |
Sensor temperature in Kelvins.
Definition at line 405 of file SiStripDigi.h.
|
private |
CPU time.
Definition at line 462 of file SiStripDigi.h.
|
protected |
Sensor bias voltage in volts.
Definition at line 404 of file SiStripDigi.h.
|
protected |
Sensor depletion voltage in volts.
Definition at line 403 of file SiStripDigi.h.