]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/macros/CompareFlowResults.C
extra info in legend
[u/mrichter/AliRoot.git] / PWG2 / FLOW / macros / CompareFlowResults.C
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  //choosing the style and color of mesh for MC error bands:
18  Int_t meshStyle = 3044;//see documentation of TAttFill
19  Int_t meshColor = kRed-4;
20  
21  //type of analysis was: ESD, AOD, MC, ESDMC0, ESDMC1
22  const TString type = "ESD";
23  
24  //open the output files:
25  TString inputFileNameMCEP = "outputMCEPanalysis";
26  TFile* file_MCEP = NULL;
27  file_MCEP = TFile::Open(((inputFileNameMCEP.Append(type)).Append(".root")).Data(), "READ"); 
28  
29  TString inputFileNameLYZ1 = "outputLYZ1analysis";
30  TFile* file_LYZ1 = NULL;
31  file_LYZ1 = TFile::Open(((inputFileNameLYZ1.Append(type)).Append("_firstrun.root")).Data(), "READ"); 
32  
33  /*
34  TString inputFileNameSP = "outputSPanalysis";
35  TFile* file_SP = NULL;
36  file_SP = TFile::Open(((inputFileNameSP.Append(type)).Append(".root")).Data(), "READ"); 
37  */
38  
39  TString inputFileNameFQD = "outputFQDanalysis";
40  TFile* file_FQD = NULL;
41  file_FQD = TFile::Open(((inputFileNameFQD.Append(type)).Append(".root")).Data(), "READ"); 
42  
43  TString inputFileNameGFC = "outputGFCanalysis";
44  TFile* file_GFC = NULL;
45  file_GFC = TFile::Open(((inputFileNameGFC.Append(type)).Append(".root")).Data(), "READ"); 
46  
47  TString inputFileNameQC = "outputQCanalysis";
48  TFile* file_QC = NULL;
49  file_QC = TFile::Open(((inputFileNameQC.Append(type)).Append(".root")).Data(), "READ"); 
50
51  //==================================================================================
52  //                              INTEGRATED FLOW
53  //==================================================================================
54  
55  //booking the histogram for the integrated flow results from all methods
56  TH1D* intFlow = new TH1D("intFlow","Integrated Flow",11,0,11);  
57
58  intFlow->SetLabelSize(0.044);
59  intFlow->SetMarkerStyle(21);
60  intFlow->SetMarkerColor(kRed-4);
61  (intFlow->GetXaxis())->SetBinLabel(1,"v_{n}{MC}");
62  (intFlow->GetXaxis())->SetBinLabel(2,"v_{n}{LYZ}");
63  (intFlow->GetXaxis())->SetBinLabel(3,"v_{n}{FQD}");
64  (intFlow->GetXaxis())->SetBinLabel(4,"v_{n}{2}");
65  (intFlow->GetXaxis())->SetBinLabel(5,"v_{n}{4}");
66  (intFlow->GetXaxis())->SetBinLabel(6,"v_{n}{6}");
67  (intFlow->GetXaxis())->SetBinLabel(7,"v_{n}{8}");
68  (intFlow->GetXaxis())->SetBinLabel(8,"v_{n}^{Q}{2}");
69  (intFlow->GetXaxis())->SetBinLabel(9,"v_{n}^{Q}{4}");
70  (intFlow->GetXaxis())->SetBinLabel(10,"v_{n}^{Q}{6}");
71  (intFlow->GetXaxis())->SetBinLabel(11,"v_{n}^{Q}{8}"); 
72  
73  //MCEP = Monte Carlo Event Plane
74  TList *pListMCEP = NULL;
75  AliFlowCommonHistResults *mcepCommonHistRes = NULL; 
76  if(file_MCEP) 
77  {
78   file_MCEP->GetObject("cobjMCEP",pListMCEP); 
79   if(pListMCEP) 
80   {
81    mcepCommonHist    = dynamic_cast<AliFlowCommonHist*> (pListMCEP->FindObject("AliFlowCommonHistMCEP"));
82    mcepCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListMCEP->FindObject("AliFlowCommonHistResultsMCEP"));
83    if(mcepCommonHistRes)
84    {
85     intFlow->SetBinContent(1,(mcepCommonHistRes->GetHistIntFlow())->GetBinContent(1));   
86     intFlow->SetBinError(1,(mcepCommonHistRes->GetHistIntFlow())->GetBinError(1));
87    }
88   }
89  }
90  
91  //LYZ1 = Lee-Yang Zeros (1st run)
92  TList *pListLYZ1 = NULL;
93  AliFlowCommonHistResults *lyz1 = NULL; 
94  if(file_LYZ1) 
95  {
96   file_LYZ1->GetObject("cobjLYZ1",pListLYZ1); 
97   if(pListLYZ1) 
98   {
99    lyz1 = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ1->FindObject("AliFlowCommonHistResultsLYZ"));
100    if(lyz1)
101    {
102     intFlow->SetBinContent(2,(lyz1->GetHistIntFlow())->GetBinContent(1));   
103     intFlow->SetBinError(2,(lyz1->GetHistIntFlow())->GetBinError(1));
104    }
105   }
106  }
107  
108  //FQD = Fitting q-distribution
109  TList *pListFQD = NULL;
110  AliFlowCommonHistResults *fqd = NULL; 
111  if(file_FQD) 
112  {
113   file_FQD->GetObject("cobjFQD",pListFQD); 
114   if(pListFQD) 
115   {
116    fqd = dynamic_cast<AliFlowCommonHistResults*> (pListFQD->FindObject("AliFlowCommonHistResultsFQD"));
117    if(fqd)
118    {
119     intFlow->SetBinContent(3,(fqd->GetHistIntFlow())->GetBinContent(1));   
120     intFlow->SetBinError(3,(fqd->GetHistIntFlow())->GetBinError(1));
121    }
122   }
123  }
124  
125  //GFC = Generating Function Cumulants
126  TList *pListGFC = NULL;
127  AliFlowCommonHistResults *gfc2 = NULL; 
128  AliFlowCommonHistResults *gfc4 = NULL; 
129  AliFlowCommonHistResults *gfc6 = NULL; 
130  AliFlowCommonHistResults *gfc8 = NULL; 
131  if(file_GFC) 
132  {
133   file_GFC->GetObject("cobjGFC",pListGFC);
134   if(pListGFC) 
135   {
136    gfc2 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults2ndOrderGFC"));
137    if(gfc2) 
138    {
139     intFlow->SetBinContent(4,(gfc2->GetHistIntFlow())->GetBinContent(1)); 
140     intFlow->SetBinError(4,(gfc2->GetHistIntFlow())->GetBinError(1));
141    }
142    gfc4 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults4thOrderGFC"));
143    if(gfc4) 
144    {
145     intFlow->SetBinContent(5,(gfc4->GetHistIntFlow())->GetBinContent(1));
146     intFlow->SetBinError(5,(gfc4->GetHistIntFlow())->GetBinError(1));
147    }
148    gfc6 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults6thOrderGFC"));
149    if(gfc6) 
150    {
151     intFlow->SetBinContent(6,(gfc6->GetHistIntFlow())->GetBinContent(1)); 
152     intFlow->SetBinError(6,(gfc6->GetHistIntFlow())->GetBinError(1));
153    }
154    gfc8 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults8thOrderGFC"));
155    if(gfc8) 
156    {
157     intFlow->SetBinContent(7,(gfc8->GetHistIntFlow())->GetBinContent(1));
158     intFlow->SetBinError(7,(gfc8->GetHistIntFlow())->GetBinError(1));
159    }
160   }
161  }
162  
163  //QC = Q-cumulants
164  TList *pListQC = NULL;
165  AliFlowCommonHist *qcCommonHist2 = NULL, *qcCommonHist4 = NULL;
166  AliFlowCommonHistResults *qcCommonHistRes2 = NULL; 
167  AliFlowCommonHistResults *qcCommonHistRes4 = NULL; 
168  AliFlowCommonHistResults *qcCommonHistRes6 = NULL; 
169  AliFlowCommonHistResults *qcCommonHistRes8 = NULL; 
170  if(file_QC) 
171  {
172   file_QC->GetObject("cobjQC",pListQC);
173   if(pListQC) 
174   {
175    qcCommonHist2 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHistQC"));//to be improved
176    qcCommonHistRes2 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults2ndOrderQC"));
177    if(qcCommonHistRes2) 
178    {
179     intFlow->SetBinContent(8,(qcCommonHistRes2->GetHistIntFlow())->GetBinContent(1)); 
180     intFlow->SetBinError(8,(qcCommonHistRes2->GetHistIntFlow())->GetBinError(1));
181    }
182    qcCommonHist4 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHistQC"));//to be improved
183    qcCommonHistRes4 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults4thOrderQC"));
184    if(qcCommonHistRes4) 
185    {
186     intFlow->SetBinContent(9,(qcCommonHistRes4->GetHistIntFlow())->GetBinContent(1));
187     intFlow->SetBinError(9,(qcCommonHistRes4->GetHistIntFlow())->GetBinError(1));
188    }
189    qcCommonHistRes6 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults6thOrderQC"));
190    if(qcCommonHistRes6) 
191    {
192     intFlow->SetBinContent(10,(qcCommonHistRes6->GetHistIntFlow())->GetBinContent(1)); 
193     intFlow->SetBinError(10,(qcCommonHistRes6->GetHistIntFlow())->GetBinError(1));
194    }
195    qcCommonHistRes8 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults8thOrderQC"));
196    if(qcCommonHistRes8) 
197    {
198     intFlow->SetBinContent(11,(qcCommonHistRes8->GetHistIntFlow())->GetBinContent(1));
199     intFlow->SetBinError(11,(qcCommonHistRes8->GetHistIntFlow())->GetBinError(1));
200    }
201   }
202  }
203  
204  //----------------------------------------------------------------------------------
205  //cosmetics: mesh for MC error bands (integrated flow)
206  TGraph* pGraphIF = NULL;
207  if(intFlow && mcepCommonHistRes)
208  {
209   Double_t valueMC = intFlow->GetBinContent(1);
210   Double_t errorMC = intFlow->GetBinError(1);  
211   Int_t nPts       = intFlow->GetNbinsX();     
212      
213   pGraphIF = new TGraph(nPts); 
214   
215   pGraphIF->SetPoint(1,0,valueMC+errorMC);
216   pGraphIF->SetPoint(2,nPts+1,valueMC+errorMC);
217   pGraphIF->SetPoint(3,nPts+1,valueMC-errorMC);
218   pGraphIF->SetPoint(4,0,valueMC-errorMC);
219   pGraphIF->SetPoint(5,0,valueMC+errorMC);
220   
221   pGraphIF->SetFillStyle(meshStyle);
222   pGraphIF->SetFillColor(meshColor);
223  }
224   
225  /*                     
226  //cosmetics: legend     
227  TString *avM = new TString("M = ");//to be improved
228  TString *nEvts = new TString("N = ");//to be improved
229  TLegend *legendIntFlow = new TLegend(0.15,0.15,0.44,0.35);
230  legendIntFlow->SetTextFont(72);
231  legendIntFlow->SetTextSize(0.03);
232  if(qcCommonHist2)
233  {
234   (*avM)+=(qcCommonHist->GetHistMultInt())->GetMean();//to be improved
235   (*N)+=(Long_t)(qcCommonHist->GetHistMultInt())->GetEntries();//to be improved
236   legendIntFlow->AddEntry(qcCommonHist->GetHistMultInt(),avM->Data(),"");
237   legendIntFlow->AddEntry(qcCommonHist->GetHistMultInt(),N->Data(),"");
238  }
239  */
240  
241  /*
242  //cosmetics: legend (integrated flow)    
243  TString *entryMC  = new TString("MC ......... ");
244  TString *entryQC2 = new TString("QC{2} .... ");
245  TString *entryQC4 = new TString("QC{4} .... ");
246  
247  TLegend *legendIntFlow = new TLegend(0.15,0.15,0.44,0.35); 
248  legendIntFlow->SetTextFont(72);
249  legendIntFlow->SetTextSize(0.03);
250  
251  
252  Double_t avMultMC=0., avMultQC2=0., avMultQC4=0.;
253  Long_t nEvtsMC=0, nEvtsQC2=0, nEvtsQC4=0;
254  if(mcepCommonHist)
255  {
256   avMultMC = (mcepCommonHist->GetHistMultInt())->GetMean();
257   nEvtsMC  = (mcepCommonHist->GetHistMultInt())->GetEntries();
258   entryMC->Append("M = ");
259   (*entryMC)+=(Long_t)avMultMC;
260   entryMC->Append(", N = ");
261   (*entryMC)+=(Long_t)nEvtsMC;
262   legendIntFlow->AddEntry(mcepCommonHist->GetHistMultInt(),entryMC->Data(),"f");
263  }
264  if(qcCommonHist2)
265  {
266   avMultQC2 = (qcCommonHist2->GetHistMultInt())->GetMean();
267   nEvtsQC2  = (qcCommonHist2->GetHistMultInt())->GetEntries();
268   entryQC2->Append("M = ");
269   (*entryQC2)+=(Long_t)avMultQC2;
270   entryQC2->Append(", N = ");
271   (*entryQC2)+=(Long_t)nEvtsQC2;
272   legendIntFlow->AddEntry(qcCommonHist2->GetHistMultInt(),entryQC2->Data(),"f");
273  }
274  if(qcCommonHist4)
275  {
276   avMultQC4 = (qcCommonHist4->GetHistMultInt())->GetMean();
277   nEvtsQC4  = (qcCommonHist4->GetHistMultInt())->GetEntries();
278   entryQC4->Append("M = ");
279   (*entryQC4)+=(Long_t)avMultQC4;
280   entryQC4->Append(", N = ");
281   (*entryQC4)+=(Long_t)nEvtsQC4;
282   legendIntFlow->AddEntry(qcCommonHist4->GetHistMultInt(),entryQC4->Data(),"f");
283  }
284  */ 
285  
286  
287  
288  //cosmetics: text (integrated flow)    
289  TString *entryMC  = new TString("MC ......... ");
290  TString *entryQC2 = new TString("QC{2} .... ");
291  TString *entryQC4 = new TString("QC{4} .... ");
292  
293  TPaveText *text = new TPaveText(0.15,0.15,0.44,0.35,"NDC");
294  text->SetTextFont(72);
295  text->SetTextSize(0.03);
296  
297  Double_t avMultMC=0., avMultQC2=0., avMultQC4=0.;
298  Long_t nEvtsMC=0, nEvtsQC2=0, nEvtsQC4=0;
299  if(mcepCommonHist)
300  {
301   avMultMC = (mcepCommonHist->GetHistMultInt())->GetMean();
302   nEvtsMC  = (mcepCommonHist->GetHistMultInt())->GetEntries();
303   entryMC->Append("M = ");
304   (*entryMC)+=(Long_t)avMultMC;
305   entryMC->Append(", N = ");
306   (*entryMC)+=(Long_t)nEvtsMC;
307   text->AddText(entryMC->Data());
308  }
309  if(qcCommonHist2)
310  {
311   avMultQC2 = (qcCommonHist2->GetHistMultInt())->GetMean();
312   nEvtsQC2  = (qcCommonHist2->GetHistMultInt())->GetEntries();
313   entryQC2->Append("M = ");
314   (*entryQC2)+=(Long_t)avMultQC2;
315   entryQC2->Append(", N = ");
316   (*entryQC2)+=(Long_t)nEvtsQC2;
317   text->AddText(entryQC2->Data());
318  }
319  if(qcCommonHist4)
320  {
321   avMultQC4 = (qcCommonHist4->GetHistMultInt())->GetMean();
322   nEvtsQC4  = (qcCommonHist4->GetHistMultInt())->GetEntries();
323   entryQC4->Append("M = ");
324   (*entryQC4)+=(Long_t)avMultQC4;
325   entryQC4->Append(", N = ");
326   (*entryQC4)+=(Long_t)nEvtsQC4;
327   text->AddText(entryQC4->Data());
328  }
329  
330  //----------------------------------------------------------------------------------
331  
332  //drawing everything for integrated flow:
333  TCanvas* intFlowCanvas = new TCanvas("Integrated Flow","Integrated Flow",1000,600);
334  
335  if(intFlow) intFlow->Draw("E1");      
336  if(pGraphIF) pGraphIF->Draw("LFSAME");                    
337  //if(legendIntFlow) legendIntFlow->Draw("");   
338  text->Draw("SAME");
339  
340  //==================================================================================   
341  
342
343
344
345  //==================================================================================
346  //                            DIFFERENTIAL FLOW
347  //==================================================================================
348
349  TCanvas* diffFlowCanvas = new TCanvas("Differential Flow","Differential Flow",1000,600);
350  
351  Int_t iNbinsPt  = AliFlowCommonConstants::GetNbinsPt();
352  Double_t dPtMin = AliFlowCommonConstants::GetPtMin();
353  Double_t dPtMax = AliFlowCommonConstants::GetPtMax();
354  
355  TH1D *styleHist = new TH1D("styleHist","styleHist",iNbinsPt,dPtMin,dPtMax);
356  styleHist->SetTitle("Differential Flow");
357  styleHist->SetXTitle("p_{t} [GeV]");
358  styleHist->SetYTitle("v_{n}");
359  styleHist->Draw();
360  
361  TString *entryDiffMC  = new TString("v_{n}{MC} ");
362  TString *entryDiffQC2 = new TString("v_{n}^{Q}{2} ");
363  TString *entryDiffQC4 = new TString("v_{n}^{Q}{4} ");
364  
365  TLegend* legendDiffFlow = new TLegend(0.15,0.15,0.44,0.35);
366  legendDiffFlow->SetTextFont(72);
367  legendDiffFlow->SetTextSize(0.03);
368  
369  //MCEP = Monte Carlo Event Plane
370  if(file_MCEP)
371  {
372   if(mcepCommonHistRes)
373   {
374    (mcepCommonHistRes->GetHistDiffFlow())->Scale(0.01);//to be improved
375    (mcepCommonHistRes->GetHistDiffFlow())->SetMarkerColor(2);
376    (mcepCommonHistRes->GetHistDiffFlow())->SetMarkerStyle(20);
377    (mcepCommonHistRes->GetHistDiffFlow())->SetFillStyle(meshStyle);
378    (mcepCommonHistRes->GetHistDiffFlow())->SetFillColor(meshColor);
379    entryDiffMC->Append("(M = ");
380    (*entryDiffMC)+=(Long_t)avMultMC;
381    entryDiffMC->Append(", N = ");
382    (*entryDiffMC)+=(Long_t)nEvtsMC; 
383    entryDiffMC->Append(")");
384    //(mcepCommonHistRes->GetHistDiffFlow())->Draw("E1PSAME"); 
385    legendDiffFlow->AddEntry(mcepCommonHistRes->GetHistDiffFlow(),entryDiffMC->Data(),"f");
386   } 
387  } 
388  
389  //GFC = Generating Function Cumulants
390  if(file_GFC)
391  {
392   if(gfc2)
393   {
394    (gfc2->GetHistDiffFlow())->SetMarkerColor(28);
395    (gfc2->GetHistDiffFlow())->SetMarkerStyle(20);
396    (gfc2->GetHistDiffFlow())->Draw("E1PSAME"); 
397    legendDiffFlow->AddEntry(gfc2->GetHistDiffFlow(),"v_{n}{2}","p");
398   }
399   if(gfc4)
400   { 
401    (gfc4->GetHistDiffFlow())->SetMarkerColor(28);
402    (gfc4->GetHistDiffFlow())->SetMarkerStyle(21);
403    (gfc4->GetHistDiffFlow())->Draw("E1PSAME");
404    legendDiffFlow->AddEntry(gfc4->GetHistDiffFlow(),"v_{n}{4}","p"); 
405    //(gfc6->GetHistDiffFlow())->Draw("SAME"); 
406    //(gfc8->GetHistDiffFlow())->Draw("SAME"); 
407   }
408  }
409
410  //QC = Q-cumulants
411  if(file_QC)
412  {
413   if(qcCommonHistRes2)
414   {
415    (qcCommonHistRes2->GetHistDiffFlow())->SetMarkerColor(44);
416    (qcCommonHistRes2->GetHistDiffFlow())->SetMarkerStyle(20);
417    (qcCommonHistRes2->GetHistDiffFlow())->Draw("E1PSAME");
418    entryDiffQC2->Append("(M = ");
419    (*entryDiffQC2)+=(Long_t)avMultQC2;
420    entryDiffQC2->Append(", N = ");
421    (*entryDiffQC2)+=(Long_t)nEvtsQC2; 
422    entryDiffQC2->Append(")");
423    legendDiffFlow->AddEntry(qcCommonHistRes2->GetHistDiffFlow(),entryDiffQC2->Data(),"p"); 
424   }
425   if(qcCommonHistRes4)
426   {
427    (qcCommonHistRes4->GetHistDiffFlow())->SetMarkerColor(44);
428    (qcCommonHistRes4->GetHistDiffFlow())->SetMarkerStyle(21);
429    (qcCommonHistRes4->GetHistDiffFlow())->Draw("E1PSAME"); 
430    entryDiffQC4->Append("(M = ");
431    (*entryDiffQC4)+=(Long_t)avMultQC4;
432    entryDiffQC4->Append(", N = ");
433    (*entryDiffQC4)+=(Long_t)nEvtsQC4; 
434    entryDiffQC4->Append(")");
435    legendDiffFlow->AddEntry(qcCommonHistRes4->GetHistDiffFlow(),entryDiffQC4->Data(),"p");
436   }
437  } 
438  
439  
440
441  
442  /*
443  //SP = Scalar Product
444  TList *pListSP = NULL;
445  AliFlowCommonHistResults *sp = NULL; 
446  if(file_SP) 
447  {
448   file_SP->GetObject("cobjSP",pListSP);
449   if(pListSP) 
450   {
451    sp = dynamic_cast<AliFlowCommonHistResults*> (pListSP->FindObject("AliFlowCommonHistResultsSP"));
452   }
453  }
454  */
455  
456  
457  /*
458  //SP = Scalar Product
459  if(file_SP)
460  {
461   if(sp)
462   {
463    (sp->GetHistDiffFlow())->SetMarkerColor(3);
464    (sp->GetHistDiffFlow())->SetMarkerStyle(28);
465    (sp->GetHistDiffFlow())->Draw("E1PSAME"); 
466    legend1->AddEntry(sp->GetHistDiffFlow(),"v_{n}{SP}","p");
467   } 
468  } 
469  */
470  
471  
472  
473  
474  
475  
476  
477  
478  
479
480  //cosmetics: additional legend (differential flow) 
481  
482  
483  /*
484  
485  //to be improved
486  TLegend* legendDiffFlow2 = new TLegend(0.15,0.60,0.40,0.80);
487  legendDiffFlow2->SetTextFont(72);
488  legendDiffFlow2->SetTextSize(0.03);
489  if(qcCommonHist2)
490  {
491   legendDiffFlow2->AddEntry(qcCommonHist2->GetHistMultInt(),avM->Data(),"");
492   legendDiffFlow2->AddEntry(qcCommonHist2->GetHistMultInt(),nEvts->Data(),"");
493  }
494  if(qcCommonHist2)
495  {
496   legendDiffFlow2->AddEntry(qcCommonHist2->GetHistMultInt(),avM->Data(),"");
497   legendDiffFlow2->AddEntry(qcCommonHist2->GetHistMultInt(),nEvts->Data(),"");
498  }
499  if(qcCommonHist2)
500  {
501   legendDiffFlow2->AddEntry(qcCommonHist2->GetHistMultInt(),avM->Data(),"");
502   legendDiffFlow2->AddEntry(qcCommonHist2->GetHistMultInt(),nEvts->Data(),"");
503  }
504  
505  */
506  
507  //cosmetics: Monte Carlo error bands for differential flow
508  TGraph* pGraphDF = NULL;
509  if(mcepCommonHistRes)
510  {
511   Int_t nPtsDF       = (mcepCommonHistRes->GetHistDiffFlow())->GetNbinsX();
512   Double_t binWidth  = (mcepCommonHistRes->GetHistDiffFlow())->GetBinWidth(1);//assuming that all bins have the same width
513        
514   pGraphDF = new TGraph(2*nPts);
515   
516   for(Int_t i=1;i<nPtsDF+1;i++)
517   {
518    Double_t valueMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinContent(i);
519    Double_t errorMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinError(i);       
520    pGraphDF->SetPoint(i,(i-0.5)*binWidth,valueMC+errorMC);
521   }
522      
523   for(Int_t i=nPtsDF;i<2*nPtsDF;i++)
524   {
525    Double_t valueMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinContent(2*nPtsDF-i);
526    Double_t errorMC = (mcepCommonHistRes->GetHistDiffFlow())->GetBinError(2*nPtsDF-i);       
527    pGraphDF->SetPoint(i,(2*nPtsDF-i-0.5)*binWidth,valueMC-errorMC); 
528   }
529
530   pGraphDF->SetFillStyle(meshStyle);
531   pGraphDF->SetFillColor(meshColor);
532  }            
533                      
534  if(legendDiffFlow) legendDiffFlow->Draw("");   
535  if(pGraphDF) pGraphDF->Draw("LFSAME");        
536                                                                                             
537  //================================================================================== 
538  
539  
540  
541  //==========================================================
542 /*
543  TGraph* fillAreaBetweenFunctions(TF1* fUp, TF1*fDown, double nfmin, 
544                                  double nfmax, int npf, int fillStyle, 
545                                  int fillColor){
546   
547   fDown->SetLineColor(fillColor);
548   fDown->SetLineWidth(0.3);
549   fUp->SetLineColor(fillColor);
550   fUp->SetLineWidth(0.3);
551   
552   TArrayD xf(2*npf+1), yf(2*npf+1);
553   
554   //make and closed area and fill it
555   Double_t xfmin = nfmin; Double_t xfmax = nfmax;
556   Double_t dxf = (xfmax-xfmin)/(npf-1);
557   for (Int_t i=0;i<npf;i++) {
558     xf[i] = xfmin + dxf*i;
559     yf[i] = fDown->Eval(xf[i]);
560     xf[npf+i] = xfmax - dxf*i;
561     yf[npf+i] = fUp->Eval(xf[npf+i]);
562   }
563   xf[2*npf] = xf[0]; yf[2*npf] = yf[0];
564   TGraph *grf = new TGraph(2*npf+1);
565   for (int i=0; i<2*npf+1; i++) grf->SetPoint(i,xf[i],yf[i]);
566   grf->SetFillStyle(fillStyle);
567   grf->SetFillColor(fillColor);
568   return grf;
569   
570   
571 }
572
573 */
574 //=====================================================================================
575  
576  
577  
578  
579                                  
580   
581 }