00001
00002 double bemc_escale_rda(double *x,double * ){
00003 double p[]={2.14037e-01,6.55108e-03};
00004 return 0.5*(p[0]+p[1]*x[0]);
00005 }
00006 double bemc_spread_rda(double * ,double * ){
00007 return (double)0.042;
00008 }
00009 double material_rda(double * ,double * ){
00010 return (double)0.032;
00011 }
00012 double yield_extract_rda(double *x,double * ){
00013 if(x[0]<4.) return (double)0.071;
00014 return (double)0.1;
00015 }
00016 double prescale_rda(double *x,double * ){
00017 if(x[0]<4.) return (double)0.;
00018 return (double)0.071;
00019 }
00020 double beambg_rda(double *x,double * ){
00021 if(x[0]<5.) return (double)0.0;
00022 return (double)0.007*(x[0]-5.);
00023 }
00024 double total_sys_rda(double *x,double *par){
00025 double ret=0.;
00026 ret=bemc_escale_rda(x,par)*bemc_escale_rda(x,par);
00027 ret+=bemc_spread_rda(x,par)*bemc_spread_rda(x,par);
00028 ret+=material_rda(x,par)*material_rda(x,par);
00029 ret+=yield_extract_rda(x,par)*yield_extract_rda(x,par);
00030 ret+=prescale_rda(x,par)*prescale_rda(x,par);
00031 ret+=beambg_rda(x,par)*beambg_rda(x,par);
00032 return par[0]*sqrt(ret);
00033 }
00034 void set_sys_rda(TGraphErrors *g){
00035 TF1 *sys=new TF1("sys",&total_sys_rda,1.,15.,1);
00036 sys->SetParameter(0,1.);
00037 for(int i=0;i<g->GetN();i++){
00038 double x=0.;
00039 double y=0.;
00040 g->GetPoint(i,x,y);
00041 double rel_err=sys->Eval(x);
00042 g->SetPointError(i,0.,rel_err*y);
00043 }
00044 }
00045
00046
00047 double error_norm_rda(double * ,double * ){
00048 return (double)sqrt(0.069*0.069+0.092*0.092+0.01*0.01+0.053*0.053);
00049 }
00050