CMS 3D CMS Logo

Functions
SiStripPulseShape.cc File Reference
#include "DQM/SiStripCommissioningAnalysis/interface/SiStripPulseShape.h"
#include <TF1.h>
#include <TMath.h>

Go to the source code of this file.

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

◆ fdecay()

double fdecay ( double *  x,
double *  par 
)

Definition at line 91 of file SiStripPulseShape.cc.

References alignCSCRings::s, and x.

Referenced by CalibrationScanAlgorithm::analyse().

91  {
92  double s = par[0];
93  double c_exp = par[1];
94  double c_pow = par[2];
95 
96  return s * TMath::Exp(x[0] * c_exp) * (1 + x[0] * c_pow);
97 }
float x

◆ fdeconv()

double fdeconv ( double *  x,
double *  par 
)

Definition at line 101 of file SiStripPulseShape.cc.

References fpeak(), x, and geometryCSVtoXML::xz.

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

101  {
102  double xm = par[6] * (x[0] - 25);
103  double xp = par[6] * (x[0] + 25);
104  double xz = par[6] * x[0];
105  return 1.2131 * fpeak(&xp, par) - 1.4715 * fpeak(&xz, par) + 0.4463 * fpeak(&xm, par);
106 }
double fpeak(double *x, double *par)
float x

◆ fdeconv_convoluted()

double fdeconv_convoluted ( double *  x,
double *  par 
)

Definition at line 113 of file SiStripPulseShape.cc.

References fpeak_convoluted(), x, and geometryCSVtoXML::xz.

Referenced by SamplingAlgorithm::SamplingAlgorithm().

113  {
114  double xm = (x[0] - 25);
115  double xp = (x[0] + 25);
116  double xz = x[0];
117  return 1.2131 * fpeak_convoluted(&xp, par) - 1.4715 * fpeak_convoluted(&xz, par) +
118  0.4463 * fpeak_convoluted(&xm, par);
119 }
double fpeak_convoluted(double *x, double *par)
float x

◆ fpeak()

double fpeak ( double *  x,
double *  par 
)

Definition at line 66 of file SiStripPulseShape.cc.

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

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

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

◆ fpeak_convoluted()

double fpeak_convoluted ( double *  x,
double *  par 
)

Definition at line 108 of file SiStripPulseShape.cc.

References f, fpeak(), and x.

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

108  {
109  TF1 f("peak_convoluted", fpeak, 0, 250, 4);
110  return f.IntegralError(x[0] - par[4] / 2., x[0] + par[4] / 2., par, nullptr, 1.) / (par[4]);
111 }
double f[11][100]
double fpeak(double *x, double *par)
float x

◆ fturnOn()

double fturnOn ( double *  x,
double *  par 
)

Definition at line 82 of file SiStripPulseShape.cc.

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

Referenced by CalibrationScanAlgorithm::analyse().

82  {
83  double a_0 = par[0];
84  double s = par[1];
85  double t_0 = par[2];
86  double width = par[3];
87 
88  return a_0 + s * TMath::Erf((x[0] - t_0) / width);
89 }
float x

◆ pulse()

double pulse ( double  x,
double  y,
double  z,
double  t 
)

Definition at line 49 of file SiStripPulseShape.cc.

References pulse_raw(), pulse_x0(), pulse_x0_yz(), pulse_yz(), submitPVValidationJobs::t, x, detailsBasic3DVector::y, and detailsBasic3DVector::z.

Referenced by EcalUncalibRecHitTimingCCAlgo::computeTimeCC(), fpeak(), pos::PixelFEDTestDAC::levelEncoder(), FitterFuncs::PulseShapeFunctor::PulseShapeFunctor(), AbsElectronicODERHS::setInputPulse(), HcalQie::shape(), and EcalUncalibRecHitTimeWeightsAlgo< EBDataFrame >::time().

49  {
50  if (x > y) {
51  double pivot = x;
52  x = y;
53  y = pivot;
54  }
55 
56  if ((x == 0) && (y == z))
57  return pulse_x0_yz(z, t);
58  else if (x == 0)
59  return pulse_x0(y, z, t);
60  else if (y == z)
61  return pulse_yz(x, z, t);
62  else
63  return pulse_raw(x, y, z, t);
64 }
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)
float x
double pulse_x0_yz(double z, double t)

◆ pulse_raw()

double pulse_raw ( double  x,
double  y,
double  z,
double  t 
)

Definition at line 19 of file SiStripPulseShape.cc.

References JetChargeProducer_cfi::exp, conifer::pow(), submitPVValidationJobs::t, x, detailsBasic3DVector::y, and detailsBasic3DVector::z.

Referenced by pulse().

19  {
20  double result1, result2, result3;
21 
22  result1 = z * y * exp(-t / y);
23  result1 /= pow(y, 2) - (x + z) * y + z * x;
24 
25  result2 = z * x * exp(-t / x);
26  result2 /= pow(x, 2) - (x - z) * y - z * x;
27 
28  result3 = pow(z, 2) * exp(-t / z);
29  result3 /= pow(z, 2) + (x - z) * y - z * x;
30 
31  return result1 + result2 + result3;
32 }
constexpr int pow(int x)
Definition: conifer.h:24
float float float z
float x

◆ pulse_x0()

double pulse_x0 ( double  y,
double  z,
double  t 
)

◆ pulse_x0_yz()

double pulse_x0_yz ( double  z,
double  t 
)

◆ pulse_yz()

double pulse_yz ( double  x,
double  z,
double  t 
)

Definition at line 36 of file SiStripPulseShape.cc.

References JetChargeProducer_cfi::exp, submitPVValidationJobs::t, x, and detailsBasic3DVector::z.

Referenced by pulse().

36  {
37  double result1, result2;
38 
39  result1 = exp(-t / x) - exp(-t / z);
40  result1 *= z * x / (z - x);
41 
42  result2 = t * exp(-t / z);
43 
44  return (result1 + result2) / (z - x);
45 }
float float float z
float x