]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGPP/analysisQA/processJpsi2eeQAplots.C
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / PWGPP / analysisQA / processJpsi2eeQAplots.C
1 // Author: Ionut-Cristian Arsene
2 // Contacts: iarsene@cern.ch
3 // Make QA pictures for the J/psi->ee analysis
4
5
6
7 // modified by sjena 
8 // -- to add it in automatic script
9 // -- changes Naming conventions
10 // -- saving objects instead of canvas
11
12
13 //______________________________________________________________________________
14 void processJpsi2eeQAplots(const Char_t* filename="jpsi_Default.root", 
15                            TString suffix = "eps",
16                            const Char_t* outfile="Jpsi2eeQAplots_output.root") {
17   //
18  
19   //  
20   TFile* file = TFile::Open(filename);
21   
22   // event wise histograms 
23   TH1F* zDistrib = (TH1F*)GetHistogram(file, "default", "Event", "Z");
24   
25   // electron candidate histograms
26   TH2F* tpcDedx = (TH2F*)GetHistogram(file, "default", "Track_ev1+", "P_InnerParam_TPC_signal");
27   tpcDedx->Add((TH2F*)GetHistogram(file, "default", "Track_ev1-", "P_InnerParam_TPC_signal"));
28   TH2F* tpcNsigmaEle = (TH2F*)GetHistogram(file, "default", "Track_ev1+", "P_InnerParam_TPC_nSigma_Electrons");
29   tpcNsigmaEle->Add((TH2F*)GetHistogram(file, "default", "Track_ev1-", "P_InnerParam_TPC_nSigma_Electrons"));
30   
31   // pair candidate histograms
32   TH1F* invmass_pp = (TH1F*)GetHistogram(file, "default", "Pair_ev1+_ev1+", "pM");
33   TH1F* invmass_pm = (TH1F*)GetHistogram(file, "default", "Pair_ev1+_ev1-", "pM");
34   TH1F* invmass_mm = (TH1F*)GetHistogram(file, "default", "Pair_ev1-_ev1-", "pM");
35     
36   // draw stuff
37   TLatex* latex=new TLatex();
38   latex->SetNDC();
39   latex->SetTextSize(0.04);
40   latex->SetTextFont(42);
41   TCanvas* c1=new TCanvas("fig_dq_tpcDedx", "");
42   if(tpcDedx) {
43     tpcDedx->SetStats(kFALSE);
44     tpcDedx->GetXaxis()->SetRangeUser(0.0,10.0);
45     tpcDedx->GetYaxis()->SetRangeUser(40.0,120.0);
46     tpcDedx->SetTitle("");
47     tpcDedx->Draw("colz");
48     latex->DrawLatex(0.12, 0.83, "J/#psi electron candidates");
49   }
50   
51   TCanvas* c2=new TCanvas("fig_dq_tpcNsigmaElectron", "");
52   if(tpcNsigmaEle) {
53     tpcNsigmaEle->SetStats(kFALSE);
54     tpcNsigmaEle->GetYaxis()->SetRangeUser(-5.0,5.0);
55     tpcNsigmaEle->GetXaxis()->SetRangeUser(0.0,10.0);
56     tpcNsigmaEle->SetTitle("");
57     tpcNsigmaEle->Draw("colz");
58     latex->DrawLatex(0.12, 0.83, "J/#psi electron candidates");
59   }
60   
61   TCanvas* c3=new TCanvas("fig_dq_eeInvMass", "");
62   if(invmass_pm) {
63     invmass_pm->SetStats(kFALSE);
64     invmass_pm->SetTitle("");
65     invmass_pm->SetLineColor(1);
66     invmass_pm->GetYaxis()->SetTitle(Form("Pairs per %.0f MeV/c^{2}", 1000.0*invmass_pm->GetXaxis()->GetBinWidth(1)));
67     invmass_pm->GetXaxis()->SetTitle("m_{e^{+}e^{-}} (GeV/c^{2})");
68     invmass_pm->Draw();
69   }
70   if(invmass_pp) {
71     invmass_pp->SetLineColor(2);
72     invmass_pp->Draw((invmass_pm ? "same" : ""));
73   }
74   if(invmass_mm) {
75     invmass_mm->SetLineColor(4);
76     invmass_mm->Draw((invmass_mm ? "same" : ""));
77   }
78   if(invmass_pm || invmass_mm || invmass_pp)
79     latex->DrawLatex(0.12, 0.85, "J/#psi candidates");
80   if(invmass_pm && zDistrib && zDistrib->Integral()>1.);
81     latex->DrawLatex(0.12, 0.80, Form("candidates / event = %.3f", invmass_pm->Integral() / zDistrib->Integral()));
82   TLegend* legend=new TLegend(0.7,0.7,0.89,0.89);
83   legend->SetTextFont(42);
84   legend->SetBorderSize(0);
85   legend->SetFillColor(0);
86   if(invmass_pm) legend->AddEntry(invmass_pm, "+- pairs", "l");
87   if(invmass_pp) legend->AddEntry(invmass_pp, "++ pairs", "l");
88   if(invmass_mm) legend->AddEntry(invmass_mm, "-- pairs", "l");
89   if(invmass_mm || invmass_pm || invmass_pp) legend->Draw();
90   
91   c1->SaveAs(Form("fig_dq_tpcDedx.%s",suffix.Data()));
92   c2->SaveAs(Form("fig_dq_tpcNsigmaElectron.%s",suffix.Data()));
93   c3->SaveAs(Form("fig_dq_eeInvMass.%s",suffix.Data()));
94
95
96   //  TFile* save=new TFile(outputName, "RECREATE");
97   // c1->Write();
98   // c2->Write();
99   // c3->Write();
100   // save->Close();
101
102
103   // Added by jsatya
104
105   TFile *fout = TFile::Open(outfile,"UPDATE");
106   fout->ls();
107   
108   TDirectoryFile *cdd = NULL;
109   cdd = (TDirectoryFile*)fout->Get("DQ");
110   if(!cdd) {
111     Printf("Warning: DQ <dir> doesn't exist, creating a new one");
112     cdd = (TDirectoryFile*)fout->mkdir("DQ");
113   }
114   cdd->cd();
115   cdd->ls();
116
117
118
119   if (invmass_pp){
120     invmass_pp->SetName(Form("fig_dq_%s_pp", invmass_pp->GetName()));
121     invmass_pp->Write();
122   }
123   
124   if (invmass_pm){
125     invmass_pm->SetName(Form("fig_dq_%s_pm", invmass_pm->GetName()));
126     invmass_pm->Write();
127   }
128   if (invmass_mm){
129     invmass_mm->SetName(Form("fig_dq_%s_mm", invmass_mm->GetName()));
130     invmass_mm->Write();
131   }
132   
133   tpcNsigmaEle->SetName(Form("fig_dq_%s", tpcNsigmaEle->GetName()));
134   tpcNsigmaEle->Write();
135   
136   tpcDedx->SetName(Form("fig_dq_%s", tpcDedx->GetName()));
137   tpcDedx->Write();
138   
139   fout->cd();
140   fout->Close();
141   
142 }
143
144
145 //______________________________________________________________________________
146 TObject* GetHistogram(TFile* file, 
147                       const Char_t* cutClass, 
148                       const Char_t* histList, 
149                       const Char_t* histName) {
150   //
151   // get a histogram from the J/psi output
152   //
153   TKey* qaKey = (TKey*)file->GetListOfKeys()->At(0);
154   TList* qaList = (TList*)qaKey->ReadObj();
155   
156   THashList* qaCutClass = (THashList*)qaList->FindObject(cutClass);
157   THashList* qaHistList = (THashList*)qaCutClass->FindObject(histList);
158   return qaHistList->FindObject(histName);
159 }