]>
Commit | Line | Data |
---|---|---|
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 | //______________________________________________________________________________ | |
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 | } |