![]() |
![]() |
#include <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 &, double, double) |
Private Attributes | |
const double | appliedVoltage |
const double | chargeDistributionRMS |
const double | depletionVoltage |
const double | diffusionConstant |
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.
SiLinearChargeCollectionDrifter::SiLinearChargeCollectionDrifter | ( | double | dc, |
double | cdr, | ||
double | dv, | ||
double | av | ||
) |
Definition at line 3 of file SiLinearChargeCollectionDrifter.cc.
: // Everything which does not depend on the specific det diffusionConstant(dc), chargeDistributionRMS(cdr), depletionVoltage(dv), appliedVoltage(av) { }
SiChargeCollectionDrifter::collection_type SiLinearChargeCollectionDrifter::drift | ( | const SiChargeCollectionDrifter::ionization_type | ion, |
const LocalVector & | driftDir, | ||
double | mt, | ||
double | tn | ||
) | [virtual] |
Implements SiChargeCollectionDrifter.
Definition at line 15 of file SiLinearChargeCollectionDrifter.cc.
References i.
SignalPoint SiLinearChargeCollectionDrifter::drift | ( | const EnergyDepositUnit & | edu, |
const LocalVector & | drift, | ||
double | moduleThickness, | ||
double | timeNormalisation | ||
) | [private] |
Definition at line 28 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()); }
const double SiLinearChargeCollectionDrifter::appliedVoltage [private] |
Definition at line 23 of file SiLinearChargeCollectionDrifter.h.
const double SiLinearChargeCollectionDrifter::chargeDistributionRMS [private] |
Definition at line 21 of file SiLinearChargeCollectionDrifter.h.
const double SiLinearChargeCollectionDrifter::depletionVoltage [private] |
Definition at line 22 of file SiLinearChargeCollectionDrifter.h.
const double SiLinearChargeCollectionDrifter::diffusionConstant [private] |
Definition at line 20 of file SiLinearChargeCollectionDrifter.h.