]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/macros/drawBalanceFunction2DPsi.C
current AOD macros
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / drawBalanceFunction2DPsi.C
CommitLineData
db7174c0 1const Int_t numberOfCentralityBins = 10;
2TString centralityArray[numberOfCentralityBins] = {"0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","0-1","1-2"};
6acdbcb2 3
4const Int_t gRebin = 1;
5void drawBalanceFunction2DPsi(const char* filename = "AnalysisResultsPsi.root",
eb63b883 6 Int_t gCentrality = 1,
5de9ad1a 7 Int_t gBit = -1,
8 const char* gCentralityEstimator = 0x0,
52daf7b2 9 Bool_t kShowShuffled = kFALSE,
10 Bool_t kShowMixed = kTRUE,
eb63b883 11 Double_t psiMin = -0.5, Double_t psiMax = 0.5,
6acdbcb2 12 Double_t ptTriggerMin = -1.,
13 Double_t ptTriggerMax = -1.,
14 Double_t ptAssociatedMin = -1.,
f0c5040c 15 Double_t ptAssociatedMax = -1.,
16 Bool_t k2pMethod = kFALSE) {
6acdbcb2 17 //Macro that draws the BF distributions for each centrality bin
18 //for reaction plane dependent analysis
19 //Author: Panos.Christakoglou@nikhef.nl
20 //Load the PWG2ebye library
21 gSystem->Load("libANALYSIS.so");
22 gSystem->Load("libANALYSISalice.so");
23 gSystem->Load("libEventMixing.so");
24 gSystem->Load("libCORRFW.so");
25 gSystem->Load("libPWGTools.so");
26 gSystem->Load("libPWGCFebye.so");
27
15dd45a0 28 gROOT->LoadMacro("~/SetPlotStyle.C");
29 SetPlotStyle();
8795e993 30 gStyle->SetPalette(1,0);
15dd45a0 31
6acdbcb2 32 //Prepare the objects and return them
5de9ad1a 33 TList *listBF = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,0);
52daf7b2 34 TList *listBFShuffled = NULL;
5de9ad1a 35 if(kShowShuffled) listBFShuffled = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,1);
52daf7b2 36 TList *listBFMixed = NULL;
5de9ad1a 37 if(kShowMixed) listBFMixed = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,2);
6acdbcb2 38 if(!listBF) {
39 Printf("The TList object was not created");
40 return;
41 }
42 else
eb63b883 43 draw(listBF,listBFShuffled,listBFMixed,gCentrality,psiMin,psiMax,
f0c5040c 44 ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,
45 k2pMethod);
6acdbcb2 46}
47
48//______________________________________________________//
5365d1d7 49TList *GetListOfObjects(const char* filename,
50 Int_t gCentrality,
51 Int_t gBit,
52 const char *gCentralityEstimator,
5de9ad1a 53 Int_t kData = 1) {
6acdbcb2 54 //Get the TList objects (QA, bf, bf shuffled)
6acdbcb2 55 TList *listBF = 0x0;
6acdbcb2 56
57 //Open the file
5365d1d7 58 TFile *f = TFile::Open(filename,"UPDATE");
6acdbcb2 59 if((!f)||(!f->IsOpen())) {
60 Printf("The file %s is not found. Aborting...",filename);
61 return listBF;
62 }
63 //f->ls();
64
65 TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
66 if(!dir) {
67 Printf("The TDirectoryFile is not found. Aborting...",filename);
68 return listBF;
69 }
70 //dir->ls();
71
72 TString listBFName;
eb63b883 73 if(kData == 0) {
74 //cout<<"no shuffling - no mixing"<<endl;
75 listBFName = "listBFPsi_";
76 }
77 else if(kData == 1) {
78 //cout<<"shuffling - no mixing"<<endl;
79 listBFName = "listBFPsiShuffled_";
80 }
81 else if(kData == 2) {
82 //cout<<"no shuffling - mixing"<<endl;
83 listBFName = "listBFPsiMixed_";
84 }
85 listBFName += centralityArray[gCentrality-1];
5de9ad1a 86 if(gBit > -1) {
87 listBFName += "_Bit"; listBFName += gBit; }
88 if(gCentralityEstimator) {
89 listBFName += "_"; listBFName += gCentralityEstimator;}
6acdbcb2 90
5365d1d7 91 // histograms were already retrieved (in first iteration)
92 if(dir->Get(Form("%s_histograms",listBFName.Data()))){
93 //cout<<"second iteration"<<endl;
94 listBF = dynamic_cast<TList *>(dir->Get(Form("%s_histograms",listBFName.Data())));
6acdbcb2 95 }
6acdbcb2 96
5365d1d7 97 // histograms were not yet retrieved (this is the first iteration)
98 else{
99
100 listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
101 cout<<"======================================================="<<endl;
102 cout<<"List name (check): "<<listBFName.Data()<<endl;
103 cout<<"List name: "<<listBF->GetName()<<endl;
104 //listBF->ls();
6acdbcb2 105
5365d1d7 106 //Get the histograms
107 TString histoName;
108 if(kData == 0)
109 histoName = "fHistPV0M";
110 else if(kData == 1)
111 histoName = "fHistP_shuffleV0M";
112 else if(kData == 2)
113 histoName = "fHistPV0M";
114 AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
115 if(!fHistP) {
116 Printf("fHistP %s not found!!!",histoName.Data());
117 break;
118 }
119 fHistP->FillParent(); fHistP->DeleteContainers();
120
121 if(kData == 0)
122 histoName = "fHistNV0M";
123 if(kData == 1)
124 histoName = "fHistN_shuffleV0M";
125 if(kData == 2)
126 histoName = "fHistNV0M";
127 AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
128 if(!fHistN) {
129 Printf("fHistN %s not found!!!",histoName.Data());
130 break;
131 }
132 fHistN->FillParent(); fHistN->DeleteContainers();
133
134 if(kData == 0)
135 histoName = "fHistPNV0M";
136 if(kData == 1)
137 histoName = "fHistPN_shuffleV0M";
138 if(kData == 2)
139 histoName = "fHistPNV0M";
140 AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
141 if(!fHistPN) {
142 Printf("fHistPN %s not found!!!",histoName.Data());
143 break;
144 }
145 fHistPN->FillParent(); fHistPN->DeleteContainers();
146
147 if(kData == 0)
148 histoName = "fHistNPV0M";
149 if(kData == 1)
150 histoName = "fHistNP_shuffleV0M";
151 if(kData == 2)
152 histoName = "fHistNPV0M";
153 AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
154 if(!fHistNP) {
155 Printf("fHistNP %s not found!!!",histoName.Data());
156 break;
157 }
158 fHistNP->FillParent(); fHistNP->DeleteContainers();
159
160 if(kData == 0)
161 histoName = "fHistPPV0M";
162 if(kData == 1)
163 histoName = "fHistPP_shuffleV0M";
164 if(kData == 2)
165 histoName = "fHistPPV0M";
166 AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
167 if(!fHistPP) {
168 Printf("fHistPP %s not found!!!",histoName.Data());
169 break;
170 }
171 fHistPP->FillParent(); fHistPP->DeleteContainers();
172
173 if(kData == 0)
174 histoName = "fHistNNV0M";
175 if(kData == 1)
176 histoName = "fHistNN_shuffleV0M";
177 if(kData == 2)
178 histoName = "fHistNNV0M";
179 AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
180 if(!fHistNN) {
181 Printf("fHistNN %s not found!!!",histoName.Data());
182 break;
183 }
184 fHistNN->FillParent(); fHistNN->DeleteContainers();
185
186 dir->cd();
187 listBF->Write(Form("%s_histograms",listBFName.Data()), TObject::kSingleKey);
188
189 }// first iteration
6acdbcb2 190
5365d1d7 191 f->Close();
6acdbcb2 192
193 return listBF;
194}
195
196//______________________________________________________//
eb63b883 197void draw(TList *listBF, TList *listBFShuffled, TList *listBFMixed,
198 Int_t gCentrality, Double_t psiMin, Double_t psiMax,
6acdbcb2 199 Double_t ptTriggerMin, Double_t ptTriggerMax,
f0c5040c 200 Double_t ptAssociatedMin, Double_t ptAssociatedMax,
201 Bool_t k2pMethod = kFALSE) {
6acdbcb2 202 //balance function
203 AliTHn *hP = NULL;
204 AliTHn *hN = NULL;
205 AliTHn *hPN = NULL;
206 AliTHn *hNP = NULL;
207 AliTHn *hPP = NULL;
208 AliTHn *hNN = NULL;
209 //listBF->ls();
210 //Printf("=================");
211 hP = (AliTHn*) listBF->FindObject("fHistPV0M");
52daf7b2 212 hP->SetName("gHistP");
6acdbcb2 213 hN = (AliTHn*) listBF->FindObject("fHistNV0M");
52daf7b2 214 hN->SetName("gHistN");
6acdbcb2 215 hPN = (AliTHn*) listBF->FindObject("fHistPNV0M");
52daf7b2 216 hPN->SetName("gHistPN");
6acdbcb2 217 hNP = (AliTHn*) listBF->FindObject("fHistNPV0M");
52daf7b2 218 hNP->SetName("gHistNP");
6acdbcb2 219 hPP = (AliTHn*) listBF->FindObject("fHistPPV0M");
52daf7b2 220 hPP->SetName("gHistPP");
6acdbcb2 221 hNN = (AliTHn*) listBF->FindObject("fHistNNV0M");
52daf7b2 222 hNN->SetName("gHistNN");
6acdbcb2 223
224 AliBalancePsi *b = new AliBalancePsi();
225 b->SetHistNp(hP);
226 b->SetHistNn(hN);
227 b->SetHistNpn(hPN);
228 b->SetHistNnp(hNP);
229 b->SetHistNpp(hPP);
230 b->SetHistNnn(hNN);
231
232 //balance function shuffling
233 AliTHn *hPShuffled = NULL;
234 AliTHn *hNShuffled = NULL;
235 AliTHn *hPNShuffled = NULL;
236 AliTHn *hNPShuffled = NULL;
237 AliTHn *hPPShuffled = NULL;
238 AliTHn *hNNShuffled = NULL;
52daf7b2 239 if(listBFShuffled) {
240 //listBFShuffled->ls();
241
242 hPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistP_shuffleV0M");
243 hPShuffled->SetName("gHistPShuffled");
244 hNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistN_shuffleV0M");
245 hNShuffled->SetName("gHistNShuffled");
246 hPNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPN_shuffleV0M");
247 hPNShuffled->SetName("gHistPNShuffled");
248 hNPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNP_shuffleV0M");
249 hNPShuffled->SetName("gHistNPShuffled");
250 hPPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPP_shuffleV0M");
251 hPPShuffled->SetName("gHistPPShuffled");
252 hNNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNN_shuffleV0M");
253 hNNShuffled->SetName("gHistNNShuffled");
254
255 AliBalancePsi *bShuffled = new AliBalancePsi();
256 bShuffled->SetHistNp(hPShuffled);
257 bShuffled->SetHistNn(hNShuffled);
258 bShuffled->SetHistNpn(hPNShuffled);
259 bShuffled->SetHistNnp(hNPShuffled);
260 bShuffled->SetHistNpp(hPPShuffled);
261 bShuffled->SetHistNnn(hNNShuffled);
262 }
6acdbcb2 263
eb63b883 264 //balance function mixing
265 AliTHn *hPMixed = NULL;
266 AliTHn *hNMixed = NULL;
267 AliTHn *hPNMixed = NULL;
268 AliTHn *hNPMixed = NULL;
269 AliTHn *hPPMixed = NULL;
270 AliTHn *hNNMixed = NULL;
eb63b883 271
52daf7b2 272 if(listBFMixed) {
273 //listBFMixed->ls();
274
275 hPMixed = (AliTHn*) listBFMixed->FindObject("fHistPV0M");
276 hPMixed->SetName("gHistPMixed");
277 hNMixed = (AliTHn*) listBFMixed->FindObject("fHistNV0M");
278 hNMixed->SetName("gHistNMixed");
279 hPNMixed = (AliTHn*) listBFMixed->FindObject("fHistPNV0M");
280 hPNMixed->SetName("gHistPNMixed");
281 hNPMixed = (AliTHn*) listBFMixed->FindObject("fHistNPV0M");
282 hNPMixed->SetName("gHistNPMixed");
283 hPPMixed = (AliTHn*) listBFMixed->FindObject("fHistPPV0M");
284 hPPMixed->SetName("gHistPPMixed");
285 hNNMixed = (AliTHn*) listBFMixed->FindObject("fHistNNV0M");
286 hNNMixed->SetName("gHistNNMixed");
287
288 AliBalancePsi *bMixed = new AliBalancePsi();
289 bMixed->SetHistNp(hPMixed);
290 bMixed->SetHistNn(hNMixed);
291 bMixed->SetHistNpn(hPNMixed);
292 bMixed->SetHistNnp(hNPMixed);
293 bMixed->SetHistNpp(hPPMixed);
294 bMixed->SetHistNnn(hNNMixed);
295 }
eb63b883 296
6acdbcb2 297 TH2D *gHistBalanceFunction;
eb63b883 298 TH2D *gHistBalanceFunctionSubtracted;
6acdbcb2 299 TH2D *gHistBalanceFunctionShuffled;
eb63b883 300 TH2D *gHistBalanceFunctionMixed;
6acdbcb2 301 TString histoTitle, pngName;
6acdbcb2 302
6acdbcb2 303 histoTitle = "Centrality: ";
eb63b883 304 histoTitle += centralityArray[gCentrality-1];
6acdbcb2 305 histoTitle += "%";
eb63b883 306 if((psiMin == -0.5)&&(psiMax == 0.5))
52daf7b2 307 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
eb63b883 308 else if((psiMin == 0.5)&&(psiMax == 1.5))
52daf7b2 309 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
eb63b883 310 else if((psiMin == 1.5)&&(psiMax == 2.5))
52daf7b2 311 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
eb63b883 312 else
52daf7b2 313 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
6acdbcb2 314
f0c5040c 315 if(k2pMethod)
316 if(bMixed)
317 gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
318 else{
319 cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
320 return;
321 }
322 else
323 gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
6acdbcb2 324 gHistBalanceFunction->SetTitle(histoTitle.Data());
325 gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
eb63b883 326 gHistBalanceFunction->SetName("gHistBalanceFunction");
327
52daf7b2 328 if(listBFShuffled) {
f0c5040c 329
330 if(k2pMethod)
331 if(bMixed)
332 gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
333 else{
334 cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
335 return;
336 }
337 else
338 gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
52daf7b2 339 gHistBalanceFunctionShuffled->SetTitle(histoTitle.Data());
340 gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
341 gHistBalanceFunctionShuffled->SetName("gHistBalanceFunctionShuffled");
342 }
eb63b883 343
52daf7b2 344 if(listBFMixed) {
f0c5040c 345 if(k2pMethod)
346 if(bMixed)
347 gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
348 else{
349 cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
350 return;
351 }
352 else
353 gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
52daf7b2 354 gHistBalanceFunctionMixed->SetTitle(histoTitle.Data());
355 gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
356 gHistBalanceFunctionMixed->SetName("gHistBalanceFunctionMixed");
357
358 gHistBalanceFunctionSubtracted = dynamic_cast<TH2D *>(gHistBalanceFunction->Clone());
359 gHistBalanceFunctionSubtracted->Add(gHistBalanceFunctionMixed,-1);
360 gHistBalanceFunctionSubtracted->SetTitle(histoTitle.Data());
361 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);
362 gHistBalanceFunctionSubtracted->SetName("gHistBalanceFunctionSubtracted");
363 }
eb63b883 364
365 //Draw the results
366 TCanvas *c1 = new TCanvas("c1","",0,0,600,500);
6acdbcb2 367 c1->SetFillColor(10);
368 c1->SetHighLightColor(10);
369 c1->SetLeftMargin(0.15);
eb63b883 370 gHistBalanceFunction->DrawCopy("lego2");
5de9ad1a 371 gPad->SetTheta(30); // default is 30
372 gPad->SetPhi(-60); // default is 30
373 gPad->Update();
eb63b883 374 TCanvas *c1a = new TCanvas("c1a","",600,0,600,500);
375 c1a->SetFillColor(10);
376 c1a->SetHighLightColor(10);
377 c1a->SetLeftMargin(0.15);
378 gHistBalanceFunction->DrawCopy("colz");
379
52daf7b2 380 if(listBFShuffled) {
381 TCanvas *c2 = new TCanvas("c2","",100,100,600,500);
382 c2->SetFillColor(10);
383 c2->SetHighLightColor(10);
384 c2->SetLeftMargin(0.15);
385 gHistBalanceFunctionShuffled->DrawCopy("lego2");
5de9ad1a 386 gPad->SetTheta(30); // default is 30
387 gPad->SetPhi(-60); // default is 30
388 gPad->Update();
52daf7b2 389 TCanvas *c2a = new TCanvas("c2a","",700,100,600,500);
390 c2a->SetFillColor(10);
391 c2a->SetHighLightColor(10);
392 c2a->SetLeftMargin(0.15);
393 gHistBalanceFunctionShuffled->DrawCopy("colz");
394 }
eb63b883 395
52daf7b2 396 if(listBFMixed) {
397 TCanvas *c3 = new TCanvas("c3","",200,200,600,500);
398 c3->SetFillColor(10);
399 c3->SetHighLightColor(10);
400 c3->SetLeftMargin(0.15);
401 gHistBalanceFunctionMixed->DrawCopy("lego2");
5de9ad1a 402 gPad->SetTheta(30); // default is 30
403 gPad->SetPhi(-60); // default is 30
404 gPad->Update();
52daf7b2 405 TCanvas *c3a = new TCanvas("c3a","",800,200,600,500);
406 c3a->SetFillColor(10);
407 c3a->SetHighLightColor(10);
408 c3a->SetLeftMargin(0.15);
409 gHistBalanceFunctionMixed->DrawCopy("colz");
eb63b883 410
52daf7b2 411 TCanvas *c4 = new TCanvas("c4","",300,300,600,500);
412 c4->SetFillColor(10);
413 c4->SetHighLightColor(10);
414 c4->SetLeftMargin(0.15);
415 gHistBalanceFunctionSubtracted->DrawCopy("lego2");
5de9ad1a 416 gPad->SetTheta(30); // default is 30
417 gPad->SetPhi(-60); // default is 30
418 gPad->Update();
52daf7b2 419 TCanvas *c4a = new TCanvas("c4a","",900,300,600,500);
420 c4a->SetFillColor(10);
421 c4a->SetHighLightColor(10);
422 c4a->SetLeftMargin(0.15);
423 gHistBalanceFunctionSubtracted->DrawCopy("colz");
424 }
eb63b883 425
426 TString newFileName = "balanceFunction2D.Centrality";
427 newFileName += gCentrality; newFileName += ".Psi";
428 if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
429 else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
430 else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
648f1a5a 431 else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
432 else newFileName += "All.PttFrom";
433 newFileName += Form("%.1f",ptTriggerMin); newFileName += "To";
434 newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
435 newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To";
436 newFileName += Form("%.1f",ptAssociatedMax);
f0c5040c 437 if(k2pMethod) newFileName += "_2pMethod";
648f1a5a 438 newFileName += ".root";
eb63b883 439
440 TFile *fOutput = new TFile(newFileName.Data(),"recreate");
441 fOutput->cd();
52daf7b2 442 /*hP->Write(); hN->Write();
443 hPN->Write(); hNP->Write();
444 hPP->Write(); hNN->Write();
445 hPShuffled->Write(); hNShuffled->Write();
446 hPNShuffled->Write(); hNPShuffled->Write();
447 hPPShuffled->Write(); hNNShuffled->Write();
448 hPMixed->Write(); hNMixed->Write();
449 hPNMixed->Write(); hNPMixed->Write();
450 hPPMixed->Write(); hNNMixed->Write();*/
eb63b883 451 gHistBalanceFunction->Write();
52daf7b2 452 if(listBFShuffled) gHistBalanceFunctionShuffled->Write();
453 if(listBFMixed) {
454 gHistBalanceFunctionMixed->Write();
455 gHistBalanceFunctionSubtracted->Write();
456 }
eb63b883 457 fOutput->Close();
6acdbcb2 458}
459
eb63b883 460//____________________________________________________________//
648f1a5a 461void drawBFPsi2D(const char* lhcPeriod = "LHC11h",
462 Int_t gCentrality = 1,
463 Bool_t kShowShuffled = kFALSE,
464 Bool_t kShowMixed = kFALSE,
eb63b883 465 Double_t psiMin = -0.5, Double_t psiMax = 0.5,
466 Double_t ptTriggerMin = -1.,
467 Double_t ptTriggerMax = -1.,
468 Double_t ptAssociatedMin = -1.,
469 Double_t ptAssociatedMax = -1.) {
470 //Macro that draws the BF distributions for each centrality bin
471 //for reaction plane dependent analysis
472 //Author: Panos.Christakoglou@nikhef.nl
db7174c0 473 TGaxis::SetMaxDigits(3);
eb63b883 474
475 //Get the input file
648f1a5a 476 TString filename = lhcPeriod; filename +="/PttFrom";
477 filename += Form("%.1f",ptTriggerMin); filename += "To";
478 filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
479 filename += Form("%.1f",ptAssociatedMin); filename += "To";
480 filename += Form("%.1f",ptAssociatedMax);
481 filename += "/balanceFunction2D.Centrality";
eb63b883 482 filename += gCentrality; filename += ".Psi";
483 if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
484 else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
485 else if((psiMin == 1.5)&&(psiMax == 2.5)) filename += "OutOfPlane.Ptt";
648f1a5a 486 else if((psiMin == 2.5)&&(psiMax == 3.5)) filename += "Rest.Ptt";
487 else filename += "All.PttFrom";
488 filename += Form("%.1f",ptTriggerMin); filename += "To";
db7174c0 489 filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
648f1a5a 490 filename += Form("%.1f",ptAssociatedMin); filename += "To";
491 filename += Form("%.1f",ptAssociatedMax); filename += ".root";
eb63b883 492
493 //Open the file
494 TFile *f = TFile::Open(filename.Data());
495 if((!f)||(!f->IsOpen())) {
496 Printf("The file %s is not found. Aborting...",filename);
497 return listBF;
6acdbcb2 498 }
eb63b883 499 //f->ls();
500
501 //Raw balance function
502 TH1D *gHistBalanceFunction = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunction"));
503 gHistBalanceFunction->SetStats(kFALSE);
504 gHistBalanceFunction->GetXaxis()->SetNdivisions(10);
505 gHistBalanceFunction->GetYaxis()->SetNdivisions(10);
506 gHistBalanceFunction->GetZaxis()->SetNdivisions(10);
507 gHistBalanceFunction->GetXaxis()->SetTitleOffset(1.3);
508 gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
509 gHistBalanceFunction->GetZaxis()->SetTitleOffset(1.3);
510 gHistBalanceFunction->GetXaxis()->SetTitle("#Delta #eta");
511 gHistBalanceFunction->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
15dd45a0 512 gHistBalanceFunction->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
eb63b883 513
514 //Shuffled balance function
648f1a5a 515 if(kShowShuffled) {
516 TH1D *gHistBalanceFunctionShuffled = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionShuffled"));
517 gHistBalanceFunctionShuffled->SetStats(kFALSE);
518 gHistBalanceFunctionShuffled->GetXaxis()->SetNdivisions(10);
519 gHistBalanceFunctionShuffled->GetYaxis()->SetNdivisions(10);
520 gHistBalanceFunctionShuffled->GetZaxis()->SetNdivisions(10);
521 gHistBalanceFunctionShuffled->GetXaxis()->SetTitleOffset(1.3);
522 gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
523 gHistBalanceFunctionShuffled->GetZaxis()->SetTitleOffset(1.3);
524 gHistBalanceFunctionShuffled->GetXaxis()->SetTitle("#Delta #eta");
525 gHistBalanceFunctionShuffled->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
526 gHistBalanceFunctionShuffled->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
527 }
eb63b883 528
529 //Mixed balance function
648f1a5a 530 if(kShowMixed) {
531 TH1D *gHistBalanceFunctionMixed = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionMixed"));
532 gHistBalanceFunctionMixed->SetStats(kFALSE);
533 gHistBalanceFunctionMixed->GetXaxis()->SetNdivisions(10);
534 gHistBalanceFunctionMixed->GetYaxis()->SetNdivisions(10);
535 gHistBalanceFunctionMixed->GetZaxis()->SetNdivisions(10);
536 gHistBalanceFunctionMixed->GetXaxis()->SetTitleOffset(1.3);
537 gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
538 gHistBalanceFunctionMixed->GetZaxis()->SetTitleOffset(1.3);
539 gHistBalanceFunctionMixed->GetXaxis()->SetTitle("#Delta #eta");
540 gHistBalanceFunctionMixed->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
541 gHistBalanceFunctionMixed->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
542 }
eb63b883 543
544 //Subtracted balance function
648f1a5a 545 if(kShowMixed) {
546 TH1D *gHistBalanceFunctionSubtracted = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionSubtracted"));
547 gHistBalanceFunctionSubtracted->SetStats(kFALSE);
548 gHistBalanceFunctionSubtracted->GetXaxis()->SetNdivisions(10);
549 gHistBalanceFunctionSubtracted->GetYaxis()->SetNdivisions(10);
550 gHistBalanceFunctionSubtracted->GetZaxis()->SetNdivisions(10);
551 gHistBalanceFunctionSubtracted->GetXaxis()->SetTitleOffset(1.3);
552 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);
553 gHistBalanceFunctionSubtracted->GetZaxis()->SetTitleOffset(1.3);
554 gHistBalanceFunctionSubtracted->GetXaxis()->SetTitle("#Delta #eta");
555 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
556 gHistBalanceFunctionSubtracted->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
557 }
558
eb63b883 559 TString pngName;
560
561 TString centralityLatex = "Centrality: ";
562 centralityLatex += centralityArray[gCentrality-1];
563 centralityLatex += "%";
564
565 TString psiLatex;
566 if((psiMin == -0.5)&&(psiMax == 0.5))
567 psiLatex = " -7.5^{o} < #varphi - #Psi_{2} < 7.5^{o}";
568 else if((psiMin == 0.5)&&(psiMax == 1.5))
569 psiLatex = " 37.5^{o} < #varphi - #Psi_{2} < 52.5^{o}";
570 else if((psiMin == 1.5)&&(psiMax == 2.5))
571 psiLatex = " 82.5^{o} < #varphi - #Psi_{2} < 97.5^{o}";
572 else
573 psiLatex = " 0^{o} < #varphi - #Psi_{2} < 180^{o}";
574
575 TString pttLatex = Form("%.1f",ptTriggerMin);
576 pttLatex += " < p_{T}^{t} < "; pttLatex += Form("%.1f",ptTriggerMax);
577 pttLatex += " GeV/c";
578
579 TString ptaLatex = Form("%.1f",ptAssociatedMin);
580 ptaLatex += " < p_{T}^{a} < "; ptaLatex += Form("%.1f",ptAssociatedMax);
581 ptaLatex += " GeV/c";
582
583 TLatex *latexInfo1 = new TLatex();
584 latexInfo1->SetNDC();
15dd45a0 585 latexInfo1->SetTextSize(0.045);
eb63b883 586 latexInfo1->SetTextColor(1);
587
588 //Draw the results
589 TCanvas *c1 = new TCanvas("c1","Raw balance function 2D",0,0,600,500);
590 c1->SetFillColor(10); c1->SetHighLightColor(10);
591 c1->SetLeftMargin(0.17); c1->SetTopMargin(0.05);
592 gHistBalanceFunction->SetTitle("Raw balance function");
593 gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.4);
594 gHistBalanceFunction->GetYaxis()->SetNdivisions(10);
595 gHistBalanceFunction->GetXaxis()->SetNdivisions(10);
596 gHistBalanceFunction->DrawCopy("lego2");
5de9ad1a 597 gPad->SetTheta(30); // default is 30
598 gPad->SetPhi(-60); // default is 30
599 gPad->Update();
eb63b883 600
15dd45a0 601 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
602 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
603 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
604 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
eb63b883 605
648f1a5a 606 if(kShowShuffled) {
607 TCanvas *c2 = new TCanvas("c2","Shuffled balance function 2D",100,100,600,500);
608 c2->SetFillColor(10); c2->SetHighLightColor(10);
609 c2->SetLeftMargin(0.17); c2->SetTopMargin(0.05);
610 gHistBalanceFunctionShuffled->SetTitle("Shuffled events");
611 gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.4);
612 gHistBalanceFunctionShuffled->GetYaxis()->SetNdivisions(10);
613 gHistBalanceFunctionShuffled->GetXaxis()->SetNdivisions(10);
614 gHistBalanceFunctionShuffled->DrawCopy("lego2");
5de9ad1a 615 gPad->SetTheta(30); // default is 30
616 gPad->SetPhi(-60); // default is 30
617 gPad->Update();
618
648f1a5a 619 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
620 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
621 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
622 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
623 }
eb63b883 624
648f1a5a 625 if(kShowMixed) {
626 TCanvas *c3 = new TCanvas("c3","Mixed balance function 2D",200,200,600,500);
627 c3->SetFillColor(10); c3->SetHighLightColor(10);
628 c3->SetLeftMargin(0.17); c3->SetTopMargin(0.05);
629 gHistBalanceFunctionMixed->SetTitle("Mixed events");
630 gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.4);
631 gHistBalanceFunctionMixed->GetYaxis()->SetNdivisions(10);
632 gHistBalanceFunctionMixed->GetXaxis()->SetNdivisions(10);
633 gHistBalanceFunctionMixed->DrawCopy("lego2");
5de9ad1a 634 gPad->SetTheta(30); // default is 30
635 gPad->SetPhi(-60); // default is 30
636 gPad->Update();
637
648f1a5a 638 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
639 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
640 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
641 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
642 }
eb63b883 643
648f1a5a 644 if(kShowMixed) {
645 TCanvas *c4 = new TCanvas("c4","Subtracted balance function 2D",300,300,600,500);
646 c4->SetFillColor(10); c4->SetHighLightColor(10);
647 c4->SetLeftMargin(0.17); c4->SetTopMargin(0.05);
648 gHistBalanceFunctionSubtracted->SetTitle("Subtracted balance function");
649 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.4);
650 gHistBalanceFunctionSubtracted->GetYaxis()->SetNdivisions(10);
651 gHistBalanceFunctionSubtracted->GetXaxis()->SetNdivisions(10);
652 gHistBalanceFunctionSubtracted->DrawCopy("lego2");
5de9ad1a 653 gPad->SetTheta(30); // default is 30
654 gPad->SetPhi(-60); // default is 30
655 gPad->Update();
656
648f1a5a 657 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
658 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
659 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
660 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
661 }
6acdbcb2 662}