1 |
jueugste |
1.1 |
using namespace std;
|
2 |
|
|
#include "tdrstyle.C"
|
3 |
|
|
|
4 |
|
|
void plotDataMCwSignal(){
|
5 |
|
|
|
6 |
|
|
// specify the DATA/MC root file!!!
|
7 |
|
|
// --------------------------------------------------------------------------
|
8 |
|
|
TFile *data = TFile::Open("Data/root/Data.root");
|
9 |
jueugste |
1.2 |
TFile *mc = TFile::Open("QCD_bckgd.root");
|
10 |
|
|
TFile *mcOther = TFile::Open("other_bckgd.root");
|
11 |
|
|
TFile *mcTTbar = TFile::Open("TTbar_bckgd.root");
|
12 |
jueugste |
1.1 |
TFile *mcSignal = TFile::Open("mcSignal.root");
|
13 |
|
|
|
14 |
|
|
char *legDataTitle = "Data";//"Signal, W #rightarrow e #nu";
|
15 |
jueugste |
1.2 |
char *legMCTitle = "QCD, #gamma + jet"; //"Background";
|
16 |
|
|
char *legMCotherTitle = "EWK"; //"Background";
|
17 |
|
|
char *legMCttbarTitle = "ttbar"; //"Background";
|
18 |
|
|
char *legMCsigTitle = "W #rightarrow e #nu"; //"Signal";
|
19 |
jueugste |
1.1 |
TString dataset="";
|
20 |
|
|
TString overallTitle="CMS preliminary 2010";
|
21 |
jueugste |
1.3 |
TString CMen="#sqrt{s}=7TeV, #int L = 890 nb^{-1}";
|
22 |
jueugste |
1.1 |
TString cuts1="";
|
23 |
jueugste |
1.3 |
Tstring cuts2="";
|
24 |
|
|
double rebin=1.;
|
25 |
jueugste |
1.1 |
bool isptplot;
|
26 |
jueugste |
1.3 |
|
27 |
|
|
bool normalizeToArea=false;
|
28 |
|
|
|
29 |
jueugste |
1.1 |
//---------------------------------------------------------------------------
|
30 |
|
|
setTDRStyle();
|
31 |
|
|
gROOT->ForceStyle();
|
32 |
|
|
TIter next (data->GetListOfKeys ());
|
33 |
|
|
|
34 |
|
|
// TString name;
|
35 |
|
|
// TRegexp jpt("JPT");
|
36 |
|
|
// TRegexp pf("PF");
|
37 |
|
|
int colour;
|
38 |
|
|
// TRegexp twodim("map");
|
39 |
|
|
// //non log plots
|
40 |
|
|
// TRegexp eta("eta");
|
41 |
|
|
// TRegexp phi("phi");
|
42 |
|
|
// TRegexp hits("hits");
|
43 |
|
|
// //
|
44 |
|
|
// TRegexp pt("pt");
|
45 |
|
|
// TRegexp dphi("dphi");
|
46 |
|
|
// TRegexp mass("mass");
|
47 |
|
|
|
48 |
|
|
// TRegexp emf("emf");
|
49 |
|
|
// TRegexp CHF("CHF");
|
50 |
|
|
// TRegexp NHF("NHF");
|
51 |
|
|
// TRegexp NEF("NEF");
|
52 |
|
|
// TRegexp METover("METover");
|
53 |
|
|
// TRegexp dijet("DiJet");
|
54 |
|
|
// TRegexp cons("cons");
|
55 |
|
|
|
56 |
jueugste |
1.2 |
int islog=0;
|
57 |
|
|
|
58 |
|
|
int index=0;
|
59 |
jueugste |
1.1 |
|
60 |
|
|
for (TKey* key = 0; (key = (TKey *) next());) {
|
61 |
|
|
// isptplot=false;
|
62 |
|
|
// //determine wether it is a Calo/JPT or PF plots to make
|
63 |
|
|
// name=key->GetName();
|
64 |
|
|
// if(name.Index(twodim)>-1) continue; //dont want comparisons for 2D histos
|
65 |
|
|
// colour=5;
|
66 |
|
|
// cuts1="p_{T}(jet)> 25 GeV";
|
67 |
|
|
// cuts2="|#eta(jet)| < 3";
|
68 |
|
|
// if(name.Index(jpt)>-1) {
|
69 |
|
|
// colour=896;
|
70 |
|
|
// cuts1="p_{T}(jet)> 25 GeV";
|
71 |
|
|
// cuts2="|#eta(jet)| < 3";
|
72 |
|
|
// }
|
73 |
|
|
// if(name.Index(pf)>-1){
|
74 |
|
|
|
75 |
|
|
|
76 |
|
|
colour=38;
|
77 |
|
|
// colour=4;
|
78 |
|
|
cuts1="p_{T}(jet)> 25 GeV";
|
79 |
|
|
cuts2="|#eta(jet)| < 3";
|
80 |
|
|
|
81 |
|
|
// }
|
82 |
|
|
|
83 |
jueugste |
1.4 |
|
84 |
|
|
cout<<"here"<<endl;
|
85 |
|
|
|
86 |
jueugste |
1.3 |
islog=0;
|
87 |
jueugste |
1.1 |
// if(name.Index(eta)>-1||name.Index(phi)>-1||name.Index(hits)>-1 || name.Index(emf)>-1 || name.Index(CHF)>-1 || name.Index(NHF)>-1|| name.Index(NEF)>-1||name.Index(cons)>-1) islog=0;
|
88 |
|
|
TH1D * h_data= data->Get(key->GetName());
|
89 |
|
|
TH1D * h_mc=mc->Get(key->GetName());
|
90 |
jueugste |
1.2 |
TH1D * h_other=mcOther->Get(key->GetName());
|
91 |
|
|
TH1D * h_ttbar=mcTTbar->Get(key->GetName());
|
92 |
jueugste |
1.1 |
TH1D * h_sig=mcSignal->Get(key->GetName());
|
93 |
|
|
// only for filled histos
|
94 |
jueugste |
1.4 |
if( h_mc->GetEntries()!=0) {
|
95 |
|
|
|
96 |
jueugste |
1.1 |
//
|
97 |
jueugste |
1.2 |
|
98 |
|
|
|
99 |
jueugste |
1.4 |
cout<<"here"<<endl;
|
100 |
|
|
}
|
101 |
|
|
// h_data->SetTitle(overallTitle);
|
102 |
|
|
// h_mc->SetTitle(overallTitle);
|
103 |
|
|
// h_other->SetTitle(overallTitle);
|
104 |
|
|
// h_ttbar->SetTitle(overallTitle);
|
105 |
|
|
// h_sig->SetTitle(overallTitle);
|
106 |
|
|
|
107 |
|
|
|
108 |
jueugste |
1.2 |
|
109 |
jueugste |
1.1 |
// if(name.Index(pt)>-1) {
|
110 |
|
|
// h_data->SetYTitle("Jets/GeV");
|
111 |
|
|
// h_mc->SetYTitle("Jets/GeV");
|
112 |
|
|
// isptplot=true;
|
113 |
|
|
// // cout << h_data->GetXaxis()->GetBinWidth(1)<< endl;
|
114 |
|
|
// }
|
115 |
|
|
// if(name.Index(eta)>-1||name.Index(phi)>-1) {
|
116 |
|
|
// h_data->SetYTitle("Jets");
|
117 |
|
|
// h_mc->SetYTitle("Jets");
|
118 |
|
|
// }
|
119 |
|
|
// if(name.Index(dphi)>-1) {
|
120 |
|
|
// h_data->SetYTitle("Events");
|
121 |
|
|
// h_mc->SetYTitle("Events");
|
122 |
|
|
// }
|
123 |
|
|
// if(name.Index(mass)>-1){
|
124 |
|
|
// h_data->SetYTitle("Events/GeV");
|
125 |
|
|
// h_mc->SetYTitle("Events/GeV");
|
126 |
|
|
isptplot=true;
|
127 |
|
|
// }
|
128 |
|
|
|
129 |
|
|
TCanvas *c = new TCanvas("c","",600,600);
|
130 |
|
|
double scalefactor;
|
131 |
|
|
// if(h_mc->Integral()!=0) {
|
132 |
|
|
// scalefactor=h_data->Integral()/h_mc->Integral();
|
133 |
|
|
// }
|
134 |
|
|
// else {scalefactor=1;}
|
135 |
|
|
// cout<<"scale factor: "<<scalefactor<<endl;
|
136 |
|
|
|
137 |
|
|
|
138 |
|
|
// if (isptplot) {
|
139 |
|
|
// // h_mc->Sumw2(); //for some reason it doesnt plot this one if i do sumw2, so i comment it out. anyhow we dont see its errors, but to be checked!
|
140 |
|
|
// // h_data->Sumw2();
|
141 |
|
|
// for(int j=0 ; j<=h_mc->GetNbinsX(); ++j){
|
142 |
|
|
// h_data->SetBinError(j,sqrt(h_data->GetBinContent(j))/h_data->GetBinWidth(j));
|
143 |
|
|
// //
|
144 |
|
|
// h_mc->SetBinContent(j,h_mc->GetBinContent(j)/h_mc->GetBinWidth(j));
|
145 |
|
|
// h_data->SetBinContent(j,h_data->GetBinContent(j)/h_data->GetBinWidth(j));
|
146 |
|
|
// }
|
147 |
|
|
// }
|
148 |
|
|
|
149 |
|
|
|
150 |
|
|
|
151 |
|
|
// h_mc->Scale(scalefactor);
|
152 |
jueugste |
1.4 |
|
153 |
|
|
|
154 |
|
|
// h_mc->Rebin(rebin);
|
155 |
|
|
// h_sig->Rebin(rebin);
|
156 |
|
|
// h_data->Rebin(rebin);
|
157 |
jueugste |
1.3 |
|
158 |
jueugste |
1.1 |
// h_mc->SetMaximum(1.5*h_data->GetMaximum());
|
159 |
|
|
|
160 |
|
|
|
161 |
jueugste |
1.4 |
h_data->SetMarkerStyle(20);
|
162 |
jueugste |
1.2 |
h_other->SetFillColor(8);
|
163 |
|
|
h_other->SetLineColor(1);
|
164 |
|
|
h_ttbar->SetFillColor(15);
|
165 |
|
|
h_ttbar->SetLineColor(1);
|
166 |
jueugste |
1.1 |
h_sig->SetFillColor(46);
|
167 |
jueugste |
1.2 |
h_sig->SetLineColor(1);
|
168 |
jueugste |
1.4 |
h_mc->SetFillColor(colour);
|
169 |
|
|
h_mc->SetLineColor(1);
|
170 |
jueugste |
1.2 |
|
171 |
jueugste |
1.1 |
|
172 |
|
|
// h_data->SetTitle(overallTitle);
|
173 |
|
|
// h_mc->SetTitle(overallTitle);
|
174 |
|
|
// std::cout << "Plotting: " << key->GetName() << std::endl;
|
175 |
|
|
// h_mc->SetMinimum(0.01);
|
176 |
|
|
// h_data->SetMinimum(0.01);
|
177 |
|
|
|
178 |
jueugste |
1.2 |
|
179 |
|
|
|
180 |
jueugste |
1.1 |
//draw title
|
181 |
jueugste |
1.3 |
MoveStatsAndDraw(h_data , h_mc, h_other, h_ttbar, h_sig, legDataTitle, legMCTitle, legMCsigTitle, legMCotherTitle, legMCttbarTitle, overallTitle, CMen, islog, colour, false, cuts1, cuts2, isptplot, normalizeToArea);
|
182 |
jueugste |
1.2 |
|
183 |
jueugste |
1.1 |
char histname [256];
|
184 |
jueugste |
1.4 |
sprintf (histname, "plottingTest/%s.gif", key->GetName());
|
185 |
jueugste |
1.2 |
// cout<<key->GetName()<<endl;
|
186 |
|
|
char test [256];//="s_El_ElCharge_";
|
187 |
|
|
// index++;
|
188 |
|
|
sprintf (test, "%s%i", "s_El_ElCharge_",index);
|
189 |
|
|
// cout<<test<<endl;
|
190 |
|
|
if(!strcmp(key->GetName(),test)) {
|
191 |
|
|
index++;
|
192 |
|
|
continue;
|
193 |
|
|
}
|
194 |
|
|
c->Print(histname);
|
195 |
|
|
// cout<<"here2"<<endl;
|
196 |
|
|
|
197 |
jueugste |
1.1 |
delete c;
|
198 |
jueugste |
1.2 |
|
199 |
|
|
|
200 |
jueugste |
1.1 |
// } //if Entries != 0
|
201 |
|
|
} // loop over keys
|
202 |
|
|
|
203 |
|
|
|
204 |
|
|
// cout << "------ Calo Jets --------" <<endl;
|
205 |
|
|
// TH1D * temp =data->Get("dijetptall");
|
206 |
|
|
// cout << "CaloJets " << temp->GetEntries() <<endl;
|
207 |
|
|
// TH1D *temp2 =data->Get("dijetptallJIDloose");
|
208 |
|
|
// cout << "Loose CaloJets " << temp2->GetEntries() <<endl;
|
209 |
|
|
// TH1D *temp3 =data->Get("dijetptallJIDtight");
|
210 |
|
|
// cout << "Tight CaloJets " << temp3->GetEntries() <<endl;
|
211 |
|
|
|
212 |
|
|
// cout << "------ PF Jets --------" <<endl;
|
213 |
|
|
// TH1D * temp5 =data->Get("diPFjetptall");
|
214 |
|
|
// cout << "PFJets " << temp5->GetEntries() <<endl;
|
215 |
|
|
// TH1D *temp6 =data->Get("diPFjetptallJIDloose");
|
216 |
|
|
// cout << "Loose PFJets " << temp6->GetEntries() <<endl;
|
217 |
|
|
// TH1D *temp7 =data->Get("diPFjetptallJIDtight");
|
218 |
|
|
// cout << "Tight PFJets " << temp7->GetEntries() <<endl;
|
219 |
|
|
|
220 |
|
|
// cout << "------ JPT Jets --------" <<endl;
|
221 |
|
|
// TH1D * temp8 =data->Get("diJPTjetptall");
|
222 |
|
|
// cout << "JPTJets " << temp8->GetEntries() <<endl;
|
223 |
|
|
// TH1D *temp9 =data->Get("diJPTjetptallJIDloose");
|
224 |
|
|
// cout << "Loose JPTJets " << temp9->GetEntries() <<endl;
|
225 |
|
|
// TH1D *temp10 =data->Get("diJPTjetptallJIDtight");
|
226 |
|
|
// cout << "Tight JPTJets " << temp10->GetEntries() <<endl;
|
227 |
|
|
}
|
228 |
|
|
|
229 |
|
|
|
230 |
|
|
|
231 |
|
|
//-------------------------------------------------------------------------------------
|
232 |
jueugste |
1.3 |
void MoveStatsAndDraw (TH1 *data, TH1 *mc, TH1 *other, TH1 *ttbar, TH1 *sig, char *dataTitle, char* mcTitle, char *mcSigTitle, char* otherTitle, char *ttbarTitle, char* firstline, char* secondline, int log, int col, bool stat, TString cut1, TString cut2, bool movepave, bool normalizeToArea){
|
233 |
jueugste |
1.1 |
|
234 |
|
|
c->SetLogy(log);
|
235 |
|
|
|
236 |
jueugste |
1.3 |
if(normalizeToArea) {
|
237 |
|
|
double S=sig->Integral();
|
238 |
|
|
double N=mc->Integral();
|
239 |
|
|
double f=1;
|
240 |
|
|
if(N!=0) f = S/N;
|
241 |
|
|
mc->Scale(f);
|
242 |
|
|
other->Scale(f);
|
243 |
|
|
ttbar->Scale(f);
|
244 |
|
|
sig->Scale(f);
|
245 |
|
|
}
|
246 |
|
|
|
247 |
|
|
|
248 |
|
|
|
249 |
jueugste |
1.1 |
// maximumData;
|
250 |
|
|
// double maximumMc;
|
251 |
|
|
int maximumData=data->GetBinContent(data->GetMaximumBin());
|
252 |
jueugste |
1.2 |
int maximumMc=mc->GetBinContent(mc->GetMaximumBin());
|
253 |
|
|
|
254 |
|
|
|
255 |
|
|
|
256 |
jueugste |
1.1 |
|
257 |
|
|
// if(data->GetBinContent(data->GetMaximum())<mc->GetBinContent(mc->GetMaximum())) {
|
258 |
|
|
if(maximumData<maximumMc) {
|
259 |
jueugste |
1.3 |
// sig->SetMaximum(maximumMc * 2.5);
|
260 |
|
|
mc->SetMaximum(maximumMc * 2.5);
|
261 |
jueugste |
1.2 |
if(log==1) sig->SetMinimum(0.0001);
|
262 |
|
|
if(log==0) sig->SetMinimum(0.);
|
263 |
|
|
mc->Draw("");
|
264 |
|
|
other->Draw("sames");
|
265 |
|
|
ttbar->Draw("sames");
|
266 |
|
|
sig->Draw("sames");
|
267 |
jueugste |
1.1 |
data->Draw("pe1sames");
|
268 |
|
|
}
|
269 |
|
|
else {
|
270 |
jueugste |
1.3 |
data->SetMaximum(maximumData * 2.5);
|
271 |
jueugste |
1.2 |
if(log==1) data->SetMinimum(0.0001);
|
272 |
|
|
if(log==0) data->SetMinimum(0.);
|
273 |
jueugste |
1.1 |
data->Draw("pe1");
|
274 |
jueugste |
1.2 |
mc->Draw("sames");
|
275 |
|
|
other->Draw("sames");
|
276 |
|
|
ttbar->Draw("sames");
|
277 |
jueugste |
1.1 |
sig->Draw("sames");
|
278 |
jueugste |
1.2 |
data->Draw("pe1 sames");
|
279 |
jueugste |
1.1 |
|
280 |
|
|
}
|
281 |
|
|
|
282 |
|
|
|
283 |
|
|
gStyle->SetOptStat(00000000);
|
284 |
jueugste |
1.2 |
stat=0;
|
285 |
jueugste |
1.1 |
if(stat) gStyle->SetOptStat(1111111);
|
286 |
|
|
|
287 |
|
|
|
288 |
|
|
|
289 |
|
|
/* TPaveText *TITLE = new TPaveText(0.2,0.65,0.55,0.9,"blNDC");
|
290 |
|
|
TITLE->SetFillStyle(4000);
|
291 |
|
|
TITLE->SetFillColor(kWhite);
|
292 |
|
|
TITLE->SetBorderSize(0.1);
|
293 |
|
|
TITLE->SetTextFont(42);
|
294 |
|
|
TITLE->AddText(firstline);
|
295 |
|
|
TITLE->Draw(); */
|
296 |
|
|
|
297 |
|
|
if(!movepave) {
|
298 |
|
|
TPaveText *title = new TPaveText(0.2,0.7,0.55,0.93,"blNDC");
|
299 |
|
|
} else {
|
300 |
|
|
// TPaveText *title = new TPaveText(0.6,0.58,0.95,0.83,"blNDC");
|
301 |
|
|
TPaveText *title = new TPaveText(0.6,0.7,0.95,0.93,"blNDC");
|
302 |
|
|
}
|
303 |
|
|
title->SetFillStyle(4000);
|
304 |
|
|
title->SetFillColor(kWhite);
|
305 |
|
|
title->SetBorderSize(0.1);
|
306 |
|
|
title->SetTextFont(42);
|
307 |
|
|
title->AddText(firstline);
|
308 |
|
|
title->AddText(secondline);
|
309 |
|
|
// title->AddText(cut1);
|
310 |
|
|
// title->AddText(cut2);
|
311 |
|
|
title->Draw();
|
312 |
|
|
if(!movepave) {
|
313 |
|
|
TLegend *leg = new TLegend(0.65,0.83,1.,0.93);
|
314 |
|
|
} else {
|
315 |
jueugste |
1.2 |
TLegend *leg = new TLegend(0.60,0.53,1.,0.7);
|
316 |
jueugste |
1.1 |
}
|
317 |
|
|
leg->SetFillStyle(4000);
|
318 |
|
|
leg->SetFillColor(kWhite);
|
319 |
|
|
leg->SetBorderSize(0.1);
|
320 |
|
|
leg->SetTextFont(42);
|
321 |
|
|
leg->AddEntry(data,dataTitle,"p"); //p
|
322 |
|
|
leg->AddEntry(mc,mcTitle,"f");
|
323 |
jueugste |
1.2 |
leg->AddEntry(other,otherTitle,"f");
|
324 |
|
|
leg->AddEntry(ttbar,ttbarTitle,"f");
|
325 |
jueugste |
1.1 |
leg->AddEntry(sig,mcSigTitle, "f");
|
326 |
|
|
leg->Draw();
|
327 |
|
|
|
328 |
|
|
c->Modified();
|
329 |
|
|
c->Update();
|
330 |
|
|
|
331 |
|
|
|
332 |
|
|
if(stat){
|
333 |
|
|
TPaveStats * ps = (TPaveStats *) mc->GetListOfFunctions()->FindObject("stats");
|
334 |
|
|
TPaveStats * ps2 = (TPaveStats *) data->GetListOfFunctions()->FindObject("stats");
|
335 |
|
|
TPaveStats * ps3 = (TPaveStats *) sig->GetListOfFunctions()->FindObject("stats");
|
336 |
|
|
Int_t ci;
|
337 |
|
|
ci = TColor::GetColor(col);
|
338 |
|
|
// Data
|
339 |
|
|
ps2->SetY1NDC(0.45);
|
340 |
|
|
ps2->SetY2NDC(0.59);
|
341 |
|
|
ps2->SetX1NDC(0.80);
|
342 |
|
|
ps2->SetX2NDC(0.97);
|
343 |
|
|
if( ps ){
|
344 |
|
|
ps->SetTextColor(col);
|
345 |
|
|
ps->SetFillStyle(0);
|
346 |
|
|
ps->SetLineColor(col);
|
347 |
|
|
}
|
348 |
|
|
else std::cout << "Null pointer to TPaveStats: " << ps << std::endl;
|
349 |
|
|
// MC Background
|
350 |
|
|
ps->SetY1NDC(0.30);
|
351 |
|
|
ps->SetY2NDC(0.44);
|
352 |
|
|
ps->SetX1NDC(0.80);
|
353 |
|
|
ps->SetX2NDC(0.97);
|
354 |
|
|
if( ps2 ) {
|
355 |
|
|
ps2->SetTextColor(ci);
|
356 |
|
|
ps2->SetFillStyle(0);
|
357 |
|
|
}
|
358 |
|
|
else std::cout << "Null pointer to TPaveStats: " << ps2 << std::endl;
|
359 |
|
|
// MC Signal
|
360 |
|
|
ps3->SetY1NDC(0.15);
|
361 |
|
|
ps3->SetY2NDC(0.29);
|
362 |
|
|
ps3->SetX1NDC(0.80);
|
363 |
|
|
ps3->SetX2NDC(0.97);
|
364 |
|
|
if( ps3 ) {
|
365 |
|
|
ps3->SetTextColor(46);
|
366 |
|
|
ps3->SetLineColor(46);
|
367 |
|
|
ps3->SetFillStyle(0);
|
368 |
|
|
}
|
369 |
|
|
else std::cout << "Null pointer to TPaveStats: " << ps3 << std::endl;
|
370 |
|
|
|
371 |
|
|
}
|
372 |
jueugste |
1.2 |
|
373 |
|
|
|
374 |
jueugste |
1.1 |
}
|