ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/claudioc/ScansICHEP2012/example2011/makePlots.C
Revision: 1.1
Committed: Fri Jun 8 16:55:13 2012 UTC (12 years, 10 months ago) by claudioc
Content type: text/plain
Branch: MAIN
CVS Tags: CommonAN1stRelease, HEAD
Error occurred while calculating annotation data.
Log Message:
first

File Contents

# Content
1 #include "TGraph.h"
2 #include "TH2F.h"
3 #include "TFile.h"
4 #include "TStyle.h"
5 #include <vector>
6 #include "TLatex.h"
7 #include "TLine.h"
8 #include <iostream>
9 #include "TTree.h"
10 #include "TDirectory.h"
11 #include "TCanvas.h"
12 #include "TPolyLine.h"
13
14 using namespace std;
15
16 void makePlots () {
17
18 TFile *file = TFile::Open("ntuple.root");
19 file->cd();
20 TTree *tree = (TTree*)gDirectory->Get("tree");
21
22 // Makes basic histograms from the root tree
23 gStyle->SetPadRightMargin(0.16); // default 0.1
24 gStyle->SetTitleOffset(1.20, "Y"); // default 1
25 gStyle->SetOptStat(0);
26 gStyle->SetTitleOffset(1.20, "Z"); // default 1
27
28 // This binning insures that the bins are nicely centered
29 Double_t xbinsize = 25.;
30 Double_t ybinsize = 25.;
31 Double_t xmin = 400. - xbinsize/2.;
32 Double_t xmax = 1100 + xbinsize/2.;
33 Double_t ymin = 50. - ybinsize/2;
34 Double_t ymax = 800. + ybinsize/2.;
35 Int_t nx = (int)(xmax-xmin)/xbinsize;
36 Int_t ny = (int)(ymax-ymin)/ybinsize;
37
38 // Upper limit as a function of gluino and lsp mass
39 TH2F* ul = new TH2F("ul","ul",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
40
41 // Map of excluded points with different xsection assumptions
42 TH2F* excl = new TH2F("excl","excl",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
43 TH2F* exclup = new TH2F("exclup","exclup",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
44 TH2F* excldwn = new TH2F("excldwn","excldwn",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
45
46 // map of best region
47 TH2F* ulbest = new TH2F("ulbest","ulbest",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
48
49 // cross limit section maps
50 TH2F* hxsec = new TH2F("hxsec","hxsec",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
51 TH2F* hxsecup = new TH2F("hxsecup","hxsec",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
52 TH2F* hxsecdwn = new TH2F("hxsecdwn","hxsec",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
53
54 // acceptance map
55 TH2F* acc = new TH2F("acc","acc",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
56
57 //an empty histogram
58 TH2F* empty = new TH2F("empty","empty",nx,xmin,xmin+nx*xbinsize,ny,ymin,ymin+ny*ybinsize);
59
60
61 tree->Draw("lspmass:glmass>>ul","explimsrb/(5000.*effsrb)");
62 tree->Draw("lspmass:glmass>>ulbest","bestsr");
63 tree->Draw("lspmass:glmass>>acc","effsrb");
64 tree->Draw("lspmass:glmass>>excl","explimsrb/(5000.*effsrb)<xsec");
65 tree->Draw("lspmass:glmass>>exclup","explimsrb/(5000.*effsrb)<xsecup");
66 tree->Draw("lspmass:glmass>>excldwn","explimsrb/(5000.*effsrb)<xsecdwn");
67 tree->Draw("lspmass:glmass>>hxsec", "xsec");
68 tree->Draw("lspmass:glmass>>hxsecup", "xsecup");
69 tree->Draw("lspmass:glmass>>hxsecdwn","xsecdwn");
70
71 // There is a vertical slice of missing points. Fill the acceptance and
72 // cross-section limits by interpolation
73 for (int iy=1; iy<=ny; iy++) {
74 for (int ix=2; ix<ny; ix++) {
75 if (hxsec->GetBinContent(ix,iy) == 0 && hxsec->GetBinContent(ix-1,iy) > 0) {
76 float x = xmin + (ix-0.5)*xbinsize;
77 float y = ymin + (iy-0.5)*xbinsize;
78 cout << "Interpolating at x,y = " << x << " " << y << endl;
79 acc->Fill(x,y,0.5*(acc->GetBinContent(ix-1,iy) + acc->GetBinContent(ix+1,iy)));
80 ul->Fill(x,y,0.5*(ul->GetBinContent(ix-1,iy) + ul->GetBinContent(ix+1,iy)));
81 }
82 }
83 }
84
85 // now scan the upper limit histogram and interpolate the points for the limit
86 // - scan in X as a function of Y
87 // - as soon as you find a cell which is excluded, but the next cell is not excluded stop
88 // - interpolate the value of X, and do a cout of the x and y coordinates
89 // Do not trust it too much, it always has to be cheked by hand
90 // We start scanning from the top
91 vector<float> xvec;
92 vector<float> yvec;
93 vector<float> xvecup;
94 vector<float> yvecup;
95 vector<float> xvecdwn;
96 vector<float> yvecdwn;
97 for (int ixsec=0; ixsec<3; ixsec++) {
98 for (int iy=ny; iy>=1; iy--) {
99 float y = ymin + (iy-0.5)*ybinsize;
100 for (int ix=1; ix<nx; ix++) {
101 float x = xmin + (ix-0.5)*xbinsize;
102 // cout << ix << " " << x << " " << excl->GetBinContent(ix,1) << endl;
103 float thisBinLimit = ul->GetBinContent(ix,iy);
104 float thisXsec;
105 if (ixsec ==0) thisXsec = hxsec->GetBinContent(ix,iy);
106 if (ixsec ==1) thisXsec = hxsecup->GetBinContent(ix,iy);
107 if (ixsec ==2) thisXsec = hxsecdwn->GetBinContent(ix,iy);
108 if (thisBinLimit < thisXsec) {
109 float nextBinLimit = ul->GetBinContent(ix+1,iy);
110 float nextXsec;
111 if (ixsec ==0) nextXsec = hxsec->GetBinContent(ix+1,iy);
112 if (ixsec ==1) nextXsec = hxsecup->GetBinContent(ix+1,iy);
113 if (ixsec ==2) nextXsec = hxsecdwn->GetBinContent(ix+1,iy);
114 if (nextBinLimit > nextXsec) {
115 float d = nextBinLimit - thisBinLimit - nextXsec + thisXsec;
116 float xlim = (thisXsec - thisBinLimit)*xbinsize/d + x;
117 // cout << xlim << " " << y << endl;
118 // fill the vectors that define the line
119 if (ixsec == 0) {
120 xvec.push_back(xlim);
121 yvec.push_back(y);
122 } else if (ixsec==1) {
123 xvecup.push_back(xlim);
124 yvecup.push_back(y);
125 } else if (ixsec==2) {
126 xvecdwn.push_back(xlim);
127 yvecdwn.push_back(y);
128 }
129 continue;
130 }
131 }
132 }
133 }
134 }
135 // Add points by hand to make it go down to the bottom
136 float yy = yvec.at(yvec.size()-1) - ybinsize/2.;
137 float xx = xvec.at(xvec.size()-1) + 0.5*(xvec.at(xvec.size()-1) - xvec.at(xvec.size()-2));
138 xvec.push_back(xx);
139 yvec.push_back(yy);
140 yy = yvecup.at(yvecup.size()-1) - ybinsize/2.;
141 xx = xvecup.at(xvecup.size()-1) + 0.5*(xvecup.at(xvecup.size()-1) - xvecup.at(xvecup.size()-2));
142 xvecup.push_back(xx);
143 yvecup.push_back(yy);
144 yy = yvecdwn.at(yvecdwn.size()-1) - ybinsize/2.;
145 xx = xvecdwn.at(xvecdwn.size()-1) + 0.5*(xvecdwn.at(xvecdwn.size()-1) - xvecdwn.at(xvecdwn.size()-2));
146 xvecup.push_back(xx);
147 yvecup.push_back(yy);
148
149 cout << "print out some points on the central line..." << endl;
150 for (unsigned int idx = 0; idx < xvec.size(); idx++) {
151 cout << xvec.at(idx) << ", " << yvec.at(idx) << endl;
152 }
153
154 cout << "print out some points on the up line..." << endl;
155 for (unsigned int idx = 0; idx < xvecup.size(); idx++) {
156 cout << xvecup.at(idx) << ", " << yvecup.at(idx) << endl;
157 }
158
159 cout << "print out some points on the down line..." << endl;
160 for (unsigned int idx = 0; idx < xvecdwn.size(); idx++) {
161 cout << xvecdwn.at(idx) << ", " << yvecdwn.at(idx) << endl;
162 }
163
164 // The points are stored in a TGraph
165 TGraph* g = new TGraph(xvec.size(), &xvec[0], &yvec[0]);
166 TGraph* gup = new TGraph(xvecup.size(), &xvecup[0], &yvecup[0]);
167 TGraph* gdwn = new TGraph(xvecdwn.size(),&xvecdwn[0],&yvecdwn[0]);
168 g->SetLineColor(4);
169 g->SetLineWidth(3);
170 gup->SetLineColor(4);
171 gup->SetLineWidth(3);
172 gup->SetLineStyle(2);
173 gdwn->SetLineColor(4);
174 gdwn->SetLineWidth(3);
175 gdwn->SetLineStyle(2);
176
177 // This line is the kinematical limit
178 float mtop = 175.;
179 TLine kinlim = TLine(2.*mtop+ymin, ymin, xmax, xmax-2*mtop);
180 kinlim.SetLineWidth(3);
181
182 char * selection ="Same Sign dileptons with btag selection";
183 const char *obligatory_text = "CMS, #sqrt{s} = 7 TeV, L_{int} = 4.98 fb^{-1}";
184 const char *central_text = "Exclusion #sigma^{prod} = #sigma^{NLO+NLL}";
185 const char *bands_text = "Exclusion #sigma^{prod} = #sigma^{NLO+NLL} #pm 1 #sigma";
186 char* ztitle = "#sigma_{UL} pb";
187
188 // Axis labels, a bit primitive for now
189 char* glmass = "m(#tilde{g}) GeV";
190 char* lspmass = "m(#tilde{#chi}_{1}^{0}) GeV";
191 excl->GetYaxis()->SetTitle(lspmass);
192 excl->GetXaxis()->SetTitle(glmass);
193 excl->SetTitle("T1 model Excluded points in red");
194 ul->GetYaxis()->SetTitle(lspmass);
195 ul->GetXaxis()->SetTitle(glmass);
196 ul->GetZaxis()->SetTitle(ztitle);
197 ul->SetTitle("T1 model Cross-section upper limits (pb)");
198 empty->GetYaxis()->SetTitle(lspmass);
199 empty->GetXaxis()->SetTitle(glmass);
200 empty->SetTitle("T1 model");
201 ulbest->GetYaxis()->SetTitle(lspmass);
202 ulbest->GetXaxis()->SetTitle(glmass);
203 ulbest->SetTitle("T1 model Best region based on exp. limit");
204 acc->GetYaxis()->SetTitle(lspmass);
205 acc->GetXaxis()->SetTitle(glmass);
206 acc->SetTitle("T1 model Acc*Eff*BR for best signal region in percent");
207
208 // Some text
209 TLatex gg;
210 gg.SetTextSize(0.035);
211
212 TLatex gg2;
213 gg2.SetTextSize(0.035);
214
215 TLatex latexLabel;
216 latexLabel.SetTextSize(0.035);
217
218 TLine l1 = TLine(xmin+0.1*(xmax-xmin), ymax-0.14*(ymax-ymin), xmin+0.2*(xmax-xmin), ymax-0.14*(ymax-ymin));
219 l1.SetLineColor(4);
220 l1.SetLineWidth(3);
221
222 TLine l2 = TLine(xmin+0.1*(xmax-xmin), ymax-0.22*(ymax-ymin), xmin+0.2*(xmax-xmin), ymax-0.22*(ymax-ymin));
223 l2.SetLineColor(4);
224 l2.SetLineWidth(3);
225 l2.SetLineStyle(2);
226
227 gStyle->SetOptTitle(0);
228 gStyle->SetPadTickX(1); // To get tick marks on the opposite side of the frame
229 gStyle->SetPadTickY(1);
230
231 // Draw the exclusion map and the limit lines to make sure that they make sense
232 TCanvas* c11 = new TCanvas();
233 c11->SetFillColor(0);
234 c11->GetPad(0)->SetRightMargin(0.07);
235 c11->SetFillColor(0);
236 c11->SetBorderMode(0);
237 c11->GetPad(0)->SetBorderSize(2);
238 c11->GetPad(0)->SetLeftMargin(0.1407035);
239 c11->GetPad(0)->SetTopMargin(0.08);
240 c11->GetPad(0)->SetBottomMargin(0.13);
241
242 excl->Draw("col");
243 TGraph cgraph = TGraph(6);
244 cgraph.SetLineColor(4);
245 cgraph.SetLineWidth(3);
246 cgraph.SetPoint(0, 830, ymin);
247 cgraph.SetPoint(1, 825, 130);
248 cgraph.SetPoint(2, 820, 160);
249 cgraph.SetPoint(3, 810, 240);
250 cgraph.SetPoint(4, 800, 280);
251 cgraph.SetPoint(5, 750, 345);
252 cgraph.Draw("sameC");
253 TGraph dgraph = TGraph(7);
254 dgraph.SetLineColor(4);
255 dgraph.SetLineWidth(3);
256 dgraph.SetLineStyle(2);
257 dgraph.SetPoint(0, 810, ymin);
258 dgraph.SetPoint(1, 805, 130);
259 dgraph.SetPoint(2, 800, 160);
260 dgraph.SetPoint(3, 780, 235);
261 dgraph.SetPoint(4, 770, 270);
262 dgraph.SetPoint(5, 750, 315);
263 dgraph.SetPoint(6, 730, 325);
264 dgraph.Draw("sameC");
265 TGraph ugraph = TGraph(7);
266 ugraph.SetLineColor(4);
267 ugraph.SetLineWidth(3);
268 ugraph.SetLineStyle(2);
269 ugraph.SetPoint(0, 860, ymin);
270 ugraph.SetPoint(1, 855, 130);
271 ugraph.SetPoint(2, 850, 160);
272 ugraph.SetPoint(3, 830, 250);
273 ugraph.SetPoint(4, 820, 295);
274 ugraph.SetPoint(5, 800, 340);
275 ugraph.SetPoint(6, 775, 370);
276 ugraph.Draw("sameC");
277
278 kinlim.Draw();
279
280 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax+0.04*(ymax-ymin), obligatory_text);
281 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax-0.08*(ymax-ymin),selection);
282 gg.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.16*(ymax-ymin), central_text);
283 gg2.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.24*(ymax-ymin), bands_text);
284 l2.Draw();
285 l1.Draw();
286 c11->Print("T1tttt_ExcludedRegionMap.pdf");
287
288
289 // Draw the limit lines on top of the temperature plot
290 TCanvas* c12 = new TCanvas();
291 c12->SetFillColor(0);
292 c12->SetFillColor(0);
293 c12->SetBorderMode(0);
294 c12->GetPad(0)->SetBorderSize(2);
295 c12->GetPad(0)->SetLeftMargin(0.1407035);
296 c12->GetPad(0)->SetTopMargin(0.08);
297 c12->GetPad(0)->SetBottomMargin(0.13);
298
299 ul->Draw("colz");
300 cgraph = TGraph(6);
301 cgraph.SetLineColor(4);
302 cgraph.SetLineWidth(3);
303 cgraph.SetPoint(0, 830, ymin);
304 cgraph.SetPoint(1, 825, 130);
305 cgraph.SetPoint(2, 820, 160);
306 cgraph.SetPoint(3, 810, 240);
307 cgraph.SetPoint(4, 800, 280);
308 cgraph.SetPoint(5, 750, 345);
309 cgraph.Draw("sameC");
310 dgraph = TGraph(7);
311 dgraph.SetLineColor(4);
312 dgraph.SetLineWidth(3);
313 dgraph.SetLineStyle(2);
314 dgraph.SetPoint(0, 810, ymin);
315 dgraph.SetPoint(1, 805, 130);
316 dgraph.SetPoint(2, 800, 160);
317 dgraph.SetPoint(3, 780, 235);
318 dgraph.SetPoint(4, 770, 270);
319 dgraph.SetPoint(5, 750, 315);
320 dgraph.SetPoint(6, 730, 325);
321 dgraph.Draw("sameC");
322 ugraph = TGraph(7);
323 ugraph.SetLineColor(4);
324 ugraph.SetLineWidth(3);
325 ugraph.SetLineStyle(2);
326 ugraph.SetPoint(0, 860, ymin);
327 ugraph.SetPoint(1, 855, 130);
328 ugraph.SetPoint(2, 850, 160);
329 ugraph.SetPoint(3, 830, 250);
330 ugraph.SetPoint(4, 820, 295);
331 ugraph.SetPoint(5, 800, 340);
332 ugraph.SetPoint(6, 775, 370);
333 ugraph.Draw("sameC");
334 kinlim.Draw();
335
336 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax+0.04*(ymax-ymin), obligatory_text);
337 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax-0.08*(ymax-ymin),selection);
338 gg.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.16*(ymax-ymin), central_text);
339 gg2.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.24*(ymax-ymin), bands_text);
340 l2.Draw();
341 l1.Draw();
342 c12->Print("T1tttt_LimitsOnCarpet.pdf");
343
344 //Draw the limit lines and nothing else
345 TCanvas* c13 = new TCanvas();
346 empty->Draw();
347 c13->SetFillColor(0);
348 c13->GetPad(0)->SetRightMargin(0.07);
349 c13->SetFillColor(0);
350 c13->SetBorderMode(0);
351 c13->GetPad(0)->SetBorderSize(2);
352 c13->GetPad(0)->SetLeftMargin(0.1407035);
353 c13->GetPad(0)->SetTopMargin(0.08);
354 c13->GetPad(0)->SetBottomMargin(0.13);
355
356 cgraph = TGraph(6);
357 cgraph.SetLineColor(4);
358 cgraph.SetLineWidth(3);
359 cgraph.SetPoint(0, 830, ymin);
360 cgraph.SetPoint(1, 825, 130);
361 cgraph.SetPoint(2, 820, 160);
362 cgraph.SetPoint(3, 810, 240);
363 cgraph.SetPoint(4, 800, 280);
364 cgraph.SetPoint(5, 750, 345);
365 cgraph.Draw("sameC");
366 dgraph = TGraph(7);
367 dgraph.SetLineColor(4);
368 dgraph.SetLineWidth(3);
369 dgraph.SetLineStyle(2);
370 dgraph.SetPoint(0, 810, ymin);
371 dgraph.SetPoint(1, 805, 130);
372 dgraph.SetPoint(2, 800, 160);
373 dgraph.SetPoint(3, 780, 235);
374 dgraph.SetPoint(4, 770, 270);
375 dgraph.SetPoint(5, 750, 315);
376 dgraph.SetPoint(6, 730, 325);
377 dgraph.Draw("sameC");
378 ugraph = TGraph(7);
379 ugraph.SetLineColor(4);
380 ugraph.SetLineWidth(3);
381 ugraph.SetLineStyle(2);
382 ugraph.SetPoint(0, 860, ymin);
383 ugraph.SetPoint(1, 855, 130);
384 ugraph.SetPoint(2, 850, 160);
385 ugraph.SetPoint(3, 830, 250);
386 ugraph.SetPoint(4, 820, 295);
387 ugraph.SetPoint(5, 800, 340);
388 ugraph.SetPoint(6, 775, 370);
389 ugraph.Draw("sameC");
390 kinlim.Draw();
391
392 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax+0.04*(ymax-ymin), obligatory_text);
393 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax-0.08*(ymax-ymin),selection);
394 gg.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.16*(ymax-ymin), central_text);
395 gg2.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.24*(ymax-ymin), bands_text);
396 l2.Draw();
397 l1.Draw();
398 c13->Print("T1tttt_LimitsOnWhite.pdf");
399
400 //Draw the best region and nothing else
401 TCanvas* c14 = new TCanvas();
402 c14->SetFillColor(0);
403 c14->GetPad(0)->SetRightMargin(0.07);
404 c14->SetFillColor(0);
405 c14->SetBorderMode(0);
406 c14->GetPad(0)->SetBorderSize(2);
407 c14->GetPad(0)->SetLeftMargin(0.1407035);
408 c14->GetPad(0)->SetTopMargin(0.08);
409 c14->GetPad(0)->SetBottomMargin(0.13);
410
411 ulbest->Draw("textcol");
412
413 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax+0.04*(ymax-ymin), obligatory_text);
414 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax-0.08*(ymax-ymin),selection);
415 kinlim.Draw();
416 c14->Print("T1tttt_BestSignalRegion.pdf");
417
418 //Draw the acceptance carpet
419 TCanvas* c15 = new TCanvas();
420 c15->SetFillColor(0);
421 c15->SetFillColor(0);
422 c15->SetBorderMode(0);
423 c15->GetPad(0)->SetBorderSize(2);
424 c15->GetPad(0)->SetLeftMargin(0.1407035);
425 c15->GetPad(0)->SetTopMargin(0.08);
426 c15->GetPad(0)->SetBottomMargin(0.13);
427
428 acc->Draw("colz");
429
430 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax+0.04*(ymax-ymin), obligatory_text);
431 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax-0.08*(ymax-ymin),selection);
432 kinlim.Draw();
433 c15->Print("T1tttt_AcceptanceCarpet.pdf");
434
435 //Draw the smoothed limit lines and nothing else
436 TCanvas* c16 = new TCanvas();
437 c16->SetFillColor(0);
438 c16->GetPad(0)->SetRightMargin(0.07);
439 c16->SetFillColor(0);
440 c16->SetBorderMode(0);
441 c16->GetPad(0)->SetBorderSize(2);
442 c16->GetPad(0)->SetLeftMargin(0.1407035);
443 c16->GetPad(0)->SetTopMargin(0.08);
444 c16->GetPad(0)->SetBottomMargin(0.13);
445
446 empty->Draw();
447 kinlim.Draw();
448
449 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax+0.04*(ymax-ymin), obligatory_text);
450 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax-0.08*(ymax-ymin),selection);
451 gg2.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.16*(ymax-ymin), bands_text);
452
453 // A polyline for the legend
454 TPolyLine *lg = new TPolyLine();
455 lg->SetLineColor(kBlue);
456 lg->SetFillStyle(3244);
457 lg->SetFillColor(kBlue);
458 lg->SetNextPoint(xmin+0.1*(xmax-xmin),ymax-0.16*(ymax-ymin));
459 lg->SetNextPoint(xmin+0.2*(xmax-xmin),ymax-0.16*(ymax-ymin));
460 lg->SetNextPoint(xmin+0.2*(xmax-xmin),ymax-0.13*(ymax-ymin));
461 lg->SetNextPoint(xmin+0.1*(xmax-xmin),ymax-0.13*(ymax-ymin));
462 lg->SetNextPoint(xmin+0.1*(xmax-xmin),ymax-0.16*(ymax-ymin));
463 lg->Draw("fl");
464
465 // A polyline with the smoothed limit
466 TPolyLine *psm = new TPolyLine();
467 psm->SetLineColor(kBlue);
468 psm->SetFillStyle(3244);
469 psm->SetFillColor(kBlue);
470 psm->SetNextPoint(805.,ymin);
471 psm->SetNextPoint(805.,50.);
472 psm->SetNextPoint(790.,180.);
473 psm->SetNextPoint(780.,250.);
474 psm->SetNextPoint(740.,740.-2*mtop);
475 psm->SetNextPoint(770.,770.-2*mtop);
476 psm->SetNextPoint(815.,300.);
477 psm->SetNextPoint(840.,200.);
478 psm->SetNextPoint(855.,50.);
479 psm->SetNextPoint(860.,ymin);
480 psm->SetNextPoint(805.,ymin);
481 psm->Draw("fl");
482 c16->Print("T1tttt_SmoothLimitsOnWhite.pdf");
483
484
485 //Draw the smoothed limit lines with the upper limit carpet
486 TCanvas* c17 = new TCanvas();
487
488 c17->SetFillColor(0);
489 c17->SetFillColor(0);
490 c17->SetBorderMode(0);
491 c17->GetPad(0)->SetBorderSize(2);
492 c17->GetPad(0)->SetLeftMargin(0.1407035);
493 c17->GetPad(0)->SetTopMargin(0.08);
494 c17->GetPad(0)->SetBottomMargin(0.13);
495
496 ul->Draw("colz");
497
498 // empty->Draw();
499 kinlim.Draw();
500
501 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax+0.04*(ymax-ymin), obligatory_text);
502 latexLabel.DrawLatex(xmin+0.1*(xmax-xmin), ymax-0.08*(ymax-ymin),selection);
503 gg2.DrawLatex(xmin+0.21*(xmax-xmin), ymax-0.16*(ymax-ymin), bands_text);
504
505 // A polyline for the legend
506 lg->SetLineColor(1);
507 lg->SetFillStyle(3344);
508 lg->SetFillColor(1);
509 lg->Draw("fl");
510 lg->Draw();
511
512 // A polyline with the smoothed limit
513 psm->SetLineColor(1);
514 psm->SetFillStyle(3244);
515 psm->SetFillColor(1);
516 psm->Draw("fl");
517 psm->Draw();
518
519
520 c17->Print("T1tttt_LimitsOnCarpetLikePaper.pdf");
521
522
523 }