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