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