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 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 get_compensation (double x)
 
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 fdeconv ( double *  x,
double *  par 
)

Definition at line 102 of file SiStripPulseShape.cc.

References fpeak(), and geometryCSVtoXML::xz.

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

103 {
104  double xm = par[5]*(x[0]-25);
105  double xp = par[5]*(x[0]+25);
106  double xz = par[5]*x[0];
107  return 1.2131 * fpeak(&xp,par) - 1.4715 * fpeak(&xz,par) + 0.4463 * fpeak(&xm,par);
108 }
double fpeak(double *x, double *par)
double fdeconv_convoluted ( double *  x,
double *  par 
)

Definition at line 116 of file SiStripPulseShape.cc.

References fpeak_convoluted(), and geometryCSVtoXML::xz.

Referenced by SamplingAlgorithm::SamplingAlgorithm().

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

Definition at line 87 of file SiStripPulseShape.cc.

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

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

88 {
89  double xx = par[0];
90  double z = par[1];
91  double a_0 = par[2];
92  double s = par[3];
93  double t_0 = par[4];
94  double t = x[0] - t_0;
95 
96  double y = get_compensation(xx);
97 
98  if(x[0] < t_0) return a_0;
99  return a_0 + s * pulse(xx, y, z, t);
100 }
double pulse(double x, double y, double z, double t)
double get_compensation(double x)
float float float z
double fpeak_convoluted ( double *  x,
double *  par 
)

Definition at line 110 of file SiStripPulseShape.cc.

References f, and fpeak().

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

111 {
112  TF1 f("peak_convoluted",fpeak,0,200,4);
113  return f.IntegralError(x[0]-par[4]/2.,x[0]+par[4]/2.,par,nullptr,1.)/(par[4]);
114 }
double f[11][100]
double fpeak(double *x, double *par)
double get_compensation ( double  x)

Definition at line 76 of file SiStripPulseShape.cc.

References funct::pow().

Referenced by fpeak().

77 {
78  return 49.9581
79  - 1.7941 * x
80  - 0.110089 * pow(x,2)
81  + 0.0113809 * pow(x,3)
82  - 0.000388111 * pow(x,4)
83  + 5.9761e-6 * pow(x,5)
84  - 3.51805e-8 * pow(x,6);
85 }
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
double pulse ( double  x,
double  y,
double  z,
double  t 
)

Definition at line 58 of file SiStripPulseShape.cc.

References pulse_raw(), pulse_x0(), pulse_x0_yz(), pulse_yz(), vertices_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().

59 {
60  if(x > y)
61  {
62  double pivot = x;
63  x = y;
64  y = pivot;
65  }
66 
67  if((x == 0) && (y == z)) return pulse_x0_yz(z, t);
68 
69  else if(x == 0) return pulse_x0(y, z, t);
70 
71  else if(y == z) return pulse_yz(x, z, t);
72 
73  else return pulse_raw(x, y, z, t);
74 }
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().

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().

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

Definition at line 53 of file SiStripPulseShape.cc.

References JetChargeProducer_cfi::exp.

Referenced by pulse().

54 {
55  return t / z * exp(-t / z);
56 }
float float float z
double pulse_yz ( double  x,
double  z,
double  t 
)

Definition at line 41 of file SiStripPulseShape.cc.

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

Referenced by pulse().

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