CMS 3D CMS Logo

PixelDigitizerAlgorithm.h
Go to the documentation of this file.
1 #ifndef _SimTracker_SiPhase2Digitizer_PixelDigitizerAlgorithm_h
2 #define _SimTracker_SiPhase2Digitizer_PixelDigitizerAlgorithm_h
3 
11 
13 private:
14  // A list of 2d points
15  class TimewalkCurve {
16  public:
17  // pset must contain "charge" and "delay" of type vdouble
19 
20  // linear interpolation
21  double operator()(double x) const;
22 
23  private:
24  std::vector<double> x_;
25  std::vector<double> y_;
26  };
27 
28  // Holds the timewalk model data
29  class TimewalkModel {
30  public:
32 
33  // returns the delay for given input charge and threshold
34  double operator()(double q_in, double q_threshold) const;
35 
36  private:
37  std::size_t find_closest_index(const std::vector<double>& vec, double value) const;
38 
39  std::vector<double> threshold_values;
40  std::vector<TimewalkCurve> curves;
41  };
42 
43 public:
45  ~PixelDigitizerAlgorithm() override;
46 
47  // initialization that cannot be done in the constructor
48  void init(const edm::EventSetup& es) override;
49 
50  bool select_hit(const PSimHit& hit, double tCorr, double& sigScale) const override;
51  bool isAboveThreshold(const digitizerUtility::SimHitInfo* hitInfo, float charge, float thr) const override;
52  void add_cross_talk(const Phase2TrackerGeomDetUnit* pixdet) override;
53  void module_killing_DB(const Phase2TrackerGeomDetUnit* pixdet) override;
54 
55  // Addition four xtalk-related parameters to PixelDigitizerAlgorithm specific parameters initialized in Phase2TrackerDigitizerAlgorithm
60 
61  // Timewalk parameters
64 
69 };
70 #endif
const edm::ESGetToken< SiPixelFedCablingMap, SiPixelFedCablingMapRcd > fedCablingMapToken_
edm::ESGetToken< SiPixelQuality, SiPixelQualityRcd > siPixelBadModuleToken_
void init(const edm::EventSetup &es) override
void module_killing_DB(const Phase2TrackerGeomDetUnit *pixdet) override
const TimewalkModel timewalk_model_
void add_cross_talk(const Phase2TrackerGeomDetUnit *pixdet) override
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
double operator()(double q_in, double q_threshold) const
TimewalkCurve(const edm::ParameterSet &pset)
Definition: value.py:1
bool select_hit(const PSimHit &hit, double tCorr, double &sigScale) const override
TimewalkModel(const edm::ParameterSet &pset)
PixelDigitizerAlgorithm(const edm::ParameterSet &conf, edm::ConsumesCollector iC)
bool isAboveThreshold(const digitizerUtility::SimHitInfo *hitInfo, float charge, float thr) const override
std::size_t find_closest_index(const std::vector< double > &vec, double value) const
edm::ESGetToken< SiPixelLorentzAngle, SiPixelLorentzAngleSimRcd > siPixelLorentzAngleToken_