]>
Commit | Line | Data |
---|---|---|
e751e1d9 | 1 | //#include "pointsForPionGroup.C" |
2 | #include "v2All.C" | |
3 | #include "v2CMS.C" | |
4 | #include "v2PHENIX.C" | |
5 | ||
6 | Int_t drawch = 0; | |
7 | Int_t drawall = 0; //V0A and V0C separate | |
8 | Int_t drawsum = 1; //PHOS V0A+V0C | |
9 | Int_t drawphenix = 0; | |
10 | Int_t drawcms = 0; | |
11 | Int_t drawpcm = 1; | |
12 | Int_t drawwhdg = 0; | |
13 | Int_t drawmerge = 1; //PHOS+PCM | |
14 | Int_t merge = 1; | |
15 | Int_t fit = 0; | |
16 | Int_t diff = 2; //1 - PHOS+PCM - charged (fit), 2 - PHOS - PHOS+PCM, 3 - PCM - PHOS+PCM, 4 - PHOS - charged (fit), 5 - PCM - charged (fit) | |
17 | ||
18 | //Compare pi0 v2 with V0 detector (method 1 or 2) with other measurements - charged pion v2, CMS pi0 v2, PHENIX pi0 v2 | |
19 | //Merge results from PHOS and PCM | |
20 | ||
21 | void plotV2_comV0(Int_t cen=1, Int_t method=1){ | |
22 | char key[255]; | |
23 | gStyle->SetErrorX(0.2); | |
24 | ||
25 | if(diff==1||diff==4||diff==5){ | |
26 | drawch=1; | |
27 | fit=1; | |
28 | } | |
29 | ||
30 | TGraphAsymmErrors * v2ch; // = (TGraphErrors*)f3->Get(cen3.Data()) ; | |
31 | ||
32 | if(cen==10) v2ch=v2Pion(0,10); | |
33 | if(cen==11) v2ch=v2Pion(20,40); | |
34 | if(cen==0) v2ch=v2Pion(0,5); | |
35 | if(cen==1) v2ch=v2Pion(5,10); | |
36 | if(cen==2) v2ch=v2Pion(10,20); | |
37 | if(cen==3) v2ch=v2Pion(20,30); | |
38 | if(cen==4) v2ch=v2Pion(30,40); | |
39 | if(cen==5) v2ch=v2Pion(40,50); | |
40 | if(cen==20) v2ch=v2Pion(10,50); | |
41 | if(cen==21) v2ch=v2Pion(0,20); | |
42 | ||
43 | v2ch->SetMarkerStyle(7) ; | |
44 | v2ch->SetMarkerColor(kOrange-2) ; | |
45 | v2ch->SetLineColor(kOrange-2) ; | |
46 | v2ch->SetFillColor(kOrange-2) ; | |
47 | v2ch->SetLineWidth(1) ; | |
48 | ||
49 | TGraphAsymmErrors * v2chAlex; // = (TGraphErrors*)f3->Get(cen3.Data()) ; | |
50 | ||
51 | if(cen==10) v2chAlex=v2PionAlex(0,10); | |
52 | if(cen==11) v2chAlex=v2PionAlex(20,40); | |
53 | if(cen==0) v2chAlex=v2PionAlex(0,5); | |
54 | if(cen==1) v2chAlex=v2PionAlex(5,10); | |
55 | if(cen==2) v2chAlex=v2PionAlex(10,20); | |
56 | if(cen==3) v2chAlex=v2PionAlex(20,30); | |
57 | if(cen==4) v2chAlex=v2PionAlex(30,40); | |
58 | if(cen==5) v2chAlex=v2PionAlex(40,50); | |
59 | if(cen==20) v2chAlex=v2PionAlex(10,50); | |
60 | if(cen==21) v2chAlex=v2PionAlex(0,20); | |
61 | ||
62 | v2chAlex->SetMarkerStyle(22) ; | |
63 | v2chAlex->SetMarkerColor(kYellow) ; | |
64 | v2chAlex->SetLineColor(kYellow) ; | |
65 | v2chAlex->SetFillColor(kYellow) ; | |
66 | v2chAlex->SetLineWidth(1) ; | |
67 | ||
68 | TList *coll = new TList(); | |
69 | coll->Add(v2chAlex); | |
70 | ||
71 | TGraphAsymmErrors *v2chAll = v2ch->Clone("v2chAll"); | |
72 | v2chAll->Merge(coll); | |
73 | ||
74 | TGraphErrors *v2CMS; // = (TGraphErrors*)f3->Get(cen3.Data()) ; | |
75 | ||
76 | TFile *fPCM = new TFile("PCMPi0v2_new.root") ; | |
77 | ||
78 | TGraphErrors *v2PCM, *v2PCMsys; | |
79 | ||
80 | if(cen==11){ | |
81 | v2PCM = (TGraphErrors*)fPCM->Get("Pi0IMv2_V0_20-40"); | |
82 | v2PCMsys = (TGraphErrors*)fPCM->Get("Pi0IMv2sys_V0_20-40"); | |
83 | } | |
84 | if(cen==21){ | |
85 | v2PCM = (TGraphErrors*)fPCM->Get("Pi0IMv2_V0_0-20"); | |
86 | v2PCMsys = (TGraphErrors*)fPCM->Get("Pi0IMv2sys_V0_0-20"); | |
87 | } | |
88 | ||
89 | if(cen==11||cen==21){ | |
90 | v2PCM->SetMarkerStyle(29) ; | |
91 | v2PCM->SetMarkerColor(kBlue) ; | |
92 | v2PCM->SetMarkerSize(1.6) ; | |
93 | v2PCM->SetLineColor(kBlue) ; | |
94 | v2PCM->SetLineWidth(1) ; | |
95 | v2PCMsys->SetMarkerStyle(24) ; | |
96 | v2PCMsys->SetMarkerColor(kBlue) ; | |
97 | v2PCMsys->SetLineColor(kBlue) ; | |
98 | v2PCMsys->SetLineWidth(1) ; | |
99 | v2PCMsys->SetFillStyle(0); | |
100 | v2PCMsys->SetLineColor(kBlue) ; | |
101 | } | |
102 | else if(merge){ cout<<"Wrong centrality for merging PCM and PHOS (valid 11 and 21 only!)"<<endl; return;} | |
103 | ||
104 | // if(cen==10) v2CMS=v2CMS2030(); | |
105 | // if(cen==11) v2CMS= | |
106 | // if(cen==0) v2CMS=v2PionAlex(0,5); | |
107 | // if(cen==1) v2CMS=v2PionAlex(5,10); | |
108 | // if(cen==2) v2CMS=v2PionAlex(10,20); | |
109 | if(cen==3) v2CMS=v2CMS2030(); | |
110 | if(cen==4) v2CMS=v2CMS3040(); | |
111 | if(cen==5) v2CMS=v2CMS4050(); | |
112 | ||
113 | TGraphErrors * v2PHENIX; // | |
114 | ||
115 | if(cen==2) v2PHENIX=v2PHENIX1020(); | |
116 | if(cen==3) v2PHENIX=v2PHENIX2030(); | |
117 | if(cen==4) v2PHENIX=v2PHENIX3040(); | |
118 | if(cen==5) v2PHENIX=v2PHENIX4050(); | |
119 | if(cen==10) v2PHENIX=v2PHENIX010(); | |
120 | ||
121 | if(cen==3||cen==4||cen==5){ | |
122 | v2CMS->SetMarkerStyle(23) ; | |
123 | v2CMS->SetMarkerColor(kViolet) ; | |
124 | v2CMS->SetLineColor(kViolet) ; | |
125 | v2CMS->SetLineWidth(1) ; | |
126 | } | |
127 | if(cen==2||cen==3||cen==4||cen==5||cen==10){ | |
128 | v2PHENIX->SetMarkerStyle(23) ; | |
129 | v2PHENIX->SetMarkerColor(kBlue) ; | |
130 | v2PHENIX->SetLineColor(kBlue) ; | |
131 | v2PHENIX->SetLineWidth(1) ; | |
132 | } | |
133 | ||
134 | fstream fWHDG; | |
135 | char wname[255]; | |
136 | if(cen==2) sprintf(wname,"WHDGlhcPi0v21020b.dat"); | |
137 | if(cen==3) sprintf(wname,"WHDGlhcPi0v22030b.dat"); | |
138 | if(cen==4) sprintf(wname,"WHDGlhcPi0v23040b.dat"); | |
139 | if(cen==5) sprintf(wname,"WHDGlhcPi0v24050b.dat"); | |
140 | ||
141 | if(cen>=2&&cen<=5){ | |
142 | fWHDG.open(wname,ios::in); | |
143 | ||
144 | const int N=4; | |
145 | Double_t xW[N],yW[N],exW[N],eyW[N]; | |
146 | ||
147 | int i=0; | |
148 | while(!fWHDG.eof()){ | |
149 | fWHDG>>xW[i]>>yW[i]; | |
150 | exW[i]=0; | |
151 | eyW[i]=0; | |
152 | i++; | |
153 | if(i>=N) break; | |
154 | } | |
155 | fWHDG.close(); | |
156 | ||
157 | TGraphErrors * gWHDG = new TGraphErrors(N,xW,yW,exW,eyW); | |
158 | gWHDG->SetLineColor(kGreen-5); | |
159 | gWHDG->SetLineWidth(3); | |
160 | gWHDG->SetMarkerStyle(20); | |
161 | gWHDG->SetMarkerColor(kGreen-5); | |
162 | } | |
163 | ||
164 | char name[255]; | |
165 | sprintf(name,"v2_method%d_QA.root",method); | |
166 | TFile *f = new TFile(name) ; | |
167 | ||
168 | char key[255] ; | |
169 | char kind[15]; | |
170 | sprintf(kind,"Both2core"); //PID | |
171 | char w[25]; | |
172 | sprintf(w,""); //weight - "" or "NW" | |
173 | ||
174 | sprintf(key,"v2stat_m%d_%s_%s_%d_%d",method,w,kind,cen,0) ; | |
175 | cout<<key<<endl; | |
176 | TH1D * v2stat0 = (TH1D*)f->Get(key) ; | |
177 | sprintf(key,"v2sys_m%d_%s_%s_%d_%d",method,w,kind,cen,0) ; | |
178 | TH1D * v2sys0 = (TH1D*)f->Get(key) ; | |
179 | ||
180 | sprintf(key,"v2stat_m%d_%s_%s_%d_%d",method,w,kind,cen,1) ; | |
181 | TH1D * v2stat1 = (TH1D*)f->Get(key) ; | |
182 | sprintf(key,"v2sys_m%d_%s_%s_%d_%d",method,w,kind,cen,1) ; | |
183 | TH1D * v2sys1 = (TH1D*)f->Get(key) ; | |
184 | ||
185 | v2sys0->SetFillStyle(0); | |
186 | v2sys0->SetLineColor(kBlue-9) ; | |
187 | ||
188 | v2sys1->SetFillStyle(0) ; | |
189 | v2sys1->SetLineColor(kGreen) ; | |
190 | ||
191 | TH1D * box = new TH1D("box","",100,0.,16.) ; | |
192 | if(cen==0||cen==1||cen==10) box->SetMinimum(-0.20001) ; | |
193 | else box->SetMinimum(-0.10001) ; | |
194 | box->SetMaximum(0.5) ; | |
195 | ||
196 | /* if(diff){ | |
197 | box->SetMinimum(-0.10001) ; | |
198 | box->SetMaximum(0.1) ; | |
199 | } | |
200 | */ | |
201 | ||
202 | box->SetLabelOffset(0.01,"Y"); | |
203 | box->SetLabelOffset(0.01,"X"); | |
204 | box->SetTitleOffset(0.5,"Y"); | |
205 | box->SetTitleSize(0.05,"X"); | |
206 | box->SetTitleSize(0.05,"Y"); | |
207 | box->SetLabelSize(0.04,"X"); | |
208 | box->SetLabelSize(0.04,"Y"); | |
209 | box->SetNdivisions(505,"Y"); | |
210 | box->GetXaxis()->SetTitleOffset(0.9) ; | |
211 | box->GetYaxis()->SetTitleOffset(0.9) ; | |
212 | ||
213 | box->SetXTitle("p_{T} (GeV/c)") ; | |
214 | box->SetYTitle("v_{2}{EP}") ; | |
215 | ||
216 | TCanvas * c= new TCanvas("a","v2") ; | |
217 | c->SetFillColor(0) ; | |
218 | c->SetFillStyle(0) ; | |
219 | c->SetFrameBorderMode(0); | |
220 | gStyle->SetOptTitle(0); | |
221 | gStyle->SetOptStat(0); | |
222 | gStyle->SetTitleFillColor(kWhite); | |
223 | gStyle->SetPalette(1); | |
224 | gStyle->SetCanvasBorderMode(-1); | |
225 | gStyle->SetCanvasBorderSize(1); | |
226 | gStyle->SetFrameFillColor(0); | |
227 | gStyle->SetFrameFillStyle(0); | |
228 | gStyle->SetFrameBorderSize(1); | |
229 | ||
230 | Double_t x[100],y[100],ex[100],ey[100] ; | |
231 | ||
232 | for(Int_t i=0;i<v2stat0->GetNbinsX();i++){ | |
233 | x[i]=v2stat0->GetXaxis()->GetBinCenter(i+1) ; | |
234 | y[i]=v2stat0->GetBinContent(i+1) ; | |
235 | ey[i]=v2stat0->GetBinError(i+1) ; | |
236 | ex[i]=0. ; | |
237 | } | |
238 | ||
239 | TGraphErrors * g = new TGraphErrors(v2stat0->GetNbinsX(),x,y,ex,ey) ; | |
240 | g->SetMarkerStyle(20) ; | |
241 | g->SetMarkerColor(4) ; | |
242 | g->SetLineColor(4) ; | |
243 | g->SetLineWidth(1) ; | |
244 | ||
245 | ||
246 | for(Int_t i=0;i<v2stat1->GetNbinsX();i++){ | |
247 | x[i]=v2stat1->GetXaxis()->GetBinCenter(i+1) ; | |
248 | y[i]=v2stat1->GetBinContent(i+1) ; | |
249 | ey[i]=v2stat1->GetBinError(i+1) ; | |
250 | ex[i]=0. ; | |
251 | } | |
252 | ||
253 | TGraphErrors * g2 = new TGraphErrors(v2stat1->GetNbinsX(),x,y,ex,ey) ; | |
254 | g2->SetMarkerStyle(20) ; | |
255 | g2->SetMarkerColor(kBlack) ; | |
256 | g2->SetLineColor(kBlack) ; | |
257 | g2->SetLineWidth(1) ; | |
258 | ||
259 | //merge V0A V0C | |
260 | TH1D *v2sumstat = v2stat0->Clone("v2sumstat"); | |
261 | TH1D *v2sumsys = v2sys0->Clone("v2sumsys"); | |
262 | cout<<"merge v0a and v0c"<<endl; | |
263 | for(Int_t i=0;i<v2sumstat->GetNbinsX();i++){ | |
264 | Double_t bin1 = v2stat1->GetBinContent(i+1) ; | |
265 | Double_t bin2 = v2stat0->GetBinContent(i+1) ; | |
266 | Double_t stat1 = v2stat1->GetBinError(i+1) ; | |
267 | Double_t stat2 = v2stat0->GetBinError(i+1) ; | |
268 | Double_t sys1 = v2sys1->GetBinError(i+1) ; | |
269 | Double_t sys2 = v2sys0->GetBinError(i+1) ; | |
270 | ||
271 | Double_t stat=0; | |
272 | if(stat1!=0&&stat2!=0)stat = 1./TMath::Sqrt(1./stat1/stat1 + 1./stat2/stat2); | |
273 | Double_t sys=0; | |
274 | if(sys1!=0&&sys2!=0) sys = 1./TMath::Sqrt(1./sys1/sys1 + 1./sys2/sys2); | |
275 | Double_t weight = 1, mean = bin1; | |
276 | if(sys1+stat1!=0 && sys2+stat2!=0){ | |
277 | weight=(1./(sys1*sys1+stat1*stat1) + 1./(sys2*sys2+stat2*stat2)); | |
278 | mean = bin1/(sys1*sys1+stat1*stat1) + bin2/(sys2*sys2+stat2*stat2); | |
279 | } | |
280 | mean /= weight; | |
281 | ||
282 | //if(cen==0 && i==0){mean=-100.; stat=0; sys=0;} | |
283 | ||
284 | cout<<"bin1 = "<<bin1<<" bin2 = "<<bin2<<" mean = "<<mean<<" sys1 = "<<sys1<<" sys2 = "<<sys2<<" sys = "<<sys<<endl; | |
285 | ||
286 | v2sumstat->SetBinContent(i+1,mean); | |
287 | v2sumsys->SetBinContent(i+1,mean); | |
288 | v2sumstat->SetBinError(i+1,stat); | |
289 | v2sumsys->SetBinError(i+1,sys); | |
290 | } | |
291 | ||
292 | v2sumsys->SetFillStyle(0) ; | |
293 | v2sumsys->SetLineColor(kRed) ; | |
294 | ||
295 | //merge PHOS and PCM | |
296 | if(cen==21 || cen==11){ | |
297 | cout<<"merge PHOS and PCM"<<endl; | |
298 | TH1D *v2mstat = v2stat0->Clone("v2mstat"); | |
299 | TH1D *v2msys = v2sys0->Clone("v2msys"); | |
300 | ||
301 | for(Int_t i=0;i<v2mstat->GetNbinsX();i++){ | |
302 | Double_t bin1 = v2sumstat->GetBinContent(i+1) ; | |
303 | Double_t bin2,tmp; | |
304 | ||
305 | v2PCM->GetPoint(i,tmp,bin2);//GetBinContent(i+1) ; | |
306 | Double_t stat1 = v2sumstat->GetBinError(i+1) ; | |
307 | Double_t stat2 = v2PCM->GetErrorY(i);//->GetBinError(i+1) ; | |
308 | Double_t sys1 = v2sumsys->GetBinError(i+1) ; | |
309 | Double_t sys2 = v2PCMsys->GetErrorY(i);//GetBinError(i+1) ; | |
310 | ||
311 | Double_t stat=0; | |
312 | if(stat1!=0&&stat2!=0)stat = 1./TMath::Sqrt(1./stat1/stat1 + 1./stat2/stat2); | |
313 | Double_t sys=0; | |
314 | if(sys1!=0&&sys2!=0) sys = 1./TMath::Sqrt(1./sys1/sys1 + 1./sys2/sys2); | |
315 | Double_t weight = 1, mean = bin1; | |
316 | if(sys1+stat1!=0 && sys2+stat2!=0){ | |
317 | weight=(1./(sys1*sys1+stat1*stat1) + 1./(sys2*sys2+stat2*stat2)); | |
318 | mean = bin1/(sys1*sys1+stat1*stat1) + bin2/(sys2*sys2+stat2*stat2); | |
319 | } | |
320 | mean /= weight; | |
321 | ||
322 | if(i>7){ //no PCM | |
323 | mean=bin1; | |
324 | stat=stat1; | |
325 | sys=sys1; | |
326 | } | |
327 | //if(cen==0 && i==0){mean=-100.; stat=0; sys=0;} | |
328 | ||
329 | cout<<"i = "<<i<<", bin1 = "<<bin1<<" bin2 = "<<bin2<<" mean = "<<mean<<endl; | |
330 | cout<<"sys1 = "<<sys1<<" sys2 = "<<sys2<<" sys = "<<sys<<" stat1 = "<<stat1<<" stat2 = "<<stat2<<" stat = "<<stat<<endl; | |
331 | ||
332 | /*if(cen==21&&i==0){ | |
333 | v2mstat->SetBinContent(i+1,0); | |
334 | v2msys->SetBinContent(i+1,0); | |
335 | v2mstat->SetBinError(i+1,0); | |
336 | v2msys->SetBinError(i+1,0); | |
337 | v2sumstat->SetBinContent(i+1,0); | |
338 | v2sumsys->SetBinContent(i+1,0); | |
339 | v2sumstat->SetBinError(i+1,0); | |
340 | v2sumsys->SetBinError(i+1,0); | |
341 | } | |
342 | else{ | |
343 | */ | |
344 | v2mstat->SetBinContent(i+1,mean); | |
345 | v2msys->SetBinContent(i+1,mean); | |
346 | v2mstat->SetBinError(i+1,stat); | |
347 | v2msys->SetBinError(i+1,sys); | |
348 | //} | |
349 | } | |
350 | ||
351 | v2msys->SetFillStyle(0) ; | |
352 | v2msys->SetLineColor(kBlack) ; | |
353 | v2msys->SetLineWidth(1) ; | |
354 | ||
355 | for(Int_t i=0;i<v2mstat->GetNbinsX();i++){ | |
356 | x[i]=v2mstat->GetXaxis()->GetBinCenter(i+1) ; | |
357 | y[i]=v2mstat->GetBinContent(i+1) ; | |
358 | ey[i]=v2mstat->GetBinError(i+1) ; | |
359 | ex[i]=0. ; | |
360 | } | |
361 | ||
362 | TGraphErrors * gm = new TGraphErrors(v2mstat->GetNbinsX(),x,y,ex,ey) ; | |
363 | gm->SetMarkerStyle(24) ; | |
364 | gm->SetMarkerColor(kBlack); | |
365 | gm->SetLineColor(kBlack) ; | |
366 | gm->SetLineWidth(1) ; | |
367 | gm->SetMarkerSize(1); | |
368 | } | |
369 | ||
370 | for(Int_t i=0;i<v2sumstat->GetNbinsX();i++){ | |
371 | x[i]=v2sumstat->GetXaxis()->GetBinCenter(i+1) ; | |
372 | y[i]=v2sumstat->GetBinContent(i+1) ; | |
373 | ey[i]=v2sumstat->GetBinError(i+1) ; | |
374 | ex[i]=0. ; | |
375 | } | |
376 | ||
377 | TGraphErrors * gsum = new TGraphErrors(v2sumstat->GetNbinsX(),x,y,ex,ey) ; | |
378 | gsum->SetMarkerStyle(21) ; | |
379 | gsum->SetMarkerColor(kRed); | |
380 | gsum->SetLineColor(kRed) ; | |
381 | gsum->SetLineWidth(1) ; | |
382 | gsum->SetMarkerSize(1.5); | |
383 | ||
384 | //DRAW ALL!!! | |
385 | box->Draw() ; | |
386 | ||
387 | if(drawch){ | |
388 | v2ch->Draw("3"); | |
389 | v2chAlex->Draw("3 same"); | |
390 | } | |
391 | //if(cen==3||cen==4||cen==5) v2CMS->Draw("p same"); | |
392 | ||
393 | if(drawall){ | |
394 | v2sys0->Draw("E2same"); | |
395 | v2sys1->Draw("E2same"); | |
396 | g->Draw("p") ; | |
397 | g2->Draw("p"); | |
398 | } | |
399 | ||
400 | if(drawwhdg&&cen>=2&&cen<=5){ | |
401 | gWHDG->Draw("pl"); | |
402 | } | |
403 | ||
404 | if(fit){ | |
405 | // TF1* ff=new TF1("ff","[0]*(1-exp(-[1]*x))/([2]+exp([3]+[4]*x+[5]*x*x))"); | |
406 | TF1* ff=new TF1("ff","([0]+exp([1]+[2]*x+[3]*x*x))/([4]+exp([5]+[6]*x+[7]*x*x))",0,20); | |
407 | ||
408 | ff->SetParameters(0,0.05); | |
409 | ff->SetParameters(1,0.05); | |
410 | ||
411 | v2chAll->Fit(ff,"m"); | |
412 | ff->Draw("same"); | |
413 | ||
414 | Double_t *p = ff->GetParameters(); | |
415 | cout<<p[0]<<"*(1-exp(-1*("<<p[1]<<")*x))/("<<p[2]<<"+exp("<<p[3]<<"+("<<p[4]<<")*x+("<<p[5]<<")*x*x))"<<endl; | |
416 | ||
417 | TGraphAsymmErrors* v2ch_cpy = v2ch->Clone("v2ch_cpy"); | |
418 | TGraphAsymmErrors* v2ch_diff = v2ch->Clone("v2ch_diff"); | |
419 | ||
420 | v2ch_cpy->Apply(ff); | |
421 | } | |
422 | ||
423 | //PHOS sum V0A and V0C | |
424 | if(drawsum){ | |
425 | gsum->Draw("p"); | |
426 | v2sumsys->Draw("E2same"); | |
427 | ||
428 | TFile fout("v2PHOS.root","update"); | |
429 | char nname[100]; | |
430 | char cname[100]=""; | |
431 | if(cen==10) sprintf(cname,"cen010"); | |
432 | if(cen==11) sprintf(cname,"cen2040"); | |
433 | if(cen==20) sprintf(cname,"cen1050"); | |
434 | ||
435 | if(cen==0) sprintf(cname,"cen05"); | |
436 | if(cen==1) sprintf(cname,"cen510"); | |
437 | if(cen==2) sprintf(cname,"cen1020"); | |
438 | if(cen==3) sprintf(cname,"cen2030"); | |
439 | if(cen==4) sprintf(cname,"cen3040"); | |
440 | if(cen==5) sprintf(cname,"cen4050"); | |
441 | ||
442 | sprintf(nname,"v2statV0_%s_11h",cname) ; | |
443 | gsum->SetName(nname) ; | |
444 | sprintf(nname,"v2sysV0_%s_11h",cname) ; | |
445 | v2sumsys->SetName(nname) ; | |
446 | ||
447 | gsum->Write(0,TObject::kOverwrite) ; | |
448 | v2sumsys->Write(0,TObject::kOverwrite) ; | |
449 | fout.Close() ; | |
450 | ||
451 | } | |
452 | ||
453 | if(fit){ | |
454 | for(int i=0;i<v2ch_cpy->GetN();i++){ | |
455 | Double_t px1,px2,py1,py2,pyPHOS,pyPCM,py,px; | |
456 | v2ch_cpy->GetPoint(i,px1,py1); //PHOS+PCM | |
457 | v2ch->GetPoint(i,px2,py2); //PHOS+PCM | |
458 | ||
459 | v2ch_diff->SetPoint(i,px1,py1-py2); | |
460 | } | |
461 | v2ch_diff->SetLineColor(kGray+1); | |
462 | v2ch_diff->SetMarkerColor(kGray+1); | |
463 | ||
464 | v2ch_diff->Draw("3"); | |
465 | } | |
466 | ||
467 | if(drawpcm){ | |
468 | if(cen==11||cen==21){ | |
469 | v2PCMsys->Draw("E2same"); | |
470 | v2PCM->Draw("p"); | |
471 | } | |
472 | } | |
473 | ||
474 | // if(merge){ | |
475 | if(diff){ | |
476 | TGraphErrors *gtmp = gsum->Clone("gtmp"); | |
477 | ||
478 | //if(merge)gtmp=gm->Clone("gtmp"); | |
479 | //else gtmp=gsum->Clone("gtmp"); | |
480 | ||
481 | TGraphErrors *gmnew; | |
482 | TH1D *v2msysnew; | |
483 | TGraphErrors *gmsysnew; | |
484 | ||
485 | if(diff==1){ | |
486 | gmnew=(TGraphErrors*)gm->Clone("gmnew"); | |
487 | v2msysnew=(TH1D*)v2msys->Clone("v2msysnew"); | |
488 | } | |
489 | else if(diff==2||diff==4){ | |
490 | gmnew=(TGraphErrors*)gsum->Clone("gmnew"); | |
491 | v2msysnew=(TH1D*)v2sumsys->Clone("v2msysnew"); | |
492 | } | |
493 | else if(diff==3||diff==5){ | |
494 | gmnew=(TGraphErrors*)v2PCM->Clone("gmnew"); | |
495 | gmsysnew=(TGraphErrors*)v2PCMsys->Clone("v2msysnew"); | |
496 | } | |
497 | ||
498 | // TH1D *v2msysnew = v2msys->Clone("v2msysnew"); | |
499 | ||
500 | if(fit)gtmp->Apply(ff); | |
501 | for(int i=0;i<gmnew->GetN();i++){ | |
502 | Double_t px1=0,px2=0,py1=0,py2=0,pyPHOS=0,pyPCM=0,py=0,px=0; | |
503 | if(diff==1||diff==2||diff==3)gm->GetPoint(i,px1,py1); //PHOS+PCM | |
504 | if(fit)gtmp->GetPoint(i,px2,py2); //ch fit | |
505 | ||
506 | if(px1!=px2) cout<<"ERROR!"<<endl; | |
507 | cout<<"points: "<<py1<<" "<<py2<<endl; | |
508 | ||
509 | py=py1-py2; | |
510 | gsum->GetPoint(i,px,pyPHOS); | |
511 | if(merge)v2PCM->GetPoint(i,px,pyPCM); | |
512 | if(i>7) pyPCM=0; | |
513 | if(diff==2){ //PHOS - PHOS+PCM | |
514 | py=pyPHOS-py1; | |
515 | } | |
516 | if(diff==3){ //PCM - PHOS+PCM | |
517 | py=pyPCM-py1; | |
518 | } | |
519 | if(diff==4){ //PHOS - ch | |
520 | py=pyPHOS-py2; | |
521 | } | |
522 | if(diff==5){ //PCM - ch | |
523 | py=pyPCM-py2; | |
524 | } | |
525 | ||
526 | gmnew->SetPoint(i,px,py); | |
527 | if(diff==1||diff==2||diff==4)v2msysnew->SetBinContent(i+1,py); | |
528 | if(diff==3||diff==5)gmsysnew->SetPoint(i,px,py); | |
529 | ||
530 | } | |
531 | gmnew->SetLineColor(kGreen); | |
532 | gmnew->SetMarkerColor(kGreen); | |
533 | ||
534 | gmnew->Draw("p"); | |
535 | if(diff==1||diff==2||diff==4){ | |
536 | v2msysnew->SetLineColor(kGreen); | |
537 | v2msysnew->SetMarkerColor(kGreen); | |
538 | v2msysnew->Draw("E2same"); | |
539 | } | |
540 | if(diff==3||diff==5){ | |
541 | gmsysnew->SetLineColor(kGreen); | |
542 | gmsysnew->SetMarkerColor(kGreen); | |
543 | gmsysnew->Draw("E2same"); | |
544 | } | |
545 | // } | |
546 | ||
547 | if(drawmerge){ | |
548 | gm->Draw("p"); | |
549 | v2msys->Draw("E2same"); | |
550 | } | |
551 | ||
552 | if(diff!=0){ | |
553 | TF1* ffuu=new TF1("ffuu","[0]"); | |
554 | gmnew->Fit(ffuu,"m"); | |
555 | ||
556 | TPaveText* t3=new TPaveText(0.12,0.08,0.57,0.18,"NDC"); //0.63,0.5,0.8,0.70,"NDC"); | |
557 | t3->SetFillStyle(0); | |
558 | t3->SetBorderSize(0); | |
559 | t3->SetTextSize(0.04) ; | |
560 | ||
561 | char ffuuname[255]; | |
562 | ||
563 | sprintf(ffuuname,"fit diff: %f #pm %f",ffuu->GetParameter(0),ffuu->GetParError(0)); | |
564 | t3->AddText(0.,0.,ffuuname); | |
565 | t3->Draw(); | |
566 | } | |
567 | } | |
568 | ||
569 | if(drawcms) | |
570 | if(cen==3||cen==4||cen==5) v2CMS->Draw("p same"); | |
571 | if(drawphenix) | |
572 | if(cen==2||cen==3||cen==4||cen==5||cen==10) v2PHENIX->Draw("p same"); | |
573 | ||
574 | //TITLE | |
575 | ||
576 | TPaveText* t2=new TPaveText(0.12,0.88,0.57,0.98,"NDC"); //0.63,0.5,0.8,0.70,"NDC"); | |
577 | t2->SetFillStyle(0); | |
578 | t2->SetBorderSize(0); | |
579 | t2->SetTextSize(0.04) ; | |
580 | ||
581 | char tname[255]; | |
582 | ||
583 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 0-10%%"); | |
584 | if(cen==10) t2->AddText(0.,0.,tname); | |
585 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 20-40%%"); | |
586 | if(cen==11) t2->AddText(0.,0.,tname); | |
587 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 0-5%%"); | |
588 | if(cen==0) t2->AddText(0.,0.,tname); | |
589 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 5-10%%"); | |
590 | if(cen==1) t2->AddText(0.,0.,tname); | |
591 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 10-20%%"); | |
592 | if(cen==2) t2->AddText(0.,0.,tname); | |
593 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 20-30%%"); | |
594 | if(cen==3) t2->AddText(0.,0.,tname); | |
595 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 30-40%%"); | |
596 | if(cen==4) t2->AddText(0.,0.,tname); | |
597 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 40-50%%"); | |
598 | if(cen==5) t2->AddText(0.,0.,tname); | |
599 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 10-50%%"); | |
600 | if(cen==20) t2->AddText(0.,0.,tname); | |
601 | sprintf(tname,"#pi^{0} v_{2}^{EP} centrality 0-20%%"); | |
602 | if(cen==21) t2->AddText(0.,0.,tname); | |
603 | ||
604 | t2->Draw(); | |
605 | ||
606 | TLegend * l = new TLegend(0.15,0.68,0.95,0.88) ; | |
607 | // TLegend * l = new TLegend(0.22,0.08,0.75,0.28) ; | |
608 | ||
609 | l->SetFillColor(0) ; | |
610 | l->SetTextSize(0.04) ; | |
611 | ||
612 | ||
613 | if(drawsum) | |
614 | if(method==1) l->AddEntry(gsum,"PHOS #pi^{0} dNdPhi method, VZERO EP 3 subs","p") ; | |
615 | else if(method==2) l->AddEntry(gsum,"PHOS #pi^{0} inv mass method, VZERO EP 3 subs","p") ; | |
616 | ||
617 | if(drawpcm) | |
618 | if(cen==11||cen==21)l->AddEntry(v2PCM,"PCM #pi^{0}, VZERO EP 3 subs","p") ; | |
619 | ||
620 | if(drawall){ | |
621 | l->AddEntry(g,"PHOS #pi^{0}, V0A EP 3 subs","p") ; | |
622 | l->AddEntry(g2,"PHOS #pi^{0}, V0C EP 3 subs","p") ; | |
623 | } | |
624 | ||
625 | if(merge){ | |
626 | l->AddEntry(gm,"PHOS+PCM #pi^{0}, V0 EP 3 subs","p") ; | |
627 | if(diff==1)l->AddEntry(gmnew,"PHOS+PCM #pi^{0} - #pi^{#pm}, V0 EP","p") ; | |
628 | if(diff==2)l->AddEntry(gmnew,"PHOS - PHOS+PCM #pi^{0}, V0 EP 3 subs","p") ; | |
629 | if(diff==3)l->AddEntry(gmnew,"PCM - PHOS+PCM #pi^{0}, V0 EP 3 subs","p") ; | |
630 | if(diff==4)l->AddEntry(gmnew,"PHOS #pi^{0} - #pi^{#pm}, V0 EP","p") ; | |
631 | if(diff==5)l->AddEntry(gmnew,"PCM #pi^{0} - #pi^{#pm}, V0 EP","p") ; | |
632 | } | |
633 | if(drawch){ | |
634 | l->AddEntry(v2ch,"TOF #pi^{#pm}, V0 EP 3 subs","f") ; | |
635 | l->AddEntry(v2chAlex,"TPC #pi^{#pm} (v2Alex)","f") ; | |
636 | } | |
637 | if(drawcms) | |
638 | if(cen==3||cen==4||cen==5)l->AddEntry(v2CMS,"CMS #pi^{0}","p"); | |
639 | if(drawphenix) | |
640 | if(cen==2||cen==3||cen==4||cen==5||cen==10) l->AddEntry(v2PHENIX,"PHENIX #pi^{0}, MPC+RXNin","p"); | |
641 | if(drawwhdg) | |
642 | if(cen>=2&&cen<=5)l->AddEntry(gWHDG,"WHDG predictions for #pi^{0} v_{2} at LHC energies","p"); | |
643 | ||
644 | l->Draw() ; | |
645 | ||
646 | //if(cen==4) ALICEPreliminary2(c); | |
647 | // else ALICEPreliminary(c); | |
648 | ||
649 | // if(cen==6)TGraphErrors * gph = new TGraphErrors(17,pT2,v22,xbins,v2e2); | |
650 | // if(cen==3)TGraphErrors * gph = new TGraphErrors(17,pT4,v24,xbins,v2e4); | |
651 | // if(cen==4)TGraphErrors * gph = new TGraphErrors(17,pT6,v26,xbins,v2e6); | |
652 | ||
653 | if(diff==0){ | |
654 | if(drawall) | |
655 | sprintf(name,"combined_%s_%s_%d_%d_V0EPall.gif",w,kind,cen,method) ; | |
656 | else | |
657 | sprintf(name,"combined_%s_%s_%d_%d_V0EP.gif",w,kind,cen,method) ; | |
658 | } | |
659 | else{ | |
660 | if(drawall) | |
661 | sprintf(name,"combined_%s_%s_%d_%d_V0EPall_diff%d.gif",w,kind,cen,method,diff) ; | |
662 | else | |
663 | sprintf(name,"combined_%s_%s_%d_%d_V0EP_diff%d.gif",w,kind,cen,method,diff) ; | |
664 | } | |
665 | c->SaveAs(name) ; | |
666 | ||
667 | if(diff==0){ | |
668 | if(drawall) | |
669 | sprintf(name,"combined_%s_%s_%d_%d_V0EPall.eps",w,kind,cen,method) ; | |
670 | else | |
671 | sprintf(name,"combined_%s_%s_%d_%d_V0EP.eps",w,kind,cen,method) ; | |
672 | } | |
673 | else{ | |
674 | if(drawall) | |
675 | sprintf(name,"combined_%s_%s_%d_%d_V0EPall_diff%d.eps",w,kind,cen,method,diff) ; | |
676 | else | |
677 | sprintf(name,"combined_%s_%s_%d_%d_V0EP_diff%d.eps",w,kind,cen,method,diff) ; | |
678 | } | |
679 | ||
680 | c->SaveAs(name) ; | |
681 | ||
682 | ||
683 | } | |
684 | //----------------------------------------------------------------------------- | |
685 | void ALICEPreliminary(TPad *c){ | |
686 | ||
687 | TPad *myPadLogo = new TPad("myPadLogo", "Pad for ALICE Logo",0.69,0.70,0.84,0.89);//0.65,0.70,0.8,0.89); | |
688 | myPadLogo->SetFillColor(0); | |
689 | myPadLogo->SetBorderMode(0); | |
690 | myPadLogo->SetBorderSize(2); | |
691 | myPadLogo->SetFrameBorderMode(0); | |
692 | myPadLogo->SetLeftMargin(0.0); | |
693 | myPadLogo->SetTopMargin(0.0); | |
694 | myPadLogo->SetBottomMargin(0.0); | |
695 | myPadLogo->SetRightMargin(0.0); | |
696 | myPadLogo->SetFillStyle(0); | |
697 | myPadLogo->Draw(); | |
698 | myPadLogo->cd(); | |
699 | ||
700 | TASImage *myAliceLogo = new TASImage("./alice_logo.png"); | |
701 | myAliceLogo->Draw(); | |
702 | ||
703 | c->cd() ; | |
704 | TPaveText* t1=new TPaveText(0.67,0.6,0.84,0.70,"NDC"); //0.63,0.5,0.8,0.70,"NDC"); | |
705 | t1->SetFillStyle(0); | |
706 | t1->SetBorderSize(0); | |
707 | t1->SetTextSize(0.03) ; | |
708 | t1->AddText(0.,0.,"ALICE performance"); | |
709 | t1->AddText(0.,0.,"#color[1]{18/05/2011}"); | |
710 | t1->AddText(0.,0.,"Pb-Pb->#pi^{0}+X @ #sqrt{s_{NN}}=2.76 TeV"); | |
711 | ||
712 | // t1->AddText(0.,0.,"9.8#times 10^{6} events"); | |
713 | // t1->AddText(0.,0.,"PHOS"); | |
714 | t1->SetTextColor(kRed); | |
715 | t1->SetTextFont(42); | |
716 | t1->Draw(); | |
717 | } | |
718 | ||
719 | //----------------------------------------------------------------------------- | |
720 | void ALICEPreliminary2(TPad *c){ | |
721 | ||
722 | TPad *myPadLogo = new TPad("myPadLogo", "Pad for ALICE Logo",0.19,0.70,0.34,0.89);//0.65,0.70,0.8,0.89); | |
723 | ||
724 | myPadLogo->SetFillColor(0); | |
725 | myPadLogo->SetBorderMode(0); | |
726 | myPadLogo->SetBorderSize(2); | |
727 | myPadLogo->SetFrameBorderMode(0); | |
728 | myPadLogo->SetLeftMargin(0.0); | |
729 | myPadLogo->SetTopMargin(0.0); | |
730 | myPadLogo->SetBottomMargin(0.0); | |
731 | myPadLogo->SetRightMargin(0.0); | |
732 | myPadLogo->SetFillStyle(0); | |
733 | myPadLogo->Draw(); | |
734 | myPadLogo->cd(); | |
735 | ||
736 | TASImage *myAliceLogo = new TASImage("./alice_logo.png"); | |
737 | myAliceLogo->Draw(); | |
738 | ||
739 | c->cd() ; | |
740 | TPaveText* t1=new TPaveText(0.17,0.6,0.34,0.70,"NDC"); | |
741 | t1->SetFillStyle(0); | |
742 | t1->SetBorderSize(0); | |
743 | t1->SetTextSize(0.03) ; | |
744 | t1->AddText(0.,0.,"ALICE performance"); | |
745 | t1->AddText(0.,0.,"#color[1]{18/05/2011}"); | |
746 | t1->AddText(0.,0.,"PbPb->#pi^{0}+X @ #sqrt{s_{NN}}=2.76 TeV"); | |
747 | ||
748 | // t1->AddText(0.,0.,"9.8#times 10^{6} events"); | |
749 | // t1->AddText(0.,0.,"PHOS"); | |
750 | t1->SetTextColor(kRed); | |
751 | t1->SetTextFont(42); | |
752 | t1->Draw(); | |
753 | } | |
754 | ||
755 |