81 #define SISTRIPDIGI_H 1
92 #include <CLHEP/Random/RandGauss.h>
93 #include <CLHEP/Vector/ThreeVector.h>
104 #include <EVENT/LCCollection.h>
105 #include <IMPL/SimTrackerHitImpl.h>
108 #include <marlin/Global.h>
109 #include <marlin/Processor.h>
110 #include <streamlog/streamlog.h>
113 #ifdef ROOT_OUTPUT_LAND
123 #define STRIPFRONT RPhi // Const denoting strips in sensors 1,2 (front)
124 #define STRIPREAR Z // Const denoting strips in sensors 3,4 (rear)
126 #define STRIPRPHI RPhi // Const denoting strips in sensors 1,2 (front)
127 #define STRIPZ Z // Const denoting strips in sensors 3,4 (rear)
129 #define ROUNDEPS 5. // Avoid rounding errors - space precision for round. errors in um
130 #define SEED 12586 // Random generator initialization
134 typedef std::vector< std::string >
StringVec;
135 typedef std::queue < std::string >
StringQue;
173 virtual void check(LCEvent * event);
453 #ifdef ROOT_OUTPUT_LAND
457 std::map<int,double> _variables;
472 #endif // SISTRDIGI_H
double getElecMobility(double pos)
Get method - returns ELECTRON mobility (parameters: electric intenzity in V/cm, respectively position...
double getElecDriftTime(double pos)
Get method - returns total ELECTRON drift time (parameters: electron position in cm).
double getElecDiffusivity(double pos)
Get method - returns ELECTRON diffusivity (parameters: electron mobility in cm^2/s, respectively position in cm).
double _pitchRear
Pitch in the rear sensors (in the middle)
short int _currentLadderID
Actual ladder ID.
double getHoleDriftTime(double pos)
Get method - returns total HOLE drift time (parameters: hole position in cm).
double _pitchFront
Pitch in the front sensors (in the middle)
double getElecVelocity(double pos)
Get method - returns ELECTRON actual velocity, calculated as follows:
virtual void init()
Method called at the beginning of data processing - used for initialization.
void genNoise(SensorStripMap &sensorMap)
Method generating random noise using Gaussian distribution and add this effect to the final results...
Digitization hit inheritad from LCIO SimTrackerHitImpl, which naturally extends basic features of Sim...
virtual void processEvent(LCEvent *event)
Method called for each event - used for event data processing.
void digitize(const SimTrackerDigiHit *hit, SensorStripMap &sensorMap)
Method digitizing given SimTrackerDigiHit - takes into account all relevant physical processes: landa...
float _capBackPlane
Strip-to-backplane capacitance.
void printProcessorParams() const
Method printing processor parameters.
Gear geometry class - holds all geometry information about silicon strip sensors. ...
std::map< int, StripChargeMap * > SensorStripMap
SiEnergyFluct * _fluctuate
SiStripDigi()
Constructor - set processor description and register processor parameters.
const std::vector< std::string > ConstStringVec
const std::vector< EVENT::SimTrackerHit * > ConstSimTrackerHitVec
std::vector< DigiCluster * > DigiClusterVec
virtual void processRunHeader(LCRunHeader *run)
Method called for each run - used for run header processing.
double _prodThreshOnDeltaRays
Production threshold cut on delta electrons in keV (for Landau fluct.) - use the same as in Geant4 (8...
bool _integrationWindow
Use integration window?
CLHEP::Hep3Vector getHoleLorentzShift(double pos)
Method used for precise calculation of tan(Lorentz angle) - an angle of HOLES deflection due to magne...
std::vector< SimTrackerDigiHit * > SimTrackerDigiHitVec
void printStripsInfo(std::string info, const SensorStripMap &sensorMap) const
Method printing info about signals at each strip.
std::string _relColNamePlsToSim
LCIO relation collection name - TrkPulse (Digit) <-> SimTrkHit.
CLHEP::Hep3Vector _magField
Magnetic field in T in detector reference system.
float _elNoise
CMS-like (common mode subtracted) noise added to the signal.
double getElecInvVelocity(double pos)
Get method - returns actual ELECTRON inverse velocity, calculated as.
void transformSimHit(SimTrackerDigiHit *simDigiHit)
Method transforming given SimTrackerHit into local ref.
std::string _inColName
LCIO input collection name.
short int _currentSensorID
Actual sensor ID.
double _startIntegration
Start time of integration of the sensors in ns (everything before this value will not be digitized) ...
double _stopIntegration
Stop time of integration of the sensors in ns(everything after this value will not be digitized) ...
bool _floatStripsRPhi
Is every even strip floating in R-Phi?
Digitization cluster class.
void printHitInfo(std::string info, const SimTrackerDigiHit *hit) const
Method printing hit info (parameter: info - extra information)
std::map< SimTrackerHit *, float > SimHitMap
float _Vdepl
Sensor depletion voltage in volts.
void calcCrossTalk(SensorStripMap &sensorMap)
Method that calculates crosstalk effect, i.e.
void calcClusters(const SimTrackerDigiHit *hit, DigiClusterVec &hClusterVec)
Method that calculates e-h clusters, where clusters are worked out from the hits (simulated in Geant ...
void printClustersInfo(std::string info, const DigiClusterVec &clusterVec) const
Method printing clusters info (parameter: info - extra information)
float _temp
Sensor temperature in Kelvins.
short int _currentLayerID
Actual layer ID.
float _epsTime
Relative digi precision in Drift time.
CLHEP::RandGauss * _genGauss
Random number generator - Gaussian distribution.
SiStripGeom * _geometry
All geometry information from Gear xml file.
virtual void check(LCEvent *event)
Method called after each event - used for data checking.
bool _floatStripsZ
Is every even strip floating in Z?
std::vector< EVENT::SimTrackerHit * > SimTrackerHitVec
CLHEP::Hep3Vector getElecLorentzShift(double posZ)
Method used for precise calculation of tan(Lorentz angle) - an angle of ELECTRON deflection due to ma...
float _sensorThick
Actual sensor - Si wafer thickness in system of units.
bool _landauFluct
Define if internal Landau fluctuations (instead of Geant4) used.
std::queue< std::string > StringQue
int _currentCellID
Actual layer+ladder+sensor ID encoded into one number.
double getHoleInvVelocity(double pos)
Get method - returns actual HOLE inverse velocity, calculated as follows:
std::vector< LCCollection * > LCCollectionVec
Special class providing particle energy loss fluctuations in Si material (Landau fluctuations).
float _landauBetaGammaCut
Below this beta*gamma factor internal Landau fluctuations not used.
std::string _outColName
LCIO output collection name.
void printClusterInfo(const DigiCluster &cluster) const
Method printing cluster info.
double getHoleVelocity(double pos)
Get method - returns HOLE actual velocity, calculated as follows:
virtual Processor * newProcessor()
Method that returns a new instance of this processor.
std::map< int, Signal * > StripChargeMap
float _Vbias
Sensor bias voltage in volts.
double getEField(double pos)
Get method - returns electric intensity (parameters: position X in cm).
float _epsAngle
Relative digi precision in Lorentz angle.
float _capCoupl
AC coupling - capacitance.
double getHoleMobility(double pos)
Get method - returns HOLE mobility (parameters: electric intenzity in V/cm, respectively position X i...
float _epsSpace
Absolute digi precision in space in um.
bool _electronicEffects
Add crosstalk + noise?
double getHoleDiffusivity(double pos)
Get method - returns HOLE diffusivity (parameters: hole mobility in cm^2/s, respectively position in ...
virtual void end()
Method called after all data processing.
float _capInterStrip
Mutual interstrip capacitance.
std::vector< std::string > StringVec