1 |
#include "TROOT.h"
|
2 |
#include "TH1.h"
|
3 |
#include "TF1.h"
|
4 |
#include "TMath.h"
|
5 |
#include "TAxis.h"
|
6 |
#include "TString.h"
|
7 |
#include "TFile.h"
|
8 |
#include "TCanvas.h"
|
9 |
#include "TLegend.h"
|
10 |
#include "map.h"
|
11 |
|
12 |
std::map<TString,TString> histName;
|
13 |
std::map<TString,TH1*> hs;
|
14 |
std::map<TString,TCanvas*> ts;
|
15 |
|
16 |
void MuonIPScut()
|
17 |
{
|
18 |
gROOT->SetStyle("CMS");
|
19 |
//gStyle->SetOptFit(1111);
|
20 |
TFile *fsig = TFile::Open("TTbarJets_madgraph_Spring10_5_all.root");
|
21 |
TFile *fbkg = TFile::Open("InclusiveMu15_Spring10_5_all.root");
|
22 |
|
23 |
// LOAD HISTOGRAMS FROM FILES
|
24 |
const int nDim = 2;
|
25 |
const int nRef = 2;
|
26 |
const int nSel = 3;
|
27 |
const int nVar = 3;
|
28 |
double weight[2] = {0.001305,0.1255};
|
29 |
string dim[nDim] = {"2D","3D"};
|
30 |
string ref[nRef] = {"bs","pv"};
|
31 |
string sel[nSel] = {"cut0","cut1","cut2"};
|
32 |
string sel1[nSel] = {"excl0","excl1","excl2"};
|
33 |
string varName[3] = {"IPS","IP","IPerr"};
|
34 |
|
35 |
for (int i = 0; i < nDim; i++) {
|
36 |
for (int j = 0; j < nRef; j++) {
|
37 |
for (int k = 0; k < nSel; k++) {
|
38 |
|
39 |
for (int vi = 0; vi < nVar; vi++) {
|
40 |
TString histComm = TString(varName[vi] + "_" + dim[i] + "_" + ref[j] + "_" + sel[k]);
|
41 |
TString histIncl = histComm + "_incl";
|
42 |
TString histTagIncl = TString(dim[i] + "_" + ref[j] + "_" + sel[k]);
|
43 |
histName[histIncl] = TString("Muons/muon_" + varName[vi] + "_" + histTagIncl);
|
44 |
TString histExcl = histComm + "_excl";
|
45 |
TString histTagExcl = TString(dim[i] + "_" + ref[j] + "_" + sel1[k]);
|
46 |
histName[histExcl] = TString("Muons/muon_" + varName[vi] + "_" + histTagExcl);
|
47 |
|
48 |
cout << "histComm = " << histComm << endl;
|
49 |
cout << "histName[histIncl] = " << histName[histIncl] << endl;
|
50 |
cout << "histName[histExcl] = " << histName[histExcl] << endl;
|
51 |
|
52 |
TString hTT = histIncl + "_TT";
|
53 |
hs[hTT] = (TH1F*) fsig->Get(histName[histIncl]);
|
54 |
TString hQCD = histIncl + "_QCD";
|
55 |
hs[hQCD] = (TH1F*) fbkg->Get(histName[histIncl]);
|
56 |
TString hQCDbc = histExcl + "_QCDbc";
|
57 |
hs[hQCDbc] = (TH1F*) fbkg->Get(histName[histExcl]);
|
58 |
|
59 |
// For weighted distributions
|
60 |
hs[histComm + "_sig"] = (TH1F*) hs[hTT]->Clone();
|
61 |
hs[histComm + "_bkg"] = (TH1F*) hs[hQCD]->Clone(); // QCD other decays
|
62 |
hs[histComm + "_bkgbc"] = (TH1F*) hs[hQCDbc]->Clone(); //QCD b/c decays
|
63 |
|
64 |
//ttbar
|
65 |
hs[histComm + "_sig"]->Scale(weight[0]);
|
66 |
// QCD
|
67 |
hs[histComm + "_bkg"]->Scale(weight[1]);
|
68 |
hs[histComm + "_bkgbc"]->Scale(weight[1]);
|
69 |
|
70 |
// Normalized to area 1.
|
71 |
hs[hTT]->Scale(1./hs[hTT]->Integral());
|
72 |
hs[hQCD]->Scale(1./hs[hQCD]->Integral());
|
73 |
|
74 |
// Calculating S/B
|
75 |
hs["SoverB_"+histComm] = new TH1F(TString("SoverB_"+histComm),"S/B",
|
76 |
hs[histComm+"_sig"]->GetNbinsX(),
|
77 |
hs[histComm+"_sig"]->GetXaxis()->GetXmin(),
|
78 |
hs[histComm+"_sig"]->GetXaxis()->GetXmax());
|
79 |
for (int bi = 1; bi <= hs[histComm+"_sig"]->GetNbinsX(); bi++) {
|
80 |
double ss = hs[histComm+"_sig"]->Integral(hs[histComm+"_sig"]->GetXaxis()->GetXmin(),bi);
|
81 |
double bb = hs[histComm+"_bkg"]->Integral(hs[histComm+"_sig"]->GetXaxis()->GetXmin(),bi)
|
82 |
+ hs[histComm+"_bkgbc"]->Integral(hs[histComm+"_sig"]->GetXaxis()->GetXmin(),bi);
|
83 |
double val = ((bb > 0) ? (ss/bb) : 0.);
|
84 |
hs["SoverB_"+histComm]->SetBinContent(bi,val);
|
85 |
}
|
86 |
|
87 |
// Total weighted bkgshis
|
88 |
hs[histComm+"_QCDtot"] = new TH1F(TString(histComm + "_QCDtot"),"B1+B2",
|
89 |
hs[histComm+"_bkg"]->GetNbinsX(),hs[histComm+"_bkg"]->GetXaxis()->GetXmin(),
|
90 |
hs[histComm+"_bkg"]->GetXaxis()->GetXmax());
|
91 |
hs[histComm+"_QCDtot"]->Add(hs[histComm+"_bkg"],hs[histComm+"_bkgbc"],1.,1.);
|
92 |
// Normalized to area 1
|
93 |
hs[hQCDbc]->Scale((hs[hQCDbc]->GetEntries()/hs[histComm+"_QCDtot"]->GetEntries()*1.)/hs[hQCDbc]->Integral());
|
94 |
hs[histComm+"_QCDtot"]->Scale(1./hs[histComm+"_QCDtot"]->Integral());
|
95 |
|
96 |
|
97 |
// weighted sig plus bkg
|
98 |
hs["SplusB_"+histComm] = new TH1F(TString("SplusB_"+histComm),"S+B",
|
99 |
hs[histComm+"_sig"]->GetNbinsX(),
|
100 |
hs[histComm+"_sig"]->GetXaxis()->GetXmin(),
|
101 |
hs[histComm+"_sig"]->GetXaxis()->GetXmax());
|
102 |
hs["SplusB_"+histComm]->Add(hs[histComm+"_sig"],hs[histComm+"_bkg"],1.,1.);
|
103 |
hs["SplusB_"+histComm]->Add(hs[histComm+"_bkgbc"]);
|
104 |
|
105 |
|
106 |
// Weighted
|
107 |
hs["SoverSqrtSplusB_"+histComm] = new TH1F(TString("SoverSqrtSplusB_"+histComm),
|
108 |
"#frac{S}{#sqrt{S+B}}",
|
109 |
hs[histComm+"_sig"]->GetNbinsX(),
|
110 |
hs[histComm+"_sig"]->GetXaxis()->GetXmin(),
|
111 |
hs[histComm+"_sig"]->GetXaxis()->GetXmax());
|
112 |
double maxCut = 0.;
|
113 |
double maxSig = 0.;
|
114 |
|
115 |
for (int bi = 1; bi <= hs[histComm+"_sig"]->GetNbinsX(); bi++) {
|
116 |
double ss = hs[histComm+"_sig"]->Integral(hs[histComm+"_sig"]->GetXaxis()->GetXmin(),bi);
|
117 |
double bb = hs[histComm+"_bkg"]->Integral(hs[histComm+"_sig"]->GetXaxis()->GetXmin(),bi)
|
118 |
+ hs[histComm+"_bkgbc"]->Integral(hs[histComm+"_sig"]->GetXaxis()->GetXmin(),bi);
|
119 |
double val = ((ss+bb > 0) ? ss/sqrt(ss+bb) : 0.);
|
120 |
if (val > maxSig) {
|
121 |
maxSig = val;
|
122 |
maxCut = hs[histComm+"_sig"]->GetXaxis()->GetXmin() +
|
123 |
1.*bi*(hs[histComm+"_sig"]->GetXaxis()->GetXmax() -
|
124 |
hs[histComm+"_sig"]->GetXaxis()->GetXmin())/hs[histComm+"_sig"]->GetNbinsX();
|
125 |
}
|
126 |
hs["SoverSqrtSplusB_"+histComm]->SetBinContent(bi,val);
|
127 |
}
|
128 |
std::cout << "Max " << varName[vi] << " = " << maxSig << " ; cut at: " << maxCut << std::endl;
|
129 |
}
|
130 |
// }
|
131 |
// }
|
132 |
// }
|
133 |
|
134 |
// // Plot
|
135 |
// for (int i = 0; i < nDim; i++) {
|
136 |
// for (int j = 0; j < nRef; j++) {
|
137 |
// for (int k = 0; k < nSel; k++) {
|
138 |
|
139 |
TString CommonTag = TString("IPS_" + dim[i] + "_" + ref[j] + "_" + sel[k]);
|
140 |
TString CommonTag1 = TString("IP_" + dim[i] + "_" + ref[j] + "_" + sel[k]);
|
141 |
//cout << "CommonTag = " << CommonTag << endl;
|
142 |
TString fileName = TString("Summery_"+dim[i]+"_"+ref[j]+"_"+sel[k]);
|
143 |
ts[fileName] = new TCanvas(fileName,fileName,800,800);
|
144 |
ts[fileName]->Divide(2,3);
|
145 |
|
146 |
ts[fileName]->cd(1);
|
147 |
hs["SplusB_"+CommonTag]->SetLineColor(3);
|
148 |
hs["SplusB_"+CommonTag]->GetXaxis()->SetTitle(TString(dim[i]+" Impact Parameter Significance w.r.t. "+ref[j]+"-"+sel[k]));
|
149 |
hs["SplusB_"+CommonTag]->GetYaxis()->SetTitle("Normalized to 5/pb");
|
150 |
// hs["SplusB_"+CommonTag]->GetYaxis()->SetTitle("Num of Events @ L_{int} = 5 pb^{-1}");
|
151 |
if (ref[j] == "pv") hs["SplusB_"+CommonTag]->GetXaxis()->SetRangeUser(0,6);
|
152 |
hs["SplusB_"+CommonTag]->SetMinimum(0);
|
153 |
|
154 |
hs["SplusB_"+CommonTag]->Draw("hist");
|
155 |
hs[CommonTag+"_bkg"]->SetLineColor(9);
|
156 |
hs[CommonTag+"_bkg"]->SetLineWidth(2);
|
157 |
hs[CommonTag+"_bkg"]->Draw("histsame");
|
158 |
hs[CommonTag+"_bkgbc"]->SetLineColor(6);
|
159 |
hs[CommonTag+"_bkgbc"]->Draw("histsame");
|
160 |
hs[CommonTag+"_bkgbc"]->SetLineWidth(2);
|
161 |
hs[CommonTag+"_sig"]->SetLineColor(2);
|
162 |
hs[CommonTag+"_sig"]->SetLineWidth(2);
|
163 |
hs[CommonTag+"_sig"]->Draw("histsame");
|
164 |
|
165 |
TLegend *l0 = new TLegend(0.45,0.4,0.8,0.7);
|
166 |
l0->SetFillColor(0);
|
167 |
l0->AddEntry(hs["SplusB_"+CommonTag],"S+B_{1}+B_{2}","l");
|
168 |
l0->AddEntry(hs[CommonTag+"_sig"],"t#bar{t} (S)","l");
|
169 |
l0->AddEntry(hs[CommonTag+"_bkgbc"],"QCD - b/c decays (B_{1})","l");
|
170 |
l0->AddEntry(hs[CommonTag+"_bkg"],"QCD - others (B_{2})","l");
|
171 |
l0->Draw();
|
172 |
|
173 |
ts[fileName]->cd(2);
|
174 |
hs[CommonTag+"_incl_TT"]->SetLineColor(2);
|
175 |
hs[CommonTag+"_incl_TT"]->SetLineWidth(2);
|
176 |
hs[CommonTag+"_incl_TT"]->GetXaxis()->SetTitle(TString(dim[i]+" Impact Parameter Significance w.r.t. "+ref[j]+"-"+sel[k]));
|
177 |
hs[CommonTag+"_incl_TT"]->GetYaxis()->SetTitle("Arbitrary Units");
|
178 |
if (ref[j] == "pv") hs[CommonTag+"_incl_TT"]->GetXaxis()->SetRangeUser(0,6);
|
179 |
|
180 |
hs[CommonTag+"_incl_TT"]->SetLabelFont(42,"xyz");
|
181 |
hs[CommonTag+"_incl_TT"]->SetTitleFont(42,"xyz");
|
182 |
hs[CommonTag+"_incl_TT"]->SetLabelSize(0.032,"x");
|
183 |
hs[CommonTag+"_incl_TT"]->SetLabelSize(0.035,"xyz");//0.035
|
184 |
hs[CommonTag+"_incl_TT"]->SetTitleSize(0.05,"xyz");
|
185 |
hs[CommonTag+"_incl_TT"]->SetTitleOffset(1.,"xy");
|
186 |
|
187 |
hs[CommonTag+"_incl_TT"]->Draw("hist");
|
188 |
|
189 |
// hs[CommonTag+"_incl_TT"]->Fit("gaus","","QRM",0.,10.);
|
190 |
// TF1 *f0 = (TF1*)hs[CommonTag+"_incl_TT"]->GetFunction("gaus");
|
191 |
// f0->SetLineColor(7);
|
192 |
// f0->Draw("same");
|
193 |
// hs[CommonTag+"_QCD"]->SetLineColor(4);
|
194 |
// hs[CommonTag+"_QCD"]->Draw("histsame");
|
195 |
hs[CommonTag+"_QCDtot"]->SetLineColor(4);
|
196 |
hs[CommonTag+"_QCDtot"]->Draw("histsame");
|
197 |
hs[CommonTag+"_excl_QCDbc"]->SetLineColor(6);
|
198 |
hs[CommonTag+"_excl_QCDbc"]->SetLineWidth(2);
|
199 |
hs[CommonTag+"_excl_QCDbc"]->Draw("histsame");
|
200 |
TLegend *l1 = new TLegend(0.5,0.5,0.85,0.7);
|
201 |
l1->SetFillColor(0);
|
202 |
l1->AddEntry(hs[CommonTag+"_incl_TT"],"t#bar{t}","l");
|
203 |
// l1->AddEntry(hs[CommonTag+"_QCD"],"QCD","l");
|
204 |
l1->AddEntry(hs[CommonTag+"_QCDtot"],"QCD all","l");
|
205 |
l1->AddEntry(hs[CommonTag+"_excl_QCDbc"],"QCD - b/c decays","l");
|
206 |
l1->Draw();
|
207 |
|
208 |
ts[fileName]->cd(3);
|
209 |
hs["SplusB_"+CommonTag1]->SetLineColor(3);
|
210 |
hs["SplusB_"+CommonTag1]->GetXaxis()->SetTitle(TString(dim[i]+" Impact Parameter w.r.t. "+ref[j]+"-"+sel[k]));
|
211 |
hs["SplusB_"+CommonTag1]->GetYaxis()->SetTitle("Normalized to 5/pb");
|
212 |
// hs["SplusB"+CommonTag1]->GetYaxis()->SetTitle("Num of Events @ L_{int} = 5 pb^{-1}");
|
213 |
if (ref[j] == "pv") hs["SplusB_"+CommonTag1]->GetXaxis()->SetRangeUser(0,0.04);
|
214 |
hs["SplusB_"+CommonTag1]->Draw("hist");
|
215 |
hs[CommonTag1+"_bkg"]->SetLineColor(9);
|
216 |
hs[CommonTag1+"_bkg"]->SetLineWidth(2);
|
217 |
hs[CommonTag1+"_bkg"]->Draw("histsame");
|
218 |
hs[CommonTag1+"_bkgbc"]->SetLineColor(6);
|
219 |
hs[CommonTag1+"_bkgbc"]->Draw("histsame");
|
220 |
hs[CommonTag1+"_bkgbc"]->SetLineWidth(2);
|
221 |
hs[CommonTag1+"_sig"]->SetLineColor(2);
|
222 |
hs[CommonTag1+"_sig"]->SetLineWidth(2);
|
223 |
hs[CommonTag1+"_sig"]->Draw("histsame");
|
224 |
|
225 |
TLegend *l01 = new TLegend(0.45,0.4,0.8,0.7);
|
226 |
l01->SetFillColor(0);
|
227 |
l01->AddEntry(hs["SplusB_"+CommonTag1],"S+B_{1}+B_{2}","l");
|
228 |
l01->AddEntry(hs[CommonTag1+"_sig"],"t#bar{t} (S)","l");
|
229 |
l01->AddEntry(hs[CommonTag1+"_bkgbc"],"QCD - b/c decays (B_{1})","l");
|
230 |
l01->AddEntry(hs[CommonTag1+"_bkg"],"QCD - others (B_{2})","l");
|
231 |
l01->Draw();
|
232 |
|
233 |
ts[fileName]->cd(4);
|
234 |
hs[CommonTag1+"_incl_TT"]->SetLineColor(2);
|
235 |
hs[CommonTag1+"_incl_TT"]->SetLineWidth(2);
|
236 |
hs[CommonTag1+"_incl_TT"]->GetXaxis()->SetTitle(TString(dim[i]+" Impact Parameter w.r.t. "+ref[j]+"-"+sel[k]));
|
237 |
hs[CommonTag1+"_incl_TT"]->GetYaxis()->SetTitle("Arbitrary Units");
|
238 |
if (ref[j] == "pv") hs[CommonTag1+"_incl_TT"]->GetXaxis()->SetRangeUser(0,0.04);
|
239 |
|
240 |
hs[CommonTag1+"_incl_TT"]->SetLabelFont(42,"xyz");
|
241 |
hs[CommonTag1+"_incl_TT"]->SetTitleFont(42,"xyz");
|
242 |
hs[CommonTag1+"_incl_TT"]->SetLabelSize(0.032,"x");
|
243 |
hs[CommonTag1+"_incl_TT"]->SetLabelSize(0.035,"xyz");//0.035
|
244 |
hs[CommonTag1+"_incl_TT"]->SetTitleSize(0.05,"xyz");
|
245 |
hs[CommonTag1+"_incl_TT"]->SetTitleOffset(1.,"xy");
|
246 |
|
247 |
hs[CommonTag1+"_incl_TT"]->Draw("hist");
|
248 |
|
249 |
// hs[CommonTag1+"_incl_TT"]->Fit("gaus","","QRM",0.,10.);
|
250 |
// TF1 *f0 = (TF1*)hs[CommonTag1+"_incl_TT"]->GetFunction("gaus");
|
251 |
// f0->SetLineColor(7);
|
252 |
// f0->Draw("same");
|
253 |
// hs[CommonTag1+"_incl_QCD"]->SetLineColor(4);
|
254 |
// hs[CommonTag1+"_incl_QCD"]->Draw("histsame");
|
255 |
hs[CommonTag1+"_QCDtot"]->SetLineColor(4);
|
256 |
hs[CommonTag1+"_QCDtot"]->Draw("histsame");
|
257 |
hs[CommonTag1+"_excl_QCDbc"]->SetLineColor(6);
|
258 |
hs[CommonTag1+"_excl_QCDbc"]->SetLineWidth(2);
|
259 |
hs[CommonTag1+"_excl_QCDbc"]->Draw("histsame");
|
260 |
TLegend *l11 = new TLegend(0.5,0.5,0.85,0.7);
|
261 |
l11->SetFillColor(0);
|
262 |
l11->AddEntry(hs[CommonTag1+"_incl_TT"],"t#bar{t}","l");
|
263 |
// l11->AddEntry(hs[CommonTag1+"_incl_QCD"],"QCD","l");
|
264 |
l11->AddEntry(hs[CommonTag1+"_QCDtot"],"QCD all","l");
|
265 |
l11->AddEntry(hs[CommonTag1+"_excl_QCDbc"],"QCD - b/c decays","l");
|
266 |
l11->Draw();
|
267 |
|
268 |
ts[fileName]->cd(5);
|
269 |
|
270 |
hs["SoverB_"+CommonTag]->SetLineColor(4);
|
271 |
hs["SoverB_"+CommonTag]->GetXaxis()->SetTitle(TString(dim[i]+" Impact Parameter Significance w.r.t. "+ref[j]+"-"+sel[k]));
|
272 |
hs["SoverB_"+CommonTag]->GetYaxis()->SetTitle("Arbitrary Units");
|
273 |
if (ref[j] == "pv") hs["SoverB_"+CommonTag]->GetXaxis()->SetRangeUser(0,6);
|
274 |
hs["SoverB_"+CommonTag]->Draw("hist");
|
275 |
|
276 |
TLegend *l2 = new TLegend(0.6,0.6,0.68,0.68);
|
277 |
l2->SetFillColor(0);
|
278 |
l2->AddEntry(hs["SoverB_IPS_"+CommonTag],"#frac{S}{B}","");
|
279 |
l2->Draw();
|
280 |
|
281 |
ts[fileName]->cd(6);
|
282 |
hs["SoverSqrtSplusB_"+CommonTag]->SetLineColor(4);
|
283 |
hs["SoverSqrtSplusB_"+CommonTag]->GetXaxis()->SetTitle(TString(dim[i]+" Impact Parameter Significance w.r.t. "+ref[j]+"-"+sel[k]));
|
284 |
hs["SoverSqrtSplusB_"+CommonTag]->GetYaxis()->SetTitle("Arbitrary Units");
|
285 |
if (ref[j] == "pv") hs["SoverSqrtSplusB_"+CommonTag]->GetXaxis()->SetRangeUser(0,6);
|
286 |
hs["SoverSqrtSplusB_"+CommonTag]->Draw("hist");
|
287 |
|
288 |
TLegend *l3 = new TLegend(0.5,0.4,0.65,0.5);
|
289 |
l3->SetFillColor(0);
|
290 |
l3->AddEntry(hs["SoverSqrtSplusB_"+CommonTag],"#frac{S}{#sqrt{S+B}}","");
|
291 |
l3->Draw();
|
292 |
|
293 |
ts[fileName]->Print(TString("Summary_" + dim[i] + "_" + ref[j] + "_" + sel[k])+".png");
|
294 |
//hs.clear();
|
295 |
}
|
296 |
}
|
297 |
}
|
298 |
}
|