]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGPP/analysisQA/processFemtoQA.C
New macro for Femto QA: sjena
[u/mrichter/AliRoot.git] / PWGPP / analysisQA / processFemtoQA.C
diff --git a/PWGPP/analysisQA/processFemtoQA.C b/PWGPP/analysisQA/processFemtoQA.C
new file mode 100644 (file)
index 0000000..860c57f
--- /dev/null
@@ -0,0 +1,120 @@
+/***************************************************************
+ 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;
+}