CMS 3D CMS Logo

SiHitDigitizer.cc
Go to the documentation of this file.
1 #include "SiHitDigitizer.h"
5 
10 
11 //#define CBOLTZ (1.38E-23)
12 //#define e_SI (1.6E-19)
13 static const double CBOLTZ_over_e_SI = 1.38E-23 / 1.6E-19;
14 static const double noDiffusionMultiplier = 1.0e-3;
15 
17  : depletionVoltage(conf.getParameter<double>("DepletionVoltage")),
18  chargeMobility(conf.getParameter<double>("ChargeMobility")),
19  theSiChargeDivider(new SiLinearChargeDivider(conf)),
20  theSiChargeCollectionDrifter(new SiLinearChargeCollectionDrifter(
21  CBOLTZ_over_e_SI * chargeMobility * conf.getParameter<double>("Temperature") *
22  (conf.getParameter<bool>("noDiffusion") ? noDiffusionMultiplier : 1.0),
23  conf.getParameter<double>("ChargeDistributionRMS"),
24  depletionVoltage,
25  conf.getParameter<double>("AppliedVoltage"))),
26  theSiInduceChargeOnStrips(new SiTrivialInduceChargeOnStrips(conf, conf.getParameter<double>("GevPerElectron"))) {}
27 
29 
31  const StripGeomDetUnit& det,
32  GlobalVector bfield,
33  float langle,
34  std::vector<float>& locAmpl,
35  size_t& firstChannelWithSignal,
36  size_t& lastChannelWithSignal,
37  const TrackerTopology* tTopo,
38  CLHEP::HepRandomEngine* engine) {
39  // Compute the drift direction for this det
40  double moduleThickness = det.specificSurface().bounds().thickness(); // active detector thicness
41  double timeNormalisation = (moduleThickness * moduleThickness) / (2. * depletionVoltage * chargeMobility);
42  LocalVector driftDir = DriftDirection(&det, bfield, langle);
43 
44  // Fully process one SimHit
46  theSiChargeCollectionDrifter->drift(theSiChargeDivider->divide(hit, driftDir, moduleThickness, det, engine),
47  driftDir,
48  moduleThickness,
49  timeNormalisation),
50  det,
51  locAmpl,
52  firstChannelWithSignal,
53  lastChannelWithSignal,
54  tTopo);
55 }
Vector3DBase
Definition: Vector3DBase.h:8
SiHitDigitizer::SiHitDigitizer
SiHitDigitizer(const edm::ParameterSet &conf)
Definition: SiHitDigitizer.cc:16
electrons_cff.bool
bool
Definition: electrons_cff.py:372
SiHitDigitizer::theSiInduceChargeOnStrips
std::unique_ptr< const SiInduceChargeOnStrips > theSiInduceChargeOnStrips
Definition: SiHitDigitizer.h:60
MessageLogger.h
SiLinearChargeDivider
Definition: SiLinearChargeDivider.h:27
TrackerTopology
Definition: TrackerTopology.h:16
SiHitDigitizer::DriftDirection
LocalVector DriftDirection(const StripGeomDetUnit *_detp, GlobalVector _bfield, float langle)
Definition: SiHitDigitizer.h:64
SiTrivialInduceChargeOnStrips.h
SiTrivialInduceChargeOnStrips
Definition: SiTrivialInduceChargeOnStrips.h:9
PSimHit.h
SiHitDigitizer::theSiChargeCollectionDrifter
std::unique_ptr< SiChargeCollectionDrifter > theSiChargeCollectionDrifter
Definition: SiHitDigitizer.h:59
Surface::bounds
const Bounds & bounds() const
Definition: Surface.h:87
SiHitDigitizer::chargeMobility
const double chargeMobility
Definition: SiHitDigitizer.h:57
SiHitDigitizer.h
SiLinearChargeDivider.h
SiHitDigitizer::depletionVoltage
const double depletionVoltage
Definition: SiHitDigitizer.h:56
Bounds::thickness
virtual float thickness() const =0
edm::ParameterSet
Definition: ParameterSet.h:36
SiLinearChargeCollectionDrifter
Definition: SiLinearChargeCollectionDrifter.h:12
SiHitDigitizer::~SiHitDigitizer
~SiHitDigitizer()
Definition: SiHitDigitizer.cc:28
SiHitDigitizer::theSiChargeDivider
std::unique_ptr< SiChargeDivider > theSiChargeDivider
Definition: SiHitDigitizer.h:58
GeomDet::specificSurface
const Plane & specificSurface() const
Same as surface(), kept for backward compatibility.
Definition: GeomDet.h:40
CBOLTZ_over_e_SI
static const double CBOLTZ_over_e_SI
Definition: SiHitDigitizer.cc:13
LocalPoint.h
SiHitDigitizer::processHit
void processHit(const PSimHit *, const StripGeomDetUnit &, GlobalVector, float, std::vector< float > &, size_t &, size_t &, const TrackerTopology *tTopo, CLHEP::HepRandomEngine *)
Definition: SiHitDigitizer.cc:30
SiLinearChargeCollectionDrifter.h
noDiffusionMultiplier
static const double noDiffusionMultiplier
Definition: SiHitDigitizer.cc:14
ParameterSet.h
PSimHit
Definition: PSimHit.h:15
hit
Definition: SiStripHitEffFromCalibTree.cc:88
StripGeomDetUnit
Definition: StripGeomDetUnit.h:15