Adding Correlation analysis for Leading V0 particle AliLeadingV0Correlation (Sandun...
[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,"UPDATE");
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   dir->cd();
178   listBF->Write(Form("%s_new",listBFName.Data()), TObject::kSingleKey);
179   f->Close();
180
181   return listBF;
182 }
183
184 //______________________________________________________//
185 void draw(TList *list, TList *listBFShuffled, TList *listBFMixed, 
186           Int_t gCentrality, Double_t psiMin, Double_t psiMax,
187           Double_t ptTriggerMin, Double_t ptTriggerMax,
188           Double_t ptAssociatedMin, Double_t ptAssociatedMax) {
189   //Draws the correlation functions for every centrality bin
190   //(+-), (-+), (++), (--)  
191   AliTHn *hP = NULL;
192   AliTHn *hN = NULL;
193   AliTHn *hPN = NULL;
194   AliTHn *hNP = NULL;
195   AliTHn *hPP = NULL;
196   AliTHn *hNN = NULL;
197   
198   hP = (AliTHn*) list->FindObject("fHistPV0M");
199   hN = (AliTHn*) list->FindObject("fHistNV0M");
200   hPN = (AliTHn*) list->FindObject("fHistPNV0M");
201   hNP = (AliTHn*) list->FindObject("fHistNPV0M");
202   hPP = (AliTHn*) list->FindObject("fHistPPV0M");
203   hNN = (AliTHn*) list->FindObject("fHistNNV0M");
204
205   //Create the AliBalancePsi object and fill it with the AliTHn objects
206   AliBalancePsi *b = new AliBalancePsi();
207   b->SetHistNp(hP);
208   b->SetHistNn(hN);
209   b->SetHistNpn(hPN);
210   b->SetHistNnp(hNP);
211   b->SetHistNpp(hPP);
212   b->SetHistNnn(hNN);
213
214   //balance function shuffling
215   AliTHn *hPShuffled = NULL;
216   AliTHn *hNShuffled = NULL;
217   AliTHn *hPNShuffled = NULL;
218   AliTHn *hNPShuffled = NULL;
219   AliTHn *hPPShuffled = NULL;
220   AliTHn *hNNShuffled = NULL;
221   if(listBFShuffled) {
222     //listBFShuffled->ls();
223     
224     hPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistP_shuffleV0M");
225     hPShuffled->SetName("gHistPShuffled");
226     hNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistN_shuffleV0M");
227     hNShuffled->SetName("gHistNShuffled");
228     hPNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPN_shuffleV0M");
229     hPNShuffled->SetName("gHistPNShuffled");
230     hNPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNP_shuffleV0M");
231     hNPShuffled->SetName("gHistNPShuffled");
232     hPPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPP_shuffleV0M");
233     hPPShuffled->SetName("gHistPPShuffled");
234     hNNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNN_shuffleV0M");
235     hNNShuffled->SetName("gHistNNShuffled");
236     
237     AliBalancePsi *bShuffled = new AliBalancePsi();
238     bShuffled->SetHistNp(hPShuffled);
239     bShuffled->SetHistNn(hNShuffled);
240     bShuffled->SetHistNpn(hPNShuffled);
241     bShuffled->SetHistNnp(hNPShuffled);
242     bShuffled->SetHistNpp(hPPShuffled);
243     bShuffled->SetHistNnn(hNNShuffled);
244   }
245
246   //balance function mixing
247   AliTHn *hPMixed = NULL;
248   AliTHn *hNMixed = NULL;
249   AliTHn *hPNMixed = NULL;
250   AliTHn *hNPMixed = NULL;
251   AliTHn *hPPMixed = NULL;
252   AliTHn *hNNMixed = NULL;
253
254   if(listBFMixed) {
255     //listBFMixed->ls();
256
257     hPMixed = (AliTHn*) listBFMixed->FindObject("fHistPV0M");
258     hPMixed->SetName("gHistPMixed");
259     hNMixed = (AliTHn*) listBFMixed->FindObject("fHistNV0M");
260     hNMixed->SetName("gHistNMixed");
261     hPNMixed = (AliTHn*) listBFMixed->FindObject("fHistPNV0M");
262     hPNMixed->SetName("gHistPNMixed");
263     hNPMixed = (AliTHn*) listBFMixed->FindObject("fHistNPV0M");
264     hNPMixed->SetName("gHistNPMixed");
265     hPPMixed = (AliTHn*) listBFMixed->FindObject("fHistPPV0M");
266     hPPMixed->SetName("gHistPPMixed");
267     hNNMixed = (AliTHn*) listBFMixed->FindObject("fHistNNV0M");
268     hNNMixed->SetName("gHistNNMixed");
269     
270     AliBalancePsi *bMixed = new AliBalancePsi();
271     bMixed->SetHistNp(hPMixed);
272     bMixed->SetHistNn(hNMixed);
273     bMixed->SetHistNpn(hPNMixed);
274     bMixed->SetHistNnp(hNPMixed);
275     bMixed->SetHistNpp(hPPMixed);
276     bMixed->SetHistNnn(hNNMixed);
277   }
278
279   TH2D *gHistPN[4];
280   TH2D *gHistNP[4];
281   TH2D *gHistPP[4];
282   TH2D *gHistNN[4];
283   
284   TCanvas *cPN[4];
285   TCanvas *cNP[4];
286   TCanvas *cPP[4];
287   TCanvas *cNN[4];
288   TString histoTitle, pngName;
289   
290   //(+-)
291   histoTitle = "(+-) | Centrality: ";
292   histoTitle += centralityArray[gCentrality-1]; 
293   histoTitle += "%";
294   if((psiMin == -0.5)&&(psiMax == 0.5))
295     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
296   else if((psiMin == 0.5)&&(psiMax == 1.5))
297     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
298   else if((psiMin == 1.5)&&(psiMax == 2.5))
299     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
300   else 
301     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
302
303   gHistPN[0] = b->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
304   gHistPN[0]->GetYaxis()->SetTitleOffset(1.5);
305   gHistPN[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
306   gHistPN[0]->SetTitle(histoTitle.Data());
307   cPN[0] = new TCanvas("cPN0","",0,0,600,500);
308   cPN[0]->SetFillColor(10); cPN[0]->SetHighLightColor(10);
309   gHistPN[0]->DrawCopy("surf1fb");
310   gPad->SetTheta(30); // default is 30
311   //gPad->SetPhi(130); // default is 30
312   gPad->SetPhi(-60); // default is 30
313   gPad->Update();
314   pngName = "DeltaPhiDeltaEta.Centrality"; 
315   pngName += centralityArray[gCentrality-1]; 
316   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
317   pngName += ".PositiveNegative.png";
318   cPN[0]->SaveAs(pngName.Data());
319   
320   if(listBFShuffled) {
321     histoTitle = "(+-) shuffled | Centrality: "; 
322     histoTitle += centralityArray[gCentrality-1]; 
323     histoTitle += "%";
324     if((psiMin == -0.5)&&(psiMax == 0.5))
325       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
326     else if((psiMin == 0.5)&&(psiMax == 1.5))
327       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
328     else if((psiMin == 1.5)&&(psiMax == 2.5))
329       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
330     else 
331       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
332     
333     gHistPN[1] = bShuffled->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
334     gHistPN[1]->GetYaxis()->SetTitleOffset(1.5);
335     gHistPN[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
336     gHistPN[1]->SetTitle(histoTitle.Data());
337     cPN[1] = new TCanvas("cPN1","",0,100,600,500);
338     cPN[1]->SetFillColor(10); 
339     cPN[1]->SetHighLightColor(10);
340     gHistPN[1]->DrawCopy("surf1fb");
341     gPad->SetTheta(30); // default is 30
342     //gPad->SetPhi(130); // default is 30
343     gPad->SetPhi(-60); // default is 30
344     gPad->Update();    
345     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
346     pngName += centralityArray[gCentrality-1]; 
347     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
348     pngName += ".PositiveNegative.png";
349     cPN[1]->SaveAs(pngName.Data());
350   }
351
352   if(listBFMixed) {
353     histoTitle = "(+-) mixed | Centrality: "; 
354     histoTitle += centralityArray[gCentrality-1]; 
355     histoTitle += "%";
356     if((psiMin == -0.5)&&(psiMax == 0.5))
357       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
358     else if((psiMin == 0.5)&&(psiMax == 1.5))
359       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
360     else if((psiMin == 1.5)&&(psiMax == 2.5))
361       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
362     else 
363       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
364     
365     gHistPN[2] = bMixed->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
366     gHistPN[2]->GetYaxis()->SetTitleOffset(1.5);
367     gHistPN[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
368     gHistPN[2]->SetTitle(histoTitle.Data());
369     cPN[2] = new TCanvas("cPN2","",0,200,600,500);
370     cPN[2]->SetFillColor(10); 
371     cPN[2]->SetHighLightColor(10);
372     gHistPN[2]->DrawCopy("surf1fb");
373     gPad->SetTheta(30); // default is 30
374     //gPad->SetPhi(130); // default is 30
375     gPad->SetPhi(-60); // default is 30
376     gPad->Update();    
377     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
378     pngName += centralityArray[gCentrality-1]; 
379     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
380     pngName += ".PositiveNegative.png";
381     cPN[2]->SaveAs(pngName.Data());
382
383     //Correlation function (+-)
384     gHistPN[3] = dynamic_cast<TH2D *>(gHistPN[0]->Clone());
385     gHistPN[3]->Divide(gHistPN[2]);
386     gHistPN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
387     gHistPN[3]->GetZaxis()->SetTitle("C_{+-}(#Delta#eta,#Delta#varphi)");
388     cPN[3] = new TCanvas("cPN3","",0,300,600,500);
389     cPN[3]->SetFillColor(10); 
390     cPN[3]->SetHighLightColor(10);
391     gHistPN[3]->DrawCopy("surf1fb");
392     gPad->SetTheta(30); // default is 30
393     //gPad->SetPhi(130); // default is 30
394     gPad->SetPhi(-60); // default is 30
395     gPad->Update();    
396     pngName = "CorrelationFunction.Centrality"; 
397     pngName += centralityArray[gCentrality-1]; 
398     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
399     pngName += ".PositiveNegative.png";
400     cPN[3]->SaveAs(pngName.Data());
401   }
402
403   //(-+)
404   histoTitle = "(-+) | Centrality: "; 
405   histoTitle += centralityArray[gCentrality-1]; 
406   histoTitle += "%";
407   if((psiMin == -0.5)&&(psiMax == 0.5))
408     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
409   else if((psiMin == 0.5)&&(psiMax == 1.5))
410     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
411   else if((psiMin == 1.5)&&(psiMax == 2.5))
412     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
413   else 
414     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
415
416   gHistNP[0] = b->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
417   gHistNP[0]->GetYaxis()->SetTitleOffset(1.5);
418   gHistNP[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
419   gHistNP[0]->SetTitle(histoTitle.Data());
420   cNP[0] = new TCanvas("cNP0","",100,0,600,500);
421   cNP[0]->SetFillColor(10); 
422   cNP[0]->SetHighLightColor(10);
423   gHistNP[0]->DrawCopy("surf1fb");
424   gPad->SetTheta(30); // default is 30
425   //gPad->SetPhi(130); // default is 30
426   gPad->SetPhi(-60); // default is 30
427   gPad->Update();
428   pngName = "DeltaPhiDeltaEta.Centrality"; 
429   pngName += centralityArray[gCentrality-1]; 
430   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
431   pngName += ".NegativePositive.png";
432   cNP[0]->SaveAs(pngName.Data());
433
434   if(listBFShuffled) {
435     histoTitle = "(-+) shuffled | Centrality: "; 
436     histoTitle += centralityArray[gCentrality-1]; 
437     histoTitle += "%";
438     if((psiMin == -0.5)&&(psiMax == 0.5))
439       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
440     else if((psiMin == 0.5)&&(psiMax == 1.5))
441       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
442     else if((psiMin == 1.5)&&(psiMax == 2.5))
443       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
444     else 
445       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
446     
447     gHistNP[1] = bShuffled->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
448     gHistNP[1]->GetYaxis()->SetTitleOffset(1.5);
449     gHistNP[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
450     gHistNP[1]->SetTitle(histoTitle.Data());
451     cNP[1] = new TCanvas("cNP1","",100,100,600,500);
452     cNP[1]->SetFillColor(10); 
453     cNP[1]->SetHighLightColor(10);
454     gHistNP[1]->DrawCopy("surf1fb");
455     gPad->SetTheta(30); // default is 30
456     //gPad->SetPhi(130); // default is 30
457     gPad->SetPhi(-60); // default is 30
458     gPad->Update();
459     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
460     pngName += centralityArray[gCentrality-1]; 
461     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
462     pngName += ".NegativePositive.png";
463     cNP[1]->SaveAs(pngName.Data());
464   }
465
466   if(listBFMixed) {
467     histoTitle = "(-+) mixed | Centrality: "; 
468     histoTitle += centralityArray[gCentrality-1]; 
469     histoTitle += "%";
470     if((psiMin == -0.5)&&(psiMax == 0.5))
471       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
472     else if((psiMin == 0.5)&&(psiMax == 1.5))
473       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
474     else if((psiMin == 1.5)&&(psiMax == 2.5))
475       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
476     else 
477       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
478     
479     gHistNP[2] = bMixed->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
480     gHistNP[2]->GetYaxis()->SetTitleOffset(1.5);
481     gHistNP[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
482     gHistNP[2]->SetTitle(histoTitle.Data());
483     cNP[2] = new TCanvas("cNP2","",100,200,600,500);
484     cNP[2]->SetFillColor(10); 
485     cNP[2]->SetHighLightColor(10);
486     gHistNP[2]->DrawCopy("surf1fb");
487     gPad->SetTheta(30); // default is 30
488     //gPad->SetPhi(130); // default is 30
489     gPad->SetPhi(-60); // default is 30
490     gPad->Update();
491     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
492     pngName += centralityArray[gCentrality-1]; 
493     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
494     pngName += ".NegativePositive.png";
495     cNP[2]->SaveAs(pngName.Data());
496
497     //Correlation function (-+)
498     gHistNP[3] = dynamic_cast<TH2D *>(gHistNP[0]->Clone());
499     gHistNP[3]->Divide(gHistNP[2]);
500     gHistNP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
501     gHistNP[3]->GetZaxis()->SetTitle("C_{-+}(#Delta#eta,#Delta#varphi)");
502     cNP[3] = new TCanvas("cNP3","",100,300,600,500);
503     cNP[3]->SetFillColor(10); 
504     cNP[3]->SetHighLightColor(10);
505     gHistNP[3]->DrawCopy("surf1fb");
506     gPad->SetTheta(30); // default is 30
507     //gPad->SetPhi(130); // default is 30
508     gPad->SetPhi(-60); // default is 30
509     gPad->Update();    
510     pngName = "CorrelationFunction.Centrality"; 
511     pngName += centralityArray[gCentrality-1]; 
512     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
513     pngName += ".NegativePositive.png";
514     cNP[3]->SaveAs(pngName.Data());
515   }
516   
517   //(++)
518   histoTitle = "(++) | Centrality: "; 
519   histoTitle += centralityArray[gCentrality-1]; 
520   histoTitle += "%";
521   if((psiMin == -0.5)&&(psiMax == 0.5))
522     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
523   else if((psiMin == 0.5)&&(psiMax == 1.5))
524     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
525   else if((psiMin == 1.5)&&(psiMax == 2.5))
526     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
527   else 
528     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
529
530   gHistPP[0] = b->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
531   gHistPP[0]->GetYaxis()->SetTitleOffset(1.5);
532   gHistPP[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
533   gHistPP[0]->SetTitle(histoTitle.Data());
534   cPP[0] = new TCanvas("cPP0","",200,0,600,500);
535   cPP[0]->SetFillColor(10); 
536   cPP[0]->SetHighLightColor(10);
537   gHistPP[0]->DrawCopy("surf1fb");
538   gPad->SetTheta(30); // default is 30
539   //gPad->SetPhi(130); // default is 30
540   gPad->SetPhi(-60); // default is 30
541   gPad->Update();
542   pngName = "DeltaPhiDeltaEta.Centrality"; 
543   pngName += centralityArray[gCentrality-1]; 
544   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
545   pngName += ".PositivePositive.png";
546   cPP[0]->SaveAs(pngName.Data());
547   
548   if(listBFShuffled) {
549     histoTitle = "(++) shuffled | Centrality: "; 
550     histoTitle += centralityArray[gCentrality-1]; 
551     histoTitle += "%";
552     if((psiMin == -0.5)&&(psiMax == 0.5))
553       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
554     else if((psiMin == 0.5)&&(psiMax == 1.5))
555       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
556     else if((psiMin == 1.5)&&(psiMax == 2.5))
557       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
558     else 
559       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
560     
561     gHistPP[1] = bShuffled->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
562     gHistPP[1]->GetYaxis()->SetTitleOffset(1.5);
563     gHistPP[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
564     gHistPP[1]->SetTitle(histoTitle.Data());
565     cPP[1] = new TCanvas("cPP1","",200,100,600,500);
566     cPP[1]->SetFillColor(10); 
567     cPP[1]->SetHighLightColor(10);
568     gHistPP[1]->DrawCopy("surf1fb");
569     gPad->SetTheta(30); // default is 30
570     //gPad->SetPhi(130); // default is 30
571     gPad->SetPhi(-60); // default is 30
572     gPad->Update();
573     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
574     pngName += centralityArray[gCentrality-1]; 
575     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
576     pngName += ".PositivePositive.png";
577     cPP[1]->SaveAs(pngName.Data());
578   }
579
580   if(listBFMixed) {
581     histoTitle = "(++) mixed | Centrality: "; 
582     histoTitle += centralityArray[gCentrality-1]; 
583     histoTitle += "%";
584     if((psiMin == -0.5)&&(psiMax == 0.5))
585       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
586     else if((psiMin == 0.5)&&(psiMax == 1.5))
587       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
588     else if((psiMin == 1.5)&&(psiMax == 2.5))
589       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
590     else 
591       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
592     
593     gHistPP[2] = bMixed->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
594     gHistPP[2]->GetYaxis()->SetTitleOffset(1.5);
595     gHistPP[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
596     gHistPP[2]->SetTitle(histoTitle.Data());
597     cPP[2] = new TCanvas("cPP2","",200,200,600,500);
598     cPP[2]->SetFillColor(10); 
599     cPP[2]->SetHighLightColor(10);
600     gHistPP[2]->DrawCopy("surf1fb");
601     gPad->SetTheta(30); // default is 30
602     //gPad->SetPhi(130); // default is 30
603     gPad->SetPhi(-60); // default is 30
604     gPad->Update();
605     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
606     pngName += centralityArray[gCentrality-1]; 
607     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
608     pngName += ".PositivePositive.png";
609     cPP[2]->SaveAs(pngName.Data());
610
611     //Correlation function (++)
612     gHistPP[3] = dynamic_cast<TH2D *>(gHistPP[0]->Clone());
613     gHistPP[3]->Divide(gHistPP[2]);
614     gHistPP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
615     gHistPP[3]->GetZaxis()->SetTitle("C_{++}(#Delta#eta,#Delta#varphi)");
616     cPP[3] = new TCanvas("cPP3","",200,300,600,500);
617     cPP[3]->SetFillColor(10); 
618     cPP[3]->SetHighLightColor(10);
619     gHistPP[3]->DrawCopy("surf1fb");
620     gPad->SetTheta(30); // default is 30
621     //gPad->SetPhi(130); // default is 30
622     gPad->SetPhi(-60); // default is 30
623     gPad->Update();    
624     pngName = "CorrelationFunction.Centrality"; 
625     pngName += centralityArray[gCentrality-1]; 
626     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
627     pngName += ".PositivePositive.png";
628     cPP[3]->SaveAs(pngName.Data());
629   }
630
631   //(--)
632   histoTitle = "(--) | Centrality: "; 
633   histoTitle += centralityArray[gCentrality-1]; 
634   histoTitle += "%";
635   if((psiMin == -0.5)&&(psiMax == 0.5))
636     histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
637   else if((psiMin == 0.5)&&(psiMax == 1.5))
638     histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
639   else if((psiMin == 1.5)&&(psiMax == 2.5))
640     histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
641   else 
642     histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
643
644   gHistNN[0] = b->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
645   gHistNN[0]->GetYaxis()->SetTitleOffset(1.5);
646   gHistNN[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
647   gHistNN[0]->SetTitle(histoTitle.Data());
648   cNN[0] = new TCanvas("cNN0","",300,0,600,500);
649   cNN[0]->SetFillColor(10); 
650   cNN[0]->SetHighLightColor(10);
651   gHistNN[0]->DrawCopy("surf1fb");
652   gPad->SetTheta(30); // default is 30
653   gPad->SetPhi(-60); // default is 30
654   //gPad->SetPhi(-60); // default is 30
655   gPad->Update();
656   pngName = "DeltaPhiDeltaEta.Centrality"; 
657   pngName += centralityArray[gCentrality-1]; 
658   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
659   pngName += ".NegativeNegative.png";
660   cNN[0]->SaveAs(pngName.Data());
661
662   if(listBFShuffled) {
663     histoTitle = "(--) shuffled | Centrality: "; 
664     histoTitle += centralityArray[gCentrality-1]; 
665     histoTitle += "%";
666     if((psiMin == -0.5)&&(psiMax == 0.5))
667       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
668     else if((psiMin == 0.5)&&(psiMax == 1.5))
669       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
670     else if((psiMin == 1.5)&&(psiMax == 2.5))
671       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
672     else 
673       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
674     
675     gHistNN[1] = bShuffled->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
676     gHistNN[1]->GetYaxis()->SetTitleOffset(1.5);
677     gHistNN[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
678     gHistNN[1]->SetTitle(histoTitle.Data());
679     cNN[1] = new TCanvas("cNN1","",300,100,600,500);
680     cNN[1]->SetFillColor(10); 
681     cNN[1]->SetHighLightColor(10);
682     gHistNN[1]->DrawCopy("surf1fb");
683     gPad->SetTheta(30); // default is 30
684     //gPad->SetPhi(130); // default is 30
685     gPad->SetPhi(-60); // default is 30
686     gPad->Update();
687     pngName = "DeltaPhiDeltaEtaShuffled.Centrality"; 
688     pngName += centralityArray[gCentrality-1]; 
689     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
690     pngName += ".NegativeNegative.png";
691     cNN[1]->SaveAs(pngName.Data());
692   }
693
694   if(listBFMixed) {
695     histoTitle = "(--) mixed | Centrality: "; 
696     histoTitle += centralityArray[gCentrality-1]; 
697     histoTitle += "%";
698     if((psiMin == -0.5)&&(psiMax == 0.5))
699       histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})"; 
700     else if((psiMin == 0.5)&&(psiMax == 1.5))
701       histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})"; 
702     else if((psiMin == 1.5)&&(psiMax == 2.5))
703       histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})"; 
704     else 
705       histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})"; 
706     
707     gHistNN[2] = bMixed->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
708     gHistNN[2]->GetYaxis()->SetTitleOffset(1.5);
709     gHistNN[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
710     gHistNN[2]->SetTitle(histoTitle.Data());
711     cNN[2] = new TCanvas("cNN2","",300,200,600,500);
712     cNN[2]->SetFillColor(10); 
713     cNN[2]->SetHighLightColor(10);
714     gHistNN[2]->DrawCopy("surf1fb");
715     gPad->SetTheta(30); // default is 30
716     //gPad->SetPhi(130); // default is 30
717     gPad->SetPhi(-60); // default is 30
718     gPad->Update();
719     pngName = "DeltaPhiDeltaEtaMixed.Centrality"; 
720     pngName += centralityArray[gCentrality-1]; 
721     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
722     pngName += ".NegativeNegative.png";
723     cNN[2]->SaveAs(pngName.Data());
724
725     //Correlation function (--)
726     gHistNN[3] = dynamic_cast<TH2D *>(gHistNN[0]->Clone());
727     gHistNN[3]->Divide(gHistNN[2]);
728     gHistNN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
729     gHistNN[3]->GetZaxis()->SetTitle("C_{--}(#Delta#eta,#Delta#varphi)");
730     cNN[3] = new TCanvas("cNN3","",300,300,600,500);
731     cNN[3]->SetFillColor(10); 
732     cNN[3]->SetHighLightColor(10);
733     gHistNN[3]->DrawCopy("surf1fb");
734     gPad->SetTheta(30); // default is 30
735     //gPad->SetPhi(130); // default is 30
736     gPad->SetPhi(-60); // default is 30
737     gPad->Update();    
738     pngName = "CorrelationFunction.Centrality"; 
739     pngName += centralityArray[gCentrality-1]; 
740     pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
741     pngName += ".NegativeNegative.png";
742     cNN[3]->SaveAs(pngName.Data());
743   }
744 }
745