]>
Commit | Line | Data |
---|---|---|
e4391c02 | 1 | const Int_t numberOfCentralityBins = 12; |
2 | TString 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 | |
5 | const Int_t gRebin = 1; | |
6 | void 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 | 52 | TList *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 | 200 | void 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 | //____________________________________________________________// |
501 | void 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 | 609 | void 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 | } |