]>
Commit | Line | Data |
---|---|---|
9d3cbee7 | 1 | void CompareFlowResults() |
2 | { | |
3 | gSystem->AddIncludePath("-I$ALICE_ROOT/include"); | |
4 | gSystem->AddIncludePath("-I$ROOTSYS/include"); | |
5 | ||
6 | //load needed libraries: | |
7 | gSystem->Load("libTree.so"); | |
8 | gSystem->Load("libANALYSIS.so"); | |
9 | gSystem->Load("libPWG2flow.so"); | |
10 | cerr<<"libPWG2flow.so loaded ..."<<endl; | |
11 | cout<<endl; | |
12 | ||
13 | //removing the title and stat. box from all histograms: | |
14 | gStyle->SetOptTitle(0); | |
15 | gStyle->SetOptStat(0); | |
16 | ||
17 | //open the output files: | |
18 | TString inputFileNameMCEP = "outputMCEPanalysisESD.root"; | |
19 | TFile* file_MCEP = NULL; | |
20 | file_MCEP = TFile::Open(inputFileNameMCEP.Data(), "READ"); | |
21 | ||
22 | TString inputFileNameLYZ1 = "outputLYZ1analysisESD_firstrun.root"; | |
23 | TFile* file_LYZ1 = NULL; | |
24 | file_LYZ1 = TFile::Open(inputFileNameLYZ1.Data(), "READ"); | |
25 | ||
26 | /* | |
27 | TString inputFileNameSP = "outputSPanalysisESD.root"; | |
28 | TFile* file_SP = NULL; | |
29 | file_SP = TFile::Open(inputFileNameSP.Data(), "READ"); | |
30 | */ | |
31 | ||
32 | TString inputFileNameFQD = "outputFQDanalysisESD.root"; | |
33 | TFile* file_FQD = NULL; | |
34 | file_FQD = TFile::Open(inputFileNameFQD.Data(), "READ"); | |
35 | ||
36 | TString inputFileNameGFC = "outputGFCanalysisESD.root"; | |
37 | TFile* file_GFC = NULL; | |
38 | file_GFC = TFile::Open(inputFileNameGFC.Data(), "READ"); | |
39 | ||
40 | TString inputFileNameQC = "outputQCanalysisESD.root"; | |
41 | TFile* file_QC = NULL; | |
42 | file_QC = TFile::Open(inputFileNameQC.Data(), "READ"); | |
43 | ||
44 | //================================================================================== | |
45 | // INTEGRATED FLOW | |
46 | //================================================================================== | |
47 | ||
48 | //booking the histogram for the integrated flow results from all methods | |
49 | TH1D* intFlow = new TH1D("intFlow","Integrated Flow",11,0,11); | |
50 | ||
51 | intFlow->SetLabelSize(0.044); | |
52 | intFlow->SetMarkerStyle(25); | |
53 | (intFlow->GetXaxis())->SetBinLabel(1,"v_{n}{MC}"); | |
54 | (intFlow->GetXaxis())->SetBinLabel(2,"v_{n}{LYZ}"); | |
55 | (intFlow->GetXaxis())->SetBinLabel(3,"v_{n}{FQD}"); | |
56 | (intFlow->GetXaxis())->SetBinLabel(4,"v_{n}{2}"); | |
57 | (intFlow->GetXaxis())->SetBinLabel(5,"v_{n}{4}"); | |
58 | (intFlow->GetXaxis())->SetBinLabel(6,"v_{n}{6}"); | |
59 | (intFlow->GetXaxis())->SetBinLabel(7,"v_{n}{8}"); | |
60 | (intFlow->GetXaxis())->SetBinLabel(8,"v_{n}^{Q}{2}"); | |
61 | (intFlow->GetXaxis())->SetBinLabel(9,"v_{n}^{Q}{4}"); | |
62 | (intFlow->GetXaxis())->SetBinLabel(10,"v_{n}^{Q}{6}"); | |
63 | (intFlow->GetXaxis())->SetBinLabel(11,"v_{n}^{Q}{8}"); | |
64 | ||
65 | //MCEP = Monte Carlo Event Plane | |
66 | TList *pListMCEP = NULL; | |
67 | AliFlowCommonHistResults *mcep = NULL; | |
68 | if(file_MCEP) | |
69 | { | |
70 | file_MCEP->GetObject("cobjMCEP",pListMCEP); | |
71 | if(pListMCEP) | |
72 | { | |
73 | mcep = dynamic_cast<AliFlowCommonHistResults*> (pListMCEP->FindObject("AliFlowCommonHistResultsMCEP")); | |
74 | if(mcep) | |
75 | { | |
76 | intFlow->SetBinContent(1,(mcep->GetHistIntFlow())->GetBinContent(1)); | |
77 | intFlow->SetBinError(1,(mcep->GetHistIntFlow())->GetBinError(1)); | |
78 | } | |
79 | } | |
80 | } | |
81 | ||
82 | //LYZ1 = Lee-Yang Zeros (1st run) | |
83 | TList *pListLYZ1 = NULL; | |
84 | AliFlowCommonHistResults *lyz1 = NULL; | |
85 | if(file_LYZ1) | |
86 | { | |
87 | file_LYZ1->GetObject("cobjLYZ1",pListLYZ1); | |
88 | if(pListLYZ1) | |
89 | { | |
90 | lyz1 = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ1->FindObject("AliFlowCommonHistResultsLYZ")); | |
91 | if(lyz1) | |
92 | { | |
93 | intFlow->SetBinContent(2,(lyz1->GetHistIntFlow())->GetBinContent(1)); | |
94 | intFlow->SetBinError(2,(lyz1->GetHistIntFlow())->GetBinError(1)); | |
95 | } | |
96 | } | |
97 | } | |
98 | ||
99 | //FQD = Fitting q-distribution | |
100 | TList *pListFQD = NULL; | |
101 | AliFlowCommonHistResults *fqd = NULL; | |
102 | if(file_FQD) | |
103 | { | |
104 | file_FQD->GetObject("cobjFQD",pListFQD); | |
105 | if(pListFQD) | |
106 | { | |
107 | fqd = dynamic_cast<AliFlowCommonHistResults*> (pListFQD->FindObject("AliFlowCommonHistResultsFQD")); | |
108 | if(fqd) | |
109 | { | |
110 | intFlow->SetBinContent(3,(fqd->GetHistIntFlow())->GetBinContent(1)); | |
111 | intFlow->SetBinError(3,(fqd->GetHistIntFlow())->GetBinError(1)); | |
112 | } | |
113 | } | |
114 | } | |
115 | ||
116 | //GFC = Generating Function Cumulants | |
117 | TList *pListGFC = NULL; | |
118 | AliFlowCommonHistResults *gfc2 = NULL; | |
119 | AliFlowCommonHistResults *gfc4 = NULL; | |
120 | AliFlowCommonHistResults *gfc6 = NULL; | |
121 | AliFlowCommonHistResults *gfc8 = NULL; | |
122 | if(file_GFC) | |
123 | { | |
124 | file_GFC->GetObject("cobjGFC",pListGFC); | |
125 | if(pListGFC) | |
126 | { | |
127 | gfc2 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults2ndOrderGFC")); | |
128 | if(gfc2) | |
129 | { | |
130 | intFlow->SetBinContent(4,(gfc2->GetHistIntFlow())->GetBinContent(1)); | |
131 | intFlow->SetBinError(4,(gfc2->GetHistIntFlow())->GetBinError(1)); | |
132 | } | |
133 | gfc4 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults4thOrderGFC")); | |
134 | if(gfc4) | |
135 | { | |
136 | intFlow->SetBinContent(5,(gfc4->GetHistIntFlow())->GetBinContent(1)); | |
137 | intFlow->SetBinError(5,(gfc4->GetHistIntFlow())->GetBinError(1)); | |
138 | } | |
139 | gfc6 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults6thOrderGFC")); | |
140 | if(gfc6) | |
141 | { | |
142 | intFlow->SetBinContent(6,(gfc6->GetHistIntFlow())->GetBinContent(1)); | |
143 | intFlow->SetBinError(6,(gfc6->GetHistIntFlow())->GetBinError(1)); | |
144 | } | |
145 | gfc8 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults8thOrderGFC")); | |
146 | if(gfc8) | |
147 | { | |
148 | intFlow->SetBinContent(7,(gfc8->GetHistIntFlow())->GetBinContent(1)); | |
149 | intFlow->SetBinError(7,(gfc8->GetHistIntFlow())->GetBinError(1)); | |
150 | } | |
151 | } | |
152 | } | |
153 | ||
154 | //QC = Q-cumulants | |
155 | TList *pListQC = NULL; | |
156 | AliFlowCommonHist *qcCommonHist = NULL;//to be improved | |
157 | AliFlowCommonHistResults *qc2 = NULL; | |
158 | AliFlowCommonHistResults *qc4 = NULL; | |
159 | AliFlowCommonHistResults *qc6 = NULL; | |
160 | AliFlowCommonHistResults *qc8 = NULL; | |
161 | if(file_QC) | |
162 | { | |
163 | file_QC->GetObject("cobjQC",pListQC); | |
164 | if(pListQC) | |
165 | { | |
166 | qcCommonHist = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHistQC"));//to be improved | |
167 | qc2 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults2ndOrderQC")); | |
168 | if(qc2) | |
169 | { | |
170 | intFlow->SetBinContent(8,(qc2->GetHistIntFlow())->GetBinContent(1)); | |
171 | intFlow->SetBinError(8,(qc2->GetHistIntFlow())->GetBinError(1)); | |
172 | } | |
173 | qc4 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults4thOrderQC")); | |
174 | if(qc4) | |
175 | { | |
176 | intFlow->SetBinContent(9,(qc4->GetHistIntFlow())->GetBinContent(1)); | |
177 | intFlow->SetBinError(9,(qc4->GetHistIntFlow())->GetBinError(1)); | |
178 | } | |
179 | qc6 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults6thOrderQC")); | |
180 | if(qc6) | |
181 | { | |
182 | intFlow->SetBinContent(10,(qc6->GetHistIntFlow())->GetBinContent(1)); | |
183 | intFlow->SetBinError(10,(qc6->GetHistIntFlow())->GetBinError(1)); | |
184 | } | |
185 | qc8 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults8thOrderQC")); | |
186 | if(qc8) | |
187 | { | |
188 | intFlow->SetBinContent(11,(qc8->GetHistIntFlow())->GetBinContent(1)); | |
189 | intFlow->SetBinError(11,(qc8->GetHistIntFlow())->GetBinError(1)); | |
190 | } | |
191 | } | |
192 | } | |
193 | ||
194 | /* | |
195 | //SP = Scalar Product | |
196 | TList *pListSP = NULL; | |
197 | AliFlowCommonHistResults *sp = NULL; | |
198 | if(file_SP) | |
199 | { | |
200 | file_SP->GetObject("cobjSP",pListSP); | |
201 | if(pListSP) | |
202 | { | |
203 | sp = dynamic_cast<AliFlowCommonHistResults*> (pListSP->FindObject("AliFlowCommonHistResultsSP")); | |
204 | } | |
205 | } | |
206 | */ | |
207 | ||
6f62c2a7 | 208 | //cosmetics: Monte Carlo error bands for integrated flow |
209 | if(intFlow) | |
210 | { | |
211 | Double_t valueMC = intFlow->GetBinContent(1); | |
212 | Double_t errorMC = intFlow->GetBinError(1); | |
213 | Int_t nPts = intFlow->GetNbinsX(); | |
214 | ||
215 | TGraph* pGraphIF = new TGraph(nPts); | |
216 | ||
217 | pGraphIF->SetPoint(1,0,valueMC+errorMC); | |
218 | pGraphIF->SetPoint(2,nPts+1,valueMC+errorMC); | |
219 | pGraphIF->SetPoint(3,nPts+1,valueMC-errorMC); | |
220 | pGraphIF->SetPoint(4,0,valueMC-errorMC); | |
221 | ||
222 | pGraphIF->SetFillStyle(3044); | |
223 | pGraphIF->SetFillColor(kRed-4); | |
224 | } | |
225 | ||
226 | //cosmetics: legend | |
9d3cbee7 | 227 | TString *avM = new TString("AvM = ");//to be improved |
228 | TString *nEvts = new TString("nEvts = ");//to be improved | |
9d3cbee7 | 229 | TLegend* legendIntFlow = new TLegend(0.15,0.15,0.44,0.35); |
230 | legendIntFlow->SetTextFont(72); | |
231 | legendIntFlow->SetTextSize(0.03); | |
232 | if(qcCommonHist) | |
233 | { | |
234 | (*avM)+=(qcCommonHist->GetHistMultInt())->GetMean();//to be improved | |
235 | (*nEvts)+=(qcCommonHist->GetHistMultInt())->GetEntries();//to be improved | |
236 | legendIntFlow->AddEntry(qcCommonHist->GetHistMultInt(),avM->Data(),""); | |
237 | legendIntFlow->AddEntry(qcCommonHist->GetHistMultInt(),nEvts->Data(),""); | |
238 | } | |
6f62c2a7 | 239 | |
240 | //drawing everything for integrated flow: | |
241 | TCanvas* intFlowCanvas = new TCanvas("Integrated Flow","Integrated Flow",1000,600); | |
242 | ||
243 | intFlow->Draw(); | |
244 | pGraphIF->Draw("LFSAME"); | |
245 | legendIntFlow->Draw(""); | |
9d3cbee7 | 246 | |
247 | //================================================================================== | |
248 | ||
249 | ||
250 | ||
251 | ||
252 | //================================================================================== | |
253 | // DIFFERENTIAL FLOW | |
254 | //================================================================================== | |
255 | ||
256 | TCanvas* diffFlowCanvas = new TCanvas("Differential Flow","Differential Flow",1000,600); | |
257 | ||
258 | TLegend* legendDiffFlow = new TLegend(0.15,0.15,0.3,0.35); | |
259 | legendDiffFlow->SetTextFont(72); | |
260 | legendDiffFlow->SetTextSize(0.03); | |
261 | ||
262 | //to be improved | |
263 | TLegend* legendDiffFlow2 = new TLegend(0.15,0.60,0.40,0.80); | |
264 | legendDiffFlow2->SetTextFont(72); | |
265 | legendDiffFlow2->SetTextSize(0.03); | |
266 | if(qcCommonHist) | |
267 | { | |
268 | legendDiffFlow2->AddEntry(qcCommonHist->GetHistMultInt(),avM->Data(),""); | |
269 | legendDiffFlow2->AddEntry(qcCommonHist->GetHistMultInt(),nEvts->Data(),""); | |
270 | } | |
271 | ||
272 | //GFC = Generating Function Cumulants | |
273 | if(file_GFC) | |
274 | { | |
275 | if(gfc2) | |
276 | { | |
277 | (gfc2->GetHistDiffFlow())->SetMarkerColor(28); | |
278 | (gfc2->GetHistDiffFlow())->SetMarkerStyle(20); | |
279 | (gfc2->GetHistDiffFlow())->SetTitle("Differential Flow"); | |
280 | (gfc2->GetHistDiffFlow())->SetXTitle("p_{t} [GeV]"); | |
281 | (gfc2->GetHistDiffFlow())->SetYTitle("v_{n}"); | |
282 | (gfc2->GetHistDiffFlow())->Draw(""); | |
283 | legendDiffFlow->AddEntry(gfc2->GetHistDiffFlow(),"v_{n}{2}","p"); | |
284 | } | |
285 | if(gfc4) | |
286 | { | |
287 | (gfc4->GetHistDiffFlow())->SetMarkerColor(28); | |
288 | (gfc4->GetHistDiffFlow())->SetMarkerStyle(21); | |
289 | (gfc4->GetHistDiffFlow())->Draw("E1PSAME"); | |
290 | legendDiffFlow->AddEntry(gfc4->GetHistDiffFlow(),"v_{n}{4}","p"); | |
291 | //(gfc6->GetHistDiffFlow())->Draw("SAME"); | |
292 | //(gfc8->GetHistDiffFlow())->Draw("SAME"); | |
293 | } | |
294 | } | |
295 | ||
296 | //QC = Q-cumulants | |
297 | if(file_QC) | |
298 | { | |
299 | if(qc2) | |
300 | { | |
301 | (qc2->GetHistDiffFlow())->SetMarkerColor(44); | |
302 | (qc2->GetHistDiffFlow())->SetMarkerStyle(20); | |
303 | (qc2->GetHistDiffFlow())->Draw("E1PSAME"); | |
304 | legendDiffFlow->AddEntry(qc2->GetHistDiffFlow(),"v_{n}^{Q}{2}","p"); | |
305 | } | |
306 | if(qc4) | |
307 | { | |
308 | (qc4->GetHistDiffFlow())->SetMarkerColor(44); | |
309 | (qc4->GetHistDiffFlow())->SetMarkerStyle(21); | |
310 | (qc4->GetHistDiffFlow())->Draw("E1PSAME"); | |
311 | legendDiffFlow->AddEntry(qc4->GetHistDiffFlow(),"v_{n}^{Q}{4}","p"); | |
312 | } | |
313 | } | |
314 | ||
315 | //MCEP = Monte Carlo Event Plane | |
316 | if(file_MCEP) | |
317 | { | |
318 | if(mcep) | |
319 | { | |
320 | (mcep->GetHistDiffFlow())->Scale(0.01);//to be improved | |
321 | (mcep->GetHistDiffFlow())->SetMarkerColor(2); | |
322 | (mcep->GetHistDiffFlow())->SetMarkerStyle(20); | |
6f62c2a7 | 323 | (mcep->GetHistDiffFlow())->SetFillStyle(3044); |
324 | (mcep->GetHistDiffFlow())->SetFillColor(kRed-4); | |
325 | //(mcep->GetHistDiffFlow())->Draw("E1PSAME"); | |
326 | legendDiffFlow->AddEntry(mcep->GetHistDiffFlow(),"v_{n}{MC}","f"); | |
9d3cbee7 | 327 | } |
328 | } | |
6f62c2a7 | 329 | |
9d3cbee7 | 330 | /* |
331 | //SP = Scalar Product | |
332 | if(file_SP) | |
333 | { | |
334 | if(sp) | |
335 | { | |
336 | (sp->GetHistDiffFlow())->SetMarkerColor(3); | |
337 | (sp->GetHistDiffFlow())->SetMarkerStyle(28); | |
338 | (sp->GetHistDiffFlow())->Draw("E1PSAME"); | |
339 | legend1->AddEntry(sp->GetHistDiffFlow(),"v_{n}{SP}","p"); | |
340 | } | |
341 | } | |
342 | */ | |
6f62c2a7 | 343 | |
344 | //cosmetics: Monte Carlo error bands for differential flow | |
345 | if(mcep) | |
346 | { | |
347 | Int_t nPtsDF = (mcep->GetHistDiffFlow())->GetNbinsX(); | |
348 | Double_t binWidth = (mcep->GetHistDiffFlow())->GetBinWidth(1);//assuming that all bins have the same width | |
349 | ||
350 | TGraph* pGraphDF = new TGraph(2*nPts); | |
351 | ||
352 | for(Int_t i=1;i<nPtsDF+1;i++) | |
353 | { | |
354 | Double_t valueMC = (mcep->GetHistDiffFlow())->GetBinContent(i); | |
355 | Double_t errorMC = (mcep->GetHistDiffFlow())->GetBinError(i); | |
356 | pGraphDF->SetPoint(i,(i-0.5)*binWidth,valueMC+errorMC); | |
357 | } | |
358 | ||
359 | for(Int_t i=nPtsDF;i<2*nPtsDF;i++) | |
360 | { | |
361 | Double_t valueMC = (mcep->GetHistDiffFlow())->GetBinContent(2*nPtsDF-i); | |
362 | Double_t errorMC = (mcep->GetHistDiffFlow())->GetBinError(2*nPtsDF-i); | |
363 | pGraphDF->SetPoint(i,(2*nPtsDF-i-0.5)*binWidth,valueMC-errorMC); | |
364 | } | |
365 | ||
366 | pGraphDF->SetFillStyle(3044); | |
367 | pGraphDF->SetFillColor(kRed-4); | |
368 | } | |
369 | ||
9d3cbee7 | 370 | legendDiffFlow->Draw(""); |
371 | legendDiffFlow2->Draw(""); | |
6f62c2a7 | 372 | pGraphDF->Draw("LFSAME"); |
373 | ||
9d3cbee7 | 374 | //================================================================================== |
375 | ||
6f62c2a7 | 376 | |
377 | ||
378 | //========================================================== | |
379 | /* | |
380 | TGraph* fillAreaBetweenFunctions(TF1* fUp, TF1*fDown, double nfmin, | |
381 | double nfmax, int npf, int fillStyle, | |
382 | int fillColor){ | |
383 | ||
384 | fDown->SetLineColor(fillColor); | |
385 | fDown->SetLineWidth(0.3); | |
386 | fUp->SetLineColor(fillColor); | |
387 | fUp->SetLineWidth(0.3); | |
388 | ||
389 | TArrayD xf(2*npf+1), yf(2*npf+1); | |
390 | ||
391 | //make and closed area and fill it | |
392 | Double_t xfmin = nfmin; Double_t xfmax = nfmax; | |
393 | Double_t dxf = (xfmax-xfmin)/(npf-1); | |
394 | for (Int_t i=0;i<npf;i++) { | |
395 | xf[i] = xfmin + dxf*i; | |
396 | yf[i] = fDown->Eval(xf[i]); | |
397 | xf[npf+i] = xfmax - dxf*i; | |
398 | yf[npf+i] = fUp->Eval(xf[npf+i]); | |
399 | } | |
400 | xf[2*npf] = xf[0]; yf[2*npf] = yf[0]; | |
401 | TGraph *grf = new TGraph(2*npf+1); | |
402 | for (int i=0; i<2*npf+1; i++) grf->SetPoint(i,xf[i],yf[i]); | |
403 | grf->SetFillStyle(fillStyle); | |
404 | grf->SetFillColor(fillColor); | |
405 | return grf; | |
406 | ||
407 | ||
408 | } | |
409 | */ | |
410 | //===================================================================================== | |
411 | ||
412 | ||
413 | ||
414 | ||
415 | ||
416 | ||
9d3cbee7 | 417 | } |