00001
00002 double bemc_escale_dau_pion(double *x,double * ){
00003 double p[]={2.14037e-01,6.55108e-03};
00004 return 1.25*(p[0]+p[1]*x[0]);
00005 }
00006 double bemc_spread_dau_pion(double * ,double * ){
00007 return (double)0.035;
00008 }
00009 double bsmd_escale_dau_pion(double *x,double * ){
00010 double p[]={4.47017e-02,9.96379e-01,-7.68552e-01};
00011 return p[0]+p[1]*exp(p[2]*x[0]);
00012 }
00013 double bsmd_spread_dau_pion(double *x,double * ){
00014 double p[]={1.26779e-02,-1.55283e-01,-1.68008e-01};
00015 return p[0]+p[1]*exp(p[2]*x[0]);
00016 }
00017 double material_dau_pion(double * ,double * ){
00018 return (double)0.026;
00019 }
00020 double yield_extract_dau_pion(double *x,double * ){
00021 if(x[0]<4.) return (double)0.05;
00022 return (double)0.071;
00023 }
00024 double beambg_dau_pion(double *x,double * ){
00025 if(x[0]<5.) return (double)0.0;
00026 return (double)0.007*(x[0]-5.);
00027 }
00028 double error_norm_dau_pion(double * ,double * ){
00029 return (double)0.01;
00030 }
00031 double prescale_dau_pion(double *x,double * ){
00032 if(x[0]<4.) return (double)0.;
00033 return (double)0.05;
00034 }
00035 double total_sys_dau_pion(double *x,double *par){
00036 double ret=0.;
00037 ret=bemc_escale_dau_pion(x,par)*bemc_escale_dau_pion(x,par);
00038 ret+=bemc_spread_dau_pion(x,par)*bemc_spread_dau_pion(x,par);
00039 ret+=bsmd_escale_dau_pion(x,par)*bsmd_escale_dau_pion(x,par);
00040 ret+=bsmd_spread_dau_pion(x,par)*bsmd_spread_dau_pion(x,par);
00041 ret+=material_dau_pion(x,par)*material_dau_pion(x,par);
00042 ret+=yield_extract_dau_pion(x,par)*yield_extract_dau_pion(x,par);
00043 ret+=beambg_dau_pion(x,par)*beambg_dau_pion(x,par);
00044 ret+=error_norm_dau_pion(x,par)*error_norm_dau_pion(x,par);
00045 ret+=prescale_dau_pion(x,par)*prescale_dau_pion(x,par);
00046 return par[0]*sqrt(ret);
00047 }
00048 void set_sys_dau_pion(TGraphErrors *g){
00049 TF1 *sys=new TF1("sys",&total_sys_dau_pion,1.,15.,1);
00050 sys->SetParameter(0,1.);
00051 for(int i=0;i<g->GetN();i++){
00052 double x=0.;
00053 double y=0.;
00054 g->GetPoint(i,x,y);
00055 double rel_err=sys->Eval(x);
00056 g->SetPointError(i,0.,rel_err*y);
00057 }
00058 }
00059 void plotErrors_dau_pion(){
00060
00061 TF1 *error_up=new TF1("error_up",&total_sys_dau_pion,1.,15.,1);
00062 error_up->SetParameter(0,1.);
00063 TF1 *error_down=new TF1("error_down",&total_sys_dau_pion,1.,15.,1);
00064 error_down->SetParameter(0,-1.);
00065
00066 error_up->SetFillColor(5);
00067 error_down->SetFillColor(5);
00068
00069
00070 TCanvas *test=new TCanvas();
00071 error_up->Draw();
00072 error_up->SetMinimum(-1.*error_up->GetMaximum());
00073 error_down->Draw("same");
00074 test->SaveAs("systotal_dau_pions.eps");
00075 test->SaveAs("systotal_dau_pions.root");
00076 }
00077
00078
00079 double bemc_escale_dau_ratio(double * ,double * ){
00080 return 0.03;
00081 }
00082 double bemc_spread_dau_ratio(double * ,double * ){
00083 return 0.01;
00084 }
00085 double bsmd_escale_dau_ratio(double * ,double * ){
00086
00087 return 0.12;
00088 }
00089 double bsmd_spread_dau_ratio(double * ,double * ){
00090 return 0.01;
00091 }
00092 double yield_extract_dau_ratio(double *x,double *par){
00093 return yield_extract_dau_pion(x,par);
00094 }
00095 double eta_over_pi_dau(double * ,double * ){
00096 return 0.02;
00097 }
00098 double fit_pion_dau(double * ,double * ){
00099 return 0.015;
00100 }
00101
00102
00103
00104
00105 double total_sys_dau_ratio(double *x,double *par){
00106 double ret=0.;
00107 ret=bemc_escale_dau_ratio(x,par)*bemc_escale_dau_ratio(x,par);
00108 ret+=bemc_spread_dau_ratio(x,par)*bemc_spread_dau_ratio(x,par);
00109 ret+=bsmd_escale_dau_ratio(x,par)*bsmd_escale_dau_ratio(x,par);
00110 ret+=bsmd_spread_dau_ratio(x,par)*bsmd_spread_dau_ratio(x,par);
00111 ret+=yield_extract_dau_ratio(x,par)*yield_extract_dau_ratio(x,par);
00112 ret+=eta_over_pi_dau(x,par)*eta_over_pi_dau(x,par);
00113 ret+=fit_pion_dau(x,par)*fit_pion_dau(x,par);
00114 ret+=beambg_dau_pion(x,par)*beambg_dau_pion(x,par);
00115 return par[0]*sqrt(ret);
00116 }
00117 void set_sys_dau_ratio(TGraphErrors *g){
00118 TF1 *sys=new TF1("sys",&total_sys_dau_ratio,1.,15.,1);
00119 sys->SetParameter(0,1.);
00120 for(int i=0;i<g->GetN();i++){
00121 double x=0.;
00122 double y=0.;
00123 g->GetPoint(i,x,y);
00124 double rel_err=sys->Eval(x);
00125 g->SetPointError(i,0.2,rel_err*y);
00126 }
00127 }
00128