--- /dev/null
+/***************************************************************
+ 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;
+}