#include <SiHitDigitizer.h>
Digitizes the response for a single SimHit.
Definition at line 27 of file SiHitDigitizer.h.
typedef GloballyPositioned<double> SiHitDigitizer::Frame [private] |
Definition at line 69 of file SiHitDigitizer.h.
SiHitDigitizer::SiHitDigitizer | ( | const edm::ParameterSet & | conf, |
CLHEP::HepRandomEngine & | eng | ||
) |
Definition at line 14 of file SiHitDigitizer.cc.
References appliedVoltage, CBOLTZ, chargeDistributionRMS, chargeMobility, conf_, depletionVoltage, e_SI, edm::ParameterSet::getParameter(), gevperelectron, noDiffusion, rndEngine, temperature, theSiChargeCollectionDrifter, theSiChargeDivider, and theSiInduceChargeOnStrips.
:conf_(conf),rndEngine(eng){ // Construct default classes depletionVoltage = conf_.getParameter<double>("DepletionVoltage"); appliedVoltage = conf_.getParameter<double>("AppliedVoltage"); chargeMobility = conf_.getParameter<double>("ChargeMobility"); temperature = conf_.getParameter<double>("Temperature"); gevperelectron = conf_.getParameter<double>("GevPerElectron"); chargeDistributionRMS = conf_.getParameter<double>("ChargeDistributionRMS"); noDiffusion = conf_.getParameter<bool>("noDiffusion"); double diffusionConstant = CBOLTZ/e_SI * chargeMobility * temperature; if (noDiffusion) diffusionConstant *= 1.0e-3; theSiChargeDivider = new SiLinearChargeDivider(conf_,rndEngine); theSiChargeCollectionDrifter = new SiLinearChargeCollectionDrifter(diffusionConstant, chargeDistributionRMS, depletionVoltage, appliedVoltage); theSiInduceChargeOnStrips = new SiTrivialInduceChargeOnStrips(conf,gevperelectron); }
SiHitDigitizer::~SiHitDigitizer | ( | ) |
Definition at line 38 of file SiHitDigitizer.cc.
References theSiChargeCollectionDrifter, theSiChargeDivider, and theSiInduceChargeOnStrips.
{ delete theSiChargeDivider; delete theSiChargeCollectionDrifter; delete theSiInduceChargeOnStrips; }
LocalVector SiHitDigitizer::DriftDirection | ( | const StripGeomDetUnit * | _detp, |
GlobalVector | _bfield, | ||
float | langle | ||
) | [inline, private] |
Definition at line 71 of file SiHitDigitizer.h.
References GloballyPositioned< T >::position(), GloballyPositioned< T >::rotation(), GeomDet::surface(), toLocal(), PV3DBase< T, PVType, FrameType >::x(), and PV3DBase< T, PVType, FrameType >::y().
Referenced by processHit().
{ LocalVector Bfield=Frame(_detp->surface().position(),_detp->surface().rotation()).toLocal(_bfield); return LocalVector(-langle * Bfield.y(),langle * Bfield.x(),1.); }
void SiHitDigitizer::processHit | ( | const PSimHit * | hit, |
const StripGeomDetUnit & | det, | ||
GlobalVector | bfield, | ||
float | langle, | ||
std::vector< double > & | locAmpl, | ||
size_t & | firstChannelWithSignal, | ||
size_t & | lastChannelWithSignal | ||
) |
Definition at line 45 of file SiHitDigitizer.cc.
References BoundSurface::bounds(), chargeMobility, depletionVoltage, SiChargeDivider::divide(), SiChargeCollectionDrifter::drift(), DriftDirection(), SiInduceChargeOnStrips::induce(), GeomDet::specificSurface(), theSiChargeCollectionDrifter, theSiChargeDivider, theSiInduceChargeOnStrips, and Bounds::thickness().
Referenced by SiStripDigitizerAlgorithm::run().
{ // Compute the drift direction for this det double moduleThickness = det.specificSurface().bounds().thickness(); // active detector thicness double timeNormalisation = (moduleThickness*moduleThickness)/(2.*depletionVoltage*chargeMobility); LocalVector driftDir = DriftDirection(&det,bfield,langle); // Fully process one SimHit theSiInduceChargeOnStrips->induce( theSiChargeCollectionDrifter->drift( theSiChargeDivider->divide(hit, driftDir, moduleThickness, det), driftDir,moduleThickness,timeNormalisation), det,locAmpl,firstChannelWithSignal,lastChannelWithSignal); }
void SiHitDigitizer::setChargeCollectionDrifter | ( | SiChargeCollectionDrifter * | cd | ) | [inline] |
Definition at line 39 of file SiHitDigitizer.h.
References theSiChargeCollectionDrifter.
{ if (theSiChargeCollectionDrifter) delete theSiChargeCollectionDrifter; theSiChargeCollectionDrifter = cd; }
void SiHitDigitizer::setChargeDivider | ( | SiChargeDivider * | cd | ) | [inline] |
Definition at line 34 of file SiHitDigitizer.h.
References theSiChargeDivider.
{ if (theSiChargeDivider) delete theSiChargeDivider; theSiChargeDivider = cd; }
void SiHitDigitizer::setInduceChargeOnStrips | ( | SiInduceChargeOnStrips * | cd | ) | [inline] |
Definition at line 44 of file SiHitDigitizer.h.
References theSiInduceChargeOnStrips.
{ if (theSiInduceChargeOnStrips) delete theSiInduceChargeOnStrips; theSiInduceChargeOnStrips = cd; }
void SiHitDigitizer::setParticleDataTable | ( | const ParticleDataTable * | pdt | ) | [inline] |
Definition at line 49 of file SiHitDigitizer.h.
References SiChargeDivider::setParticleDataTable(), and theSiChargeDivider.
Referenced by SiStripDigitizerAlgorithm::setParticleDataTable().
{ theSiChargeDivider->setParticleDataTable(pdt); }
double SiHitDigitizer::appliedVoltage [private] |
Definition at line 63 of file SiHitDigitizer.h.
Referenced by SiHitDigitizer().
double SiHitDigitizer::chargeDistributionRMS [private] |
Definition at line 67 of file SiHitDigitizer.h.
Referenced by SiHitDigitizer().
double SiHitDigitizer::chargeMobility [private] |
Definition at line 64 of file SiHitDigitizer.h.
Referenced by processHit(), and SiHitDigitizer().
edm::ParameterSet SiHitDigitizer::conf_ [private] |
Definition at line 60 of file SiHitDigitizer.h.
Referenced by SiHitDigitizer().
double SiHitDigitizer::depletionVoltage [private] |
Definition at line 62 of file SiHitDigitizer.h.
Referenced by processHit(), and SiHitDigitizer().
double SiHitDigitizer::gevperelectron [private] |
Definition at line 68 of file SiHitDigitizer.h.
Referenced by SiHitDigitizer().
bool SiHitDigitizer::noDiffusion [private] |
Definition at line 66 of file SiHitDigitizer.h.
Referenced by SiHitDigitizer().
CLHEP::HepRandomEngine& SiHitDigitizer::rndEngine [private] |
Definition at line 61 of file SiHitDigitizer.h.
Referenced by SiHitDigitizer().
double SiHitDigitizer::temperature [private] |
Definition at line 65 of file SiHitDigitizer.h.
Referenced by SiHitDigitizer().
Definition at line 58 of file SiHitDigitizer.h.
Referenced by processHit(), setChargeCollectionDrifter(), SiHitDigitizer(), and ~SiHitDigitizer().
Definition at line 57 of file SiHitDigitizer.h.
Referenced by processHit(), setChargeDivider(), setParticleDataTable(), SiHitDigitizer(), and ~SiHitDigitizer().
Definition at line 59 of file SiHitDigitizer.h.
Referenced by processHit(), setInduceChargeOnStrips(), SiHitDigitizer(), and ~SiHitDigitizer().