CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
SiLinearChargeCollectionDrifter Class Reference

#include <SiLinearChargeCollectionDrifter.h>

Inheritance diagram for SiLinearChargeCollectionDrifter:
SiChargeCollectionDrifter

Public Member Functions

SiChargeCollectionDrifter::collection_type drift (const SiChargeCollectionDrifter::ionization_type, const LocalVector &, double, double)
 
 SiLinearChargeCollectionDrifter (double, double, double, double)
 
- Public Member Functions inherited from SiChargeCollectionDrifter
virtual ~SiChargeCollectionDrifter ()
 

Private Member Functions

SignalPoint drift (const EnergyDepositUnit &, const LocalVector &)
 

Private Attributes

double appliedVoltage
 
double chargeDistributionRMS
 
double depletionVoltage
 
double diffusionConstant
 
double moduleThickness
 
double timeNormalisation
 

Additional Inherited Members

- Public Types inherited from SiChargeCollectionDrifter
typedef std::vector< SignalPointcollection_type
 
typedef std::vector
< EnergyDepositUnit
ionization_type
 

Detailed Description

Concrete implementation of SiChargeCollectionDrifter. Drifts the charges linearly. Drift each energy deposits in the bulk to the surface. The resulting position depends on the Lorentz angle, and a sigma is computed that describes the diffusion.

Definition at line 12 of file SiLinearChargeCollectionDrifter.h.

Constructor & Destructor Documentation

SiLinearChargeCollectionDrifter::SiLinearChargeCollectionDrifter ( double  dc,
double  cdr,
double  dv,
double  av 
)

Member Function Documentation

SiChargeCollectionDrifter::collection_type SiLinearChargeCollectionDrifter::drift ( const SiChargeCollectionDrifter::ionization_type  ion,
const LocalVector driftDir,
double  mt,
double  tn 
)
virtual

Implements SiChargeCollectionDrifter.

Definition at line 14 of file SiLinearChargeCollectionDrifter.cc.

References i, moduleThickness, and timeNormalisation.

15  {
16  // set some variables used in the main method
17  moduleThickness = mt;
18  timeNormalisation = tn;
19  // prepare output
20  collection_type _temp;
21  _temp.resize(ion.size());
22  // call the drift method for each deposit
23  for (size_t i=0; i<ion.size(); i++){
24  _temp[i] = drift(ion[i], driftDir);
25  }
26  return _temp;
27 }
int i
Definition: DBlmapReader.cc:9
std::vector< SignalPoint > collection_type
SiChargeCollectionDrifter::collection_type drift(const SiChargeCollectionDrifter::ionization_type, const LocalVector &, double, double)
SignalPoint SiLinearChargeCollectionDrifter::drift ( const EnergyDepositUnit edu,
const LocalVector drift 
)
private

Definition at line 30 of file SiLinearChargeCollectionDrifter.cc.

References EnergyDepositUnit::energy(), create_public_lumi_plots::log, mathSSE::sqrt(), EnergyDepositUnit::x(), PV3DBase< T, PVType, FrameType >::x(), EnergyDepositUnit::y(), PV3DBase< T, PVType, FrameType >::y(), EnergyDepositUnit::z(), and PV3DBase< T, PVType, FrameType >::z().

30  {
31  // computes the fraction of the module the charge has to drift through,
32  // ensuring it is bounded in [0,1]
33  double depth = (moduleThickness/2.-edu.z());
34  double thicknessFraction = depth/moduleThickness ;
35  thicknessFraction = thicknessFraction>0. ? thicknessFraction : 0. ;
36  thicknessFraction = thicknessFraction<1. ? thicknessFraction : 1. ;
37 
38  // computes the drift time in the sensor
39  double driftTime = -timeNormalisation*
40  log(1.-2*depletionVoltage*thicknessFraction/
43 
44  // returns the signal: an energy on the surface, with a size due to diffusion.
45  return SignalPoint(edu.x() + depth*drift.x()/drift.z(),
46  edu.y() + depth*drift.y()/drift.z(),
47  sqrt(2.*diffusionConstant*driftTime),
48  edu.energy());
49 }
float x() const
float y() const
T y() const
Definition: PV3DBase.h:62
T sqrt(T t)
Definition: SSEVec.h:46
float z() const
T z() const
Definition: PV3DBase.h:63
float energy() const
T x() const
Definition: PV3DBase.h:61

Member Data Documentation

double SiLinearChargeCollectionDrifter::appliedVoltage
private

Definition at line 25 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

double SiLinearChargeCollectionDrifter::chargeDistributionRMS
private

Definition at line 23 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

double SiLinearChargeCollectionDrifter::depletionVoltage
private

Definition at line 24 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

double SiLinearChargeCollectionDrifter::diffusionConstant
private

Definition at line 22 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

double SiLinearChargeCollectionDrifter::moduleThickness
private

Definition at line 20 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().

double SiLinearChargeCollectionDrifter::timeNormalisation
private

Definition at line 21 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().