CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiHitDigitizer.h
Go to the documentation of this file.
1 #ifndef _TRACKER_SiHitDigitizer_H_
2 #define _TRACKER_SiHitDigitizer_H_
3 
5 
11 #include "SiChargeDivider.h"
12 #include "SiInduceChargeOnStrips.h"
14 
16 
17 #include <map>
18 #include <memory>
19 
20 class TrackerTopology;
21 
22 class SiStripDetType;
23 
24 namespace CLHEP{
25  class HepRandomEngine;
26 }
27 
32  public:
33 
34  SiHitDigitizer(const edm::ParameterSet& conf);
35 
37 
39  theSiChargeDivider.reset(cd);
40  }
41 
44  }
45 
47  theSiInduceChargeOnStrips.reset(cd);
48  }
49 
51  theSiChargeDivider->setParticleDataTable(pdt);
52  }
53 
54  void processHit(const PSimHit*, const StripGeomDetUnit&, GlobalVector,float,
55  std::vector<float>&, size_t&, size_t&,
56  const TrackerTopology *tTopo, CLHEP::HepRandomEngine*);
57 
58  private:
59  const double depletionVoltage;
60  const double chargeMobility;
61  std::unique_ptr<SiChargeDivider> theSiChargeDivider;
62  std::unique_ptr<SiChargeCollectionDrifter> theSiChargeCollectionDrifter;
63  std::unique_ptr<const SiInduceChargeOnStrips> theSiInduceChargeOnStrips;
64 
66 
67  LocalVector DriftDirection(const StripGeomDetUnit* _detp, GlobalVector _bfield, float langle) {
68  LocalVector Bfield=Frame(_detp->surface().position(),_detp->surface().rotation()).toLocal(_bfield);
69  return LocalVector(-langle * Bfield.y(),langle * Bfield.x(),1.);
70  }
71 
72 };
73 
74 #endif
Local3DVector LocalVector
Definition: LocalVector.h:12
LocalVector DriftDirection(const StripGeomDetUnit *_detp, GlobalVector _bfield, float langle)
HepPDT::ParticleDataTable ParticleDataTable
const double chargeMobility
T y() const
Definition: PV3DBase.h:63
const double depletionVoltage
LocalVector toLocal(const reco::Track::Vector &v, const Surface &s)
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
SiHitDigitizer(const edm::ParameterSet &conf)
void setParticleDataTable(const ParticleDataTable *pdt)
void processHit(const PSimHit *, const StripGeomDetUnit &, GlobalVector, float, std::vector< float > &, size_t &, size_t &, const TrackerTopology *tTopo, CLHEP::HepRandomEngine *)
std::unique_ptr< const SiInduceChargeOnStrips > theSiInduceChargeOnStrips
std::unique_ptr< SiChargeCollectionDrifter > theSiChargeCollectionDrifter
void setInduceChargeOnStrips(SiInduceChargeOnStrips *cd)
const RotationType & rotation() const
T x() const
Definition: PV3DBase.h:62
const PositionType & position() const
void setChargeDivider(SiChargeDivider *cd)
GloballyPositioned< double > Frame
void setChargeCollectionDrifter(SiChargeCollectionDrifter *cd)
std::unique_ptr< SiChargeDivider > theSiChargeDivider