00001
00002 double bemc_escale_pp_pion(double *x,double * ){
00003 double p[]={2.14037e-01,6.55108e-03};
00004 return p[0]+p[1]*x[0];
00005 }
00006 double bemc_spread_pp_pion(double * ,double * ){
00007 return (double)0.024;
00008 }
00009 double bsmd_escale_pp_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_pp_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_pp_pion(double * ,double * ){
00018 return (double)0.018;
00019 }
00020 double yield_extract_pp_pion(double *x,double * ){
00021 if(x[0]<4.) return (double)0.05;
00022 return (double)0.071;
00023 }
00024 double error_xsec_pp_pion(double * ,double * ){
00025 return (double)sqrt(0.069*0.069+0.092*0.092);
00026 }
00027 double prescale_pp_pion(double *x,double * ){
00028 if(x[0]<4.) return (double)0.;
00029 return (double)0.05;
00030 }
00031 double total_sys_pp_pion(double *x,double *par){
00032 double ret=0.;
00033 ret=bemc_escale_pp_pion(x,par)*bemc_escale_pp_pion(x,par);
00034 ret+=bemc_spread_pp_pion(x,par)*bemc_spread_pp_pion(x,par);
00035 ret+=bsmd_escale_pp_pion(x,par)*bsmd_escale_pp_pion(x,par);
00036 ret+=bsmd_spread_pp_pion(x,par)*bsmd_spread_pp_pion(x,par);
00037 ret+=material_pp_pion(x,par)*material_pp_pion(x,par);
00038 ret+=yield_extract_pp_pion(x,par)*yield_extract_pp_pion(x,par);
00039 ret+=error_xsec_pp_pion(x,par)*error_xsec_pp_pion(x,par);
00040 ret+=prescale_pp_pion(x,par)*prescale_pp_pion(x,par);
00041 return par[0]*sqrt(ret);
00042 }
00043 void set_sys_pp_pion(TGraphErrors *g){
00044 TF1 *sys=new TF1("sys",&total_sys_pp_pion,1.,15.,1);
00045 sys->SetParameter(0,1.);
00046 for(int i=0;i<g->GetN();i++){
00047 double x=0.;
00048 double y=0.;
00049 g->GetPoint(i,x,y);
00050 double rel_err=sys->Eval(x);
00051 g->SetPointError(i,0.,rel_err*y);
00052 }
00053 }
00054 void plotErrors_pp_pion(){
00055
00056 TF1 *error_up=new TF1("error_up",&total_sys_pp_pion,1.,15.,1);
00057 error_up->SetParameter(0,1.);
00058 TF1 *error_down=new TF1("error_down",&total_sys_pp_pion,1.,15.,1);
00059 error_down->SetParameter(0,-1.);
00060
00061 error_up->SetFillColor(5);
00062 error_down->SetFillColor(5);
00063
00064
00065 TCanvas *test=new TCanvas();
00066 error_up->Draw();
00067 error_up->SetMinimum(-1.*error_up->GetMaximum());
00068 error_down->Draw("same");
00069 test->SaveAs("systotal_pp_pions.eps");
00070 test->SaveAs("systotal_pp_pions.root");
00071 }
00072
00073
00074 double bemc_escale_pp_ratio(double * ,double * ){
00075 return 0.03;
00076 }
00077 double bemc_spread_pp_ratio(double * ,double * ){
00078 return 0.01;
00079 }
00080 double bsmd_escale_pp_ratio(double * ,double * ){
00081
00082 return 0.12;
00083 }
00084 double bsmd_spread_pp_ratio(double * ,double * ){
00085 return 0.01;
00086 }
00087 double yield_extract_pp_ratio(double *x,double *par){
00088 return yield_extract_pp_pion(x,par);
00089 }
00090 double eta_over_pi_pp(double * ,double * ){
00091 return 0.02;
00092 }
00093 double fit_pion_pp(double * ,double * ){
00094 return 0.015;
00095 }
00096 double total_sys_pp_ratio(double *x,double *par){
00097 double ret=0.;
00098 ret=bemc_escale_pp_ratio(x,par)*bemc_escale_pp_ratio(x,par);
00099 ret+=bemc_spread_pp_ratio(x,par)*bemc_spread_pp_ratio(x,par);
00100 ret+=bsmd_escale_pp_ratio(x,par)*bsmd_escale_pp_ratio(x,par);
00101 ret+=bsmd_spread_pp_ratio(x,par)*bsmd_spread_pp_ratio(x,par);
00102 ret+=yield_extract_pp_ratio(x,par)*yield_extract_pp_ratio(x,par);
00103 ret+=eta_over_pi_pp(x,par)*eta_over_pi_pp(x,par);
00104 ret+=fit_pion_pp(x,par)*fit_pion_pp(x,par);
00105 return par[0]*sqrt(ret);
00106 }
00107 void set_sys_pp_ratio(TGraphErrors *g){
00108 TF1 *sys=new TF1("sys",&total_sys_pp_ratio,1.,15.,1);
00109 sys->SetParameter(0,1.);
00110 for(int i=0;i<g->GetN();i++){
00111 double x=0.;
00112 double y=0.;
00113 g->GetPoint(i,x,y);
00114 double rel_err=sys->Eval(x);
00115 g->SetPointError(i,0.2,rel_err*y);
00116
00117 }
00118 }
00119