]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG2/FLOW/macros/compareFlowResults.C
Forgotten commit
[u/mrichter/AliRoot.git] / PWG2 / FLOW / macros / compareFlowResults.C
1 //type of analysis can be: ESD, AOD, MC, ESDMC0, ESDMC1
2 //const TString type = "ESD"; 
3
4 enum libModes {mLocal,mLocalSource};
5 //mLocal: Analyze data on your computer using aliroot
6 //mLocalSource: Analyze data on your computer using root + source files
7
8 //void compareFlowResults(TString type="",Int_t mode=mLocalSource)
9 void compareFlowResults(TString type="ESD",Int_t mode=mLocal)
10
11
12   // load needed libraries:                       
13   LoadPlotLibraries(mode);
14
15
16   //==================================================================================
17   //             set here which plots will be shown by default
18   //==================================================================================
19   Bool_t plotIntFlow = kTRUE;                  // integrated flow (no-name) // to be improved
20   // RP = particles used to determine the reaction plane
21   Bool_t plotIntFlowRP = kTRUE;               // integrated flow RP
22   Bool_t plotDiffFlowPtRP = kTRUE;             // differential flow (Pt,RP)
23   Bool_t plotDiffFlowEtaRP = kTRUE;            // differential flow (Eta,RP)
24   Bool_t plotDiffFlowPtRelativeToMCRP = kTRUE; // plot |v{MC}-v{method}/v{MC}| as a function of pt for RPs   
25   // POI = particle of interest
26   Bool_t plotIntFlowPOI = kTRUE;              //integrated flow POI
27   Bool_t plotDiffFlowPtPOI = kTRUE;           //differential flow (Pt,POI)
28   Bool_t plotDiffFlowEtaPOI = kTRUE;          //differential flow (Eta,POI)
29   //==================================================================================
30   
31   
32   //==================================================================================
33   // set here which methods will be plotted by default for differential flow (Pt,RP):
34   Bool_t plotMCPtRP    = kFALSE;
35   Bool_t plotSPPtRP    = kTRUE;
36   Bool_t plotGFC2PtRP  = kTRUE;
37   Bool_t plotGFC4PtRP  = kTRUE;
38   Bool_t plotGFC6PtRP  = kTRUE;
39   Bool_t plotGFC8PtRP  = kTRUE;
40   Bool_t plotQC2PtRP   = kTRUE;
41   Bool_t plotQC4PtRP   = kTRUE;
42   Bool_t plotQC6PtRP   = kFALSE; // not calculated yet
43   Bool_t plotQC8PtRP   = kFALSE; // not calculated yet
44   Bool_t plotLYZ2PtRP  = kTRUE;
45   Bool_t plotLYZEPPtRP = kTRUE;  
46   
47   // set here which methods will be plotted by default for differential flow (Eta,RP):
48   Bool_t plotMCEtaRP    = kFALSE;
49   Bool_t plotSPEtaRP    = kTRUE;
50   Bool_t plotGFC2EtaRP  = kTRUE;
51   Bool_t plotGFC4EtaRP  = kTRUE;
52   Bool_t plotGFC6EtaRP  = kTRUE;
53   Bool_t plotGFC8EtaRP  = kTRUE;
54   Bool_t plotQC2EtaRP   = kTRUE;
55   Bool_t plotQC4EtaRP   = kTRUE;
56   Bool_t plotQC6EtaRP   = kFALSE; // not calculated yet
57   Bool_t plotQC8EtaRP   = kFALSE; // not calculated yet
58   Bool_t plotLYZ2EtaRP  = kTRUE;
59   Bool_t plotLYZEPEtaRP = kTRUE;
60   
61   // set here which methods will be plotted by default for |v{MC}-v{method}/v{MC}| as a function of pt for RPs 
62   Bool_t plotSPRelativeToMCRP    = kTRUE;
63   Bool_t plotGFC2RelativeToMCRP  = kTRUE;
64   Bool_t plotGFC4RelativeToMCRP  = kTRUE;
65   Bool_t plotGFC6RelativeToMCRP  = kTRUE;
66   Bool_t plotGFC8RelativeToMCRP  = kTRUE;
67   Bool_t plotQC2RelativeToMCRP   = kTRUE;
68   Bool_t plotQC4RelativeToMCRP   = kTRUE;
69   Bool_t plotQC6RelativeToMCRP   = kFALSE; // not calculated yet
70   Bool_t plotQC8RelativeToMCRP   = kFALSE; // not calculated yet
71   Bool_t plotLYZ2RelativeToMCRP  = kTRUE;
72   Bool_t plotLYZEPRelativeToMCRP = kTRUE;  
73   
74   // set here which methods will be plotted by default for differential flow (Pt,POI):
75   Bool_t plotMCPtPOI    = kFALSE;
76   Bool_t plotSPPtPOI    = kTRUE;
77   Bool_t plotGFC2PtPOI  = kTRUE;
78   Bool_t plotGFC4PtPOI  = kTRUE;
79   Bool_t plotGFC6PtPOI  = kTRUE;
80   Bool_t plotGFC8PtPOI  = kTRUE;
81   Bool_t plotQC2PtPOI   = kTRUE;
82   Bool_t plotQC4PtPOI   = kTRUE;
83   Bool_t plotQC6PtPOI   = kFALSE; // not calculated yet
84   Bool_t plotQC8PtPOI   = kFALSE; // not calculated yet
85   Bool_t plotLYZ2PtPOI  = kTRUE;
86   Bool_t plotLYZEPPtPOI = kTRUE; 
87   
88   // set here which methods will be plotted by default for differential flow (Eta,POI):
89   Bool_t plotMCEtaPOI    = kFALSE;
90   Bool_t plotSPEtaPOI    = kTRUE;
91   Bool_t plotGFC2EtaPOI  = kTRUE;
92   Bool_t plotGFC4EtaPOI  = kTRUE;
93   Bool_t plotGFC6EtaPOI  = kTRUE;
94   Bool_t plotGFC8EtaPOI  = kTRUE;
95   Bool_t plotQC2EtaPOI   = kTRUE;
96   Bool_t plotQC4EtaPOI   = kTRUE;
97   Bool_t plotQC6EtaPOI   = kFALSE; // not calculated yet
98   Bool_t plotQC8EtaPOI   = kFALSE; // not calculated yet
99   Bool_t plotLYZ2EtaPOI  = kTRUE;
100   Bool_t plotLYZEPEtaPOI = kTRUE;
101   //==================================================================================
102  
103   
104   //==================================================================================  
105   // cosmetics: marker style (see TMarker) and color (see TAttFill) for each method:
106   // MC:
107   Int_t markerStyleMC = 20; // full circle
108   Int_t markerColorMC = kRed;
109   // SP:
110   Int_t markerStyleSP = 3; // star
111   Int_t markerColorSP = kViolet-6;
112   // GFC{2}
113   Int_t markerStyleGFC2 = 21; // full square
114   Int_t markerColorGFC2 = kAzure-7;
115   // GFC{4}
116   Int_t markerStyleGFC4 = 20; // full circle
117   Int_t markerColorGFC4 = kAzure+3;
118   // GFC{6}
119   Int_t markerStyleGFC6 = 25; // open square
120   Int_t markerColorGFC6 = kAzure-7;
121   // GFC{8}
122   Int_t markerStyleGFC8 = 24; // open circle
123   Int_t markerColorGFC8 = kAzure+3;
124   // QC{2}
125   Int_t markerStyleQC2 = 21; // full square
126   Int_t markerColorQC2 = kOrange-7;
127   // QC{4}
128   Int_t markerStyleQC4 = 20; // full circle
129   Int_t markerColorQC4 = kOrange+3;
130   // QC{6}
131   Int_t markerStyleQC6 = 25; // open square
132   Int_t markerColorQC6 = kOrange-7;
133   // QC{8}
134   Int_t markerStyleQC8 = 24; // open circle
135   Int_t markerColorQC8 = kOrange+3;
136   // LYZ2
137   Int_t markerStyleLYZ2 = 22; // full triangle
138   Int_t markerColorLYZ2 = kYellow+3;
139   // LYZEP
140   Int_t markerStyleLYZEP = 26; // open triangle
141   Int_t markerColorLYZEP = kYellow+3; 
142   //==================================================================================
143
144
145   //==================================================================================  
146   // set here which result goes in which bin in the plot for integrated flow (no-name) 
147   // MC:
148   Int_t binMC = 1; 
149   // SP:
150   Int_t binSP = 2;
151   // GFC{2}
152   Int_t binGFC2 = 3; 
153   // GFC{4}
154   Int_t binGFC4 = 5; 
155   // GFC{6}
156   Int_t binGFC6 = 7; 
157   // GFC{8}
158   Int_t binGFC8 = 9; 
159   // QC{2}
160   Int_t binQC2 = 4; 
161   // QC{4}
162   Int_t binQC4 = 6; 
163   // QC{6}
164   Int_t binQC6 = 8; 
165   // QC{8}
166   Int_t binQC8 = 10; 
167   // FQD 
168   Int_t binFQD = 11; 
169   // LYZ1
170   Int_t binLYZ1 = 12; 
171   // LYZEP
172   Int_t binLYZEP = 13; 
173   //==================================================================================
174
175
176   //==================================================================================  
177   // set here which result goes in which bin in the plot for integrated flow (RP) 
178   // MC:
179   Int_t binMCRP = 1; 
180   // SP:
181   Int_t binSPRP = 2;
182   // GFC{2}
183   Int_t binGFC2RP = 3; 
184   // GFC{4}
185   Int_t binGFC4RP = 5; 
186   // GFC{6}
187   Int_t binGFC6RP = 7; 
188   // GFC{8}
189   Int_t binGFC8RP = 9; 
190   // QC{2}
191   Int_t binQC2RP = 4; 
192   // QC{4}
193   Int_t binQC4RP = 6; 
194   // QC{6}
195   Int_t binQC6RP = 8; 
196   // QC{8}
197   Int_t binQC8RP = 10; 
198   // FQD 
199   Int_t binFQDRP = 11; 
200   // LYZ2
201   Int_t binLYZ2RP = 12; 
202   // LYZEP
203   Int_t binLYZEPRP = 13; 
204   //==================================================================================
205
206
207   //==================================================================================  
208   // set here which result goes in which bin in the plot for integrated flow (POI) 
209   // MC:
210   Int_t binMCPOI = 1; 
211   // SP:
212   Int_t binSPPOI = 2;
213   // GFC{2}
214   Int_t binGFC2POI = 3; 
215   // GFC{4}
216   Int_t binGFC4POI = 5; 
217   // GFC{6}
218   Int_t binGFC6POI = 7; 
219   // GFC{8}
220   Int_t binGFC8POI = 9; 
221   // QC{2}
222   Int_t binQC2POI = 4; 
223   // QC{4}
224   Int_t binQC4POI = 6; 
225   // QC{6}
226   Int_t binQC6POI = 8; 
227   // QC{8}
228   Int_t binQC8POI = 10; 
229   // FQD 
230   Int_t binFQDPOI = 11; 
231   // LYZ2
232   Int_t binLYZ2POI = 12;  
233   // LYZEP
234   Int_t binLYZEPPOI = 13; 
235   //==================================================================================
236  
237                                         
238   //==================================================================================
239   //                         accessing output files
240   //==================================================================================
241   //open the output files:
242   TString inputFileNameMCEP = "outputMCEPanalysis";
243   TFile* fileMCEP = NULL;
244   fileMCEP = TFile::Open(((inputFileNameMCEP.Append(type)).Append(".root")).Data(), "READ"); 
245   
246   TString inputFileNameSP = "outputSPanalysis";
247   TFile* fileSP = NULL;
248   fileSP = TFile::Open(((inputFileNameSP.Append(type)).Append(".root")).Data(), "READ"); 
249   
250   TString inputFileNameLYZ1 = "outputLYZ1analysis";
251   TFile* fileLYZ1 = NULL;
252   fileLYZ1 = TFile::Open(((inputFileNameLYZ1.Append(type)).Append(".root")).Data(), "READ"); 
253   
254   TString inputFileNameLYZ2 = "outputLYZ2analysis";
255   TFile* fileLYZ2 = NULL;
256   fileLYZ2 = TFile::Open(((inputFileNameLYZ2.Append(type)).Append(".root")).Data(), "READ"); 
257   
258   TString inputFileNameLYZEP = "outputLYZEPanalysis";
259   TFile* fileLYZEP = NULL;
260   fileLYZEP = TFile::Open(((inputFileNameLYZEP.Append(type)).Append(".root")).Data(), "READ");
261   
262   TString inputFileNameFQD = "outputFQDanalysis";
263   TFile* fileFQD = NULL;
264   fileFQD = TFile::Open(((inputFileNameFQD.Append(type)).Append(".root")).Data(), "READ"); 
265   
266   TString inputFileNameGFC = "outputGFCanalysis";
267   TFile* fileGFC = NULL;
268   fileGFC = TFile::Open(((inputFileNameGFC.Append(type)).Append(".root")).Data(), "READ"); 
269   
270   TString inputFileNameQC = "outputQCanalysis";
271   TFile* fileQC = NULL;
272   fileQC = TFile::Open(((inputFileNameQC.Append(type)).Append(".root")).Data(), "READ"); 
273   //==================================================================================
274  
275  
276  
277  
278   //==================================================================================
279   //                                 cosmetics
280   //==================================================================================
281   //removing the title and stat. box from all histograms:
282   gStyle->SetOptTitle(0);
283   gStyle->SetOptStat(0);
284   
285   // plot for 'no-name' integrated flow:
286   // choosing the style and color of mesh for MC error bands
287   Int_t meshStyle = 1001;
288   Int_t meshColor = kGray;
289   
290   // marker style and color  
291   Int_t markerStyle = 21;
292   Int_t markerColor = kBlack;
293   
294   // plot for RP's integrated flow:
295   // choosing the style and color of mesh for MC error bands
296   Int_t meshStyleRP = 1001;
297   Int_t meshColorRP = kRed-10;
298   
299   // marker style and color  
300   Int_t markerStyleRP = 21;
301   Int_t markerColorRP = kRed-3;
302   
303   // plot for POI's integrated flow:
304   // choosing the style and color of mesh for MC error bands
305   Int_t meshStylePOI = 1001;
306   Int_t meshColorPOI = kBlue-10;
307   
308   // marker style and color  
309   Int_t markerStylePOI = 21;
310   Int_t markerColorPOI = kBlue-3;
311   
312   // choosing the style and color of mesh for MC error bands in the plots for diff. flow
313   // plot for differential flow (Pt,RP):
314   Int_t meshStyleDiffFlowPtRP = 1001;
315   Int_t meshColorDiffFlowPtRP = kRed-10;
316   
317   // plot for differential flow (Eta,RP):
318   Int_t meshStyleDiffFlowEtaRP = 1001;
319   Int_t meshColorDiffFlowEtaRP = kRed-10;
320   
321   // plot for differential flow (Pt,POI):
322   Int_t meshStyleDiffFlowPtPOI = 1001;
323   Int_t meshColorDiffFlowPtPOI = kRed-10;
324
325   // plot for differential flow (Eta,POI):
326   Int_t meshStyleDiffFlowEtaPOI = 1001;
327   Int_t meshColorDiffFlowEtaPOI = kRed-10;
328   //==================================================================================
329   
330   
331   
332   
333   //==================================================================================
334   //                             INTEGRATED FLOW (no-name, RP and POI)
335   //==================================================================================
336   // the number of different methods:
337   const Int_t nMethods=13;
338   
339   // booking the histogram for the integrated flow results from all methods:
340   TH1D* intFlowAll = new TH1D("intFlowAll","Integrated Flow",nMethods,0,nMethods);      
341   // intFlowAll->SetLabelSize(0.036,"X");
342   // intFlowAll->SetLabelSize(0.036,"Y");
343   intFlowAll->SetMarkerStyle(markerStyle);
344   intFlowAll->SetMarkerColor(markerColor);
345   (intFlowAll->GetXaxis())->SetBinLabel(binMC,"v_{2}{MC}");
346   (intFlowAll->GetXaxis())->SetBinLabel(binSP,"v_{2}{SP}");
347   (intFlowAll->GetXaxis())->SetBinLabel(binGFC2,"v_{2}{2,GFC}");
348   (intFlowAll->GetXaxis())->SetBinLabel(binQC2,"v_{2}{2,QC}");
349   (intFlowAll->GetXaxis())->SetBinLabel(binGFC4,"v_{2}{4,GFC}");
350   (intFlowAll->GetXaxis())->SetBinLabel(binQC4,"v_{2}{4,QC}");
351   (intFlowAll->GetXaxis())->SetBinLabel(binGFC6,"v_{2}{6,GFC}");
352   (intFlowAll->GetXaxis())->SetBinLabel(binQC6,"v_{2}{6,QC}");
353   (intFlowAll->GetXaxis())->SetBinLabel(binGFC8,"v_{2}{8,GFC}");
354   (intFlowAll->GetXaxis())->SetBinLabel(binQC8,"v_{2}{8,QC}");
355   (intFlowAll->GetXaxis())->SetBinLabel(binFQD,"v_{2}{FQD}");
356   (intFlowAll->GetXaxis())->SetBinLabel(binLYZ1,"v_{2}{LYZ}");
357   (intFlowAll->GetXaxis())->SetBinLabel(binLYZEP,"v_{2}{LYZEP}");
358   
359   // booking the graph to store flow values and errors from all methods:    
360   Double_t x[nMethods] = {0.};
361   for(Int_t i=0;i<nMethods;i++)
362   {
363    x[i]=i+0.5;
364   }
365   Double_t xError[nMethods] = {0.};
366   Double_t flowValue[nMethods] = {0.};
367   Double_t flowError[nMethods] = {0.};
368   Double_t flowValueRP[nMethods] = {0.};
369   Double_t flowErrorRP[nMethods] = {0.};
370   Double_t flowValuePOI[nMethods] = {0.};
371   Double_t flowErrorPOI[nMethods] = {0.};
372   
373   // accessing the results for integrated flow for each method:
374   // MCEP = Monte Carlo Event Plane
375   TList *pListMCEP = NULL;
376   AliFlowCommonHist *mcepCommonHist = NULL;
377   AliFlowCommonHistResults *mcepCommonHistRes = NULL; 
378   if(fileMCEP) {
379     fileMCEP->GetObject("cobjMCEP",pListMCEP); 
380     if(pListMCEP) {
381       mcepCommonHist = dynamic_cast<AliFlowCommonHist*> (pListMCEP->FindObject("AliFlowCommonHistMCEP"));
382       mcepCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListMCEP->FindObject("AliFlowCommonHistResultsMCEP"));
383       if(mcepCommonHistRes) {
384         flowValue[binMC-1] = (mcepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
385         flowError[binMC-1] = (mcepCommonHistRes->GetHistIntFlow())->GetBinError(1);
386         flowValueRP[binMCRP-1] = (mcepCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
387         flowErrorRP[binMCRP-1] = (mcepCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
388         flowValuePOI[binMCPOI-1] = (mcepCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
389         flowErrorPOI[binMCPOI-1] = (mcepCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
390       }
391     }
392   }
393   
394   // SP = Scalar Product
395   TList *pListSP = NULL;
396   AliFlowCommonHist *spCommonHist = NULL;
397   AliFlowCommonHistResults *spCommonHistRes = NULL; 
398   if(fileSP) {
399     fileSP->GetObject("cobjSP",pListSP); 
400     if(pListSP) {
401       spCommonHist = dynamic_cast<AliFlowCommonHist*> (pListSP->FindObject("AliFlowCommonHistSP"));
402       spCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListSP->FindObject("AliFlowCommonHistResultsSP"));
403       if(spCommonHistRes) {
404         flowValue[binSP-1] = (spCommonHistRes->GetHistIntFlow())->GetBinContent(1);
405         flowError[binSP-1] = (spCommonHistRes->GetHistIntFlow())->GetBinError(1);
406         flowValueRP[binSPRP-1] = (spCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
407         flowErrorRP[binSPRP-1] = (spCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
408         flowValuePOI[binSPPOI-1] = (spCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
409         flowErrorPOI[binSPPOI-1] = (spCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
410       }
411     }
412   }
413   
414   // LYZ1 = Lee-Yang Zeros (1st run) is used to get only 'no-name' integrated flow
415   TList *pListLYZ1 = NULL;
416   AliFlowCommonHist *lyz1CommonHist = NULL;
417   AliFlowCommonHistResults *lyz1CommonHistRes = NULL; 
418   if(fileLYZ1) {
419     fileLYZ1->GetObject("cobjLYZ1",pListLYZ1); 
420     if(pListLYZ1) {
421       lyz1CommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ1->FindObject("AliFlowCommonHistLYZ1"));
422       lyz1CommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ1->FindObject("AliFlowCommonHistResultsLYZ1"));
423       if(lyz1CommonHistRes) {
424         flowValue[binLYZ1-1] = (lyz1CommonHistRes->GetHistIntFlow())->GetBinContent(1);
425         flowError[binLYZ1-1] = (lyz1CommonHistRes->GetHistIntFlow())->GetBinError(1);
426       }
427     }
428   }
429   
430   // LYZ2 = Lee-Yang Zeros (2nd run) is used to get RP's and POI's integrated flow
431   TList *pListLYZ2 = NULL;
432   AliFlowCommonHist *lyz2CommonHist = NULL;
433   AliFlowCommonHistResults *lyz2CommonHistRes = NULL; 
434   if(fileLYZ2) {
435     fileLYZ2->GetObject("cobjLYZ2",pListLYZ2); 
436     if(pListLYZ2) {
437       lyz2CommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZ2->FindObject("AliFlowCommonHistLYZ2"));
438       lyz2CommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZ2->FindObject("AliFlowCommonHistResultsLYZ2"));
439       if(lyz2CommonHistRes) {
440         flowValueRP[binLYZ2RP-1] = (lyz2CommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
441         flowErrorRP[binLYZ2RP-1] = (lyz2CommonHistRes->GetHistIntFlowRP())->GetBinError(1);
442         flowValuePOI[binLYZ2POI-1] = (lyz2CommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
443         flowErrorPOI[binLYZ2POI-1] = (lyz2CommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
444       }
445     }
446   }
447   
448   // LYZEP = Lee-Yang Zeros Event Plane
449   TList *pListLYZEP = NULL;
450   AliFlowCommonHist *lyzepCommonHist = NULL;
451   AliFlowCommonHistResults *lyzepCommonHistRes = NULL; 
452   if(fileLYZEP) {
453     fileLYZEP->GetObject("cobjLYZEP",pListLYZEP); 
454     if(pListLYZEP) {
455       lyzepCommonHist = dynamic_cast<AliFlowCommonHist*> (pListLYZEP->FindObject("AliFlowCommonHistLYZEP"));
456       lyzepCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListLYZEP->FindObject("AliFlowCommonHistResultsLYZEP"));
457       if(lyzepCommonHistRes) {
458         flowValue[binLYZEP-1] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinContent(1);
459         flowError[binLYZEP-1] = (lyzepCommonHistRes->GetHistIntFlow())->GetBinError(1);
460         flowValueRP[binLYZEPRP-1] = (lyzepCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
461         flowErrorRP[binLYZEPRP-1] = (lyzepCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
462         flowValuePOI[binLYZEPPOI-1] = (lyzepCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
463         flowErrorPOI[binLYZEPPOI-1] = (lyzepCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
464       }
465     }
466   }
467  
468   // FQD = Fitting q-distribution
469   TList *pListFQD = NULL;
470   AliFlowCommonHist *fqdCommonHist = NULL;
471   AliFlowCommonHistResults *fqdCommonHistRes = NULL; 
472   if(fileFQD) {
473     fileFQD->GetObject("cobjFQD",pListFQD); 
474     if(pListFQD) {
475       fqdCommonHist = dynamic_cast<AliFlowCommonHist*> (pListFQD->FindObject("AliFlowCommonHistFQD"));
476       fqdCommonHistRes = dynamic_cast<AliFlowCommonHistResults*> (pListFQD->FindObject("AliFlowCommonHistResultsFQD"));
477       if(fqdCommonHistRes) {
478         flowValue[binFQD-1] = (fqdCommonHistRes->GetHistIntFlow())->GetBinContent(1);
479         flowError[binFQD-1] = (fqdCommonHistRes->GetHistIntFlow())->GetBinError(1);
480         flowValueRP[binFQDRP-1] = (fqdCommonHistRes->GetHistIntFlowRP())->GetBinContent(1);
481         flowErrorRP[binFQDRP-1] = (fqdCommonHistRes->GetHistIntFlowRP())->GetBinError(1);
482         flowValuePOI[binFQDPOI-1] = (fqdCommonHistRes->GetHistIntFlowPOI())->GetBinContent(1);
483         flowErrorPOI[binFQDPOI-1] = (fqdCommonHistRes->GetHistIntFlowPOI())->GetBinError(1);
484       }
485     }
486   }
487  
488   // GFC = Generating Function Cumulants
489   TList *pListGFC = NULL;
490   AliFlowCommonHist *gfcCommonHist = NULL;
491   AliFlowCommonHistResults *gfcCommonHistRes2 = NULL; 
492   AliFlowCommonHistResults *gfcCommonHistRes4 = NULL; 
493   AliFlowCommonHistResults *gfcCommonHistRes6 = NULL; 
494   AliFlowCommonHistResults *gfcCommonHistRes8 = NULL; 
495   if(fileGFC) {
496     fileGFC->GetObject("cobjGFC",pListGFC);
497     if(pListGFC) {
498       gfcCommonHist = dynamic_cast<AliFlowCommonHist*> (pListGFC->FindObject("AliFlowCommonHistGFC"));
499       gfcCommonHistRes2 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults2ndOrderGFC"));
500       if(gfcCommonHistRes2) {
501         flowValue[binGFC2-1] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
502         flowError[binGFC2-1] = (gfcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
503         flowValueRP[binGFC2RP-1] = (gfcCommonHistRes2->GetHistIntFlowRP())->GetBinContent(1);
504         flowErrorRP[binGFC2RP-1] = (gfcCommonHistRes2->GetHistIntFlowRP())->GetBinError(1);
505         flowValuePOI[binGFC2POI-1] = (gfcCommonHistRes2->GetHistIntFlowPOI())->GetBinContent(1);
506         flowErrorPOI[binGFC2POI-1] = (gfcCommonHistRes2->GetHistIntFlowPOI())->GetBinError(1);
507       }
508       gfcCommonHistRes4 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults4thOrderGFC"));
509       if(gfcCommonHistRes4) {
510         flowValue[binGFC4-1] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
511         flowError[binGFC4-1] = (gfcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
512         flowValueRP[binGFC4RP-1] = (gfcCommonHistRes4->GetHistIntFlowRP())->GetBinContent(1);
513         flowErrorRP[binGFC4RP-1] = (gfcCommonHistRes4->GetHistIntFlowRP())->GetBinError(1);
514         flowValuePOI[binGFC4POI-1] = (gfcCommonHistRes4->GetHistIntFlowPOI())->GetBinContent(1);
515         flowErrorPOI[binGFC4POI-1] = (gfcCommonHistRes4->GetHistIntFlowPOI())->GetBinError(1);
516       }
517       gfcCommonHistRes6 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults6thOrderGFC"));
518       if(gfcCommonHistRes6) {
519         flowValue[binGFC6-1] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
520         flowError[binGFC6-1] = (gfcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
521         flowValueRP[binGFC6RP-1] = (gfcCommonHistRes6->GetHistIntFlowRP())->GetBinContent(1);
522         flowErrorRP[binGFC6RP-1] = (gfcCommonHistRes6->GetHistIntFlowRP())->GetBinError(1);
523         flowValuePOI[binGFC6POI-1] = (gfcCommonHistRes6->GetHistIntFlowPOI())->GetBinContent(1);
524         flowErrorPOI[binGFC6POI-1] = (gfcCommonHistRes6->GetHistIntFlowPOI())->GetBinError(1);
525       }
526       gfcCommonHistRes8 = dynamic_cast<AliFlowCommonHistResults*> (pListGFC->FindObject("AliFlowCommonHistResults8thOrderGFC"));
527       if(gfcCommonHistRes8)  {
528         flowValue[binGFC8-1] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
529         flowError[binGFC8-1] = (gfcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
530         flowValueRP[binGFC8RP-1] = (gfcCommonHistRes8->GetHistIntFlowRP())->GetBinContent(1);
531         flowErrorRP[binGFC8RP-1] = (gfcCommonHistRes8->GetHistIntFlowRP())->GetBinError(1);
532         flowValuePOI[binGFC8POI-1] = (gfcCommonHistRes8->GetHistIntFlowPOI())->GetBinContent(1);
533         flowErrorPOI[binGFC8POI-1] = (gfcCommonHistRes8->GetHistIntFlowPOI())->GetBinError(1);
534       }
535     }
536   }
537  
538   //QC = Q-cumulants
539   TList *pListQC = NULL;
540   AliFlowCommonHist *qcCommonHist2 = NULL; 
541   AliFlowCommonHist *qcCommonHist4 = NULL; 
542   AliFlowCommonHist *qcCommonHist6 = NULL; 
543   AliFlowCommonHist *qcCommonHist8 = NULL; 
544   AliFlowCommonHistResults *qcCommonHistRes2 = NULL; 
545   AliFlowCommonHistResults *qcCommonHistRes4 = NULL; 
546   AliFlowCommonHistResults *qcCommonHistRes6 = NULL; 
547   AliFlowCommonHistResults *qcCommonHistRes8 = NULL; 
548   
549   if(fileQC) {
550     fileQC->GetObject("cobjQC",pListQC);
551     if(pListQC) {
552       qcCommonHist2 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist2ndOrderQC"));
553       qcCommonHistRes2 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults2ndOrderQC"));
554       if(qcCommonHistRes2)  {
555         flowValue[binQC2-1] = (qcCommonHistRes2->GetHistIntFlow())->GetBinContent(1);
556         //flowError[binQC2-1] = (qcCommonHistRes2->GetHistIntFlow())->GetBinError(1);
557         flowValueRP[binQC2RP-1] = (qcCommonHistRes2->GetHistIntFlowRP())->GetBinContent(1);
558         //flowErrorRP[binQC2RP-1] = (qcCommonHistRes2->GetHistIntFlowRP())->GetBinError(1);
559         flowValuePOI[binQC2POI-1] = (qcCommonHistRes2->GetHistIntFlowPOI())->GetBinContent(1);
560         //flowErrorPOI[binQC2POI-1] = (qcCommonHistRes2->GetHistIntFlowPOI())->GetBinError(1);
561       }
562       qcCommonHist4 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist4thOrderQC"));
563       qcCommonHistRes4 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults4thOrderQC"));
564       if(qcCommonHistRes4) {
565         flowValue[binQC4-1] = (qcCommonHistRes4->GetHistIntFlow())->GetBinContent(1);
566         //flowError[binQC4-1] = (qcCommonHistRes4->GetHistIntFlow())->GetBinError(1);
567         flowValueRP[binQC4RP-1] = (qcCommonHistRes4->GetHistIntFlowRP())->GetBinContent(1);
568         //flowErrorRP[binQC4RP-1] = (qcCommonHistRes4->GetHistIntFlowRP())->GetBinError(1);
569         flowValuePOI[binQC4POI-1] = (qcCommonHistRes4->GetHistIntFlowPOI())->GetBinContent(1);
570         //flowErrorPOI[binQC4POI-1] = (qcCommonHistRes4->GetHistIntFlowPOI())->GetBinError(1);
571       }
572       qcCommonHist6 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist6thOrderQC"));
573       qcCommonHistRes6 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults6thOrderQC"));
574       if(qcCommonHistRes6) {
575         flowValue[binQC6-1] = (qcCommonHistRes6->GetHistIntFlow())->GetBinContent(1);
576         //flowError[binQC6-1] = (qcCommonHistRes6->GetHistIntFlow())->GetBinError(1);
577         flowValueRP[binQC6RP-1] = (qcCommonHistRes6->GetHistIntFlowRP())->GetBinContent(1);
578         //flowErrorRP[binQC6RP-1] = (qcCommonHistRes6->GetHistIntFlowRP())->GetBinError(1);
579         flowValuePOI[binQC6POI-1] = (qcCommonHistRes6->GetHistIntFlowPOI())->GetBinContent(1);
580         //flowErrorPOI[binQC6POI-1] = (qcCommonHistRes6->GetHistIntFlowPOI())->GetBinError(1);
581       }
582       qcCommonHist8 = dynamic_cast<AliFlowCommonHist*> (pListQC->FindObject("AliFlowCommonHist8thOrderQC"));
583       qcCommonHistRes8 = dynamic_cast<AliFlowCommonHistResults*> (pListQC->FindObject("AliFlowCommonHistResults8thOrderQC"));
584       if(qcCommonHistRes8)  {
585         flowValue[binQC8-1] = (qcCommonHistRes8->GetHistIntFlow())->GetBinContent(1);
586         //flowError[binQC8-1] = (qcCommonHistRes8->GetHistIntFlow())->GetBinError(1);
587         flowValueRP[binQC8RP-1] = (qcCommonHistRes8->GetHistIntFlowRP())->GetBinContent(1);
588         //flowErrorRP[binQC8RP-1] = (qcCommonHistRes8->GetHistIntFlowRP())->GetBinError(1);
589         flowValuePOI[binQC8POI-1] = (qcCommonHistRes8->GetHistIntFlowPOI())->GetBinContent(1);
590         //flowErrorPOI[binQC8POI-1] = (qcCommonHistRes8->GetHistIntFlowPOI())->GetBinError(1);
591       }
592     }
593   }        
594   
595   // ranges on y-axis for 'no-name' plot:
596   Double_t dMax=flowValue[binMC-1]+flowError[binMC-1];
597   Double_t dMin=flowValue[binMC-1]-flowError[binMC-1];
598   
599   for(Int_t i=1;i<nMethods;i++) {
600     if(!(flowValue[i]==0. && flowError[i]==0.)) {
601       if(dMax<flowValue[i]+flowError[i]) dMax=flowValue[i]+flowError[i];
602       if(dMin>flowValue[i]-flowError[i]) dMin=flowValue[i]-flowError[i];
603     } 
604   }  
605   
606   // ranges on y-axis for RP plot:
607   Double_t dMaxRP=flowValueRP[binMCRP-1]+flowErrorRP[binMCRP-1];
608   Double_t dMinRP=flowValueRP[binMCRP-1]-flowErrorRP[binMCRP-1];
609   
610   for(Int_t i=1;i<nMethods;i++) {
611     if(!(flowValueRP[i]==0. && flowErrorRP[i]==0.)) {
612       if(dMaxRP<flowValueRP[i]+flowErrorRP[i]) dMaxRP=flowValueRP[i]+flowErrorRP[i];
613       if(dMinRP>flowValueRP[i]-flowErrorRP[i]) dMinRP=flowValueRP[i]-flowErrorRP[i];
614     } 
615   }  
616
617   // ranges on y-axis for POI plot:
618   Double_t dMaxPOI=flowValuePOI[binMCPOI-1]+flowErrorPOI[binMCPOI-1];
619   Double_t dMinPOI=flowValuePOI[binMCPOI-1]-flowErrorPOI[binMCPOI-1];
620   
621   for(Int_t i=1;i<nMethods;i++) {
622     if(!(flowValuePOI[i]==0. && flowErrorPOI[i]==0.)) {
623       if(dMaxPOI<flowValuePOI[i]+flowErrorPOI[i]) dMaxPOI=flowValuePOI[i]+flowErrorPOI[i];
624       if(dMinPOI>flowValuePOI[i]-flowErrorPOI[i]) dMinPOI=flowValuePOI[i]-flowErrorPOI[i];
625     } 
626   }  
627  
628   // no-name:
629   TGraph* flowResults = new TGraphErrors(nMethods, x, flowValue, xError, flowError);
630   flowResults->SetMarkerStyle(markerStyle);
631   flowResults->SetMarkerColor(markerColor);
632   
633   // RP:
634   TGraph* flowResultsRP = new TGraphErrors(nMethods, x, flowValueRP, xError, flowErrorRP); 
635   flowResultsRP->SetMarkerStyle(markerStyleRP);
636   flowResultsRP->SetMarkerColor(markerColorRP);
637   
638   // POI:
639   TGraph* flowResultsPOI = new TGraphErrors(nMethods, x, flowValuePOI, xError, flowErrorPOI);
640   flowResultsPOI->SetMarkerStyle(markerStylePOI);
641   flowResultsPOI->SetMarkerColor(markerColorPOI);
642   
643   //-----------------------------------------------------------------------------------
644   
645   //----------------------------------------------------------------------------------
646   // cosmetics: mesh for MC error bands (integrated flow)
647   TGraph* pMesh = NULL;
648   TGraph* pMeshRP = NULL;
649   TGraph* pMeshPOI = NULL;
650   
651   if(intFlowAll && mcepCommonHistRes) {
652     Int_t nPts       = nMethods;
653     Double_t valueMC = flowValue[binMC-1];
654     Double_t errorMC = flowError[binMC-1]; 
655     Double_t valueMCRP = flowValueRP[binMCRP-1];
656     Double_t errorMCRP = flowErrorRP[binMCRP-1]; 
657     Double_t valueMCPOI = flowValuePOI[binMCPOI-1];
658     Double_t errorMCPOI = flowErrorPOI[binMCPOI-1]; 
659     
660     pMesh = new TGraph(nPts);
661     pMeshRP = new TGraph(nPts);
662     pMeshPOI = new TGraph(nPts);
663     
664     // no-name:
665     pMesh->SetPoint(1,0,valueMC+errorMC);
666     pMesh->SetPoint(2,nPts+1,valueMC+errorMC);
667     pMesh->SetPoint(3,nPts+1,valueMC-errorMC);
668     pMesh->SetPoint(4,0,valueMC-errorMC);
669     pMesh->SetPoint(5,0,valueMC+errorMC);    
670     pMesh->SetFillStyle(meshStyle);
671     pMesh->SetFillColor(meshColor);
672      
673     // RP:
674     pMeshRP->SetPoint(1,0,valueMCRP+errorMCRP);
675     pMeshRP->SetPoint(2,nPts+1,valueMCRP+errorMCRP);
676     pMeshRP->SetPoint(3,nPts+1,valueMCRP-errorMCRP);
677     pMeshRP->SetPoint(4,0,valueMCRP-errorMCRP);
678     pMeshRP->SetPoint(5,0,valueMCRP+errorMCRP);   
679     pMeshRP->SetFillStyle(meshStyleRP);
680     pMeshRP->SetFillColor(meshColorRP);
681     
682     // POI:
683     pMeshPOI->SetPoint(1,0,valueMCPOI+errorMCPOI);
684     pMeshPOI->SetPoint(2,nPts+1,valueMCPOI+errorMCPOI);
685     pMeshPOI->SetPoint(3,nPts+1,valueMCPOI-errorMCPOI);
686     pMeshPOI->SetPoint(4,0,valueMCPOI-errorMCPOI);
687     pMeshPOI->SetPoint(5,0,valueMCPOI+errorMCPOI);    
688     pMeshPOI->SetFillStyle(meshStylePOI);
689     pMeshPOI->SetFillColor(meshColorPOI);     
690   }
691   //---------------------------------------------------------------------------------- 
692  
693   
694   //----------------------------------------------------------------------------------
695   //cosmetics: text (integrated flow) 
696   //default text:
697   TPaveText *textDefault = new TPaveText(0.05,0.77,0.95,0.90,"NDC");
698   textDefault->SetTextFont(72);
699   textDefault->SetTextSize(0.08);
700   
701   TString *entryDefaultAvM = new TString("Average Multiplicity");
702   TString *entryDefaultAnd = new TString("and"); 
703   TString *entryDefaultNumOfEvts = new TString("Number of Events:");
704   
705   textDefault->AddText(entryDefaultAvM->Data());
706   textDefault->AddText(entryDefaultAnd->Data());
707   textDefault->AddText(entryDefaultNumOfEvts->Data());
708   
709   // results (no-name):
710   TPaveText *textResults = new TPaveText(0.05,0.12,0.95,0.70,"NDC");
711   textResults->SetTextFont(72);
712   textResults->SetTextSize(0.06);
713   
714   // results (RP):
715   TPaveText *textResultsRP = new TPaveText(0.05,0.12,0.95,0.70,"NDC");
716   textResultsRP->SetTextFont(72);
717   textResultsRP->SetTextSize(0.06);
718   
719   // results (POI):
720   TPaveText *textResultsPOI = new TPaveText(0.05,0.12,0.95,0.70,"NDC");
721   textResultsPOI->SetTextFont(72);
722   textResultsPOI->SetTextSize(0.06);
723   
724   // no-name:              
725   TString *entryMC    = new TString("MC ...... ");
726   TString *entrySP    = new TString("SP ...... "); 
727   TString *entryGFC   = new TString("GFC ..... "); 
728   TString *entryQC2   = new TString("QC{2} ... ");
729   TString *entryQC4   = new TString("QC{4} ... ");
730   TString *entryQC6   = new TString("QC{6} ... ");
731   TString *entryQC8   = new TString("QC{8} ... ");
732   TString *entryFQD   = new TString("FQD ..... "); 
733   TString *entryLYZ1  = new TString("LYZ ..... "); 
734   TString *entryLYZEP = new TString("LYZEP ... "); 
735   
736   // RP: 
737   TString *entryMCRP    = new TString("MC ...... ");
738   TString *entrySPRP    = new TString("SP ...... ");
739   TString *entryGFCRP   = new TString("GFC ..... "); 
740   TString *entryQC2RP   = new TString("QC{2} ... ");
741   TString *entryQC4RP   = new TString("QC{4} ... ");
742   TString *entryQC6RP   = new TString("QC{6} ... ");
743   TString *entryQC8RP   = new TString("QC{8} ... ");
744   TString *entryFQDRP   = new TString("FQD ..... "); 
745   TString *entryLYZ1RP  = new TString("LYZ ..... "); 
746   TString *entryLYZEPRP = new TString("LYZEP ... "); 
747
748   // POI: 
749   TString *entryMCPOI    = new TString("MC ...... ");
750   TString *entrySPPOI    = new TString("SP ...... ");
751   TString *entryGFCPOI   = new TString("GFC ..... "); 
752   TString *entryQC2POI   = new TString("QC{2} ... ");
753   TString *entryQC4POI   = new TString("QC{4} ... ");
754   TString *entryQC6POI   = new TString("QC{6} ... ");
755   TString *entryQC8POI   = new TString("QC{8} ... ");
756   TString *entryFQDPOI   = new TString("FQD ..... "); 
757   TString *entryLYZ1POI  = new TString("LYZ ..... "); 
758   TString *entryLYZEPPOI = new TString("LYZEP ... "); 
759   
760   // no-name:
761   Double_t avMultMC=0.;
762   Long_t nEvtsMC=0;
763   Double_t avMultSP=0.;
764   Long_t nEvtsSP=0;
765   Double_t avMultGFC=0.;
766   Long_t nEvtsGFC=0;
767   Double_t avMultQC2=0., avMultQC4=0., avMultQC6=0., avMultQC8=0.;
768   Long_t nEvtsQC2=0, nEvtsQC4=0, nEvtsQC6=0, nEvtsQC8=0;
769   Double_t avMultFQD=0.;
770   Long_t nEvtsFQD=0;
771   Double_t avMultLYZ1=0.;
772   Long_t nEvtsLYZ1=0;
773   Double_t avMultLYZEP=0.;
774   Long_t nEvtsLYZEP=0;
775   
776   // RP:
777   Double_t avMultMCRP=0.;
778   Long_t nEvtsMCRP=0;
779   Double_t avMultSPRP=0.;
780   Long_t nEvtsSPRP=0;
781   Double_t avMultGFCRP=0.;
782   Long_t nEvtsGFCRP=0;
783   Double_t avMultQC2RP=0., avMultQC4RP=0., avMultQC6RP=0., avMultQC8RP=0.;
784   Long_t nEvtsQC2RP=0, nEvtsQC4RP=0, nEvtsQC6RP=0, nEvtsQC8RP=0;
785   Double_t avMultFQDRP=0.;
786   Long_t nEvtsFQDRP=0;
787   Double_t avMultLYZ1RP=0.;
788   Long_t nEvtsLYZ1RP=0;
789   Double_t avMultLYZEPRP=0.;
790   Long_t nEvtsLYZEPRP=0;
791   
792   // POI:
793   Double_t avMultMCPOI=0.;
794   Long_t nEvtsMCPOI=0;
795   Double_t avMultSPPOI=0.;
796   Long_t nEvtsSPPOI=0;
797   Double_t avMultGFCPOI=0.;
798   Long_t nEvtsGFCPOI=0;
799   Double_t avMultQC2POI=0., avMultQC4POI=0., avMultQC6POI=0., avMultQC8POI=0.;
800   Long_t nEvtsQC2POI=0, nEvtsQC4POI=0, nEvtsQC6POI=0, nEvtsQC8POI=0;
801   Double_t avMultFQDPOI=0.;
802   Long_t nEvtsFQDPOI=0;
803   Double_t avMultLYZ1POI=0.;
804   Long_t nEvtsLYZ1POI=0;
805   Double_t avMultLYZEPPOI=0.;
806   Long_t nEvtsLYZEPPOI=0;
807   
808   // MC:  
809   if(mcepCommonHist) {
810     avMultMC = (mcepCommonHist->GetHistMultRP())->GetMean();
811     nEvtsMC  = (mcepCommonHist->GetHistMultRP())->GetEntries();
812     avMultMCRP = (mcepCommonHist->GetHistMultRP())->GetMean();
813     nEvtsMCRP  = (mcepCommonHist->GetHistMultRP())->GetEntries();
814     avMultMCPOI = (mcepCommonHist->GetHistMultPOI())->GetMean();
815     nEvtsMCPOI  = (mcepCommonHist->GetHistMultPOI())->GetEntries();
816   }
817   
818   if(entryMC) {   
819     entryMC->Append("M = ");
820     (*entryMC)+=(Long_t)avMultMC;
821     entryMC->Append(", N = ");
822     (*entryMC)+=(Long_t)nEvtsMC;
823   }
824  
825   if(entryMCRP) {   
826     entryMCRP->Append("M = ");
827     (*entryMCRP)+=(Long_t)avMultMCRP;
828     entryMCRP->Append(", N = ");
829     (*entryMCRP)+=(Long_t)nEvtsMCRP;
830   }
831   
832   if(entryMCPOI) {   
833    entryMCPOI->Append("M = ");
834    (*entryMCPOI)+=(Long_t)avMultMCPOI;
835    entryMCPOI->Append(", N = ");
836    (*entryMCPOI)+=(Long_t)nEvtsMCPOI;
837   }
838   
839   // SP:  
840   if(spCommonHist) {
841     avMultSP = (spCommonHist->GetHistMultRP())->GetMean();
842     nEvtsSP  = (spCommonHist->GetHistMultRP())->GetEntries();
843     avMultSPRP = (spCommonHist->GetHistMultRP())->GetMean();
844     nEvtsSPRP  = (spCommonHist->GetHistMultRP())->GetEntries();
845     avMultSPPOI = (spCommonHist->GetHistMultPOI())->GetMean();
846     nEvtsSPPOI  = (spCommonHist->GetHistMultPOI())->GetEntries();
847   }
848   
849   if(entrySP) {   
850     entrySP->Append("M = ");
851     (*entrySP)+=(Long_t)avMultSP;
852     entrySP->Append(", N = ");
853     (*entrySP)+=(Long_t)nEvtsSP;
854   }
855  
856   if(entrySPRP) {   
857     entrySPRP->Append("M = ");
858     (*entrySPRP)+=(Long_t)avMultSPRP;
859     entrySPRP->Append(", N = ");
860     (*entrySPRP)+=(Long_t)nEvtsSPRP;
861   }
862   
863   if(entrySPPOI) {   
864    entrySPPOI->Append("M = ");
865    (*entrySPPOI)+=(Long_t)avMultSPPOI;
866    entrySPPOI->Append(", N = ");
867    (*entrySPPOI)+=(Long_t)nEvtsSPPOI;
868   }
869   
870  // GFC:
871  if(gfcCommonHist) {
872    avMultGFC = (gfcCommonHist->GetHistMultRP())->GetMean();
873    nEvtsGFC  = (gfcCommonHist->GetHistMultRP())->GetEntries();
874    avMultGFCRP = (gfcCommonHist->GetHistMultRP())->GetMean();
875    nEvtsGFCRP  = (gfcCommonHist->GetHistMultRP())->GetEntries();
876    avMultGFCPOI = (gfcCommonHist->GetHistMultPOI())->GetMean();
877    nEvtsGFCPOI  = (gfcCommonHist->GetHistMultPOI())->GetEntries();
878  }
879  
880  if(entryGFC) { 
881    entryGFC->Append("M = ");
882    (*entryGFC)+=(Long_t)avMultGFC;
883    entryGFC->Append(", N = ");
884    (*entryGFC)+=(Long_t)nEvtsGFC;
885  }
886  
887  if(entryGFCRP) { 
888    entryGFCRP->Append("M = ");
889    (*entryGFCRP)+=(Long_t)avMultGFCRP;
890    entryGFCRP->Append(", N = ");
891    (*entryGFCRP)+=(Long_t)nEvtsGFCRP;
892  }
893  if(entryGFCPOI) { 
894    entryGFCPOI->Append("M = ");
895    (*entryGFCPOI)+=(Long_t)avMultGFCPOI;
896    entryGFCPOI->Append(", N = ");
897    (*entryGFCPOI)+=(Long_t)nEvtsGFCPOI;
898  }
899  
900  // QC:
901  if(qcCommonHist2) {
902    avMultQC2 = (qcCommonHist2->GetHistMultRP())->GetMean();
903    nEvtsQC2  = (qcCommonHist2->GetHistMultRP())->GetEntries();
904    avMultQC2RP = (qcCommonHist2->GetHistMultRP())->GetMean();
905    nEvtsQC2RP  = (qcCommonHist2->GetHistMultRP())->GetEntries();
906    avMultQC2POI = (qcCommonHist2->GetHistMultPOI())->GetMean();
907    nEvtsQC2POI  = (qcCommonHist2->GetHistMultPOI())->GetEntries();
908  }
909  
910  if(entryQC2)
911  { 
912   entryQC2->Append("M = ");
913   (*entryQC2)+=(Long_t)avMultQC2;
914   entryQC2->Append(", N = ");
915   (*entryQC2)+=(Long_t)nEvtsQC2;
916  }
917  
918  if(entryQC2RP)
919  { 
920   entryQC2RP->Append("M = ");
921   (*entryQC2RP)+=(Long_t)avMultQC2RP;
922   entryQC2RP->Append(", N = ");
923   (*entryQC2RP)+=(Long_t)nEvtsQC2RP;
924  } 
925  
926  if(entryQC2POI)
927  { 
928   entryQC2POI->Append("M = ");
929   (*entryQC2POI)+=(Long_t)avMultQC2POI;
930   entryQC2POI->Append(", N = ");
931   (*entryQC2POI)+=(Long_t)nEvtsQC2POI;
932  } 
933
934  if(qcCommonHist4)
935  {
936   avMultQC4 = (qcCommonHist4->GetHistMultRP())->GetMean();
937   nEvtsQC4  = (qcCommonHist4->GetHistMultRP())->GetEntries();
938   avMultQC4RP = (qcCommonHist4->GetHistMultRP())->GetMean();
939   nEvtsQC4RP  = (qcCommonHist4->GetHistMultRP())->GetEntries();
940   avMultQC4POI = (qcCommonHist4->GetHistMultPOI())->GetMean();
941   nEvtsQC4POI  = (qcCommonHist4->GetHistMultPOI())->GetEntries();
942  }
943  
944  if(entryQC4)
945  {
946   entryQC4->Append("M = ");
947   (*entryQC4)+=(Long_t)avMultQC4;
948   entryQC4->Append(", N = ");
949   (*entryQC4)+=(Long_t)nEvtsQC4;
950  }
951  
952  if(entryQC4RP)
953  {
954   entryQC4RP->Append("M = ");
955   (*entryQC4RP)+=(Long_t)avMultQC4RP;
956   entryQC4RP->Append(", N = ");
957   (*entryQC4RP)+=(Long_t)nEvtsQC4RP;
958  }
959  
960  if(entryQC4POI)
961  {
962   entryQC4POI->Append("M = ");
963   (*entryQC4POI)+=(Long_t)avMultQC4POI;
964   entryQC4POI->Append(", N = ");
965   (*entryQC4POI)+=(Long_t)nEvtsQC4POI;
966  }
967    
968  if(qcCommonHist6)
969  {
970   avMultQC6 = (qcCommonHist6->GetHistMultRP())->GetMean();
971   nEvtsQC6  = (qcCommonHist6->GetHistMultRP())->GetEntries();
972   avMultQC6RP = (qcCommonHist6->GetHistMultRP())->GetMean();
973   nEvtsQC6RP  = (qcCommonHist6->GetHistMultRP())->GetEntries();
974   avMultQC6POI = (qcCommonHist6->GetHistMultPOI())->GetMean();
975   nEvtsQC6POI  = (qcCommonHist6->GetHistMultPOI())->GetEntries();
976  }
977  
978  if(entryQC6)
979  {  
980   entryQC6->Append("M = ");
981   (*entryQC6)+=(Long_t)avMultQC6;
982   entryQC6->Append(", N = ");
983   (*entryQC6)+=(Long_t)nEvtsQC6;
984  }
985  
986  if(entryQC6RP)
987  {  
988   entryQC6RP->Append("M = ");
989   (*entryQC6RP)+=(Long_t)avMultQC6RP;
990   entryQC6RP->Append(", N = ");
991   (*entryQC6RP)+=(Long_t)nEvtsQC6RP;
992  }
993  
994  if(entryQC6POI)
995  {  
996   entryQC6POI->Append("M = ");
997   (*entryQC6POI)+=(Long_t)avMultQC6POI;
998   entryQC6POI->Append(", N = ");
999   (*entryQC6POI)+=(Long_t)nEvtsQC6POI;
1000  }
1001    
1002  if(qcCommonHist8)
1003  {
1004   avMultQC8 = (qcCommonHist8->GetHistMultRP())->GetMean();
1005   nEvtsQC8  = (qcCommonHist8->GetHistMultRP())->GetEntries();
1006   avMultQC8RP = (qcCommonHist8->GetHistMultRP())->GetMean();
1007   nEvtsQC8RP  = (qcCommonHist8->GetHistMultRP())->GetEntries();
1008   avMultQC8POI = (qcCommonHist8->GetHistMultPOI())->GetMean();
1009   nEvtsQC8POI  = (qcCommonHist8->GetHistMultPOI())->GetEntries();    
1010  }
1011   
1012  if(entryQC8)
1013  {
1014   entryQC8->Append("M = ");
1015   (*entryQC8)+=(Long_t)avMultQC8;
1016   entryQC8->Append(", N = ");
1017   (*entryQC8)+=(Long_t)nEvtsQC8;
1018  }
1019  
1020  if(entryQC8RP)
1021  {
1022   entryQC8RP->Append("M = ");
1023   (*entryQC8RP)+=(Long_t)avMultQC8RP;
1024   entryQC8RP->Append(", N = ");
1025   (*entryQC8RP)+=(Long_t)nEvtsQC8RP;
1026  }
1027  
1028  if(entryQC8POI)
1029  {
1030   entryQC8POI->Append("M = ");
1031   (*entryQC8POI)+=(Long_t)avMultQC8POI;
1032   entryQC8POI->Append(", N = ");
1033   (*entryQC8POI)+=(Long_t)nEvtsQC8POI;
1034  }
1035   
1036  // FQD:
1037  if(fqdCommonHist)
1038  {
1039   avMultFQD = (fqdCommonHist->GetHistMultRP())->GetMean();
1040   nEvtsFQD  = (fqdCommonHist->GetHistMultRP())->GetEntries();
1041   avMultFQDRP = (fqdCommonHist->GetHistMultRP())->GetMean();
1042   nEvtsFQDRP  = (fqdCommonHist->GetHistMultRP())->GetEntries();
1043   avMultFQDPOI = (fqdCommonHist->GetHistMultPOI())->GetMean();
1044   nEvtsFQDPOI  = (fqdCommonHist->GetHistMultPOI())->GetEntries();
1045  } 
1046  
1047  if(entryFQD)
1048  {
1049   entryFQD->Append("M = ");
1050   (*entryFQD)+=(Long_t)avMultFQD;
1051   entryFQD->Append(", N = ");
1052   (*entryFQD)+=(Long_t)nEvtsFQD;
1053  }
1054  
1055  if(entryFQDRP)
1056  {
1057   entryFQDRP->Append("M = ");
1058   (*entryFQDRP)+=(Long_t)avMultFQDRP;
1059   entryFQDRP->Append(", N = ");
1060   (*entryFQDRP)+=(Long_t)nEvtsFQDRP;
1061  }
1062  
1063  if(entryFQDPOI)
1064  {
1065   entryFQDPOI->Append("M = ");
1066   (*entryFQDPOI)+=(Long_t)avMultFQDPOI;
1067   entryFQDPOI->Append(", N = ");
1068   (*entryFQDPOI)+=(Long_t)nEvtsFQDPOI;
1069  }  
1070   
1071  // LYZ1:
1072  if(lyz1CommonHist)
1073  {
1074   avMultLYZ1 = (lyz1CommonHist->GetHistMultRP())->GetMean();
1075   nEvtsLYZ1  = (lyz1CommonHist->GetHistMultRP())->GetEntries();
1076   avMultLYZ1RP = (lyz1CommonHist->GetHistMultRP())->GetMean();
1077   nEvtsLYZ1RP  = (lyz1CommonHist->GetHistMultRP())->GetEntries();
1078   avMultLYZ1POI = (lyz1CommonHist->GetHistMultPOI())->GetMean();
1079   nEvtsLYZ1POI  = (lyz1CommonHist->GetHistMultPOI())->GetEntries();
1080  }
1081  
1082  if(entryLYZ1) 
1083  {
1084   entryLYZ1->Append("M = ");
1085   (*entryLYZ1)+=(Long_t)avMultLYZ1;
1086   entryLYZ1->Append(", N = ");
1087   (*entryLYZ1)+=(Long_t)nEvtsLYZ1;
1088  }
1089  
1090  if(entryLYZ1RP) 
1091  {
1092   entryLYZ1RP->Append("M = ");
1093   (*entryLYZ1RP)+=(Long_t)avMultLYZ1RP;
1094   entryLYZ1RP->Append(", N = ");
1095   (*entryLYZ1RP)+=(Long_t)nEvtsLYZ1RP;
1096  }
1097  
1098  if(entryLYZ1POI) 
1099  {
1100   entryLYZ1POI->Append("M = ");
1101   (*entryLYZ1POI)+=(Long_t)avMultLYZ1POI;
1102   entryLYZ1POI->Append(", N = ");
1103   (*entryLYZ1POI)+=(Long_t)nEvtsLYZ1POI;
1104  }
1105  
1106  // LYZEP:
1107  if(lyzepCommonHist)
1108  {
1109   avMultLYZEP = (lyzepCommonHist->GetHistMultRP())->GetMean();
1110   nEvtsLYZEP  = (lyzepCommonHist->GetHistMultRP())->GetEntries();
1111   avMultLYZEPRP = (lyzepCommonHist->GetHistMultRP())->GetMean();
1112   nEvtsLYZEPRP  = (lyzepCommonHist->GetHistMultRP())->GetEntries();
1113   avMultLYZEPPOI = (lyzepCommonHist->GetHistMultPOI())->GetMean();
1114   nEvtsLYZEPPOI  = (lyzepCommonHist->GetHistMultPOI())->GetEntries();    
1115  }
1116  
1117  if(entryLYZEP)
1118  {
1119   entryLYZEP->Append("M = ");
1120   (*entryLYZEP)+=(Long_t)avMultLYZEP;
1121   entryLYZEP->Append(", N = ");
1122   (*entryLYZEP)+=(Long_t)nEvtsLYZEP;
1123  }
1124  
1125  if(entryLYZEPRP)
1126  {
1127   entryLYZEPRP->Append("M = ");
1128   (*entryLYZEPRP)+=(Long_t)avMultLYZEPRP;
1129   entryLYZEPRP->Append(", N = ");
1130   (*entryLYZEPRP)+=(Long_t)nEvtsLYZEPRP;
1131  }
1132  
1133  if(entryLYZEPPOI)
1134  {
1135   entryLYZEPPOI->Append("M = ");
1136   (*entryLYZEPPOI)+=(Long_t)avMultLYZEPPOI;
1137   entryLYZEPPOI->Append(", N = ");
1138   (*entryLYZEPPOI)+=(Long_t)nEvtsLYZEPPOI;
1139  }
1140
1141  // no-name:
1142  if(textResults)
1143  {
1144   textResults->AddText(entryMC->Data());
1145   textResults->AddText(entrySP->Data());
1146   textResults->AddText(entryGFC->Data());
1147   textResults->AddText(entryQC2->Data());
1148   textResults->AddText(entryQC4->Data());
1149   textResults->AddText(entryQC6->Data());
1150   textResults->AddText(entryQC8->Data());
1151   textResults->AddText(entryFQD->Data());
1152   textResults->AddText(entryLYZ1->Data());
1153   textResults->AddText(entryLYZEP->Data());
1154  }
1155  
1156  // RP:
1157  if(textResultsRP)
1158  {
1159   textResultsRP->AddText(entryMCRP->Data());
1160   textResultsRP->AddText(entrySPRP->Data());
1161   textResultsRP->AddText(entryGFCRP->Data());
1162   textResultsRP->AddText(entryQC2RP->Data());
1163   textResultsRP->AddText(entryQC4RP->Data());
1164   textResultsRP->AddText(entryQC6RP->Data());
1165   textResultsRP->AddText(entryQC8RP->Data());
1166   textResultsRP->AddText(entryFQDRP->Data());
1167   textResultsRP->AddText(entryLYZ1RP->Data());
1168   textResultsRP->AddText(entryLYZEPRP->Data());
1169  }
1170  
1171  // POI:
1172  if(textResultsPOI)
1173  {
1174   textResultsPOI->AddText(entryMCPOI->Data());
1175   textResultsPOI->AddText(entrySPPOI->Data());
1176   textResultsPOI->AddText(entryGFCPOI->Data());
1177   textResultsPOI->AddText(entryQC2POI->Data());
1178   textResultsPOI->AddText(entryQC4POI->Data());
1179   textResultsPOI->AddText(entryQC6POI->Data());
1180   textResultsPOI->AddText(entryQC8POI->Data());
1181   textResultsPOI->AddText(entryFQDPOI->Data());
1182   textResultsPOI->AddText(entryLYZ1POI->Data());
1183   textResultsPOI->AddText(entryLYZEPPOI->Data());
1184  }
1185  //----------------------------------------------------------------------------------
1186  
1187  
1188  
1189  
1190  //----------------------------------------------------------------------------------
1191  // final drawing for integrated flow (no-name):
1192  if(plotIntFlow)
1193  {
1194   TCanvas* intFlowAllCanvas = new TCanvas("Integrated Flow","Integrated Flow",1000,600);
1195  
1196   intFlowAllCanvas->Divide(2,1);
1197  
1198   // 1st pad is for plot:
1199   (intFlowAllCanvas->cd(1))->SetPad(0.0,0.0,0.75,1.0);
1200   
1201   if(intFlowAll)
1202   {
1203    if(dMin>0. && dMax>0.)
1204    {
1205     (intFlowAll->GetYaxis())->SetRangeUser(0.9744*dMin,1.0144*dMax);
1206    } else if(dMin<0. && dMax>0.)
1207      {
1208       if(!(-1.*dMin<4.*dMax))
1209       {  
1210        (intFlowAll->GetYaxis())->SetRangeUser(1.0266*dMin,1.0144*dMax);
1211       } else {(intFlowAll->GetYaxis())->SetRangeUser(1.1266*dMin,1.0144*dMax);}  
1212      } else if(dMin<0. && dMax<0.)
1213        {
1214         (intFlowAll->GetYaxis())->SetRangeUser(1.0266*dMin,0.9866*dMax);      
1215        }
1216    intFlowAll->Draw("E1");
1217   }                    
1218                                                     
1219   if(pMesh) pMesh->Draw("LFSAME");
1220    
1221   if(flowResults) flowResults->Draw("PSAME");
1222
1223   // 2nd pad is for legend:
1224   (intFlowAllCanvas->cd(2))->SetPad(0.75,0.0,1.0,1.0);
1225  
1226   if(textDefault) textDefault->Draw();
1227  
1228   if(textResults) textResults->Draw();
1229  
1230  }// end of if(plotIntFlow) 
1231  //----------------------------------------------------------------------------------
1232
1233  
1234  
1235  
1236  //----------------------------------------------------------------------------------
1237  //final drawing for integrated flow of RP (i.e. of particles used to determine the reaction plane):
1238  if(plotIntFlowRP)
1239  {
1240   TCanvas* intFlowAllCanvasRP = new TCanvas("Integrated Flow RP","Integrated Flow RP",1000,600);
1241  
1242   intFlowAllCanvasRP->Divide(2,1);
1243  
1244   //1st pad is for plot:
1245   (intFlowAllCanvasRP->cd(1))->SetPad(0.0,0.0,0.75,1.0);
1246  
1247   TH1D *intFlowAllRP = new TH1D(*intFlowAll);
1248   intFlowAllRP->SetMarkerStyle(markerStyleRP);
1249   intFlowAllRP->SetMarkerColor(markerColorRP);
1250   (intFlowAllRP->GetXaxis())->SetBinLabel(binMCRP,"v_{2}{MC}");
1251   (intFlowAllRP->GetXaxis())->SetBinLabel(binSPRP,"v_{2}{SP}");
1252   (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC2RP,"v_{2}{2,GFC}");
1253   (intFlowAllRP->GetXaxis())->SetBinLabel(binQC2RP,"v_{2}{2,QC}");
1254   (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC4RP,"v_{2}{4,GFC}");
1255   (intFlowAllRP->GetXaxis())->SetBinLabel(binQC4RP,"v_{2}{4,QC}");
1256   (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC6RP,"v_{2}{6,GFC}");
1257   (intFlowAllRP->GetXaxis())->SetBinLabel(binQC6RP,"v_{2}{6,QC}");
1258   (intFlowAllRP->GetXaxis())->SetBinLabel(binGFC8RP,"v_{2}{8,GFC}");
1259   (intFlowAllRP->GetXaxis())->SetBinLabel(binQC8RP,"v_{2}{8,QC}");
1260   (intFlowAllRP->GetXaxis())->SetBinLabel(binFQDRP,"v_{2}{FQD}");
1261   (intFlowAllRP->GetXaxis())->SetBinLabel(binLYZ2RP,"v_{2}{LYZ}");
1262   (intFlowAllRP->GetXaxis())->SetBinLabel(binLYZEPRP,"v_{2}{LYZEP}");
1263
1264   if(intFlowAllRP)
1265   {
1266    if(dMinRP>0. && dMaxRP>0.)
1267    {
1268     (intFlowAllRP->GetYaxis())->SetRangeUser(0.9744*dMinRP,1.0144*dMaxRP);
1269    } else if(dMinRP<0. && dMaxRP>0.)
1270      {
1271       if(!(-1.*dMinRP<4.*dMaxRP))
1272       {  
1273        (intFlowAllRP->GetYaxis())->SetRangeUser(1.0266*dMinRP,1.0144*dMaxRP);
1274       } else {(intFlowAllRP->GetYaxis())->SetRangeUser(1.1266*dMinRP,1.0144*dMaxRP);}  
1275      } else if(dMinRP<0. && dMaxRP<0.)
1276        {
1277         (intFlowAllRP->GetYaxis())->SetRangeUser(1.0266*dMinRP,0.9866*dMaxRP);      
1278        } 
1279    intFlowAllRP->Draw("E1");
1280   }
1281                                                                                                                                                                                                                                                                                    
1282   if(pMeshRP) pMeshRP->Draw("LFSAME");
1283    
1284   if(flowResultsRP) flowResultsRP->Draw("PSAME");
1285
1286   //2nd pad is for legend:
1287   (intFlowAllCanvasRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);
1288   
1289   if(textDefault) textDefault->Draw();
1290  
1291   if(textResultsRP) textResultsRP->Draw();
1292  }//end of if(plotIntFlowRP} 
1293  //----------------------------------------------------------------------------------
1294  
1295  
1296  
1297  
1298  //----------------------------------------------------------------------------------
1299  //final drawing for integrated flow of POI (i.e. of particles of interest):
1300  if(plotIntFlowPOI)
1301  {
1302   TCanvas* intFlowAllCanvasPOI = new TCanvas("Integrated Flow POI","Integrated Flow POI",1000,600);
1303   
1304   intFlowAllCanvasPOI->Divide(2,1);
1305  
1306   //1st pad is for plot:
1307   (intFlowAllCanvasPOI->cd(1))->SetPad(0.0,0.0,0.75,1.0);
1308   
1309   TH1D *intFlowAllPOI = new TH1D(*intFlowAll);
1310   intFlowAllPOI->SetMarkerStyle(markerStylePOI);
1311   intFlowAllPOI->SetMarkerColor(markerColorPOI);
1312   (intFlowAllPOI->GetXaxis())->SetBinLabel(binMCPOI,"v_{2}{MC}");
1313   (intFlowAllPOI->GetXaxis())->SetBinLabel(binSPPOI,"v_{2}{SP}");
1314   (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC2POI,"v_{2}{2,GFC}");
1315   (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC2POI,"v_{2}{2,QC}");
1316   (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC4POI,"v_{2}{4,GFC}");
1317   (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC4POI,"v_{2}{4,QC}");
1318   (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC6POI,"v_{2}{6,GFC}");
1319   (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC6POI,"v_{2}{6,QC}");
1320   (intFlowAllPOI->GetXaxis())->SetBinLabel(binGFC8POI,"v_{2}{8,GFC}");
1321   (intFlowAllPOI->GetXaxis())->SetBinLabel(binQC8POI,"v_{2}{8,QC}");
1322   (intFlowAllPOI->GetXaxis())->SetBinLabel(binFQDPOI,"v_{2}{FQD}");
1323   (intFlowAllPOI->GetXaxis())->SetBinLabel(binLYZ2POI,"v_{2}{LYZ}");
1324   (intFlowAllPOI->GetXaxis())->SetBinLabel(binLYZEPPOI,"v_{2}{LYZEP}");
1325   
1326   if(intFlowAllPOI)
1327   {
1328    if(dMinPOI>0. && dMaxPOI>0.)
1329    {
1330     (intFlowAllPOI->GetYaxis())->SetRangeUser(0.9744*dMinPOI,1.0144*dMaxPOI);
1331    } else if(dMinPOI<0. && dMaxPOI>0.)
1332      {
1333       if(!(-1.*dMinPOI<4.*dMaxPOI))
1334       {  
1335        (intFlowAllPOI->GetYaxis())->SetRangeUser(1.0266*dMinPOI,1.0144*dMaxPOI);
1336       } else {(intFlowAllPOI->GetYaxis())->SetRangeUser(1.1266*dMinPOI,1.0144*dMaxPOI);}  
1337      } else if(dMinPOI<0. && dMaxPOI<0.)
1338        {
1339         (intFlowAllPOI->GetYaxis())->SetRangeUser(1.0266*dMinPOI,0.9866*dMaxPOI);      
1340        }
1341    intFlowAllPOI->Draw("E1");
1342   }
1343                             
1344   if(pMeshPOI) pMeshPOI->Draw("LFSAME");
1345    
1346   if(flowResultsPOI) flowResultsPOI->Draw("PSAME");
1347  
1348   //2nd pad is for legend:
1349   (intFlowAllCanvasPOI->cd(2))->SetPad(0.75,0.0,1.0,1.0);
1350  
1351   if(textDefault) textDefault->Draw();
1352
1353   if(textResultsPOI) textResultsPOI->Draw();
1354  }// end of if(plotIntFlowPOI) 
1355  //----------------------------------------------------------------------------------
1356  
1357  //==================================================================================   
1358
1359
1360
1361
1362  //==================================================================================
1363  //                            DIFFERENTIAL FLOW
1364  //==================================================================================
1365  Int_t iNbinsPt  = AliFlowCommonConstants::GetNbinsPt();
1366  Double_t dPtMin = AliFlowCommonConstants::GetPtMin();
1367  Double_t dPtMax = AliFlowCommonConstants::GetPtMax();
1368  
1369  Int_t iNbinsEta  = AliFlowCommonConstants::GetNbinsEta();
1370  Double_t dEtaMin = AliFlowCommonConstants::GetEtaMin();
1371  Double_t dEtaMax = AliFlowCommonConstants::GetEtaMax();
1372  
1373  //----------------------------------------------------------------------------------
1374  //cosmetics: the style histogram for differential flow (pt):
1375  TH1D *styleHistPt = new TH1D("styleHistPt","styleHistPt",iNbinsPt,dPtMin,dPtMax);
1376  styleHistPt->SetTitle("Differential Flow");
1377  styleHistPt->SetXTitle("p_{t} [GeV]");
1378  styleHistPt->SetYTitle("v_{n}");
1379  
1380  //cosmetics: the style histogram for differential flow (eta):
1381  TH1D *styleHistEta = new TH1D("styleHistEta","styleHistEta",iNbinsEta,dEtaMin,dEtaMax);
1382  styleHistEta->SetTitle("Differential Flow");
1383  styleHistEta->SetXTitle("#eta");
1384  styleHistEta->SetYTitle("v_{n}");
1385  //----------------------------------------------------------------------------------
1386  
1387  
1388
1389  //----------------------------------------------------------------------------------
1390  //RP:
1391  //cosmetics: Monte Carlo error bands for differential flow (Pt)
1392  TGraph* pMeshDiffFlowPtRP = NULL;
1393  if(mcepCommonHistRes)
1394  {
1395   Int_t nBinsDiffFlowPtRP = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetNbinsX();
1396   Double_t binWidthPtRP = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinWidth(1);//assuming that all bins have the same width
1397
1398   //counting the non-empty bins: 
1399   Int_t nNonEmptyBinsDiffFlowPtRP=0;
1400   for(Int_t i=1;i<nBinsDiffFlowPtRP+1;i++)
1401   {
1402    if(!(mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(i)==0.0))
1403    {
1404     nNonEmptyBinsDiffFlowPtRP++;
1405    }
1406   }    
1407        
1408   pMeshDiffFlowPtRP = new TGraph(2*nNonEmptyBinsDiffFlowPtRP+1);
1409   
1410   Double_t valueMCPtRP=0.,errorMCPtRP=0.;
1411   Int_t countDiffFlowPtRP=1;
1412   Double_t xFirstDiffFlowPtRP=0.,yUpFirstDiffFlowPtRP=0.;//needed to close up the mesh
1413   for(Int_t i=1;i<nBinsDiffFlowPtRP+1;i++)
1414   {
1415    //setting up the upper limit of the mesh:
1416    valueMCPtRP = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(i);
1417    errorMCPtRP = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(i);   
1418    if(!(errorMCPtRP==0.0))
1419    {    
1420     pMeshDiffFlowPtRP->SetPoint(countDiffFlowPtRP++,(i-0.5)*binWidthPtRP+dPtMin,valueMCPtRP+errorMCPtRP);
1421     if(xFirstDiffFlowPtRP==0.)
1422     {
1423      xFirstDiffFlowPtRP=(i-0.5)*binWidthPtRP+dPtMin;
1424      yUpFirstDiffFlowPtRP=valueMCPtRP+errorMCPtRP;
1425     }
1426    } 
1427   }   
1428   for(Int_t i=nBinsDiffFlowPtRP+1;i<2*nBinsDiffFlowPtRP+1;i++)
1429   {
1430    //setting up the lower limit of the mesh:
1431    valueMCPtRP = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(2*nBinsDiffFlowPtRP+1-i);
1432    errorMCPtRP = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(2*nBinsDiffFlowPtRP+1-i); 
1433    if(!(errorMCPtRP==0.0))
1434    {      
1435     pMeshDiffFlowPtRP->SetPoint(countDiffFlowPtRP++,(2*nBinsDiffFlowPtRP-i+0.5)*binWidthPtRP+dPtMin,valueMCPtRP-errorMCPtRP);
1436    }  
1437   }
1438   //closing the mesh area:
1439   pMeshDiffFlowPtRP->SetPoint(2*nNonEmptyBinsDiffFlowPtRP+1,xFirstDiffFlowPtRP,yUpFirstDiffFlowPtRP);   
1440   
1441   //setting the mesh style and color:               
1442   pMeshDiffFlowPtRP->SetFillStyle(meshStyleDiffFlowPtRP);
1443   pMeshDiffFlowPtRP->SetFillColor(meshColorDiffFlowPtRP);
1444  }
1445
1446  //cosmetics: Monte Carlo error bands for differential flow (Eta)
1447  TGraph* pMeshDiffFlowEtaRP = NULL;
1448  if(mcepCommonHistRes)
1449  {
1450   Int_t nBinsDiffFlowEtaRP = (mcepCommonHistRes->GetHistDiffFlowEtaRP())->GetNbinsX();
1451   Double_t binWidthEtaRP = (mcepCommonHistRes->GetHistDiffFlowEtaRP())->GetBinWidth(1);//assuming that all bins have the same width
1452
1453   //counting the non-empty bins: 
1454   Int_t nNonEmptyBinsDiffFlowEtaRP=0;
1455   for(Int_t i=1;i<nBinsDiffFlowEtaRP+1;i++)
1456   {
1457    if(!(mcepCommonHistRes->GetHistDiffFlowEtaRP())->GetBinError(i)==0.0))
1458    {
1459     nNonEmptyBinsDiffFlowEtaRP++;
1460    }
1461   }    
1462        
1463   pMeshDiffFlowEtaRP = new TGraph(2*nNonEmptyBinsDiffFlowEtaRP+1);
1464   
1465   Double_t valueMCEtaRP=0.,errorMCEtaRP=0.;
1466   Int_t countDiffFlowEtaRP=1;
1467   Double_t xFirstDiffFlowEtaRP=0.,yUpFirstDiffFlowEtaRP=0.;//needed to close up the mesh
1468   for(Int_t i=1;i<nBinsDiffFlowEtaRP+1;i++)
1469   {
1470    //setting up the upper limit of the mesh:
1471    valueMCEtaRP = (mcepCommonHistRes->GetHistDiffFlowEtaRP())->GetBinContent(i);
1472    errorMCEtaRP = (mcepCommonHistRes->GetHistDiffFlowEtaRP())->GetBinError(i);   
1473    if(!(errorMCEtaRP==0.0))
1474    {    
1475     pMeshDiffFlowEtaRP->SetPoint(countDiffFlowEtaRP++,(i-0.5)*binWidthEtaRP+dEtaMin,valueMCEtaRP+errorMCEtaRP);
1476     if(xFirstDiffFlowEtaRP==0.)
1477     {
1478      xFirstDiffFlowEtaRP=(i-0.5)*binWidthEtaRP+dEtaMin;
1479      yUpFirstDiffFlowEtaRP=valueMCEtaRP+errorMCEtaRP;
1480     }
1481    } 
1482   }   
1483   for(Int_t i=nBinsDiffFlowEtaRP+1;i<2*nBinsDiffFlowEtaRP+1;i++)
1484   {
1485    //setting up the lower limit of the mesh:
1486    valueMCEtaRP = (mcepCommonHistRes->GetHistDiffFlowEtaRP())->GetBinContent(2*nBinsDiffFlowEtaRP+1-i);
1487    errorMCEtaRP = (mcepCommonHistRes->GetHistDiffFlowEtaRP())->GetBinError(2*nBinsDiffFlowEtaRP+1-i); 
1488    if(!(errorMCEtaRP==0.0))
1489    {      
1490     pMeshDiffFlowEtaRP->SetPoint(countDiffFlowEtaRP++,(2*nBinsDiffFlowEtaRP-i+0.5)*binWidthEtaRP+dEtaMin,valueMCEtaRP-errorMCEtaRP);
1491    }  
1492   }
1493   //closing the mesh area:
1494   pMeshDiffFlowEtaRP->SetPoint(2*nNonEmptyBinsDiffFlowEtaRP+1,xFirstDiffFlowEtaRP,yUpFirstDiffFlowEtaRP);   
1495   
1496   //setting the mesh style and color:               
1497   pMeshDiffFlowEtaRP->SetFillStyle(meshStyleDiffFlowEtaRP);
1498   pMeshDiffFlowEtaRP->SetFillColor(meshColorDiffFlowEtaRP);
1499  } 
1500  //----------------------------------------------------------------------------------
1501
1502
1503
1504
1505  //----------------------------------------------------------------------------------
1506  //POI:
1507  //cosmetics: Monte Carlo error bands for differential flow (Pt)
1508  TGraph* pMeshDiffFlowPtPOI = NULL;
1509  if(mcepCommonHistRes)
1510  {
1511   Int_t nBinsDiffFlowPtPOI = (mcepCommonHistRes->GetHistDiffFlowPtPOI())->GetNbinsX();
1512   Double_t binWidthPtPOI = (mcepCommonHistRes->GetHistDiffFlowPtPOI())->GetBinWidth(1);//assuming that all bins have the same width
1513
1514   //counting the non-empty bins: 
1515   Int_t nNonEmptyBinsDiffFlowPtPOI=0;
1516   for(Int_t i=1;i<nBinsDiffFlowPtPOI+1;i++)
1517   {
1518    if(!(mcepCommonHistRes->GetHistDiffFlowPtPOI())->GetBinError(i)==0.0))
1519    {
1520     nNonEmptyBinsDiffFlowPtPOI++;
1521    }
1522   }    
1523        
1524   pMeshDiffFlowPtPOI = new TGraph(2*nNonEmptyBinsDiffFlowPtPOI+1);
1525   
1526   Double_t valueMCPtPOI=0.,errorMCPtPOI=0.;
1527   Int_t countDiffFlowPtPOI=1;
1528   Double_t xFirstDiffFlowPtPOI=0.,yUpFirstDiffFlowPtPOI=0.;//needed to close up the mesh
1529   for(Int_t i=1;i<nBinsDiffFlowPtPOI+1;i++)
1530   {
1531    //setting up the upper limit of the mesh:
1532    valueMCPtPOI = (mcepCommonHistRes->GetHistDiffFlowPtPOI())->GetBinContent(i);
1533    errorMCPtPOI = (mcepCommonHistRes->GetHistDiffFlowPtPOI())->GetBinError(i);   
1534    if(!(errorMCPtPOI==0.0))
1535    {    
1536     pMeshDiffFlowPtPOI->SetPoint(countDiffFlowPtPOI++,(i-0.5)*binWidthPtPOI+dPtMin,valueMCPtPOI+errorMCPtPOI);
1537     if(xFirstDiffFlowPtPOI==0.)
1538     {
1539      xFirstDiffFlowPtPOI=(i-0.5)*binWidthPtPOI+dPtMin;
1540      yUpFirstDiffFlowPtPOI=valueMCPtPOI+errorMCPtPOI;
1541     }
1542    } 
1543   }   
1544   for(Int_t i=nBinsDiffFlowPtPOI+1;i<2*nBinsDiffFlowPtPOI+1;i++)
1545   {
1546    //setting up the lower limit of the mesh:
1547    valueMCPtPOI = (mcepCommonHistRes->GetHistDiffFlowPtPOI())->GetBinContent(2*nBinsDiffFlowPtPOI+1-i);
1548    errorMCPtPOI = (mcepCommonHistRes->GetHistDiffFlowPtPOI())->GetBinError(2*nBinsDiffFlowPtPOI+1-i); 
1549    if(!(errorMCPtPOI==0.0))
1550    {      
1551     pMeshDiffFlowPtPOI->SetPoint(countDiffFlowPtPOI++,(2*nBinsDiffFlowPtPOI-i+0.5)*binWidthPtPOI+dPtMin,valueMCPtPOI-errorMCPtPOI);
1552    }  
1553   }
1554   //closing the mesh area:
1555   pMeshDiffFlowPtPOI->SetPoint(2*nNonEmptyBinsDiffFlowPtPOI+1,xFirstDiffFlowPtPOI,yUpFirstDiffFlowPtPOI);   
1556   
1557   //setting the mesh style and color:               
1558   pMeshDiffFlowPtPOI->SetFillStyle(meshStyleDiffFlowPtPOI);
1559   pMeshDiffFlowPtPOI->SetFillColor(meshColorDiffFlowPtPOI);
1560  }
1561
1562  //cosmetics: Monte Carlo error bands for differential flow (Eta)
1563  TGraph* pMeshDiffFlowEtaPOI = NULL;
1564  if(mcepCommonHistRes)
1565  {
1566   Int_t nBinsDiffFlowEtaPOI = (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->GetNbinsX();
1567   Double_t binWidthEtaPOI = (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->GetBinWidth(1);//assuming that all bins have the same width
1568
1569   //counting the non-empty bins: 
1570   Int_t nNonEmptyBinsDiffFlowEtaPOI=0;
1571   for(Int_t i=1;i<nBinsDiffFlowEtaPOI+1;i++)
1572   {
1573    if(!(mcepCommonHistRes->GetHistDiffFlowEtaPOI())->GetBinError(i)==0.0))
1574    {
1575     nNonEmptyBinsDiffFlowEtaPOI++;
1576    }
1577   }    
1578        
1579   pMeshDiffFlowEtaPOI = new TGraph(2*nNonEmptyBinsDiffFlowEtaPOI+1);
1580   
1581   Double_t valueMCEtaPOI=0.,errorMCEtaPOI=0.;
1582   Int_t countDiffFlowEtaPOI=1;
1583   Double_t xFirstDiffFlowEtaPOI=0.,yUpFirstDiffFlowEtaPOI=0.;//needed to close up the mesh
1584   for(Int_t i=1;i<nBinsDiffFlowEtaPOI+1;i++)
1585   {
1586    //setting up the upper limit of the mesh:
1587    valueMCEtaPOI = (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->GetBinContent(i);
1588    errorMCEtaPOI = (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->GetBinError(i);   
1589    if(!(errorMCEtaPOI==0.0))
1590    {    
1591     pMeshDiffFlowEtaPOI->SetPoint(countDiffFlowEtaPOI++,(i-0.5)*binWidthEtaPOI+dEtaMin,valueMCEtaPOI+errorMCEtaPOI);
1592     if(xFirstDiffFlowEtaPOI==0.)
1593     {
1594      xFirstDiffFlowEtaPOI=(i-0.5)*binWidthEtaPOI+dEtaMin;
1595      yUpFirstDiffFlowEtaPOI=valueMCEtaPOI+errorMCEtaPOI;
1596     }
1597    } 
1598   }   
1599   for(Int_t i=nBinsDiffFlowEtaPOI+1;i<2*nBinsDiffFlowEtaPOI+1;i++)
1600   {
1601    //setting up the lower limit of the mesh:
1602    valueMCEtaPOI = (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->GetBinContent(2*nBinsDiffFlowEtaPOI+1-i);
1603    errorMCEtaPOI = (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->GetBinError(2*nBinsDiffFlowEtaPOI+1-i); 
1604    if(!(errorMCEtaPOI==0.0))
1605    {      
1606     pMeshDiffFlowEtaPOI->SetPoint(countDiffFlowEtaPOI++,(2*nBinsDiffFlowEtaPOI-i+0.5)*binWidthEtaPOI+dEtaMin,valueMCEtaPOI-errorMCEtaPOI);
1607    }  
1608   }
1609   //closing the mesh area:
1610   pMeshDiffFlowEtaPOI->SetPoint(2*nNonEmptyBinsDiffFlowEtaPOI+1,xFirstDiffFlowEtaPOI,yUpFirstDiffFlowEtaPOI);   
1611   
1612   //setting the mesh style and color:               
1613   pMeshDiffFlowEtaPOI->SetFillStyle(meshStyleDiffFlowEtaPOI);
1614   pMeshDiffFlowEtaPOI->SetFillColor(meshColorDiffFlowEtaPOI);
1615  }
1616  //----------------------------------------------------------------------------------
1617    
1618  //MCEP = Monte Carlo Event Plane
1619  Double_t avMultDiffFlowMCRP=0.;
1620  Double_t nEvtsDiffFlowMCRP=0;
1621  Double_t avMultDiffFlowMCPOI=0.;
1622  Double_t nEvtsDiffFlowMCPOI=0;
1623  if(fileMCEP)
1624  {
1625   if(mcepCommonHistRes)
1626   {
1627    (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorMC);
1628    (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleMC);
1629    (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorMC);
1630    (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleMC);
1631    (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorMC);
1632    (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleMC);
1633    (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorMC);
1634    (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleMC);
1635   } 
1636   if(mcepCommonHist)
1637   {
1638    avMultDiffFlowMCRP = (mcepCommonHist->GetHistMultRP())->GetMean();
1639    nEvtsDiffFlowMCRP  = (mcepCommonHist->GetHistMultRP())->GetEntries();
1640    avMultDiffFlowMCPOI = (mcepCommonHist->GetHistMultPOI())->GetMean();
1641    nEvtsDiffFlowMCPOI  = (mcepCommonHist->GetHistMultPOI())->GetEntries();      
1642   } 
1643  } 
1644  
1645  //SP = Scalar Product
1646  Double_t avMultDiffFlowSPRP=0.;
1647  Double_t nEvtsDiffFlowSPRP=0;
1648  Double_t avMultDiffFlowSPPOI=0.;
1649  Double_t nEvtsDiffFlowSPPOI=0;
1650  if(fileSP)
1651  {
1652   if(spCommonHistRes)
1653   {
1654    (spCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorSP);
1655    (spCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleSP);
1656    (spCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorSP);
1657    (spCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleSP);
1658    (spCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorSP);
1659    (spCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleSP);
1660    (spCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorSP);
1661    (spCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleSP);
1662   } 
1663   if(spCommonHist)
1664   {
1665    avMultDiffFlowSPRP = (spCommonHist->GetHistMultRP())->GetMean();
1666    nEvtsDiffFlowSPRP = (spCommonHist->GetHistMultRP())->GetEntries();
1667    avMultDiffFlowSPPOI = (spCommonHist->GetHistMultPOI())->GetMean();
1668    nEvtsDiffFlowSPPOI = (spCommonHist->GetHistMultPOI())->GetEntries();      
1669   } 
1670  } 
1671
1672  //GFC = Generating Function Cumulants
1673  Double_t avMultDiffFlowGFC=0.;//to be removed
1674  Double_t nEvtsDiffFlowGFC=0.;//to be removed
1675  Double_t avMultDiffFlowGFCRP=0.;
1676  Double_t nEvtsDiffFlowGFCRP=0.;
1677  Double_t avMultDiffFlowGFCPOI=0.;
1678  Double_t nEvtsDiffFlowGFCPOI=0.; 
1679  if(fileGFC)
1680  {
1681   if(gfcCommonHistRes2)
1682   {
1683    (gfcCommonHistRes2->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorGFC2);
1684    (gfcCommonHistRes2->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleGFC2);
1685    (gfcCommonHistRes2->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorGFC2);
1686    (gfcCommonHistRes2->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleGFC2);
1687    (gfcCommonHistRes2->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorGFC2);
1688    (gfcCommonHistRes2->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleGFC2);
1689    (gfcCommonHistRes2->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorGFC2);
1690    (gfcCommonHistRes2->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleGFC2);
1691   }
1692   if(gfcCommonHistRes4)
1693   { 
1694    (gfcCommonHistRes4->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorGFC4);
1695    (gfcCommonHistRes4->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleGFC4);
1696    (gfcCommonHistRes4->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorGFC4);
1697    (gfcCommonHistRes4->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleGFC4);
1698    (gfcCommonHistRes4->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorGFC4);
1699    (gfcCommonHistRes4->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleGFC4);
1700    (gfcCommonHistRes4->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorGFC4);
1701    (gfcCommonHistRes4->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleGFC4);         
1702   }
1703   if(gfcCommonHistRes6)
1704   { 
1705    (gfcCommonHistRes6->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorGFC6);
1706    (gfcCommonHistRes6->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleGFC6);
1707    (gfcCommonHistRes6->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorGFC6);
1708    (gfcCommonHistRes6->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleGFC6);
1709    (gfcCommonHistRes6->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorGFC6);
1710    (gfcCommonHistRes6->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleGFC6);
1711    (gfcCommonHistRes6->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorGFC6);
1712    (gfcCommonHistRes6->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleGFC6);
1713   }
1714   if(gfcCommonHistRes8)
1715   { 
1716    (gfcCommonHistRes8->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorGFC8);
1717    (gfcCommonHistRes8->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleGFC8);
1718    (gfcCommonHistRes8->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorGFC8);
1719    (gfcCommonHistRes8->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleGFC8);
1720    (gfcCommonHistRes8->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorGFC8);
1721    (gfcCommonHistRes8->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleGFC8);
1722    (gfcCommonHistRes8->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorGFC8);
1723    (gfcCommonHistRes8->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleGFC8);
1724   }
1725   if(gfcCommonHist)
1726   {
1727    avMultDiffFlowGFCRP = (gfcCommonHist->GetHistMultRP())->GetMean();   
1728    nEvtsDiffFlowGFCRP  = (gfcCommonHist->GetHistMultRP())->GetEntries();
1729    avMultDiffFlowGFCPOI = (gfcCommonHist->GetHistMultPOI())->GetMean();
1730    nEvtsDiffFlowGFCPOI  = (gfcCommonHist->GetHistMultPOI())->GetEntries();   
1731   } 
1732  }
1733   
1734  //QC = Q-cumulants
1735  Double_t avMultDiffFlowQC2RP=0.;
1736  Double_t nEvtsDiffFlowQC2RP=0.;
1737  Double_t avMultDiffFlowQC2POI=0.;
1738  Double_t nEvtsDiffFlowQC2POI=0.;
1739  Double_t avMultDiffFlowQC4RP=0.;
1740  Double_t nEvtsDiffFlowQC4RP=0.;
1741  Double_t avMultDiffFlowQC4POI=0.;
1742  Double_t nEvtsDiffFlowQC4POI=0.;
1743  Double_t avMultDiffFlowQC6RP=0.;
1744  Double_t nEvtsDiffFlowQC6RP=0.;
1745  Double_t avMultDiffFlowQC6POI=0.;
1746  Double_t nEvtsDiffFlowQC6POI=0.;
1747  Double_t avMultDiffFlowQC8RP=0.;
1748  Double_t nEvtsDiffFlowQC8RP=0.;
1749  Double_t avMultDiffFlowQC8POI=0.;
1750  Double_t nEvtsDiffFlowQC8POI=0.;
1751
1752  if(fileQC)
1753  {
1754   //QC{2}
1755   if(qcCommonHistRes2)
1756   {
1757    (qcCommonHistRes2->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorQC2);
1758    (qcCommonHistRes2->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleQC2);
1759    (qcCommonHistRes2->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorQC2);
1760    (qcCommonHistRes2->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleQC2);
1761    (qcCommonHistRes2->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorQC2);
1762    (qcCommonHistRes2->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleQC2);
1763    (qcCommonHistRes2->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorQC2);
1764    (qcCommonHistRes2->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleQC2);
1765   }
1766   if(qcCommonHist2)
1767   {
1768    avMultDiffFlowQC2RP = (qcCommonHist2->GetHistMultRP())->GetMean();
1769    nEvtsDiffFlowQC2RP  = (qcCommonHist2->GetHistMultRP())->GetEntries();
1770    avMultDiffFlowQC2POI = (qcCommonHist2->GetHistMultPOI())->GetMean();
1771    nEvtsDiffFlowQC2POI  = (qcCommonHist2->GetHistMultPOI())->GetEntries();
1772   }
1773   //QC{4}
1774   if(qcCommonHistRes4)
1775   {
1776    (qcCommonHistRes4->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorQC4);
1777    (qcCommonHistRes4->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleQC4);
1778    (qcCommonHistRes4->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorQC4);
1779    (qcCommonHistRes4->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleQC4);
1780    (qcCommonHistRes4->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorQC4);
1781    (qcCommonHistRes4->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleQC4);
1782    (qcCommonHistRes4->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorQC4);
1783    (qcCommonHistRes4->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleQC4);
1784   }
1785   if(qcCommonHist4)
1786   {
1787    avMultDiffFlowQC4RP = (qcCommonHist4->GetHistMultRP())->GetMean();
1788    nEvtsDiffFlowQC4RP  = (qcCommonHist4->GetHistMultRP())->GetEntries();
1789    avMultDiffFlowQC4POI = (qcCommonHist4->GetHistMultPOI())->GetMean();
1790    nEvtsDiffFlowQC4POI  = (qcCommonHist4->GetHistMultPOI())->GetEntries();
1791   }
1792   //QC{6}
1793   if(qcCommonHistRes6)
1794   {
1795    (qcCommonHistRes6->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorQC6);
1796    (qcCommonHistRes6->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleQC6);
1797    (qcCommonHistRes6->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorQC6);
1798    (qcCommonHistRes6->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleQC6);
1799    (qcCommonHistRes6->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorQC6);
1800    (qcCommonHistRes6->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleQC6);
1801    (qcCommonHistRes6->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorQC6);
1802    (qcCommonHistRes6->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleQC6);
1803   }
1804   if(qcCommonHist6)
1805   {
1806    avMultDiffFlowQC6RP = (qcCommonHist6->GetHistMultRP())->GetMean();
1807    nEvtsDiffFlowQC6RP  = (qcCommonHist6->GetHistMultRP())->GetEntries();
1808    avMultDiffFlowQC6POI = (qcCommonHist6->GetHistMultPOI())->GetMean();
1809    nEvtsDiffFlowQC6POI  = (qcCommonHist6->GetHistMultPOI())->GetEntries();
1810   }
1811   //QC{8}
1812   if(qcCommonHistRes8)
1813   {
1814    (qcCommonHistRes8->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorQC8);
1815    (qcCommonHistRes8->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleQC8);
1816    (qcCommonHistRes8->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorQC8);
1817    (qcCommonHistRes8->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleQC8);
1818    (qcCommonHistRes8->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorQC8);
1819    (qcCommonHistRes8->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleQC8);
1820    (qcCommonHistRes8->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorQC8);
1821    (qcCommonHistRes8->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleQC8);
1822   }
1823   if(qcCommonHist8)
1824   {
1825    avMultDiffFlowQC8RP = (qcCommonHist8->GetHistMultRP())->GetMean();
1826    nEvtsDiffFlowQC8RP  = (qcCommonHist8->GetHistMultRP())->GetEntries();
1827    avMultDiffFlowQC8POI = (qcCommonHist8->GetHistMultPOI())->GetMean();
1828    nEvtsDiffFlowQC8POI  = (qcCommonHist8->GetHistMultPOI())->GetEntries();
1829   }
1830  } 
1831
1832  //LYZ2 = Lee-Yang Zeros (2nd run)
1833  Double_t avMultDiffFlowLYZ2RP=0.;
1834  Double_t nEvtsDiffFlowLYZ2RP=0;
1835  Double_t avMultDiffFlowLYZ2POI=0.;
1836  Double_t nEvtsDiffFlowLYZ2POI=0;
1837  if(fileLYZ2)
1838  {
1839   if(lyz2CommonHistRes)
1840   {
1841    (lyz2CommonHistRes->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorLYZ2);
1842    (lyz2CommonHistRes->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleLYZ2);
1843    (lyz2CommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorLYZ2);
1844    (lyz2CommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleLYZ2);
1845    (lyz2CommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorLYZ2);
1846    (lyz2CommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleLYZ2);
1847    (lyz2CommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorLYZ2);
1848    (lyz2CommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleLYZ2);
1849   } 
1850   if(lyz2CommonHist)
1851   {
1852    avMultDiffFlowLYZ2RP = (lyz2CommonHist->GetHistMultRP())->GetMean();
1853    nEvtsDiffFlowLYZ2RP  = (lyz2CommonHist->GetHistMultRP())->GetEntries();
1854    avMultDiffFlowLYZ2POI = (lyz2CommonHist->GetHistMultPOI())->GetMean();
1855    nEvtsDiffFlowLYZ2POI  = (lyz2CommonHist->GetHistMultPOI())->GetEntries();
1856   } 
1857  } 
1858
1859  //LYZEP = Lee-Yang Zeros Event Plane
1860  Double_t avMultDiffFlowLYZEPRP=0.;
1861  Double_t nEvtsDiffFlowLYZEPRP=0;
1862  Double_t avMultDiffFlowLYZEPPOI=0.;
1863  Double_t nEvtsDiffFlowLYZEPPOI=0;
1864  if(fileLYZEP)
1865  {
1866   if(lyzepCommonHistRes)
1867   {
1868    (lyzepCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerColor(markerColorLYZEP);
1869    (lyzepCommonHistRes->GetHistDiffFlowPtRP())->SetMarkerStyle(markerStyleLYZEP);
1870    (lyzepCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerColor(markerColorLYZEP);
1871    (lyzepCommonHistRes->GetHistDiffFlowEtaRP())->SetMarkerStyle(markerStyleLYZEP);
1872    (lyzepCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerColor(markerColorLYZEP);
1873    (lyzepCommonHistRes->GetHistDiffFlowPtPOI())->SetMarkerStyle(markerStyleLYZEP);
1874    (lyzepCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerColor(markerColorLYZEP);
1875    (lyzepCommonHistRes->GetHistDiffFlowEtaPOI())->SetMarkerStyle(markerStyleLYZEP);
1876   } 
1877   if(lyzepCommonHist)
1878   {
1879    avMultDiffFlowLYZEPRP = (lyzepCommonHist->GetHistMultRP())->GetMean();
1880    nEvtsDiffFlowLYZEPRP  = (lyzepCommonHist->GetHistMultRP())->GetEntries();
1881    avMultDiffFlowLYZEPPOI = (lyzepCommonHist->GetHistMultPOI())->GetMean();
1882    nEvtsDiffFlowLYZEPPOI  = (lyzepCommonHist->GetHistMultPOI())->GetEntries();
1883   } 
1884  } 
1885
1886
1887  //----------------------------------------------------------------------------------
1888  //final drawing for differential flow (Pt, RP):
1889  if(plotDiffFlowPtRP)
1890  {
1891   TCanvas* diffFlowPtAllCanvasRP = new TCanvas("Differential Flow (Pt) of RP","Differential Flow (Pt) of RP ",1000,600);
1892   
1893   diffFlowPtAllCanvasRP->Divide(2,1);
1894  
1895   //1st pad is for plot:
1896   (diffFlowPtAllCanvasRP->cd(1))->SetPad(0.0,0.0,0.75,1.0);
1897  
1898   if(styleHistPt)
1899   {
1900    (styleHistPt->GetYaxis())->SetRangeUser(-0.3,1.0);
1901    styleHistPt->Draw();
1902   }
1903   if(pMeshDiffFlowPtRP)
1904   {
1905    pMeshDiffFlowPtRP->Draw("LFSAME");
1906   }
1907  
1908   //MC 
1909   if(plotMCPtRP && mcepCommonHistRes)
1910   { 
1911    (mcepCommonHistRes->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1912   }
1913   //SP 
1914   if(plotSPPtRP && spCommonHistRes)
1915   { 
1916    (spCommonHistRes->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1917   }
1918   //GFC
1919   if(plotGFC2PtRP && gfcCommonHistRes2)Pt
1920   { 
1921    (gfcCommonHistRes2->GetHistDiffFlowPtRP())->Draw("E1PSAME"); 
1922   } 
1923   if(plotGFC4PtRP && gfcCommonHistRes4)
1924   { 
1925    (gfcCommonHistRes4->GetHistDiffFlowPtRP())->Draw("E1PSAME"); 
1926   } 
1927   if(plotGFC6PtRP && gfcCommonHistRes6)
1928   { 
1929    (gfcCommonHistRes6->GetHistDiffFlowPtRP())->Draw("E1PSAME"); 
1930   } 
1931   if(plotGFC8PtRP && gfcCommonHistRes8)
1932   { 
1933    (gfcCommonHistRes8->GetHistDiffFlowPtRP())->Draw("E1PSAME"); 
1934   }    
1935   //QC
1936   if(plotQC2PtRP && qcCommonHistRes2)
1937   { 
1938    (qcCommonHistRes2->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1939   }
1940   if(plotQC4PtRP && qcCommonHistRes4)
1941   { 
1942    (qcCommonHistRes4->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1943   }
1944   if(plotQC6PtRP && qcCommonHistRes6)
1945   { 
1946    //(qcCommonHistRes6->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1947   }
1948   if(plotQC8PtRP && qcCommonHistRes8)
1949   { 
1950    //(qcCommonHistRes8->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1951   }
1952   //LYZ2
1953   if(plotLYZ2PtRP && lyz2CommonHistRes)
1954   { 
1955    (lyz2CommonHistRes->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1956   }
1957   //LYZEP
1958   if(plotLYZEPPtRP && lyzepCommonHistRes)
1959   { 
1960    (lyzepCommonHistRes->GetHistDiffFlowPtRP())->Draw("E1PSAME");
1961   }
1962
1963   //2nd pad is for legend:
1964   (diffFlowPtAllCanvasRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);  
1965     
1966   TLegend* legendDiffFlowPtRP = new TLegend(0.02,0.12,0.97,0.70);
1967   legendDiffFlowPtRP->SetTextFont(72);
1968   legendDiffFlowPtRP->SetTextSize(0.06);
1969  
1970   //legend's entries:Pt
1971   TString *entryDiffMCPtRP    = new TString("MC ....... ");
1972   TString *entryDiffSPPtRP    = new TString("SP ....... ");
1973   TString *entryDiffGFC2PtRP  = new TString("GFC{2} ... ");
1974   TString *entryDiffGFC4PtRP  = new TString("GFC{4} ... ");
1975   TString *entryDiffGFC6PtRP  = new TString("GFC{6} ... ");
1976   TString *entryDiffGFC8PtRP  = new TString("GFC{8} ... "); 
1977   TString *entryDiffQC2PtRP   = new TString("QC{2} .... ");
1978   TString *entryDiffQC4PtRP   = new TString("QC{4} .... ");
1979   TString *entryDiffQC6PtRP   = new TString("QC{6} .... ");
1980   TString *entryDiffQC8PtRP   = new TString("QC{8} .... ");
1981   TString *entryDiffLYZ2PtRP  = new TString("LYZ ...... ");
1982   TString *entryDiffLYZEPPtRP = new TString("LYZEP ... ");
1983   
1984   //MC
1985   if(mcepCommonHistRes)
1986   {
1987    (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillStyle(meshStyleDiffFlowPtRP);
1988    (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillColor(meshColorDiffFlowPtRP);
1989    entryDiffMCPtRP->Append("M = ");
1990    (*entryDiffMCPtRP)+=(Long_t)avMultDiffFlowMCRP;
1991    entryDiffMCPtRP->Append(", N = ");
1992    (*entryDiffMCPtRP)+=(Long_t)nEvtsDiffFlowMCRP; 
1993    legendDiffFlowPtRP->AddEntry(mcepCommonHistRes->GetHistDiffFlowPtRP(),entryDiffMCPtRP->Data(),"f");
1994   }
1995   
1996   //SP
1997   if(spCommonHistRes)
1998   {
1999    entryDiffSPPtRP->Append("M = ");
2000    (*entryDiffSPPtRP)+=(Long_t)avMultDiffFlowSPRP;
2001    entryDiffSPPtRP->Append(", N = ");
2002    (*entryDiffSPPtRP)+=(Long_t)nEvtsDiffFlowSPRP; 
2003    legendDiffFlowPtRP->AddEntry(spCommonHistRes->GetHistDiffFlowPtRP(),entryDiffSPPtRP->Data(),"p");
2004   }
2005
2006   //GFC
2007   if(plotGFC2PtRP && gfcCommonHistRes2)
2008   {
2009    entryDiffGFC2PtRP->Append("M = ");
2010    (*entryDiffGFC2PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2011    entryDiffGFC2PtRP->Append(", N = ");
2012    (*entryDiffGFC2PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2013    legendDiffFlowPtRP->AddEntry(gfcCommonHistRes2->GetHistDiffFlowPtRP(),entryDiffGFC2PtRP->Data(),"p");
2014   }
2015   if(plotGFC4PtRP && gfcCommonHistRes4)
2016   {
2017    entryDiffGFC4PtRP->Append("M = ");
2018    (*entryDiffGFC4PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2019    entryDiffGFC4PtRP->Append(", N = ");
2020    (*entryDiffGFC4PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2021    legendDiffFlowPtRP->AddEntry(gfcCommonHistRes4->GetHistDiffFlowPtRP(),entryDiffGFC4PtRP->Data(),"p");
2022   }
2023   if(plotGFC6PtRP && gfcCommonHistRes6)
2024   {
2025    entryDiffGFC6PtRP->Append("M = ");
2026    (*entryDiffGFC6PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2027    entryDiffGFC6PtRP->Append(", N = ");
2028    (*entryDiffGFC6PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2029    legendDiffFlowPtRP->AddEntry(gfcCommonHistRes6->GetHistDiffFlowPtRP(),entryDiffGFC6PtRP->Data(),"p");
2030   } 
2031   if(plotGFC8PtRP && gfcCommonHistRes8)
2032   {
2033    entryDiffGFC8PtRP->Append("M = ");
2034    (*entryDiffGFC8PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2035    entryDiffGFC8PtRP->Append(", N = ");
2036    (*entryDiffGFC8PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2037    legendDiffFlowPtRP->AddEntry(gfcCommonHistRes8->GetHistDiffFlowPtRP(),entryDiffGFC8PtRP->Data(),"p");
2038   }  
2039   
2040   //QC
2041   if(plotQC2PtRP && qcCommonHistRes2)
2042   {
2043    entryDiffQC2PtRP->Append("M = ");
2044    (*entryDiffQC2PtRP)+=(Long_t)avMultDiffFlowQC2RP;
2045    entryDiffQC2PtRP->Append(", N = ");
2046    (*entryDiffQC2PtRP)+=(Long_t)nEvtsDiffFlowQC2RP; 
2047    legendDiffFlowPtRP->AddEntry(qcCommonHistRes2->GetHistDiffFlowPtRP(),entryDiffQC2PtRP->Data(),"p");
2048   }
2049   if(plotQC4PtRP && qcCommonHistRes4)
2050   {
2051    entryDiffQC4PtRP->Append("M = ");
2052    (*entryDiffQC4PtRP)+=(Long_t)avMultDiffFlowQC4RP;
2053    entryDiffQC4PtRP->Append(", N = ");
2054    (*entryDiffQC4PtRP)+=(Long_t)nEvtsDiffFlowQC4RP; 
2055    legendDiffFlowPtRP->AddEntry(qcCommonHistRes4->GetHistDiffFlowPtRP(),entryDiffQC4PtRP->Data(),"p");
2056   }
2057   if(plotQC6PtRP && qcCommonHistRes6)
2058   {
2059    entryDiffQC6PtRP->Append("M = ");
2060    (*entryDiffQC6PtRP)+=(Long_t)avMultDiffFlowQC6RP;
2061    entryDiffQC6PtRP->Append(", N = ");
2062    (*entryDiffQC6PtRP)+=(Long_t)nEvtsDiffFlowQC6RP; 
2063    legendDiffFlowPtRP->AddEntry(qcCommonHistRes6->GetHistDiffFlowPtRP(),entryDiffQC6PtRP->Data(),"p");
2064   }
2065   if(plotQC8PtRP && qcCommonHistRes8)
2066   {
2067    entryDiffQC8PtRP->Append("M = ");
2068    (*entryDiffQC8PtRP)+=(Long_t)avMultDiffFlowQC8RP;
2069    entryDiffQC8PtRP->Append(", N = ");
2070    (*entryDiffQC8PtRP)+=(Long_t)nEvtsDiffFlowQC8RP; 
2071    legendDiffFlowPtRP->AddEntry(qcCommonHistRes8->GetHistDiffFlowPtRP(),entryDiffQC8PtRP->Data(),"p");
2072   }
2073   
2074   //LYZ2
2075   if(plotLYZ2PtRP && lyz2CommonHistRes)
2076   {
2077    entryDiffLYZ2PtRP->Append("M = ");
2078    (*entryDiffLYZ2PtRP)+=(Long_t)avMultDiffFlowLYZ2RP;
2079    entryDiffLYZ2PtRP->Append(", N = ");
2080    (*entryDiffLYZ2PtRP)+=(Long_t)nEvtsDiffFlowLYZ2RP; 
2081    legendDiffFlowPtRP->AddEntry(lyz2CommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZ2PtRP->Data(),"p");
2082   }
2083   
2084   //LYZEP
2085   if(plotLYZEPPtRP && lyzepCommonHistRes)
2086   {
2087    entryDiffLYZEPPtRP->Append("M = ");
2088    (*entryDiffLYZEPPtRP)+=(Long_t)avMultDiffFlowLYZEPRP;
2089    entryDiffLYZEPPtRP->Append(", N = ");
2090    (*entryDiffLYZEPPtRP)+=(Long_t)nEvtsDiffFlowLYZEPRP; 
2091    legendDiffFlowPtRP->AddEntry(lyzepCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZEPPtRP->Data(),"p");
2092   }
2093
2094   //drawing finally the legend in the 2nd pad:         
2095   if(textDefault) textDefault->Draw();
2096   
2097   if(legendDiffFlowPtRP)
2098   {
2099    legendDiffFlowPtRP->SetMargin(0.15);
2100    legendDiffFlowPtRP->Draw();
2101   }
2102  }// end of if(plotDiffFlowPtRP)
2103  //----------------------------------------------------------------------------------
2104  
2105  
2106  //----------------------------------------------------------------------------------
2107  //final drawing for differential flow (Eta, RP):
2108  if(plotDiffFlowEtaRP)
2109  {
2110   TCanvas* diffFlowEtaAllCanvasRP = new TCanvas("Differential Flow (Eta) of RP","Differential Flow (Eta) of RP ",1000,600);
2111  
2112   diffFlowEtaAllCanvasRP->Divide(2,1);
2113  
2114   //1st pad is for plot:
2115   (diffFlowEtaAllCanvasRP->cd(1))->SetPad(0.0,0.0,0.75,1.0);
2116   
2117   if(styleHistEta)
2118   {
2119    (styleHistEta->GetYaxis())->SetRangeUser(-0.3,1.0);
2120    styleHistEta->Draw();
2121   }
2122   if(pMeshDiffFlowEtaRP)
2123   {
2124    pMeshDiffFlowEtaRP->Draw("LFSAME");
2125   }
2126  
2127   //MC 
2128   if(plotMCEtaRP && mcepCommonHistRes)
2129   { 
2130    (mcepCommonHistRes->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2131   }
2132   //SP 
2133   if(plotSPEtaRP && spCommonHistRes)
2134   { 
2135    (spCommonHistRes->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2136   }
2137   //GFC
2138   if(plotGFC2EtaRP && gfcCommonHistRes2)
2139   { 
2140    (gfcCommonHistRes2->GetHistDiffFlowEtaRP())->Draw("E1PSAME"); 
2141   } 
2142   if(plotGFC4EtaRP && gfcCommonHistRes4)
2143   { 
2144    (gfcCommonHistRes4->GetHistDiffFlowEtaRP())->Draw("E1PSAME"); 
2145   } 
2146   if(plotGFC6EtaRP && gfcCommonHistRes6)
2147   { 
2148    (gfcCommonHistRes6->GetHistDiffFlowEtaRP())->Draw("E1PSAME"); 
2149   } 
2150   if(plotGFC8EtaRP && gfcCommonHistRes8)
2151   { 
2152    (gfcCommonHistRes8->GetHistDiffFlowEtaRP())->Draw("E1PSAME"); 
2153   }    
2154   //QC
2155   if(plotQC2EtaRP && qcCommonHistRes2)
2156   { 
2157    (qcCommonHistRes2->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2158   }
2159   if(plotQC4EtaRP && qcCommonHistRes4)
2160   { 
2161    (qcCommonHistRes4->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2162   }
2163   if(plotQC6EtaRP && qcCommonHistRes6)
2164   { 
2165    //(qcCommonHistRes6->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2166   }
2167   if(plotQC8EtaRP && qcCommonHistRes8)
2168   { 
2169    //(qcCommonHistRes8->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2170   }
2171   //LYZ2
2172   if(plotLYZ2EtaRP && lyz2CommonHistRes)
2173   { 
2174    (lyz2CommonHistRes->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2175   }
2176   //LYZEP
2177   if(plotLYZEPEtaRP && lyzepCommonHistRes)
2178   { 
2179    (lyzepCommonHistRes->GetHistDiffFlowEtaRP())->Draw("E1PSAME");
2180   }
2181  
2182   //2nd pad is for legend:
2183   (diffFlowEtaAllCanvasRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);
2184
2185   TLegend* legendDiffFlowEtaRP = new TLegend(0.02,0.12,0.97,0.70);
2186   legendDiffFlowEtaRP->SetTextFont(72);
2187   legendDiffFlowEtaRP->SetTextSize(0.06);
2188   
2189   //legend's entries:
2190   TString *entryDiffMCEtaRP   = new TString("MC ....... ");
2191   TString *entryDiffSPEtaRP   = new TString("SP ....... ");
2192   TString *entryDiffGFC2EtaRP = new TString("GFC{2} ... ");
2193   TString *entryDiffGFC4EtaRP = new TString("GFC{4} ... ");
2194   TString *entryDiffGFC6EtaRP = new TString("GFC{6} ... ");
2195   TString *entryDiffGFC8EtaRP = new TString("GFC{8} ... "); 
2196   TString *entryDiffQC2EtaRP  = new TString("QC{2} .... ");
2197   TString *entryDiffQC4EtaRP  = new TString("QC{4} .... ");
2198   TString *entryDiffQC6EtaRP  = new TString("QC{6} .... ");
2199   TString *entryDiffQC8EtaRP  = new TString("QC{8} .... ");
2200   TString *entryDiffLYZ2EtaRP = new TString("LYZ ...... ");
2201   TString *entryDiffLYZEPEtaRP = new TString("LYZEP ... ");
2202  
2203   //MC
2204   if(mcepCommonHistRes)
2205   {
2206    (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetFillStyle(meshStyleDiffFlowEtaRP);
2207    (mcepCommonHistRes->GetHistDiffFlowEtaRP())->SetFillColor(meshColorDiffFlowEtaRP);
2208    entryDiffMCEtaRP->Append("M = ");
2209    (*entryDiffMCEtaRP)+=(Long_t)avMultDiffFlowMCRP;
2210    entryDiffMCEtaRP->Append(", N = ");
2211    (*entryDiffMCEtaRP)+=(Long_t)nEvtsDiffFlowMCRP; 
2212    legendDiffFlowEtaRP->AddEntry(mcepCommonHistRes->GetHistDiffFlowEtaRP(),entryDiffMCEtaRP->Data(),"f");
2213   }
2214   
2215   //SP
2216   if(spCommonHistRes)
2217   {
2218    entryDiffSPEtaRP->Append("M = ");
2219    (*entryDiffSPEtaRP)+=(Long_t)avMultDiffFlowSPRP;
2220    entryDiffSPEtaRP->Append(", N = ");
2221    (*entryDiffSPEtaRP)+=(Long_t)nEvtsDiffFlowSPRP; 
2222    legendDiffFlowEtaRP->AddEntry(spCommonHistRes->GetHistDiffFlowEtaRP(),entryDiffSPEtaRP->Data(),"p");
2223   }
2224  
2225   //GFC
2226   if(plotGFC2EtaRP && gfcCommonHistRes2)
2227   {
2228    entryDiffGFC2EtaRP->Append("M = ");
2229    (*entryDiffGFC2EtaRP)+=(Long_t)avMultDiffFlowGFCRP;
2230    entryDiffGFC2EtaRP->Append(", N = ");
2231    (*entryDiffGFC2EtaRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2232    legendDiffFlowEtaRP->AddEntry(gfcCommonHistRes2->GetHistDiffFlowEtaRP(),entryDiffGFC2EtaRP->Data(),"p");
2233   }
2234   if(plotGFC4EtaRP && gfcCommonHistRes4)
2235   {
2236    entryDiffGFC4EtaRP->Append("M = ");
2237    (*entryDiffGFC4EtaRP)+=(Long_t)avMultDiffFlowGFCRP;
2238    entryDiffGFC4EtaRP->Append(", N = ");
2239    (*entryDiffGFC4EtaRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2240    legendDiffFlowEtaRP->AddEntry(gfcCommonHistRes4->GetHistDiffFlowEtaRP(),entryDiffGFC4EtaRP->Data(),"p");
2241   }
2242   if(plotGFC6EtaRP && gfcCommonHistRes6)
2243   {
2244    entryDiffGFC6EtaRP->Append("M = ");
2245    (*entryDiffGFC6EtaRP)+=(Long_t)avMultDiffFlowGFCRP;
2246    entryDiffGFC6EtaRP->Append(", N = ");
2247    (*entryDiffGFC6EtaRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2248    legendDiffFlowEtaRP->AddEntry(gfcCommonHistRes6->GetHistDiffFlowEtaRP(),entryDiffGFC6EtaRP->Data(),"p");
2249   } 
2250   if(plotGFC8EtaRP && gfcCommonHistRes8)
2251   {
2252    entryDiffGFC8EtaRP->Append("M = ");
2253    (*entryDiffGFC8EtaRP)+=(Long_t)avMultDiffFlowGFCRP;
2254    entryDiffGFC8EtaRP->Append(", N = ");
2255    (*entryDiffGFC8EtaRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2256    legendDiffFlowEtaRP->AddEntry(gfcCommonHistRes8->GetHistDiffFlowEtaRP(),entryDiffGFC8EtaRP->Data(),"p");
2257   }  
2258   
2259   //QC
2260   if(plotQC2EtaRP && qcCommonHistRes2)
2261   {
2262    entryDiffQC2EtaRP->Append("M = ");
2263    (*entryDiffQC2EtaRP)+=(Long_t)avMultDiffFlowQC2RP;
2264    entryDiffQC2EtaRP->Append(", N = ");
2265    (*entryDiffQC2EtaRP)+=(Long_t)nEvtsDiffFlowQC2RP; 
2266    legendDiffFlowEtaRP->AddEntry(qcCommonHistRes2->GetHistDiffFlowEtaRP(),entryDiffQC2EtaRP->Data(),"p");
2267   }
2268   if(plotQC4EtaRP && qcCommonHistRes4)
2269   {
2270    entryDiffQC4EtaRP->Append("M = ");
2271    (*entryDiffQC4EtaRP)+=(Long_t)avMultDiffFlowQC4RP;
2272    entryDiffQC4EtaRP->Append(", N = ");
2273    (*entryDiffQC4EtaRP)+=(Long_t)nEvtsDiffFlowQC4RP; 
2274    legendDiffFlowEtaRP->AddEntry(qcCommonHistRes4->GetHistDiffFlowEtaRP(),entryDiffQC4EtaRP->Data(),"p");
2275   }
2276   if(plotQC6EtaRP && qcCommonHistRes6)
2277   {
2278    entryDiffQC6EtaRP->Append("M = ");
2279    (*entryDiffQC6EtaRP)+=(Long_t)avMultDiffFlowQC6RP;
2280    entryDiffQC6EtaRP->Append(", N = ");
2281    (*entryDiffQC6EtaRP)+=(Long_t)nEvtsDiffFlowQC6RP; 
2282    legendDiffFlowEtaRP->AddEntry(qcCommonHistRes6->GetHistDiffFlowEtaRP(),entryDiffQC6EtaRP->Data(),"p");
2283   }
2284   if(plotQC8EtaRP && qcCommonHistRes8)
2285   {
2286    entryDiffQC8EtaRP->Append("M = ");
2287    (*entryDiffQC8EtaRP)+=(Long_t)avMultDiffFlowQC8RP;
2288    entryDiffQC8EtaRP->Append(", N = ");
2289    (*entryDiffQC8EtaRP)+=(Long_t)nEvtsDiffFlowQC8RP; 
2290    legendDiffFlowEtaRP->AddEntry(qcCommonHistRes8->GetHistDiffFlowEtaRP(),entryDiffQC8EtaRP->Data(),"p");
2291   }
2292  
2293   //LYZ2
2294   if(plotLYZ2EtaRP && lyz2CommonHistRes)
2295   {
2296    entryDiffLYZ2EtaRP->Append("M = ");
2297    (*entryDiffLYZ2EtaRP)+=(Long_t)avMultDiffFlowLYZ2RP;
2298    entryDiffLYZ2EtaRP->Append(", N = ");
2299    (*entryDiffLYZ2EtaRP)+=(Long_t)nEvtsDiffFlowLYZ2RP; 
2300    legendDiffFlowEtaRP->AddEntry(lyz2CommonHistRes->GetHistDiffFlowEtaRP(),entryDiffLYZ2EtaRP->Data(),"p");
2301   }
2302   
2303   //LYZEP
2304   if(plotLYZEPEtaRP && lyzepCommonHistRes)
2305   {
2306    entryDiffLYZEPEtaRP->Append("M = ");
2307    (*entryDiffLYZEPEtaRP)+=(Long_t)avMultDiffFlowLYZEPRP;
2308    entryDiffLYZEPEtaRP->Append(", N = ");
2309    (*entryDiffLYZEPEtaRP)+=(Long_t)nEvtsDiffFlowLYZEPRP; 
2310    legendDiffFlowEtaRP->AddEntry(lyzepCommonHistRes->GetHistDiffFlowEtaRP(),entryDiffLYZEPEtaRP->Data(),"p");
2311   }
2312
2313   //drawing finally the legend in the 2nd pad: 
2314   if(textDefault) textDefault->Draw();    
2315   
2316   if(legendDiffFlowEtaRP)
2317   {
2318    legendDiffFlowEtaRP->SetMargin(0.15);
2319    legendDiffFlowEtaRP->Draw();
2320   }
2321  }// end of if(plotDiffFlowEtaRP)
2322  //----------------------------------------------------------------------------------
2323
2324  
2325  //----------------------------------------------------------------------------------
2326  // final drawing for plot |(v{method}-v{MC})/v{MC}| as a function of pt for RPs  
2327  if(plotDiffFlowPtRelativeToMCRP)
2328  {  
2329   TCanvas* diffFlowPtRelativeToMCRP = new TCanvas("Differential Flow (Pt) of RPs relative to MC","Differential Flow (Pt) of RPs relative to MC",1000,600);
2330   
2331   diffFlowPtRelativeToMCRP->Divide(2,1);
2332  
2333   //1st pad is for plot:
2334   (diffFlowPtRelativeToMCRP->cd(1))->SetPad(0.0,0.0,0.75,1.0);
2335  
2336   if(styleHistPt)
2337   {
2338    TH1D *styleHistPtReleativeToMC = new TH1D(*styleHistPt);
2339    (styleHistPtReleativeToMC->GetYaxis())->SetRangeUser(-4.0,4.0);
2340    (styleHistPtReleativeToMC->GetYaxis())->SetTitle("(v_{n}\{method\} - v_{n}\{MC\})/v_{n}\{MC\}");
2341    styleHistPtReleativeToMC->Draw();
2342   }
2343   
2344   TH1D *spDiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2345   TH1D *gfc2DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2346   TH1D *gfc4DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2347   TH1D *gfc6DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2348   TH1D *gfc8DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2349   TH1D *qc2DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2350   TH1D *qc4DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2351   TH1D *qc6DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2352   TH1D *qc8DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2353   TH1D *lyz2DiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2354   TH1D *lyzepDiffFlowPtRelativeToMCRP = new TH1D("","",iNbinsPt,dPtMin,dPtMax);
2355     
2356   if(mcepCommonHistRes->GetHistDiffFlowPtRP())
2357   {
2358    for(Int_t p=1;p<iNbinsPt+1;p++)
2359    {
2360     Double_t dvnMC = (mcepCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
2361     
2362     // SP:
2363     Double_t dvnSP = 0.;
2364     Double_t dvnErrorSP = 0.;
2365     if(spCommonHistRes && spCommonHistRes->GetHistDiffFlowPtRP())
2366     {
2367      dvnSP = (spCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
2368      dvnErrorSP = (spCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(p);
2369     }
2370     if(dvnMC!=0. && dvnSP!=0.) 
2371     {
2372      spDiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnSP-dvnMC)/dvnMC);
2373      spDiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorSP);
2374     }
2375     
2376     // GFC{2}:
2377     Double_t dvnGFC2 = 0.;
2378     Double_t dvnErrorGFC2 = 0.;
2379     if(gfcCommonHistRes2 && gfcCommonHistRes2->GetHistDiffFlowPtRP())
2380     {
2381      dvnGFC2 = (gfcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinContent(p);
2382      dvnErrorGFC2 = (gfcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinError(p);
2383     }
2384     if(dvnMC!=0. && dvnGFC2!=0.) 
2385     {
2386      gfc2DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC2-dvnMC)/dvnMC);
2387      gfc2DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC2);
2388     }
2389     
2390     // GFC{4}:
2391     Double_t dvnGFC4 = 0.;
2392     Double_t dvnErrorGFC4 = 0.;
2393     if(gfcCommonHistRes4 && gfcCommonHistRes4->GetHistDiffFlowPtRP())
2394     {
2395      dvnGFC4 = (gfcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinContent(p);
2396      dvnErrorGFC4 = (gfcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinError(p);
2397     }
2398     if(dvnMC!=0. && dvnGFC4!=0.) 
2399     {
2400      gfc4DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC4-dvnMC)/dvnMC);
2401      gfc4DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC4);
2402     }
2403     
2404     // GFC{6}:
2405     Double_t dvnGFC6 = 0.;
2406     Double_t dvnErrorGFC6 = 0.;
2407     if(gfcCommonHistRes6 && gfcCommonHistRes6->GetHistDiffFlowPtRP())
2408     {
2409      dvnGFC6 = (gfcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinContent(p);
2410      dvnErrorGFC6 = (gfcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinError(p);
2411     }
2412     if(dvnMC!=0. && dvnGFC6!=0.) 
2413     {
2414      gfc6DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC6-dvnMC)/dvnMC);
2415      gfc6DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC6);
2416     }
2417     
2418     // GFC{8}:
2419     Double_t dvnGFC8 = 0.;
2420     Double_t dvnErrorGFC8 = 0.;
2421     if(gfcCommonHistRes8 && gfcCommonHistRes8->GetHistDiffFlowPtRP())
2422     {
2423      dvnGFC8 = (gfcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinContent(p);
2424      dvnErrorGFC8 = (gfcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinError(p);
2425     }
2426     if(dvnMC!=0. && dvnGFC8!=0.) 
2427     {
2428      gfc8DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnGFC8-dvnMC)/dvnMC);
2429      gfc8DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorGFC8);
2430     }
2431     
2432     // QC{2}:
2433     Double_t dvnQC2 = 0.;
2434     Double_t dvnErrorQC2 = 0.;
2435     if(qcCommonHistRes2 && qcCommonHistRes2->GetHistDiffFlowPtRP())
2436     {
2437      dvnQC2 = (qcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinContent(p);
2438      dvnErrorQC2 = (qcCommonHistRes2->GetHistDiffFlowPtRP())->GetBinError(p);
2439     }
2440     if(dvnMC!=0. && dvnQC2!=0.) 
2441     {
2442      qc2DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC2-dvnMC)/dvnMC);
2443      qc2DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC2);
2444     }
2445     
2446     // QC{4}:
2447     Double_t dvnQC4 = 0.;
2448     Double_t dvnErrorQC4 = 0.;
2449     if(qcCommonHistRes4 && qcCommonHistRes4->GetHistDiffFlowPtRP())
2450     {
2451      dvnQC4 = (qcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinContent(p);
2452      dvnErrorQC4 = (qcCommonHistRes4->GetHistDiffFlowPtRP())->GetBinError(p);
2453     }
2454     if(dvnMC!=0. && dvnQC4!=0.) 
2455     {
2456      qc4DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC4-dvnMC)/dvnMC);
2457      qc4DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC4);
2458     }
2459     
2460     // QC{6}:
2461     Double_t dvnQC6 = 0.;
2462     Double_t dvnErrorQC6 = 0.;
2463     if(qcCommonHistRes6 && qcCommonHistRes6->GetHistDiffFlowPtRP())
2464     {
2465      dvnQC6 = (qcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinContent(p);
2466      dvnErrorQC6 = (qcCommonHistRes6->GetHistDiffFlowPtRP())->GetBinError(p);
2467     }
2468     if(dvnMC!=0. && dvnQC6!=0.) 
2469     {
2470      qc6DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC6-dvnMC)/dvnMC);
2471      qc6DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC6);
2472     }
2473     
2474     // QC{8}:
2475     Double_t dvnQC8 = 0.;
2476     Double_t dvnErrorQC8 = 0.;
2477     if(qcCommonHistRes8 && qcCommonHistRes8->GetHistDiffFlowPtRP())
2478     {
2479      dvnQC8 = (qcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinContent(p);
2480      dvnErrorQC8 = (qcCommonHistRes8->GetHistDiffFlowPtRP())->GetBinError(p);
2481     }
2482     if(dvnMC!=0. && dvnQC8!=0.) 
2483     {
2484      qc8DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnQC8-dvnMC)/dvnMC);
2485      qc8DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorQC8);
2486     }
2487     
2488     // LYZ2:
2489     Double_t dvnLYZ2 = 0.;
2490     Double_t dvnErrorLYZ2 = 0.;
2491     if(lyz2CommonHistRes && lyz2CommonHistRes->GetHistDiffFlowPtRP())
2492     {
2493      dvnLYZ2 = (lyz2CommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
2494      dvnErrorLYZ2 = (lyz2CommonHistRes->GetHistDiffFlowPtRP())->GetBinError(p);
2495     }
2496     if(dvnMC!=0. && dvnLYZ2!=0.) 
2497     {
2498      lyz2DiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnLYZ2-dvnMC)/dvnMC);
2499      lyz2DiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorLYZ2);
2500     }
2501       
2502     // LYZEP:
2503     Double_t dvnLYZEP = 0.;
2504     Double_t dvnErrorLYZEP = 0.;
2505     if(lyzepCommonHistRes && lyzepCommonHistRes->GetHistDiffFlowPtRP())
2506     {
2507      dvnLYZEP = (lyzepCommonHistRes->GetHistDiffFlowPtRP())->GetBinContent(p);
2508      dvnErrorLYZEP = (lyzepCommonHistRes->GetHistDiffFlowPtRP())->GetBinError(p);
2509     }
2510     if(dvnMC!=0. && dvnLYZEP!=0.) 
2511     {
2512      lyzepDiffFlowPtRelativeToMCRP->SetBinContent(p,(dvnLYZEP-dvnMC)/dvnMC);
2513      lyzepDiffFlowPtRelativeToMCRP->SetBinError(p,dvnErrorLYZEP);
2514     }  
2515  
2516    } // end of for(Int_t p=1;p<iNbinsPt+1;p++)
2517   } // end of if(mcepCommonHistRes->GetHistDiffFlowPtRP())
2518   
2519   
2520   // final drawings: 
2521   spDiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorSP);
2522   spDiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleSP);
2523   if(plotSPRelativeToMCRP && spCommonHistRes) spDiffFlowPtRelativeToMCRP->Draw("E1PSAME");
2524   
2525   gfc2DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC2);
2526   gfc2DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC2);
2527   if(plotGFC2RelativeToMCRP && gfcCommonHistRes2) gfc2DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
2528   
2529   gfc4DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC4);
2530   gfc4DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC4);
2531   if(plotGFC4RelativeToMCRP && gfcCommonHistRes4) gfc4DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
2532   
2533   gfc6DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC6);
2534   gfc6DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC6);
2535   if(plotGFC6RelativeToMCRP && gfcCommonHistRes6) gfc6DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
2536   
2537   gfc8DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorGFC8);
2538   gfc8DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleGFC8);
2539   if(plotGFC8RelativeToMCRP && gfcCommonHistRes8) gfc8DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
2540   
2541   qc2DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC2);
2542   qc2DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC2);
2543   if(plotQC2RelativeToMCRP && qcCommonHistRes2) qc2DiffFlowPtRelativeToMCRP->Draw("PSAME");
2544   
2545   qc4DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC4);
2546   qc4DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC4);
2547   if(plotQC4RelativeToMCRP && qcCommonHistRes4) qc4DiffFlowPtRelativeToMCRP->Draw("PSAME");
2548   
2549   qc6DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC6);
2550   qc6DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC6);
2551   if(plotQC6RelativeToMCRP && qcCommonHistRes6) qc6DiffFlowPtRelativeToMCRP->Draw("PSAME");
2552   
2553   qc8DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorQC8);
2554   qc8DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleQC8);
2555   if(plotQC8RelativeToMCRP && qcCommonHistRes8) qc8DiffFlowPtRelativeToMCRP->Draw("PSAME");
2556   
2557   lyz2DiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorLYZ2);
2558   lyz2DiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleLYZ2);
2559   if(plotLYZ2RelativeToMCRP && lyz2CommonHistRes) lyz2DiffFlowPtRelativeToMCRP->Draw("E1PSAME");
2560   
2561   lyzepDiffFlowPtRelativeToMCRP->SetMarkerColor(markerColorLYZEP);
2562   lyzepDiffFlowPtRelativeToMCRP->SetMarkerStyle(markerStyleLYZEP);
2563   if(plotLYZEPRelativeToMCRP && lyzepCommonHistRes) lyzepDiffFlowPtRelativeToMCRP->Draw("E1PSAME");
2564   
2565   //2nd pad is for legend:
2566   (diffFlowPtRelativeToMCRP->cd(2))->SetPad(0.75,0.0,1.0,1.0);
2567   
2568   TLegend* legendDiffFlowPtRP = new TLegend(0.02,0.12,0.97,0.70);
2569   legendDiffFlowPtRP->SetTextFont(72);
2570   legendDiffFlowPtRP->SetTextSize(0.06);
2571  
2572   //legend's entries:Pt
2573   TString *entryDiffMCPtRP    = new TString("MC ....... ");
2574   TString *entryDiffSPPtRP    = new TString("SP ....... ");
2575   TString *entryDiffGFC2PtRP  = new TString("GFC{2} ... ");
2576   TString *entryDiffGFC4PtRP  = new TString("GFC{4} ... ");
2577   TString *entryDiffGFC6PtRP  = new TString("GFC{6} ... ");
2578   TString *entryDiffGFC8PtRP  = new TString("GFC{8} ... "); 
2579   TString *entryDiffQC2PtRP   = new TString("QC{2} .... ");
2580   TString *entryDiffQC4PtRP   = new TString("QC{4} .... ");
2581   TString *entryDiffQC6PtRP   = new TString("QC{6} .... ");
2582   TString *entryDiffQC8PtRP   = new TString("QC{8} .... ");
2583   TString *entryDiffLYZ2PtRP  = new TString("LYZ ...... ");
2584   TString *entryDiffLYZEPPtRP = new TString("LYZEP ... ");
2585   
2586   //MC
2587   if(mcepCommonHistRes)
2588   {
2589    (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillStyle(meshStyleDiffFlowPtRP);
2590    (mcepCommonHistRes->GetHistDiffFlowPtRP())->SetFillColor(meshColorDiffFlowPtRP);
2591    entryDiffMCPtRP->Append("M = ");
2592    (*entryDiffMCPtRP)+=(Long_t)avMultDiffFlowMCRP;
2593    entryDiffMCPtRP->Append(", N = ");
2594    (*entryDiffMCPtRP)+=(Long_t)nEvtsDiffFlowMCRP; 
2595    //legendDiffFlowPtRP->AddEntry(mcepCommonHistRes->GetHistDiffFlowPtRP(),entryDiffMCPtRP->Data(),"f");
2596   }
2597   
2598   //SP
2599   if(spCommonHistRes)
2600   {
2601    entryDiffSPPtRP->Append("M = ");
2602    (*entryDiffSPPtRP)+=(Long_t)avMultDiffFlowSPRP;
2603    entryDiffSPPtRP->Append(", N = ");
2604    (*entryDiffSPPtRP)+=(Long_t)nEvtsDiffFlowSPRP; 
2605    if(plotSPRelativeToMCRP) legendDiffFlowPtRP->AddEntry(spCommonHistRes->GetHistDiffFlowPtRP(),entryDiffSPPtRP->Data(),"p");
2606   }
2607
2608   //GFC
2609   if(plotGFC2PtRP && gfcCommonHistRes2)
2610   {
2611    entryDiffGFC2PtRP->Append("M = ");
2612    (*entryDiffGFC2PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2613    entryDiffGFC2PtRP->Append(", N = ");
2614    (*entryDiffGFC2PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2615    if(plotGFC2RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes2->GetHistDiffFlowPtRP(),entryDiffGFC2PtRP->Data(),"p");
2616   }
2617   if(plotGFC4PtRP && gfcCommonHistRes4)
2618   {
2619    entryDiffGFC4PtRP->Append("M = ");
2620    (*entryDiffGFC4PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2621    entryDiffGFC4PtRP->Append(", N = ");
2622    (*entryDiffGFC4PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2623    if(plotGFC4RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes4->GetHistDiffFlowPtRP(),entryDiffGFC4PtRP->Data(),"p");
2624   }
2625   if(plotGFC6PtRP && gfcCommonHistRes6)
2626   {
2627    entryDiffGFC6PtRP->Append("M = ");
2628    (*entryDiffGFC6PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2629    entryDiffGFC6PtRP->Append(", N = ");
2630    (*entryDiffGFC6PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2631    if(plotGFC6RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes6->GetHistDiffFlowPtRP(),entryDiffGFC6PtRP->Data(),"p");
2632   } 
2633   if(plotGFC8PtRP && gfcCommonHistRes8)
2634   {
2635    entryDiffGFC8PtRP->Append("M = ");
2636    (*entryDiffGFC8PtRP)+=(Long_t)avMultDiffFlowGFCRP;
2637    entryDiffGFC8PtRP->Append(", N = ");
2638    (*entryDiffGFC8PtRP)+=(Long_t)nEvtsDiffFlowGFCRP; 
2639    if(plotGFC8RelativeToMCRP) legendDiffFlowPtRP->AddEntry(gfcCommonHistRes8->GetHistDiffFlowPtRP(),entryDiffGFC8PtRP->Data(),"p");
2640   }  
2641   
2642   //QC
2643   if(plotQC2PtRP && qcCommonHistRes2)
2644   {
2645    entryDiffQC2PtRP->Append("M = ");
2646    (*entryDiffQC2PtRP)+=(Long_t)avMultDiffFlowQC2RP;
2647    entryDiffQC2PtRP->Append(", N = ");
2648    (*entryDiffQC2PtRP)+=(Long_t)nEvtsDiffFlowQC2RP; 
2649    if(plotQC2RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes2->GetHistDiffFlowPtRP(),entryDiffQC2PtRP->Data(),"p");
2650   }
2651   if(plotQC4PtRP && qcCommonHistRes4)
2652   {
2653    entryDiffQC4PtRP->Append("M = ");
2654    (*entryDiffQC4PtRP)+=(Long_t)avMultDiffFlowQC4RP;
2655    entryDiffQC4PtRP->Append(", N = ");
2656    (*entryDiffQC4PtRP)+=(Long_t)nEvtsDiffFlowQC4RP; 
2657    if(plotQC4RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes4->GetHistDiffFlowPtRP(),entryDiffQC4PtRP->Data(),"p");
2658   }
2659   if(plotQC6PtRP && qcCommonHistRes6)
2660   {
2661    entryDiffQC6PtRP->Append("M = ");
2662    (*entryDiffQC6PtRP)+=(Long_t)avMultDiffFlowQC6RP;
2663    entryDiffQC6PtRP->Append(", N = ");
2664    (*entryDiffQC6PtRP)+=(Long_t)nEvtsDiffFlowQC6RP; 
2665    if(plotQC6RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes6->GetHistDiffFlowPtRP(),entryDiffQC6PtRP->Data(),"p");
2666   }
2667   if(plotQC8PtRP && qcCommonHistRes8)
2668   {
2669    entryDiffQC8PtRP->Append("M = ");
2670    (*entryDiffQC8PtRP)+=(Long_t)avMultDiffFlowQC8RP;
2671    entryDiffQC8PtRP->Append(", N = ");
2672    (*entryDiffQC8PtRP)+=(Long_t)nEvtsDiffFlowQC8RP; 
2673    if(plotQC8RelativeToMCRP) legendDiffFlowPtRP->AddEntry(qcCommonHistRes8->GetHistDiffFlowPtRP(),entryDiffQC8PtRP->Data(),"p");
2674   }
2675   
2676   //LYZ2
2677   if(plotLYZ2PtRP && lyz2CommonHistRes)
2678   {
2679    entryDiffLYZ2PtRP->Append("M = ");
2680    (*entryDiffLYZ2PtRP)+=(Long_t)avMultDiffFlowLYZ2RP;
2681    entryDiffLYZ2PtRP->Append(", N = ");
2682    (*entryDiffLYZ2PtRP)+=(Long_t)nEvtsDiffFlowLYZ2RP; 
2683    if(plotLYZ2RelativeToMCRP) legendDiffFlowPtRP->AddEntry(lyz2CommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZ2PtRP->Data(),"p");
2684   }
2685   
2686   //LYZEP
2687   if(plotLYZEPPtRP && lyzepCommonHistRes)
2688   {
2689    entryDiffLYZEPPtRP->Append("M = ");
2690    (*entryDiffLYZEPPtRP)+=(Long_t)avMultDiffFlowLYZEPRP;
2691    entryDiffLYZEPPtRP->Append(", N = ");
2692    (*entryDiffLYZEPPtRP)+=(Long_t)nEvtsDiffFlowLYZEPRP; 
2693    if(plotLYZEPRelativeToMCRP) legendDiffFlowPtRP->AddEntry(lyzepCommonHistRes->GetHistDiffFlowPtRP(),entryDiffLYZEPPtRP->Data(),"p");
2694   }
2695
2696   //drawing finally the legend in the 2nd pad:         
2697   if(textDefault) textDefault->Draw();
2698   
2699   if(legendDiffFlowPtRP)
2700   {
2701    legendDiffFlowPtRP->SetMargin(0.15);
2702    legendDiffFlowPtRP->Draw();
2703   } 
2704  } 
2705  //----------------------------------------------------------------------------------
2706
2707  //----------------------------------------------------------------------------------
2708  //final drawing for differential flow (Pt, POI):
2709  if(plotDiffFlowPtPOI)
2710  {
2711   TCanvas* diffFlowPtAllCanvasPOI = new TCanvas("Differential Flow (Pt) of POI","Differential Flow (Pt) of POI ",1000,600);
2712  
2713   diffFlowPtAllCanvasPOI->Divide(2,1);
2714  
2715   //1st pad is for plot:
2716   (diffFlowPtAllCanvasPOI->cd(1))->SetPad(0.0,0.0,0.75,1.0);
2717   
2718   if(styleHistPt)
2719   {
2720    (styleHistPt->GetYaxis())->SetRangeUser(-0.3,1.0);
2721    styleHistPt->Draw();
2722   }
2723   if(pMeshDiffFlowPtPOI)
2724   {
2725    pMeshDiffFlowPtPOI->Draw("LFSAME");
2726   }
2727  
2728   //MC 
2729   if(plotMCPtPOI && mcepCommonHistRes)
2730   { 
2731    (mcepCommonHistRes->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2732   }
2733   //SP 
2734   if(plotSPPtPOI && spCommonHistRes)
2735   { 
2736    (spCommonHistRes->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2737   }
2738   //GFC
2739   if(plotGFC2PtPOI && gfcCommonHistRes2)
2740   { 
2741    (gfcCommonHistRes2->GetHistDiffFlowPtPOI())->Draw("E1PSAME"); 
2742   } 
2743   if(plotGFC4PtPOI && gfcCommonHistRes4)
2744   { 
2745    (gfcCommonHistRes4->GetHistDiffFlowPtPOI())->Draw("E1PSAME"); 
2746   } 
2747   if(plotGFC6PtPOI && gfcCommonHistRes6)
2748   { 
2749    (gfcCommonHistRes6->GetHistDiffFlowPtPOI())->Draw("E1PSAME"); 
2750   } 
2751   if(plotGFC8PtPOI && gfcCommonHistRes8)
2752   { 
2753    (gfcCommonHistRes8->GetHistDiffFlowPtPOI())->Draw("E1PSAME"); 
2754   }    
2755   //QC
2756   if(plotQC2PtPOI && qcCommonHistRes2)
2757   { 
2758    (qcCommonHistRes2->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2759   }
2760   if(plotQC4PtPOI && qcCommonHistRes4)
2761   { 
2762    (qcCommonHistRes4->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2763   }
2764   if(plotQC6PtPOI && qcCommonHistRes6)
2765   { kTRUE;
2766    //(qcCommonHistRes6->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2767   }
2768   if(plotQC8PtPOI && qcCommonHistRes8)
2769   { 
2770    //(qcCommonHistRes8->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2771   }
2772   //LYZ2
2773   if(plotLYZ2PtPOI && lyz2CommonHistRes)
2774   { 
2775    (lyz2CommonHistRes->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2776   }
2777   //LYZEP
2778   if(plotLYZEPPtPOI && lyzepCommonHistRes)
2779   { 
2780    (lyzepCommonHistRes->GetHistDiffFlowPtPOI())->Draw("E1PSAME");
2781   }
2782  
2783   //2nd pad is for legend:
2784   (diffFlowPtAllCanvasPOI->cd(2))->SetPad(0.75,0.0,1.0,1.0);
2785
2786   TLegend* legendDiffFlowPtPOI = new TLegend(0.02,0.12,0.97,0.70);
2787   legendDiffFlowPtPOI->SetTextFont(72);
2788   legendDiffFlowPtPOI->SetTextSize(0.06);
2789  
2790   //legend's entries:
2791   TString *entryDiffMCPtPOI   = new TString("MC ....... ");
2792   TString *entryDiffSPPtPOI   = new TString("SP ....... ");
2793   TString *entryDiffGFC2PtPOI = new TString("GFC{2} ... ");
2794   TString *entryDiffGFC4PtPOI = new TString("GFC{4} ... ");
2795   TString *entryDiffGFC6PtPOI = new TString("GFC{6} ... ");
2796   TString *entryDiffGFC8PtPOI = new TString("GFC{8} ... "); 
2797   TString *entryDiffQC2PtPOI  = new TString("QC{2} .... ");
2798   TString *entryDiffQC4PtPOI  = new TString("QC{4} .... ");
2799   TString *entryDiffQC6PtPOI  = new TString("QC{6} .... ");
2800   TString *entryDiffQC8PtPOI  = new TString("QC{8} .... ");
2801   TString *entryDiffLYZ2PtPOI = new TString("LYZ ...... ");
2802   TString *entryDiffLYZEPPtPOI = new TString("LYZEP ... "); 
2803  
2804   //MC
2805   if(mcepCommonHistRes)
2806   {
2807    (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetFillStyle(meshStyleDiffFlowPtPOI);
2808    (mcepCommonHistRes->GetHistDiffFlowPtPOI())->SetFillColor(meshColorDiffFlowPtPOI);
2809    entryDiffMCPtPOI->Append("M = ");
2810    (*entryDiffMCPtPOI)+=(Long_t)avMultDiffFlowMCPOI;
2811    entryDiffMCPtPOI->Append(", N = ");
2812    (*entryDiffMCPtPOI)+=(Long_t)nEvtsDiffFlowMCPOI; 
2813    legendDiffFlowPtPOI->AddEntry(mcepCommonHistRes->GetHistDiffFlowPtPOI(),entryDiffMCPtPOI->Data(),"f");
2814   }
2815   
2816   //SP
2817   if(spCommonHistRes)
2818   {
2819    entryDiffSPPtPOI->Append("M = ");
2820    (*entryDiffSPPtPOI)+=(Long_t)avMultDiffFlowSPPOI;
2821    entryDiffSPPtPOI->Append(", N = ");
2822    (*entryDiffSPPtPOI)+=(Long_t)nEvtsDiffFlowSPPOI; 
2823    legendDiffFlowPtPOI->AddEntry(spCommonHistRes->GetHistDiffFlowPtPOI(),entryDiffSPPtPOI->Data(),"p");
2824   }
2825
2826   //GFC
2827   if(plotGFC2PtPOI && gfcCommonHistRes2)
2828   {
2829    entryDiffGFC2PtPOI->Append("M = ");
2830    (*entryDiffGFC2PtPOI)+=(Long_t)avMultDiffFlowGFCPOI;
2831    entryDiffGFC2PtPOI->Append(", N = ");
2832    (*entryDiffGFC2PtPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
2833    legendDiffFlowPtPOI->AddEntry(gfcCommonHistRes2->GetHistDiffFlowPtPOI(),entryDiffGFC2PtPOI->Data(),"p");
2834   }
2835   if(plotGFC4PtPOI && gfcCommonHistRes4)
2836   {
2837    entryDiffGFC4PtPOI->Append("M = ");
2838    (*entryDiffGFC4PtPOI)+=(Long_t)avMultDiffFlowGFCPOI;
2839    entryDiffGFC4PtPOI->Append(", N = ");
2840    (*entryDiffGFC4PtPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
2841    legendDiffFlowPtPOI->AddEntry(gfcCommonHistRes4->GetHistDiffFlowPtPOI(),entryDiffGFC4PtPOI->Data(),"p");
2842   }
2843   if(plotGFC6PtPOI && gfcCommonHistRes6)
2844   {
2845    entryDiffGFC6PtPOI->Append("M = ");
2846    (*entryDiffGFC6PtPOI)+=(Long_t)avMultDiffFlowGFCPOI;
2847    entryDiffGFC6PtPOI->Append(", N = ");
2848    (*entryDiffGFC6PtPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
2849    legendDiffFlowPtPOI->AddEntry(gfcCommonHistRes6->GetHistDiffFlowPtPOI(),entryDiffGFC6PtPOI->Data(),"p");
2850   } 
2851   if(plotGFC8PtPOI && gfcCommonHistRes8)
2852   {
2853    entryDiffGFC8PtPOI->Append("M = ");
2854    (*entryDiffGFC8PtPOI)+=(Long_t)avMultDiffFlowGFCPOI;
2855    entryDiffGFC8PtPOI->Append(", N = ");
2856    (*entryDiffGFC8PtPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
2857    legendDiffFlowPtPOI->AddEntry(gfcCommonHistRes8->GetHistDiffFlowPtPOI(),entryDiffGFC8PtPOI->Data(),"p");
2858   }  
2859   
2860   //QC
2861   if(plotQC2PtPOI && qcCommonHistRes2)
2862   {
2863    entryDiffQC2PtPOI->Append("M = ");
2864    (*entryDiffQC2PtPOI)+=(Long_t)avMultDiffFlowQC2POI;
2865    entryDiffQC2PtPOI->Append(", N = ");
2866    (*entryDiffQC2PtPOI)+=(Long_t)nEvtsDiffFlowQC2POI; 
2867    legendDiffFlowPtPOI->AddEntry(qcCommonHistRes2->GetHistDiffFlowPtPOI(),entryDiffQC2PtPOI->Data(),"p");
2868   }
2869   if(plotQC4PtPOI && qcCommonHistRes4)
2870   {
2871    entryDiffQC4PtPOI->Append("M = ");
2872    (*entryDiffQC4PtPOI)+=(Long_t)avMultDiffFlowQC4POI;
2873    entryDiffQC4PtPOI->Append(", N = ");
2874    (*entryDiffQC4PtPOI)+=(Long_t)nEvtsDiffFlowQC4POI; 
2875    legendDiffFlowPtPOI->AddEntry(qcCommonHistRes4->GetHistDiffFlowPtPOI(),entryDiffQC4PtPOI->Data(),"p");
2876   }
2877   if(plotQC6PtPOI && qcCommonHistRes6)
2878   {
2879    entryDiffQC6PtPOI->Append("M = ");
2880    (*entryDiffQC6PtPOI)+=(Long_t)avMultDiffFlowQC6POI;
2881    entryDiffQC6PtPOI->Append(", N = ");
2882    (*entryDiffQC6PtPOI)+=(Long_t)nEvtsDiffFlowQC6POI; 
2883    legendDiffFlowPtPOI->AddEntry(qcCommonHistRes6->GetHistDiffFlowPtPOI(),entryDiffQC6PtPOI->Data(),"p");
2884   }
2885   if(plotQC8PtPOI && qcCommonHistRes8)
2886   {
2887    entryDiffQC8PtPOI->Append("M = ");
2888    (*entryDiffQC8PtPOI)+=(Long_t)avMultDiffFlowQC8POI;
2889    entryDiffQC8PtPOI->Append(", N = ");
2890    (*entryDiffQC8PtPOI)+=(Long_t)nEvtsDiffFlowQC8POI; 
2891    legendDiffFlowPtPOI->AddEntry(qcCommonHistRes8->GetHistDiffFlowPtPOI(),entryDiffQC8PtPOI->Data(),"p");
2892   }
2893  
2894   //LYZ2
2895   if(plotLYZ2PtPOI && lyz2CommonHistRes)
2896   {
2897    entryDiffLYZ2PtPOI->Append("M = ");
2898    (*entryDiffLYZ2PtPOI)+=(Long_t)avMultDiffFlowLYZ2POI;
2899    entryDiffLYZ2PtPOI->Append(", N = ");
2900    (*entryDiffLYZ2PtPOI)+=(Long_t)nEvtsDiffFlowLYZ2POI; 
2901    legendDiffFlowPtPOI->AddEntry(lyz2CommonHistRes->GetHistDiffFlowPtPOI(),entryDiffLYZ2PtPOI->Data(),"p");
2902   }
2903   
2904   //LYZEP
2905   if(plotLYZEPPtPOI && lyzepCommonHistRes)
2906   {
2907    entryDiffLYZEPPtPOI->Append("M = ");
2908    (*entryDiffLYZEPPtPOI)+=(Long_t)avMultDiffFlowLYZEPPOI;
2909    entryDiffLYZEPPtPOI->Append(", N = ");
2910    (*entryDiffLYZEPPtPOI)+=(Long_t)nEvtsDiffFlowLYZEPPOI; 
2911    legendDiffFlowPtPOI->AddEntry(lyzepCommonHistRes->GetHistDiffFlowPtPOI(),entryDiffLYZEPPtPOI->Data(),"p");
2912   }
2913
2914   //drawing finally the legend in the 2nd pad: 
2915   if(textDefault) textDefault->Draw();
2916           
2917   if(legendDiffFlowPtPOI)
2918   {
2919    legendDiffFlowPtPOI->SetMargin(0.15);
2920    legendDiffFlowPtPOI->Draw();
2921   }
2922  }//end of if(plotDiffFlowPtPOI)
2923  //----------------------------------------------------------------------------------
2924
2925
2926  //----------------------------------------------------------------------------------
2927  //final drawing for differential flow (Eta, POI):
2928  if(plotDiffFlowEtaPOI)
2929  {
2930   TCanvas* diffFlowEtaAllCanvasPOI = new TCanvas("Differential Flow (Eta) of POI","Differential Flow (Eta) of POI ",1000,600);
2931  
2932   diffFlowEtaAllCanvasPOI->Divide(2,1);
2933   
2934   //1st pad is for plot:
2935   (diffFlowEtaAllCanvasPOI->cd(1))->SetPad(0.0,0.0,0.75,1.0);
2936  
2937   if(styleHistEta)
2938   {
2939    (styleHistEta->GetYaxis())->SetRangeUser(-0.3,1.0);
2940    styleHistEta->Draw();
2941   }
2942   if(pMeshDiffFlowEtaPOI)
2943   {
2944    pMeshDiffFlowEtaPOI->Draw("LFSAME");
2945   }
2946  
2947   //MC 
2948   if(plotMCEtaPOI && mcepCommonHistRes)
2949   { 
2950    (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
2951   }
2952   //SP 
2953   if(plotSPEtaPOI && spCommonHistRes)
2954   { 
2955    (spCommonHistRes->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
2956   }
2957   //GFC
2958   if(plotGFC2EtaPOI && gfcCommonHistRes2)
2959   { 
2960    (gfcCommonHistRes2->GetHistDiffFlowEtaPOI())->Draw("E1PSAME"); 
2961   } 
2962   if(plotGFC4EtaPOI && gfcCommonHistRes4)
2963   { 
2964    (gfcCommonHistRes4->GetHistDiffFlowEtaPOI())->Draw("E1PSAME"); 
2965   } 
2966   if(plotGFC6EtaPOI && gfcCommonHistRes6)
2967   { 
2968    (gfcCommonHistRes6->GetHistDiffFlowEtaPOI())->Draw("E1PSAME"); 
2969   } 
2970   if(plotGFC8EtaPOI && gfcCommonHistRes8)
2971   { 
2972    (gfcCommonHistRes8->GetHistDiffFlowEtaPOI())->Draw("E1PSAME"); 
2973   }    
2974   //QC
2975   if(plotQC2EtaPOI && qcCommonHistRes2)
2976   { 
2977    (qcCommonHistRes2->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
2978   }
2979   if(plotQC4EtaPOI && qcCommonHistRes4)
2980   { 
2981    (qcCommonHistRes4->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
2982   }
2983   if(plotQC6EtaPOI && qcCommonHistRes6)
2984   { 
2985    //(qcCommonHistRes6->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
2986   }
2987   if(plotQC8EtaPOI && qcCommonHistRes8)
2988   { 
2989    //(qcCommonHistRes8->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
2990   }
2991   //LYZ2
2992   if(plotLYZ2EtaPOI && lyz2CommonHistRes)
2993   { 
2994    (lyz2CommonHistRes->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
2995   }
2996   //LYZEP
2997   if(plotLYZEPEtaPOI && lyzepCommonHistRes)
2998   { 
2999    (lyzepCommonHistRes->GetHistDiffFlowEtaPOI())->Draw("E1PSAME");
3000   }
3001  
3002   //2nd pad is for legend:
3003   (diffFlowEtaAllCanvasPOI->cd(2))->SetPad(0.75,0.0,1.0,1.0);
3004  
3005   TLegend* legendDiffFlowEtaPOI = new TLegend(0.02,0.12,0.97,0.70);
3006   legendDiffFlowEtaPOI->SetTextFont(72);
3007   legendDiffFlowEtaPOI->SetTextSize(0.06);
3008  
3009   //legend's entries:
3010   TString *entryDiffMCEtaPOI    = new TString("MC ....... ");
3011   TString *entryDiffSPEtaPOI    = new TString("SP ....... ");
3012   TString *entryDiffGFC2EtaPOI  = new TString("GFC{2} ... ");
3013   TString *entryDiffGFC4EtaPOI  = new TString("GFC{4} ... ");
3014   TString *entryDiffGFC6EtaPOI  = new TString("GFC{6} ... ");
3015   TString *entryDiffGFC8EtaPOI  = new TString("GFC{8} ... "); 
3016   TString *entryDiffQC2EtaPOI   = new TString("QC{2} .... ");
3017   TString *entryDiffQC4EtaPOI   = new TString("QC{4} .... ");
3018   TString *entryDiffQC6EtaPOI   = new TString("QC{6} .... ");
3019   TString *entryDiffQC8EtaPOI   = new TString("QC{8} .... ");
3020   TString *entryDiffLYZ2EtaPOI  = new TString("LYZ ...... ");
3021   TString *entryDiffLYZEPEtaPOI = new TString("LYZEP ... ");
3022  
3023   //MC
3024   if(mcepCommonHistRes)
3025   {
3026    (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillStyle(meshStyleDiffFlowEtaPOI);
3027    (mcepCommonHistRes->GetHistDiffFlowEtaPOI())->SetFillColor(meshColorDiffFlowEtaPOI);
3028    entryDiffMCEtaPOI->Append("M = ");
3029    (*entryDiffMCEtaPOI)+=(Long_t)avMultDiffFlowMCPOI;
3030    entryDiffMCEtaPOI->Append(", N = ");
3031    (*entryDiffMCEtaPOI)+=(Long_t)nEvtsDiffFlowMCPOI; 
3032    legendDiffFlowEtaPOI->AddEntry(mcepCommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffMCEtaPOI->Data(),"f");
3033   }
3034   
3035   //SP
3036   if(spCommonHistRes)
3037   {
3038    entryDiffSPEtaPOI->Append("M = ");
3039    (*entryDiffSPEtaPOI)+=(Long_t)avMultDiffFlowSPPOI;
3040    entryDiffSPEtaPOI->Append(", N = ");
3041    (*entryDiffSPEtaPOI)+=(Long_t)nEvtsDiffFlowSPPOI; 
3042    legendDiffFlowEtaPOI->AddEntry(spCommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffSPEtaPOI->Data(),"p");
3043   }
3044
3045   //GFC
3046   if(plotGFC2EtaPOI && gfcCommonHistRes2)
3047   {
3048    entryDiffGFC2EtaPOI->Append("M = ");
3049    (*entryDiffGFC2EtaPOI)+=(Long_t)avMultDiffFlowGFCPOI;
3050    entryDiffGFC2EtaPOI->Append(", N = ");
3051    (*entryDiffGFC2EtaPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
3052    legendDiffFlowEtaPOI->AddEntry(gfcCommonHistRes2->GetHistDiffFlowEtaPOI(),entryDiffGFC2EtaPOI->Data(),"p");
3053   }
3054   if(plotGFC4EtaPOI && gfcCommonHistRes4)
3055   {
3056    entryDiffGFC4EtaPOI->Append("M = ");
3057    (*entryDiffGFC4EtaPOI)+=(Long_t)avMultDiffFlowGFCPOI;
3058    entryDiffGFC4EtaPOI->Append(", N = ");
3059    (*entryDiffGFC4EtaPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
3060    legendDiffFlowEtaPOI->AddEntry(gfcCommonHistRes4->GetHistDiffFlowEtaPOI(),entryDiffGFC4EtaPOI->Data(),"p");
3061   }
3062   if(plotGFC6EtaPOI && gfcCommonHistRes6)
3063   {
3064    entryDiffGFC6EtaPOI->Append("M = ");
3065    (*entryDiffGFC6EtaPOI)+=(Long_t)avMultDiffFlowGFCPOI;
3066    entryDiffGFC6EtaPOI->Append(", N = ");
3067    (*entryDiffGFC6EtaPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
3068    legendDiffFlowEtaPOI->AddEntry(gfcCommonHistRes6->GetHistDiffFlowEtaPOI(),entryDiffGFC6EtaPOI->Data(),"p");
3069   } 
3070   if(plotGFC8EtaPOI && gfcCommonHistRes8)
3071   {
3072    entryDiffGFC8EtaPOI->Append("M = ");
3073    (*entryDiffGFC8EtaPOI)+=(Long_t)avMultDiffFlowGFCPOI;
3074    entryDiffGFC8EtaPOI->Append(", N = ");
3075    (*entryDiffGFC8EtaPOI)+=(Long_t)nEvtsDiffFlowGFCPOI; 
3076    legendDiffFlowEtaPOI->AddEntry(gfcCommonHistRes8->GetHistDiffFlowEtaPOI(),entryDiffGFC8EtaPOI->Data(),"p");
3077   }  
3078  
3079   //QC
3080   if(plotQC2EtaPOI && qcCommonHistRes2)
3081   {
3082    entryDiffQC2EtaPOI->Append("M = ");
3083    (*entryDiffQC2EtaPOI)+=(Long_t)avMultDiffFlowQC2POI;
3084    entryDiffQC2EtaPOI->Append(", N = ");
3085    (*entryDiffQC2EtaPOI)+=(Long_t)nEvtsDiffFlowQC2POI; 
3086    legendDiffFlowEtaPOI->AddEntry(qcCommonHistRes2->GetHistDiffFlowEtaPOI(),entryDiffQC2EtaPOI->Data(),"p");
3087   }
3088   if(plotQC4EtaPOI && qcCommonHistRes4)
3089   {
3090    entryDiffQC4EtaPOI->Append("M = ");
3091    (*entryDiffQC4EtaPOI)+=(Long_t)avMultDiffFlowQC4POI;
3092    entryDiffQC4EtaPOI->Append(", N = ");
3093    (*entryDiffQC4EtaPOI)+=(Long_t)nEvtsDiffFlowQC4POI; 
3094    legendDiffFlowEtaPOI->AddEntry(qcCommonHistRes4->GetHistDiffFlowEtaPOI(),entryDiffQC4EtaPOI->Data(),"p");
3095   }
3096   if(plotQC6EtaPOI && qcCommonHistRes6)
3097   {
3098    entryDiffQC6EtaPOI->Append("M = ");
3099    (*entryDiffQC6EtaPOI)+=(Long_t)avMultDiffFlowQC6POI;
3100    entryDiffQC6EtaPOI->Append(", N = ");
3101    (*entryDiffQC6EtaPOI)+=(Long_t)nEvtsDiffFlowQC6POI; 
3102    legendDiffFlowEtaPOI->AddEntry(qcCommonHistRes6->GetHistDiffFlowEtaPOI(),entryDiffQC6EtaPOI->Data(),"p");
3103   }
3104   if(plotQC8EtaPOI && qcCommonHistRes8)
3105   {
3106    entryDiffQC8EtaPOI->Append("M = ");
3107    (*entryDiffQC8EtaPOI)+=(Long_t)avMultDiffFlowQC8POI;
3108    entryDiffQC8EtaPOI->Append(", N = ");
3109    (*entryDiffQC8EtaPOI)+=(Long_t)nEvtsDiffFlowQC8POI; 
3110    legendDiffFlowEtaPOI->AddEntry(qcCommonHistRes8->GetHistDiffFlowEtaPOI(),entryDiffQC8EtaPOI->Data(),"p");
3111   }
3112  
3113   //LYZ2
3114   if(plotLYZ2EtaPOI && lyz2CommonHistRes)
3115   {
3116    entryDiffLYZ2EtaPOI->Append("M = ");
3117    (*entryDiffLYZ2EtaPOI)+=(Long_t)avMultDiffFlowLYZ2POI;
3118    entryDiffLYZ2EtaPOI->Append(", N = ");
3119    (*entryDiffLYZ2EtaPOI)+=(Long_t)nEvtsDiffFlowLYZ2POI; 
3120    legendDiffFlowEtaPOI->AddEntry(lyz2CommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffLYZ2EtaPOI->Data(),"p");
3121   }
3122   
3123   //LYZEP
3124   if(plotLYZEPEtaPOI && lyzepCommonHistRes)
3125   {
3126    entryDiffLYZEPEtaPOI->Append("M = ");
3127    (*entryDiffLYZEPEtaPOI)+=(Long_t)avMultDiffFlowLYZEPPOI;
3128    entryDiffLYZEPEtaPOI->Append(", N = ");
3129    (*entryDiffLYZEPEtaPOI)+=(Long_t)nEvtsDiffFlowLYZEPPOI; 
3130    legendDiffFlowEtaPOI->AddEntry(lyzepCommonHistRes->GetHistDiffFlowEtaPOI(),entryDiffLYZEPEtaPOI->Data(),"p");
3131   }
3132
3133   //drawing finally the legend in the 2nd pad:   
3134   if(textDefault) textDefault->Draw();
3135       
3136   if(legendDiffFlowEtaPOI)
3137   {
3138    legendDiffFlowEtaPOI->SetMargin(0.15);
3139    legendDiffFlowEtaPOI->Draw();
3140   }
3141  }//end of if(plotDiffFlowEtaPOI)
3142  //----------------------------------------------------------------------------------
3143
3144
3145  //=====================================================================================
3146
3147 }
3148
3149 void LoadPlotLibraries(const libModes mode) {
3150   
3151   //--------------------------------------
3152   // Load the needed libraries most of them already loaded by aliroot
3153   //--------------------------------------
3154   gSystem->Load("libTree.so");
3155   gSystem->Load("libGeom.so");
3156   gSystem->Load("libVMC.so");
3157   gSystem->Load("libXMLIO.so");
3158   gSystem->Load("libPhysics.so");
3159   
3160   //----------------------------------------------------------
3161   // >>>>>>>>>>> Local mode <<<<<<<<<<<<<< 
3162   //----------------------------------------------------------
3163   if (mode==mLocal) {
3164     //--------------------------------------------------------
3165     // If you want to use already compiled libraries 
3166     // in the aliroot distribution
3167     //--------------------------------------------------------
3168
3169   //==================================================================================  
3170   //load needed libraries:
3171   gSystem->AddIncludePath("-I$ROOTSYS/include");
3172   gSystem->Load("libTree.so");
3173
3174   // for AliRoot
3175   gSystem->AddIncludePath("-I$ALICE_ROOT/include");
3176   gSystem->Load("libANALYSIS.so");
3177   gSystem->Load("libPWG2flowCommon.so");
3178   cerr<<"libPWG2flowCommon.so loaded ..."<<endl;
3179   
3180   }
3181   
3182   else if (mode==mLocalSource) {
3183  
3184     // In root inline compile
3185   
3186     // Constants  
3187     gROOT->LoadMacro("AliFlowCommon/AliFlowCommonConstants.cxx+");
3188     gROOT->LoadMacro("AliFlowCommon/AliFlowLYZConstants.cxx+");
3189     gROOT->LoadMacro("AliFlowCommon/AliFlowCumuConstants.cxx+");
3190     
3191     // Flow event
3192     gROOT->LoadMacro("AliFlowCommon/AliFlowVector.cxx+"); 
3193     gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimple.cxx+");    
3194     gROOT->LoadMacro("AliFlowCommon/AliFlowEventSimple.cxx+");
3195     
3196     // Cuts
3197     gROOT->LoadMacro("AliFlowCommon/AliFlowTrackSimpleCuts.cxx+");    
3198     
3199     // Output histosgrams
3200     gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHist.cxx+");
3201     gROOT->LoadMacro("AliFlowCommon/AliFlowCommonHistResults.cxx+");
3202     gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist1.cxx+");
3203     gROOT->LoadMacro("AliFlowCommon/AliFlowLYZHist2.cxx+");
3204        
3205     cout << "finished loading macros!" << endl;  
3206     
3207   }  
3208   
3209 }
3210
3211