]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGPP/analysisQA/processJpsi2eeQAplots.C
added the alien caching script with example config
[u/mrichter/AliRoot.git] / PWGPP / analysisQA / processJpsi2eeQAplots.C
CommitLineData
948b38b2 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//______________________________________________________________________________
14void 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//______________________________________________________________________________
146TObject* 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}