#include <SiHitDigitizer.h>
Public Member Functions | |
void | processHit (const PSimHit *, const StripGeomDetUnit &, GlobalVector, float, std::vector< float > &, size_t &, size_t &, const TrackerTopology *tTopo) |
void | setChargeCollectionDrifter (SiChargeCollectionDrifter *cd) |
void | setChargeDivider (SiChargeDivider *cd) |
void | setInduceChargeOnStrips (SiInduceChargeOnStrips *cd) |
void | setParticleDataTable (const ParticleDataTable *pdt) |
SiHitDigitizer (const edm::ParameterSet &conf, CLHEP::HepRandomEngine &) | |
~SiHitDigitizer () | |
Private Types | |
typedef GloballyPositioned < double > | Frame |
Private Member Functions | |
LocalVector | DriftDirection (const StripGeomDetUnit *_detp, GlobalVector _bfield, float langle) |
Private Attributes | |
const double | chargeMobility |
const double | depletionVoltage |
std::unique_ptr < SiChargeCollectionDrifter > | theSiChargeCollectionDrifter |
std::unique_ptr< SiChargeDivider > | theSiChargeDivider |
std::unique_ptr< const SiInduceChargeOnStrips > | theSiInduceChargeOnStrips |
Digitizes the response for a single SimHit.
Definition at line 30 of file SiHitDigitizer.h.
typedef GloballyPositioned<double> SiHitDigitizer::Frame [private] |
Definition at line 64 of file SiHitDigitizer.h.
SiHitDigitizer::SiHitDigitizer | ( | const edm::ParameterSet & | conf, |
CLHEP::HepRandomEngine & | eng | ||
) |
Definition at line 16 of file SiHitDigitizer.cc.
: depletionVoltage(conf.getParameter<double>("DepletionVoltage")), chargeMobility(conf.getParameter<double>("ChargeMobility")), theSiChargeDivider(new SiLinearChargeDivider(conf, eng)), theSiChargeCollectionDrifter(new SiLinearChargeCollectionDrifter( CBOLTZ_over_e_SI * chargeMobility * conf.getParameter<double>("Temperature") * (conf.getParameter<bool>("noDiffusion") ? noDiffusionMultiplier : 1.0), conf.getParameter<double>("ChargeDistributionRMS"), depletionVoltage, conf.getParameter<double>("AppliedVoltage"))), theSiInduceChargeOnStrips(new SiTrivialInduceChargeOnStrips(conf, conf.getParameter<double>("GevPerElectron"))) { }
SiHitDigitizer::~SiHitDigitizer | ( | ) |
Definition at line 28 of file SiHitDigitizer.cc.
{ }
LocalVector SiHitDigitizer::DriftDirection | ( | const StripGeomDetUnit * | _detp, |
GlobalVector | _bfield, | ||
float | langle | ||
) | [inline, private] |
Definition at line 66 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< float > & | locAmpl, | ||
size_t & | firstChannelWithSignal, | ||
size_t & | lastChannelWithSignal, | ||
const TrackerTopology * | tTopo | ||
) |
Definition at line 32 of file SiHitDigitizer.cc.
References Surface::bounds(), chargeMobility, depletionVoltage, DriftDirection(), GeomDet::specificSurface(), theSiChargeCollectionDrifter, theSiChargeDivider, theSiInduceChargeOnStrips, and Bounds::thickness().
Referenced by DigiSimLinkAlgorithm::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,tTopo); }
void SiHitDigitizer::setChargeCollectionDrifter | ( | SiChargeCollectionDrifter * | cd | ) | [inline] |
Definition at line 41 of file SiHitDigitizer.h.
References theSiChargeCollectionDrifter.
{ theSiChargeCollectionDrifter.reset(cd); }
void SiHitDigitizer::setChargeDivider | ( | SiChargeDivider * | cd | ) | [inline] |
Definition at line 37 of file SiHitDigitizer.h.
References theSiChargeDivider.
{ theSiChargeDivider.reset(cd); }
void SiHitDigitizer::setInduceChargeOnStrips | ( | SiInduceChargeOnStrips * | cd | ) | [inline] |
Definition at line 45 of file SiHitDigitizer.h.
References theSiInduceChargeOnStrips.
{ theSiInduceChargeOnStrips.reset(cd); }
void SiHitDigitizer::setParticleDataTable | ( | const ParticleDataTable * | pdt | ) | [inline] |
Definition at line 49 of file SiHitDigitizer.h.
References theSiChargeDivider.
Referenced by DigiSimLinkAlgorithm::setParticleDataTable().
{ theSiChargeDivider->setParticleDataTable(pdt); }
const double SiHitDigitizer::chargeMobility [private] |
Definition at line 59 of file SiHitDigitizer.h.
Referenced by processHit().
const double SiHitDigitizer::depletionVoltage [private] |
Definition at line 58 of file SiHitDigitizer.h.
Referenced by processHit().
std::unique_ptr<SiChargeCollectionDrifter> SiHitDigitizer::theSiChargeCollectionDrifter [private] |
Definition at line 61 of file SiHitDigitizer.h.
Referenced by processHit(), and setChargeCollectionDrifter().
std::unique_ptr<SiChargeDivider> SiHitDigitizer::theSiChargeDivider [private] |
Definition at line 60 of file SiHitDigitizer.h.
Referenced by processHit(), setChargeDivider(), and setParticleDataTable().
std::unique_ptr<const SiInduceChargeOnStrips> SiHitDigitizer::theSiInduceChargeOnStrips [private] |
Definition at line 62 of file SiHitDigitizer.h.
Referenced by processHit(), and setInduceChargeOnStrips().