CMS 3D CMS Logo

Public Member Functions | Private Types | Private Member Functions | Private Attributes

SiHitDigitizer Class Reference

#include <SiHitDigitizer.h>

List of all members.

Public Member Functions

void processHit (const PSimHit *, const StripGeomDetUnit &, GlobalVector, float, std::vector< double > &, 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< SiChargeDividertheSiChargeDivider
std::unique_ptr< const
SiInduceChargeOnStrips
theSiInduceChargeOnStrips

Detailed Description

Digitizes the response for a single SimHit.

Definition at line 30 of file SiHitDigitizer.h.


Member Typedef Documentation

typedef GloballyPositioned<double> SiHitDigitizer::Frame [private]

Definition at line 64 of file SiHitDigitizer.h.


Constructor & Destructor Documentation

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.

                               {
}

Member Function Documentation

LocalVector SiHitDigitizer::DriftDirection ( const StripGeomDetUnit *  _detp,
GlobalVector  _bfield,
float  langle 
) [inline, private]

Definition at line 66 of file SiHitDigitizer.h.

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,
const TrackerTopology *  tTopo 
)

Definition at line 32 of file SiHitDigitizer.cc.

References chargeMobility, depletionVoltage, DriftDirection(), theSiChargeCollectionDrifter, theSiChargeDivider, and theSiInduceChargeOnStrips.

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.

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); 
  }

Member Data Documentation

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

Definition at line 61 of file SiHitDigitizer.h.

Referenced by processHit(), and setChargeCollectionDrifter().

Definition at line 60 of file SiHitDigitizer.h.

Referenced by processHit(), setChargeDivider(), and setParticleDataTable().

Definition at line 62 of file SiHitDigitizer.h.

Referenced by processHit(), and setInduceChargeOnStrips().