CMS 3D CMS Logo

Public Member Functions | Private Member Functions | Private Attributes

SiLinearChargeCollectionDrifter Class Reference

#include <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. 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 3 of file SiLinearChargeCollectionDrifter.cc.

References appliedVoltage, chargeDistributionRMS, depletionVoltage, and diffusionConstant.

                                                                           {
  // Everything which does not depend on the specific det
  diffusionConstant = dc;
  chargeDistributionRMS = cdr;
  depletionVoltage = dv;
  appliedVoltage = 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.

                                                                                                                                    {
  // set some variables used in the main method
  moduleThickness = mt;
  timeNormalisation = tn;
  // prepare output
  collection_type _temp;
  _temp.resize(ion.size());
  // call the drift method for each deposit
  for (size_t i=0; i<ion.size(); i++){
    _temp[i] = drift(ion[i], driftDir);
  }
  return _temp;
}
SignalPoint SiLinearChargeCollectionDrifter::drift ( const EnergyDepositUnit edu,
const LocalVector drift 
) [private]

Definition at line 30 of file SiLinearChargeCollectionDrifter.cc.

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

                                                         {
  // computes the fraction of the module the charge has to drift through,
  // ensuring it is bounded in [0,1]
  double depth = (moduleThickness/2.-edu.z());
  double thicknessFraction = depth/moduleThickness ; 
  thicknessFraction = thicknessFraction>0. ? thicknessFraction : 0. ;
  thicknessFraction = thicknessFraction<1. ? thicknessFraction : 1. ;
  
  // computes the drift time in the sensor
  double driftTime = -timeNormalisation*
    log(1.-2*depletionVoltage*thicknessFraction/
        (depletionVoltage+appliedVoltage))
    +chargeDistributionRMS;  
  
  // returns the signal: an energy on the surface, with a size due to diffusion.
  return SignalPoint(edu.x() + depth*drift.x()/drift.z(),
                     edu.y() + depth*drift.y()/drift.z(),
                     sqrt(2.*diffusionConstant*driftTime),
                     edu.energy());
}

Member Data Documentation

Definition at line 25 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

Definition at line 23 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

Definition at line 24 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

Definition at line 22 of file SiLinearChargeCollectionDrifter.h.

Referenced by SiLinearChargeCollectionDrifter().

Definition at line 20 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().

Definition at line 21 of file SiLinearChargeCollectionDrifter.h.

Referenced by drift().