CMS 3D CMS Logo

SiLinearChargeCollectionDrifter Class Reference

Concrete implementation of SiChargeCollectionDrifter. More...

#include <SimTracker/SiStripDigitizer/interface/SiLinearChargeCollectionDrifter.h>

Inheritance diagram for SiLinearChargeCollectionDrifter:

SiChargeCollectionDrifter

List of all members.

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


Detailed Description

Concrete implementation of SiChargeCollectionDrifter.

Drifts the charges linearly.

Definition at line 9 of file SiLinearChargeCollectionDrifter.h.


Constructor & Destructor Documentation

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 }


Member Function Documentation

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 }


Member Data Documentation

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]

Definition at line 19 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().

double SiLinearChargeCollectionDrifter::timeNormalisation [private]

Definition at line 20 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:31:32 2009 for CMSSW by  doxygen 1.5.4