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 &)
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

double appliedVoltage
double chargeDistributionRMS
double chargeMobility
edm::ParameterSet conf_
double depletionVoltage
double gevperelectron
bool noDiffusion
CLHEP::HepRandomEngine & rndEngine
double temperature
SiChargeCollectionDriftertheSiChargeCollectionDrifter
SiChargeDividertheSiChargeDivider
SiInduceChargeOnStripstheSiInduceChargeOnStrips

Detailed Description

Digitizes the response for a single SimHit.

Definition at line 27 of file SiHitDigitizer.h.


Member Typedef Documentation

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

Definition at line 69 of file SiHitDigitizer.h.


Constructor & Destructor Documentation

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

Member Function Documentation

LocalVector SiHitDigitizer::DriftDirection ( const StripGeomDetUnit _detp,
GlobalVector  _bfield,
float  langle 
) [inline, private]
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]
void SiHitDigitizer::setChargeDivider ( SiChargeDivider cd) [inline]

Definition at line 34 of file SiHitDigitizer.h.

References theSiChargeDivider.

void SiHitDigitizer::setInduceChargeOnStrips ( SiInduceChargeOnStrips cd) [inline]
void SiHitDigitizer::setParticleDataTable ( const ParticleDataTable pdt) [inline]

Member Data Documentation

Definition at line 63 of file SiHitDigitizer.h.

Referenced by SiHitDigitizer().

Definition at line 67 of file SiHitDigitizer.h.

Referenced by SiHitDigitizer().

Definition at line 64 of file SiHitDigitizer.h.

Referenced by processHit(), and SiHitDigitizer().

Definition at line 60 of file SiHitDigitizer.h.

Referenced by SiHitDigitizer().

Definition at line 62 of file SiHitDigitizer.h.

Referenced by processHit(), and SiHitDigitizer().

Definition at line 68 of file SiHitDigitizer.h.

Referenced by SiHitDigitizer().

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