b2019dcf947ab2a13c58fcf0e7baea03219f5107
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / drawCorrelationFunctionPsi.C
1 const Int_t numberOfCentralityBins = 8;
2 TString centralityArray[numberOfCentralityBins] = {"0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80"};
3
4 const Int_t gRebin = 1;
5 void drawCorrelationFunctionPsi(const char* filename = "AnalysisResults.root", 
6                                 Int_t gCentrality = 1,
7                                 Int_t gBit = -1,
8                                 const char* gCentralityEstimator = 0x0,
9                                 Bool_t kShowShuffled = kFALSE, 
10                                 Bool_t kShowMixed = kTRUE, 
11                                 Double_t psiMin = -0.5, 
12                                 Double_t psiMax = 3.5,
13                                 Double_t ptTriggerMin = -1.,
14                                 Double_t ptTriggerMax = -1.,
15                                 Double_t ptAssociatedMin = -1.,
16                                 Double_t ptAssociatedMax = -1.) {
17   //Macro that draws the correlation functions from the balance function
18   //analysis vs the reaction plane
19   //Author: Panos.Christakoglou@nikhef.nl
20   gROOT->LoadMacro("~/SetPlotStyle.C");
21   SetPlotStyle();
22   gStyle->SetPalette(1,0);
23
24   //Load the PWG2ebye library
25   gSystem->Load("libANALYSIS.so");
26   gSystem->Load("libANALYSISalice.so");
27   gSystem->Load("libEventMixing.so");
28   gSystem->Load("libCORRFW.so");
29   gSystem->Load("libPWGTools.so");
30   gSystem->Load("libPWGCFebye.so");
31
32   //Prepare the objects and return them
33   TList *list = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,0);
34   TList *listShuffled = NULL;
35   if(kShowShuffled) listShuffled = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,1);
36   TList *listMixed = NULL;
37   if(kShowMixed) listMixed = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,2);
38
39   if(!list) {
40     Printf("The TList object was not created");
41     return;
42   }
43   else 
44     draw(list,listShuffled,listMixed,gCentrality,psiMin,psiMax,
45          ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
46 }
47
48 //______________________________________________________//
49 TList *GetListOfObjects(const char* filename,
50                         Int_t gCentrality,
51                         Int_t gBit,
52                         const char *gCentralityEstimator,
53                         Int_t kData = 1) {
54   //Get the TList objects (QA, bf, bf shuffled)
55   TList *listQA = 0x0;
56   TList *listBF = 0x0;
57   TList *listBFShuffling = 0x0;
58   
59   //Open the file
60   TFile *f = TFile::Open(filename);
61   if((!f)||(!f->IsOpen())) {
62     Printf("The file %s is not found. Aborting...",filename);
63     return listBF;
64   }
65   //f->ls();
66   
67   TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
68   if(!dir) {   
69     Printf("The TDirectoryFile is not found. Aborting...",filename);
70     return listBF;
71   }
72   //dir->ls();
73   
74   TString listBFName;
75   if(kData == 0) {
76     //cout<<"no shuffling - no mixing"<<endl;
77     listBFName = "listBFPsi_";
78   }
79   else if(kData == 1) {
80     //cout<<"shuffling - no mixing"<<endl;
81     listBFName = "listBFPsiShuffled_";
82   }
83   else if(kData == 2) {
84     //cout<<"no shuffling - mixing"<<endl;
85     listBFName = "listBFPsiMixed_";
86   }
87   listBFName += centralityArray[gCentrality-1];
88   if(gBit > -1) {
89     listBFName += "_Bit"; listBFName += gBit; }
90   if(gCentralityEstimator) {
91     listBFName += "_"; listBFName += gCentralityEstimator;}
92   listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
93   cout<<"======================================================="<<endl;
94   cout<<"List name: "<<listBF->GetName()<<endl;
95   //listBF->ls();
96
97   //Get the histograms
98   TString histoName;
99   if(kData == 0)
100     histoName = "fHistPV0M";
101   else if(kData == 1)
102     histoName = "fHistP_shuffleV0M";
103   else if(kData == 2)
104     histoName = "fHistPV0M";
105   AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));  
106   if(!fHistP) {
107     Printf("fHistP %s not found!!!",histoName.Data());
108     break;
109   }
110   fHistP->FillParent(); fHistP->DeleteContainers();
111
112   if(kData == 0)
113     histoName = "fHistNV0M";
114   if(kData == 1)
115     histoName = "fHistN_shuffleV0M";
116   if(kData == 2)
117     histoName = "fHistNV0M";
118   AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
119   if(!fHistN) {
120     Printf("fHistN %s not found!!!",histoName.Data());
121     break;
122   }
123   fHistN->FillParent(); fHistN->DeleteContainers();
124     
125   if(kData == 0)
126     histoName = "fHistPNV0M";
127   if(kData == 1)
128     histoName = "fHistPN_shuffleV0M";
129   if(kData == 2)
130     histoName = "fHistPNV0M";
131   AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
132   if(!fHistPN) {
133     Printf("fHistPN %s not found!!!",histoName.Data());
134     break;
135   }
136   fHistPN->FillParent(); fHistPN->DeleteContainers();
137   
138   if(kData == 0)
139     histoName = "fHistNPV0M";
140   if(kData == 1)
141     histoName = "fHistNP_shuffleV0M";
142   if(kData == 2)
143     histoName = "fHistNPV0M";
144   AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
145   if(!fHistNP) {
146     Printf("fHistNP %s not found!!!",histoName.Data());
147     break;
148   }
149   fHistNP->FillParent(); fHistNP->DeleteContainers();
150
151   if(kData == 0)
152     histoName = "fHistPPV0M";
153   if(kData == 1)
154     histoName = "fHistPP_shuffleV0M";
155   if(kData == 2)
156     histoName = "fHistPPV0M";
157   AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
158   if(!fHistPP) {
159     Printf("fHistPP %s not found!!!",histoName.Data());
160     break;
161   }
162   fHistPP->FillParent(); fHistPP->DeleteContainers();
163
164   if(kData == 0)
165     histoName = "fHistNNV0M";
166   if(kData == 1)
167     histoName = "fHistNN_shuffleV0M";
168   if(kData == 2)
169     histoName = "fHistNNV0M";
170   AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
171   if(!fHistNN) {
172     Printf("fHistNN %s not found!!!",histoName.Data());
173     break;
174   }
175   fHistNN->FillParent(); fHistNN->DeleteContainers();
176   
177   return listBF;
178 }
179
180 //______________________________________________________//
181 void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, 
182           Int_t gCentrality, Double_t psiMin, Double_t psiMax,
183           Double_t ptTriggerMin, Double_t ptTriggerMax,
184           Double_t ptAssociatedMin, Double_t ptAssociatedMax) {
185   //Draws the correlation functions for every centrality bin
186   //(+-), (-+), (++), (--)  
187   AliTHn *hP = NULL;
188   AliTHn *hN = NULL;
189   AliTHn *hPN = NULL;
190   AliTHn *hNP = NULL;
191   AliTHn *hPP = NULL;
192   AliTHn *hNN = NULL;
193   
194   hP = (AliTHn*) list->FindObject("fHistPV0M");
195   hN = (AliTHn*) list->FindObject("fHistNV0M");
196   hPN = (AliTHn*) list->FindObject("fHistPNV0M");
197   hNP = (AliTHn*) list->FindObject("fHistNPV0M");
198   hPP = (AliTHn*) list->FindObject("fHistPPV0M");
199   hNN = (AliTHn*) list->FindObject("fHistNNV0M");
200
201   //Create the AliBalancePsi object and fill it with the AliTHn objects
202   AliBalancePsi *b = new AliBalancePsi();
203   b->SetHistNp(hP);
204   b->SetHistNn(hN);
205   b->SetHistNpn(hPN);
206   b->SetHistNnp(hNP);
207   b->SetHistNpp(hPP);
208   b->SetHistNnn(hNN);
209
210   //balance function shuffling
211   AliTHn *hPShuffled = NULL;
212   AliTHn *hNShuffled = NULL;
213   AliTHn *hPNShuffled = NULL;
214   AliTHn *hNPShuffled = NULL;
215   AliTHn *hPPShuffled = NULL;
216   AliTHn *hNNShuffled = NULL;
217   if(listBFShuffled) {
218     //listBFShuffled->ls();
219     
220     hPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistP_shuffleV0M");
221     hPShuffled->SetName("gHistPShuffled");
222     hNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistN_shuffleV0M");
223     hNShuffled->SetName("gHistNShuffled");
224     hPNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPN_shuffleV0M");
225     hPNShuffled->SetName("gHistPNShuffled");
226     hNPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNP_shuffleV0M");
227     hNPShuffled->SetName("gHistNPShuffled");
228     hPPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPP_shuffleV0M");
229     hPPShuffled->SetName("gHistPPShuffled");
230     hNNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNN_shuffleV0M");
231     hNNShuffled->SetName("gHistNNShuffled");
232     
233     AliBalancePsi *bShuffled = new AliBalancePsi();
234     bShuffled->SetHistNp(hPShuffled);
235     bShuffled->SetHistNn(hNShuffled);
236     bShuffled->SetHistNpn(hPNShuffled);
237     bShuffled->SetHistNnp(hNPShuffled);
238     bShuffled->SetHistNpp(hPPShuffled);
239     bShuffled->SetHistNnn(hNNShuffled);
240   }
241
242   //balance function mixing
243   AliTHn *hPMixed = NULL;
244   AliTHn *hNMixed = NULL;
245   AliTHn *hPNMixed = NULL;
246   AliTHn *hNPMixed = NULL;
247   AliTHn *hPPMixed = NULL;
248   AliTHn *hNNMixed = NULL;
249
250   if(listBFMixed) {
251     //listBFMixed->ls();
252
253     hPMixed = (AliTHn*) listBFMixed->FindObject("fHistPV0M");
254     hPMixed->SetName("gHistPMixed");
255     hNMixed = (AliTHn*) listBFMixed->FindObject("fHistNV0M");
256     hNMixed->SetName("gHistNMixed");
257     hPNMixed = (AliTHn*) listBFMixed->FindObject("fHistPNV0M");
258     hPNMixed->SetName("gHistPNMixed");
259     hNPMixed = (AliTHn*) listBFMixed->FindObject("fHistNPV0M");
260     hNPMixed->SetName("gHistNPMixed");
261     hPPMixed = (AliTHn*) listBFMixed->FindObject("fHistPPV0M");
262     hPPMixed->SetName("gHistPPMixed");
263     hNNMixed = (AliTHn*) listBFMixed->FindObject("fHistNNV0M");
264     hNNMixed->SetName("gHistNNMixed");
265     
266     AliBalancePsi *bMixed = new AliBalancePsi();
267     bMixed->SetHistNp(hPMixed);
268     bMixed->SetHistNn(hNMixed);
269     bMixed->SetHistNpn(hPNMixed);
270     bMixed->SetHistNnp(hNPMixed);
271     bMixed->SetHistNpp(hPPMixed);
272     bMixed->SetHistNnn(hNNMixed);
273   }
274
275   TH2D *gHistPN[4];
276   TH2D *gHistNP[4];
277   TH2D *gHistPP[4];
278   TH2D *gHistNN[4];
279   
280   TCanvas *cPN[4];
281   TCanvas *cNP[4];
282   TCanvas *cPP[4];
283   TCanvas *cNN[4];
284   TString histoTitle, pngName;
285   
286   //(+-)
287   histoTitle = "(+-) | Centrality: ";
288   histoTitle += centralityArray[gCentrality-1]; 
289   histoTitle += "%";
290   if((psiMin == -0.5)&&(psiMax == 0.5))
291     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
292   else if((psiMin == 0.5)&&(psiMax == 1.5))
293     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
294   else if((psiMin == 1.5)&&(psiMax == 2.5))
295     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
296   else 
297     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
298
299   gHistPN[0] = b->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
300   gHistPN[0]->GetYaxis()->SetTitleOffset(1.5);
301   gHistPN[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
302   gHistPN[0]->SetTitle(histoTitle.Data());
303   cPN[0] = new TCanvas("cPN0","",0,0,600,500);
304   cPN[0]->SetFillColor(10); cPN[0]->SetHighLightColor(10);
305   gHistPN[0]->DrawCopy("surf1fb");
306   gPad->SetTheta(30); // default is 30
307   //gPad->SetPhi(130); // default is 30
308   gPad->SetPhi(-60); // default is 30
309   gPad->Update();
310   pngName = "DeltaPhiDeltaEta.Centrality"; 
311   pngName += centralityArray[gCentrality-1]; 
312   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
313   pngName += ".PositiveNegative.png";
314   cPN[0]->SaveAs(pngName.Data());
315   
316   if(listBFShuffled) {
317     histoTitle = "(+-) shuffled | Centrality: "; 
318     histoTitle += centralityArray[gCentrality-1]; 
319     histoTitle += "%";
320     if((psiMin == -0.5)&&(psiMax == 0.5))
321       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
322     else if((psiMin == 0.5)&&(psiMax == 1.5))
323       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
324     else if((psiMin == 1.5)&&(psiMax == 2.5))
325       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
326     else 
327       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
328     
329     gHistPN[1] = bShuffled->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
330     gHistPN[1]->GetYaxis()->SetTitleOffset(1.5);
331     gHistPN[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
332     gHistPN[1]->SetTitle(histoTitle.Data());
333     cPN[1] = new TCanvas("cPN1","",0,100,600,500);
334     cPN[1]->SetFillColor(10); 
335     cPN[1]->SetHighLightColor(10);
336     gHistPN[1]->DrawCopy("surf1fb");
337     gPad->SetTheta(30); // default is 30
338     //gPad->SetPhi(130); // default is 30
339     gPad->SetPhi(-60); // default is 30
340     gPad->Update();    
341     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
342     pngName += centralityArray[gCentrality-1]; 
343     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
344     pngName += ".PositiveNegative.png";
345     cPN[1]->SaveAs(pngName.Data());
346   }
347
348   if(listBFMixed) {
349     histoTitle = "(+-) mixed | Centrality: "; 
350     histoTitle += centralityArray[gCentrality-1]; 
351     histoTitle += "%";
352     if((psiMin == -0.5)&&(psiMax == 0.5))
353       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
354     else if((psiMin == 0.5)&&(psiMax == 1.5))
355       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
356     else if((psiMin == 1.5)&&(psiMax == 2.5))
357       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
358     else 
359       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
360     
361     gHistPN[2] = bMixed->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
362     gHistPN[2]->GetYaxis()->SetTitleOffset(1.5);
363     gHistPN[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
364     gHistPN[2]->SetTitle(histoTitle.Data());
365     cPN[2] = new TCanvas("cPN2","",0,200,600,500);
366     cPN[2]->SetFillColor(10); 
367     cPN[2]->SetHighLightColor(10);
368     gHistPN[2]->DrawCopy("surf1fb");
369     gPad->SetTheta(30); // default is 30
370     //gPad->SetPhi(130); // default is 30
371     gPad->SetPhi(-60); // default is 30
372     gPad->Update();    
373     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
374     pngName += centralityArray[gCentrality-1]; 
375     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
376     pngName += ".PositiveNegative.png";
377     cPN[2]->SaveAs(pngName.Data());
378
379     //Correlation function (+-)
380     gHistPN[3] = dynamic_cast<TH2D *>(gHistPN[0]->Clone());
381     gHistPN[3]->Divide(gHistPN[2]);
382     gHistPN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
383     gHistPN[3]->GetZaxis()->SetTitle("C_{+-}(#Delta#eta,#Delta#varphi)");
384     cPN[3] = new TCanvas("cPN3","",0,300,600,500);
385     cPN[3]->SetFillColor(10); 
386     cPN[3]->SetHighLightColor(10);
387     gHistPN[3]->DrawCopy("surf1fb");
388     gPad->SetTheta(30); // default is 30
389     //gPad->SetPhi(130); // default is 30
390     gPad->SetPhi(-60); // default is 30
391     gPad->Update();    
392     pngName = "CorrelationFunction.Centrality"; 
393     pngName += centralityArray[gCentrality-1]; 
394     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
395     pngName += ".PositiveNegative.png";
396     cPN[3]->SaveAs(pngName.Data());
397   }
398
399   //(-+)
400   histoTitle = "(-+) | Centrality: "; 
401   histoTitle += centralityArray[gCentrality-1]; 
402   histoTitle += "%";
403   if((psiMin == -0.5)&&(psiMax == 0.5))
404     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
405   else if((psiMin == 0.5)&&(psiMax == 1.5))
406     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
407   else if((psiMin == 1.5)&&(psiMax == 2.5))
408     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
409   else 
410     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
411
412   gHistNP[0] = b->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
413   gHistNP[0]->GetYaxis()->SetTitleOffset(1.5);
414   gHistNP[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
415   gHistNP[0]->SetTitle(histoTitle.Data());
416   cNP[0] = new TCanvas("cNP0","",100,0,600,500);
417   cNP[0]->SetFillColor(10); 
418   cNP[0]->SetHighLightColor(10);
419   gHistNP[0]->DrawCopy("surf1fb");
420   gPad->SetTheta(30); // default is 30
421   //gPad->SetPhi(130); // default is 30
422   gPad->SetPhi(-60); // default is 30
423   gPad->Update();
424   pngName = "DeltaPhiDeltaEta.Centrality"; 
425   pngName += centralityArray[gCentrality-1]; 
426   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
427   pngName += ".NegativePositive.png";
428   cNP[0]->SaveAs(pngName.Data());
429
430   if(listBFShuffled) {
431     histoTitle = "(-+) shuffled | Centrality: "; 
432     histoTitle += centralityArray[gCentrality-1]; 
433     histoTitle += "%";
434     if((psiMin == -0.5)&&(psiMax == 0.5))
435       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
436     else if((psiMin == 0.5)&&(psiMax == 1.5))
437       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
438     else if((psiMin == 1.5)&&(psiMax == 2.5))
439       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
440     else 
441       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
442     
443     gHistNP[1] = bShuffled->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
444     gHistNP[1]->GetYaxis()->SetTitleOffset(1.5);
445     gHistNP[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
446     gHistNP[1]->SetTitle(histoTitle.Data());
447     cNP[1] = new TCanvas("cNP1","",100,100,600,500);
448     cNP[1]->SetFillColor(10); 
449     cNP[1]->SetHighLightColor(10);
450     gHistNP[1]->DrawCopy("surf1fb");
451     gPad->SetTheta(30); // default is 30
452     //gPad->SetPhi(130); // default is 30
453     gPad->SetPhi(-60); // default is 30
454     gPad->Update();
455     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
456     pngName += centralityArray[gCentrality-1]; 
457     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
458     pngName += ".NegativePositive.png";
459     cNP[1]->SaveAs(pngName.Data());
460   }
461
462   if(listBFMixed) {
463     histoTitle = "(-+) mixed | Centrality: "; 
464     histoTitle += centralityArray[gCentrality-1]; 
465     histoTitle += "%";
466     if((psiMin == -0.5)&&(psiMax == 0.5))
467       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
468     else if((psiMin == 0.5)&&(psiMax == 1.5))
469       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
470     else if((psiMin == 1.5)&&(psiMax == 2.5))
471       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
472     else 
473       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
474     
475     gHistNP[2] = bMixed->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
476     gHistNP[2]->GetYaxis()->SetTitleOffset(1.5);
477     gHistNP[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
478     gHistNP[2]->SetTitle(histoTitle.Data());
479     cNP[2] = new TCanvas("cNP2","",100,200,600,500);
480     cNP[2]->SetFillColor(10); 
481     cNP[2]->SetHighLightColor(10);
482     gHistNP[2]->DrawCopy("surf1fb");
483     gPad->SetTheta(30); // default is 30
484     //gPad->SetPhi(130); // default is 30
485     gPad->SetPhi(-60); // default is 30
486     gPad->Update();
487     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
488     pngName += centralityArray[gCentrality-1]; 
489     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
490     pngName += ".NegativePositive.png";
491     cNP[2]->SaveAs(pngName.Data());
492
493     //Correlation function (-+)
494     gHistNP[3] = dynamic_cast<TH2D *>(gHistNP[0]->Clone());
495     gHistNP[3]->Divide(gHistNP[2]);
496     gHistNP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
497     gHistNP[3]->GetZaxis()->SetTitle("C_{-+}(#Delta#eta,#Delta#varphi)");
498     cNP[3] = new TCanvas("cNP3","",100,300,600,500);
499     cNP[3]->SetFillColor(10); 
500     cNP[3]->SetHighLightColor(10);
501     gHistNP[3]->DrawCopy("surf1fb");
502     gPad->SetTheta(30); // default is 30
503     //gPad->SetPhi(130); // default is 30
504     gPad->SetPhi(-60); // default is 30
505     gPad->Update();    
506     pngName = "CorrelationFunction.Centrality"; 
507     pngName += centralityArray[gCentrality-1]; 
508     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
509     pngName += ".NegativePositive.png";
510     cNP[3]->SaveAs(pngName.Data());
511   }
512   
513   //(++)
514   histoTitle = "(++) | Centrality: "; 
515   histoTitle += centralityArray[gCentrality-1]; 
516   histoTitle += "%";
517   if((psiMin == -0.5)&&(psiMax == 0.5))
518     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
519   else if((psiMin == 0.5)&&(psiMax == 1.5))
520     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
521   else if((psiMin == 1.5)&&(psiMax == 2.5))
522     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
523   else 
524     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
525
526   gHistPP[0] = b->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
527   gHistPP[0]->GetYaxis()->SetTitleOffset(1.5);
528   gHistPP[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
529   gHistPP[0]->SetTitle(histoTitle.Data());
530   cPP[0] = new TCanvas("cPP0","",200,0,600,500);
531   cPP[0]->SetFillColor(10); 
532   cPP[0]->SetHighLightColor(10);
533   gHistPP[0]->DrawCopy("surf1fb");
534   gPad->SetTheta(30); // default is 30
535   //gPad->SetPhi(130); // default is 30
536   gPad->SetPhi(-60); // default is 30
537   gPad->Update();
538   pngName = "DeltaPhiDeltaEta.Centrality"; 
539   pngName += centralityArray[gCentrality-1]; 
540   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
541   pngName += ".PositivePositive.png";
542   cPP[0]->SaveAs(pngName.Data());
543   
544   if(listBFShuffled) {
545     histoTitle = "(++) shuffled | Centrality: "; 
546     histoTitle += centralityArray[gCentrality-1]; 
547     histoTitle += "%";
548     if((psiMin == -0.5)&&(psiMax == 0.5))
549       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
550     else if((psiMin == 0.5)&&(psiMax == 1.5))
551       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
552     else if((psiMin == 1.5)&&(psiMax == 2.5))
553       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
554     else 
555       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
556     
557     gHistPP[1] = bShuffled->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
558     gHistPP[1]->GetYaxis()->SetTitleOffset(1.5);
559     gHistPP[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
560     gHistPP[1]->SetTitle(histoTitle.Data());
561     cPP[1] = new TCanvas("cPP1","",200,100,600,500);
562     cPP[1]->SetFillColor(10); 
563     cPP[1]->SetHighLightColor(10);
564     gHistPP[1]->DrawCopy("surf1fb");
565     gPad->SetTheta(30); // default is 30
566     //gPad->SetPhi(130); // default is 30
567     gPad->SetPhi(-60); // default is 30
568     gPad->Update();
569     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
570     pngName += centralityArray[gCentrality-1]; 
571     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
572     pngName += ".PositivePositive.png";
573     cPP[1]->SaveAs(pngName.Data());
574   }
575
576   if(listBFMixed) {
577     histoTitle = "(++) mixed | Centrality: "; 
578     histoTitle += centralityArray[gCentrality-1]; 
579     histoTitle += "%";
580     if((psiMin == -0.5)&&(psiMax == 0.5))
581       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
582     else if((psiMin == 0.5)&&(psiMax == 1.5))
583       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
584     else if((psiMin == 1.5)&&(psiMax == 2.5))
585       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
586     else 
587       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
588     
589     gHistPP[2] = bMixed->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
590     gHistPP[2]->GetYaxis()->SetTitleOffset(1.5);
591     gHistPP[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
592     gHistPP[2]->SetTitle(histoTitle.Data());
593     cPP[2] = new TCanvas("cPP2","",200,200,600,500);
594     cPP[2]->SetFillColor(10); 
595     cPP[2]->SetHighLightColor(10);
596     gHistPP[2]->DrawCopy("surf1fb");
597     gPad->SetTheta(30); // default is 30
598     //gPad->SetPhi(130); // default is 30
599     gPad->SetPhi(-60); // default is 30
600     gPad->Update();
601     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
602     pngName += centralityArray[gCentrality-1]; 
603     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
604     pngName += ".PositivePositive.png";
605     cPP[2]->SaveAs(pngName.Data());
606
607     //Correlation function (++)
608     gHistPP[3] = dynamic_cast<TH2D *>(gHistPP[0]->Clone());
609     gHistPP[3]->Divide(gHistPP[2]);
610     gHistPP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
611     gHistPP[3]->GetZaxis()->SetTitle("C_{++}(#Delta#eta,#Delta#varphi)");
612     cPP[3] = new TCanvas("cPP3","",200,300,600,500);
613     cPP[3]->SetFillColor(10); 
614     cPP[3]->SetHighLightColor(10);
615     gHistPP[3]->DrawCopy("surf1fb");
616     gPad->SetTheta(30); // default is 30
617     //gPad->SetPhi(130); // default is 30
618     gPad->SetPhi(-60); // default is 30
619     gPad->Update();    
620     pngName = "CorrelationFunction.Centrality"; 
621     pngName += centralityArray[gCentrality-1]; 
622     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
623     pngName += ".PositivePositive.png";
624     cPP[3]->SaveAs(pngName.Data());
625   }
626
627   //(--)
628   histoTitle = "(--) | Centrality: "; 
629   histoTitle += centralityArray[gCentrality-1]; 
630   histoTitle += "%";
631   if((psiMin == -0.5)&&(psiMax == 0.5))
632     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
633   else if((psiMin == 0.5)&&(psiMax == 1.5))
634     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
635   else if((psiMin == 1.5)&&(psiMax == 2.5))
636     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
637   else 
638     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
639
640   gHistNN[0] = b->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
641   gHistNN[0]->GetYaxis()->SetTitleOffset(1.5);
642   gHistNN[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
643   gHistNN[0]->SetTitle(histoTitle.Data());
644   cNN[0] = new TCanvas("cNN0","",300,0,600,500);
645   cNN[0]->SetFillColor(10); 
646   cNN[0]->SetHighLightColor(10);
647   gHistNN[0]->DrawCopy("surf1fb");
648   gPad->SetTheta(30); // default is 30
649   gPad->SetPhi(-60); // default is 30
650   //gPad->SetPhi(-60); // default is 30
651   gPad->Update();
652   pngName = "DeltaPhiDeltaEta.Centrality"; 
653   pngName += centralityArray[gCentrality-1]; 
654   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
655   pngName += ".NegativeNegative.png";
656   cNN[0]->SaveAs(pngName.Data());
657
658   if(listBFShuffled) {
659     histoTitle = "(--) shuffled | Centrality: "; 
660     histoTitle += centralityArray[gCentrality-1]; 
661     histoTitle += "%";
662     if((psiMin == -0.5)&&(psiMax == 0.5))
663       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
664     else if((psiMin == 0.5)&&(psiMax == 1.5))
665       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
666     else if((psiMin == 1.5)&&(psiMax == 2.5))
667       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
668     else 
669       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
670     
671     gHistNN[1] = bShuffled->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
672     gHistNN[1]->GetYaxis()->SetTitleOffset(1.5);
673     gHistNN[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
674     gHistNN[1]->SetTitle(histoTitle.Data());
675     cNN[1] = new TCanvas("cNN1","",300,100,600,500);
676     cNN[1]->SetFillColor(10); 
677     cNN[1]->SetHighLightColor(10);
678     gHistNN[1]->DrawCopy("surf1fb");
679     gPad->SetTheta(30); // default is 30
680     //gPad->SetPhi(130); // default is 30
681     gPad->SetPhi(-60); // default is 30
682     gPad->Update();
683     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
684     pngName += centralityArray[gCentrality-1]; 
685     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
686     pngName += ".NegativeNegative.png";
687     cNN[1]->SaveAs(pngName.Data());
688   }
689
690   if(listBFMixed) {
691     histoTitle = "(--) mixed | Centrality: "; 
692     histoTitle += centralityArray[gCentrality-1]; 
693     histoTitle += "%";
694     if((psiMin == -0.5)&&(psiMax == 0.5))
695       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
696     else if((psiMin == 0.5)&&(psiMax == 1.5))
697       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
698     else if((psiMin == 1.5)&&(psiMax == 2.5))
699       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
700     else 
701       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
702     
703     gHistNN[2] = bMixed->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
704     gHistNN[2]->GetYaxis()->SetTitleOffset(1.5);
705     gHistNN[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
706     gHistNN[2]->SetTitle(histoTitle.Data());
707     cNN[2] = new TCanvas("cNN2","",300,200,600,500);
708     cNN[2]->SetFillColor(10); 
709     cNN[2]->SetHighLightColor(10);
710     gHistNN[2]->DrawCopy("surf1fb");
711     gPad->SetTheta(30); // default is 30
712     //gPad->SetPhi(130); // default is 30
713     gPad->SetPhi(-60); // default is 30
714     gPad->Update();
715     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
716     pngName += centralityArray[gCentrality-1]; 
717     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
718     pngName += ".NegativeNegative.png";
719     cNN[2]->SaveAs(pngName.Data());
720
721     //Correlation function (--)
722     gHistNN[3] = dynamic_cast<TH2D *>(gHistNN[0]->Clone());
723     gHistNN[3]->Divide(gHistNN[2]);
724     gHistNN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
725     gHistNN[3]->GetZaxis()->SetTitle("C_{--}(#Delta#eta,#Delta#varphi)");
726     cNN[3] = new TCanvas("cNN3","",300,300,600,500);
727     cNN[3]->SetFillColor(10); 
728     cNN[3]->SetHighLightColor(10);
729     gHistNN[3]->DrawCopy("surf1fb");
730     gPad->SetTheta(30); // default is 30
731     //gPad->SetPhi(130); // default is 30
732     gPad->SetPhi(-60); // default is 30
733     gPad->Update();    
734     pngName = "CorrelationFunction.Centrality"; 
735     pngName += centralityArray[gCentrality-1]; 
736     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
737     pngName += ".NegativeNegative.png";
738     cNN[3]->SaveAs(pngName.Data());
739   }
740 }
741