]>
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 | |
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 | 53 | TList *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 | 206 | void 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 | //____________________________________________________________// |
544 | void 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 | 650 | void 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 | } |