]>
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, |
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 | 55 | TList *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 | 208 | void 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 | //____________________________________________________________// |
548 | void 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 | 654 | void 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 | } |