]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG2/FLOW/macros/CompareFlowResults.C
Time info in hits
[u/mrichter/AliRoot.git] / PWG2 / FLOW / macros / CompareFlowResults.C
CommitLineData
9d3cbee7 1void 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;
a88e5ac2 12
9d3cbee7 13
a88e5ac2 14 //==================================================================================
15 // accessing output files
16 //==================================================================================
70288839 17 //type of analysis was: ESD, AOD, MC, ESDMC0, ESDMC1
18 const TString type = "ESD";
19
9d3cbee7 20 //open the output files:
70288839 21 TString inputFileNameMCEP = "outputMCEPanalysis";
a88e5ac2 22 TFile* fileMCEP = NULL;
23 fileMCEP = TFile::Open(((inputFileNameMCEP.Append(type)).Append(".root")).Data(), "READ");
9d3cbee7 24
70288839 25 TString inputFileNameLYZ1 = "outputLYZ1analysis";
a88e5ac2 26 TFile* fileLYZ1 = NULL;
27 fileLYZ1 = TFile::Open(((inputFileNameLYZ1.Append(type)).Append("_firstrun.root")).Data(), "READ");
28
29 TString inputFileNameLYZ2 = "outputLYZ2analysis";
30 TFile* fileLYZ2 = NULL;
31 fileLYZ2 = TFile::Open(((inputFileNameLYZ2.Append(type)).Append("_secondrun.root")).Data(), "READ");
9d3cbee7 32
a88e5ac2 33 TString inputFileNameLYZEP = "outputLYZEPanalysis";
34 TFile* fileLYZEP = NULL;
35 fileLYZEP = TFile::Open(((inputFileNameLYZEP.Append(type)).Append(".root")).Data(), "READ");
9d3cbee7 36
70288839 37 TString inputFileNameFQD = "outputFQDanalysis";
a88e5ac2 38 TFile* fileFQD = NULL;
39 fileFQD = TFile::Open(((inputFileNameFQD.Append(type)).Append(".root")).Data(), "READ");
9d3cbee7 40
70288839 41 TString inputFileNameGFC = "outputGFCanalysis";
a88e5ac2 42 TFile* fileGFC = NULL;
43 fileGFC = TFile::Open(((inputFileNameGFC.Append(type)).Append(".root")).Data(), "READ");
9d3cbee7 44
70288839 45 TString inputFileNameQC = "outputQCanalysis";
a88e5ac2 46 TFile* fileQC = NULL;
47 fileQC = TFile::Open(((inputFileNameQC.Append(type)).Append(".root")).Data(), "READ");
48 //==================================================================================
49
50 //==================================================================================
51 // cosmetics
52 //==================================================================================
53 //removing the title and stat. box from all histograms:
54 gStyle->SetOptTitle(0);
55 gStyle->SetOptStat(0);
56
57 //choosing the style and color of mesh for MC error bands:
58 Int_t meshStyle = 1001;
59 Int_t meshColor = kRed-10;
60
61 //marker style and color (int. flow)
62 Int_t markerStyle = 21;
63 Int_t markerColor = kRed-3;
64 //==================================================================================
9d3cbee7 65
a88e5ac2 66
67
68
69
9d3cbee7 70 //==================================================================================
71 // INTEGRATED FLOW
72 //==================================================================================
a88e5ac2 73 //the number of different methods:
74 const Int_t nMethods=12;
9d3cbee7 75
a88e5ac2 76 //booking the histogram for the integrated flow results from all methods:
77 TH1D* intFlowAll = new TH1D("intFlowAll","Integrated Flow",nMethods,0,nMethods);
78 //intFlowAll->SetLabelSize(0.036,"X");
79 //intFlowAll->SetLabelSize(0.036,"Y");
80 intFlowAll->SetMarkerStyle(markerStyle);
81 intFlowAll->SetMarkerColor(markerColor);
82 (intFlowAll->GetXaxis())->SetBinLabel(1,"v_{2}{MC}");
83 (intFlowAll->GetXaxis())->SetBinLabel(2,"v_{2}{2,GFC}");
84 (intFlowAll->GetXaxis())->SetBinLabel(3,"v_{2}{2,QC}");
85 (intFlowAll->GetXaxis())->SetBinLabel(4,"v_{2}{4,GFC}");
86 (intFlowAll->GetXaxis())->SetBinLabel(5,"v_{2}{4,QC}");
87 (intFlowAll->GetXaxis())->SetBinLabel(6,"v_{2}{6,GFC}");
88 (intFlowAll->GetXaxis())->SetBinLabel(7,"v_{2}{6,QC}");
89 (intFlowAll->GetXaxis())->SetBinLabel(8,"v_{2}{8,GFC}");
90 (intFlowAll->GetXaxis())->SetBinLabel(9,"v_{2}{8,QC}");
91 (intFlowAll->GetXaxis())->SetBinLabel(10,"v_{2}{FQD}");
92 (intFlowAll->GetXaxis())->SetBinLabel(11,"v_{2}{LYZ}");
93 (intFlowAll->GetXaxis())->SetBinLabel(12,"v_{2}{LYZEP}");
94
95 //booking the graph to store flow values and errors from all methods:
96 Double_t x[nMethods] = {0.5, 1.5, 2.5, 3.5, 4.5, 5.5, 6.5, 7.5, 8.5, 9.5, 10.5, 11.5};
97 Double_t xError[nMethods] = {0.};
98 Double_t flowValue[nMethods] = {0.};
99 Double_t flowError[nMethods] = {0.};
100
101 //accessing the results for each method:
9d3cbee7 102 //MCEP = Monte Carlo Event Plane
103 TList *pListMCEP = NULL;
a88e5ac2 104 AliFlowCommonHist *mcepCommonHist = NULL;
70288839 105 AliFlowCommonHistResults *mcepCommonHistRes = NULL;
a88e5ac2 106 if(fileMCEP)
9d3cbee7 107 {
a88e5ac2 108 fileMCEP->GetObject("cobjMCEP",pListMCEP);
9d3cbee7 109 if(pListMCEP)
110 {
70288839 111 mcepCommonHist = dynamic_cast<AliFlowCommonHist*> (pListMCEP->FindObject("AliFlowCommonHistMCEP"));
112 mcepCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListMCEP->FindObject("AliFlowCommonHistResultsMCEP"));
113 if(mcepCommonHistRes)
9d3cbee7 114 {
a88e5ac2 115 flowValue[0] = (mcepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
116 flowError[0] = (mcepCommonHistRes->GetHistIntFlow())->GetBinError(1);
9d3cbee7 117 }
118 }
119 }
120
121 //LYZ1 = Lee-Yang Zeros (1st run)
122 TList *pListLYZ1 = NULL;
a88e5ac2 123 AliFlowCommonHist *lyz1CommonHist = NULL;
124 AliFlowCommonHistResults *lyz1CommonHistRes = NULL;
125 if(fileLYZ1)
9d3cbee7 126 {
a88e5ac2 127 fileLYZ1->GetObject("cobjLYZ1",pListLYZ1);
9d3cbee7 128 if(pListLYZ1)
129 {
a88e5ac2 130 lyz1CommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ1->FindObject("AliFlowCommonHistLYZ1"));
131 lyz1CommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ1->FindObject("AliFlowCommonHistResultsLYZ1"));
132 if(lyz1CommonHistRes)
133 {
134 flowValue[10] = (lyz1CommonHistRes->GetHistIntFlow())->GetBinContent(1);
135 flowError[10] = (lyz1CommonHistRes->GetHistIntFlow())->GetBinError(1);
136 }
137 }
138 }
139
140 //LYZ2 = Lee-Yang Zeros (2nd run) (needed only for differential flow)
141 TList *pListLYZ2 = NULL;
142 AliFlowCommonHist *lyz2CommonHist = NULL;
143 AliFlowCommonHistResults *lyz2CommonHistRes = NULL;
144 if(fileLYZ2)
145 {
146 fileLYZ2->GetObject("cobjLYZ2",pListLYZ2);
147 if(pListLYZ2)
148 {
149 lyz2CommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ2->FindObject("AliFlowCommonHistLYZ2"));
150 lyz2CommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ2->FindObject("AliFlowCommonHistResultsLYZ2"));
151 }
152 }
153
154 //LYZEP = Lee-Yang Zeros Event Plane
155 TList *pListLYZEP = NULL;
156 AliFlowCommonHist *lyzepCommonHist = NULL;
157 AliFlowCommonHistResults *lyzepCommonHistRes = NULL;
158 if(fileLYZEP)
159 {
160 fileLYZEP->GetObject("cobjLYZEP",pListLYZEP);
161 if(pListLYZEP)
162 {
163 lyzepCommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZEP->FindObject("AliFlowCommonHistLYZEP"));
164 lyzepCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZEP->FindObject("AliFlowCommonHistResultsLYZEP"));
165 if(lyzepCommonHistRes)
9d3cbee7 166 {
a88e5ac2 167 flowValue[11] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
168 //flowError[11] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinError(1);
9d3cbee7 169 }
170 }
171 }
172
173 //FQD = Fitting q-distribution
174 TList *pListFQD = NULL;
a88e5ac2 175 AliFlowCommonHist *fqdCommonHist = NULL;
176 AliFlowCommonHistResults *fqdCommonHistRes = NULL;
177 if(fileFQD)
9d3cbee7 178 {
a88e5ac2 179 fileFQD->GetObject("cobjFQD",pListFQD);
9d3cbee7 180 if(pListFQD)
181 {
a88e5ac2 182 fqdCommonHist = dynamic_cast<AliFlowCommonHist*> (pListFQD->FindObject("AliFlowCommonHistFQD"));
183 fqdCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListFQD->FindObject("AliFlowCommonHistResultsFQD"));
184 if(fqdCommonHistRes)
9d3cbee7 185 {
a88e5ac2 186 flowValue[9] = (fqdCommonHistRes->GetHistIntFlow())->GetBinContent(1);
187 flowError[9] = (fqdCommonHistRes->GetHistIntFlow())->GetBinError(1);
9d3cbee7 188 }
189 }
190 }
191
192 //GFC = Generating Function Cumulants
193 TList *pListGFC = NULL;
a88e5ac2 194 AliFlowCommonHist *gfcCommonHist = NULL;
195 AliFlowCommonHistResults *gfcCommonHistRes2 = NULL;
196 AliFlowCommonHistResults *gfcCommonHistRes4 = NULL;
197 AliFlowCommonHistResults *gfcCommonHistRes6 = NULL;
198 AliFlowCommonHistResults *gfcCommonHistRes8 = NULL;
199 if(fileGFC)
9d3cbee7 200 {
a88e5ac2 201 fileGFC->GetObject("cobjGFC",pListGFC);
9d3cbee7 202 if(pListGFC)
203 {
a88e5ac2 204 gfcCommonHist = dynamic_cast<AliFlowCommonHist*> (pListGFC->FindObject("AliFlowCommonHistGFC"));
205 gfcCommonHistRes2 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults2ndOrderGFC"));
206 if(gfcCommonHistRes2)
9d3cbee7 207 {
a88e5ac2 208 flowValue[1] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
209 flowError[1] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
9d3cbee7 210 }
a88e5ac2 211 gfcCommonHistRes4 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults4thOrderGFC"));
212 if(gfcCommonHistRes4)
9d3cbee7 213 {
a88e5ac2 214 flowValue[3] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
215 flowError[3] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
9d3cbee7 216 }
a88e5ac2 217 gfcCommonHistRes6 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults6thOrderGFC"));
218 if(gfcCommonHistRes6)
9d3cbee7 219 {
a88e5ac2 220 flowValue[5] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
221 flowError[5] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
9d3cbee7 222 }
a88e5ac2 223 gfcCommonHistRes8 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults8thOrderGFC"));
224 if(gfcCommonHistRes8)
9d3cbee7 225 {
a88e5ac2 226 flowValue[7] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
227 flowError[7] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
9d3cbee7 228 }
229 }
230 }
231
232 //QC = Q-cumulants
233 TList *pListQC = NULL;
a88e5ac2 234 AliFlowCommonHist *qcCommonHist2 = NULL;
235 AliFlowCommonHist *qcCommonHist4 = NULL;
236 AliFlowCommonHist *qcCommonHist6 = NULL;
237 AliFlowCommonHist *qcCommonHist8 = NULL;
70288839 238 AliFlowCommonHistResults *qcCommonHistRes2 = NULL;
239 AliFlowCommonHistResults *qcCommonHistRes4 = NULL;
240 AliFlowCommonHistResults *qcCommonHistRes6 = NULL;
241 AliFlowCommonHistResults *qcCommonHistRes8 = NULL;
a88e5ac2 242
243 if(fileQC)
9d3cbee7 244 {
a88e5ac2 245 fileQC->GetObject("cobjQC",pListQC);
9d3cbee7 246 if(pListQC)
247 {
a88e5ac2 248 qcCommonHist2 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist2ndOrderQC"));
70288839 249 qcCommonHistRes2 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults2ndOrderQC"));
250 if(qcCommonHistRes2)
9d3cbee7 251 {
a88e5ac2 252 flowValue[2] = (qcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
253 //flowError[2] = (qcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
9d3cbee7 254 }
a88e5ac2 255 qcCommonHist4 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist4thOrderQC"));
70288839 256 qcCommonHistRes4 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults4thOrderQC"));
257 if(qcCommonHistRes4)
9d3cbee7 258 {
a88e5ac2 259 flowValue[4] = (qcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
260 //flowError[4] = (qcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
9d3cbee7 261 }
a88e5ac2 262 qcCommonHist6 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist6thOrderQC"));
70288839 263 qcCommonHistRes6 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults6thOrderQC"));
264 if(qcCommonHistRes6)
9d3cbee7 265 {
a88e5ac2 266 flowValue[6] = (qcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
267 //flowError[6] = (qcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
9d3cbee7 268 }
a88e5ac2 269 qcCommonHist8 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist8thOrderQC"));
70288839 270 qcCommonHistRes8 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults8thOrderQC"));
271 if(qcCommonHistRes8)
9d3cbee7 272 {
a88e5ac2 273 flowValue[8] = (qcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
274 //flowError[8] = (qcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
9d3cbee7 275 }
276 }
a88e5ac2 277 }
278
279 Double_t dMax=flowValue[0]+flowError[0];
280 Double_t dMin=flowValue[0]-flowError[0];
281
282 for(Int_t i=1;i<nMethods;i++)
283 {
284 if(!(flowValue[i]==0. && flowError[i]==0.))
285 {
286 if(dMax<flowValue[i]+flowError[i]) dMax=flowValue[i]+flowError[i];
287 if(dMin>flowValue[i]-flowError[i]) dMin=flowValue[i]-flowError[i];
288 }
289 }
290
291 TGraph* flowResults = new TGraphErrors(nMethods, x, flowValue, xError, flowError);
9d3cbee7 292
a88e5ac2 293 flowResults->SetMarkerStyle(markerStyle);
294 flowResults->SetMarkerColor(markerColor);
295 //-----------------------------------------------------------------------------------
296
70288839 297 //----------------------------------------------------------------------------------
298 //cosmetics: mesh for MC error bands (integrated flow)
a88e5ac2 299 TGraph* pMesh = NULL;
300 if(intFlowAll && mcepCommonHistRes)
301 {
302 //Double_t valueMC = intFlowAll->GetBinContent(1);
303 //Double_t errorMC = intFlowAll->GetBinError(1);
304 //Int_t nPts = intFlowAll->GetNbinsX();
305
306 Double_t valueMC = flowValue[0];
307 Double_t errorMC = flowError[0];
308 Int_t nPts = nMethods;
309
310 pMesh = new TGraph(nPts);
6f62c2a7 311
a88e5ac2 312 pMesh->SetPoint(1,0,valueMC+errorMC);
313 pMesh->SetPoint(2,nPts+1,valueMC+errorMC);
314 pMesh->SetPoint(3,nPts+1,valueMC-errorMC);
315 pMesh->SetPoint(4,0,valueMC-errorMC);
316 pMesh->SetPoint(5,0,valueMC+errorMC);
6f62c2a7 317
a88e5ac2 318 pMesh->SetFillStyle(meshStyle);
319 pMesh->SetFillColor(meshColor);
6f62c2a7 320 }
a88e5ac2 321 //----------------------------------------------------------------------------------
70288839 322
70288839 323
a88e5ac2 324 //----------------------------------------------------------------------------------
325 //cosmetics: text (integrated flow)
326 //default text:
327 TPaveText *textDefault = new TPaveText(0.05,0.77,0.95,0.90,"NDC");
328 textDefault->SetTextFont(72);
329 textDefault->SetTextSize(0.08);
330 //textDefault->SetLineColor(kFALSE);
331 //textDefault->SetShadowColor(kFALSE);
332
333 TString *entryDefaultAvM = new TString("Average Multiplicity");
334 TString *entryDefaultAnd = new TString("and");
335 TString *entryDefaultNumOfEvts = new TString("Number of Events:");
336
337 textDefault->AddText(entryDefaultAvM->Data());
338 textDefault->AddText(entryDefaultAnd->Data());
339 textDefault->AddText(entryDefaultNumOfEvts->Data());
340
341 //results:
342 TPaveText *textResults = new TPaveText(0.05,0.12,0.95,0.70,"NDC");
343 textResults->SetTextFont(72);
344 textResults->SetTextSize(0.06);
345 //textResults->SetLineColor(kFALSE);
346 //textResults->SetShadowColor(kFALSE);
347
348 TString *entryMC = new TString("MC ...... ");
349 TString *entryGFC = new TString("GFC ..... ");
350 TString *entryQC2 = new TString("QC{2} ... ");
351 TString *entryQC4 = new TString("QC{4} ... ");
352 TString *entryQC6 = new TString("QC{6} ... ");
353 TString *entryQC8 = new TString("QC{8} ... ");
354 TString *entryFQD = new TString("FQD ..... ");
355 TString *entryLYZ1 = new TString("LYZ ..... ");
356 TString *entryLYZEP = new TString("LYZEP ... ");
357
358 Double_t avMultMC=0.;
359 Long_t nEvtsMC=0;
360
361 Double_t avMultGFC=0.;
362 Long_t nEvtsGFC=0;
363
364 Double_t avMultQC2=0., avMultQC4=0., avMultQC6=0., avMultQC8=0.;
365 Long_t nEvtsQC2=0, nEvtsQC4=0, nEvtsQC6=0, nEvtsQC8=0;
366
367 Double_t avMultFQD=0.;
368 Long_t nEvtsFQD=0;
369
370 Double_t avMultLYZ1=0.;
371 Long_t nEvtsLYZ1=0;
70288839 372
a88e5ac2 373 Double_t avMultLYZEP=0.;
374 Long_t nEvtsLYZEP=0;
70288839 375
a88e5ac2 376 //MC:
70288839 377 if(mcepCommonHist)
378 {
379 avMultMC = (mcepCommonHist->GetHistMultInt())->GetMean();
380 nEvtsMC = (mcepCommonHist->GetHistMultInt())->GetEntries();
a88e5ac2 381 }
382 if(entryMC)
383 {
70288839 384 entryMC->Append("M = ");
385 (*entryMC)+=(Long_t)avMultMC;
386 entryMC->Append(", N = ");
387 (*entryMC)+=(Long_t)nEvtsMC;
70288839 388 }
a88e5ac2 389
390 //GFC:
391 if(gfcCommonHist)
392 {
393 avMultGFC = (gfcCommonHist->GetHistMultInt())->GetMean();
394 nEvtsGFC = (gfcCommonHist->GetHistMultInt())->GetEntries();
395 }
396 if(entryGFC)
397 {
398 entryGFC->Append("M = ");
399 (*entryGFC)+=(Long_t)avMultGFC;
400 entryGFC->Append(", N = ");
401 (*entryGFC)+=(Long_t)nEvtsGFC;
402 }
403
404 //QC:
70288839 405 if(qcCommonHist2)
406 {
407 avMultQC2 = (qcCommonHist2->GetHistMultInt())->GetMean();
408 nEvtsQC2 = (qcCommonHist2->GetHistMultInt())->GetEntries();
a88e5ac2 409 }
410 if(entryQC2)
411 {
70288839 412 entryQC2->Append("M = ");
413 (*entryQC2)+=(Long_t)avMultQC2;
414 entryQC2->Append(", N = ");
415 (*entryQC2)+=(Long_t)nEvtsQC2;
70288839 416 }
417 if(qcCommonHist4)
418 {
419 avMultQC4 = (qcCommonHist4->GetHistMultInt())->GetMean();
420 nEvtsQC4 = (qcCommonHist4->GetHistMultInt())->GetEntries();
a88e5ac2 421 }
422 if(entryQC4)
423 {
70288839 424 entryQC4->Append("M = ");
425 (*entryQC4)+=(Long_t)avMultQC4;
426 entryQC4->Append(", N = ");
427 (*entryQC4)+=(Long_t)nEvtsQC4;
70288839 428 }
a88e5ac2 429 if(qcCommonHist6)
430 {
431 avMultQC6 = (qcCommonHist6->GetHistMultInt())->GetMean();
432 nEvtsQC6 = (qcCommonHist6->GetHistMultInt())->GetEntries();
433 }
434 if(entryQC6)
435 {
436 entryQC6->Append("M = ");
437 (*entryQC6)+=(Long_t)avMultQC6;
438 entryQC6->Append(", N = ");
439 (*entryQC6)+=(Long_t)nEvtsQC6;
440 }
441 if(qcCommonHist8)
442 {
443 avMultQC8 = (qcCommonHist8->GetHistMultInt())->GetMean();
444 nEvtsQC8 = (qcCommonHist8->GetHistMultInt())->GetEntries();
445 }
446 if(entryQC8)
447 {
448 entryQC8->Append("M = ");
449 (*entryQC8)+=(Long_t)avMultQC8;
450 entryQC8->Append(", N = ");
451 (*entryQC8)+=(Long_t)nEvtsQC8;
452 }
70288839 453
a88e5ac2 454 //FQD:
455 if(fqdCommonHist)
456 {
457 avMultFQD = (fqdCommonHist->GetHistMultInt())->GetMean();
458 nEvtsFQD = (fqdCommonHist->GetHistMultInt())->GetEntries();
459 }
460 if(entryFQD)
461 {
462 entryFQD->Append("M = ");
463 (*entryFQD)+=(Long_t)avMultFQD;
464 entryFQD->Append(", N = ");
465 (*entryFQD)+=(Long_t)nEvtsFQD;
466 }
70288839 467
a88e5ac2 468 //LYZ1:
469 if(lyz1CommonHist)
470 {
471 avMultLYZ1 = (lyz1CommonHist->GetHistMultInt())->GetMean();
472 nEvtsLYZ1 = (lyz1CommonHist->GetHistMultInt())->GetEntries();
473 }
474 if(entryLYZ1)
475 {
476 entryLYZ1->Append("M = ");
477 (*entryLYZ1)+=(Long_t)avMultLYZ1;
478 entryLYZ1->Append(", N = ");
479 (*entryLYZ1)+=(Long_t)nEvtsLYZ1;
480 }
70288839 481
a88e5ac2 482 //LYZEP:
483 if(lyzepCommonHist)
70288839 484 {
a88e5ac2 485 avMultcLYZEP = (lyzepCommonHist->GetHistMultInt())->GetMean();
486 nEvtsLYZEP = (lyzepCommonHist->GetHistMultInt())->GetEntries();
70288839 487 }
a88e5ac2 488 if(entryLYZEP)
70288839 489 {
a88e5ac2 490 entryLYZEP->Append("M = ");
491 (*entryLYZEP)+=(Long_t)avMultLYZEP;
492 entryLYZEP->Append(", N = ");
493 (*entryLYZEP)+=(Long_t)nEvtsLYZEP;
70288839 494 }
a88e5ac2 495
496 if(textResults)
70288839 497 {
a88e5ac2 498 textResults->AddText(entryMC->Data());
499 textResults->AddText(entryGFC->Data());
500 textResults->AddText(entryQC2->Data());
501 textResults->AddText(entryQC4->Data());
502 textResults->AddText(entryQC6->Data());
503 textResults->AddText(entryQC8->Data());
504 textResults->AddText(entryFQD->Data());
505 textResults->AddText(entryLYZ1->Data());
506 textResults->AddText(entryLYZEP->Data());
70288839 507 }
a88e5ac2 508 //----------------------------------------------------------------------------------
70288839 509
510 //----------------------------------------------------------------------------------
a88e5ac2 511 //final drawing for integrated flow:
512 TCanvas* intFlowAllCanvas = new TCanvas("Integrated Flow","Integrated Flow",1000,600);
6f62c2a7 513
a88e5ac2 514 intFlowAllCanvas->Divide(2,1);
6f62c2a7 515
a88e5ac2 516 //1st pad is for plot:
517 (intFlowAllCanvas->cd(1))->SetPad(0.0,0.0,0.75,1.0);
9d3cbee7 518
a88e5ac2 519 if(intFlowAll)
520 {
521 if(dMin>0. && dMax>0.)
522 {
523 (intFlowAll->GetYaxis())->SetRangeUser(0.9744*dMin,1.0144*dMax);
524 } else if(dMin<0. && dMax>0.)
525 {
526 if(!(-1.*dMin<4.*dMax))
527 {
528 (intFlowAll->GetYaxis())->SetRangeUser(1.0266*dMin,1.0144*dMax);
529 } else {(intFlowAll->GetYaxis())->SetRangeUser(1.1266*dMin,1.0144*dMax);}
530 } else if(dMin<0. && dMax<0.)
531 {
532 (intFlowAll->GetYaxis())->SetRangeUser(1.0266*dMin,0.9866*dMax);
533 }
534 intFlowAll->Draw("E1");
535 }
536
537 if(pMesh) pMesh->Draw("LFSAME");
538
539 if(flowResults) flowResults->Draw("PSAME");
540
541 //2nd pad is for legend:
542 (intFlowAllCanvas->cd(2))->SetPad(0.75,0.0,1.0,1.0);
543
544 if(textDefault)
545 {
546 textDefault->Draw();
547 textResults->Draw();
548 }
549 //----------------------------------------------------------------------------------
9d3cbee7 550 //==================================================================================
551
552
553
554
555 //==================================================================================
556 // DIFFERENTIAL FLOW
557 //==================================================================================
70288839 558 Int_t iNbinsPt = AliFlowCommonConstants::GetNbinsPt();
559 Double_t dPtMin = AliFlowCommonConstants::GetPtMin();
560 Double_t dPtMax = AliFlowCommonConstants::GetPtMax();
561
a88e5ac2 562 //----------------------------------------------------------------------------------
563 //cosmetics: the style histogram:
70288839 564 TH1D *styleHist = new TH1D("styleHist","styleHist",iNbinsPt,dPtMin,dPtMax);
565 styleHist->SetTitle("Differential Flow");
566 styleHist->SetXTitle("p_{t} [GeV]");
567 styleHist->SetYTitle("v_{n}");
a88e5ac2 568 //----------------------------------------------------------------------------------
9d3cbee7 569
a88e5ac2 570 //----------------------------------------------------------------------------------
571 //cosmetics: Monte Carlo error bands for differential flow
572 TGraph* pMeshDiffFlow = NULL;
573 if(mcepCommonHistRes)
574 {
575 Int_t nPtsDF = (mcepCommonHistRes->GetHistDiffFlow())->GetNbinsX();
576 Double_t binWidth = (mcepCommonHistRes->GetHistDiffFlow())->GetBinWidth(1);//assuming that all bins have the same width
577
578 pMeshDiffFlow = new TGraph(2*nPts+1);
579
580 Double_t valueMC=0., errorMC=0.;
581 for(Int_t i=1;i<nPtsDF+1;i++)
582 {
583 valueMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinContent(i);
584 errorMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinError(i);
585 pMeshDiffFlow->SetPoint(i,(i-0.5)*binWidth,valueMC+errorMC);
586 }
587 for(Int_t i=nPtsDF+1;i<2*nPtsDF+1;i++)
588 {
589 valueMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinContent(2*nPtsDF+1-i);
590 errorMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinError(2*nPtsDF+1-i);
591 pMeshDiffFlow->SetPoint(i,(2*nPtsDF-i+0.5)*binWidth,valueMC-errorMC);
592 }
593 pMeshDiffFlow->SetPoint(2*nPtsDF+1,0.5*binWidth,valueMC+errorMC);
594 pMeshDiffFlow->SetFillStyle(meshStyle);
595 pMeshDiffFlow->SetFillColor(meshColor);
596 }
597 //----------------------------------------------------------------------------------
598
70288839 599 //MCEP = Monte Carlo Event Plane
a88e5ac2 600 Double_t avMultDiffFlowMC=0.;
601 Double_t nEvtsDiffFlowMC=0;
602 if(fileMCEP)
9d3cbee7 603 {
70288839 604 if(mcepCommonHistRes)
605 {
70288839 606 (mcepCommonHistRes->GetHistDiffFlow())->SetMarkerColor(2);
607 (mcepCommonHistRes->GetHistDiffFlow())->SetMarkerStyle(20);
a88e5ac2 608 }
609 if(mcepCommonHist)
610 {
611 avMultDiffFlowMC = (mcepCommonHist->GetHistMultDiff())->GetMean();
612 nEvtsDiffFlowMC = (mcepCommonHist->GetHistMultDiff())->GetEntries();
70288839 613 }
614 }
a88e5ac2 615
9d3cbee7 616 //GFC = Generating Function Cumulants
a88e5ac2 617 Double_t avMultDiffFlowGFC=0.;
618 Double_t nEvtsDiffFlowGFC=0.;
619 if(fileGFC)
9d3cbee7 620 {
a88e5ac2 621 if(gfcCommonHistRes2)
9d3cbee7 622 {
a88e5ac2 623 (gfcCommonHistRes2->GetHistDiffFlow())->SetMarkerColor(kViolet+3);
624 (gfcCommonHistRes2->GetHistDiffFlow())->SetMarkerStyle(20);
9d3cbee7 625 }
a88e5ac2 626 if(gfcCommonHistRes4)
9d3cbee7 627 {
a88e5ac2 628 (gfcCommonHistRes4->GetHistDiffFlow())->SetMarkerColor(kViolet-6);
629 (gfcCommonHistRes4->GetHistDiffFlow())->SetMarkerStyle(21);
9d3cbee7 630 }
a88e5ac2 631 if(gfcCommonHist)
632 {
633 avMultDiffFlowGFC = (gfcCommonHist->GetHistMultDiff())->GetMean();
634 nEvtsDiffFlowGFC = (gfcCommonHist->GetHistMultDiff())->GetEntries();
635 }
9d3cbee7 636 }
a88e5ac2 637
9d3cbee7 638 //QC = Q-cumulants
a88e5ac2 639 Double_t avMultDiffFlowQC2=0., avMultDiffFlowQC4=0.;
640 Double_t nEvtsDiffFlowQC2=0., nEvtsDiffFlowQC4=0.;
641 if(fileQC)
9d3cbee7 642 {
a88e5ac2 643 //QC{2}
70288839 644 if(qcCommonHistRes2)
9d3cbee7 645 {
a88e5ac2 646 (qcCommonHistRes2->GetHistDiffFlow())->SetMarkerColor(kOrange+3);
70288839 647 (qcCommonHistRes2->GetHistDiffFlow())->SetMarkerStyle(20);
9d3cbee7 648 }
a88e5ac2 649 if(qcCommonHist2)
650 {
651 avMultDiffFlowQC2 = (qcCommonHist2->GetHistMultDiff())->GetMean();
652 nEvtsDiffFlowQC2 = (qcCommonHist2->GetHistMultDiff())->GetEntries();
653 }
654 //QC{4}
70288839 655 if(qcCommonHistRes4)
9d3cbee7 656 {
a88e5ac2 657 (qcCommonHistRes4->GetHistDiffFlow())->SetMarkerColor(kOrange-6);
70288839 658 (qcCommonHistRes4->GetHistDiffFlow())->SetMarkerStyle(21);
a88e5ac2 659 }
660 if(qcCommonHist4)
661 {
662 avMultDiffFlowQC4 = (qcCommonHist4->GetHistMultDiff())->GetMean();
663 nEvtsDiffFlowQC4 = (qcCommonHist4->GetHistMultDiff())->GetEntries();
9d3cbee7 664 }
665 }
70288839 666
a88e5ac2 667 //LYZ2 = Lee-Yang Zeros (2nd run)
668 Double_t avMultDiffFlowLYZ2=0.;
669 Double_t nEvtsDiffFlowLYZ2=0;
670 if(fileLYZ2)
9d3cbee7 671 {
a88e5ac2 672 if(lyz2CommonHistRes)
9d3cbee7 673 {
a88e5ac2 674 (lyz2CommonHistRes->GetHistDiffFlow())->SetMarkerColor(kGreen+3);
675 (lyz2CommonHistRes->GetHistDiffFlow())->SetMarkerStyle(22);
676 }
677 if(lyz2CommonHist)
9d3cbee7 678 {
a88e5ac2 679 avMultDiffFlowLYZ2 = (lyz2CommonHist->GetHistMultDiff())->GetMean();
680 nEvtsDiffFlowLYZ2 = (lyz2CommonHist->GetHistMultDiff())->GetEntries();
9d3cbee7 681 }
682 }
70288839 683
a88e5ac2 684 //----------------------------------------------------------------------------------
685 //final drawing for differential flow:
686 TCanvas* diffFlowAllCanvas = new TCanvas("Differential Flow","Differential Flow",1000,600);
70288839 687
a88e5ac2 688 diffFlowAllCanvas->Divide(2,1);
70288839 689
a88e5ac2 690 //1st pad is for plot:
691 (diffFlowAllCanvas->cd(1))->SetPad(0.0,0.0,0.75,1.0);
70288839 692
a88e5ac2 693 if(styleHist)
70288839 694 {
a88e5ac2 695 styleHist->Draw();
70288839 696 }
a88e5ac2 697 if(pMeshDiffFlow)
70288839 698 {
a88e5ac2 699 pMeshDiffFlow->Draw("LFSAME");
70288839 700 }
a88e5ac2 701 //MC
702 if(mcepCommonHistRes)
703 {
704 //(mcepCommonHistRes->GetHistDiffFlow())->Draw("E1PSAME");
705 }
706 //GFC
707 if(gfcCommonHistRes2)
708 {
709 (gfcCommonHistRes2->GetHistDiffFlow())->Draw("E1PSAME");
710 }
711 if(gfcCommonHistRes4)
712 {
713 (gfcCommonHistRes4->GetHistDiffFlow())->Draw("E1PSAME");
714 }
715 //QC
716 if(qcCommonHistRes2)
717 {
718 (qcCommonHistRes2->GetHistDiffFlow())->Draw("E1PSAME");
719 }
720 if(qcCommonHistRes4)
721 {
722 (qcCommonHistRes4->GetHistDiffFlow())->Draw("E1PSAME");
723 }
724 //LYZ2
725 if(lyz2CommonHistRes)
726 {
727 (lyz2CommonHistRes->GetHistDiffFlow())->Draw("E1PSAME");
70288839 728 }
729
a88e5ac2 730 //2nd pad is for legend:
731 (diffFlowAllCanvas->cd(2))->SetPad(0.75,0.0,1.0,1.0);
732
733 TLegend* legendDiffFlow = new TLegend(0.02,0.25,0.97,0.75);
734 legendDiffFlow->SetTextFont(72);
735 legendDiffFlow->SetTextSize(0.06);
736
737 //legend's entries:
738 TString *entryDiffMC = new TString("MC ....... ");
739 TString *entryDiffGFC2 = new TString("GFC{2} ... ");
740 TString *entryDiffGFC4 = new TString("GFC{4} ... ");
741 TString *entryDiffQC2 = new TString("QC{2} .... ");
742 TString *entryDiffQC4 = new TString("QC{4} .... ");
743 TString *entryDiffLYZ2 = new TString("LYZ ...... ");
744
745 //MC
70288839 746 if(mcepCommonHistRes)
6f62c2a7 747 {
a88e5ac2 748 (mcepCommonHistRes->GetHistDiffFlow())->SetFillStyle(meshStyle);
749 (mcepCommonHistRes->GetHistDiffFlow())->SetFillColor(meshColor);
750 entryDiffMC->Append("M = ");
751 (*entryDiffMC)+=(Long_t)avMultDiffFlowMC;
752 entryDiffMC->Append(", N = ");
753 (*entryDiffMC)+=(Long_t)nEvtsDiffFlowMC;
754 legendDiffFlow->AddEntry(mcepCommonHistRes->GetHistDiffFlow(),entryDiffMC->Data(),"f");
755 }
6f62c2a7 756
a88e5ac2 757 //GFC
758 if(gfcCommonHistRes2)
759 {
760 entryDiffGFC2->Append("M = ");
761 (*entryDiffGFC2)+=(Long_t)avMultDiffFlowGFC;
762 entryDiffGFC2->Append(", N = ");
763 (*entryDiffGFC2)+=(Long_t)nEvtsDiffFlowGFC;
764 legendDiffFlow->AddEntry(gfcCommonHistRes2->GetHistDiffFlow(),entryDiffGFC2->Data(),"p");
765 }
766 if(gfcCommonHistRes4)
767 {
768 entryDiffGFC4->Append("M = ");
769 (*entryDiffGFC4)+=(Long_t)avMultDiffFlowGFC;
770 entryDiffGFC4->Append(", N = ");
771 (*entryDiffGFC4)+=(Long_t)nEvtsDiffFlowGFC;
772 legendDiffFlow->AddEntry(gfcCommonHistRes4->GetHistDiffFlow(),entryDiffGFC4->Data(),"p");
773 }
6f62c2a7 774
a88e5ac2 775 //QC
776 if(qcCommonHistRes2)
777 {
778 entryDiffQC2->Append("M = ");
779 (*entryDiffQC2)+=(Long_t)avMultDiffFlowQC2;
780 entryDiffQC2->Append(", N = ");
781 (*entryDiffQC2)+=(Long_t)nEvtsDiffFlowQC2;
782 legendDiffFlow->AddEntry(qcCommonHistRes2->GetHistDiffFlow(),entryDiffQC2->Data(),"p");
783 }
784 if(qcCommonHistRes4)
785 {
786 entryDiffQC4->Append("M = ");
787 (*entryDiffQC4)+=(Long_t)avMultDiffFlowQC4;
788 entryDiffQC4->Append(", N = ");
789 (*entryDiffQC4)+=(Long_t)nEvtsDiffFlowQC4;
790 legendDiffFlow->AddEntry(qcCommonHistRes4->GetHistDiffFlow(),entryDiffQC4->Data(),"p");
791 }
6f62c2a7 792
a88e5ac2 793 //LYZ
794 if(lyz2CommonHistRes)
795 {
796 entryDiffLYZ2->Append("M = ");
797 (*entryDiffLYZ2)+=(Long_t)avMultDiffFlowLYZ2;
798 entryDiffLYZ2->Append(", N = ");
799 (*entryDiffLYZ2)+=(Long_t)nEvtsDiffFlowLYZ2;
800 legendDiffFlow->AddEntry(lyz2CommonHistRes->GetHistDiffFlow(),entryDiffLYZ2->Data(),"p");
801 }
802
803 //drawing finally the legend in the 2nd pad:
804 if(legendDiffFlow)
805 {
806 legendDiffFlow->Draw();
807 }
6f62c2a7 808
a88e5ac2 809 //=====================================================================================
810
70288839 811}