]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/macros/drawCorrelationFunctionPsi.C
Adding the pt_trigger and pt_associated option in the drawing macros
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / drawCorrelationFunctionPsi.C
1 const Int_t numberOfCentralityBins = 9;
2 TString centralityArray[numberOfCentralityBins] = {"0-5","5-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80"};
3 Double_t gMinCentrality[numberOfCentralityBins] = {0.,5.,10.,20.,30.,40.,50.,60.,70.};
4 Double_t gMaxCentrality[numberOfCentralityBins] = {5.,10.,20.,30.,40.,50.,60.,70.,80.};
5 TString gAnalysisType[7] = {"y","eta","qlong","qout","qside","qinv","phi"};
6
7 const Int_t gRebin = 1;
8 void drawCorrelationFunctionPsi(const char* filename = "AnalysisResults.root", 
9                                 Double_t psiMin = -0.5, 
10                                 Double_t psiMax = 0.5,
11                                 Double_t ptTriggerMin = -1.,
12                                 Double_t ptTriggerMax = -1.,
13                                 Double_t ptAssociatedMin = -1.,
14                                 Double_t ptAssociatedMax = -1.) {
15   //Macro that draws the correlation functions from the balance function
16   //analysis vs the reaction plane
17   //Author: Panos.Christakoglou@nikhef.nl
18   //Load the PWG2ebye library
19   gSystem->Load("libANALYSIS.so");
20   gSystem->Load("libANALYSISalice.so");
21   gSystem->Load("libEventMixing.so");
22   gSystem->Load("libCORRFW.so");
23   gSystem->Load("libPWGTools.so");
24   gSystem->Load("libPWGCFebye.so");
25
26   //Prepare the objects and return them
27   TList *list = GetListOfObjects(filename);
28   if(!list) {
29     Printf("The TList object was not created");
30     return;
31   }
32   else 
33     draw(list,psiMin,psiMax,
34          ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
35 }
36
37 //______________________________________________________//
38 TList *GetListOfObjects(const char* filename) {
39   //Get the TList objects (QA, bf, bf shuffled)
40   TList *listQA = 0x0;
41   TList *listBF = 0x0;
42   TList *listBFShuffling = 0x0;
43   
44   //Open the file
45   TFile *f = TFile::Open(filename);
46   if((!f)||(!f->IsOpen())) {
47     Printf("The file %s is not found. Aborting...",filename);
48     return listBF;
49   }
50   //f->ls();
51   
52   TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
53   if(!dir) {   
54     Printf("The TDirectoryFile is not found. Aborting...",filename);
55     return listBF;
56   }
57   //dir->ls();
58   
59   TString listBFName = "listBFPsi";
60   listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
61   //listBF->ls();
62
63   //Get the histograms
64   TString histoName = "fHistPV0M";
65   AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));  
66   if(!fHistP) {
67     Printf("fHistP %s not found!!!",histoName.Data());
68     break;
69   }
70   fHistP->FillParent(); fHistP->DeleteContainers();
71
72   histoName = "fHistNV0M"; 
73   AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
74   if(!fHistN) {
75     Printf("fHistN %s not found!!!",histoName.Data());
76     break;
77   }
78   fHistN->FillParent(); fHistN->DeleteContainers();
79     
80   histoName = "fHistPNV0M"; 
81   AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
82   if(!fHistPN) {
83     Printf("fHistPN %s not found!!!",histoName.Data());
84     break;
85   }
86   fHistPN->FillParent(); fHistPN->DeleteContainers();
87   
88   histoName = "fHistNPV0M";
89   AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
90   if(!fHistNP) {
91     Printf("fHistNP %s not found!!!",histoName.Data());
92     break;
93   }
94   fHistNP->FillParent(); fHistNP->DeleteContainers();
95
96   histoName = "fHistPPV0M";
97   AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
98   if(!fHistPP) {
99     Printf("fHistPP %s not found!!!",histoName.Data());
100     break;
101   }
102   fHistPP->FillParent(); fHistPP->DeleteContainers();
103
104   histoName = "fHistNNV0M";
105   AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
106   if(!fHistNN) {
107     Printf("fHistNN %s not found!!!",histoName.Data());
108     break;
109   }
110   fHistNN->FillParent(); fHistNN->DeleteContainers();
111   
112   return listBF;
113 }
114
115 //______________________________________________________//
116 void draw(TList *list, Double_t psiMin, Double_t psiMax,
117           Double_t ptTriggerMin, Double_t ptTriggerMax,
118           Double_t ptAssociatedMin, Double_t ptAssociatedMax) {
119   //Draws the correlation functions for every centrality bin
120   //(+-), (-+), (++), (--)
121   gROOT->LoadMacro("~/SetPlotStyle.C");
122   SetPlotStyle();
123   gStyle->SetPalette(1,0);
124   
125   AliTHn *hP = NULL;
126   AliTHn *hN = NULL;
127   AliTHn *hPN = NULL;
128   AliTHn *hNP = NULL;
129   AliTHn *hPP = NULL;
130   AliTHn *hNN = NULL;
131   
132   hP = (AliTHn*) list->FindObject("fHistPV0M");
133   hN = (AliTHn*) list->FindObject("fHistNV0M");
134   hPN = (AliTHn*) list->FindObject("fHistPNV0M");
135   hNP = (AliTHn*) list->FindObject("fHistNPV0M");
136   hPP = (AliTHn*) list->FindObject("fHistPPV0M");
137   hNN = (AliTHn*) list->FindObject("fHistNNV0M");
138
139   //Create the AliBalancePsi object and fill it with the AliTHn objects
140   AliBalancePsi *b = new AliBalancePsi();
141   b->SetHistNp(hP);
142   b->SetHistNn(hN);
143   b->SetHistNpn(hPN);
144   b->SetHistNnp(hNP);
145   b->SetHistNpp(hPP);
146   b->SetHistNnn(hNN);
147   TH2D *gHistPN;
148   TH2D *gHistNP;
149   TH2D *gHistPP;
150   TH2D *gHistNN;
151   
152   TCanvas *cPN;
153   TCanvas *cNP;
154   TCanvas *cPP;
155   TCanvas *cNN;
156   TString histoTitle, pngName;
157   //loop over the centrality bins
158   //for(Int_t iCentralityBin = 0; iCentralityBin < numberOfCentralityBins; iCentralityBin++) {
159   
160   histoTitle = "(+-) | Centrality: "; 
161   histoTitle += centralityArray[6]; 
162   histoTitle += "%";
163   histoTitle += " | "; histoTitle += psiMin; 
164   histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
165   gHistPN = b->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
166   gHistPN->GetYaxis()->SetTitleOffset(1.5);
167   gHistPN->SetTitle(histoTitle.Data());
168   cPN = new TCanvas(histoTitle.Data(),"",0,0,400,400);
169   cPN->SetFillColor(10); 
170   cPN->SetHighLightColor(10);
171   gHistPN->DrawCopy("lego2");
172   pngName = "DeltaPhiDeltaEta.Centrality"; 
173   pngName += centralityArray[6]; 
174   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
175   pngName += ".PositiveNegative.png";
176   cPN->SaveAs(pngName.Data());
177   
178   histoTitle = "(-+) | Centrality: "; 
179   histoTitle += centralityArray[6]; 
180   histoTitle += "%";
181   histoTitle += " | "; histoTitle += psiMin; 
182   histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
183   gHistNP = b->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
184   gHistNP->GetYaxis()->SetTitleOffset(1.5);
185   gHistNP->SetTitle(histoTitle.Data());
186   cNP = new TCanvas(histoTitle.Data(),"",400,0,400,400);
187   cNP->SetFillColor(10); 
188   cNP->SetHighLightColor(10);
189   gHistNP->DrawCopy("lego2");
190   pngName = "DeltaPhiDeltaEta.Centrality"; 
191   pngName += centralityArray[6]; 
192   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
193   pngName += ".NegativePositive.png";
194   cNP->SaveAs(pngName.Data());
195   
196   histoTitle = "(++) | Centrality: "; 
197   histoTitle += centralityArray[6]; 
198   histoTitle += "%";
199   histoTitle += " | "; histoTitle += psiMin; 
200   histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
201   gHistPP = b->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
202   gHistPP->GetYaxis()->SetTitleOffset(1.5);
203   gHistPP->SetTitle(histoTitle.Data());
204   cPP = new TCanvas(histoTitle.Data(),"",0,400,400,400);
205   cPP->SetFillColor(10); 
206   cPP->SetHighLightColor(10);
207   gHistPP->DrawCopy("lego2");
208   pngName = "DeltaPhiDeltaEta.Centrality"; 
209   pngName += centralityArray[6]; 
210   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
211   pngName += ".PositivePositive.png";
212   cPP->SaveAs(pngName.Data());
213   
214   histoTitle = "(--) | Centrality: "; 
215   histoTitle += centralityArray[6]; 
216   histoTitle += "%";
217   histoTitle += " | "; histoTitle += psiMin; 
218   histoTitle += " < #phi - #Psi_{2} < "; histoTitle += psiMax;
219   gHistNN = b->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
220   gHistNN->GetYaxis()->SetTitleOffset(1.5);
221   gHistNN->SetTitle(histoTitle.Data());
222   cNN = new TCanvas(histoTitle.Data(),"",400,400,400,400);
223   cNN->SetFillColor(10); 
224   cNN->SetHighLightColor(10);
225   gHistNN->DrawCopy("lego2");
226   pngName = "DeltaPhiDeltaEta.Centrality"; 
227   pngName += centralityArray[6]; 
228   pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
229   pngName += ".NegativeNegative.png";
230   cNN->SaveAs(pngName.Data());
231   //}//end of loop over centralities
232 }
233