00001 const int mxTheo=6, mxQ=2;
00002 const int mxD=3, mxEr=4;
00003 float theoA[mxQ][mxTheo]={{83.3,80.5,75.4}{19.3,18.8,17.7}};
00004 float theoErr[2*mxQ][mxTheo]={{0.,0.,4.3}{0.,0.,1.}{0.,0.,3.9}{0.,0.,0.9}};
00005 float errA[mxQ][mxEr]={{3.,10.,-13.,14.}{2.,3.,-4.,4.}};
00006 float crossA[mxQ]={61,17};
00007 TString theoN[mxTheo]={"#splitline{ RHICBOS}{CTEQ5M Resum.}","#splitline{ RHICBOS}{MRST02 Resum.}","#splitline{deFlorian, et al.}{ MRST02 NLO}"};
00008 TH1F *hBase;
00009 TGraphAsymmErrors *grT[mxQ][mxTheo];
00010 TGraphAsymmErrors *grD[mxQ][mxD];
00011 TLegend *leg;
00012
00013
00014 void plWxsec_APS() {
00015 gStyle->SetOptStat(0);
00016 gStyle->SetOptDate(0);
00017 initTheory();
00018 initData();
00019
00020
00021 leg=new TLegend(0.47,0.48,0.88,0.35);
00022 leg->SetNColumns(2);
00023
00024 leg->SetEntrySeparation(0.01);
00025 leg->SetMargin(0.2);
00026 leg->SetFillColor(0);
00027 leg->SetTextSize(0.023);
00028 leg->AddEntry(grD[0][0]," STAR Data","pl");
00029 leg->AddEntry(grT[0][2],theoN[2],"p");
00030 leg->AddEntry(grD[0][2]," Lumi. Uncert.","f");
00031 leg->AddEntry(grT[0][1],theoN[1],"p");
00032 leg->AddEntry(grT[0][2],"#splitline{ Theoretical}{ Scale Uncert.}","f");
00033 leg->AddEntry(grT[0][0],theoN[0],"p");
00034
00035 c=new TCanvas("aa","bb",550,700);
00036 c->SetTopMargin(0.025); c->SetBottomMargin(0.05);
00037 gPad->SetGridy(false); gPad->SetGridx(false);
00038 initHisto();
00039 hBase->GetXaxis()->SetTickLength(0);
00040 hBase->GetXaxis()->SetLabelColor(0);
00041 hBase->GetYaxis()->SetTitleOffset(1.2);
00042 hBase->SetMinimum(0); hBase->SetMaximum(99.9);
00043 hBase->Draw();
00044 for(int iq=0; iq<mxQ;iq++) {
00045 drawTheo(iq);
00046 drawData(iq);
00047
00048 }
00049
00050 leg->Draw("same");
00051
00052
00053 TLatex *lat0 = new TLatex(0.13,0.945,"Run 9 STAR Preliminary #font[52]{p+p} #sqrt{#font[72]{s}}_{ }=_{ }500 GeV");
00054 lat0->SetNDC(); lat0->SetTextSize(0.04); lat0->Draw("same");
00055 TLatex *lat1 = new TLatex(0.18,0.915,"Kinematic acceptance: |#eta_{#font[52]{e}}| < 1 and #font[52]{E_{T}^{e}} > 25 GeV");
00056 lat1->SetNDC(); lat1->SetTextSize(0.03); lat1->Draw("same");
00057 TLatex *lat2 = new TLatex(0.6,0.86,"#sigma(#font[52]{W^{#scale[1.2]{#pm}} #rightarrow e^{#scale[1.2]{#pm}} + #nu_{e}})");
00058 lat2->SetNDC(); lat2->SetTextSize(0.042); lat2->Draw("same");
00059 TLatex *lat3 = new TLatex(0.7,0.59,"#font[52]{W^{+}}");
00060 lat3->SetNDC(); lat3->SetTextSize(0.09); lat3->Draw("same");
00061 TLatex *lat4 = new TLatex(0.7,0.18,"#font[52]{W^{#scale[1.2]{-}}}");
00062 lat4->SetNDC(); lat4->SetTextSize(0.09); lat4->Draw("same");
00063
00064
00065 }
00066
00067
00068 void initHisto() {
00069 char *txt0="h";
00070 hBase=new TH1F(txt0, "; ; #sigma (pb)", 100, 0,0.8);
00071 }
00072
00073
00074 void initTheory() {
00075
00076 int color[3]={kBlack,kGreen+3,kBlue+1};
00077 int marker[3]={26,28,4};
00078
00079 for(int iq=0; iq<mxQ;iq++)
00080 for(int t=0;t<mxTheo; t++) {
00081 int tb=t;
00082 if(t>2) tb=t-3;
00083 TGraphAsymmErrors *gr=new TGraphAsymmErrors;
00084 gr->SetMarkerColor(color[tb]);
00085 gr->SetLineWidth(2);
00086 gr->SetLineColor(0);
00087 gr->SetMarkerSize(1.0);
00088 if(t>2) gr->SetMarkerSize(0.8);
00089 gr->SetMarkerStyle(marker[tb]);
00090 gr->SetPoint(0,(tb+3)*0.1,theoA[iq][tb]);
00091
00092
00093 if(t==2) {
00094 gr->SetPointError(0,0.01,0.01,theoErr[iq+2][tb],theoErr[iq][tb]);
00095 gr->SetFillColor(kRed+2);
00096 gr->SetFillStyle(3001);
00097 }
00098 grT[iq][t]=gr;
00099 }
00100
00101 }
00102
00103
00104
00105 void initData() {
00106 int iq=0;
00107 for(int iq=0; iq<mxQ;iq++)
00108 for(int id=0;id<mxD; id++) {
00109 if(id>2) break;
00110 TGraphAsymmErrors *gr=new TGraphAsymmErrors;
00111 if(id==0)gr->SetMarkerStyle(21);
00112 else gr->SetMarkerStyle(1);
00113 gr->SetMarkerColor(kRed+id);
00114 gr->SetMarkerSize(1.5);
00115 gr->SetLineWidth(2);
00116 gr->SetLineColor(kBlack);
00117
00118 if(id<2) gr->SetPoint(0,0.15,crossA[iq]);
00119 else gr->SetPoint(0,0.1,crossA[iq]);
00120
00121 if(id==0)
00122 gr->SetPointError(0,0,0,errA[iq][id],errA[iq][id]);
00123 if(id==1) {
00124 float a=errA[iq][0];
00125 float b=errA[iq][1];
00126 float c=errA[iq][2];
00127 float d=errA[iq][3];
00128 float yu=sqrt(a*a+b*b);
00129 float yd=sqrt(a*a+c*c);
00130 gr->SetPointError(0,0,0,yd,yu);
00131 }
00132 if(id==2){
00133 gr->SetPointError(0,0.015,0.015,errA[iq][3],errA[iq][3]);
00134 gr->SetFillColor(13);
00135 gr->SetLineColor(0);
00136 }
00137 grD[iq][id]=gr;
00138
00139 }
00140
00141 }
00142
00143
00144
00145
00146 void drawTheo(int iq) {
00147
00148 for(int t=mxTheo-1;t>=0; t--) {
00149 if(t==2) {
00150 grT[iq][t]->Draw("2 same");
00151 grT[iq][t]->Draw("p X");
00152 }
00153 else grT[iq][t]->Draw("p");
00154 if(t<3) grT[iq][t]->Print();
00155 }
00156
00157 }
00158
00159
00160
00161
00162 void drawData(int iq) {
00163
00164 for(int id=mxD-1;id>=0; id--) {
00165 if(id==0) grD[iq][id]->Draw("p e same");
00166 else if(id==1) grD[iq][id]->Draw("p e same");
00167 else if(id==2) grD[iq][id]->Draw("2 same");
00168 grD[iq][id]->Print();
00169 }
00170
00171
00172 }