/*************************************************************** processFemtoQA.C Post Processing of Femto QA task in Analysis QA train Author: Maciej Szymanski, maszyman@cern.ch ***************************************************************/ enum collidingSystem { PbPb, pPb, pp }; Double_t calculateNormalizationFactor(TH1D *num,TH1D *den, Double_t qlo=0.3,Double_t qhi=0.4) { Double_t binlo = num->GetXaxis()->FindFixBin(qlo); Double_t binhi = num->GetXaxis()->FindFixBin(qhi); Double_t integralNum = num->Integral(binlo, binhi); Double_t integralDen = den->Integral(binlo, binhi); return integralDen / integralNum; } void processFemtoQA(const char *filePath = "AnalysisResults.root", const char *listname = "femtolist", const char *suffix = "png", enum collidingSystem system = PbPb) { TFile *_file = new TFile(filePath,"read"); TList* _femtolist = (TList*)_file->Get(Form("PWG2FEMTO/%s",listname)); // 1D pion correlation function low kT TH1D* numCFlowkT = (TH1D*)_femtolist->FindObject("NumcqinvpimtpcM0kT0"); TH1D* denCFlowkT = (TH1D*)_femtolist->FindObject("DencqinvpimtpcM0kT0"); Double_t norm = calculateNormalizationFactor(numCFlowkT,denCFlowkT,0.4,0.45 ); numCFlowkT->Divide(denCFlowkT); numCFlowkT->Scale(norm); numCFlowkT->SetXTitle("q_{inv} (GeV/c)"); numCFlowkT->SetYTitle("C(q_{inv})"); numCFlowkT->GetXaxis()->SetRangeUser(0,0.5); numCFlowkT->GetYaxis()->SetRangeUser(0.5,2.5); // 1D pion correlation function high kT TH1D* numCFhighkT = (TH1D*)_femtolist->FindObject("NumcqinvpimtpcM0kT3"); TH1D* denCFhighkt = (TH1D*)_femtolist->FindObject("DencqinvpimtpcM0kT3"); Double_t norm = calculateNormalizationFactor(numCFhighkT,denCFhighkt,0.4,0.45 ); numCFhighkT->Divide(denCFhighkt); numCFhighkT->Scale(norm); numCFhighkT->SetXTitle("q_{inv} (GeV/c)"); numCFhighkT->SetYTitle("C(q_{inv})"); numCFhighkT->SetTitle(Form()); numCFhighkT->GetXaxis()->SetRangeUser(0,0.5); numCFhighkT->GetYaxis()->SetRangeUser(0.5,2.5); // delta eta - delta phi* low kT TH2D* numPhiEtalowkT = (TH2D*)_femtolist->FindObject("NumRadDPhistarEtapimtpcM0kT0"); TH2D* denPhiEtalowkT = (TH2D*)_femtolist->FindObject("DenRadDPhistarEtapimtpcM0kT0"); numPhiEtalowkT->Divide(denPhiEtalowkT); numPhiEtalowkT->SetXTitle("#Delta #phi*"); numPhiEtalowkT->SetYTitle("#Delta #eta"); numPhiEtalowkT->SetTitle(Form()); // delta eta - delta phi* high kT TH2D* numPhiEtahighkT = (TH2D*)_femtolist->FindObject("NumRadDPhistarEtapimtpcM0kT3"); TH2D* denPhiEtahighkt = (TH2D*)_femtolist->FindObject("DenRadDPhistarEtapimtpcM0kT3"); numPhiEtahighkT->Divide(denPhiEtahighkt); numPhiEtahighkT->SetXTitle("#Delta #phi*"); numPhiEtahighkT->SetYTitle("#Delta #eta"); numPhiEtahighkT->SetTitle(Form()); // qinv vs. separation at TPC entrance low kT TH2D* numQinvEtpclowkT = (TH2D*)_femtolist->FindObject("NumDTPCPhistarEtapimtpcM0kT0"); TH2D* denQinvEtpclowkT = (TH2D*)_femtolist->FindObject("DenDTPCPhistarEtapimtpcM0kT0"); numQinvEtpclowkT->Divide(denQinvEtpclowkT); numQinvEtpclowkT->SetXTitle("q_{inv} (GeV/c)"); numQinvEtpclowkT->SetYTitle("separation at TPC entrance"); numQinvEtpclowkT->SetTitle(Form()); // qinv vs. separation at TPC entrance high kT TH2D* numQinvEtpchighkT = (TH2D*)_femtolist->FindObject("NumDTPCPhistarEtapimtpcM0kT3"); TH2D* denQinvEtpchighkt = (TH2D*)_femtolist->FindObject("DenDTPCPhistarEtapimtpcM0kT3"); numQinvEtpchighkT->Divide(denQinvEtpchighkt); numQinvEtpchighkT->SetXTitle("q_{inv} (GeV/c)"); numQinvEtpchighkT->SetYTitle("separation at TPC entrance"); numQinvEtpchighkT->SetTitle(Form()); if ( system == PbPb ) { numCFlowkT->SetTitle("#pi^{-}#pi^{-} 0-10%, 0.2 < k_{T} < 0.3 GeV/c"); numCFhighkT->SetTitle("#pi^{-}#pi^{-} 0-10%, 0.6 < k_{T} < 0.7 GeV/c"); } else if ( system == pPb ) { numCFlowkT->SetTitle("#pi^{-}#pi^{-} 0-20%, 0.2 < k_{T} < 0.3 GeV/c"); numCFhighkT->SetTitle("#pi^{-}#pi^{-} 0-20%, 0.6 < k_{T} < 0.7 GeV/c"); } else if ( system == pp ) { numCFlowkT->SetTitle("#pi^{-}#pi^{-} N_{ch} 50-150, 0.2 < k_{T} < 0.3 GeV/c"); numCFhighkT->SetTitle("#pi^{-}#pi^{-} N_{ch} 50-150, 0.6 < k_{T} < 0.7 GeV/c"); } gStyle->SetOptStat(0); TCanvas* _can = new TCanvas("Femto QA","Femto QA"); _can->Divide(2,3); _can->cd(1); numCFlowkT->Draw(); _can->cd(2); numCFhighkT->Draw(); _can->cd(3); numPhiEtalowkT->Draw("colz"); _can->cd(4); numPhiEtahighkT->Draw("colz"); _can->cd(5); numQinvEtpclowkT->Draw("colz"); _can->cd(6); numQinvEtpchighkT->Draw("colz"); _can->SaveAs(Form("fig_cf_FemtoQA.%s",suffix)); _file->Close(); delete _file; delete _can; }