]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FLOW/papers/PRL107_032301/fig1ab.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FLOW / papers / PRL107_032301 / fig1ab.C
1
2 static  int      myDarkRed     = TColor::GetColor(128,0,0);
3 static  int      myDarkGreen   = TColor::GetColor(0,128,0);
4 static  int      myDarkBlue    = TColor::GetColor(0,0,128);
5
6 void fig1ab(Int_t rWrite = 0, Int_t rPerformance = 0)
7 {
8     myOptions();
9     gROOT->ForceStyle();   
10     TDatime now;
11     int iDate = now.GetDate();
12     int iYear=iDate/10000;
13     int iMonth=(iDate%10000)/100;
14     int iDay=iDate%100;
15     char* cMonth[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
16     char cStamp1[25],cStamp2[25];
17     sprintf(cStamp1,"%i %s %i",iDay,cMonth[iMonth-1],iYear);
18     sprintf(cStamp2,"%i/%.2d/%i",iDay,iMonth,iYear);
19     
20     Double_t xCent[] = {2.5,7.5,15.,25.,35.,45.,55.,65.,75.};
21     Double_t exCent[9] = {0.};
22     
23     //===================================================================================================
24     // Figure 1a:
25     
26     //=========================================================================================================================
27     // <<cos(2phi1+2phi2+2phi3-3phi4-3phi5)>>:
28     Double_t xf5pCorrelator[] = {2.5,7.5,15.,25.,35.,45.,55.,65.,75.};
29     Double_t yf5pCorrelator[] = {-1.885920e-10,-6.829616e-10,7.614580e-10,-1.138544e-09,1.112910e-09,
30         7.147351e-08,7.625261e-08,-4.045715e-09,-8.973545e-07};
31     Double_t xErrf5pCorrelator[9] = {0.};
32     Double_t yErrf5pCorrelator[] = {3.193590e-10,9.788524e-10,2.210425e-09,6.072454e-09,1.346291e-08,
33         2.891663e-08,6.706111e-08,2.032517e-07,1.058125e-06};
34     Int_t nPointsf5pCorrelator = sizeof(xf5pCorrelator)/sizeof(Double_t);         
35     TGraphErrors *f5pCorrelator = new TGraphErrors(nPointsf5pCorrelator,xf5pCorrelator,yf5pCorrelator,
36                                                    xErrf5pCorrelator,yErrf5pCorrelator);
37     myGraphSetUp(f5pCorrelator,1.0,kFullSquare,kBlack,1,kBlack);
38     //ShiftAlongXaxis(f5pCorrelator,0.0);
39     //=========================================================================================================================
40     
41     //=========================================================================================================================
42     //  v2:
43     // QC2_v2 = v2{2}:
44     Double_t xQC2_v2[] = {2.5,7.5,15.,25.,35.,45.,55.,65.,75.};
45     Double_t yQC2_v2[] = {0.03057544, 0.04782869, 0.06730953, 0.08693288, 0.09905272, 
46         0.10507712, 0.10546323, 0.10293218, 0.10292639};
47     Double_t xErrQC2_v2[9] = {0.};
48     Double_t yErrQC2_v2[] = {0.00006919, 0.00008033, 0.00006915, 0.00008314, 0.00010003,
49         0.00012251, 0.00015668, 0.00022385, 0.00039746};
50     Int_t nPointsQC2_v2 = sizeof(xQC2_v2)/sizeof(Double_t);         
51     TGraphErrors *QC2_v2 = new TGraphErrors(nPointsQC2_v2,xQC2_v2,yQC2_v2,xErrQC2_v2,yErrQC2_v2);
52     myGraphSetUp(QC2_v2,1.0,kFullCircle,kBlue,1,kBlack);
53     //ShiftAlongXaxis(QC2_v2,1.0);
54     
55     // QC4_v2 = v2{4}:
56     Double_t xQC4_v2[] = {2.5,7.5,15.,25.,35.,45.,55.,65.,75.};
57     Double_t yQC4_v2[] = {0.01524963,0.03617246,0.05778658,0.07579155,0.08485658,0.08614990,
58         0.07996274,0.06850833,0.04132845};
59     Double_t xErrQC4_v2[9] = {0.};
60     Double_t yErrQC4_v2[] = {0.00090087,0.00020984,0.00014058,0.00014179,0.00017103,0.00024813,
61         0.00049434,0.00157658,0.02242034};
62     Int_t nPointsQC4_v2 = sizeof(xQC4_v2)/sizeof(Double_t);         
63     TGraphErrors *QC4_v2 = new TGraphErrors(nPointsQC4_v2,xQC4_v2,yQC4_v2,xErrQC4_v2,yErrQC4_v2);
64     myGraphSetUp(QC4_v2,1.0,kOpenSquare,kBlue,1,kBlack);
65     //ShiftAlongXaxis(QC4_v2,1.0);
66     //=========================================================================================================================
67     
68     // v2{SP}, TPC ref mult, TPConly tracks, all charges:
69     Double_t xSP_TPCrefMultTPConlyAll[] = {2.5,7.5,15.,25.,35.,45.,55.,65.,75.};
70     Double_t ySP_TPCrefMultTPConlyAllOrg[] = {0.027582,0.044635,0.064334,0.083715,0.095463,0.100227,0.098364,0.090479,0.078384}; 
71     Double_t ySP_TPCrefMultTPConlyAll[9] = {0.};
72     Double_t xErrSP_TPCrefMultTPConlyAll[9] = {0.};
73     
74     Double_t yErrSP_TPCrefMultTPConlyAll[] = {0.000133,0.000123,0.000097,0.000115,0.000144,0.000198,0.000317,0.000755,0.009428}; // stat errors
75     //Double_t yErrSP_TPCrefMultTPConlyAll[] = {0.0014,0.0011,0.0017,0.0021,0.0023,0.0025,0.0025,0.0023,0.010}; // stat + syst nonflow
76     //Double_t ySystErrSP_TPCrefMultTPConlyAll[] = {0.0014,0.0011,0.0017,0.0021,0.0023,0.0025,0.0025,0.0023,0.010}; // stat + syst nonflow
77     Double_t ySystErrSP_TPCrefMultTPConlyAll[9] = {0.};
78     Double_t yCorrSP[9] = {0.};
79     //Double_t ySP_PP[] = {0.008, 0.0086, 0.01, 0.012, 0.015, 0.02, 0.026, 0.037, 0.056}; // Vera \delta eta=0.4 
80     Double_t ySP_PP[] = {0.005321,0.005928,0.007075,0.010423,0.012069,0.013821,0.020232,0.025020,0.035993}; //Ante Hijing    
81     for (Int_t p=0;p<9;p++) {
82         yCorrSP[p] = TMath::Sqrt(ySP_TPCrefMultTPConlyAllOrg[p]*ySP_TPCrefMultTPConlyAllOrg[p] + ySP_PP[p]*ySP_PP[p]) -
83         ySP_TPCrefMultTPConlyAllOrg[p];
84         cout << "yCorrSP:" << yCorrSP[p] << endl;
85         ySP_TPCrefMultTPConlyAll[p] = ySP_TPCrefMultTPConlyAllOrg[p] - yCorrSP[p];
86         Double_t estsys = 0.04*ySP_TPCrefMultTPConlyAll[p];
87         ySystErrSP_TPCrefMultTPConlyAll[p] = TMath::Sqrt(1.*yCorrSP[p]*1.*yCorrSP[p]+estsys*estsys);
88     }
89     Int_t nPointsSP_TPCrefMultTPConlyAll = sizeof(xSP_TPCrefMultTPConlyAll)/sizeof(Double_t);             
90     TGraphErrors *SP_TPCrefMultTPConlyAllOrg = new TGraphErrors(nPointsSP_TPCrefMultTPConlyAll,xSP_TPCrefMultTPConlyAll,
91                                                                 ySP_TPCrefMultTPConlyAllOrg,xErrSP_TPCrefMultTPConlyAll,
92                                                                 yErrSP_TPCrefMultTPConlyAll);
93     myGraphSetUp(SP_TPCrefMultTPConlyAllOrg,1.0,kOpenCircle,kRed,1,kBlack);
94     
95     TGraphErrors *SP_TPCrefMultTPConlyAll = new TGraphErrors(nPointsSP_TPCrefMultTPConlyAll,xSP_TPCrefMultTPConlyAll,
96                                                              ySP_TPCrefMultTPConlyAll,xErrSP_TPCrefMultTPConlyAll,
97                                                              yErrSP_TPCrefMultTPConlyAll);
98     myGraphSetUp(SP_TPCrefMultTPConlyAll,1.0,kFullCircle,kRed,1,kBlack);                                                          
99     
100     TGraphErrors *SP_TPCrefMultTPConlyAll2 = new TGraphErrors(nPointsSP_TPCrefMultTPConlyAll,xSP_TPCrefMultTPConlyAll,
101                                                               ySP_TPCrefMultTPConlyAll,xErrSP_TPCrefMultTPConlyAll,
102                                                               ySystErrSP_TPCrefMultTPConlyAll );
103     myGraphSetUp(SP_TPCrefMultTPConlyAll2,1.0,kFullCircle,kRed,1,kBlack,kRed-9,1001);                                                         
104     //=========================================================================================================================
105     
106     //=========================================================================================================================
107     //  v3:
108     // QC2_v3 = v3{2}:
109     Double_t xQC2_v3[] = {2.5,7.5,15.,25.,35.,45.};
110     Double_t yQC2_v3[] = {0.02183955,0.02539081,0.02875255,0.03241459,0.03507416,0.03730817,
111         0.03889757,0.04285879,0.05030896};
112     Double_t xErrQC2_v3[9] = {0.};
113     Double_t yErrQC2_v3[] = {0.00005352,0.00005932,0.00004912,0.00006050,0.00007675,0.00010535,
114         0.00016134,0.00027456,0.00052779};
115     Int_t nPointsQC2_v3 = sizeof(xQC2_v3)/sizeof(Double_t);         
116     TGraphErrors *QC2_v3 = new TGraphErrors(nPointsQC2_v3,xQC2_v3,yQC2_v3,xErrQC2_v3,yErrQC2_v3);
117     myGraphSetUp(QC2_v3,1.0,kFullTriangleUp,kBlue,1,kBlack);                                                          
118     //ShiftAlongXaxis(QC2_v3,0.0);
119     
120     // QC2_v3_same = v3{2}, same charges:
121     Double_t xQC2_v3_same[] = {2.5,7.5,15.,25.,35.,45.};
122     Double_t yQC2_v3_same[] = {0.02047422,0.02403312,0.02751779,0.03108505,0.03372405,0.03572696,0.03741600};
123     Double_t xErrQC2_v3_same[7] = {0.};
124     Double_t yErrQC2_v3_same[] = {0.00006541,0.00007080,0.00005897,0.00007455,0.00009984,0.00014546,0.00023698};
125     Int_t nPointsQC2_v3_same = sizeof(xQC2_v3_same)/sizeof(Double_t);         
126     TGraphErrors *QC2_v3_same = new TGraphErrors(nPointsQC2_v3_same,xQC2_v3_same,yQC2_v3_same,xErrQC2_v3_same,yErrQC2_v3_same);
127     myGraphSetUp(QC2_v3_same,1.0,kStar,kBlue,1,kBlack);                                                           
128     //ShiftAlongXaxis(QC2_v3_same,1.);
129     
130     // QC4_v3 = v3{4}:
131     Double_t xQC4_v3[] = {2.5,7.5,15.,25.,35.,45.};
132     Double_t yQC4_v3[] = {0.01053669,0.01257961,0.01552626,0.01506058,0.01839253,0.01770513,
133         0.02810784,0.03316069};
134     Double_t xErrQC4_v3[8] = {0.};
135     Double_t yErrQC4_v3[] = {0.00101506,0.00115529,0.00069718,0.00148116,0.00148018,0.00352904,
136         0.00763725,0.02345570};
137     Int_t nPointsQC4_v3 = sizeof(xQC4_v3)/sizeof(Double_t);         
138     TGraphErrors *QC4_v3 = new TGraphErrors(6,xQC4_v3,yQC4_v3,xErrQC4_v3,yErrQC4_v3);
139     myGraphSetUp(QC4_v3,1.0,kOpenSquare,kBlue,1,kBlack);                                                            
140     //ShiftAlongXaxis(QC4_v3,0.75);
141     
142     // QC4_v3_same = v3{4}, same charges:
143     Double_t xQC4_v3_same[] = {2.5,7.5,15.,25.,35.,45.};
144     Double_t yQC4_v3_same[] = {0.00760270,0.01289241,0.01396290,0.01593748,0.01841474,0.01355171};
145     Double_t xErrQC4_v3_same[6] = {0.};
146     Double_t yErrQC4_v3_same[] = {0.00433070,0.00180779,0.00151872,0.00209834,0.00279355,0.01648787};
147     Int_t nPointsQC4_v3_same = sizeof(xQC4_v3_same)/sizeof(Double_t);         
148     TGraphErrors *QC4_v3_same = new TGraphErrors(nPointsQC4_v3_same,xQC4_v3_same,yQC4_v3_same,xErrQC4_v3_same,yErrQC4_v3_same);
149     myGraphSetUp(QC4_v3_same,1.0,kOpenSquare,kRed,1,kBlack);                                                            
150     
151     // ZDC_v3 = v3{ZDC} (Ilya):
152     Double_t xZDC_v3[] = {2.5,7.5,15.,25.,35.,45.,55.,65.,75.};
153     Double_t yZDC_v3[] = {0.2005414,-0.0008304778,0.0003468132,0.001181955,-0.0001876906,0.0005668259,-2.986464e-05,0.0007950359,0.006499858};
154     Double_t xErrZDC_v3[9] = {0.};
155     Double_t yErrZDC_v3[] = {0.6825955,0.002633532,0.0006703818,0.0005074313,0.0006300845,0.0009810903,0.001860773,0.004609001,0.01633596};
156     Int_t nPointsZDC_v3 = sizeof(xZDC_v3)/sizeof(Double_t);         
157     TGraphErrors *ZDC_v3 = new TGraphErrors(6,xZDC_v3,yZDC_v3,xErrZDC_v3,yErrZDC_v3);
158     myGraphSetUp(ZDC_v3,1.0,kFullCircle,kGreen+2,1,kBlack);                                                             
159     
160     /*
161      // ZDC_v3 = v3{ZDC} (Ilya):
162      Double_t xZDC_v3[] = {2.5,7.5,15.,25.,35.,45.};
163      Double_t yZDC_v3[] = {0.004703597,2.977193e-05,7.509025e-05,8.895956e-05,0.0001218988,
164      5.045662e-06,0.0003617772,0.001024175,-0.0009996569};
165      Double_t xErrZDC_v3[9] = {0.};
166      Double_t yErrZDC_v3[] = {0.002843094,0.0003961917,9.486118e-05,7.382399e-05,9.159939e-05,
167      0.0001466929,0.0002849215,0.0007678118,0.003465045};
168      Int_t nPointsZDC_v3 = sizeof(xZDC_v3)/sizeof(Double_t);         
169      TGraphErrors *ZDC_v3 = new TGraphErrors(nPointsZDC_v3,xZDC_v3,yZDC_v3,xErrZDC_v3,yErrZDC_v3);
170      myGraphSetUp(ZDC_v3,1.0,kOpenTriangleUp,kGreen+2,1,kBlack);                                                               
171      */
172     
173     // SP_v3_etaGap02 = v3{SP}:
174     Double_t xSP_v3_etaGap02[] = {2.5,7.5,15.,25.,35.,45.};
175     Double_t ySP_v3_etaGap02[] = {0.02100282,0.02441799,0.02742384,0.03061855,0.03244124,0.03295708,0.03197919};
176     Double_t xErrSP_v3_etaGap02[9] = {0.};
177     Double_t yErrSP_v3_etaGap02[] = {0.00007620,0.00008169,0.00006829,0.00009012,0.00011868,0.00018015,0.00031468};
178     Int_t nPointsSP_v3_etaGap02 = sizeof(xSP_v3_etaGap02)/sizeof(Double_t);         
179     TGraphErrors *SP_v3_etaGap02 = new TGraphErrors(nPointsSP_v3_etaGap02,xSP_v3_etaGap02,ySP_v3_etaGap02,
180                                                     xErrSP_v3_etaGap02,yErrSP_v3_etaGap02);
181     myGraphSetUp(SP_v3_etaGap02,1.0,kOpenTriangleUp,kBlue,1,kBlack);                                                               
182     //ShiftAlongXaxis(SP_v3_etaGap02,-0.5);  
183     
184     // SP_v3_etaGap10 = v3{SP}:
185     Double_t xSP_v3_etaGap10[] = {2.5,7.5,15.,25.,35.,45.};
186     Double_t ySP_v3_etaGap10[] = {0.02070702,0.02382848,0.02672520,0.02970215,0.03109479,0.03105698,0.02908181};
187     Double_t xErrSP_v3_etaGap10[7] = {0.};
188     Double_t yErrSP_v3_etaGap10[] = {0.00013628,0.00014867,0.00012609,0.00016659,0.00024023,0.00038862,0.00073425};
189     Int_t nPointsSP_v3_etaGap10 = sizeof(xSP_v3_etaGap10)/sizeof(Double_t);  
190     TGraphErrors *SP_v3_etaGap10 = new TGraphErrors(nPointsSP_v3_etaGap10,xSP_v3_etaGap10,ySP_v3_etaGap10,
191                                                     xErrSP_v3_etaGap10,yErrSP_v3_etaGap10);
192     myGraphSetUp(SP_v3_etaGap10,1.2,kOpenSquare,kBlue,1,kBlack);                                                         
193     //ShiftAlongXaxis(SP_v3_etaGap10,0.5);  
194     
195     Double_t ySystErrSPv3[7] = {0.};
196     Double_t yCorrSPv3[7] = {0.};
197     Double_t ySPv3_PP[] = {0.003,0.003,0.004,0.005,0.006,0.008,0.01}; //Vera pp
198     
199     for (Int_t p=0;p<6;p++) {
200         Double_t corr = TMath::Sqrt(ySP_v3_etaGap10[p]*ySP_v3_etaGap10[p] + ySPv3_PP[p]*ySPv3_PP[p]) - ySP_v3_etaGap10[p];
201         cout << "Corr v3:" << corr << endl;
202         yCorrSPv3[p] = ySP_v3_etaGap10[p] - corr;
203         Double_t estsys = 0.05*yCorrSPv3[p];
204         ySystErrSPv3[p] = TMath::Sqrt(1.*corr*1.*corr+estsys*estsys);
205     }
206     TGraphErrors *SP_v3_corr = new TGraphErrors(nPointsSP_v3_etaGap10,xSP_v3_etaGap10,yCorrSPv3,
207                                                 xErrSP_v3_etaGap10,yErrSP_v3_etaGap10);
208     myGraphSetUp(SP_v3_corr,1.,kFullSquare,kBlue,1,kBlack);                                                         
209     
210     TGraphErrors *SP_v3_corr2 = new TGraphErrors(nPointsSP_v3_etaGap10,xSP_v3_etaGap10,yCorrSPv3,
211                                                  xErrSP_v3_etaGap10,ySystErrSPv3);
212     myGraphSetUp(SP_v3_corr2,1.,kFullSquare,kBlue-9,1,kBlue,kBlue-9,1001);                                                         
213     
214     // SP_v4_etaGap10 = v4{SP}:
215     Double_t xSP_v4_etaGap10[] = {2.5,7.5,15.,25.,35.,45.};
216     Double_t ySP_v4_etaGap10[] = {0.00981464,0.01161192,0.01288244,0.01435392,0.01599797,0.01553851};
217     Double_t xErrSP_v4_etaGap10[6] = {0.};
218     Double_t yErrSP_v4_etaGap10[] = {0.00025098,0.00026355,0.00022703,0.00030744,0.00042727,0.00073090};
219     Int_t nPointsSP_v4_etaGap10 = sizeof(xSP_v4_etaGap10)/sizeof(Double_t);  
220     TGraphErrors *SP_v4_etaGap10 = new TGraphErrors(nPointsSP_v4_etaGap10,xSP_v4_etaGap10,ySP_v4_etaGap10,
221                                                     xErrSP_v4_etaGap10,yErrSP_v4_etaGap10);
222     myGraphSetUp(SP_v4_etaGap10,1.2,kStar,kMagenta,1,kBlack);                                                         
223     ShiftAlongXaxis(SP_v4_etaGap10,1.5);  
224     
225     
226     
227     Double_t ySystErrSPv4[7] = {0.};
228     Double_t yCorrSPv4[7] = {0.};
229     Double_t ySPv4_PP[] = {0.0025,0.0025,0.0025,0.0025,0.0025,0.0025, 0.0025};
230     
231     for (Int_t p=0;p<6;p++) {
232         Double_t corr = TMath::Sqrt(ySP_v4_etaGap10[p]*ySP_v4_etaGap10[p] + ySPv4_PP[p]*ySPv4_PP[p]) - ySP_v4_etaGap10[p];
233         cout << "Corr v4:" << corr << endl;
234         yCorrSPv4[p] = ySP_v4_etaGap10[p] - corr;
235         Double_t estsys = 0.05*yCorrSPv4[p];
236         ySystErrSPv4[p] = TMath::Sqrt(1.*corr*1.*corr+estsys*estsys);
237     }
238     TGraphErrors *SP_v4_corr = new TGraphErrors(nPointsSP_v4_etaGap10,xSP_v4_etaGap10,yCorrSPv4,
239                                                 xErrSP_v4_etaGap10,yErrSP_v4_etaGap10);
240     myGraphSetUp(SP_v4_corr,1.2,kStar,kMagenta,1,kBlack);                                                         
241     
242     TGraphErrors *SP_v4_corr2 = new TGraphErrors(nPointsSP_v4_etaGap10,xSP_v4_etaGap10,yCorrSPv4,
243                                                  xErrSP_v4_etaGap10,ySystErrSPv4);
244     myGraphSetUp(SP_v4_corr2,1.2,kStar,kMagenta-9,1,kMagenta,kMagenta-9,1001);        
245     //=========================================================================================================================   
246     
247     //=========================================================================================================================   
248     // v3 centrality dependence prediction by Luzum and Ollitrault:
249     Double_t xLuzOll[] = {2.5,7.5,12.5,17.5,22.5,27.5,32.5,37.5,42.5,47.5,52.5,57.5,62.5,67.5,72.5};
250     Double_t yLuzOll[] = {0.023931343405028907,0.025578676086755334,0.02692673087997464,0.0277496106070913,
251         0.02834431352143814,0.030099333306694308,0.029712119761886445,0.02910588380400307,
252         0.029029451386236353,0.027650687387294634,0.02479761160079346,0.020694594742745584,
253         0.014559252721547645,0.00687958280855717,-0.0011508459086818318};
254     Double_t xErrLuzOll[15] = {0.};
255     Double_t yErrLuzOll[15] = {0.};
256     Int_t nPointsLuzOll = sizeof(xLuzOll)/sizeof(Double_t);         
257     TGraphErrors *LuzOll = new TGraphErrors(nPointsLuzOll,xLuzOll,yLuzOll,xErrLuzOll,yErrLuzOll);
258     myGraphSetUp(LuzOll,1.,kFullSquare,kBlack,3,kBlack);                                                         
259     //=========================================================================================================================      
260     
261     //=========================================================================================================================
262     // v3{5}:
263     Double_t factor = 100.; 
264     Double_t xQC5_v3_squared[] = {2.5,7.5,15.,25.,35.,45.,55.,65.,75.};
265     Double_t yQC5_v3_squared[9] = {0.};
266     Double_t xErrQC5_v3_squared[9] = {0.};
267     Double_t yErrQC5_v3_squared[9] = {0.};
268     for(Int_t p=0;p<6;p++) 
269     { 
270         Double_t value = 0.; // v3{5}
271         Double_t error = 0.; // v3{5} error
272         Double_t mh = yf5pCorrelator[p]; 
273         Double_t mhError = yErrf5pCorrelator[p];
274         Double_t v24 = yQC4_v2[p];
275         Double_t v24Error = yErrQC4_v2[p];
276         Double_t v22 = yQC2_v2[p];
277         Double_t v22Error = yErrQC2_v2[p];
278         if(TMath::Abs(v24)> 0.) 
279         {
280             value = mh/pow(v22,3.); // v3{5}^2
281             error = pow((1./pow(v22,6.))*pow(mhError,2.)+9.*(pow(mh,2.)/pow(v22,8.))*pow(v22Error,2.),0.5);
282             yQC5_v3_squared[p] = value*factor;
283             yErrQC5_v3_squared[p] = error*factor;
284         }
285     } // end of for(Int_t p=0;p<9;p++)
286     Int_t nPointsQC5_v3_squared = sizeof(xQC5_v3_squared)/sizeof(Double_t);         
287     TGraphErrors *QC5_v3_squared = new TGraphErrors(6,xQC5_v3_squared,yQC5_v3_squared,
288                                                     xErrQC5_v3_squared,yErrQC5_v3_squared);
289     myGraphSetUp(QC5_v3_squared,1.4,33,kBlack,1.,kBlack);                                                         
290     ShiftAlongXaxis(QC5_v3_squared,-0.5);
291     //=========================================================================================================================
292     // v2 epsilons  
293     Double_t r2E2Cum2WNpart[]= {0.0813921,0.122575,0.192946,0.276331,0.351085,0.421993,0.49293,0.573383,0.661991,0.709309,0.926234};
294     Double_t r2E2Cum2CGCNpart[]= {0.1037700, 0.176570, 0.270957, 0.365345, 0.437808, 0.496254, 0.546311, 0.596211, 0.645011};
295     Double_t xRatio_v22_e2CGC[9] = {0.};
296     Double_t yRatio_v22_e2CGC[9] = {0.};
297     Double_t xErrRatio_v22_e2CGC[9] = {0.};
298     Double_t yErrRatio_v22_e2CGC[9] = {0.};
299     Double_t ySystErrRatio_v22_e2CGC[9] = {0.};
300     Double_t xRatio_v22_e2w[9] = {0.};
301     Double_t yRatio_v22_e2w[9] = {0.};
302     Double_t xErrRatio_v22_e2w[9] = {0.};
303     Double_t yErrRatio_v22_e2w[9] = {0.};
304     Double_t ySystErrRatio_v22_e2w[9] = {0.};
305     
306     for(Int_t p=0;p<9;p++) {
307         xRatio_v22_e2CGC[p] = xSP_TPCrefMultTPConlyAll[p];
308         yRatio_v22_e2CGC[p] = ySP_TPCrefMultTPConlyAll[p]/r2E2Cum2CGCNpart[p];
309         cout << "v2/epslon CGC: " << yRatio_v22_e2CGC[p] << endl;
310         yErrRatio_v22_e2CGC[p] = yErrSP_TPCrefMultTPConlyAll[p]/r2E2Cum2CGCNpart[p];
311         ySystErrRatio_v22_e2CGC[p] = ySystErrSP_TPCrefMultTPConlyAll[p]/r2E2Cum2CGCNpart[p];
312         
313         
314         xRatio_v22_e2w[p] = xSP_TPCrefMultTPConlyAll[p];
315         yRatio_v22_e2w[p] = ySP_TPCrefMultTPConlyAll[p]/r2E2Cum2WNpart[p];
316         yErrRatio_v22_e2w[p] = yErrSP_TPCrefMultTPConlyAll[p]/r2E2Cum2WNpart[p];
317         ySystErrRatio_v22_e2w[p] = ySystErrSP_TPCrefMultTPConlyAll[p]/r2E2Cum2WNpart[p];
318     }    
319     TGraphErrors *Ratio_v22_e2CGC = new TGraphErrors(9,xRatio_v22_e2CGC,yRatio_v22_e2CGC,
320                                                      xErrRatio_v22_e2CGC,yErrRatio_v22_e2CGC);
321     myGraphSetUp(Ratio_v22_e2CGC,1.,kFullCircle,kRed,1.,kRed);                                                           
322     
323     TGraphErrors *Ratio_v22_e2w = new TGraphErrors(9,xRatio_v22_e2w,yRatio_v22_e2w,
324                                                    xErrRatio_v22_e2w,yErrRatio_v22_e2w);
325     myGraphSetUp(Ratio_v22_e2w,1.,kOpenCircle,kMagenta,1.,kMagenta);                                                           
326     
327     TGraphErrors *Ratio_v22_e2CGC2 = new TGraphErrors(9,xRatio_v22_e2CGC,yRatio_v22_e2CGC,
328                                                       xErrRatio_v22_e2CGC,ySystErrRatio_v22_e2CGC);
329     myGraphSetUp(Ratio_v22_e2CGC2,1.,kFullCircle,kRed-9,1.,kRed,kRed-9,1001);                                                             
330     
331     TGraphErrors *Ratio_v22_e2w2 = new TGraphErrors(9,xRatio_v22_e2w,yRatio_v22_e2w,
332                                                     xErrRatio_v22_e2w,ySystErrRatio_v22_e2w);
333     myGraphSetUp(Ratio_v22_e2w2,1.,kOpenCircle,kMagenta,1.,kMagenta,kMagenta-9,1001);                                                     
334     
335     //=========================================================================================================================
336     
337     // v3 epsilons
338     Double_t r2E3Cum2CGCNpart[]= {0.0794007, 0.0954744, 0.115036, 0.141516, 0.173228, 0.212523, 0.259254, 0.302282, 0.309824};
339     Double_t r2E3Cum2WNpart[]= {0.0798219,0.104613,0.135106,0.173153,0.214027,0.259469,0.308709,0.354488,0.38321,0.39706,0.377804};   
340     Double_t xRatio_v32_e2CGC[7] = {0.};
341     Double_t yRatio_v32_e2CGC[7] = {0.};
342     Double_t xErrRatio_v32_e2CGC[7] = {0.};
343     Double_t yErrRatio_v32_e2CGC[7] = {0.};
344     Double_t ySystErrRatio_v32_e2CGC[7] = {0.};     
345     Double_t xRatio_v32_e2w[7] = {0.};
346     Double_t yRatio_v32_e2w[7] = {0.};
347     Double_t xErrRatio_v32_e2w[7] = {0.};
348     Double_t yErrRatio_v32_e2w[7] = {0.};
349     Double_t ySystErrRatio_v32_e2w[7] = {0.};
350     for(Int_t p=0;p<6;p++) {
351         xRatio_v32_e2CGC[p] = xSP_v3_etaGap10[p];
352         yRatio_v32_e2CGC[p] = ySP_v3_etaGap10[p]/r2E3Cum2CGCNpart[p];
353         yErrRatio_v32_e2CGC[p] = yErrSP_v3_etaGap10[p]/r2E3Cum2CGCNpart[p];
354         ySystErrRatio_v32_e2CGC[p] = ySystErrSPv3[p]/r2E3Cum2CGCNpart[p];
355         
356         xRatio_v32_e2w[p] = xSP_v3_etaGap10[p];
357         yRatio_v32_e2w[p] = ySP_v3_etaGap10[p]/r2E3Cum2WNpart[p];
358         yErrRatio_v32_e2w[p] = yErrSP_v3_etaGap10[p]/r2E3Cum2WNpart[p];
359         ySystErrRatio_v32_e2w[p] = ySystErrSPv3[p]/r2E3Cum2WNpart[p];
360         
361     }
362     
363     TGraphErrors *Ratio_v32_e2CGC = new TGraphErrors(6,xRatio_v32_e2CGC,yRatio_v32_e2CGC,
364                                                      xErrRatio_v32_e2CGC,yErrRatio_v32_e2CGC);
365     myGraphSetUp(Ratio_v32_e2CGC,1.,kFullSquare,kBlue,1.,kBlue);                                                    
366     
367     TGraphErrors *Ratio_v32_e2w = new TGraphErrors(6,xRatio_v32_e2w,yRatio_v32_e2w,
368                                                    xErrRatio_v32_e2w,yErrRatio_v32_e2w);
369     myGraphSetUp(Ratio_v32_e2w,1.,kOpenSquare,kMagenta,1.,kMagenta);                                                    
370     
371     
372     TGraphErrors *Ratio_v32_e2CGC2 = new TGraphErrors(6,xRatio_v32_e2CGC,yRatio_v32_e2CGC,
373                                                       xErrRatio_v32_e2CGC,ySystErrRatio_v32_e2CGC);
374     myGraphSetUp(Ratio_v32_e2CGC2,1.,kFullSquare,kBlue-9,1,kBlue,kBlue-9,1001);                                                      
375     
376     TGraphErrors *Ratio_v32_e2w2 = new TGraphErrors(6,xRatio_v32_e2w,yRatio_v32_e2w,
377                                                     xErrRatio_v32_e2w,ySystErrRatio_v32_e2w);
378     myGraphSetUp(Ratio_v32_e2w2,1.,kOpenSquare,kMagenta,1,kMagenta,kMagenta-9,1001);                                                      
379     //=========================================================================================================================
380     
381     // Style histogramm:
382     TH1F *myBlankHisto = new TH1F("myBlankHisto","Blank Histogram",100,0.,100.);
383     //myBlankHisto->SetXTitle("p_{t} (GeV/#font[72]{c})");
384     myBlankHisto->SetNdivisions(505,"y");
385     myBlankHisto->GetYaxis()->SetTitleOffset(0.6);
386     //myBlankHisto->GetYaxis()->SetLabelSize(0.05);
387     //myBlankHisto->GetYaxis()->SetTitleSize(0.07);
388     //myBlankHisto->GetYaxis()->SetRangeUser(-0.02101,0.399);
389     myBlankHisto->GetXaxis()->SetRangeUser(0.,81.);    
390     // Main canvas:   
391     TCanvas *myCan = new TCanvas("myCan",cStamp1,500,750);
392     myCan->Divide(1,2,0.0,0.0);   
393     myCan->Draw();
394     
395     // Figure 1a: 
396     myCan->cd(1);   
397     gPad->SetBottomMargin(0.); 
398     gPad->SetRightMargin(0.001); 
399     TH1D* styleHistPad1 = myBlankHisto->Clone("styleHistPad1");
400     styleHistPad1->GetYaxis()->SetRangeUser(-0.005,0.1099);  
401     styleHistPad1->GetYaxis()->SetTitle("v_{n}");
402     styleHistPad1->Draw();
403     TLatex *a = new TLatex(0.95,0.93,"(a)");
404     a->SetNDC();
405     a->SetTextSize(0.05);
406     a->Draw();
407     // Legend:    
408     TLegend *myLegendPad1 = new TLegend(0.45,0.44,0.67,0.74);
409     myLegendSetUp(myLegendPad1,0.04); 
410     //myLegendPad1->AddEntry(f5pCorrelator,"#propto v_{2}^{3} v_{3}^{2} ??","p"); 
411     //myLegendPad1->AddEntry(QC2_v2,"v_{2}{2}","p");
412     //myLegendPad1->AddEntry(QC4_v2,"v_{2}{4}","p");
413     //myLegendPad1->AddEntry(QC2_v3,"v_{3}{2}","p");
414     //myLegendPad1->AddEntry(QC2_v3_same,"v_{3}{2} (same charges)","p");
415     //myLegendPad1->AddEntry(SP_v3_etaGap02,"v_{3}{SP} (#Delta#eta = 0.2)","p");
416     myLegendPad1->AddEntry(SP_TPCrefMultTPConlyAll,"v_{2}{2, |#Delta#eta| > 1}","p");
417     myLegendPad1->AddEntry(SP_v3_corr,"v_{3}{2, |#Delta#eta| > 1}","p");
418     myLegendPad1->AddEntry(SP_v4_etaGap10,"v_{4}{2, |#Delta#eta| > 1}","p");
419     myLegendPad1->AddEntry(QC4_v3,"v_{3}{4}","p");
420     //myLegendPad1->AddEntry(QC4_v3_same,"v_{3}{4} (same charges)","p");
421     myLegendPad1->AddEntry(ZDC_v3,"v_{3/#Psi_{RP}}","p");
422     myLegendPad1->AddEntry(QC5_v3_squared,"100 #times v_{3/#Psi_{2}}^{2}","p");  
423     myLegendPad1->Draw("same"); 
424     // Final drawing (order is important!):
425     //f5pCorrelator->Draw("psame");
426     //QC2_v2->Draw("psame");
427     //QC4_v2->Draw("psame");
428     //QC2_v3->Draw("psame"); 
429     //QC2_v3_same->Draw("psame"); 
430     //SP_v3_etaGap02->Draw("psame");    
431     SP_TPCrefMultTPConlyAll2->Draw("same3");
432     SP_TPCrefMultTPConlyAll->Draw("lsame");
433     SP_TPCrefMultTPConlyAll->Draw("psame");   
434     //SP_v3_etaGap10->Draw("psame"); 
435     //SP_v4_etaGap10->Draw("psame"); 
436     SP_v4_corr2->Draw("same3");
437     SP_v4_corr->Draw("lsame");
438     SP_v4_corr->Draw("psame");
439     SP_v3_corr2->Draw("same3");
440     SP_v3_corr->Draw("lsame");
441     SP_v3_corr->Draw("psame");
442     QC4_v3->Draw("psame");
443     //QC4_v3_same->Draw("psame");
444     QC5_v3_squared->Draw("psame");
445     ZDC_v3->Draw("psame");
446     //LuzOll->Draw("lsame"); 
447     
448     // Figure 1b: 
449     myCan->cd(2);   
450     gPad->SetTopMargin(0.); 
451     gPad->SetBottomMargin(0.15); 
452     gPad->SetRightMargin(0.001); 
453     TH1D* styleHistPad2 = myBlankHisto->Clone("styleHistPad2");
454     styleHistPad2->GetYaxis()->SetRangeUser(0.,0.4799);  
455     styleHistPad2->GetXaxis()->SetTitle("centrality percentile");  
456     styleHistPad2->GetYaxis()->SetTitle("v_{n}/#varepsilon_{n}");   
457     styleHistPad2->Draw();
458     TLatex *b = new TLatex(0.95,0.93,"(b)");
459     b->SetNDC();
460     b->SetTextSize(0.05);
461     b->Draw();
462     TLegend *myLegendPad2 = new TLegend(0.6,0.64,0.86,0.94);
463     myLegendSetUp(myLegendPad2,0.04); 
464     myLegendPad2->AddEntry(Ratio_v22_e2CGC,"v_{2}{2, |#Delta#eta| > 1}/#varepsilon_{2}^{CGC}{2}","p");
465     myLegendPad2->AddEntry(Ratio_v32_e2CGC,"v_{3}{2, |#Delta#eta| > 1}/#varepsilon_{3}^{CGC}{2}","p");
466     myLegendPad2->AddEntry(Ratio_v22_e2w,"v_{2}{2, |#Delta#eta| > 1}/#varepsilon_{2}^{W}{2}","p");
467     myLegendPad2->AddEntry(Ratio_v32_e2w,"v_{3}{2, |#Delta#eta| > 1}/#varepsilon_{3}^{W}{2}","p");
468     //myLegendPad2->AddEntry(Ratio_v32_e3b,"v_{3}{2}/#varepsilon_{3,Ncoll}{2}","l"); 
469     //myLegendPad2->AddEntry(Ratio_v34_e2b,"v_{3}{4}/#varepsilon_{3,Ncoll}{4}","l"); 
470     //myLegendPad2->AddEntry(Ratio_v34_e2w,"v_{3}{4}/#varepsilon_{3}{4}","p"); 
471     //myLegendPad2->AddEntry(Ratio_v32_e3w,"v_{3}{2}/#varepsilon_{3}{2}","p"); 
472     myLegendPad2->Draw("same");
473     //Ratio_v34_e2b->Draw("same3"); 
474     //Ratio_v34_e2b->Draw("lsameX"); 
475     //Ratio_v32_e3b->Draw("same3"); 
476     //Ratio_v32_e3b->Draw("lsameX"); 
477     //Ratio_v34_e2w->Draw("psame"); 
478     //Ratio_v32_e3w->Draw("psame"); 
479     
480     
481     
482     
483     Ratio_v22_e2CGC2->Draw("same3");
484     Ratio_v22_e2w2->Draw("same3");
485     Ratio_v32_e2CGC2->Draw("same3");
486     Ratio_v32_e2w2->Draw("same3");   
487     Ratio_v32_e2CGC->Draw("lsameX");
488     Ratio_v22_e2CGC->Draw("lsameX");
489     Ratio_v32_e2w->Draw("lsameX");
490     Ratio_v22_e2w->Draw("lsameX");   
491     Ratio_v32_e2CGC->Draw("psame");
492     Ratio_v22_e2CGC->Draw("psame");
493     Ratio_v32_e2w->Draw("psame");
494     Ratio_v22_e2w->Draw("psame"); 
495     
496     return;
497     
498     
499     /*
500      TPad *myPadLogo = new TPad("myPadLogo", "Pad for ALICE Logo",0.47,0.37,0.62,0.60);
501      //myPadLogo->SetFillColor(2); // color to first figure out where is the pad then comment !
502      myPadSetUp(myPadLogo,0,0,0,0);
503      myPadLogo->Draw();
504      myPadLogo->cd();
505      TASImage *myAliceLogo = new TASImage("alice_logo_transparent.png");
506      //.TASImage *myAliceLogo = new TASImage("alice_logo.pdf");     
507      myAliceLogo->Draw();
508      */
509     
510     if (rPerformance){
511         TLatex *alice = new TLatex(0.75,0.34,"Performance");
512         alice->SetNDC();
513         alice->SetTextColor(myDarkRed);
514         //    alice->SetTextFont(42);
515         alice->SetTextSize(0.05);
516         alice->SetLineWidth(2);
517         alice->Draw();
518         
519         TText *date = new TText(0.78,0.28,cStamp2);
520         date->SetNDC();
521         date->SetTextFont(42);
522         date->SetTextSize(0.04);
523         date->Draw();
524         
525         TPad *myPadLogo = new TPad("myPadLogo", "Pad for ALICE Logo",0.77,0.37,0.92,0.60);
526         myPadLogo->SetFillColor(2); // color to first figure out where is the pad then comment !
527         myPadSetUp(myPadLogo,0,0,0,0);
528         myPadLogo->Draw();
529         myPadLogo->cd();
530         TASImage *myAliceLogo = new TASImage("alice_logo_transparent.png");
531         //.TASImage *myAliceLogo = new TASImage("alice_logo.pdf");
532         
533         myAliceLogo->Draw();
534     }
535     if (rWrite == 1)  myCan->SaveAs("fig_template.pdf");
536     if (rWrite == 2)  myCan->SaveAs("fig_template.png");
537 }
538
539 void myLegendSetUp(TLegend *currentLegend=0,float currentTextSize=0.07){
540     currentLegend->SetTextFont(42);
541     currentLegend->SetBorderSize(0);
542     currentLegend->SetFillStyle(0);
543     currentLegend->SetFillColor(0);
544     currentLegend->SetMargin(0.25);
545     currentLegend->SetTextSize(currentTextSize);
546     currentLegend->SetEntrySeparation(0.5);
547     return;
548 }
549
550 void myPadSetUp(TPad *currentPad, float currentLeft=0.11, float currentTop=0.04, float currentRight=0.04, float currentBottom=0.15){
551     currentPad->SetLeftMargin(currentLeft);
552     currentPad->SetTopMargin(currentTop);
553     currentPad->SetRightMargin(currentRight);
554     currentPad->SetBottomMargin(currentBottom);
555     return;
556 }
557
558 void myGraphSetUp(TGraphErrors *currentGraph=0, Float_t currentMarkerSize = 1.0,
559                   int currentMarkerStyle=20, int currentMarkerColor=0,
560                   int currentLineStyle=1, int currentLineColor=0, int currentFillColor=0, int currentFillStyle=0)
561 {
562     currentGraph->SetMarkerSize(currentMarkerSize);
563     currentGraph->SetMarkerStyle(currentMarkerStyle);
564     currentGraph->SetMarkerColor(currentMarkerColor);
565     currentGraph->SetLineStyle(currentLineStyle);
566     currentGraph->SetLineWidth(2);
567     currentGraph->SetLineColor(currentLineColor);
568     currentGraph->SetFillColor(currentFillColor);
569     currentGraph->SetFillStyle(currentFillStyle);
570     return;
571 }
572
573 void ShiftAlongXaxis(TGraphErrors *ge, Double_t shift)
574 {
575     // Shift original TGraphErrors along x-axis by Double_t shift.
576     
577     if(!ge){cout<<"!ge"<<endl;exit(0);}
578     
579     Int_t nPoints = ge->GetN();
580     Double_t x = 0.;
581     Double_t y = 0.;
582     for(Int_t p=0;p<nPoints;p++)
583     { 
584         ge->GetPoint(p,x,y);
585         x+=shift;
586         ge->SetPoint(p,x,y);
587     } // end of for(Int_t p=0;p<nPoints;p++)
588     
589 } // end of void ShiftAlongXaxis(TGraphErrors *ge, Double_t shift)
590
591 void myOptions(Int_t lStat=0){
592     // Set gStyle
593     int font = 42;
594     // From plain
595     gStyle->SetFrameBorderMode(0);
596     gStyle->SetFrameFillColor(0);
597     gStyle->SetCanvasBorderMode(0);
598     gStyle->SetPadBorderMode(0);
599     gStyle->SetPadColor(10);
600     gStyle->SetCanvasColor(10);
601     gStyle->SetTitleFillColor(10);
602     gStyle->SetTitleBorderSize(1);
603     gStyle->SetStatColor(10);
604     gStyle->SetStatBorderSize(1);
605     gStyle->SetLegendBorderSize(1);
606     //
607     gStyle->SetDrawBorder(0);
608     gStyle->SetTextFont(font);
609     gStyle->SetStatFont(font);
610     gStyle->SetStatFontSize(0.05);
611     gStyle->SetStatX(0.97);
612     gStyle->SetStatY(0.98);
613     gStyle->SetStatH(0.03);
614     gStyle->SetStatW(0.3);
615     gStyle->SetTickLength(0.02,"y");
616     gStyle->SetEndErrorSize(3);
617     gStyle->SetLabelSize(0.05,"xyz");
618     gStyle->SetLabelFont(font,"xyz"); 
619     gStyle->SetLabelOffset(0.01,"xyz");
620     gStyle->SetTitleFont(font,"xyz");  
621     gStyle->SetTitleOffset(1.0,"xyz");  
622     gStyle->SetTitleSize(0.06,"xyz");  
623     gStyle->SetMarkerSize(1); 
624     gStyle->SetPalette(1,0); 
625     if (lStat){
626         gStyle->SetOptTitle(1);
627         gStyle->SetOptStat(1111);
628         gStyle->SetOptFit(1111);
629     }
630     else {
631         gStyle->SetOptTitle(0);
632         gStyle->SetOptStat(0);
633         gStyle->SetOptFit(0);
634     }
635 }