Back to home page

sPhenix code displayed by LXR

 
 

    


File indexing completed on 2025-08-06 08:12:27

0001 #ifndef GausFunc_h
0002 #define GausFunc_h
0003 
0004 #include <TMath.h>
0005 
0006 double gaus_func(double *x, double *par)
0007 {
0008     // note : par[0] : size
0009     // note : par[1] : mean
0010     // note : par[2] : width
0011     // note : par[3] : offset 
0012     return par[0] * TMath::Gaus(x[0],par[1],par[2]) + par[3];
0013 }
0014 
0015 double gaus_pol1_func(double *x, double *par)
0016 {
0017     // note : par[0] : size
0018     // note : par[1] : mean
0019     // note : par[2] : width
0020     // note : par[3] : offset 
0021     return par[0] * TMath::Gaus(x[0],par[1],par[2]) + par[3] + par[4]*x[0];
0022 }
0023 
0024 double gaus_pol2_func(double *x, double *par)
0025 {
0026     // note : par[0] : size
0027     // note : par[1] : mean
0028     // note : par[2] : width
0029 
0030     double gaus_func = par[0] * TMath::Gaus(x[0],par[1],par[2]);
0031     double pol2_func = par[3] + par[4]* (x[0]-par[6]) + par[5] * pow((x[0]-par[6]),2);
0032 
0033     return gaus_func + pol2_func;
0034 }
0035 
0036 
0037 
0038 double d_gaus_pol1_func(double *x, double *par)
0039 {
0040 
0041     // note : par[0] : size
0042     // note : par[1] : ratio of the two gaussians
0043     // note : par[2] : mean
0044     // note : par[3] : width of gaus 1
0045     // note : par[4] : width of gaus 2
0046     // note : par[5] : offset
0047     // note : par[6] : slope
0048     return par[0] * ( (1. - par[1]) * TMath::Gaus(x[0],par[2],par[3]) + par[1] * TMath::Gaus(x[0],par[2],par[4]) ) + par[5] + par[6] * x[0];
0049 }
0050 
0051 double d_gaus_func(double *x, double *par)
0052 {
0053 
0054     // note : par[0] : size
0055     // note : par[1] : ratio of the two gaussians
0056     // note : par[2] : mean
0057     // note : par[3] : width of gaus 1
0058     // note : par[4] : width of gaus 2
0059     return par[0] * ( (1. - par[1]) * TMath::Gaus(x[0],par[2],par[3]) + par[1] * TMath::Gaus(x[0],par[2],par[4]) );
0060 }
0061 
0062 double bkg_pol2_func(double *x, double *par)
0063 {
0064     if (x[0] > (-1 * par[4]) && x[0] < par[4]) {
0065       TF1::RejectPoint();
0066       return 0;
0067    }
0068    return par[0] + par[1]* (x[0]-par[3]) + par[2] * pow((x[0]-par[3]),2);
0069 
0070    // note : p[0] + p[1]*(x-p[3])+p[2] * (x-p[3])^2, p[4] sets the signal range that should be excluded in the fit
0071 }
0072 
0073 double full_pol2_func(double *x, double *par)
0074 {
0075    return par[0] + par[1]* (x[0]-par[3]) + par[2] * pow((x[0]-par[3]),2);
0076 
0077    // note : p[0] + p[1]*(x-p[3])+p[2] * (x-p[3])^2
0078 }
0079 
0080 
0081 
0082 
0083 
0084 #endif