CMS 3D CMS Logo

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) override
 
 SiLinearChargeCollectionDrifter (double, double, double, double)
 
- Public Member Functions inherited from SiChargeCollectionDrifter
virtual ~SiChargeCollectionDrifter ()
 

Private Member Functions

SignalPoint drift (const EnergyDepositUnit &, const LocalVector &, double, double)
 

Private Attributes

const double appliedVoltage
 
const double chargeDistributionRMS
 
const double depletionVoltage
 
const double diffusionConstant
 

Additional Inherited Members

- Public Types inherited from SiChargeCollectionDrifter
typedef std::vector< SignalPointcollection_type
 
typedef std::vector< EnergyDepositUnitionization_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 
)

Definition at line 4 of file SiLinearChargeCollectionDrifter.cc.

7  :
8  // Everything which does not depend on the specific det
11  depletionVoltage(dv),
12  appliedVoltage(av)
13 {
14 }

Member Function Documentation

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

Implements SiChargeCollectionDrifter.

Definition at line 16 of file SiLinearChargeCollectionDrifter.cc.

References mps_fire::i.

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

Definition at line 29 of file SiLinearChargeCollectionDrifter.cc.

References appliedVoltage, chargeDistributionRMS, depletionVoltage, particleFlowClusterECALTimeSelected_cfi::depth, diffusionConstant, EnergyDepositUnit::energy(), mathSSE::sqrt(), EnergyDepositUnit::x(), PV3DBase< T, PVType, FrameType >::x(), EnergyDepositUnit::y(), PV3DBase< T, PVType, FrameType >::y(), EnergyDepositUnit::z(), and PV3DBase< T, PVType, FrameType >::z().

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

Member Data Documentation

const double SiLinearChargeCollectionDrifter::appliedVoltage
private

Definition at line 23 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().

const double SiLinearChargeCollectionDrifter::chargeDistributionRMS
private

Definition at line 21 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().

const double SiLinearChargeCollectionDrifter::depletionVoltage
private

Definition at line 22 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().

const double SiLinearChargeCollectionDrifter::diffusionConstant
private

Definition at line 20 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().