CMS 3D CMS Logo

Classes | Functions
SiStripPulseShape.h File Reference

Go to the source code of this file.

Classes

class  SiStripPulseShape
 

Functions

double fdecay (double *x, double *par)
 
double fdeconv (double *x, double *par)
 
double fdeconv_convoluted (double *x, double *par)
 
double fpeak (double *x, double *par)
 
double fpeak_convoluted (double *x, double *par)
 
double fturnOn (double *x, double *par)
 
double pulse (double x, double y, double z, double t)
 
double pulse_raw (double x, double y, double z, double t)
 
double pulse_x0 (double y, double z, double t)
 
double pulse_x0_yz (double z, double t)
 
double pulse_yz (double x, double z, double t)
 

Function Documentation

double fdecay ( double *  x,
double *  par 
)

Definition at line 95 of file SiStripPulseShape.cc.

References alignCSCRings::s, and genVertex_cff::x.

Referenced by CalibrationScanAlgorithm::analyse().

95  {
96 
97  double s = par[0];
98  double c_exp = par[1];
99  double c_pow = par[2];
100 
101  return s*TMath::Exp(x[0]*c_exp)*(1+x[0]*c_pow);
102 }
double fdeconv ( double *  x,
double *  par 
)

Definition at line 107 of file SiStripPulseShape.cc.

References fpeak(), and geometryCSVtoXML::xz.

Referenced by CalibrationAlgorithm::analyse(), CalibrationScanAlgorithm::analyse(), and SiStripPulseShape::getNormalizedValue().

107  {
108  double xm = par[6]*(x[0]-25);
109  double xp = par[6]*(x[0]+25);
110  double xz = par[6]*x[0];
111  return 1.2131 * fpeak(&xp,par) - 1.4715 * fpeak(&xz,par) + 0.4463 * fpeak(&xm,par);
112 }
double fpeak(double *x, double *par)
double fdeconv_convoluted ( double *  x,
double *  par 
)

Definition at line 119 of file SiStripPulseShape.cc.

References fpeak_convoluted(), and geometryCSVtoXML::xz.

Referenced by SamplingAlgorithm::SamplingAlgorithm().

119  {
120  double xm = (x[0]-25);
121  double xp = (x[0]+25);
122  double xz = x[0];
123  return 1.2131*fpeak_convoluted(&xp,par)-1.4715*fpeak_convoluted(&xz,par)+0.4463*fpeak_convoluted(&xm,par);
124 }
double fpeak_convoluted(double *x, double *par)
double fpeak ( double *  x,
double *  par 
)

Definition at line 69 of file SiStripPulseShape.cc.

References pulse(), alignCSCRings::s, lumiQTWidget::t, geometryCSVtoXML::xx, detailsBasic3DVector::y, and detailsBasic3DVector::z.

Referenced by CalibrationAlgorithm::analyse(), fdeconv(), fpeak_convoluted(), and SiStripPulseShape::getNormalizedValue().

69  {
70 
71  double xx = par[0];
72  double y = par[1];
73  double z = par[2];
74  double a_0 = par[3];
75  double s = par[4];
76  double t_0 = par[5];
77  double t = x[0] - t_0;
78 
79  // below turn-on time return just a constant
80  if(x[0] < t_0) return a_0;
81  // elswhere return the pulse
82  return a_0 + s * pulse(xx, y, z, t);
83 }
double pulse(double x, double y, double z, double t)
float float float z
double fpeak_convoluted ( double *  x,
double *  par 
)

Definition at line 114 of file SiStripPulseShape.cc.

References f, and fpeak().

Referenced by fdeconv_convoluted(), and SamplingAlgorithm::SamplingAlgorithm().

114  {
115  TF1 f("peak_convoluted",fpeak,0,250,4);
116  return f.IntegralError(x[0]-par[4]/2.,x[0]+par[4]/2.,par,nullptr,1.)/(par[4]);
117 }
double f[11][100]
double fpeak(double *x, double *par)
double fturnOn ( double *  x,
double *  par 
)

Definition at line 85 of file SiStripPulseShape.cc.

References alignCSCRings::s, and ApeEstimator_cff::width.

Referenced by CalibrationScanAlgorithm::analyse().

85  {
86 
87  double a_0 = par[0];
88  double s = par[1];
89  double t_0 = par[2];
90  double width = par[3];
91 
92  return a_0+s*TMath::Erf((x[0]-t_0)/width);
93 }
double pulse ( double  x,
double  y,
double  z,
double  t 
)

Definition at line 55 of file SiStripPulseShape.cc.

References pulse_raw(), pulse_x0(), pulse_x0_yz(), pulse_yz(), genVertex_cff::x, and detailsBasic3DVector::y.

Referenced by CSCUpgradeCathodeLCTProcessor::findLCTs(), CSCCathodeLCTProcessor::findLCTs(), fpeak(), pos::PixelFEDTestDAC::levelEncoder(), HcalSiPMHitResponse::makeSiPMSignal(), CSCCathodeLCTProcessor::patternFinding(), CSCUpgradeCathodeLCTProcessor::preTrigger(), CSCCathodeLCTProcessor::preTrigger(), CSCCathodeLCTProcessor::pulseExtension(), FitterFuncs::PulseShapeFunctor::PulseShapeFunctor(), AbsElectronicODERHS::setInputPulse(), HcalQie::shape(), and EcalUncalibRecHitTimeWeightsAlgo< EBDataFrame >::time().

55  {
56 
57  if(x > y){
58  double pivot = x;
59  x = y;
60  y = pivot;
61  }
62 
63  if((x == 0) && (y == z)) return pulse_x0_yz(z, t);
64  else if(x == 0) return pulse_x0(y, z, t);
65  else if(y == z) return pulse_yz(x, z, t);
66  else return pulse_raw(x, y, z, t);
67 }
double pulse_x0(double y, double z, double t)
double pulse_yz(double x, double z, double t)
float float float z
double pulse_raw(double x, double y, double z, double t)
double pulse_x0_yz(double z, double t)
double pulse_raw ( double  x,
double  y,
double  z,
double  t 
)

Definition at line 20 of file SiStripPulseShape.cc.

References JetChargeProducer_cfi::exp, funct::pow(), and detailsBasic3DVector::z.

Referenced by pulse().

20  {
21 
22  double result1, result2, result3;
23 
24  result1 = z * y * exp(-t / y);
25  result1/= pow(y,2) - (x + z) * y + z * x;
26 
27  result2 = z * x * exp(-t / x);
28  result2/= pow(x,2) - (x - z) * y - z * x;
29 
30  result3 = pow(z,2) * exp(-t / z);
31  result3/= pow(z,2) + (x - z) * y - z * x;
32 
33  return result1 + result2 + result3;
34 }
float float float z
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double pulse_x0 ( double  y,
double  z,
double  t 
)

Definition at line 36 of file SiStripPulseShape.cc.

References JetChargeProducer_cfi::exp, and detailsBasic3DVector::z.

Referenced by pulse().

36  {
37  return z / (y - z) * (exp(-t / y) - exp(-t / z));
38 }
float float float z
double pulse_x0_yz ( double  z,
double  t 
)

Definition at line 51 of file SiStripPulseShape.cc.

References JetChargeProducer_cfi::exp.

Referenced by pulse().

51  {
52  return t / z * exp(-t / z);
53 }
float float float z
double pulse_yz ( double  x,
double  z,
double  t 
)

Definition at line 40 of file SiStripPulseShape.cc.

References JetChargeProducer_cfi::exp, and genVertex_cff::x.

Referenced by pulse().

40  {
41  double result1, result2;
42 
43  result1 = exp(-t / x) - exp(-t / z);
44  result1*= z * x / (z - x);
45 
46  result2 = t * exp(-t / z);
47 
48  return (result1 + result2) / (z - x);
49 }
float float float z