]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGCF/EBYE/macros/drawBalanceFunction2DPsi.C
Fix for LEGO train generation: the configuration macro name for a wagon between ...
[u/mrichter/AliRoot.git] / PWGCF / EBYE / macros / drawBalanceFunction2DPsi.C
CommitLineData
e4391c02 1const Int_t numberOfCentralityBins = 12;
2TString centralityArray[numberOfCentralityBins] = {"0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80","0-100","0-1","1-2","2-3"};
3
6acdbcb2 4
5const Int_t gRebin = 1;
6void drawBalanceFunction2DPsi(const char* filename = "AnalysisResultsPsi.root",
eb63b883 7 Int_t gCentrality = 1,
5de9ad1a 8 Int_t gBit = -1,
9 const char* gCentralityEstimator = 0x0,
52daf7b2 10 Bool_t kShowShuffled = kFALSE,
11 Bool_t kShowMixed = kTRUE,
eb63b883 12 Double_t psiMin = -0.5, Double_t psiMax = 0.5,
6acdbcb2 13 Double_t ptTriggerMin = -1.,
14 Double_t ptTriggerMax = -1.,
15 Double_t ptAssociatedMin = -1.,
f0c5040c 16 Double_t ptAssociatedMax = -1.,
d67eae53 17 Bool_t k2pMethod = kFALSE,
18 TString eventClass = "EventPlane") //Can be "EventPlane", "Centrality", "Multiplicity"
19{
6acdbcb2 20 //Macro that draws the BF distributions for each centrality bin
21 //for reaction plane dependent analysis
22 //Author: Panos.Christakoglou@nikhef.nl
23 //Load the PWG2ebye library
24 gSystem->Load("libANALYSIS.so");
25 gSystem->Load("libANALYSISalice.so");
26 gSystem->Load("libEventMixing.so");
27 gSystem->Load("libCORRFW.so");
28 gSystem->Load("libPWGTools.so");
29 gSystem->Load("libPWGCFebye.so");
30
15dd45a0 31 gROOT->LoadMacro("~/SetPlotStyle.C");
32 SetPlotStyle();
8795e993 33 gStyle->SetPalette(1,0);
15dd45a0 34
6acdbcb2 35 //Prepare the objects and return them
5de9ad1a 36 TList *listBF = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,0);
52daf7b2 37 TList *listBFShuffled = NULL;
5de9ad1a 38 if(kShowShuffled) listBFShuffled = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,1);
52daf7b2 39 TList *listBFMixed = NULL;
5de9ad1a 40 if(kShowMixed) listBFMixed = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,2);
6acdbcb2 41 if(!listBF) {
42 Printf("The TList object was not created");
43 return;
44 }
45 else
eb63b883 46 draw(listBF,listBFShuffled,listBFMixed,gCentrality,psiMin,psiMax,
f0c5040c 47 ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,
d67eae53 48 k2pMethod,eventClass);
6acdbcb2 49}
50
51//______________________________________________________//
5365d1d7 52TList *GetListOfObjects(const char* filename,
53 Int_t gCentrality,
54 Int_t gBit,
55 const char *gCentralityEstimator,
5de9ad1a 56 Int_t kData = 1) {
6acdbcb2 57 //Get the TList objects (QA, bf, bf shuffled)
6acdbcb2 58 TList *listBF = 0x0;
6acdbcb2 59
60 //Open the file
5365d1d7 61 TFile *f = TFile::Open(filename,"UPDATE");
6acdbcb2 62 if((!f)||(!f->IsOpen())) {
63 Printf("The file %s is not found. Aborting...",filename);
64 return listBF;
65 }
66 //f->ls();
67
68 TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
69 if(!dir) {
70 Printf("The TDirectoryFile is not found. Aborting...",filename);
71 return listBF;
72 }
73 //dir->ls();
74
75 TString listBFName;
eb63b883 76 if(kData == 0) {
77 //cout<<"no shuffling - no mixing"<<endl;
78 listBFName = "listBFPsi_";
79 }
80 else if(kData == 1) {
81 //cout<<"shuffling - no mixing"<<endl;
82 listBFName = "listBFPsiShuffled_";
83 }
84 else if(kData == 2) {
85 //cout<<"no shuffling - mixing"<<endl;
86 listBFName = "listBFPsiMixed_";
87 }
88 listBFName += centralityArray[gCentrality-1];
5de9ad1a 89 if(gBit > -1) {
90 listBFName += "_Bit"; listBFName += gBit; }
91 if(gCentralityEstimator) {
92 listBFName += "_"; listBFName += gCentralityEstimator;}
6acdbcb2 93
5365d1d7 94 // histograms were already retrieved (in first iteration)
95 if(dir->Get(Form("%s_histograms",listBFName.Data()))){
96 //cout<<"second iteration"<<endl;
97 listBF = dynamic_cast<TList *>(dir->Get(Form("%s_histograms",listBFName.Data())));
6acdbcb2 98 }
6acdbcb2 99
5365d1d7 100 // histograms were not yet retrieved (this is the first iteration)
101 else{
102
103 listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
104 cout<<"======================================================="<<endl;
105 cout<<"List name (check): "<<listBFName.Data()<<endl;
106 cout<<"List name: "<<listBF->GetName()<<endl;
107 //listBF->ls();
6acdbcb2 108
5365d1d7 109 //Get the histograms
110 TString histoName;
111 if(kData == 0)
112 histoName = "fHistPV0M";
113 else if(kData == 1)
114 histoName = "fHistP_shuffleV0M";
115 else if(kData == 2)
116 histoName = "fHistPV0M";
117 AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
118 if(!fHistP) {
119 Printf("fHistP %s not found!!!",histoName.Data());
120 break;
121 }
122 fHistP->FillParent(); fHistP->DeleteContainers();
123
124 if(kData == 0)
125 histoName = "fHistNV0M";
126 if(kData == 1)
127 histoName = "fHistN_shuffleV0M";
128 if(kData == 2)
129 histoName = "fHistNV0M";
130 AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
131 if(!fHistN) {
132 Printf("fHistN %s not found!!!",histoName.Data());
133 break;
134 }
135 fHistN->FillParent(); fHistN->DeleteContainers();
136
137 if(kData == 0)
138 histoName = "fHistPNV0M";
139 if(kData == 1)
140 histoName = "fHistPN_shuffleV0M";
141 if(kData == 2)
142 histoName = "fHistPNV0M";
143 AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
144 if(!fHistPN) {
145 Printf("fHistPN %s not found!!!",histoName.Data());
146 break;
147 }
148 fHistPN->FillParent(); fHistPN->DeleteContainers();
149
150 if(kData == 0)
151 histoName = "fHistNPV0M";
152 if(kData == 1)
153 histoName = "fHistNP_shuffleV0M";
154 if(kData == 2)
155 histoName = "fHistNPV0M";
156 AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
157 if(!fHistNP) {
158 Printf("fHistNP %s not found!!!",histoName.Data());
159 break;
160 }
161 fHistNP->FillParent(); fHistNP->DeleteContainers();
162
163 if(kData == 0)
164 histoName = "fHistPPV0M";
165 if(kData == 1)
166 histoName = "fHistPP_shuffleV0M";
167 if(kData == 2)
168 histoName = "fHistPPV0M";
169 AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
170 if(!fHistPP) {
171 Printf("fHistPP %s not found!!!",histoName.Data());
172 break;
173 }
174 fHistPP->FillParent(); fHistPP->DeleteContainers();
175
176 if(kData == 0)
177 histoName = "fHistNNV0M";
178 if(kData == 1)
179 histoName = "fHistNN_shuffleV0M";
180 if(kData == 2)
181 histoName = "fHistNNV0M";
182 AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
183 if(!fHistNN) {
184 Printf("fHistNN %s not found!!!",histoName.Data());
185 break;
186 }
187 fHistNN->FillParent(); fHistNN->DeleteContainers();
188
189 dir->cd();
190 listBF->Write(Form("%s_histograms",listBFName.Data()), TObject::kSingleKey);
191
192 }// first iteration
6acdbcb2 193
5365d1d7 194 f->Close();
6acdbcb2 195
196 return listBF;
197}
198
199//______________________________________________________//
eb63b883 200void draw(TList *listBF, TList *listBFShuffled, TList *listBFMixed,
201 Int_t gCentrality, Double_t psiMin, Double_t psiMax,
6acdbcb2 202 Double_t ptTriggerMin, Double_t ptTriggerMax,
f0c5040c 203 Double_t ptAssociatedMin, Double_t ptAssociatedMax,
d67eae53 204 Bool_t k2pMethod = kFALSE, TString eventClass) {
6acdbcb2 205 //balance function
206 AliTHn *hP = NULL;
207 AliTHn *hN = NULL;
208 AliTHn *hPN = NULL;
209 AliTHn *hNP = NULL;
210 AliTHn *hPP = NULL;
211 AliTHn *hNN = NULL;
212 //listBF->ls();
213 //Printf("=================");
214 hP = (AliTHn*) listBF->FindObject("fHistPV0M");
52daf7b2 215 hP->SetName("gHistP");
6acdbcb2 216 hN = (AliTHn*) listBF->FindObject("fHistNV0M");
52daf7b2 217 hN->SetName("gHistN");
6acdbcb2 218 hPN = (AliTHn*) listBF->FindObject("fHistPNV0M");
52daf7b2 219 hPN->SetName("gHistPN");
6acdbcb2 220 hNP = (AliTHn*) listBF->FindObject("fHistNPV0M");
52daf7b2 221 hNP->SetName("gHistNP");
6acdbcb2 222 hPP = (AliTHn*) listBF->FindObject("fHistPPV0M");
52daf7b2 223 hPP->SetName("gHistPP");
6acdbcb2 224 hNN = (AliTHn*) listBF->FindObject("fHistNNV0M");
52daf7b2 225 hNN->SetName("gHistNN");
6acdbcb2 226
227 AliBalancePsi *b = new AliBalancePsi();
d67eae53 228 b->SetEventClass(eventClass);
6acdbcb2 229 b->SetHistNp(hP);
230 b->SetHistNn(hN);
231 b->SetHistNpn(hPN);
232 b->SetHistNnp(hNP);
233 b->SetHistNpp(hPP);
234 b->SetHistNnn(hNN);
235
236 //balance function shuffling
237 AliTHn *hPShuffled = NULL;
238 AliTHn *hNShuffled = NULL;
239 AliTHn *hPNShuffled = NULL;
240 AliTHn *hNPShuffled = NULL;
241 AliTHn *hPPShuffled = NULL;
242 AliTHn *hNNShuffled = NULL;
52daf7b2 243 if(listBFShuffled) {
244 //listBFShuffled->ls();
245
246 hPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistP_shuffleV0M");
247 hPShuffled->SetName("gHistPShuffled");
248 hNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistN_shuffleV0M");
249 hNShuffled->SetName("gHistNShuffled");
250 hPNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPN_shuffleV0M");
251 hPNShuffled->SetName("gHistPNShuffled");
252 hNPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNP_shuffleV0M");
253 hNPShuffled->SetName("gHistNPShuffled");
254 hPPShuffled = (AliTHn*) listBFShuffled->FindObject("fHistPP_shuffleV0M");
255 hPPShuffled->SetName("gHistPPShuffled");
256 hNNShuffled = (AliTHn*) listBFShuffled->FindObject("fHistNN_shuffleV0M");
257 hNNShuffled->SetName("gHistNNShuffled");
258
259 AliBalancePsi *bShuffled = new AliBalancePsi();
d67eae53 260 bShuffled->SetEventClass(eventClass);
52daf7b2 261 bShuffled->SetHistNp(hPShuffled);
262 bShuffled->SetHistNn(hNShuffled);
263 bShuffled->SetHistNpn(hPNShuffled);
264 bShuffled->SetHistNnp(hNPShuffled);
265 bShuffled->SetHistNpp(hPPShuffled);
266 bShuffled->SetHistNnn(hNNShuffled);
267 }
6acdbcb2 268
eb63b883 269 //balance function mixing
270 AliTHn *hPMixed = NULL;
271 AliTHn *hNMixed = NULL;
272 AliTHn *hPNMixed = NULL;
273 AliTHn *hNPMixed = NULL;
274 AliTHn *hPPMixed = NULL;
275 AliTHn *hNNMixed = NULL;
eb63b883 276
52daf7b2 277 if(listBFMixed) {
278 //listBFMixed->ls();
279
280 hPMixed = (AliTHn*) listBFMixed->FindObject("fHistPV0M");
281 hPMixed->SetName("gHistPMixed");
282 hNMixed = (AliTHn*) listBFMixed->FindObject("fHistNV0M");
283 hNMixed->SetName("gHistNMixed");
284 hPNMixed = (AliTHn*) listBFMixed->FindObject("fHistPNV0M");
285 hPNMixed->SetName("gHistPNMixed");
286 hNPMixed = (AliTHn*) listBFMixed->FindObject("fHistNPV0M");
287 hNPMixed->SetName("gHistNPMixed");
288 hPPMixed = (AliTHn*) listBFMixed->FindObject("fHistPPV0M");
289 hPPMixed->SetName("gHistPPMixed");
290 hNNMixed = (AliTHn*) listBFMixed->FindObject("fHistNNV0M");
291 hNNMixed->SetName("gHistNNMixed");
292
293 AliBalancePsi *bMixed = new AliBalancePsi();
d67eae53 294 bMixed->SetEventClass(eventClass);
52daf7b2 295 bMixed->SetHistNp(hPMixed);
296 bMixed->SetHistNn(hNMixed);
297 bMixed->SetHistNpn(hPNMixed);
298 bMixed->SetHistNnp(hNPMixed);
299 bMixed->SetHistNpp(hPPMixed);
300 bMixed->SetHistNnn(hNNMixed);
301 }
eb63b883 302
6acdbcb2 303 TH2D *gHistBalanceFunction;
eb63b883 304 TH2D *gHistBalanceFunctionSubtracted;
6acdbcb2 305 TH2D *gHistBalanceFunctionShuffled;
eb63b883 306 TH2D *gHistBalanceFunctionMixed;
6acdbcb2 307 TString histoTitle, pngName;
6acdbcb2 308
d67eae53 309 if(eventClass == "Centrality"){
310 histoTitle = "Centrality: ";
311 histoTitle += psiMin;
312 histoTitle += " - ";
313 histoTitle += psiMax;
314 histoTitle += " % ";
52daf7b2 315 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
d67eae53 316 }
317 else if(eventClass == "Multiplicity"){
318 histoTitle = "Multiplicity: ";
319 histoTitle += psiMin;
320 histoTitle += " - ";
321 histoTitle += psiMax;
322 histoTitle += " tracks";
323 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
324 }
325 else{ // "EventPlane" (default)
326 histoTitle = "Centrality: ";
327 histoTitle += centralityArray[gCentrality-1];
328 histoTitle += "%";
329 if((psiMin == -0.5)&&(psiMax == 0.5))
330 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
331 else if((psiMin == 0.5)&&(psiMax == 1.5))
332 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
333 else if((psiMin == 1.5)&&(psiMax == 2.5))
334 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
335 else
336 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
337 }
338
f0c5040c 339 if(k2pMethod)
340 if(bMixed)
341 gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
342 else{
343 cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
344 return;
345 }
346 else
347 gHistBalanceFunction = b->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
6acdbcb2 348 gHistBalanceFunction->SetTitle(histoTitle.Data());
349 gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
eb63b883 350 gHistBalanceFunction->SetName("gHistBalanceFunction");
351
52daf7b2 352 if(listBFShuffled) {
f0c5040c 353
354 if(k2pMethod)
355 if(bMixed)
356 gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
357 else{
358 cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
359 return;
360 }
361 else
362 gHistBalanceFunctionShuffled = bShuffled->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
52daf7b2 363 gHistBalanceFunctionShuffled->SetTitle(histoTitle.Data());
364 gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
365 gHistBalanceFunctionShuffled->SetName("gHistBalanceFunctionShuffled");
366 }
eb63b883 367
52daf7b2 368 if(listBFMixed) {
f0c5040c 369 if(k2pMethod)
370 if(bMixed)
371 gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax,bMixed);
372 else{
373 cerr<<"NO MIXED BF BUT REQUESTED CORRECTING WITH IT! --> FAIL"<<endl;
374 return;
375 }
376 else
377 gHistBalanceFunctionMixed = bMixed->GetBalanceFunctionDeltaEtaDeltaPhi(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
52daf7b2 378 gHistBalanceFunctionMixed->SetTitle(histoTitle.Data());
379 gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
380 gHistBalanceFunctionMixed->SetName("gHistBalanceFunctionMixed");
381
382 gHistBalanceFunctionSubtracted = dynamic_cast<TH2D *>(gHistBalanceFunction->Clone());
383 gHistBalanceFunctionSubtracted->Add(gHistBalanceFunctionMixed,-1);
384 gHistBalanceFunctionSubtracted->SetTitle(histoTitle.Data());
385 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);
386 gHistBalanceFunctionSubtracted->SetName("gHistBalanceFunctionSubtracted");
387 }
eb63b883 388
389 //Draw the results
390 TCanvas *c1 = new TCanvas("c1","",0,0,600,500);
6acdbcb2 391 c1->SetFillColor(10);
392 c1->SetHighLightColor(10);
393 c1->SetLeftMargin(0.15);
eb63b883 394 gHistBalanceFunction->DrawCopy("lego2");
5de9ad1a 395 gPad->SetTheta(30); // default is 30
396 gPad->SetPhi(-60); // default is 30
397 gPad->Update();
eb63b883 398 TCanvas *c1a = new TCanvas("c1a","",600,0,600,500);
399 c1a->SetFillColor(10);
400 c1a->SetHighLightColor(10);
401 c1a->SetLeftMargin(0.15);
402 gHistBalanceFunction->DrawCopy("colz");
403
52daf7b2 404 if(listBFShuffled) {
405 TCanvas *c2 = new TCanvas("c2","",100,100,600,500);
406 c2->SetFillColor(10);
407 c2->SetHighLightColor(10);
408 c2->SetLeftMargin(0.15);
409 gHistBalanceFunctionShuffled->DrawCopy("lego2");
5de9ad1a 410 gPad->SetTheta(30); // default is 30
411 gPad->SetPhi(-60); // default is 30
412 gPad->Update();
52daf7b2 413 TCanvas *c2a = new TCanvas("c2a","",700,100,600,500);
414 c2a->SetFillColor(10);
415 c2a->SetHighLightColor(10);
416 c2a->SetLeftMargin(0.15);
417 gHistBalanceFunctionShuffled->DrawCopy("colz");
418 }
eb63b883 419
52daf7b2 420 if(listBFMixed) {
421 TCanvas *c3 = new TCanvas("c3","",200,200,600,500);
422 c3->SetFillColor(10);
423 c3->SetHighLightColor(10);
424 c3->SetLeftMargin(0.15);
425 gHistBalanceFunctionMixed->DrawCopy("lego2");
5de9ad1a 426 gPad->SetTheta(30); // default is 30
427 gPad->SetPhi(-60); // default is 30
428 gPad->Update();
52daf7b2 429 TCanvas *c3a = new TCanvas("c3a","",800,200,600,500);
430 c3a->SetFillColor(10);
431 c3a->SetHighLightColor(10);
432 c3a->SetLeftMargin(0.15);
433 gHistBalanceFunctionMixed->DrawCopy("colz");
eb63b883 434
52daf7b2 435 TCanvas *c4 = new TCanvas("c4","",300,300,600,500);
436 c4->SetFillColor(10);
437 c4->SetHighLightColor(10);
438 c4->SetLeftMargin(0.15);
439 gHistBalanceFunctionSubtracted->DrawCopy("lego2");
5de9ad1a 440 gPad->SetTheta(30); // default is 30
441 gPad->SetPhi(-60); // default is 30
442 gPad->Update();
52daf7b2 443 TCanvas *c4a = new TCanvas("c4a","",900,300,600,500);
444 c4a->SetFillColor(10);
445 c4a->SetHighLightColor(10);
446 c4a->SetLeftMargin(0.15);
447 gHistBalanceFunctionSubtracted->DrawCopy("colz");
742af4bd 448
bd36d661 449 fitbalanceFunction(gCentrality, psiMin , psiMax,
742af4bd 450 ptTriggerMin, ptTriggerMax,
451 ptAssociatedMin, ptAssociatedMax,
d67eae53 452 gHistBalanceFunctionSubtracted,k2pMethod, eventClass);
52daf7b2 453 }
eb63b883 454
d67eae53 455 TString newFileName = "balanceFunction2D.";
456 if(eventClass == "Centrality"){
457 newFileName += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
458 newFileName += ".PsiAll.PttFrom";
459 }
460 else if(eventClass == "Multiplicity"){
461 newFileName += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
462 newFileName += ".PsiAll.PttFrom";
463 }
464 else{ // "EventPlane" (default)
465 newFileName += "Centrality";
466 newFileName += gCentrality; newFileName += ".Psi";
467 if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
468 else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
469 else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
470 else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
471 else newFileName += "All.PttFrom";
472 }
648f1a5a 473 newFileName += Form("%.1f",ptTriggerMin); newFileName += "To";
474 newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
475 newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To";
476 newFileName += Form("%.1f",ptAssociatedMax);
f0c5040c 477 if(k2pMethod) newFileName += "_2pMethod";
648f1a5a 478 newFileName += ".root";
eb63b883 479
480 TFile *fOutput = new TFile(newFileName.Data(),"recreate");
481 fOutput->cd();
52daf7b2 482 /*hP->Write(); hN->Write();
483 hPN->Write(); hNP->Write();
484 hPP->Write(); hNN->Write();
485 hPShuffled->Write(); hNShuffled->Write();
486 hPNShuffled->Write(); hNPShuffled->Write();
487 hPPShuffled->Write(); hNNShuffled->Write();
488 hPMixed->Write(); hNMixed->Write();
489 hPNMixed->Write(); hNPMixed->Write();
490 hPPMixed->Write(); hNNMixed->Write();*/
eb63b883 491 gHistBalanceFunction->Write();
52daf7b2 492 if(listBFShuffled) gHistBalanceFunctionShuffled->Write();
493 if(listBFMixed) {
494 gHistBalanceFunctionMixed->Write();
495 gHistBalanceFunctionSubtracted->Write();
496 }
eb63b883 497 fOutput->Close();
6acdbcb2 498}
499
742af4bd 500//____________________________________________________________//
501void fitbalanceFunction(Int_t gCentrality = 1,
502 Double_t psiMin = -0.5, Double_t psiMax = 3.5,
503 Double_t ptTriggerMin = -1.,
504 Double_t ptTriggerMax = -1.,
505 Double_t ptAssociatedMin = -1.,
506 Double_t ptAssociatedMax = -1.,
d67eae53 507 TH2D *gHist,
508 Bool_t k2pMethod = kFALSE,
509 TString eventClass="EventPlane") {
742af4bd 510
511 cout<<"FITTING FUNCTION"<<endl;
512
513 //near side peak: [1]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[2]),2)+0.5*TMath::Power((y/[3]),2)),[4]))
514 //away side ridge: [5]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((y-TMath::Pi())/[6]),2)),[7]))
515 //longitudinal ridge: [8]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[9]),2)),[10]))
516 //wing structures: [11]*TMath::Power(x,2)
517 //flow contribution (v1 up to v4): 2.*([12]*TMath::Cos(y) + [13]*TMath::Cos(2.*y) + [14]*TMath::Cos(3.*y) + [15]*TMath::Cos(4.*y))
518 TF2 *gFitFunction = new TF2("gFitFunction","[0]+[1]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[2]),2)+0.5*TMath::Power((y/[3]),2)),[4]))+[5]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((y-TMath::Pi())/[6]),2)),[7]))+[8]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((x+[17])/[9]),2)),[10]))+[8]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((x-[17])/[9]),2)),[10]))+[11]*TMath::Power(x,2)+2.*[12]*([13]*TMath::Cos(y) + [14]*TMath::Cos(2.*y) + [15]*TMath::Cos(3.*y) + [16]*TMath::Cos(4.*y))",-2.0,2.0,-TMath::Pi()/2.,3.*TMath::Pi()/2.);
519 gFitFunction->SetName("gFitFunction");
520
521
522 //Normalization
523 gFitFunction->SetParName(0,"N1");
524 //near side peak
525 gFitFunction->SetParName(1,"N_{near side}");gFitFunction->FixParameter(1,0.0);
526 gFitFunction->SetParName(2,"Sigma_{near side}(delta eta)"); gFitFunction->FixParameter(2,0.0);
527 gFitFunction->SetParName(3,"Sigma_{near side}(delta phi)"); gFitFunction->FixParameter(3,0.0);
528 gFitFunction->SetParName(4,"Exponent_{near side}"); gFitFunction->FixParameter(4,1.0);
529 //away side ridge
530 gFitFunction->SetParName(5,"N_{away side}"); gFitFunction->FixParameter(5,0.0);
531 gFitFunction->SetParName(6,"Sigma_{away side}(delta phi)"); gFitFunction->FixParameter(6,0.0);
532 gFitFunction->SetParName(7,"Exponent_{away side}"); gFitFunction->FixParameter(7,1.0);
533 //longitudinal ridge
534 gFitFunction->SetParName(8,"N_{long. ridge}"); gFitFunction->SetParameter(8,0.05);//
535 gFitFunction->FixParameter(8,0.0);
536 gFitFunction->SetParName(9,"Sigma_{long. ridge}(delta eta)"); gFitFunction->FixParameter(9,0.0);
537 gFitFunction->SetParName(10,"Exponent_{long. ridge}"); gFitFunction->FixParameter(10,1.0);
538 //wing structures
539 gFitFunction->SetParName(11,"N_{wing}"); gFitFunction->FixParameter(11,0.0);
540 //flow contribution
541 gFitFunction->SetParName(12,"N_{flow}"); gFitFunction->FixParameter(12,0.0);
542 gFitFunction->SetParName(13,"V1"); gFitFunction->FixParameter(13,0.0);
543 gFitFunction->SetParName(14,"V2"); gFitFunction->FixParameter(14,0.0);
544 gFitFunction->SetParName(15,"V3"); gFitFunction->FixParameter(15,0.0);
545 gFitFunction->SetParName(16,"V4"); gFitFunction->FixParameter(16,0.0);
546 gFitFunction->SetParName(17,"Offset"); gFitFunction->FixParameter(17,0.0);
547
548 // just release the near side peak
549 gFitFunction->ReleaseParameter(0);gFitFunction->SetParameter(0,1.0);
e4391c02 550 gFitFunction->ReleaseParameter(1);gFitFunction->SetParameter(1,0.3);gFitFunction->SetParLimits(1,0.0,100000);
742af4bd 551 gFitFunction->ReleaseParameter(2);gFitFunction->SetParameter(2,0.3);gFitFunction->SetParLimits(2,0.05,0.7);
552 gFitFunction->ReleaseParameter(3);gFitFunction->SetParameter(3,0.3);gFitFunction->SetParLimits(3,0.05,1.7);
553
554 gHist->Fit("gFitFunction","nm");
555
556
557 //Cloning the histogram
558 TString histoName = gHist->GetName(); histoName += "Fit";
559 TH2D *gHistFit = new TH2D(histoName.Data(),";#Delta#eta;#Delta#varphi (rad);C(#Delta#eta,#Delta#varphi)",gHist->GetNbinsX(),gHist->GetXaxis()->GetXmin(),gHist->GetXaxis()->GetXmax(),gHist->GetNbinsY(),gHist->GetYaxis()->GetXmin(),gHist->GetYaxis()->GetXmax());
560 TH2D *gHistResidual = dynamic_cast<TH2D *>(gHist->Clone());
561 gHistResidual->SetName("gHistResidual");
562 gHistResidual->Sumw2();
563
564 for(Int_t iBinDeltaEta = 1; iBinDeltaEta <= gHist->GetNbinsX(); iBinDeltaEta++) {
565 for(Int_t iBinDeltaPhi = 1; iBinDeltaPhi <= gHist->GetNbinsY(); iBinDeltaPhi++) {
566 gHistFit->SetBinContent(iBinDeltaEta,iBinDeltaPhi,gFitFunction->Eval(gHist->GetXaxis()->GetBinCenter(iBinDeltaEta),gHist->GetYaxis()->GetBinCenter(iBinDeltaPhi)));
567 }
568 }
569 gHistResidual->Add(gHistFit,-1);
570
571 //Write to output file
d67eae53 572 TString newFileName = "balanceFunctionFit2D.";
573 if(eventClass == "Centrality"){
574 newFileName += Form("Centrality%.1fTo%.1f",psiMin,psiMax);
575 newFileName += ".PsiAll.PttFrom";
576 }
577 else if(eventClass == "Multiplicity"){
578 newFileName += Form("Multiplicity%.0fTo%.0f",psiMin,psiMax);
579 newFileName += ".PsiAll.PttFrom";
580 }
581 else{ // "EventPlane" (default)
582 newFileName += "Centrality";
583 newFileName += gCentrality; newFileName += ".Psi";
584 if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
585 else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
586 else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
587 else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
588 else newFileName += "All.PttFrom";
589 }
742af4bd 590 newFileName += Form("%.1f",ptTriggerMin); newFileName += "To";
591 newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
592 newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To";
593 newFileName += Form("%.1f",ptAssociatedMax);
d67eae53 594 if(k2pMethod) newFileName += "_2pMethod";
742af4bd 595 newFileName += ".root";
596 TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
597 gHist->Write();
598 gHistFit->Write();
599 gHistResidual->Write();
600 gFitFunction->Write();
601 newFile->Close();
602
603
604}
605
606
607
eb63b883 608//____________________________________________________________//
648f1a5a 609void drawBFPsi2D(const char* lhcPeriod = "LHC11h",
bd36d661 610 const char* gCentralityEstimator = "V0M",
611 Int_t gBit = 128,
612 const char* gEventPlaneEstimator = "VZERO",
648f1a5a 613 Int_t gCentrality = 1,
614 Bool_t kShowShuffled = kFALSE,
615 Bool_t kShowMixed = kFALSE,
eb63b883 616 Double_t psiMin = -0.5, Double_t psiMax = 0.5,
617 Double_t ptTriggerMin = -1.,
618 Double_t ptTriggerMax = -1.,
619 Double_t ptAssociatedMin = -1.,
bd36d661 620 Double_t ptAssociatedMax = -1.,
621 Bool_t k2pMethod = kTRUE) {
eb63b883 622 //Macro that draws the BF distributions for each centrality bin
623 //for reaction plane dependent analysis
624 //Author: Panos.Christakoglou@nikhef.nl
db7174c0 625 TGaxis::SetMaxDigits(3);
eb63b883 626
627 //Get the input file
bd36d661 628 TString filename = lhcPeriod;
629 filename += "/Centrality"; filename += gCentralityEstimator;
630 filename += "_Bit"; filename += gBit;
631 filename += "_"; filename += gEventPlaneEstimator;
632 filename +="/PttFrom";
648f1a5a 633 filename += Form("%.1f",ptTriggerMin); filename += "To";
634 filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
635 filename += Form("%.1f",ptAssociatedMin); filename += "To";
636 filename += Form("%.1f",ptAssociatedMax);
637 filename += "/balanceFunction2D.Centrality";
eb63b883 638 filename += gCentrality; filename += ".Psi";
639 if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
640 else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
641 else if((psiMin == 1.5)&&(psiMax == 2.5)) filename += "OutOfPlane.Ptt";
648f1a5a 642 else if((psiMin == 2.5)&&(psiMax == 3.5)) filename += "Rest.Ptt";
643 else filename += "All.PttFrom";
644 filename += Form("%.1f",ptTriggerMin); filename += "To";
db7174c0 645 filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
648f1a5a 646 filename += Form("%.1f",ptAssociatedMin); filename += "To";
bd36d661 647 filename += Form("%.1f",ptAssociatedMax);
648 if(k2pMethod) filename += "_2pMethod";
649 filename += ".root";
eb63b883 650
651 //Open the file
652 TFile *f = TFile::Open(filename.Data());
653 if((!f)||(!f->IsOpen())) {
654 Printf("The file %s is not found. Aborting...",filename);
655 return listBF;
6acdbcb2 656 }
eb63b883 657 //f->ls();
658
659 //Raw balance function
660 TH1D *gHistBalanceFunction = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunction"));
661 gHistBalanceFunction->SetStats(kFALSE);
662 gHistBalanceFunction->GetXaxis()->SetNdivisions(10);
663 gHistBalanceFunction->GetYaxis()->SetNdivisions(10);
664 gHistBalanceFunction->GetZaxis()->SetNdivisions(10);
665 gHistBalanceFunction->GetXaxis()->SetTitleOffset(1.3);
666 gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.3);
667 gHistBalanceFunction->GetZaxis()->SetTitleOffset(1.3);
668 gHistBalanceFunction->GetXaxis()->SetTitle("#Delta #eta");
669 gHistBalanceFunction->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
15dd45a0 670 gHistBalanceFunction->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
eb63b883 671
672 //Shuffled balance function
648f1a5a 673 if(kShowShuffled) {
674 TH1D *gHistBalanceFunctionShuffled = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionShuffled"));
675 gHistBalanceFunctionShuffled->SetStats(kFALSE);
676 gHistBalanceFunctionShuffled->GetXaxis()->SetNdivisions(10);
677 gHistBalanceFunctionShuffled->GetYaxis()->SetNdivisions(10);
678 gHistBalanceFunctionShuffled->GetZaxis()->SetNdivisions(10);
679 gHistBalanceFunctionShuffled->GetXaxis()->SetTitleOffset(1.3);
680 gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.3);
681 gHistBalanceFunctionShuffled->GetZaxis()->SetTitleOffset(1.3);
682 gHistBalanceFunctionShuffled->GetXaxis()->SetTitle("#Delta #eta");
683 gHistBalanceFunctionShuffled->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
684 gHistBalanceFunctionShuffled->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
685 }
eb63b883 686
687 //Mixed balance function
648f1a5a 688 if(kShowMixed) {
689 TH1D *gHistBalanceFunctionMixed = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionMixed"));
690 gHistBalanceFunctionMixed->SetStats(kFALSE);
691 gHistBalanceFunctionMixed->GetXaxis()->SetNdivisions(10);
692 gHistBalanceFunctionMixed->GetYaxis()->SetNdivisions(10);
693 gHistBalanceFunctionMixed->GetZaxis()->SetNdivisions(10);
694 gHistBalanceFunctionMixed->GetXaxis()->SetTitleOffset(1.3);
695 gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.3);
696 gHistBalanceFunctionMixed->GetZaxis()->SetTitleOffset(1.3);
697 gHistBalanceFunctionMixed->GetXaxis()->SetTitle("#Delta #eta");
698 gHistBalanceFunctionMixed->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
699 gHistBalanceFunctionMixed->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
700 }
eb63b883 701
702 //Subtracted balance function
648f1a5a 703 if(kShowMixed) {
704 TH1D *gHistBalanceFunctionSubtracted = dynamic_cast<TH1D *>(f->Get("gHistBalanceFunctionSubtracted"));
705 gHistBalanceFunctionSubtracted->SetStats(kFALSE);
706 gHistBalanceFunctionSubtracted->GetXaxis()->SetNdivisions(10);
707 gHistBalanceFunctionSubtracted->GetYaxis()->SetNdivisions(10);
708 gHistBalanceFunctionSubtracted->GetZaxis()->SetNdivisions(10);
709 gHistBalanceFunctionSubtracted->GetXaxis()->SetTitleOffset(1.3);
710 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.3);
711 gHistBalanceFunctionSubtracted->GetZaxis()->SetTitleOffset(1.3);
712 gHistBalanceFunctionSubtracted->GetXaxis()->SetTitle("#Delta #eta");
713 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitle("#Delta #varphi (deg.)");
714 gHistBalanceFunctionSubtracted->GetZaxis()->SetTitle("B(#Delta #eta, #Delta #varphi)");
715 }
716
eb63b883 717 TString pngName;
718
719 TString centralityLatex = "Centrality: ";
720 centralityLatex += centralityArray[gCentrality-1];
721 centralityLatex += "%";
722
723 TString psiLatex;
724 if((psiMin == -0.5)&&(psiMax == 0.5))
725 psiLatex = " -7.5^{o} < #varphi - #Psi_{2} < 7.5^{o}";
726 else if((psiMin == 0.5)&&(psiMax == 1.5))
727 psiLatex = " 37.5^{o} < #varphi - #Psi_{2} < 52.5^{o}";
728 else if((psiMin == 1.5)&&(psiMax == 2.5))
729 psiLatex = " 82.5^{o} < #varphi - #Psi_{2} < 97.5^{o}";
730 else
731 psiLatex = " 0^{o} < #varphi - #Psi_{2} < 180^{o}";
732
733 TString pttLatex = Form("%.1f",ptTriggerMin);
734 pttLatex += " < p_{T}^{t} < "; pttLatex += Form("%.1f",ptTriggerMax);
735 pttLatex += " GeV/c";
736
737 TString ptaLatex = Form("%.1f",ptAssociatedMin);
738 ptaLatex += " < p_{T}^{a} < "; ptaLatex += Form("%.1f",ptAssociatedMax);
739 ptaLatex += " GeV/c";
740
741 TLatex *latexInfo1 = new TLatex();
742 latexInfo1->SetNDC();
15dd45a0 743 latexInfo1->SetTextSize(0.045);
eb63b883 744 latexInfo1->SetTextColor(1);
745
746 //Draw the results
747 TCanvas *c1 = new TCanvas("c1","Raw balance function 2D",0,0,600,500);
748 c1->SetFillColor(10); c1->SetHighLightColor(10);
749 c1->SetLeftMargin(0.17); c1->SetTopMargin(0.05);
bd36d661 750 gHistBalanceFunction->SetTitle("");
eb63b883 751 gHistBalanceFunction->GetYaxis()->SetTitleOffset(1.4);
752 gHistBalanceFunction->GetYaxis()->SetNdivisions(10);
753 gHistBalanceFunction->GetXaxis()->SetNdivisions(10);
754 gHistBalanceFunction->DrawCopy("lego2");
5de9ad1a 755 gPad->SetTheta(30); // default is 30
756 gPad->SetPhi(-60); // default is 30
757 gPad->Update();
eb63b883 758
15dd45a0 759 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
760 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
761 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
762 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
eb63b883 763
bd36d661 764 TString pngName = "BalanceFunction2D.";
765 pngName += "Centrality";
766 pngName += gCentrality;
767 if((psiMin == -0.5)&&(psiMax == 0.5)) pngName += "InPlane.Ptt";
768 else if((psiMin == 0.5)&&(psiMax == 1.5)) pngName += "Intermediate.Ptt";
769 else if((psiMin == 1.5)&&(psiMax == 2.5)) pngName += "OutOfPlane.Ptt";
770 else if((psiMin == 2.5)&&(psiMax == 3.5)) pngName += "Rest.PttFrom";
771 else pngName += "All.PttFrom";
772 pngName += Form("%.1f",ptTriggerMin); pngName += "To";
773 pngName += Form("%.1f",ptTriggerMax); pngName += "PtaFrom";
774 pngName += Form("%.1f",ptAssociatedMin); pngName += "To";
775 pngName += Form("%.1f",ptAssociatedMax);
776 if(k2pMethod) pngName += "_2pMethod";
777 pngName += ".png";
778
779 c1->SaveAs(pngName.Data());
780
648f1a5a 781 if(kShowShuffled) {
782 TCanvas *c2 = new TCanvas("c2","Shuffled balance function 2D",100,100,600,500);
783 c2->SetFillColor(10); c2->SetHighLightColor(10);
784 c2->SetLeftMargin(0.17); c2->SetTopMargin(0.05);
785 gHistBalanceFunctionShuffled->SetTitle("Shuffled events");
786 gHistBalanceFunctionShuffled->GetYaxis()->SetTitleOffset(1.4);
787 gHistBalanceFunctionShuffled->GetYaxis()->SetNdivisions(10);
788 gHistBalanceFunctionShuffled->GetXaxis()->SetNdivisions(10);
789 gHistBalanceFunctionShuffled->DrawCopy("lego2");
5de9ad1a 790 gPad->SetTheta(30); // default is 30
791 gPad->SetPhi(-60); // default is 30
792 gPad->Update();
793
648f1a5a 794 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
795 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
796 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
797 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
798 }
eb63b883 799
648f1a5a 800 if(kShowMixed) {
801 TCanvas *c3 = new TCanvas("c3","Mixed balance function 2D",200,200,600,500);
802 c3->SetFillColor(10); c3->SetHighLightColor(10);
803 c3->SetLeftMargin(0.17); c3->SetTopMargin(0.05);
804 gHistBalanceFunctionMixed->SetTitle("Mixed events");
805 gHistBalanceFunctionMixed->GetYaxis()->SetTitleOffset(1.4);
806 gHistBalanceFunctionMixed->GetYaxis()->SetNdivisions(10);
807 gHistBalanceFunctionMixed->GetXaxis()->SetNdivisions(10);
808 gHistBalanceFunctionMixed->DrawCopy("lego2");
5de9ad1a 809 gPad->SetTheta(30); // default is 30
810 gPad->SetPhi(-60); // default is 30
811 gPad->Update();
812
648f1a5a 813 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
814 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
815 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
816 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
817 }
eb63b883 818
648f1a5a 819 if(kShowMixed) {
820 TCanvas *c4 = new TCanvas("c4","Subtracted balance function 2D",300,300,600,500);
821 c4->SetFillColor(10); c4->SetHighLightColor(10);
822 c4->SetLeftMargin(0.17); c4->SetTopMargin(0.05);
823 gHistBalanceFunctionSubtracted->SetTitle("Subtracted balance function");
824 gHistBalanceFunctionSubtracted->GetYaxis()->SetTitleOffset(1.4);
825 gHistBalanceFunctionSubtracted->GetYaxis()->SetNdivisions(10);
826 gHistBalanceFunctionSubtracted->GetXaxis()->SetNdivisions(10);
827 gHistBalanceFunctionSubtracted->DrawCopy("lego2");
5de9ad1a 828 gPad->SetTheta(30); // default is 30
829 gPad->SetPhi(-60); // default is 30
830 gPad->Update();
831
648f1a5a 832 latexInfo1->DrawLatex(0.64,0.88,centralityLatex.Data());
833 latexInfo1->DrawLatex(0.64,0.82,psiLatex.Data());
834 latexInfo1->DrawLatex(0.64,0.76,pttLatex.Data());
835 latexInfo1->DrawLatex(0.64,0.70,ptaLatex.Data());
836 }
6acdbcb2 837}