00001 #include "DQM/SiStripCommissioningAnalysis/interface/SiStripPulseShape.h" 00002 #include <TF1.h> 00003 #include <TMath.h> 00004 00005 double fpeak(double *x, double *par) 00006 { 00007 if(x[0]+par[1]<0) return par[0]; 00008 return par[0]+par[2]*(x[0]+par[1])*TMath::Exp(-(x[0]+par[1])/par[3]); 00009 } 00010 00011 double fdeconv(double *x, double *par) 00012 { 00013 double xm = par[4]*(x[0]-25); 00014 double xp = par[4]*(x[0]+25); 00015 double xz = par[4]*x[0]; 00016 return 1.2131*fpeak(&xp,par)-1.4715*fpeak(&xz,par)+0.4463*fpeak(&xm,par); 00017 } 00018 00019 double fpeak_convoluted(double *x, double *par) 00020 { 00021 TF1 f("peak_convoluted",fpeak,0,200,4); 00022 return f.Integral(x[0]-par[4]/2.,x[0]+par[4]/2.,par,1.)/(par[4]); 00023 } 00024 00025 double fdeconv_convoluted(double *x, double *par) 00026 { 00027 double xm = (x[0]-25); 00028 double xp = (x[0]+25); 00029 double xz = x[0]; 00030 return 1.2131*fpeak_convoluted(&xp,par)-1.4715*fpeak_convoluted(&xz,par)+0.4463*fpeak_convoluted(&xm,par); 00031 } 00032