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
Log Message:
first

File Contents

# User Rev Content
1 claudioc 1.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     }