CMS 3D CMS Logo

SSDigitizerAlgorithm.cc
Go to the documentation of this file.
1 #include <iostream>
2 #include <cmath>
3 
7 
9 
11 #include "CLHEP/Random/RandGaussQ.h"
12 #include "CLHEP/Random/RandFlat.h"
13 
19 
20 
21 // Geometry
26 
27 using namespace edm;
28 
30  es.get<TrackerDigiGeometryRecord>().get(geom_);
31 }
32 SSDigitizerAlgorithm::SSDigitizerAlgorithm(const edm::ParameterSet& conf, CLHEP::HepRandomEngine& eng) :
33  Phase2TrackerDigitizerAlgorithm(conf.getParameter<ParameterSet>("AlgorithmCommon"),
34  conf.getParameter<ParameterSet>("SSDigitizerAlgorithm"),
35  eng)
36 {
37  pixelFlag = false;
38  LogInfo("SSDigitizerAlgorithm ") << "SSDigitizerAlgorithm constructed "
39  << "Configuration parameters:"
40  << "Threshold/Gain = "
41  << "threshold in electron Endcap = "
43  << "threshold in electron Barrel = "
45  <<" " << theElectronPerADC << " " << theAdcFullScale
46  << " The delta cut-off is set to " << tMax
47  << " pix-inefficiency "<<AddPixelInefficiency;
48 }
50  LogDebug("SSDigitizerAlgorithm") << "SSDigitizerAlgorithm deleted";
51 }
52 void SSDigitizerAlgorithm::accumulateSimHits(std::vector<PSimHit>::const_iterator inputBegin,
53  std::vector<PSimHit>::const_iterator inputEnd,
54  const size_t inputBeginGlobalIndex,
55  const unsigned int tofBin,
56  const Phase2TrackerGeomDetUnit* pixdet,
57  const GlobalVector& bfield) {
58  // produce SignalPoint's for all SimHit's in detector
59  // Loop over hits
60  uint32_t detId = pixdet->geographicalId().rawId();
61  size_t simHitGlobalIndex = inputBeginGlobalIndex; // This needs to be stored to create the digi-sim link later
62  for (auto it = inputBegin; it != inputEnd; ++it, ++simHitGlobalIndex) {
63  // skip hits not in this detector.
64  if ((*it).detUnitId() != detId)
65  continue;
66 
67  LogDebug("SSDigitizerAlgorithm")
68  << (*it).particleType() << " " << (*it).pabs() << " "
69  << (*it).energyLoss() << " " << (*it).tof() << " "
70  << (*it).trackId() << " " << (*it).processType() << " "
71  << (*it).detUnitId()
72  << (*it).entryPoint() << " " << (*it).exitPoint() ;
73 
74  std::vector<DigitizerUtility::EnergyDepositUnit> ionization_points;
75  std::vector<DigitizerUtility::SignalPoint> collection_points;
76 
77  // fill collection_points for this SimHit, indpendent of topology
78  // Check the TOF cut
79  if (((*it).tof() - pixdet->surface().toGlobal((*it).localPosition()).mag()/30.) >= theTofLowerCut &&
80  ((*it).tof() - pixdet->surface().toGlobal((*it).localPosition()).mag()/30.) <= theTofUpperCut) {
81  primary_ionization(*it, ionization_points); // fills _ionization_points
82  drift(*it, pixdet, bfield, ionization_points, collection_points); // transforms _ionization_points to collection_points
83 
84  // compute induced signal on readout elements and add to _signal
85 
86  induce_signal(*it, simHitGlobalIndex, tofBin, pixdet, collection_points); // *ihit needed only for SimHit<-->Digi link
87  }
88  }
89 }
void primary_ionization(const PSimHit &hit, std::vector< DigitizerUtility::EnergyDepositUnit > &ionization_points) const
#define LogDebug(id)
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:106
T mag() const
The vector magnitude. Equivalent to sqrt(vec.mag2())
void drift(const PSimHit &hit, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield, const std::vector< DigitizerUtility::EnergyDepositUnit > &ionization_points, std::vector< DigitizerUtility::SignalPoint > &collection_points) const
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:42
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
void accumulateSimHits(const std::vector< PSimHit >::const_iterator inputBegin, const std::vector< PSimHit >::const_iterator inputEnd, const size_t inputBeginGlobalIndex, const unsigned int tofBin, const Phase2TrackerGeomDetUnit *pixdet, const GlobalVector &bfield) override
SSDigitizerAlgorithm(const edm::ParameterSet &conf, CLHEP::HepRandomEngine &)
DetId geographicalId() const
The label of this GeomDet.
Definition: GeomDet.h:79
void init(const edm::EventSetup &es) override
void induce_signal(const PSimHit &hit, const size_t hitIndex, const unsigned int tofBin, const Phase2TrackerGeomDetUnit *pixdet, const std::vector< DigitizerUtility::SignalPoint > &collection_points)
const T & get() const
Definition: EventSetup.h:55
HLT enums.