![]() |
![]() |
#include <SimTracker/SiStripDigitizer/interface/SiLinearChargeCollectionDrifter.h>
Public Member Functions | |
SiChargeCollectionDrifter::collection_type | drift (const SiChargeCollectionDrifter::ionization_type, const LocalVector &, double, double) |
SiLinearChargeCollectionDrifter (double, double, double, double) | |
Private Member Functions | |
SignalPoint | drift (const EnergyDepositUnit &, const LocalVector &) |
Private Attributes | |
double | appliedVoltage |
double | chargeDistributionRMS |
double | depletionVoltage |
double | diffusionConstant |
double | moduleThickness |
double | timeNormalisation |
Drifts the charges linearly.
Definition at line 9 of file SiLinearChargeCollectionDrifter.h.
SiLinearChargeCollectionDrifter::SiLinearChargeCollectionDrifter | ( | double | dc, | |
double | cdr, | |||
double | dv, | |||
double | av | |||
) |
Definition at line 5 of file SiLinearChargeCollectionDrifter.cc.
References appliedVoltage, chargeDistributionRMS, depletionVoltage, and diffusionConstant.
00008 { 00009 // 00010 // Everything which does not depend on the specific det 00011 // 00012 diffusionConstant = dc; 00013 chargeDistributionRMS = cdr; 00014 depletionVoltage = dv; 00015 appliedVoltage = av; 00016 }
SignalPoint SiLinearChargeCollectionDrifter::drift | ( | const EnergyDepositUnit & | edu, | |
const LocalVector & | drift | |||
) | [private] |
Definition at line 36 of file SiLinearChargeCollectionDrifter.cc.
References appliedVoltage, chargeDistributionRMS, depletionVoltage, diffusionConstant, relval_parameters_module::energy, funct::log(), moduleThickness, funct::sqrt(), timeNormalisation, PV3DBase< T, PVType, FrameType >::x(), x, PV3DBase< T, PVType, FrameType >::y(), y, PV3DBase< T, PVType, FrameType >::z(), and z.
00036 { 00037 00038 double tanLorentzAngleX = drift.x()/drift.z(); 00039 double tanLorentzAngleY = drift.y()/drift.z(); 00040 00041 double segX = (edu).x(); 00042 double segY = (edu).y(); 00043 double segZ = (edu).z(); 00044 00045 double thicknessFraction = (moduleThickness/2.-segZ)/moduleThickness ; 00046 // fix the bug due to rounding on entry and exit point 00047 thicknessFraction = thicknessFraction>0. ? thicknessFraction : 0. ; 00048 thicknessFraction = thicknessFraction<1. ? thicknessFraction : 1. ; 00049 00050 double driftTime = -timeNormalisation* 00051 log(1.-2*depletionVoltage*thicknessFraction/ 00052 (depletionVoltage+appliedVoltage)) 00053 +chargeDistributionRMS; 00054 00055 double sigma = sqrt(2.*diffusionConstant*driftTime); 00056 00057 double xDriftDueToMagField // Drift along X due to BField 00058 = (moduleThickness/2. - segZ)*tanLorentzAngleX; 00059 double yDriftDueToMagField // Drift along Y due to BField 00060 = (moduleThickness/2. - segZ)*tanLorentzAngleY; 00061 double positionX = segX + xDriftDueToMagField; 00062 double positionY = segY + yDriftDueToMagField; 00063 00064 return SignalPoint(positionX,positionY,sigma, 00065 (edu).energy()); 00066 }
SiChargeCollectionDrifter::collection_type SiLinearChargeCollectionDrifter::drift | ( | const SiChargeCollectionDrifter::ionization_type | ion, | |
const LocalVector & | driftDir, | |||
double | mt, | |||
double | tn | |||
) | [virtual] |
Implements SiChargeCollectionDrifter.
Definition at line 18 of file SiLinearChargeCollectionDrifter.cc.
References i, moduleThickness, and timeNormalisation.
00019 { 00020 00021 moduleThickness = mt; 00022 timeNormalisation = tn; 00023 00024 collection_type _temp; 00025 _temp.resize(ion.size()); 00026 00027 for (unsigned int i=0; i<ion.size(); i++){ 00028 _temp[i] = drift(ion[i], driftDir); 00029 } 00030 00031 return _temp; 00032 00033 }
double SiLinearChargeCollectionDrifter::appliedVoltage [private] |
Definition at line 24 of file SiLinearChargeCollectionDrifter.h.
Referenced by drift(), and SiLinearChargeCollectionDrifter().
double SiLinearChargeCollectionDrifter::chargeDistributionRMS [private] |
Definition at line 22 of file SiLinearChargeCollectionDrifter.h.
Referenced by drift(), and SiLinearChargeCollectionDrifter().
double SiLinearChargeCollectionDrifter::depletionVoltage [private] |
Definition at line 23 of file SiLinearChargeCollectionDrifter.h.
Referenced by drift(), and SiLinearChargeCollectionDrifter().
double SiLinearChargeCollectionDrifter::diffusionConstant [private] |
Definition at line 21 of file SiLinearChargeCollectionDrifter.h.
Referenced by drift(), and SiLinearChargeCollectionDrifter().
double SiLinearChargeCollectionDrifter::moduleThickness [private] |
double SiLinearChargeCollectionDrifter::timeNormalisation [private] |