]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FLOW/papers/arXiv_1207.0900/drawPaperFigure2.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FLOW / papers / arXiv_1207.0900 / drawPaperFigure2.C
1 //=======================================================================//
2 //Macro to draw the main results of the MH analysis:
3 //i) drawCentralityDependence3P:: Draws the <cos(psi1 + psi2 - 2psi3) 
4 //   vs centrality percentile
5 //ii) drawNpartDependence3P:: Draws the <cos(psi1 + psi2 - 2psi3) 
6 //    vs Nparticipants
7 //iii) drawNpartDependenceScaled3P:: Draws the Npart*<cos(psi1 + psi2 - 2psi3) 
8 //     vs Nparticipants
9 //iv) drawCentralityDependenceRP:: Draws the <cos(psi1 + psi2 - 2PsiRP) 
10 //   vs centrality percentile
11 //v) drawNpartDependenceRP:: Draws the <cos(psi1 + psi2 - 2PsiRP) 
12 //    vs Nparticipants
13 //vi) drawNpartDependenceScaledRP:: Draws the Npart*<cos(psi1 + psi2 - 2PsiRP) 
14 //    vs Nparticipants
15 //=======================================================================//
16 Bool_t gPreliminary = kFALSE;
17
18 //+++++++++++++++++++++GLOBAL VARIABLES+++++++++++++++++++++//
19 const Int_t nCentralityBins = 9;
20 TString strCentralityBins[nCentralityBins] = {"0-5","5-10","10-20",
21                                               "20-30","30-40","40-50",
22                                               "50-60","60-70","70-80"};
23 //Double_t gCentralityPercentile[nCentralityBins] = {75.,65.,55.,45.,35.,25.,15.,7.5,2.5};
24 Double_t gCentralityPercentileStar[nCentralityBins] = {1.75,6.75,14.,24.,34.,44.,54.,64.,74.};
25 Double_t gCentralityPercentile[nCentralityBins] = {3.0,8.0,16.,26.,36.,46.,56.,66.,76.};
26 Double_t gCentralityPercentile2[nCentralityBins] = {0.5,5.5,12.,22.,32.,42.,52.,62.,72.};
27 Double_t gCentralityPercentile3[nCentralityBins] = {4.25,9.25,18.,28.,38.,48.,58.,68.,78.};
28 Double_t gCentralityPercentileError[nCentralityBins] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
29 // Double_t gCentralityPercentileSystematicError[nCentralityBins] = {1.5,1.5,2.5,2.5,2.5,2.5,2.5,2.5,2.5};
30 Double_t gCentralityPercentileSystematicError[nCentralityBins] = {0,0,0,0,0,0,0,0,0};
31 Double_t gCentralityPercentileStarSystematicError[nCentralityBins] = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5};
32
33 //================================HIJING================================//
34 Double_t g3pCorrelatorHijingNoFlowPlusMinus[nCentralityBins] = {-1.20093e-07, 1.84157e-07, 1.76266e-07, 7.57471e-07, 1.19105e-06, 4.13612e-06, 1.40261e-05, 4.40286e-05, 9.745345e-05};
35 Double_t g3pCorrelatorHijingNoFlowPlusMinusError[nCentralityBins] = {9.3131e-08, 8.68461e-08, 1.21384e-07, 2.13452e-07, 1.12347e-07, 3.13793e-07, 8.37252e-07, 3.15813e-06, 9.655345e-06};
36 Double_t g3pCorrelatorHijingNoFlowSameCharge[nCentralityBins] = {1.77386e-08, 9.26015e-10, 7.43216e-08, 1.76705e-07, 8.10251e-07, 2.68011e-06, 9.20014e-06, 3.3102e-05, 9.95345e-05};
37 Double_t g3pCorrelatorHijingNoFlowSameChargeError[nCentralityBins] = {2.97636e-08,4.08723e-08, 4.65237e-08, 1.12774e-07, 1.99168e-07, 5.83821e-07, 1.56612e-06, 5.90915e-06, 2.12124e-05};
38 /*Double_t g3pCorrelatorHijingNoFlowPlusMinus[nCentralityBins] = {-1.20093e-07,2.1169e-07,8.38551e-07,1.71174e-06,4.37847e-06,1.05875e-05,2.98748e-05,0.000100555,0.000289372};
39 Double_t g3pCorrelatorHijingNoFlowPlusMinusError[nCentralityBins] = {9.3131e-08,5.3237e-08,4.87755e-08,9.58588e-08,2.42031e-07,4.74851e-07,1.23657e-06,3.81097e-06,1.27354e-05};
40 Double_t g3pCorrelatorHijingNoFlowSameCharge[nCentralityBins] = {1.77386e-08,1.3287e-07,4.17543e-07,5.91545e-07,3.51865e-06,7.17039e-06,2.00607e-05,6.20528e-05,0.000176748};
41 Double_t g3pCorrelatorHijingNoFlowSameChargeError[nCentralityBins] = {2.97636e-08,4.3382e-08,8.9158e-08,1.76401e-07,4.46464e-07,8.82932e-07,2.32232e-06,7.11183e-06,2.31168e-05};*/
42
43 /*Double_t g3pCorrelatorHijingWithFlowPlusMinus[nCentralityBins] = {-1.20093e-07, 1.56519e-07, 2.90847e-07, 7.57471e-07, 1.17141e-06, 4.13612e-06, 2.4549e-06, 2.10261e-05, 7.40286e-05};
44 Double_t g3pCorrelatorHijingWithFlowPlusMinusError[nCentralityBins] = {9.3131e-08, 7.9856e-08, 7.42477e-08, 2.13452e-07, 1.07302e-07, 3.13793e-07, 8.2704e-07, 9.37252e-07, 5.15813e-06};
45 Double_t g3pCorrelatorHijingWithFlowSameCharge[nCentralityBins] = {-5.78124e-07, 4.16894e-08, 3.8112e-07, -1.70606e-07, 8.10251e-07, 2.68011e-06, 2.4549e-06, 3.1102e-05, 8.95345e-05};
46 Double_t g3pCorrelatorHijingWithFlowSameChargeError[nCentralityBins] = {1.80581e-07, 1.45975e-07, 1.56996e-07, 3.96189e-07, 1.99168e-07, 5.83821e-07, 8.2704e-07, 7.90915e-06, 4.12124e-05};*/
47 /*Double_t g3pCorrelatorHijingWithFlowSameCharge[nCentralityBins] = {1.3299e-07,8.4476e-07,2.96354e-06,6.80478e-06,1.45245e-05,2.76715e-05,5.86195e-05,0.00012099,0.000279274};
48 Double_t g3pCorrelatorHijingWithFlowSameChargeError[nCentralityBins] = {9.7787e-08,1.6551e-07,2.17682e-07,4.47015e-07,1.05436e-06,8.82932e-07,5.47122e-06,9.83962e-06,2.75911e-05};
49 Double_t g3pCorrelatorHijingWithFlowPlusMinus[nCentralityBins] = {2.7632e-07,7.3227e-07,4.05092e-06,9.67432e-06,1.98196e-05,3.64523e-05,7.97305e-05,0.000172174,0.000412814};
50 Double_t g3pCorrelatorHijingWithFlowPlusMinusError[nCentralityBins] = {8.3287e-08,1.8366e-07,1.18877e-07,2.43468e-07,5.71375e-07,9.59e-07,2.05589e-06,5.28575e-06,1.51409e-05};*/
51 Double_t g3pCorrelatorHijingWithFlowSameCharge[nCentralityBins] = {1.3299e-08,4.4476e-07,1.96354e-06,3.80478e-06,7.45245e-06,0.76715e-05,2.86195e-05,0.00012099,0.000279274};
52 Double_t g3pCorrelatorHijingWithFlowSameChargeError[nCentralityBins] = {9.7787e-08,1.6551e-07,2.17682e-07,4.47015e-07,6.05436e-08,8.82932e-07,5.47122e-06,9.83962e-06,2.75911e-05};
53 Double_t g3pCorrelatorHijingWithFlowPlusMinus[nCentralityBins] = {2.7632e-08,5.3227e-07,2.05092e-06,6.67432e-06,9.98196e-06,2.64523e-05,4.97305e-05,0.000172174,0.000412814};
54 Double_t g3pCorrelatorHijingWithFlowPlusMinusError[nCentralityBins] = {8.3287e-08,1.8366e-07,1.18877e-07,2.43468e-07,5.71375e-07,9.59e-07,2.05589e-06,5.28575e-06,1.51409e-05};
55
56 Double_t g3pHijingNoFlowAvg[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
57 Double_t g3pHijingNoFlowAvgError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
58 Double_t g3pHijingNoFlowPlusMinus[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
59 Double_t g3pHijingNoFlowPlusMinusError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
60 Double_t g3pHijingNoFlowSameCharge[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
61 Double_t g3pHijingNoFlowSameChargeError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
62
63 Double_t g3pHijingWithFlowAvg[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
64 Double_t g3pHijingWithFlowAvgError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
65 Double_t g3pHijingWithFlowPlusMinus[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
66 Double_t g3pHijingWithFlowPlusMinusError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
67 Double_t g3pHijingWithFlowSameCharge[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
68 Double_t g3pHijingWithFlowSameChargeError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
69 //================================HIJING================================//
70
71 //================================STAR================================//
72 Double_t g3pCorrelatorSTARPlusPlus[nCentralityBins] = {-2.72475e-05,
73                                                        -4.84767e-05,
74                                                        -8.43622e-05,
75                                                        -0.000139391,
76                                                        -0.000212998,
77                                                        -0.000310464,
78                                                        -0.000449019,
79                                                        -0.000531625,
80                                                        10.};
81 Double_t g3pCorrelatorSTARPlusPlusError[nCentralityBins] = {2.51676e-06,
82                                                             2.38477e-06,
83                                                             1.96375e-06,
84                                                             2.50148e-06,
85                                                             3.87569e-06,
86                                                             6.65112e-06,
87                                                             1.36251e-05,
88                                                             3.49563e-05,
89                                                             0.0};
90 Double_t g3pCorrelatorSTARPlusPlusSysErrorHigh[nCentralityBins] = {-2.372263e-05,-4.559134e-05,-8.079906e-05,-0.0001334556,-0.0002038168,-0.0002934094,-0.0004116487,-0.0004651086};
91 Double_t g3pCorrelatorSTARPlusPlusSysErrorLow[nCentralityBins] = {-7.013656e-05,-7.013656e-05,-0.0001010264,-0.0001578065,-0.0002416504,-0.0003675497,-0.0005460016,-0.0007163518};
92
93 Double_t g3pCorrelatorSTARPlusMinus[nCentralityBins] = {-1.16758e-05,
94                                                         -8.2939e-06,
95                                                         -7.9278e-06,
96                                                         -5.81744e-06,
97                                                         -3.32537e-06,
98                                                         1.71515e-05,
99                                                         5.88244e-05,
100                                                         0.000205355,
101                                                         10.};
102 Double_t g3pCorrelatorSTARPlusMinusError[nCentralityBins] = {2.55046e-06,
103                                                              2.41575e-06,
104                                                              1.99013e-06,
105                                                              2.52889e-06,
106                                                              3.90957e-06,
107                                                              6.65273e-06,
108                                                              1.3518e-05,
109                                                              3.40235e-05,
110                                                              0.0};
111 Double_t g3pCorrelatorSTARPlusMinusSysErrorHigh[nCentralityBins] = {-1.202044e-05,-8.387146e-06,-7.959642e-06,-5.834463e-06,-3.335567e-06,1.72155e-05,5.916783e-05,0.0002078669};
112 Double_t g3pCorrelatorSTARPlusMinusSysErrorLow[nCentralityBins] = {-1.199969e-05,-1.199969e-05,-9.493789e-06,-6.585985e-06,-3.772705e-06,2.030513e-05,7.152968e-05,0.0002767107};
113 //================================STAR================================//
114
115 //================================ALICE================================//
116 Double_t gv2[nCentralityBins] = {0.0218688,0.0410256,0.0617027,0.0803975,0.0914567,0.0950293,0.0930474,0.0871609,0.0854715};
117 Double_t gv2Error[nCentralityBins] = {0.00777206,0.0055282,0.00461509,0.00540859,0.00673375,0.00916149,0.0118708,0.0150726,0.0159525};
118
119 Double_t g3pCorrelatorALICEDataSameCharge[nCentralityBins] = {-1.60885e-05,
120                                                               -2.33387e-05,
121                                                               -5.49677e-05,
122                                                               -0.000105864,
123                                                               -0.000166243,
124                                                               -0.000276424,
125                                                               -0.00037915,
126                                                               -0.000425016,
127                                                               -0.000293409}; 
128 Double_t g3pCorrelatorALICEDataSameChargeError[nCentralityBins] = {3.22359e-06,
129                                                                    3.45502e-06,
130                                                                    3.26195e-06,
131                                                                    4.85736e-06,
132                                                                    7.60362e-06,
133                                                                    1.31918e-05,
134                                                                    2.61394e-05,
135                                                                    6.2836e-05,
136                                                                    0.000196171};
137 //Double_t g3pCorrelatorALICEDataSameChargeSystematicError[nCentralityBins] = {3.58357E-05,1.66674E-05,1.27416E-05,1.98483E-05,3.97548E-05,8.97482E-05,0.00010582,0.000233554,0.00031035126};
138 Double_t g3pCorrelatorALICEDataSameChargeSystematicError[nCentralityBins] = {1.6383E-05,1.66674E-05,1.27416E-05,1.98483E-05,3.97548E-05,8.97482E-05,0.00010582,0.000233554,0.00031035126};
139
140 Double_t g3pCorrelatorALICEDataPlusMinus[nCentralityBins] = {-3.25362e-07,
141                                                              3.86547e-06,
142                                                              -3.41652e-06,
143                                                              -1.40672e-05,
144                                                              -2.64535e-05,
145                                                              -3.86616e-05,
146                                                              2.17488e-05,
147                                                              0.000248817,
148                                                              0.00105866};
149 Double_t g3pCorrelatorALICEDataPlusMinusError[nCentralityBins] = {4.40278e-06,
150                                                                   4.87877e-06,
151                                                                   4.57899e-06,
152                                                                   6.81769e-06,
153                                                                   1.06697e-05,
154                                                                   1.83207e-05,
155                                                                   3.62493e-05,
156                                                                   8.68075e-05,
157                                                                   0.000279468};
158 //Double_t g3pCorrelatorALICEDataPlusMinusSystematicError[nCentralityBins] = {3.55452E-05,1.8482E-05,6.31586E-06,1.20367E-05,3.66273E-05,4.12716E-05,8.08092E-05,0.000158143,0.00031038405};
159 Double_t g3pCorrelatorALICEDataPlusMinusSystematicError[nCentralityBins] = {6.80205E-06,1.8482E-05,6.31586E-06,1.20367E-05,3.66273E-05,4.12716E-05,8.08092E-05,0.000158143,0.00031038405};
160
161 Double_t g3pCorrelatorALICEDatav1Fluctustions[nCentralityBins] = {-4.26793e-06,-5.19642e-06,-1.57247e-05,-3.27355e-05,-5.33411e-05,-8.64989e-05,-9.82421e-05,-4.53941e-05,0.000229361};
162 Double_t g3pCorrelatorALICEDatav1FluctustionsError[nCentralityBins] = {3.939e-06,4.5402e-06,1.34675e-05,2.72301e-05,4.30072e-05,7.10439e-05,8.04585e-05,4.27054e-05,0.000153265};
163
164 Double_t g3pCorrelatorALICEDatav1Fluctustions[nCentralityBins] = {-4.26793e-06,-5.19642e-06,-1.57247e-05,-3.27355e-05,-5.33411e-05,-8.64989e-05,-9.82421e-05,-4.53941e-05,0.000229361};
165 Double_t g3pCorrelatorALICEDatav1FluctustionsError[nCentralityBins] = {3.939e-06,4.5402e-06,1.34675e-05,2.72301e-05,4.30072e-05,7.10439e-05,8.04585e-05,4.27054e-05,0.000153265};
166 //================================ALICE================================//
167
168 //============================Toneev et al.=============================//
169 Double_t g3pCorrelatorToneevSameCharge[4] = {-2.*8.4e-07,-2.*0.0168e-03,-2.*0.0338e-03,-2.*0.0588e-03};
170 Double_t g3pCorrelatorToneevSameChargeError[4] = {0.,0.,0.,0.};
171 Double_t gCentralityPercentileToneev[4] = {2.5,20.,45.,67.};
172 Double_t gCentralityPercentileErrorToneev[4] = {0.5,0.5,0.5,0.5};
173 //============================Toneev et al.=============================//
174 //+++++++++++++++++++++END OF VARIABLES+++++++++++++++++++++//
175
176 //_____________________________________________________//
177 void drawPaperFigure2()
178 {
179   //Draws the <cos(psi1 + psi2 - 2psi3) vs centrality percentile
180   gROOT->LoadMacro("SetFlowStyle.C");
181   SetFlowStyle();
182
183   TGaxis::SetMaxDigits(2);
184   
185   //Fix the asymmetric errors for STAR
186   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
187     g3pCorrelatorSTARPlusPlusSysErrorHigh[iBin] = TMath::Abs(g3pCorrelatorSTARPlusPlus[iBin] - g3pCorrelatorSTARPlusPlusSysErrorHigh[iBin]);
188     g3pCorrelatorSTARPlusPlusSysErrorLow[iBin] = TMath::Abs(g3pCorrelatorSTARPlusPlus[iBin] - g3pCorrelatorSTARPlusPlusSysErrorLow[iBin]);
189     //Printf("%lf - %lf - %lf",g3pCorrelatorSTARPlusPlus[iBin],g3pCorrelatorSTARPlusPlusSysErrorLow[iBin],g3pCorrelatorSTARPlusPlusSysErrorHigh[iBin]);
190
191     g3pCorrelatorSTARPlusMinusSysErrorHigh[iBin] = TMath::Abs(g3pCorrelatorSTARPlusMinus[iBin] - g3pCorrelatorSTARPlusMinusSysErrorHigh[iBin]);
192     g3pCorrelatorSTARPlusMinusSysErrorLow[iBin] = TMath::Abs(g3pCorrelatorSTARPlusMinus[iBin] - g3pCorrelatorSTARPlusMinusSysErrorLow[iBin]);
193     //Printf("%lf - %lf - %lf",g3pCorrelatorSTARPlusMinus[iBin],g3pCorrelatorSTARPlusMinusSysErrorLow[iBin],g3pCorrelatorSTARPlusMinusSysErrorHigh[iBin]);
194   }
195
196   //Teany-Yan
197   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
198     g3pCorrelatorALICEDatav1Fluctustions[iBin] = 0.5*(g3pCorrelatorALICEDataPlusMinus[iBin] + g3pCorrelatorALICEDataSameCharge[iBin]);
199     //g3pCorrelatorALICEDatav1FluctustionsError[iBin] = 0.1*g3pCorrelatorALICEDatav1Fluctustions[iBin];
200     g3pCorrelatorALICEDatav1FluctustionsError[iBin] = 0.5*TMath::Sqrt(TMath::Power(g3pCorrelatorALICEDataPlusMinusError[iBin],2) + TMath::Power(g3pCorrelatorALICEDataSameChargeError[iBin],2));
201   }
202
203   //HIJING
204   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
205     //no flow
206     g3pHijingNoFlowPlusMinus[iBin] = g3pCorrelatorHijingNoFlowPlusMinus[iBin]/gv2[iBin];
207     g3pHijingNoFlowPlusMinusError[iBin] = (1./gv2[iBin])*TMath::Sqrt(TMath::Power((g3pCorrelatorHijingNoFlowPlusMinus[iBin]*gv2Error[iBin]/gv2[iBin]),2) + TMath::Power(g3pCorrelatorHijingNoFlowPlusMinusError[iBin],2));
208
209     g3pHijingNoFlowSameCharge[iBin] = g3pCorrelatorHijingNoFlowSameCharge[iBin]/gv2[iBin];
210     g3pHijingNoFlowSameChargeError[iBin] = (1./gv2[iBin])*TMath::Sqrt(TMath::Power((g3pCorrelatorHijingNoFlowSameCharge[iBin]*gv2Error[iBin]/gv2[iBin]),2) + TMath::Power(g3pCorrelatorHijingNoFlowSameChargeError[iBin],2));
211
212     g3pHijingNoFlowAvg[iBin] = 0.5*(g3pHijingNoFlowPlusMinus[iBin] + g3pHijingNoFlowSameCharge[iBin]);
213     g3pHijingNoFlowAvgError[iBin] = 0.5*TMath::Sqrt(TMath::Power(g3pHijingNoFlowPlusMinusError[iBin],2) + TMath::Power(g3pHijingNoFlowSameChargeError[iBin],2));
214
215     //with flow
216     g3pHijingWithFlowPlusMinus[iBin] = g3pCorrelatorHijingWithFlowPlusMinus[iBin]/gv2[iBin];
217     g3pHijingWithFlowPlusMinusError[iBin] = (1./gv2[iBin])*TMath::Sqrt(TMath::Power((g3pCorrelatorHijingWithFlowPlusMinus[iBin]*gv2Error[iBin]/gv2[iBin]),2) + TMath::Power(g3pCorrelatorHijingWithFlowPlusMinusError[iBin],2));
218
219     g3pHijingWithFlowSameCharge[iBin] = g3pCorrelatorHijingWithFlowSameCharge[iBin]/gv2[iBin];
220     g3pHijingWithFlowSameChargeError[iBin] = (1./gv2[iBin])*TMath::Sqrt(TMath::Power((g3pCorrelatorHijingWithFlowSameCharge[iBin]*gv2Error[iBin]/gv2[iBin]),2) + TMath::Power(g3pCorrelatorHijingWithFlowSameChargeError[iBin],2));
221
222     g3pHijingWithFlowAvg[iBin] = 0.5*(g3pHijingWithFlowPlusMinus[iBin] + g3pHijingWithFlowSameCharge[iBin]);
223     g3pHijingWithFlowAvgError[iBin] = 0.5*TMath::Sqrt(TMath::Power(g3pHijingWithFlowPlusMinusError[iBin],2) + TMath::Power(g3pHijingWithFlowSameChargeError[iBin],2));
224   }
225
226   //================================================//
227   //v1 fluctuations
228   TH1F *gHistv1Fluctuations = new TH1F("gHistv1Fluctuations",
229                                        ";Centrality percentile;#LT cos(#phi_{#alpha} + #phi_{#beta} - 2#Psi_{RP}) #GT",
230                                        nCentralityBins,0,93);
231   myTGraphSetUpTH(gHistv1Fluctuations,1,myv1FluctColorSame,0,1,myv1FluctColorSame,10,1001,myv1FluctColorSame);
232
233   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
234     gHistv1Fluctuations->SetBinContent(iBin,g3pCorrelatorALICEDatav1Fluctustions[iBin]);
235     gHistv1Fluctuations->SetBinError(iBin,g3pCorrelatorALICEDatav1FluctustionsError[iBin]);
236     
237     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pCorrelatorALICEDatav1Fluctustions[iBin]<<" Â± "<<g3pCorrelatorALICEDatav1FluctustionsError[iBin]<<endl;
238     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pCorrelatorALICEDataSameCharge[iBin]<<" Â± "<<g3pCorrelatorALICEDataSameChargeError[iBin]<<" Â± "<<g3pCorrelatorALICEDataSameChargeSystematicError[iBin]<<endl;
239     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pCorrelatorALICEDataPlusMinus[iBin]<<" Â± "<<g3pCorrelatorALICEDataPlusMinusError[iBin]<<" Â± "<<g3pCorrelatorALICEDataPlusMinusSystematicError[iBin]<<endl;
240     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingWithFlowPlusMinus[iBin]<<" Â± "<<g3pHijingWithFlowPlusMinusError[iBin]<<endl;
241     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingWithFlowSameCharge[iBin]<<" Â± "<<g3pHijingWithFlowSameChargeError[iBin]<<endl;
242     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingWithFlowPlusMinus[iBin]<<" Â± "<<g3pHijingWithFlowPlusMinusError[iBin]<<endl;
243     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingNoFlowSameCharge[iBin]<<" Â± "<<g3pHijingNoFlowSameChargeError[iBin]<<endl;
244     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingNoFlowPlusMinus[iBin]<<" Â± "<<g3pHijingNoFlowPlusMinusError[iBin]<<endl;
245     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingWithFlowPlusMinus[iBin]<<" Â± "<<g3pHijingWithFlowPlusMinusError[iBin]<<endl;
246     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingNoFlowAvg[iBin]<<" Â± "<<g3pHijingNoFlowAvgError[iBin]<<endl;
247     //cout<<"Centrality: "<<strCentralityBins[iBin].Data()<<" "<<g3pHijingWithFlowAvg[iBin]<<" Â± "<<g3pHijingWithFlowAvgError[iBin]<<endl;
248   }
249
250   //================================================//
251   //HIJING without flow
252   TString drawOptions_HIJING = "PZ";
253   int markerColor_HIJING = 32;
254   int markerColor_HIJINGv2 = 32;
255   int lineColor_HIJING = markerColor_HIJING;
256   int lineColor_HIJINGv2 = markerColor_HIJINGv2;
257   int lineStyle_HIJING = 1;
258   int lineStyle_HIJINGv2 = 1;
259   int markerStyle_HIJINGopp = 32;
260   int markerStyle_HIJINGoppv2 = 26;
261   int markerStyle_HIJINGsame = 23;
262   int markerStyle_HIJINGsamev2 = 22;
263   float markerSize_HIJING = 1.*myMarkerSize;
264   TGraphErrors *grHIJINGNoFlowAvg = new TGraphErrors(nCentralityBins,
265                                                      gCentralityPercentile2,
266                                                      g3pHijingNoFlowAvg,
267                                                      gCentralityPercentileError,
268                                                      g3pHijingNoFlowAvgError);
269   myTGraphSetUp(grHIJINGNoFlowAvg,markerStyle_HIJINGopp,markerColor_HIJING,markerSize_HIJING,lineStyle_HIJING,lineColor_HIJING,2,1001,markerColor_HIJING);
270
271   TGraphErrors *grHIJINGNoFlowPlusMinus = new TGraphErrors(nCentralityBins,
272                                                            gCentralityPercentile2,
273                                                            g3pHijingNoFlowPlusMinus,
274                                                            gCentralityPercentileError,
275                                                            g3pHijingNoFlowPlusMinusError);
276   myTGraphSetUp(grHIJINGNoFlowPlusMinus,markerStyle_HIJINGopp,markerColor_HIJING,markerSize_HIJING,lineStyle_HIJING,lineColor_HIJING,2,1001,markerColor_HIJING);
277
278   TGraphErrors *grHIJINGNoFlowSameCharge = new TGraphErrors(nCentralityBins,
279                                                             gCentralityPercentile2,
280                                                             g3pHijingNoFlowSameCharge,
281                                                             gCentralityPercentileError,
282                                                             g3pHijingNoFlowSameChargeError);
283   myTGraphSetUp(grHIJINGNoFlowSameCharge,markerStyle_HIJINGsame,markerColor_HIJING,markerSize_HIJING,lineStyle_HIJING,lineColor_HIJING,2,1001,markerColor_HIJING);
284   //================================================//
285
286   //================================================//
287   //HIJING with flow
288   TGraphErrors *grHIJINGWithFlowAvg = new TGraphErrors(nCentralityBins,
289                                                        gCentralityPercentile3,
290                                                        g3pHijingWithFlowAvg,
291                                                        gCentralityPercentileError,
292                                                        g3pHijingWithFlowAvgError);
293   myTGraphSetUp(grHIJINGWithFlowAvg,markerStyle_HIJINGsamev2,markerColor_HIJINGv2,markerSize_HIJING,lineStyle_HIJINGv2,markerColor_HIJINGv2,2,1001,markerColor_HIJINGv2);
294
295   TGraphErrors *grHIJINGWithFlowPlusMinus = new TGraphErrors(nCentralityBins,
296                                                            gCentralityPercentile3,
297                                                            g3pHijingWithFlowPlusMinus,
298                                                            gCentralityPercentileError,
299                                                            g3pHijingWithFlowPlusMinusError);
300   myTGraphSetUp(grHIJINGWithFlowPlusMinus,markerStyle_HIJINGsamev2,markerColor_HIJINGv2,markerSize_HIJING,lineStyle_HIJINGv2,markerColor_HIJINGv2,2,1001,markerColor_HIJINGv2);
301
302   TGraphErrors *grHIJINGWithFlowSameCharge = new TGraphErrors(nCentralityBins,
303                                                             gCentralityPercentile3,
304                                                             g3pHijingWithFlowSameCharge,
305                                                             gCentralityPercentileError,
306                                                             g3pHijingWithFlowSameChargeError);
307   myTGraphSetUp(grHIJINGWithFlowSameCharge,markerStyle_HIJINGsamev2,markerColor_HIJINGv2,markerSize_HIJING,lineStyle_HIJINGv2,markerColor_HIJINGv2,2,1001,markerColor_HIJINGv2);
308   //================================================//
309
310   //================================================//
311   //Toneev et al.
312   TGraphErrors *grToneevSameCharge = new TGraphErrors(4,gCentralityPercentileToneev,g3pCorrelatorToneevSameCharge,gCentralityPercentileErrorToneev,g3pCorrelatorToneevSameChargeError);
313   myTGraphSetUp(grToneevSameCharge,21,myToneevColor,3,1,myToneevColor,3,1001,myToneevColor);
314   //================================================//
315   int markerColor_ALICE = myDarkRed;
316   int lineColor_ALICE = markerColor_ALICE;
317   int markerStyle_ALICEsame = 20;
318   int markerStyle_ALICEopp = 24;
319   int color_sysErr_STAR = 17;
320   int color_sysErr_ALICE = 25;
321   //(+-)
322   TGraphErrors *grALICEDataPlusMinus = new TGraphErrors(nCentralityBins,
323                                                         gCentralityPercentile,
324                                                         g3pCorrelatorALICEDataPlusMinus,
325                                                         gCentralityPercentileError,
326                                                         g3pCorrelatorALICEDataPlusMinusError);
327   myTGraphSetUp(grALICEDataPlusMinus,markerStyle_ALICEopp,markerColor_ALICE,myMarkerSize,1,lineColor_ALICE,2,1001,markerColor_ALICE);
328
329   TGraphErrors *grALICEDataPlusMinusSystematic = new TGraphErrors(nCentralityBins,
330                                                                   gCentralityPercentile,
331                                                                   g3pCorrelatorALICEDataPlusMinus,
332                                                                   gCentralityPercentileSystematicError,
333                                                                   g3pCorrelatorALICEDataPlusMinusSystematicError);
334   myTGraphSetUp(grALICEDataPlusMinusSystematic,markerStyle_ALICEopp,color_sysErr_ALICE,myMarkerSize,1,color_sysErr_ALICE,10,1001,color_sysErr_ALICE);
335   Printf("ALICE (+-)");
336   for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) 
337     cout<<"Centrality: "<<strCentralityBins[iCentrality].Data()<<" - C "<<g3pCorrelatorALICEDataPlusMinus[iCentrality]<<" - Sys: "<<g3pCorrelatorALICEDataPlusMinusSystematicError[iCentrality]<<" ("<<100*TMath::Abs(g3pCorrelatorALICEDataPlusMinusSystematicError[iCentrality]/g3pCorrelatorALICEDataPlusMinus[iCentrality])<<"%)"<<endl;
338     
339   int markerColor_STAR = 9;
340   int lineColor_STAR = markerColor_STAR;
341   TGraphErrors *grSTARDataPlusMinus = new TGraphErrors(nCentralityBins,
342                                                        gCentralityPercentileStar,
343                                                        g3pCorrelatorSTARPlusMinus,
344                                                        gCentralityPercentileError,
345                                                        g3pCorrelatorSTARPlusMinusError);
346   myTGraphSetUp(grSTARDataPlusMinus,30,markerColor_STAR,myMarkerSize+0.2,1,lineColor_STAR,2,1001,markerColor_STAR);
347   TGraphAsymmErrors *grSTARDataPlusMinusSystematics = new TGraphAsymmErrors(nCentralityBins,gCentralityPercentileStar,g3pCorrelatorSTARPlusMinus,gCentralityPercentileError,gCentralityPercentileError,g3pCorrelatorSTARPlusMinusSysErrorHigh,g3pCorrelatorSTARPlusMinusSysErrorLow);
348     myTGraphSetUp_Asym(grSTARDataPlusMinusSystematics,30,color_sysErr_STAR,myMarkerSize,1,color_sysErr_STAR,10,1001,color_sysErr_STAR);
349
350   //================================================//
351   //(--)&(++)
352   TGraphErrors *grALICEDataSameCharge = new TGraphErrors(nCentralityBins,
353                                                          gCentralityPercentile,
354                                                          g3pCorrelatorALICEDataSameCharge,
355                                                          gCentralityPercentileError,
356                                                          g3pCorrelatorALICEDataSameChargeError);
357   myTGraphSetUp(grALICEDataSameCharge,markerStyle_ALICEsame,markerColor_ALICE,myMarkerSize,1,lineColor_ALICE,2,1001,markerColor_ALICE);
358
359   TGraphErrors *grALICEDataSameChargeSystematic = new TGraphErrors(nCentralityBins,
360                                                                   gCentralityPercentile,
361                                                                   g3pCorrelatorALICEDataSameCharge,
362                                                                   gCentralityPercentileSystematicError,
363                                                                   g3pCorrelatorALICEDataSameChargeSystematicError);;
364   myTGraphSetUp(grALICEDataSameChargeSystematic,markerStyle_ALICEsame,color_sysErr_ALICE,myMarkerSize,1,color_sysErr_ALICE,10,1001,color_sysErr_ALICE);
365     Printf("ALICE (++,--)");
366   for(Int_t iCentrality = 0; iCentrality < nCentralityBins; iCentrality++) 
367     cout<<"Centrality: "<<strCentralityBins[iCentrality].Data()<<" - C "<<g3pCorrelatorALICEDataSameCharge[iCentrality]<<" - Sys: "<<g3pCorrelatorALICEDataSameChargeSystematicError[iCentrality]<<" ("<<100*TMath::Abs(g3pCorrelatorALICEDataSameChargeSystematicError[iCentrality]/g3pCorrelatorALICEDataSameCharge[iCentrality])<<"%)"<<endl;
368
369   TGraphErrors *grSTARDataPlusPlus = new TGraphErrors(nCentralityBins,
370                                                       gCentralityPercentileStar,
371                                                       g3pCorrelatorSTARPlusPlus,
372                                                       gCentralityPercentileError,
373                                                       g3pCorrelatorSTARPlusPlusError);
374   myTGraphSetUp(grSTARDataPlusPlus,29,markerColor_STAR,myMarkerSize+0.4,1,lineColor_STAR,2,1001,markerColor_STAR);
375   TGraphAsymmErrors *grSTARDataPlusPlusSystematics = new TGraphAsymmErrors(nCentralityBins,
376                                                                            gCentralityPercentileStar,
377                                                                            g3pCorrelatorSTARPlusPlus,
378                                                                            gCentralityPercentileError,
379                                                                            gCentralityPercentileError,
380                                                                            g3pCorrelatorSTARPlusPlusSysErrorLow,
381                                                                            g3pCorrelatorSTARPlusPlusSysErrorHigh);
382     myTGraphSetUp_Asym(grSTARDataPlusPlusSystematics,29,color_sysErr_STAR,myMarkerSize+0.4,1,color_sysErr_STAR,10,1001,color_sysErr_STAR);
383  
384   //_____________________________________________________//
385   //Draw the results
386   //_____________________________________________________//
387   TLatex *latex = new TLatex();
388   latex->SetTextSize(0.035);
389
390   //====================================//
391   //<cos(psi1+psi2-2phi3)> vs centrality
392   TH2F *gEmpty1 = new TH2F("gEmpty1",
393                           ";centrality, %;#LT cos(#phi_{#alpha} + #phi_{#beta} - 2#Psi_{RP}) #GT",
394                           nCentralityBins,0,70,1000,-7.e-04,6.e-04);
395   gEmpty1->SetStats(kFALSE);
396   //gEmpty1->GetYaxis()->SetTitleOffset(1.8);
397   //gEmpty1->GetXaxis()->SetTitleOffset(1.5);
398   gEmpty1->GetYaxis()->SetTitleSize(0.07);
399   gEmpty1->GetYaxis()->SetTitleOffset(0.85);
400   gEmpty1->GetYaxis()->SetNdivisions(10);
401   gEmpty1->GetXaxis()->SetNdivisions(10);
402
403   TF1 *f1 = new TF1("f1","0",0,1000);
404   f1->SetLineColor(1); f1->SetLineStyle(1); f1->SetLineWidth(1);
405
406   TCanvas *c1 = new TCanvas("c1","Centrality dependence: 3p correlator",
407                             0,0,800,600);
408   TPad *myPad = new TPad("myPad", "The pad",0,0,1,1);
409   myPadSetUp(myPad,0.15,0.065,0.04,0.15);
410   myPad->Draw();
411   myPad->cd();
412   //c1->SetGridx(); c1->SetGridy();
413   gEmpty1->Draw();
414   f1->Draw("same");
415
416   // shift various data points wrt. each other
417   float shift_ALICE = -2.;
418   float shift_STAR = 2.;
419   float shift_HIJING = 6.5;
420   float shift_HIJINGv2 = -0.5;
421   
422   ShiftAlongXaxis_TGraphErrors(grALICEDataPlusMinusSystematic,shift_ALICE);
423   ShiftAlongXaxis_TGraphErrors(grALICEDataSameChargeSystematic,shift_ALICE);
424   ShiftAlongXaxis_TGraphErrors(grALICEDataPlusMinus,shift_ALICE);
425   ShiftAlongXaxis_TGraphErrors(grALICEDataSameCharge,shift_ALICE);
426
427   ShiftAlongXaxis_TGraphAsymmErrors(grSTARDataPlusPlusSystematics,shift_STAR);
428   ShiftAlongXaxis_TGraphAsymmErrors(grSTARDataPlusMinusSystematics,shift_STAR);
429   ShiftAlongXaxis_TGraphErrors(grSTARDataPlusPlus,shift_STAR);
430   ShiftAlongXaxis_TGraphErrors(grSTARDataPlusMinus,shift_STAR);
431   
432   ShiftAlongXaxis_TGraphErrors(grHIJINGWithFlowSameCharge,shift_HIJINGv2);
433   ShiftAlongXaxis_TGraphErrors(grHIJINGWithFlowPlusMinus,shift_HIJINGv2);
434   ShiftAlongXaxis_TGraphErrors(grHIJINGWithFlowAvg,shift_HIJINGv2);
435   ShiftAlongXaxis_TGraphErrors(grHIJINGNoFlowSameCharge,shift_HIJING);
436   ShiftAlongXaxis_TGraphErrors(grHIJINGNoFlowPlusMinus,shift_HIJING);
437   ShiftAlongXaxis_TGraphErrors(grHIJINGNoFlowAvg,shift_HIJING);
438
439   //grHIJINGWithFlowSameCharge->Draw(drawOptions_HIJING);
440   //grHIJINGWithFlowPlusMinus->Draw(drawOptions_HIJING);
441   //grHIJINGWithFlowAvg->Draw(drawOptions_HIJING);
442   //grHIJINGNoFlowSameCharge->Draw(drawOptions_HIJING);
443   //grHIJINGNoFlowPlusMinusAvg->Draw(drawOptions_HIJING);
444   grHIJINGNoFlowAvg->Draw(drawOptions_HIJING);
445
446   gHistv1Fluctuations->Draw("e3,same");
447   grToneevSameCharge->Draw("C");
448
449   grSTARDataPlusPlusSystematics->Draw("P2");
450   grSTARDataPlusPlus->Draw("PZ");
451   grSTARDataPlusMinusSystematics->Draw("P2");
452   grSTARDataPlusMinus->Draw("PZ");
453
454   grALICEDataPlusMinusSystematic->Draw("Z");
455   grALICEDataSameChargeSystematic->Draw("Z");
456   grALICEDataPlusMinus->Draw("PZ");
457   TGraphErrors *grALICEDataPlusMinus_clone = (TGraphErrors*)grALICEDataPlusMinus->Clone("grALICEDataPlusMinus_clone");
458   grALICEDataPlusMinus_clone->SetMarkerSize(0.9*grALICEDataPlusMinus->GetMarkerSize());
459   TGraphErrors *grALICEDataPlusMinus_clone1 = (TGraphErrors*)grALICEDataPlusMinus->Clone("grALICEDataPlusMinus_clone1");
460   grALICEDataPlusMinus_clone1->SetMarkerSize(0.8*grALICEDataPlusMinus->GetMarkerSize());
461   grALICEDataPlusMinus_clone->Draw("PZ");
462   grALICEDataPlusMinus_clone1->Draw("PZ");
463   grALICEDataSameCharge->SetMarkerSize(1.1*grALICEDataSameCharge->GetMarkerSize());
464   grALICEDataSameCharge->Draw("PZ");
465
466   //TLegend *legend1 = new TLegend(0.18,0.54,0.8,0.85,"","brNDC");
467   //TLegend *legend1 = new TLegend(0.19,0.63,0.78,0.88,"","brNDC");
468   TLegend *legend1 = new TLegend(0.17,0.19,0.58,0.33,"","brNDC");
469   myLegendSetUp(legend1,0.04);
470   legend1->SetNColumns(2);
471   //legend->AddEntry("Opposite charge","(+-)","");
472   //legend->AddEntry("Same charge","Same Charge","");
473   legend1->AddEntry(grALICEDataPlusMinusSystematic," ","L");
474   legend1->AddEntry(grALICEDataSameChargeSystematic,"                                                       ","L");
475 //   legend1->AddEntry(grALICEDataSameChargeSystematic,"  ALICE Pb-Pb @ #sqrt{s_{NN}} = 2.76 TeV","lp");
476   legend1->AddEntry(grSTARDataPlusMinusSystematics," ","L");
477   legend1->AddEntry(grSTARDataPlusPlusSystematics,"                                                       ","L");
478 //   legend1->AddEntry("NULL"," ","");
479 //   legend1->AddEntry("NULL"," ","");
480   legend1->AddEntry("NULL"," ","");
481   legend1->AddEntry("NULL"," ","");
482   legend1->AddEntry("NULL"," ","");
483   legend1->AddEntry("NULL"," ","");
484 //   legend1->AddEntry("NULL"," ","");
485 //   legend1->AddEntry("NULL"," ","");
486   //legend1->Draw();
487
488   //TLegend *legend = new TLegend(0.19,0.68,0.78,0.93,"","brNDC");
489   TLegend *legend = new TLegend(0.19,0.75,0.78,0.89,"","brNDC");
490   myLegendSetUp(legend,0.04);
491   legend->SetNColumns(2);
492   //legend->AddEntry("Opposite charge","(+-)","");
493   //legend->AddEntry("Same charge","Same Charge","");
494   legend->AddEntry(grALICEDataSameCharge," ","p");
495   legend->AddEntry(grALICEDataPlusMinus,"  ALICE Pb-Pb @ #sqrt{s_{NN}} = 2.76 TeV","p");
496   legend->AddEntry(grSTARDataPlusPlus," ","p");
497   legend->AddEntry(grSTARDataPlusMinus,"  STAR Au-Au @ #sqrt{s_{NN}} = 0.2 TeV","p");
498   //legend->AddEntry(grHIJINGNoFlowSameCharge," ","p");
499   //legend->AddEntry(grHIJINGNoFlowPlusMinus,"  #LTcos(#phi_{#alpha} + #phi_{#beta} - 2#phi_{c})#GT_{HIJING} / v_{2}{2}","p");
500   //legend->AddEntry(grHIJINGWithFlowSameCharge," ","p");
501   //legend->AddEntry(grHIJINGWithFlowPlusMinus,"  HIJING with v_{2} modulations","p");
502 //   legend->AddEntry(grToneevSameCharge," ","l");
503 //   legend->AddEntry("NULL","  CME expectation (Toneev #font[12]{et al.})","");
504   legend->Draw();
505
506   TLegend *legend3 = new TLegend(0.19,0.675,0.78,0.775,"","brNDC");
507   myLegendSetUp(legend3,0.04);
508   legend3->AddEntry(gHistv1Fluctuations,"  (ALICE) same+opp. mean","L");
509   legend3->Draw();
510
511   TLatex *myText = new TLatex();
512   myText->SetNDC();
513   myText->SetTextSize(0.04);
514   myText->SetTextColor(1);
515   myText->DrawLatex(0.195,0.89,"same");
516   //myText->DrawLatex(0.155,0.34,"same");
517   myText->SetTextColor(1);
518   myText->DrawLatex(0.29,0.89,"opp.");
519   //myText->DrawLatex(0.23,0.34,"opp.");
520  
521   //TLegend *legend2 = new TLegend(0.17,0.19,0.58,0.33,"","brNDC");
522   TLegend *legend2 = new TLegend(0.17,0.19,0.58,0.37,"","brNDC");
523   myLegendSetUp(legend2,0.04);
524   //legend2->SetNColumns(2);
525   //legend2->AddEntry("Opposite charge","(+-)","");
526   //legend2->AddEntry("Same charge","Same Charge","");
527 //   legend2->AddEntry(grToneevSameCharge," Toneev #font[12]{et al.} (same charge)","L");
528   legend2->AddEntry(grHIJINGNoFlowAvg,"  #LTcos(#phi_{#alpha} + #phi_{#beta} - 2#phi_{c})#GT_{HIJING} / v_{2}{2}","p");
529   //legend2->AddEntry(grHIJINGWithFlowAvg,"  HIJING with v_{2} modulations","p");
530   legend2->AddEntry(grToneevSameCharge," CME expectation (Toneev #font[12]{et al.})","L");
531   //legend2->AddEntry(gHistv1Fluctuations," v_{1} fluctuations (same+opp. mean)","L");
532   //legend2->AddEntry(gHistv1Fluctuations,"(ALICE) same+opp. mean","L");
533   legend2->Draw();
534
535   if(gPreliminary) {
536     TLatex *alice = new TLatex(0.25,0.18,"Preliminary");
537     alice->SetNDC();
538     alice->SetTextColor(kRed+2);
539     alice->SetTextSize(0.035);
540     alice->SetLineWidth(2);
541     alice->Draw();
542     
543     TPad *myPadLogo = new TPad("myPadLogo", 
544                                "Pad for ALICE Logo",0.26,0.21,0.41,0.36);
545     //myPadLogo->SetFillColor(2) // color to first figure out where is the pad then comment !
546     myPadSetUp(myPadLogo,0,0,0,0);
547     myPadLogo->Draw();
548     myPadLogo->cd();
549     TASImage *myAliceLogo = new TASImage("alice_logo_transparent.png");
550     myAliceLogo->Draw();
551   }
552
553   c1->SaveAs("figure2.eps");
554   c1->SaveAs("figure2.pdf");
555   c1->SaveAs("figure2.png");
556 }
557
558 //_______________________________________________________________//
559 void SetDataPoints(const char* resultsPath,
560                    Int_t chargeCombination) {
561   //chargeCombination == 0 ==> (+-)
562   //chargeCombination == 1 ==> (++)
563   //chargeCombination == -1 ==> (--)
564   //chargeCombination == 2 ==> (--)&(++)
565
566   TString filename = resultsPath;
567   //if(chargeCombination == 0) filename += "TPCOnly/PlusMinus/outputMH.root";
568   //else if(chargeCombination == 1) filename += "TPCOnly/PlusPlus/outputMH.root";
569   //else if(chargeCombination == -1) filename += "TPCOnly/MinusMinus/outputMH.root"; 
570   //else if(chargeCombination == 2) filename += "TPCOnly/SameCharge/outputMH.root"; 
571   if(chargeCombination == 0) filename += "PlusMinus/TPCOnly/outputMH.root";
572   else if(chargeCombination == 1) filename += "PlusPlus/TPCOnly/outputMH.root";
573   else if(chargeCombination == -1) filename += "MinusMinus/TPCOnly/outputMH.root"; 
574   else if(chargeCombination == 2) filename += "SameCharge/TPCOnly/outputMH.root"; 
575   else {
576     Printf("Wrong charge combinations selected - the supported values are 0, 1 and -1");
577     break;
578   }
579   //Printf("%s",filename.Data());
580   TFile *fInput = TFile::Open(filename.Data());
581   if(!fInput) {
582     Printf("File %s not found!!!",filename.Data());
583     break;
584   } 
585   //fInput->ls();
586
587   TString hist3pName;
588   TH1D *gHist3p;
589   TString histQC2Name;
590   TH1D *gHistQC2;
591   TString histQC4Name;
592   TH1D *gHistQC4;
593
594   
595   Double_t g3pPlusMinusError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
596   Double_t g3pPlusPlusError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
597   Double_t g3pMinusMinusError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
598   Double_t g3pSameChargeError[nCentralityBins] = {0.,0.,0.,0.,0.,0.,0.,0.,0.};
599
600   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
601     hist3pName = "g3pHistName"; hist3pName += strCentralityBins[iBin];
602     gHist3p = dynamic_cast<TH1D *>(fInput->Get(hist3pName.Data()));
603     histQC2Name = "fHistIntegratedFlowRPQC_2;"; histQC2Name += iBin + 1;
604     gHistQC2 = dynamic_cast<TH1D *>(fInput->Get(histQC2Name.Data()));
605     histQC4Name = "fHistIntegratedFlowRPQC_4;"; histQC4Name += iBin + 1;
606     gHistQC4 = dynamic_cast<TH1D *>(fInput->Get(histQC4Name.Data()));
607
608     if(chargeCombination == 0) {
609       g3pCorrelatorALICEDataPlusMinus[iBin] = gHist3p->GetBinContent(1);
610       g3pPlusMinusError[iBin] = gHist3p->GetBinError(1);
611       v2QC2PlusMinus[iBin] = gHistQC2->GetBinContent(1);
612       v2QC2PlusMinusError[iBin] = gHistQC2->GetBinError(1);
613       v2QC4PlusMinus[iBin] = gHistQC4->GetBinContent(1);
614       v2QC4PlusMinusError[iBin] = gHistQC4->GetBinError(1);
615     }
616     if(chargeCombination == 1) {
617       g3pCorrelatorALICEDataPlusPlus[iBin] = gHist3p->GetBinContent(1);
618       g3pPlusPlusError[iBin] = gHist3p->GetBinError(1);
619       v2QC2PlusPlus[iBin] = gHistQC2->GetBinContent(1);
620       v2QC2PlusPlusError[iBin] = gHistQC2->GetBinError(1);
621       v2QC4PlusPlus[iBin] = gHistQC4->GetBinContent(1);
622       v2QC4PlusPlusError[iBin] = gHistQC4->GetBinError(1);
623     }
624     if(chargeCombination == -1) {
625       g3pCorrelatorALICEDataMinusMinus[iBin] = gHist3p->GetBinContent(1);
626       g3pMinusMinusError[iBin] = gHist3p->GetBinError(1);
627       v2QC2MinusMinus[iBin] = gHistQC2->GetBinContent(1);
628       v2QC2MinusMinusError[iBin] = gHistQC2->GetBinError(1);
629       v2QC4MinusMinus[iBin] = gHistQC4->GetBinContent(1);
630       v2QC4MinusMinusError[iBin] = gHistQC4->GetBinError(1);
631     }
632     if(chargeCombination == 2) {
633       g3pCorrelatorALICEDataSameCharge[iBin] = gHist3p->GetBinContent(1);
634       g3pSameChargeError[iBin] = gHist3p->GetBinError(1);
635       v2QC2SameCharge[iBin] = gHistQC2->GetBinContent(1);
636       v2QC2SameChargeError[iBin] = gHistQC2->GetBinError(1);
637       v2QC4SameCharge[iBin] = gHistQC4->GetBinContent(1);
638       v2QC4SameChargeError[iBin] = gHistQC4->GetBinError(1);
639     }
640   }//centrality bin
641
642   for(Int_t iBin = 0; iBin < nCentralityBins; iBin++) {
643     if(chargeCombination == 0) {
644       g3pCorrelatorALICEDataPlusMinus[iBin] /= v2QC2PlusMinus[iBin];
645       g3pCorrelatorALICEDataPlusMinusError[iBin] = TMath::Sqrt(TMath::Power(g3pPlusMinusError[iBin]/v2QC2PlusMinus[iBin],2) + TMath::Power(g3pCorrelatorALICEDataPlusMinus[iBin]*v2QC2PlusMinusError[iBin]/(v2QC2PlusMinus[iBin]*v2QC2PlusMinus[iBin]),2));
646     }
647     if(chargeCombination == 1) {
648       g3pCorrelatorALICEDataPlusPlus[iBin] /= v2QC2PlusPlus[iBin];
649       g3pCorrelatorALICEDataPlusPlusError[iBin] = TMath::Sqrt(TMath::Power(g3pPlusPlusError[iBin]/v2QC2PlusPlus[iBin],2) + TMath::Power(g3pCorrelatorALICEDataPlusPlus[iBin]*v2QC2PlusPlusError[iBin]/(v2QC2PlusPlus[iBin]*v2QC2PlusPlus[iBin]),2));
650     }
651     if(chargeCombination == -1) {
652       g3pCorrelatorALICEDataMinusMinus[iBin] /= v2QC2MinusMinus[iBin];
653       g3pCorrelatorALICEDataMinusMinusError[iBin] = TMath::Sqrt(TMath::Power(g3pMinusMinusError[iBin]/v2QC2MinusMinus[iBin],2) + TMath::Power(g3pCorrelatorALICEDataMinusMinus[iBin]*v2QC2MinusMinusError[iBin]/(v2QC2MinusMinus[iBin]*v2QC2MinusMinus[iBin]),2));
654     }
655     if(chargeCombination == 2) {
656       g3pCorrelatorALICEDataSameCharge[iBin] /= v2QC2SameCharge[iBin];
657       g3pCorrelatorALICEDataSameChargeError[iBin] = TMath::Sqrt(TMath::Power(g3pSameChargeError[iBin]/v2QC2SameCharge[iBin],2) + TMath::Power(g3pCorrelatorALICEDataSameCharge[iBin]*v2QC2SameChargeError[iBin]/(v2QC2SameCharge[iBin]*v2QC2SameCharge[iBin]),2));
658     }
659   }
660 }
661
662 //_______________________________________________________________//
663 void GetCorrelatorAndError(TProfile *g3pCorrelatorVsPt,
664                            Double_t &g3pCorrelatorValue,
665                            Double_t &g3pCorrelatorError,
666                            Int_t iBinLow = 0,
667                            Int_t iBinHigh = 0) {
668   //Function to return the average value of the 3p correlator 
669   //<cos(psi1 + psi2 - 2phi3)> and its error.
670   //The first argument is one of the 3p TProfile objects vs pt.
671   //The second and third argument give the integral and its error.
672   //The fourth and fifth, if specified, indicate the lowest and 
673   //highest bin the calculation should be performed for.
674   Int_t gBinLow = 1, gBinHigh = g3pCorrelatorVsPt->GetNbinsX();
675   if(iBinLow) gBinLow = iBinLow;
676   if(iBinHigh) gBinHigh = iBinHigh;
677   
678   Double_t gSumXi = 0.;
679   Double_t gSumYi = 0.;
680   Double_t gSumXiYi = 0.;
681   Double_t gSumXiYi2 = 0.;
682   Double_t gSumXi2Yi2 = 0.;
683   Double_t gSumDeltaXi2 = 0.;
684   Double_t gSumYi2DeltaXi2 = 0.;
685   Double_t dError = 0.; //Flow code driven error calculation
686
687   Double_t kSumBi = 0., kSumBi2DeltaYi2 = 0.;
688   Double_t kSumYiBi = 0., kSumYi2DeltaBi2 = 0.;
689   Double_t kSumDeltaBi2 = 0.;
690
691   for(Int_t iBin = gBinLow; iBin <= gBinHigh; iBin++) {
692     gSumXi += g3pCorrelatorVsPt->GetBinEntries(iBin);
693     gSumYi += g3pCorrelatorVsPt->GetBinContent(iBin);
694     gSumXiYi += g3pCorrelatorVsPt->GetBinEntries(iBin)*g3pCorrelatorVsPt->GetBinContent(iBin);
695     gSumXiYi2 += g3pCorrelatorVsPt->GetBinEntries(iBin)*TMath::Power(g3pCorrelatorVsPt->GetBinContent(iBin),2);
696     gSumXi2Yi2 += TMath::Power(g3pCorrelatorVsPt->GetBinEntries(iBin)*g3pCorrelatorVsPt->GetBinContent(iBin),2);
697     gSumDeltaXi2 += TMath::Power(g3pCorrelatorVsPt->GetBinError(iBin),2);
698     gSumYi2DeltaXi2 += TMath::Power(g3pCorrelatorVsPt->GetBinContent(iBin),2) + TMath::Power(g3pCorrelatorVsPt->GetBinError(iBin),2);
699
700     dError += g3pCorrelatorVsPt->GetBinEntries(iBin)*g3pCorrelatorVsPt->GetBinEntries(iBin)*g3pCorrelatorVsPt->GetBinError(iBin)*g3pCorrelatorVsPt->GetBinError(iBin);  
701
702     //new error calculation
703     kSumBi += g3pCorrelatorVsPt->GetBinEntries(iBin);
704     kSumYiBi += g3pCorrelatorVsPt->GetBinEntries(iBin)*g3pCorrelatorVsPt->GetBinContent(iBin);
705     kSumBi2DeltaYi2 += TMath::Power(g3pCorrelatorVsPt->GetBinEntries(iBin),2)*TMath::Power(g3pCorrelatorVsPt->GetBinError(iBin),2);
706     kSumYi2DeltaBi2 += TMath::Power(g3pCorrelatorVsPt->GetBinContent(iBin),2)*TMath::Power(TMath::Sqrt(g3pCorrelatorVsPt->GetBinEntries(iBin)),2);  
707     kSumDeltaBi2 += TMath::Power(TMath::Sqrt(g3pCorrelatorVsPt->GetBinEntries(iBin)),2);
708   }
709   
710   g3pCorrelatorValue = -1000.;
711   g3pCorrelatorError = 1000.;
712   
713   if(gSumXi != 0.)
714     g3pCorrelatorValue = gSumXiYi/gSumXi;
715   if((gSumXi != 0.)&&(gSumXiYi != 0.))
716     g3pCorrelatorError = TMath::Abs((gSumXiYi/gSumXi))*TMath::Sqrt(TMath::Power((TMath::Sqrt(gSumYi2DeltaXi2)/gSumXiYi),2) + TMath::Power((gSumDeltaXi2/gSumXi),2));
717     //g3pCorrelatorError = TMath::Sqrt((1./TMath::Power(kSumBi,2))*(kSumBi2DeltaYi2 + kSumYi2DeltaBi2 + TMath::Power(kSumYiBi,2)*kSumDeltaBi2/TMath::Power(kSumBi,2)));
718   if(gSumXi != 0.)
719     dError /= TMath::Power(gSumXi,2);
720   dError = TMath::Sqrt(dError);
721   g3pCorrelatorError = dError;
722
723   /*Int_t iBinCounter = 0;
724   Double_t gSumBinContentTimesWeight = 0., gSumWeight = 0.;
725   Double_t gSumBinContentTimesWeightSquared = 0.;
726   for(Int_t iBin = gBinLow; iBin <= gBinHigh; iBin++) {
727     iBinCounter += 1;
728     
729     gSumBinContentTimesWeight += g3pCorrelatorVsPt->GetBinContent(iBin)*g3pCorrelatorVsPt->GetBinEntries(iBin);
730     gSumWeight += g3pCorrelatorVsPt->GetBinEntries(iBin);
731     gSumBinContentTimesWeightSquared += TMath::Power(gSumBinContentTimesWeight,2);
732   }
733
734   //Printf("%lf - %d",gSumWeight,iBinCounter);
735   //Calculate the g3pCorrelatorValue and its error
736   g3pCorrelatorValue = -1000.;
737   g3pCorrelatorError = 1000.;
738   if((gSumWeight)&&(iBinCounter)) {
739     g3pCorrelatorValue = gSumBinContentTimesWeight/(gSumWeight);
740     g3pCorrelatorError = TMath::Sqrt(gSumBinContentTimesWeightSquared/TMath::Power(gSumWeight,2));
741     }*/
742   
743   //+++++++++++++++++++Extra new: Proper error calculation++++++++++++++++//
744   Double_t kSumBi = 0.;
745   Double_t kSumAiBi = 0.;
746   Double_t kSumBi2DeltaAi2 = 0.;
747   Double_t kSumLong = 0.;
748   Double_t k3pCorrelatorValue = 10000., k3pCorrelatorValueError = 10000.;
749
750   for(Int_t iBin = gBinLow; iBin <= gBinHigh; iBin++) {
751     kSumBi += g3pCorrelatorVsPt->GetBinEntries(iBin);
752     kSumAiBi += g3pCorrelatorVsPt->GetBinContent(iBin)*g3pCorrelatorVsPt->GetBinEntries(iBin);
753     kSumBi2DeltaAi2 += g3pCorrelatorVsPt->GetBinEntries(iBin)*TMath::Power(g3pCorrelatorVsPt->GetBinError(iBin),2);
754   }
755
756   for(Int_t iBin = gBinLow; iBin <= gBinHigh; iBin++) {
757     kSumLong += TMath::Power((g3pCorrelatorVsPt->GetBinContent(iBin)*kSumBi - kSumAiBi),2)*TMath::Power(TMath::Sqrt( g3pCorrelatorVsPt->GetBinEntries(iBin)),2)/TMath::Power(kSumBi,2);
758   }
759
760   k3pCorrelatorValue = kSumAiBi/kSumBi;
761   k3pCorrelatorValueError = TMath::Sqrt((1./TMath::Power(kSumBi,2))*(kSumBi2DeltaAi2 + kSumLong));
762
763   //g3pCorrelatorValue = k3pCorrelatorValue;
764   //g3pCorrelatorError = k3pCorrelatorValueError;
765
766   return;
767 }
768
769
770 //_______________________________________________________________//
771 void DrawMarker(Double_t x, Double_t y, Int_t style, 
772                 Double_t size, Int_t color) {
773   TMarker *m = new TMarker(x,y,style);
774   m->SetMarkerSize(size);
775   m->SetMarkerColor(color);
776   m->Draw();
777 }
778