CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
List of all members | Public Member Functions | Private Attributes
PixelDigitizerAlgorithm::TimewalkCurve Class Reference

Public Member Functions

double operator() (double x) const
 
 TimewalkCurve (const edm::ParameterSet &pset)
 

Private Attributes

std::vector< double > x_
 
std::vector< double > y_
 

Detailed Description

Definition at line 15 of file PixelDigitizerAlgorithm.h.

Constructor & Destructor Documentation

PixelDigitizerAlgorithm::TimewalkCurve::TimewalkCurve ( const edm::ParameterSet pset)

Definition at line 179 of file PixelDigitizerAlgorithm.cc.

References x_, and y_.

180  : x_(pset.getParameter<std::vector<double>>("charge")), y_(pset.getParameter<std::vector<double>>("delay")) {
181  if (x_.size() != y_.size())
182  throw cms::Exception("Configuration")
183  << "Timewalk model error: the number of charge values does not match the number of delay values!";
184 }
T getParameter(std::string const &) const
Definition: ParameterSet.h:303

Member Function Documentation

double PixelDigitizerAlgorithm::TimewalkCurve::operator() ( double  x) const

Definition at line 186 of file PixelDigitizerAlgorithm.cc.

References HLT_FULL_cff::distance, cuda_std::lower_bound(), AlCaHLTBitMon_ParallelJobs::p, and x.

186  {
187  auto it = std::lower_bound(x_.begin(), x_.end(), x);
188  if (it == x_.begin())
189  return y_.front();
190  if (it == x_.end())
191  return y_.back();
192  int index = std::distance(x_.begin(), it);
193  double x_high = *it;
194  double x_low = *(--it);
195  double p = (x - x_low) / (x_high - x_low);
196  return p * y_[index] + (1 - p) * y_[index - 1];
197 }
__host__ __device__ constexpr RandomIt lower_bound(RandomIt first, RandomIt last, const T &value, Compare comp={})

Member Data Documentation

std::vector<double> PixelDigitizerAlgorithm::TimewalkCurve::x_
private

Definition at line 24 of file PixelDigitizerAlgorithm.h.

Referenced by TimewalkCurve().

std::vector<double> PixelDigitizerAlgorithm::TimewalkCurve::y_
private

Definition at line 25 of file PixelDigitizerAlgorithm.h.

Referenced by TimewalkCurve().