1 const Int_t numberOfCentralityBins = 8;
2 TString centralityArray[numberOfCentralityBins] = {"0-10","10-20","20-30","30-40","40-50","50-60","60-70","70-80"};
4 const Int_t gRebin = 1;
6 //____________________________________________________________//
7 void drawCorrelationFunctionPsiAllPtCombinations(const char* filename = "AnalysisResults.root",
10 const char* gCentralityEstimator = 0x0,
11 Bool_t kShowShuffled = kFALSE,
12 Bool_t kShowMixed = kTRUE,
13 Double_t psiMin = -0.5,
14 Double_t psiMax = 3.5){
16 // this could also be retrieved directly from AliBalancePsi
17 const Int_t kNPtBins = 16;
18 Double_t ptBins[kNPtBins+1] = {0.2,0.6,1.0,1.5,2.0,2.5,3.0,3.5,4.0,5.0,6.0,7.0,8.0,10.,12.,15.,20.};
20 cout<<"You have chosen to do all pT combinations --> this could take some time."<<endl;
22 for(Int_t iTrig = 0; iTrig < 2/*kNPtBins*/; iTrig++){
23 for(Int_t iAssoc = 0; iAssoc < 2/*kNPtBins*/; iAssoc++){
24 cout<<"================================================================="<<endl;
25 cout<<"PROCESS NOW: "<<endl;
26 cout<<" -> "<< ptBins[iTrig]<<" < pTtrig < "<<ptBins[iTrig+1]<<" "<<ptBins[iAssoc]<<" < pTassoc < "<<ptBins[iAssoc+1]<<endl;
27 drawCorrelationFunctionPsi(filename,gCentrality,gBit,gCentralityEstimator,kShowShuffled,kShowMixed,psiMin,psiMax,ptBins[iTrig],ptBins[iTrig+1],ptBins[iAssoc],ptBins[iAssoc+1]);
28 cout<<"================================================================="<<endl;
35 //____________________________________________________________//
36 void drawCorrelationFunctionsAllPtCombinations(const char* lhcPeriod = "LHC11h",
38 Int_t gCentrality = 1,
39 Double_t psiMin = -0.5, Double_t psiMax = 3.5)
42 // this could also be retrieved directly from AliBalancePsi
43 const Int_t kNPtBins = 16;
44 Double_t ptBins[kNPtBins+1] = {0.2,0.6,1.0,1.5,2.0,2.5,3.0,3.5,4.0,5.0,6.0,7.0,8.0,10.,12.,15.,20.};
46 cout<<"You have chosen to do all pT combinations --> this could take some time."<<endl;
48 for(Int_t iTrig = 0; iTrig < kNPtBins; iTrig++){
49 for(Int_t iAssoc = 0; iAssoc < kNPtBins; iAssoc++){
50 cout<<"================================================================="<<endl;
51 cout<<"FIT NOW: "<<endl;
52 cout<<" -> "<< ptBins[iTrig]<<" < pTtrig < "<<ptBins[iTrig+1]<<" "<<ptBins[iAssoc]<<" < pTassoc < "<<ptBins[iAssoc+1]<<endl;
53 drawCorrelationFunctions(lhcPeriod,gTrainID,gCentrality,psiMin,psiMax,ptBins[iTrig],ptBins[iTrig+1],ptBins[iAssoc],ptBins[iAssoc+1]);
54 cout<<"================================================================="<<endl;
62 void drawCorrelationFunctionPsi(const char* filename = "AnalysisResults.root",
63 Int_t gCentrality = 1,
65 const char* gCentralityEstimator = 0x0,
66 Bool_t kShowShuffled = kFALSE,
67 Bool_t kShowMixed = kTRUE,
68 Double_t psiMin = -0.5,
69 Double_t psiMax = 3.5,
70 Double_t ptTriggerMin = -1.,
71 Double_t ptTriggerMax = -1.,
72 Double_t ptAssociatedMin = -1.,
73 Double_t ptAssociatedMax = -1.) {
74 //Macro that draws the correlation functions from the balance function
75 //analysis vs the reaction plane
76 //Author: Panos.Christakoglou@nikhef.nl
77 gROOT->LoadMacro("~/SetPlotStyle.C");
79 gStyle->SetPalette(1,0);
81 //Load the PWG2ebye library
82 gSystem->Load("libANALYSIS.so");
83 gSystem->Load("libANALYSISalice.so");
84 gSystem->Load("libEventMixing.so");
85 gSystem->Load("libCORRFW.so");
86 gSystem->Load("libPWGTools.so");
87 gSystem->Load("libPWGCFebye.so");
89 //Prepare the objects and return them
90 TList *list = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,0);
91 TList *listShuffled = NULL;
92 if(kShowShuffled) listShuffled = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,1);
93 TList *listMixed = NULL;
94 if(kShowMixed) listMixed = GetListOfObjects(filename,gCentrality,gBit,gCentralityEstimator,2);
97 Printf("The TList object was not created");
101 draw(list,listShuffled,listMixed,
102 gCentralityEstimator,gCentrality,psiMin,psiMax,
103 ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
106 //______________________________________________________//
107 TList *GetListOfObjects(const char* filename,
110 const char *gCentralityEstimator,
112 //Get the TList objects (QA, bf, bf shuffled)
116 TFile *f = TFile::Open(filename,"UPDATE");
117 if((!f)||(!f->IsOpen())) {
118 Printf("The file %s is not found. Aborting...",filename);
123 TDirectoryFile *dir = dynamic_cast<TDirectoryFile *>(f->Get("PWGCFEbyE.outputBalanceFunctionPsiAnalysis"));
125 Printf("The TDirectoryFile is not found. Aborting...",filename);
132 //cout<<"no shuffling - no mixing"<<endl;
133 listBFName = "listBFPsi_";
135 else if(kData == 1) {
136 //cout<<"shuffling - no mixing"<<endl;
137 listBFName = "listBFPsiShuffled_";
139 else if(kData == 2) {
140 //cout<<"no shuffling - mixing"<<endl;
141 listBFName = "listBFPsiMixed_";
143 listBFName += centralityArray[gCentrality-1];
145 listBFName += "_Bit"; listBFName += gBit; }
146 if(gCentralityEstimator) {
147 listBFName += "_"; listBFName += gCentralityEstimator;}
149 // histograms were already retrieved (in first iteration)
150 if(dir->Get(Form("%s_histograms",listBFName.Data()))){
151 listBF = dynamic_cast<TList *>(dir->Get(Form("%s_histograms",listBFName.Data())));
154 // histograms were not yet retrieved (this is the first iteration)
157 listBF = dynamic_cast<TList *>(dir->Get(listBFName.Data()));
158 cout<<"======================================================="<<endl;
159 cout<<"List name: "<<listBF->GetName()<<endl;
165 histoName = "fHistP";
167 histoName = "fHistP_shuffle";
169 histoName = "fHistP";
170 if(gCentralityEstimator)
171 histoName += gCentralityEstimator;
172 AliTHn *fHistP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
174 Printf("fHistP %s not found!!!",histoName.Data());
177 fHistP->FillParent(); fHistP->DeleteContainers();
180 histoName = "fHistN";
182 histoName = "fHistN_shuffle";
184 histoName = "fHistN";
185 if(gCentralityEstimator)
186 histoName += gCentralityEstimator;
187 AliTHn *fHistN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
189 Printf("fHistN %s not found!!!",histoName.Data());
192 fHistN->FillParent(); fHistN->DeleteContainers();
195 histoName = "fHistPN";
197 histoName = "fHistPN_shuffle";
199 histoName = "fHistPN";
200 if(gCentralityEstimator)
201 histoName += gCentralityEstimator;
202 AliTHn *fHistPN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
204 Printf("fHistPN %s not found!!!",histoName.Data());
207 fHistPN->FillParent(); fHistPN->DeleteContainers();
210 histoName = "fHistNP";
212 histoName = "fHistNP_shuffle";
214 histoName = "fHistNP";
215 if(gCentralityEstimator)
216 histoName += gCentralityEstimator;
217 AliTHn *fHistNP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
219 Printf("fHistNP %s not found!!!",histoName.Data());
222 fHistNP->FillParent(); fHistNP->DeleteContainers();
225 histoName = "fHistPP";
227 histoName = "fHistPP_shuffle";
229 histoName = "fHistPP";
230 if(gCentralityEstimator)
231 histoName += gCentralityEstimator;
232 AliTHn *fHistPP = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
234 Printf("fHistPP %s not found!!!",histoName.Data());
237 fHistPP->FillParent(); fHistPP->DeleteContainers();
240 histoName = "fHistNN";
242 histoName = "fHistNN_shuffle";
244 histoName = "fHistNN";
245 if(gCentralityEstimator)
246 histoName += gCentralityEstimator;
247 AliTHn *fHistNN = dynamic_cast<AliTHn *>(listBF->FindObject(histoName.Data()));
249 Printf("fHistNN %s not found!!!",histoName.Data());
252 fHistNN->FillParent(); fHistNN->DeleteContainers();
255 listBF->Write(Form("%s_histograms",listBFName.Data()), TObject::kSingleKey);
264 //______________________________________________________//
265 void draw(TList *list, TList *listBFShuffled, TList *listBFMixed,
266 const char *gCentralityEstimator,
267 Int_t gCentrality, Double_t psiMin, Double_t psiMax,
268 Double_t ptTriggerMin, Double_t ptTriggerMax,
269 Double_t ptAssociatedMin, Double_t ptAssociatedMax) {
270 //Draws the correlation functions for every centrality bin
271 //(+-), (-+), (++), (--)
279 TString gHistPname = "fHistP";
280 if(gCentralityEstimator) gHistPname += gCentralityEstimator;
281 TString gHistNname = "fHistN";
282 if(gCentralityEstimator) gHistNname += gCentralityEstimator;
283 TString gHistPNname = "fHistPN";
284 if(gCentralityEstimator) gHistPNname += gCentralityEstimator;
285 TString gHistNPname = "fHistNP";
286 if(gCentralityEstimator) gHistNPname += gCentralityEstimator;
287 TString gHistPPname = "fHistPP";
288 if(gCentralityEstimator) gHistPPname += gCentralityEstimator;
289 TString gHistNNname = "fHistNN";
290 if(gCentralityEstimator) gHistNNname += gCentralityEstimator;
292 hP = (AliTHn*) list->FindObject(gHistPname.Data());
293 hN = (AliTHn*) list->FindObject(gHistNname.Data());
294 hPN = (AliTHn*) list->FindObject(gHistPNname.Data());
295 hNP = (AliTHn*) list->FindObject(gHistNPname.Data());
296 hPP = (AliTHn*) list->FindObject(gHistPPname.Data());
297 hNN = (AliTHn*) list->FindObject(gHistNNname.Data());
299 //Create the AliBalancePsi object and fill it with the AliTHn objects
300 AliBalancePsi *b = new AliBalancePsi();
308 //balance function shuffling
309 AliTHn *hPShuffled = NULL;
310 AliTHn *hNShuffled = NULL;
311 AliTHn *hPNShuffled = NULL;
312 AliTHn *hNPShuffled = NULL;
313 AliTHn *hPPShuffled = NULL;
314 AliTHn *hNNShuffled = NULL;
316 //listBFShuffled->ls();
318 gHistPname = "fHistP_shuffle";
319 if(gCentralityEstimator) gHistPname += gCentralityEstimator;
320 gHistNname = "fHistN_shuffle";
321 if(gCentralityEstimator) gHistNname += gCentralityEstimator;
322 gHistPNname = "fHistPN_shuffle";
323 if(gCentralityEstimator) gHistPNname += gCentralityEstimator;
324 gHistNPname = "fHistNP_shuffle";
325 if(gCentralityEstimator) gHistNPname += gCentralityEstimator;
326 gHistPPname = "fHistPP_shuffle";
327 if(gCentralityEstimator) gHistPPname += gCentralityEstimator;
328 gHistNNname = "fHistNN_shuffle";
329 if(gCentralityEstimator) gHistNNname += gCentralityEstimator;
331 hPShuffled = (AliTHn*) listBFShuffled->FindObject(gHistPname.Data());
332 hPShuffled->SetName("gHistPShuffled");
333 hNShuffled = (AliTHn*) listBFShuffled->FindObject(gHistNname.Data());
334 hNShuffled->SetName("gHistNShuffled");
335 hPNShuffled = (AliTHn*) listBFShuffled->FindObject(gHistPNname.Data());
336 hPNShuffled->SetName("gHistPNShuffled");
337 hNPShuffled = (AliTHn*) listBFShuffled->FindObject(gHistNPname.Data());
338 hNPShuffled->SetName("gHistNPShuffled");
339 hPPShuffled = (AliTHn*) listBFShuffled->FindObject(gHistPPname.Data());
340 hPPShuffled->SetName("gHistPPShuffled");
341 hNNShuffled = (AliTHn*) listBFShuffled->FindObject(gHistNNname.Data());
342 hNNShuffled->SetName("gHistNNShuffled");
344 AliBalancePsi *bShuffled = new AliBalancePsi();
345 bShuffled->SetHistNp(hPShuffled);
346 bShuffled->SetHistNn(hNShuffled);
347 bShuffled->SetHistNpn(hPNShuffled);
348 bShuffled->SetHistNnp(hNPShuffled);
349 bShuffled->SetHistNpp(hPPShuffled);
350 bShuffled->SetHistNnn(hNNShuffled);
353 //balance function mixing
354 AliTHn *hPMixed = NULL;
355 AliTHn *hNMixed = NULL;
356 AliTHn *hPNMixed = NULL;
357 AliTHn *hNPMixed = NULL;
358 AliTHn *hPPMixed = NULL;
359 AliTHn *hNNMixed = NULL;
364 gHistPname = "fHistP";
365 if(gCentralityEstimator) gHistPname += gCentralityEstimator;
366 gHistNname = "fHistN";
367 if(gCentralityEstimator) gHistNname += gCentralityEstimator;
368 gHistPNname = "fHistPN";
369 if(gCentralityEstimator) gHistPNname += gCentralityEstimator;
370 gHistNPname = "fHistNP";
371 if(gCentralityEstimator) gHistNPname += gCentralityEstimator;
372 gHistPPname = "fHistPP";
373 if(gCentralityEstimator) gHistPPname += gCentralityEstimator;
374 gHistNNname = "fHistNN";
375 if(gCentralityEstimator) gHistNNname += gCentralityEstimator;
376 hPMixed = (AliTHn*) listBFMixed->FindObject(gHistPname.Data());
377 hPMixed->SetName("gHistPMixed");
378 hNMixed = (AliTHn*) listBFMixed->FindObject(gHistNname.Data());
379 hNMixed->SetName("gHistNMixed");
380 hPNMixed = (AliTHn*) listBFMixed->FindObject(gHistPNname.Data());
381 hPNMixed->SetName("gHistPNMixed");
382 hNPMixed = (AliTHn*) listBFMixed->FindObject(gHistNPname.Data());
383 hNPMixed->SetName("gHistNPMixed");
384 hPPMixed = (AliTHn*) listBFMixed->FindObject(gHistPPname.Data());
385 hPPMixed->SetName("gHistPPMixed");
386 hNNMixed = (AliTHn*) listBFMixed->FindObject(gHistNNname.Data());
387 hNNMixed->SetName("gHistNNMixed");
389 AliBalancePsi *bMixed = new AliBalancePsi();
390 bMixed->SetHistNp(hPMixed);
391 bMixed->SetHistNn(hNMixed);
392 bMixed->SetHistNpn(hPNMixed);
393 bMixed->SetHistNnp(hNPMixed);
394 bMixed->SetHistNpp(hPPMixed);
395 bMixed->SetHistNnn(hNNMixed);
407 TString histoTitle, pngName;
410 histoTitle = "(+-) | Centrality: ";
411 histoTitle += centralityArray[gCentrality-1];
413 if((psiMin == -0.5)&&(psiMax == 0.5))
414 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
415 else if((psiMin == 0.5)&&(psiMax == 1.5))
416 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
417 else if((psiMin == 1.5)&&(psiMax == 2.5))
418 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
420 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
422 gHistPN[0] = b->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
423 gHistPN[0]->GetYaxis()->SetTitleOffset(1.5);
424 gHistPN[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
425 gHistPN[0]->SetTitle(histoTitle.Data());
426 cPN[0] = new TCanvas("cPN0","",0,0,600,500);
427 cPN[0]->SetFillColor(10); cPN[0]->SetHighLightColor(10);
428 gHistPN[0]->DrawCopy("surf1fb");
429 gPad->SetTheta(30); // default is 30
430 //gPad->SetPhi(130); // default is 30
431 gPad->SetPhi(-60); // default is 30
433 pngName = "DeltaPhiDeltaEta.Centrality";
434 pngName += centralityArray[gCentrality-1];
435 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
436 pngName += ".PositiveNegative.png";
437 //cPN[0]->SaveAs(pngName.Data());
440 histoTitle = "(+-) shuffled | Centrality: ";
441 histoTitle += centralityArray[gCentrality-1];
443 if((psiMin == -0.5)&&(psiMax == 0.5))
444 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
445 else if((psiMin == 0.5)&&(psiMax == 1.5))
446 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
447 else if((psiMin == 1.5)&&(psiMax == 2.5))
448 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
450 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
452 gHistPN[1] = bShuffled->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
453 gHistPN[1]->GetYaxis()->SetTitleOffset(1.5);
454 gHistPN[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
455 gHistPN[1]->SetTitle(histoTitle.Data());
456 cPN[1] = new TCanvas("cPN1","",0,100,600,500);
457 cPN[1]->SetFillColor(10);
458 cPN[1]->SetHighLightColor(10);
459 gHistPN[1]->DrawCopy("surf1fb");
460 gPad->SetTheta(30); // default is 30
461 //gPad->SetPhi(130); // default is 30
462 gPad->SetPhi(-60); // default is 30
464 pngName = "DeltaPhiDeltaEtaShuffled.Centrality";
465 pngName += centralityArray[gCentrality-1];
466 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
467 pngName += ".PositiveNegative.png";
468 //cPN[1]->SaveAs(pngName.Data());
472 histoTitle = "(+-) mixed | Centrality: ";
473 histoTitle += centralityArray[gCentrality-1];
475 if((psiMin == -0.5)&&(psiMax == 0.5))
476 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
477 else if((psiMin == 0.5)&&(psiMax == 1.5))
478 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
479 else if((psiMin == 1.5)&&(psiMax == 2.5))
480 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
482 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
484 gHistPN[2] = bMixed->GetCorrelationFunctionPN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
485 gHistPN[2]->GetYaxis()->SetTitleOffset(1.5);
486 gHistPN[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
487 gHistPN[2]->SetTitle(histoTitle.Data());
488 cPN[2] = new TCanvas("cPN2","",0,200,600,500);
489 cPN[2]->SetFillColor(10);
490 cPN[2]->SetHighLightColor(10);
491 gHistPN[2]->DrawCopy("surf1fb");
492 gPad->SetTheta(30); // default is 30
493 //gPad->SetPhi(130); // default is 30
494 gPad->SetPhi(-60); // default is 30
496 pngName = "DeltaPhiDeltaEtaMixed.Centrality";
497 pngName += centralityArray[gCentrality-1];
498 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
499 pngName += ".PositiveNegative.png";
500 //cPN[2]->SaveAs(pngName.Data());
502 //Correlation function (+-)
503 gHistPN[3] = dynamic_cast<TH2D *>(gHistPN[0]->Clone());
504 gHistPN[3]->Divide(gHistPN[2]);
505 gHistPN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
506 gHistPN[3]->GetZaxis()->SetTitle("C_{+-}(#Delta#eta,#Delta#varphi)");
507 cPN[3] = new TCanvas("cPN3","",0,300,600,500);
508 cPN[3]->SetFillColor(10);
509 cPN[3]->SetHighLightColor(10);
510 gHistPN[3]->DrawCopy("surf1fb");
511 gPad->SetTheta(30); // default is 30
512 //gPad->SetPhi(130); // default is 30
513 gPad->SetPhi(-60); // default is 30
515 pngName = "CorrelationFunction.Centrality";
516 pngName += centralityArray[gCentrality-1];
517 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
518 pngName += ".PositiveNegative.png";
519 //cPN[3]->SaveAs(pngName.Data());
523 histoTitle = "(-+) | Centrality: ";
524 histoTitle += centralityArray[gCentrality-1];
526 if((psiMin == -0.5)&&(psiMax == 0.5))
527 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
528 else if((psiMin == 0.5)&&(psiMax == 1.5))
529 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
530 else if((psiMin == 1.5)&&(psiMax == 2.5))
531 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
533 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
535 gHistNP[0] = b->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
536 gHistNP[0]->GetYaxis()->SetTitleOffset(1.5);
537 gHistNP[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
538 gHistNP[0]->SetTitle(histoTitle.Data());
539 cNP[0] = new TCanvas("cNP0","",100,0,600,500);
540 cNP[0]->SetFillColor(10);
541 cNP[0]->SetHighLightColor(10);
542 gHistNP[0]->DrawCopy("surf1fb");
543 gPad->SetTheta(30); // default is 30
544 //gPad->SetPhi(130); // default is 30
545 gPad->SetPhi(-60); // default is 30
547 pngName = "DeltaPhiDeltaEta.Centrality";
548 pngName += centralityArray[gCentrality-1];
549 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
550 pngName += ".NegativePositive.png";
551 //cNP[0]->SaveAs(pngName.Data());
554 histoTitle = "(-+) shuffled | Centrality: ";
555 histoTitle += centralityArray[gCentrality-1];
557 if((psiMin == -0.5)&&(psiMax == 0.5))
558 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
559 else if((psiMin == 0.5)&&(psiMax == 1.5))
560 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
561 else if((psiMin == 1.5)&&(psiMax == 2.5))
562 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
564 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
566 gHistNP[1] = bShuffled->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
567 gHistNP[1]->GetYaxis()->SetTitleOffset(1.5);
568 gHistNP[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
569 gHistNP[1]->SetTitle(histoTitle.Data());
570 cNP[1] = new TCanvas("cNP1","",100,100,600,500);
571 cNP[1]->SetFillColor(10);
572 cNP[1]->SetHighLightColor(10);
573 gHistNP[1]->DrawCopy("surf1fb");
574 gPad->SetTheta(30); // default is 30
575 //gPad->SetPhi(130); // default is 30
576 gPad->SetPhi(-60); // default is 30
578 pngName = "DeltaPhiDeltaEtaShuffled.Centrality";
579 pngName += centralityArray[gCentrality-1];
580 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
581 pngName += ".NegativePositive.png";
582 //cNP[1]->SaveAs(pngName.Data());
586 histoTitle = "(-+) mixed | Centrality: ";
587 histoTitle += centralityArray[gCentrality-1];
589 if((psiMin == -0.5)&&(psiMax == 0.5))
590 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
591 else if((psiMin == 0.5)&&(psiMax == 1.5))
592 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
593 else if((psiMin == 1.5)&&(psiMax == 2.5))
594 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
596 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
598 gHistNP[2] = bMixed->GetCorrelationFunctionNP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
599 gHistNP[2]->GetYaxis()->SetTitleOffset(1.5);
600 gHistNP[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
601 gHistNP[2]->SetTitle(histoTitle.Data());
602 cNP[2] = new TCanvas("cNP2","",100,200,600,500);
603 cNP[2]->SetFillColor(10);
604 cNP[2]->SetHighLightColor(10);
605 gHistNP[2]->DrawCopy("surf1fb");
606 gPad->SetTheta(30); // default is 30
607 //gPad->SetPhi(130); // default is 30
608 gPad->SetPhi(-60); // default is 30
610 pngName = "DeltaPhiDeltaEtaMixed.Centrality";
611 pngName += centralityArray[gCentrality-1];
612 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
613 pngName += ".NegativePositive.png";
614 //cNP[2]->SaveAs(pngName.Data());
616 //Correlation function (-+)
617 gHistNP[3] = dynamic_cast<TH2D *>(gHistNP[0]->Clone());
618 gHistNP[3]->Divide(gHistNP[2]);
619 gHistNP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
620 gHistNP[3]->GetZaxis()->SetTitle("C_{-+}(#Delta#eta,#Delta#varphi)");
621 cNP[3] = new TCanvas("cNP3","",100,300,600,500);
622 cNP[3]->SetFillColor(10);
623 cNP[3]->SetHighLightColor(10);
624 gHistNP[3]->DrawCopy("surf1fb");
625 gPad->SetTheta(30); // default is 30
626 //gPad->SetPhi(130); // default is 30
627 gPad->SetPhi(-60); // default is 30
629 pngName = "CorrelationFunction.Centrality";
630 pngName += centralityArray[gCentrality-1];
631 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
632 pngName += ".NegativePositive.png";
633 //cNP[3]->SaveAs(pngName.Data());
637 histoTitle = "(++) | Centrality: ";
638 histoTitle += centralityArray[gCentrality-1];
640 if((psiMin == -0.5)&&(psiMax == 0.5))
641 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
642 else if((psiMin == 0.5)&&(psiMax == 1.5))
643 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
644 else if((psiMin == 1.5)&&(psiMax == 2.5))
645 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
647 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
649 gHistPP[0] = b->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
650 gHistPP[0]->GetYaxis()->SetTitleOffset(1.5);
651 gHistPP[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
652 gHistPP[0]->SetTitle(histoTitle.Data());
653 cPP[0] = new TCanvas("cPP0","",200,0,600,500);
654 cPP[0]->SetFillColor(10);
655 cPP[0]->SetHighLightColor(10);
656 gHistPP[0]->DrawCopy("surf1fb");
657 gPad->SetTheta(30); // default is 30
658 //gPad->SetPhi(130); // default is 30
659 gPad->SetPhi(-60); // default is 30
661 pngName = "DeltaPhiDeltaEta.Centrality";
662 pngName += centralityArray[gCentrality-1];
663 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
664 pngName += ".PositivePositive.png";
665 //cPP[0]->SaveAs(pngName.Data());
668 histoTitle = "(++) shuffled | Centrality: ";
669 histoTitle += centralityArray[gCentrality-1];
671 if((psiMin == -0.5)&&(psiMax == 0.5))
672 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
673 else if((psiMin == 0.5)&&(psiMax == 1.5))
674 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
675 else if((psiMin == 1.5)&&(psiMax == 2.5))
676 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
678 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
680 gHistPP[1] = bShuffled->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
681 gHistPP[1]->GetYaxis()->SetTitleOffset(1.5);
682 gHistPP[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
683 gHistPP[1]->SetTitle(histoTitle.Data());
684 cPP[1] = new TCanvas("cPP1","",200,100,600,500);
685 cPP[1]->SetFillColor(10);
686 cPP[1]->SetHighLightColor(10);
687 gHistPP[1]->DrawCopy("surf1fb");
688 gPad->SetTheta(30); // default is 30
689 //gPad->SetPhi(130); // default is 30
690 gPad->SetPhi(-60); // default is 30
692 pngName = "DeltaPhiDeltaEtaShuffled.Centrality";
693 pngName += centralityArray[gCentrality-1];
694 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
695 pngName += ".PositivePositive.png";
696 //cPP[1]->SaveAs(pngName.Data());
700 histoTitle = "(++) mixed | Centrality: ";
701 histoTitle += centralityArray[gCentrality-1];
703 if((psiMin == -0.5)&&(psiMax == 0.5))
704 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
705 else if((psiMin == 0.5)&&(psiMax == 1.5))
706 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
707 else if((psiMin == 1.5)&&(psiMax == 2.5))
708 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
710 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
712 gHistPP[2] = bMixed->GetCorrelationFunctionPP(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
713 gHistPP[2]->GetYaxis()->SetTitleOffset(1.5);
714 gHistPP[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
715 gHistPP[2]->SetTitle(histoTitle.Data());
716 cPP[2] = new TCanvas("cPP2","",200,200,600,500);
717 cPP[2]->SetFillColor(10);
718 cPP[2]->SetHighLightColor(10);
719 gHistPP[2]->DrawCopy("surf1fb");
720 gPad->SetTheta(30); // default is 30
721 //gPad->SetPhi(130); // default is 30
722 gPad->SetPhi(-60); // default is 30
724 pngName = "DeltaPhiDeltaEtaMixed.Centrality";
725 pngName += centralityArray[gCentrality-1];
726 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
727 pngName += ".PositivePositive.png";
728 //cPP[2]->SaveAs(pngName.Data());
730 //Correlation function (++)
731 gHistPP[3] = dynamic_cast<TH2D *>(gHistPP[0]->Clone());
732 gHistPP[3]->Divide(gHistPP[2]);
733 gHistPP[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
734 gHistPP[3]->GetZaxis()->SetTitle("C_{++}(#Delta#eta,#Delta#varphi)");
735 cPP[3] = new TCanvas("cPP3","",200,300,600,500);
736 cPP[3]->SetFillColor(10);
737 cPP[3]->SetHighLightColor(10);
738 gHistPP[3]->DrawCopy("surf1fb");
739 gPad->SetTheta(30); // default is 30
740 //gPad->SetPhi(130); // default is 30
741 gPad->SetPhi(-60); // default is 30
743 pngName = "CorrelationFunction.Centrality";
744 pngName += centralityArray[gCentrality-1];
745 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
746 pngName += ".PositivePositive.png";
747 //cPP[3]->SaveAs(pngName.Data());
751 histoTitle = "(--) | Centrality: ";
752 histoTitle += centralityArray[gCentrality-1];
754 if((psiMin == -0.5)&&(psiMax == 0.5))
755 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
756 else if((psiMin == 0.5)&&(psiMax == 1.5))
757 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
758 else if((psiMin == 1.5)&&(psiMax == 2.5))
759 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
761 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
763 gHistNN[0] = b->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
764 gHistNN[0]->GetYaxis()->SetTitleOffset(1.5);
765 gHistNN[0]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
766 gHistNN[0]->SetTitle(histoTitle.Data());
767 cNN[0] = new TCanvas("cNN0","",300,0,600,500);
768 cNN[0]->SetFillColor(10);
769 cNN[0]->SetHighLightColor(10);
770 gHistNN[0]->DrawCopy("surf1fb");
771 gPad->SetTheta(30); // default is 30
772 gPad->SetPhi(-60); // default is 30
773 //gPad->SetPhi(-60); // default is 30
775 pngName = "DeltaPhiDeltaEta.Centrality";
776 pngName += centralityArray[gCentrality-1];
777 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
778 pngName += ".NegativeNegative.png";
779 //cNN[0]->SaveAs(pngName.Data());
782 histoTitle = "(--) shuffled | Centrality: ";
783 histoTitle += centralityArray[gCentrality-1];
785 if((psiMin == -0.5)&&(psiMax == 0.5))
786 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
787 else if((psiMin == 0.5)&&(psiMax == 1.5))
788 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
789 else if((psiMin == 1.5)&&(psiMax == 2.5))
790 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
792 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
794 gHistNN[1] = bShuffled->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
795 gHistNN[1]->GetYaxis()->SetTitleOffset(1.5);
796 gHistNN[1]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
797 gHistNN[1]->SetTitle(histoTitle.Data());
798 cNN[1] = new TCanvas("cNN1","",300,100,600,500);
799 cNN[1]->SetFillColor(10);
800 cNN[1]->SetHighLightColor(10);
801 gHistNN[1]->DrawCopy("surf1fb");
802 gPad->SetTheta(30); // default is 30
803 //gPad->SetPhi(130); // default is 30
804 gPad->SetPhi(-60); // default is 30
806 pngName = "DeltaPhiDeltaEtaShuffled.Centrality";
807 pngName += centralityArray[gCentrality-1];
808 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
809 pngName += ".NegativeNegative.png";
810 //cNN[1]->SaveAs(pngName.Data());
814 histoTitle = "(--) mixed | Centrality: ";
815 histoTitle += centralityArray[gCentrality-1];
817 if((psiMin == -0.5)&&(psiMax == 0.5))
818 histoTitle += " (-7.5^{o} < #varphi - #Psi_{2} < 7.5^{o})";
819 else if((psiMin == 0.5)&&(psiMax == 1.5))
820 histoTitle += " (37.5^{o} < #varphi - #Psi_{2} < 52.5^{o})";
821 else if((psiMin == 1.5)&&(psiMax == 2.5))
822 histoTitle += " (82.5^{o} < #varphi - #Psi_{2} < 97.5^{o})";
824 histoTitle += " (0^{o} < #varphi - #Psi_{2} < 180^{o})";
826 gHistNN[2] = bMixed->GetCorrelationFunctionNN(psiMin,psiMax,ptTriggerMin,ptTriggerMax,ptAssociatedMin,ptAssociatedMax);
827 gHistNN[2]->GetYaxis()->SetTitleOffset(1.5);
828 gHistNN[2]->GetYaxis()->SetTitle("#Delta #varphi (rad)");
829 gHistNN[2]->SetTitle(histoTitle.Data());
830 cNN[2] = new TCanvas("cNN2","",300,200,600,500);
831 cNN[2]->SetFillColor(10);
832 cNN[2]->SetHighLightColor(10);
833 gHistNN[2]->DrawCopy("surf1fb");
834 gPad->SetTheta(30); // default is 30
835 //gPad->SetPhi(130); // default is 30
836 gPad->SetPhi(-60); // default is 30
838 pngName = "DeltaPhiDeltaEtaMixed.Centrality";
839 pngName += centralityArray[gCentrality-1];
840 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
841 pngName += ".NegativeNegative.png";
842 //cNN[2]->SaveAs(pngName.Data());
844 //Correlation function (--)
845 gHistNN[3] = dynamic_cast<TH2D *>(gHistNN[0]->Clone());
846 gHistNN[3]->Divide(gHistNN[2]);
847 gHistNN[3]->GetXaxis()->SetRangeUser(-1.5,1.5);
848 gHistNN[3]->GetZaxis()->SetTitle("C_{--}(#Delta#eta,#Delta#varphi)");
849 cNN[3] = new TCanvas("cNN3","",300,300,600,500);
850 cNN[3]->SetFillColor(10);
851 cNN[3]->SetHighLightColor(10);
852 gHistNN[3]->DrawCopy("surf1fb");
853 gPad->SetTheta(30); // default is 30
854 //gPad->SetPhi(130); // default is 30
855 gPad->SetPhi(-60); // default is 30
857 pngName = "CorrelationFunction.Centrality";
858 pngName += centralityArray[gCentrality-1];
859 pngName += ".Psi"; pngName += psiMin; pngName += "To"; pngName += psiMax;
860 pngName += ".NegativeNegative.png";
861 //cNN[3]->SaveAs(pngName.Data());
864 //Write to output file
865 TString newFileName = "correlationFunction.Centrality";
866 newFileName += gCentrality; newFileName += ".Psi";
867 if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
868 else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
869 else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
870 else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
871 else newFileName += "All.PttFrom";
872 newFileName += Form("%.1f",ptTriggerMin); newFileName += "To";
873 newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
874 newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To";
875 newFileName += Form("%.1f",ptAssociatedMax);
876 newFileName += ".root";
877 TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
878 gHistPN[0]->SetName("gHistPNRaw"); gHistPN[0]->Write();
879 gHistNP[0]->SetName("gHistNPRaw"); gHistNP[0]->Write();
880 gHistPP[0]->SetName("gHistPPRaw"); gHistPP[0]->Write();
881 gHistNN[0]->SetName("gHistNNRaw"); gHistNN[0]->Write();
883 gHistPN[1]->SetName("gHistPNShuffled"); gHistPN[1]->Write();
884 gHistNP[1]->SetName("gHistNPShuffled"); gHistNP[1]->Write();
885 gHistPP[1]->SetName("gHistPPShuffled"); gHistPP[1]->Write();
886 gHistNN[1]->SetName("gHistNNShuffled"); gHistNN[1]->Write();
889 gHistPN[2]->SetName("gHistPNMixed"); gHistPN[2]->Write();
890 gHistNP[2]->SetName("gHistNPMixed"); gHistNP[2]->Write();
891 gHistPP[2]->SetName("gHistPPMixed"); gHistPP[2]->Write();
892 gHistNN[2]->SetName("gHistNNMixed"); gHistNN[2]->Write();
894 gHistPN[3]->SetName("gHistPNCorrelationFunctions"); gHistPN[3]->Write();
895 gHistNP[3]->SetName("gHistNPCorrelationFunctions"); gHistNP[3]->Write();
896 gHistPP[3]->SetName("gHistPPCorrelationFunctions"); gHistPP[3]->Write();
897 gHistNN[3]->SetName("gHistNNCorrelationFunctions"); gHistNN[3]->Write();
902 for(Int_t i = 0; i < 4; i++){
904 if(!listBFShuffled && i == 1) continue;
905 if(!listBFMixed && (i == 2 || i == 3)) continue;
907 if(gHistPP[i]) delete gHistPP[i];
908 if(gHistPN[i]) delete gHistPN[i];
909 if(gHistNP[i]) delete gHistNP[i];
910 if(gHistNN[i]) delete gHistNN[i];
912 if(cPN[i]) delete cPN[i];
913 if(cNP[i]) delete cNP[i];
914 if(cPP[i]) delete cPP[i];
915 if(cNN[i]) delete cNN[i];
941 //____________________________________________________________//
942 void drawCorrelationFunctions(const char* lhcPeriod = "LHC11h",
943 Int_t gTrainID = 208,
944 Int_t gCentrality = 1,
945 Double_t psiMin = -0.5, Double_t psiMax = 3.5,
946 Double_t ptTriggerMin = -1.,
947 Double_t ptTriggerMax = -1.,
948 Double_t ptAssociatedMin = -1.,
949 Double_t ptAssociatedMax = -1.) {
950 //Macro that draws the charge dependent correlation functions
951 //for each centrality bin for the different pT of trigger and
952 //associated particles
953 //Author: Panos.Christakoglou@nikhef.nl
954 TGaxis::SetMaxDigits(3);
957 TString filename = "PbPb/"; filename += lhcPeriod;
958 filename +="/Train"; filename += gTrainID;
959 filename +="/Centrality"; filename += gCentrality;
960 filename += "/correlationFunction.Centrality";
961 filename += gCentrality; filename += ".Psi";
962 if((psiMin == -0.5)&&(psiMax == 0.5)) filename += "InPlane.Ptt";
963 else if((psiMin == 0.5)&&(psiMax == 1.5)) filename += "Intermediate.Ptt";
964 else if((psiMin == 1.5)&&(psiMax == 2.5)) filename += "OutOfPlane.Ptt";
965 else if((psiMin == 2.5)&&(psiMax == 3.5)) filename += "Rest.Ptt";
966 else filename += "All.PttFrom";
967 filename += Form("%.1f",ptTriggerMin); filename += "To";
968 filename += Form("%.1f",ptTriggerMax); filename += "PtaFrom";
969 filename += Form("%.1f",ptAssociatedMin); filename += "To";
970 filename += Form("%.1f",ptAssociatedMax);
974 TFile *f = TFile::Open(filename.Data());
975 if((!f)||(!f->IsOpen())) {
976 Printf("The file %s is not found. Aborting...",filename);
982 TString centralityLatex = "Centrality: ";
983 centralityLatex += centralityArray[gCentrality-1];
984 centralityLatex += "%";
987 if((psiMin == -0.5)&&(psiMax == 0.5))
988 psiLatex = " -7.5^{o} < #varphi - #Psi_{2} < 7.5^{o}";
989 else if((psiMin == 0.5)&&(psiMax == 1.5))
990 psiLatex = " 37.5^{o} < #varphi - #Psi_{2} < 52.5^{o}";
991 else if((psiMin == 1.5)&&(psiMax == 2.5))
992 psiLatex = " 82.5^{o} < #varphi - #Psi_{2} < 97.5^{o}";
994 psiLatex = " 0^{o} < #varphi - #Psi_{2} < 180^{o}";
996 TString pttLatex = Form("%.1f",ptTriggerMin);
997 pttLatex += " < p_{T,trig} < "; pttLatex += Form("%.1f",ptTriggerMax);
998 pttLatex += " GeV/c";
1000 TString ptaLatex = Form("%.1f",ptAssociatedMin);
1001 ptaLatex += " < p_{T,assoc} < "; ptaLatex += Form("%.1f",ptAssociatedMax);
1002 ptaLatex += " GeV/c";
1004 TLatex *latexInfo1 = new TLatex();
1005 latexInfo1->SetNDC();
1006 latexInfo1->SetTextSize(0.045);
1007 latexInfo1->SetTextColor(1);
1011 //============================================================//
1012 //Get the +- correlation function
1013 TH2D *gHistPN = dynamic_cast<TH2D *>(f->Get("gHistPNCorrelationFunctions"));
1014 gHistPN->SetStats(kFALSE);
1015 gHistPN->SetTitle("");
1016 gHistPN->GetXaxis()->SetRangeUser(-1.45,1.45);
1017 gHistPN->GetXaxis()->CenterTitle();
1018 gHistPN->GetXaxis()->SetTitleOffset(1.2);
1019 gHistPN->GetYaxis()->CenterTitle();
1020 gHistPN->GetYaxis()->SetTitleOffset(1.2);
1021 gHistPN->GetZaxis()->SetTitleOffset(1.2);
1022 TCanvas *cPN = new TCanvas("cPN","",0,0,600,500);
1023 cPN->SetFillColor(10); cPN->SetHighLightColor(10);
1024 cPN->SetLeftMargin(0.15);
1025 gHistPN->DrawCopy("surf1fb");
1026 gPad->SetTheta(30); // default is 30
1027 gPad->SetPhi(-60); // default is 30
1030 latexInfo1->DrawLatex(0.44,0.88,centralityLatex.Data());
1031 //latexInfo1->DrawLatex(0.44,0.82,psiLatex.Data());
1032 latexInfo1->DrawLatex(0.44,0.82,pttLatex.Data());
1033 latexInfo1->DrawLatex(0.44,0.76,ptaLatex.Data());
1035 pngName = "CorrelationFunction.Centrality";
1036 pngName += centralityArray[gCentrality-1];
1038 if((psiMin == -0.5)&&(psiMax == 0.5)) pngName += "InPlane.Ptt";
1039 else if((psiMin == 0.5)&&(psiMax == 1.5)) pngName += "Intermediate.Ptt";
1040 else if((psiMin == 1.5)&&(psiMax == 2.5)) pngName += "OutOfPlane.Ptt";
1041 else if((psiMin == 2.5)&&(psiMax == 3.5)) pngName += "Rest.Ptt";
1042 else pngName += "All.PttFrom";
1043 pngName += Form("%.1f",ptTriggerMin); pngName += "To";
1044 pngName += Form("%.1f",ptTriggerMax); pngName += "PtaFrom";
1045 pngName += Form("%.1f",ptAssociatedMin); pngName += "To";
1046 pngName += Form("%.1f",ptAssociatedMax);
1047 pngName += ".PositiveNegative.png";
1048 cPN->SaveAs(pngName.Data());
1049 fitCorrelationFunctions(gCentrality, psiMin, psiMax,
1050 ptTriggerMin,ptTriggerMax,
1051 ptAssociatedMin, ptAssociatedMax,gHistPN);
1052 //============================================================//
1053 //Get the -+ correlation function
1054 TH2D *gHistNP = dynamic_cast<TH2D *>(f->Get("gHistNPCorrelationFunctions"));
1055 gHistNP->SetStats(kFALSE);
1056 gHistNP->SetTitle("");
1057 gHistNP->GetXaxis()->SetRangeUser(-1.45,1.45);
1058 gHistNP->GetXaxis()->CenterTitle();
1059 gHistNP->GetXaxis()->SetTitleOffset(1.2);
1060 gHistNP->GetYaxis()->CenterTitle();
1061 gHistNP->GetYaxis()->SetTitleOffset(1.2);
1062 gHistNP->GetZaxis()->SetTitleOffset(1.2);
1063 TCanvas *cNP = new TCanvas("cNP","",50,50,600,500);
1064 cNP->SetFillColor(10); cNP->SetHighLightColor(10);
1065 cNP->SetLeftMargin(0.15);
1066 gHistNP->DrawCopy("surf1fb");
1067 gPad->SetTheta(30); // default is 30
1068 gPad->SetPhi(-60); // default is 30
1071 latexInfo1->DrawLatex(0.44,0.88,centralityLatex.Data());
1072 //latexInfo1->DrawLatex(0.44,0.82,psiLatex.Data());
1073 latexInfo1->DrawLatex(0.44,0.82,pttLatex.Data());
1074 latexInfo1->DrawLatex(0.44,0.76,ptaLatex.Data());
1076 pngName = "CorrelationFunction.Centrality";
1077 pngName += centralityArray[gCentrality-1];
1079 if((psiMin == -0.5)&&(psiMax == 0.5)) pngName += "InPlane.Ptt";
1080 else if((psiMin == 0.5)&&(psiMax == 1.5)) pngName += "Intermediate.Ptt";
1081 else if((psiMin == 1.5)&&(psiMax == 2.5)) pngName += "OutOfPlane.Ptt";
1082 else if((psiMin == 2.5)&&(psiMax == 3.5)) pngName += "Rest.Ptt";
1083 else pngName += "All.PttFrom";
1084 pngName += Form("%.1f",ptTriggerMin); pngName += "To";
1085 pngName += Form("%.1f",ptTriggerMax); pngName += "PtaFrom";
1086 pngName += Form("%.1f",ptAssociatedMin); pngName += "To";
1087 pngName += Form("%.1f",ptAssociatedMax);
1088 pngName += ".NegativePositive.png";
1089 cNP->SaveAs(pngName.Data());
1091 fitCorrelationFunctions(gCentrality, psiMin, psiMax,
1092 ptTriggerMin,ptTriggerMax,
1093 ptAssociatedMin, ptAssociatedMax,gHistNP);
1094 //============================================================//
1095 //Get the ++ correlation function
1096 TH2D *gHistPP = dynamic_cast<TH2D *>(f->Get("gHistPPCorrelationFunctions"));
1097 gHistPP->SetStats(kFALSE);
1098 gHistPP->SetTitle("");
1099 gHistPP->GetXaxis()->SetRangeUser(-1.45,1.45);
1100 gHistPP->GetXaxis()->CenterTitle();
1101 gHistPP->GetXaxis()->SetTitleOffset(1.2);
1102 gHistPP->GetYaxis()->CenterTitle();
1103 gHistPP->GetYaxis()->SetTitleOffset(1.2);
1104 gHistPP->GetZaxis()->SetTitleOffset(1.2);
1105 TCanvas *cPP = new TCanvas("cPP","",100,100,600,500);
1106 cPP->SetFillColor(10); cPP->SetHighLightColor(10);
1107 cPP->SetLeftMargin(0.15);
1108 gHistPP->DrawCopy("surf1fb");
1109 gPad->SetTheta(30); // default is 30
1110 gPad->SetPhi(-60); // default is 30
1113 latexInfo1->DrawLatex(0.44,0.88,centralityLatex.Data());
1114 //latexInfo1->DrawLatex(0.44,0.82,psiLatex.Data());
1115 latexInfo1->DrawLatex(0.44,0.82,pttLatex.Data());
1116 latexInfo1->DrawLatex(0.44,0.76,ptaLatex.Data());
1118 pngName = "CorrelationFunction.Centrality";
1119 pngName += centralityArray[gCentrality-1];
1121 if((psiMin == -0.5)&&(psiMax == 0.5)) pngName += "InPlane.Ptt";
1122 else if((psiMin == 0.5)&&(psiMax == 1.5)) pngName += "Intermediate.Ptt";
1123 else if((psiMin == 1.5)&&(psiMax == 2.5)) pngName += "OutOfPlane.Ptt";
1124 else if((psiMin == 2.5)&&(psiMax == 3.5)) pngName += "Rest.Ptt";
1125 else pngName += "All.PttFrom";
1126 pngName += Form("%.1f",ptTriggerMin); pngName += "To";
1127 pngName += Form("%.1f",ptTriggerMax); pngName += "PtaFrom";
1128 pngName += Form("%.1f",ptAssociatedMin); pngName += "To";
1129 pngName += Form("%.1f",ptAssociatedMax);
1130 pngName += ".PositivePositive.png";
1131 cPP->SaveAs(pngName.Data());
1133 fitCorrelationFunctions(gCentrality, psiMin, psiMax,
1134 ptTriggerMin,ptTriggerMax,
1135 ptAssociatedMin, ptAssociatedMax,gHistPP);
1136 //============================================================//
1137 //Get the -- correlation function
1138 TH2D *gHistNN = dynamic_cast<TH2D *>(f->Get("gHistNNCorrelationFunctions"));
1139 gHistNN->SetStats(kFALSE);
1140 gHistNN->SetTitle("");
1141 gHistNN->GetXaxis()->SetRangeUser(-1.45,1.45);
1142 gHistNN->GetXaxis()->CenterTitle();
1143 gHistNN->GetXaxis()->SetTitleOffset(1.2);
1144 gHistNN->GetYaxis()->CenterTitle();
1145 gHistNN->GetYaxis()->SetTitleOffset(1.2);
1146 gHistNN->GetZaxis()->SetTitleOffset(1.2);
1147 TCanvas *cNN = new TCanvas("cNN","",150,150,600,500);
1148 cNN->SetFillColor(10); cNN->SetHighLightColor(10);
1149 cNN->SetLeftMargin(0.15);
1150 gHistNN->DrawCopy("surf1fb");
1151 gPad->SetTheta(30); // default is 30
1152 gPad->SetPhi(-60); // default is 30
1155 latexInfo1->DrawLatex(0.44,0.88,centralityLatex.Data());
1156 //latexInfo1->DrawLatex(0.44,0.82,psiLatex.Data());
1157 latexInfo1->DrawLatex(0.44,0.82,pttLatex.Data());
1158 latexInfo1->DrawLatex(0.44,0.76,ptaLatex.Data());
1160 pngName = "CorrelationFunction.Centrality";
1161 pngName += centralityArray[gCentrality-1];
1163 if((psiMin == -0.5)&&(psiMax == 0.5)) pngName += "InPlane.Ptt";
1164 else if((psiMin == 0.5)&&(psiMax == 1.5)) pngName += "Intermediate.Ptt";
1165 else if((psiMin == 1.5)&&(psiMax == 2.5)) pngName += "OutOfPlane.Ptt";
1166 else if((psiMin == 2.5)&&(psiMax == 3.5)) pngName += "Rest.Ptt";
1167 else pngName += "All.PttFrom";
1168 pngName += Form("%.1f",ptTriggerMin); pngName += "To";
1169 pngName += Form("%.1f",ptTriggerMax); pngName += "PtaFrom";
1170 pngName += Form("%.1f",ptAssociatedMin); pngName += "To";
1171 pngName += Form("%.1f",ptAssociatedMax);
1172 pngName += ".NegativeNegative.png";
1173 cNN->SaveAs(pngName.Data());
1175 fitCorrelationFunctions(gCentrality, psiMin, psiMax,
1176 ptTriggerMin,ptTriggerMax,
1177 ptAssociatedMin, ptAssociatedMax,gHistNN);
1180 //____________________________________________________________//
1181 void fitCorrelationFunctions(Int_t gCentrality = 1,
1182 Double_t psiMin = -0.5, Double_t psiMax = 3.5,
1183 Double_t ptTriggerMin = -1.,
1184 Double_t ptTriggerMax = -1.,
1185 Double_t ptAssociatedMin = -1.,
1186 Double_t ptAssociatedMax = -1.,
1189 cout<<"FITTING FUNCTION"<<endl;
1191 //near side peak: [1]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[2]),2)+0.5*TMath::Power((y/[3]),2)),[4]))
1192 //away side ridge: [5]*TMath::Exp(-TMath::Power((0.5*TMath::Power(((y-TMath::Pi())/[6]),2)),[7]))
1193 //longitudinal ridge: [8]*TMath::Exp(-TMath::Power((0.5*TMath::Power((x/[9]),2)),[10]))
1194 //wing structures: [11]*TMath::Power(x,2)
1195 //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))
1196 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.);
1197 gFitFunction->SetName("gFitFunction");
1199 gFitFunction->SetParName(0,"N1"); gFitFunction->SetParameter(0,1.0);//gFitFunction->SetParLimits(0,0.0,100);
1201 gFitFunction->SetParName(1,"N_{near side}"); gFitFunction->SetParameter(1,0.3);//gFitFunction->SetParLimits(1,0.0,100);//gFitFunction->FixParameter(1,0.0);
1202 gFitFunction->SetParName(2,"Sigma_{near side}(delta eta)"); gFitFunction->SetParameter(2,0.3);gFitFunction->SetParLimits(2,0.01,0.7);//gFitFunction->FixParameter(2,0.0);
1203 gFitFunction->SetParName(3,"Sigma_{near side}(delta phi)"); gFitFunction->SetParameter(3,0.3);gFitFunction->SetParLimits(3,0.01,1.7);//gFitFunction->FixParameter(3,0.0);
1204 gFitFunction->SetParName(4,"Exponent_{near side}"); gFitFunction->SetParameter(4,1.1);//gFitFunction->SetParLimits(4,0.1,10.0);
1205 gFitFunction->FixParameter(4,1.0);
1207 gFitFunction->SetParName(5,"N_{away side}"); gFitFunction->SetParameter(5,1.0);//gFitFunction->SetParLimits(5,0.0,100);gFitFunction->FixParameter(5,0.0);
1208 gFitFunction->SetParName(6,"Sigma_{away side}(delta phi)"); gFitFunction->SetParameter(6,0.5);//gFitFunction->SetParLimits(6,0.01,100.0);gFitFunction->FixParameter(6,0.0);
1209 gFitFunction->SetParName(7,"Exponent_{away side}"); gFitFunction->SetParameter(7,1.0);//gFitFunction->SetParLimits(7,0.1,10.0);
1210 gFitFunction->FixParameter(7,1.0);
1211 //longitudinal ridge
1212 gFitFunction->SetParName(8,"N_{long. ridge}"); gFitFunction->SetParameter(8,0.05);//gFitFunction->FixParameter(8,1.0);
1213 gFitFunction->SetParName(9,"Sigma_{long. ridge}(delta eta)"); gFitFunction->SetParameter(9,0.6);gFitFunction->SetParLimits(9,0.1,10.0);//gFitFunction->FixParameter(9,0.0);
1214 gFitFunction->SetParName(10,"Exponent_{long. ridge}"); gFitFunction->SetParameter(10,1.0);gFitFunction->FixParameter(10,1.0);
1216 gFitFunction->SetParName(11,"N_{wing}"); gFitFunction->SetParameter(11,0.01);gFitFunction->FixParameter(11,0.0);
1218 gFitFunction->SetParName(12,"N_{flow}"); gFitFunction->SetParameter(12,0.2);//gFitFunction->SetParLimits(12,0.0,10.0);//gFitFunction->FixParameter(12,0.0);
1219 gFitFunction->SetParName(13,"V1"); gFitFunction->SetParameter(13,0.005);//gFitFunction->SetParLimits(13,0.0,10.0);//gFitFunction->FixParameter(13,0.0);
1220 gFitFunction->SetParName(14,"V2"); gFitFunction->SetParameter(14,0.1);//gFitFunction->SetParLimits(14,0.0,10.0);//gFitFunction->FixParameter(14,0.0);
1221 gFitFunction->SetParName(15,"V3"); gFitFunction->SetParameter(15,0.05);//gFitFunction->SetParLimits(15,0.0,10.0);//gFitFunction->FixParameter(15,0.0);
1222 gFitFunction->SetParName(16,"V4"); gFitFunction->SetParameter(16,0.005);//gFitFunction->SetParLimits(16,0.0,10.0);//gFitFunction->FixParameter(16,0.0);
1223 gFitFunction->SetParName(17,"Offset"); gFitFunction->SetParameter(17,0.005);gFitFunction->SetParLimits(16,0.0,0.7);//gFitFunction->FixParameter(17,0.0);
1225 //Fitting the correlation function
1226 gHist->Fit("gFitFunction","nm");
1228 //Cloning the histogram
1229 TString histoName = gHist->GetName(); histoName += "Fit";
1230 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());
1231 TH2D *gHistResidual = dynamic_cast<TH2D *>(gHist->Clone());
1232 gHistResidual->SetName("gHistResidual");
1233 gHistResidual->Sumw2();
1235 for(Int_t iBinDeltaEta = 1; iBinDeltaEta <= gHist->GetNbinsX(); iBinDeltaEta++) {
1236 for(Int_t iBinDeltaPhi = 1; iBinDeltaPhi <= gHist->GetNbinsY(); iBinDeltaPhi++) {
1237 gHistFit->SetBinContent(iBinDeltaEta,iBinDeltaPhi,gFitFunction->Eval(gHist->GetXaxis()->GetBinCenter(iBinDeltaEta),gHist->GetYaxis()->GetBinCenter(iBinDeltaPhi)));
1240 gHistResidual->Add(gHistFit,-1);
1242 //Write to output file
1243 TString newFileName = "correlationFunctionFit";
1244 if(histoName.Contains("PN")) newFileName += "PN";
1245 else if(histoName.Contains("NP")) newFileName += "NP";
1246 else if(histoName.Contains("PP")) newFileName += "PP";
1247 else if(histoName.Contains("NN")) newFileName += "NN";
1248 newFileName += ".Centrality";
1249 newFileName += gCentrality; newFileName += ".Psi";
1250 if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
1251 else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
1252 else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
1253 else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
1254 else newFileName += "All.PttFrom";
1255 newFileName += Form("%.1f",ptTriggerMin); newFileName += "To";
1256 newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
1257 newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To";
1258 newFileName += Form("%.1f",ptAssociatedMax);
1259 newFileName += ".root";
1260 TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
1263 gHistResidual->Write();
1264 gFitFunction->Write();
1272 // //____________________________________________________________//
1273 // void fitCorrelationFunctions(Int_t gCentrality = 1,
1274 // Double_t psiMin = -0.5, Double_t psiMax = 3.5,
1275 // Double_t ptTriggerMin = -1.,
1276 // Double_t ptTriggerMax = -1.,
1277 // Double_t ptAssociatedMin = -1.,
1278 // Double_t ptAssociatedMax = -1.,
1281 // cout<<"FITTING FUNCTION (HOUSTON)"<<endl;
1284 // //x axis = delta_eta
1285 // //y axis = delta_phi
1286 // // [9]*exp(-1*pow(((x/[10])^2 + (y/[10])^2),0.5)) Hyper expo
1287 // TF2 *fit1 = new TF2("fit1","[0] + [1]*cos(y) + [2]*cos(2*y) + [3]*cos(3*y) + [4]*cos(4*y) +[5]*cos(5*y)+ [6]*exp(-0.5*pow(((x/[7])^2 + (y/[8])^2),[11])) + [6]*exp(-0.5*pow(((x/[7])^2 + ((y-6.283)/[8])^2),[11]))+ [9]*exp(-1*((x/[10])^2 + (y/[10])^2)) ",-2.0,2.0,-TMath::Pi()/2.,3.*TMath::Pi()/2.);
1291 // Double_t Parameters[] = {0.0,0.0,0.0,0.0,0.0,0.0,1.0,0.3,0.3,1.0,0.1,0.1};
1293 // fit1->SetParameters(Parameters); // input pars from macro arguments
1295 // fit1->SetParName(0,"offset");
1296 // fit1->SetParName(1,"v1");
1297 // fit1->SetParName(2,"v2");
1298 // fit1->SetParName(3,"v3");
1299 // fit1->SetParName(4,"v4");
1300 // fit1->SetParName(5,"v5");
1301 // fit1->SetParName(6,"Ridgeamp");
1302 // fit1->SetParName(7,"Ridgesigx");
1303 // fit1->SetParName(8,"Ridgesigy");
1304 // fit1->SetParName(9,"Expoamp");
1305 // fit1->SetParName(10,"Exposig");
1306 // fit1->SetParName(11,"Gausspara");
1309 // //Fit Parameter Ranges
1310 // fit1->SetParLimits(0,-2.0,2.0); //offset
1311 // fit1->SetParLimits(1,-1.0,0.1); //v1
1312 // fit1->SetParLimits(2,-1.6,0.9); //v2
1313 // fit1->SetParLimits(3,0.0,0.5); //v3
1314 // fit1->SetParLimits(4,0.0,0.9); //v4
1315 // fit1->SetParLimits(5,0.0,0.9); //v5
1316 // fit1->SetParLimits(6,0.0,1.5); //Ridgeamp
1317 // fit1->SetParLimits(7,0.1,3.0); //Ridgesigx
1318 // fit1->SetParLimits(8,0.1,2.0); //Ridgesigy
1319 // fit1->SetParLimits(9,0.0,6.0); //Expoamp
1320 // fit1->SetParLimits(10,0.05,0.5); //Exposig
1321 // fit1->SetParLimits(11,0.0,2.0); //Gausspara
1323 // //Fitting the correlation function
1324 // gHist->Fit("fit1","nm");
1326 // //Cloning the histogram
1327 // TString histoName = gHist->GetName(); histoName += "Fit";
1328 // 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());
1329 // TH2D *gHistResidual = dynamic_cast<TH2D *>(gHist->Clone());
1330 // gHistResidual->SetName("gHistResidual");
1331 // gHistResidual->Sumw2();
1333 // for(Int_t iBinDeltaEta = 1; iBinDeltaEta <= gHist->GetNbinsX(); iBinDeltaEta++) {
1334 // for(Int_t iBinDeltaPhi = 1; iBinDeltaPhi <= gHist->GetNbinsY(); iBinDeltaPhi++) {
1335 // gHistFit->SetBinContent(iBinDeltaEta,iBinDeltaPhi,fit1->Eval(gHist->GetXaxis()->GetBinCenter(iBinDeltaEta),gHist->GetYaxis()->GetBinCenter(iBinDeltaPhi)));
1338 // gHistResidual->Add(gHistFit,-1);
1340 // //Write to output file
1341 // TString newFileName = "correlationFunctionFit";
1342 // if(histoName.Contains("PN")) newFileName += "PN";
1343 // else if(histoName.Contains("NP")) newFileName += "NP";
1344 // else if(histoName.Contains("PP")) newFileName += "PP";
1345 // else if(histoName.Contains("NN")) newFileName += "NN";
1346 // newFileName += ".Centrality";
1347 // newFileName += gCentrality; newFileName += ".Psi";
1348 // if((psiMin == -0.5)&&(psiMax == 0.5)) newFileName += "InPlane.Ptt";
1349 // else if((psiMin == 0.5)&&(psiMax == 1.5)) newFileName += "Intermediate.Ptt";
1350 // else if((psiMin == 1.5)&&(psiMax == 2.5)) newFileName += "OutOfPlane.Ptt";
1351 // else if((psiMin == 2.5)&&(psiMax == 3.5)) newFileName += "Rest.PttFrom";
1352 // else newFileName += "All.PttFrom";
1353 // newFileName += Form("%.1f",ptTriggerMin); newFileName += "To";
1354 // newFileName += Form("%.1f",ptTriggerMax); newFileName += "PtaFrom";
1355 // newFileName += Form("%.1f",ptAssociatedMin); newFileName += "To";
1356 // newFileName += Form("%.1f",ptAssociatedMax);
1357 // newFileName += ".root";
1358 // TFile *newFile = TFile::Open(newFileName.Data(),"recreate");
1360 // gHistFit->Write();
1361 // gHistResidual->Write();
1363 // newFile->Close();