CMS 3D CMS Logo

List of all members | Public Member Functions | Private Types | Private Member Functions | Private Attributes
SiHitDigitizer Class Reference

#include <SiHitDigitizer.h>

Public Member Functions

void processHit (const PSimHit *, const StripGeomDetUnit &, GlobalVector, float, std::vector< float > &, size_t &, size_t &, const TrackerTopology *tTopo, CLHEP::HepRandomEngine *)
 
void setChargeCollectionDrifter (SiChargeCollectionDrifter *cd)
 
void setChargeDivider (SiChargeDivider *cd)
 
void setInduceChargeOnStrips (SiInduceChargeOnStrips *cd)
 
void setParticleDataTable (const ParticleDataTable *pdt)
 
 SiHitDigitizer (const edm::ParameterSet &conf)
 
 ~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< SiChargeCollectionDriftertheSiChargeCollectionDrifter
 
std::unique_ptr< SiChargeDividertheSiChargeDivider
 
std::unique_ptr< const SiInduceChargeOnStripstheSiInduceChargeOnStrips
 

Detailed Description

Digitizes the response for a single SimHit.

Definition at line 31 of file SiHitDigitizer.h.

Member Typedef Documentation

typedef GloballyPositioned<double> SiHitDigitizer::Frame
private

Definition at line 65 of file SiHitDigitizer.h.

Constructor & Destructor Documentation

SiHitDigitizer::SiHitDigitizer ( const edm::ParameterSet conf)

Definition at line 16 of file SiHitDigitizer.cc.

16  :
17  depletionVoltage(conf.getParameter<double>("DepletionVoltage")),
18  chargeMobility(conf.getParameter<double>("ChargeMobility")),
21  CBOLTZ_over_e_SI * chargeMobility * conf.getParameter<double>("Temperature") * (conf.getParameter<bool>("noDiffusion") ? noDiffusionMultiplier : 1.0),
22  conf.getParameter<double>("ChargeDistributionRMS"),
24  conf.getParameter<double>("AppliedVoltage"))),
25  theSiInduceChargeOnStrips(new SiTrivialInduceChargeOnStrips(conf, conf.getParameter<double>("GevPerElectron"))) {
26 }
T getParameter(std::string const &) const
const double chargeMobility
const double depletionVoltage
static const double noDiffusionMultiplier
static const double CBOLTZ_over_e_SI
std::unique_ptr< const SiInduceChargeOnStrips > theSiInduceChargeOnStrips
std::unique_ptr< SiChargeCollectionDrifter > theSiChargeCollectionDrifter
std::unique_ptr< SiChargeDivider > theSiChargeDivider
SiHitDigitizer::~SiHitDigitizer ( )

Definition at line 28 of file SiHitDigitizer.cc.

28  {
29 }

Member Function Documentation

LocalVector SiHitDigitizer::DriftDirection ( const StripGeomDetUnit _detp,
GlobalVector  _bfield,
float  langle 
)
inlineprivate

Definition at line 67 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().

67  {
68  LocalVector Bfield=Frame(_detp->surface().position(),_detp->surface().rotation()).toLocal(_bfield);
69  return LocalVector(-langle * Bfield.y(),langle * Bfield.x(),1.);
70  }
Local3DVector LocalVector
Definition: LocalVector.h:12
T y() const
Definition: PV3DBase.h:63
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
const RotationType & rotation() const
T x() const
Definition: PV3DBase.h:62
const PositionType & position() const
GloballyPositioned< double > Frame
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,
CLHEP::HepRandomEngine *  engine 
)

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().

34  {
35 
36  // Compute the drift direction for this det
37  double moduleThickness = det.specificSurface().bounds().thickness(); // active detector thicness
38  double timeNormalisation = (moduleThickness*moduleThickness)/(2.*depletionVoltage*chargeMobility);
39  LocalVector driftDir = DriftDirection(&det,bfield,langle);
40 
41  // Fully process one SimHit
44  theSiChargeDivider->divide(hit, driftDir, moduleThickness, det, engine),
45  driftDir,moduleThickness,timeNormalisation),
46  det,locAmpl,firstChannelWithSignal,lastChannelWithSignal,tTopo);
47 }
LocalVector DriftDirection(const StripGeomDetUnit *_detp, GlobalVector _bfield, float langle)
const double chargeMobility
const double depletionVoltage
const Bounds & bounds() const
Definition: Surface.h:120
virtual float thickness() const =0
std::unique_ptr< const SiInduceChargeOnStrips > theSiInduceChargeOnStrips
std::unique_ptr< SiChargeCollectionDrifter > theSiChargeCollectionDrifter
const Plane & specificSurface() const
Same as surface(), kept for backward compatibility.
Definition: GeomDet.h:45
std::unique_ptr< SiChargeDivider > theSiChargeDivider
void SiHitDigitizer::setChargeCollectionDrifter ( SiChargeCollectionDrifter cd)
inline

Definition at line 42 of file SiHitDigitizer.h.

42  {
44  }
std::unique_ptr< SiChargeCollectionDrifter > theSiChargeCollectionDrifter
void SiHitDigitizer::setChargeDivider ( SiChargeDivider cd)
inline

Definition at line 38 of file SiHitDigitizer.h.

38  {
39  theSiChargeDivider.reset(cd);
40  }
std::unique_ptr< SiChargeDivider > theSiChargeDivider
void SiHitDigitizer::setInduceChargeOnStrips ( SiInduceChargeOnStrips cd)
inline

Definition at line 46 of file SiHitDigitizer.h.

46  {
47  theSiInduceChargeOnStrips.reset(cd);
48  }
std::unique_ptr< const SiInduceChargeOnStrips > theSiInduceChargeOnStrips
void SiHitDigitizer::setParticleDataTable ( const ParticleDataTable pdt)
inline

Definition at line 50 of file SiHitDigitizer.h.

50  {
51  theSiChargeDivider->setParticleDataTable(pdt);
52  }
std::unique_ptr< SiChargeDivider > theSiChargeDivider

Member Data Documentation

const double SiHitDigitizer::chargeMobility
private

Definition at line 60 of file SiHitDigitizer.h.

Referenced by processHit().

const double SiHitDigitizer::depletionVoltage
private

Definition at line 59 of file SiHitDigitizer.h.

Referenced by processHit().

std::unique_ptr<SiChargeCollectionDrifter> SiHitDigitizer::theSiChargeCollectionDrifter
private

Definition at line 62 of file SiHitDigitizer.h.

Referenced by processHit().

std::unique_ptr<SiChargeDivider> SiHitDigitizer::theSiChargeDivider
private

Definition at line 61 of file SiHitDigitizer.h.

Referenced by processHit().

std::unique_ptr<const SiInduceChargeOnStrips> SiHitDigitizer::theSiInduceChargeOnStrips
private

Definition at line 63 of file SiHitDigitizer.h.

Referenced by processHit().