2 |
|
#include <vector> |
3 |
|
#include <sys/stat.h> |
4 |
|
#include <sstream> |
5 |
+ |
#include <assert.h> |
6 |
|
|
7 |
|
#include <TCut.h> |
8 |
|
#include <TLatex.h> |
42 |
|
|
43 |
|
bool drawefficiencydesertline=false; |
44 |
|
|
45 |
+ |
bool wrongwaytodothis=true; |
46 |
+ |
|
47 |
|
string xsecfilename; |
48 |
|
|
49 |
+ |
|
50 |
|
void set_range(TH2F *histo, int scantype, bool pushoutlabels); |
51 |
|
void smooth_line(TGraph *gr); |
52 |
< |
void decorate_mSUGRA(TH2F *cleanhisto, TVirtualPad *cvsSys,TGraph *expected,TGraph *expected2,TGraph *observed); |
52 |
> |
void draw_diagonal_xchange(int scantype, std::string scanx); |
53 |
|
TH2F* adjust_histo(TH2F *oldhist, TH2F *refhisto); |
54 |
|
TGraph* get_mSUGRA_exclusion_line(TH2F *exclusionhisto, int scantype); |
55 |
|
TGraph* thin_line(TGraph *gr); |
56 |
|
TGraph *MarcosExclusionLine(TH2F *exclusionshape, int scantype); |
57 |
+ |
TH2F* get_XS(string filename, string mass, TH2F *histo); |
58 |
+ |
|
59 |
+ |
float getSMSxs(float mlsp,float mglu) { |
60 |
+ |
TH2F *refh = new TH2F("ReferenceHisto","ReferenceHisto",(int)((mgluend-mglustart)/mglustep+1),mglustart-0.5*mglustep,mgluend+0.5*mglustep,int((mLSPend-mLSPstart)/mLSPstep+1),mLSPstart-0.5*mLSPstep,mLSPend+0.5*mLSPstep); |
61 |
+ |
refh->SetBinContent(refh->FindBin(mglu,mlsp),1);//only compute the cross section for our point |
62 |
+ |
TFile *xsecfile = new TFile((PlottingSetup::cbafbasedir+"/"+PlottingSetup::SMSReferenceXSFile).c_str()); |
63 |
+ |
if(xsecfile->IsZombie()) { |
64 |
+ |
write_error(__FUNCTION__,"Cross section file is invalid!!!!"); |
65 |
+ |
return -1; |
66 |
+ |
} |
67 |
+ |
xsecfile->Close(); |
68 |
+ |
delete xsecfile; |
69 |
+ |
TH2F *xsec = adjust_histo(get_XS(PlottingSetup::cbafbasedir+"/"+PlottingSetup::SMSReferenceXSFile,"gluino",refh),refh); |
70 |
+ |
int GlobalBin = xsec->FindBin(mglu,mlsp); |
71 |
+ |
float refxs=xsec->GetBinContent(GlobalBin); |
72 |
+ |
delete refh; |
73 |
+ |
delete xsec; |
74 |
+ |
return refxs; |
75 |
+ |
} |
76 |
|
|
77 |
|
void write_SMS_text(int scantype, std::string& scanx, float xpos = 0.22 ) { |
78 |
|
string legT5zz="pp #rightarrow #tilde{g} #tilde{g}, #tilde{g} #rightarrow 2j + #chi^{0}_{2}, #chi^{0}_{2} #rightarrow Z #chi^{0}_{1}"; |
97 |
|
// if(scantype==PlottingSetup::GMSB) title3->Draw("same"); |
98 |
|
} |
99 |
|
|
100 |
+ |
void draw_diagonal_xchange(int scantype, std::string scanx = "" ) { |
101 |
+ |
// Line marking the diagonal |
102 |
+ |
TLine *line; |
103 |
+ |
float verticaloffset=0.0; |
104 |
+ |
if(scantype==PlottingSetup::GMSB) verticaloffset=75.0; |
105 |
+ |
line = new TLine(50.+75.0, 50.0+verticaloffset, 1200., 1200.0-75.0+verticaloffset); |
106 |
+ |
line->SetLineStyle(7); |
107 |
+ |
line->SetLineWidth(4); |
108 |
+ |
//line->Draw("same"); // Do not draw: draw the other one instead |
109 |
+ |
|
110 |
+ |
// Add a dashed line to indicate where x changes |
111 |
+ |
float offset = 0.; |
112 |
+ |
if ( 0 == scanx.compare("0.5") ) { offset = 91.2/0.5; } |
113 |
+ |
else if ( 0 == scanx.compare("0.25") ) { offset = 91.2/0.25; } |
114 |
+ |
else if ( 0 == scanx.compare("0.75") ) { offset = 91.2/0.75; } |
115 |
+ |
else if ( scantype==PlottingSetup::GMSB) { offset = 0; }; |
116 |
+ |
|
117 |
+ |
if ( offset>0. ) { |
118 |
+ |
line->DrawLine(50+offset, 50.0, 1175., 1175.0-offset); |
119 |
+ |
}else if ( scantype==PlottingSetup::GMSB ) { |
120 |
+ |
line->DrawLine(100, 100, 1175., 1175.0-offset); |
121 |
+ |
} |
122 |
+ |
} |
123 |
+ |
|
124 |
|
void fill_with_text(TGraph *real, TGraph *down, TGraph *up, TVirtualPad *can, int scantype, std::string scanx = "") { |
125 |
|
can->cd(); |
126 |
|
float xpos_of_text = 0.22; |
127 |
|
TLegend* this_leg = new TLegend(xpos_of_text,0.6,0.38,0.75); |
128 |
+ |
//TLegend* this_leg = new TLegend(xpos_of_text,0.55,0.45,0.75,"n_{jets} #geq 3"); // this was the style of the paper. |
129 |
|
this_leg->SetFillColor(0); |
130 |
|
this_leg->SetBorderSize(0); |
131 |
|
this_leg->SetTextSize(0.035); |
132 |
+ |
//this_leg->SetTextSize(0.04); // paper style. |
133 |
|
if(scantype==PlottingSetup::SMS||scantype==PlottingSetup::GMSB) { |
134 |
|
//this_leg->AddEntry(real,"#sigma^{prod} = #sigma^{NLO-QCD}" , "l"); |
135 |
|
//this_leg->AddEntry(up,"#sigma^{prod} = 3 #times #sigma^{NLO-QCD}" , "l"); |
142 |
|
} |
143 |
|
|
144 |
|
this_leg->Draw(); |
145 |
< |
|
145 |
> |
TText *title = write_text(xpos_of_text+0.005,0.52,"JZB"); |
146 |
> |
title->SetTextSize(0.04); |
147 |
> |
title->SetTextAlign(13); |
148 |
> |
title->SetTextFont(62); |
149 |
> |
title->Draw(); |
150 |
> |
|
151 |
|
write_SMS_text( scantype, scanx, xpos_of_text ); |
152 |
|
|
153 |
|
// //string legT5zz="pp #rightarrow #tilde{g} #tilde{g}, #tilde{g} #rightarrow 2j + #chi^{0}_{1}, #chi^{0}_{1} #rightarrow Z + #tilde{G}"; |
168 |
|
// title3->SetTextColor(kRed); |
169 |
|
//// if(scantype==PlottingSetup::GMSB) title3->Draw("same"); |
170 |
|
DrawPrelim(); |
171 |
< |
TLine *line; |
118 |
< |
float verticaloffset=0.0; |
119 |
< |
if(scantype==PlottingSetup::GMSB) verticaloffset=75.0; |
120 |
< |
line = new TLine(50.+75.0, 50.0+verticaloffset, 1200., 1200.0-75.0+verticaloffset); |
121 |
< |
line->SetLineStyle(2); |
122 |
< |
line->SetLineWidth(2); |
123 |
< |
line->Draw("same"); |
171 |
> |
draw_diagonal_xchange( scantype, scanx ); |
172 |
|
} |
173 |
|
|
174 |
|
TH2F* prep_histo(TH2F *oldhist, int scantype) {///DONE |
175 |
< |
TH2F *histo = new TH2F(oldhist->GetName(),oldhist->GetName(), |
175 |
> |
string name=oldhist->GetName(); |
176 |
> |
oldhist->SetName(((string)"unprepped"+oldhist->GetName()).c_str()); |
177 |
> |
TH2F *histo = new TH2F(name.c_str(),name.c_str(), |
178 |
|
oldhist->GetNbinsX(),oldhist->GetXaxis()->GetBinLowEdge(1),oldhist->GetXaxis()->GetBinLowEdge(oldhist->GetNbinsX())+oldhist->GetXaxis()->GetBinWidth(oldhist->GetNbinsX()), |
179 |
|
oldhist->GetNbinsY(),oldhist->GetYaxis()->GetBinLowEdge(1),oldhist->GetYaxis()->GetBinLowEdge(oldhist->GetNbinsY())+oldhist->GetYaxis()->GetBinWidth(oldhist->GetNbinsY())); |
180 |
|
|
207 |
|
} |
208 |
|
exclusion->SetLineColor(kBlue); |
209 |
|
exclusion->SetLineWidth(2); |
210 |
+ |
//exclusion->SetLineWidth(4); // paper style |
211 |
|
exclusion->SetLineStyle(isprimary); |
212 |
|
return exclusion; |
213 |
|
} |
266 |
|
stringstream partial; |
267 |
|
partial << "Limits/exclusion__" << limits->GetName(); |
268 |
|
fill_with_text(exclline,excllined3,excllinet3,ca->cd(4),scantype); |
269 |
< |
CompleteSave(ca,partial.str()); |
269 |
> |
// CompleteSave(ca,partial.str()); |
270 |
|
|
271 |
|
ca->cd(5); |
272 |
|
(hardlimit(rellimits))->Draw("COL"); |
273 |
|
exclline->Draw("same"); |
274 |
+ |
TText *a = write_title("Exclusion shape for 3x#sigma_{ref}"); |
275 |
+ |
a->Draw(); |
276 |
|
ca->cd(6); |
277 |
|
(hardlimit(rellimitst3))->Draw("COL"); |
278 |
|
excllinet3->Draw("same"); |
279 |
+ |
TText *b = write_title("Exclusion shape for #sigma_{ref}"); |
280 |
+ |
b->Draw(); |
281 |
|
ca->cd(7); |
282 |
|
(hardlimit(rellimitsd3))->Draw("COLZ"); |
283 |
+ |
TText *c = write_title("Exclusion shape for #sigma_{ref}/3"); |
284 |
+ |
c->Draw(); |
285 |
|
excllined3->Draw("same"); |
286 |
|
|
287 |
|
CompleteSave(ca,partial.str()+"__PlusInfo"); |
292 |
|
|
293 |
|
void get_Marias_exclusion_line(TH2F *limit_ref, float pointsX[200], float pointsY[200], int &ixNew, int &counter, int &foundDiag) { |
294 |
|
// part of Mariarosaria's getRefXsecGraph function |
238 |
– |
double refMult = 3.0; |
295 |
|
bool enough = false; |
296 |
|
Int_t nBinX= limit_ref->GetXaxis()->GetNbins(); |
297 |
|
Int_t nBinY= limit_ref->GetYaxis()->GetNbins(); |
302 |
|
if(limit_ref->GetBinContent(i,j)==0) continue; |
303 |
|
if( limit_ref->GetBinContent(i,j)>0. && limit_ref->GetBinContent(i,j)<=1.) { |
304 |
|
double xsLimitAbove = limit_ref->GetBinContent(i, j+1); |
249 |
– |
double xsLimitBelow = limit_ref->GetBinContent(i, j-1); |
305 |
|
|
306 |
|
double xsLimit = limit_ref->GetBinContent(i, j); |
307 |
|
if((fail(1.0,xsLimitAbove)) && (!fail(1.0,xsLimit)) ) { |
403 |
|
} |
404 |
|
realgraph->SetLineColor(TColor::GetColor("#151515")); //nice black |
405 |
|
realgraph->SetLineWidth(2); |
406 |
+ |
//realgraph->SetLineWidth(4);//paper style |
407 |
|
|
408 |
|
return realgraph; |
409 |
|
} |
471 |
|
if(drawefficiencydesertline) { |
472 |
|
desertline = new TLine(375,50,1200,875); |
473 |
|
desertline->SetLineWidth(3); |
474 |
+ |
//desertline->SetLineWidth(4); // paper style |
475 |
|
desertline->SetLineColor(kBlack); |
476 |
|
desertline->Draw("same"); |
477 |
|
} |
478 |
|
|
479 |
< |
fill_with_text(exclline,excllined3,excllinet3,finalcanvas,scantype,scanx); |
479 |
> |
exclline->Draw("c"); |
480 |
> |
|
481 |
> |
// fill_with_text(exclline,excllined3,excllinet3,finalcanvas,scantype,scanx); |
482 |
|
stringstream real; |
483 |
|
real << "Limits/final_exclusion__" << limits->GetName(); |
484 |
+ |
|
485 |
+ |
if(Contains(limits->GetName(),"bestlimits")) { |
486 |
+ |
cout << "----------> " << limits->GetName() << endl; |
487 |
+ |
TFile *f = new TFile("limits.root","RECREATE"); |
488 |
+ |
thinexcline->SetName("ExclusionLine"); |
489 |
+ |
limits->SetName("UpperLimits"); |
490 |
+ |
limits->Write(); |
491 |
+ |
thinexcline->Write(); |
492 |
+ |
f->Close(); |
493 |
+ |
} |
494 |
+ |
|
495 |
+ |
|
496 |
|
exclline->Draw("l"); |
497 |
|
if(drawdoubleline) thinexcline->Draw(""); |
498 |
|
excllinet3->Draw(""); |
511 |
|
if(!file0) return hpt_; |
512 |
|
TDirectory *dir; |
513 |
|
TH2D * hMuPt; |
443 |
– |
TH1* H; |
514 |
|
|
515 |
|
if(dirName == "0") { |
516 |
|
hMuPt = (TH2D*) file0->Get(histoName); |
643 |
|
for(int i=1;i<exclusionhisto->GetNbinsX();i++) { |
644 |
|
pair<float,float> anything = find_point(exclusionhisto,i); |
645 |
|
pair<float,float> intthing = find_interpolated_point(exclusionhisto,i); |
576 |
– |
float value=anything.second; |
646 |
|
if(intthing.second>anything.second) anything.second=intthing.second; |
647 |
|
if(anything.second>100&&anything.second<1500) points.push_back(anything); |
648 |
|
} |
660 |
|
float lastx2=0; |
661 |
|
float lasty2=0; |
662 |
|
|
663 |
< |
for(int i=0;i<points.size();i++) { |
663 |
> |
for(int i=0;i<(int)points.size();i++) { |
664 |
|
xpoints[i]=points[i].first; |
665 |
|
spoints[i]=points[i].second; |
666 |
|
if(scantype==PlottingSetup::mSUGRA) { |
667 |
< |
if(i>1&&i<points.size()-1) spoints[i]=(1.0/3.0)*(points[i-1].second+points[i].second+points[i+1].second); |
668 |
< |
if(i>2&&i<points.size()-2) spoints[i]=(1.0/5.0)*(points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second); |
669 |
< |
if(i>3&&i<points.size()-3) spoints[i]=(1.0/7.0)*(points[i-3].second+points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second+points[i+3].second); |
667 |
> |
if(i>1&&i<(int)points.size()-1) spoints[i]=(1.0/3.0)*(points[i-1].second+points[i].second+points[i+1].second); |
668 |
> |
if(i>2&&i<(int)points.size()-2) spoints[i]=(1.0/5.0)*(points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second); |
669 |
> |
if(i>3&&i<(int)points.size()-3) spoints[i]=(1.0/7.0)*(points[i-3].second+points[i-2].second+points[i-1].second+points[i].second+points[i+1].second+points[i+2].second+points[i+3].second); |
670 |
|
} |
671 |
|
|
672 |
|
bool usethispoint=true; |
684 |
|
pointcounter++; |
685 |
|
} |
686 |
|
} |
687 |
< |
for(int i=pointcounter;i<points.size();i++) graph->SetPoint(i,lastx,lasty); |
687 |
> |
for(int i=pointcounter;i<=(int)points.size();i++) graph->SetPoint(i,lastx,lasty); |
688 |
|
if(scantype==PlottingSetup::GMSB||scantype==PlottingSetup::SMS) { |
689 |
|
//The final point will be a continuation of the last one, towards the diagonal |
690 |
|
float x,y; |
696 |
|
return graph; |
697 |
|
} |
698 |
|
|
699 |
< |
void draw_mSUGRA_exclusion(TH2F *crosssection, TH2F *limitmap, TH2F *expmap, TH2F *expplusmap, TH2F *expminusmap, TH2F *exp2plusmap, TH2F *exp2minusmap) { |
699 |
> |
TH2F* cast_into_shape(TH2F *origin, TH2F *reference) { |
700 |
> |
TH2F *newh = (TH2F*)reference->Clone(origin->GetName()); |
701 |
> |
for(int ix=1;ix<=reference->GetNbinsX();ix++) { |
702 |
> |
for(int iy=1;iy<=reference->GetNbinsY();iy++) { |
703 |
> |
// reference->SetBinContent(ix,iy,origin->GetBinContent(ix,iy)); |
704 |
> |
newh->SetBinContent(ix,iy,origin->GetBinContent(ix,iy)); |
705 |
> |
} |
706 |
> |
} |
707 |
> |
return newh; |
708 |
> |
} |
709 |
> |
|
710 |
> |
void draw_mSUGRA_exclusion(TH2F *ocrosssection, TH2F *oFilterEfficiency, TH2F *oabsXS, TH2F *limitmap, TH2F *expmap, TH2F *expplusmap, TH2F *expminusmap, TH2F *exp2plusmap, TH2F *exp2minusmap) { |
711 |
> |
TH2F *crosssection = (TH2F*)ocrosssection->Clone("crosssection"); |
712 |
> |
// TH2F *limitmap = (TH2F*)olimitmap->Clone(((string)olimitmap->GetName()+"clone").c_str()); |
713 |
|
TH2F *cleanhisto = (TH2F*)limitmap->Clone("clean"); |
714 |
|
for(int ix=1;ix<=cleanhisto->GetNbinsX();ix++) { |
715 |
|
for(int iy=1;iy<=cleanhisto->GetNbinsY();iy++) { |
716 |
|
cleanhisto->SetBinContent(ix,iy,0); |
717 |
|
} |
718 |
|
} |
719 |
+ |
|
720 |
+ |
|
721 |
+ |
TH2F *FilterEfficiency; |
722 |
+ |
TH2F *absXS; |
723 |
+ |
|
724 |
+ |
|
725 |
+ |
|
726 |
+ |
|
727 |
+ |
write_warning(__FUNCTION__,"You'll want to switch off 'wrongwaytodothis')"); |
728 |
+ |
|
729 |
+ |
if(wrongwaytodothis) { |
730 |
+ |
//this part is the one you want to remove. |
731 |
+ |
TFile *Efficiencies = new TFile("FilterEfficiencyv3.root"); |
732 |
+ |
FilterEfficiency = cast_into_shape((TH2F*) Efficiencies->Get("FilterEfficiency"),limitmap); |
733 |
+ |
assert(FilterEfficiency); |
734 |
+ |
assert(crosssection); |
735 |
+ |
absXS=(TH2F*)crosssection->Clone("absXS"); |
736 |
+ |
crosssection->Multiply(FilterEfficiency); |
737 |
+ |
} else { |
738 |
+ |
//this part is the one you want to keep! |
739 |
+ |
FilterEfficiency=(TH2F*)oFilterEfficiency->Clone("FilterEfficiency"); |
740 |
+ |
absXS=(TH2F*)oabsXS->Clone("absXS"); |
741 |
+ |
} |
742 |
+ |
|
743 |
+ |
|
744 |
|
|
745 |
|
TH2F *limits = (TH2F*)limitmap->Clone("limits"); |
746 |
|
set_range(limits,true,false); |
791 |
|
if(draw2sigma) smooth_line(expected2); |
792 |
|
|
793 |
|
TCanvas *te = new TCanvas("te","te"); |
794 |
< |
decorate_mSUGRA(cleanhisto,te,expected,expected2,observed); |
794 |
> |
te->SetRightMargin(standardmargin); |
795 |
> |
// decorate_mSUGRA(cleanhisto,te,expected,expected2,observed); |
796 |
> |
TH2F *noh = new TH2F("noh","noh",1,1,2,1,1,2); |
797 |
> |
SugarCoatThis(te,10,noh,observed); |
798 |
> |
// expected->Draw("c"); |
799 |
> |
// observed->Draw("c"); |
800 |
|
stringstream saveas; |
801 |
|
if((int)((string)limitmap->GetName()).find("limitmap")>0) saveas << "Limits/final_exclusion_for_JZB_geq_" << ((string)limitmap->GetName()).substr(((string)limitmap->GetName()).find("limitmap")+8,10); |
802 |
|
else saveas << "Limits/final_exclusion_for_bestlimits"; |
803 |
|
CompleteSave(te,saveas.str()); |
804 |
|
delete te; |
805 |
|
|
806 |
< |
TCanvas *overview = new TCanvas("overview","overview",1000,1000); |
806 |
> |
TCanvas *overview = new TCanvas("overview","overview",1500,1000); |
807 |
> |
|
808 |
|
set_range(crosssection,true,false); |
809 |
|
set_range(limits,true,false); |
810 |
|
set_range(limitmap,true,false); |
811 |
|
|
812 |
< |
overview->Divide(2,2); |
812 |
> |
overview->Divide(3,2); |
813 |
|
overview->cd(1); |
814 |
|
overview->cd(1)->SetLogz(1); |
815 |
< |
crosssection->GetZaxis()->SetRangeUser(0.0001,100); |
816 |
< |
crosssection->Draw("COLZ"); |
815 |
> |
absXS->GetZaxis()->SetRangeUser(0.0001,100); |
816 |
> |
absXS->Draw("COLZ"); |
817 |
|
TText *title0 = write_title("Cross Section"); |
818 |
|
title0->Draw("same"); |
819 |
|
overview->cd(2); |
820 |
< |
overview->cd(2)->SetLogz(1); |
821 |
< |
limits->GetZaxis()->SetRangeUser(0.1,100); |
820 |
> |
FilterEfficiency->GetZaxis()->SetRangeUser(0.01,0.7); |
821 |
> |
FilterEfficiency->Draw("COLZ"); |
822 |
> |
TText *title0aa = write_title("Filter #epsilon"); |
823 |
> |
title0aa->Draw("same"); |
824 |
> |
overview->cd(3); |
825 |
> |
overview->cd(3)->SetLogz(1); |
826 |
> |
crosssection->GetZaxis()->SetRangeUser(0.0001,100); |
827 |
> |
crosssection->Draw("COLZ"); |
828 |
> |
TText *title0a = write_title("Filter #epsilon x Cross Section"); |
829 |
> |
title0a->Draw("same"); |
830 |
> |
|
831 |
> |
overview->cd(4); |
832 |
> |
overview->cd(4)->SetLogz(1); |
833 |
> |
limits->GetZaxis()->SetRangeUser(0.01,100); |
834 |
|
limits->Draw("COLZ"); |
835 |
|
TText *title1 = write_title("Cross Section Upper Limit"); |
836 |
|
title1->Draw("same"); |
837 |
< |
overview->cd(3); |
837 |
> |
overview->cd(5); |
838 |
|
limitmap->Draw("COLZ"); |
839 |
|
TText *title2 = write_title("UL/XS"); |
840 |
|
title2->Draw("same"); |
841 |
|
observed->Draw("c"); |
842 |
< |
overview->cd(4); |
843 |
< |
decorate_mSUGRA(cleanhisto,overview->cd(4),expected,expected2,observed); |
842 |
> |
overview->cd(6); |
843 |
> |
overview->cd(6)->SetRightMargin(standardmargin); |
844 |
> |
// decorate_mSUGRA(cleanhisto,overview->cd(4),expected,expected2,observed); |
845 |
> |
SugarCoatThis(overview->cd(6),10,noh,observed); |
846 |
> |
// observed->Draw("c"); |
847 |
|
stringstream saveas2; |
848 |
|
if((int)((string)limitmap->GetName()).find("limitmap")>0) saveas2 << "Limits/exclusion_overview_for_JZB_geq_" << ((string)limitmap->GetName()).substr(((string)limitmap->GetName()).find("limitmap")+8,10); |
849 |
|
else saveas2 << "Limits/exclusion_overview_for_bestlimits"; |
850 |
|
CompleteSave(overview,saveas2.str()); |
851 |
|
delete overview; |
852 |
< |
|
852 |
> |
delete noh; |
853 |
> |
delete crosssection; |
854 |
> |
delete absXS; |
855 |
> |
delete FilterEfficiency; |
856 |
|
|
857 |
|
} |
858 |
|
|
871 |
|
int mappoint=name.find("map"); |
872 |
|
if(mappoint<0||mappoint>500) return name; // this mean that something weird is happening |
873 |
|
stringstream nice_label; |
874 |
< |
nice_label << "JZB > " << name.substr(mappoint+3,name.size()) << " GeV"; |
874 |
> |
string identifier=name.substr(mappoint+3,name.size()); |
875 |
> |
if(identifier!="0") nice_label << "JZB > " << name.substr(mappoint+3,name.size()) << " GeV"; |
876 |
> |
else nice_label << "JZB shape"; |
877 |
|
return nice_label.str(); |
878 |
|
} |
879 |
|
|
901 |
|
|
902 |
|
float findmaxentry(vector<TH2F*> histos, int i, int j) { |
903 |
|
float max = histos[0]->GetBinContent(i,j); |
904 |
< |
for(int k=0;k<histos.size();k++) { |
904 |
> |
for(int k=0;k<(int)histos.size();k++) { |
905 |
|
float entry = histos[k]->GetBinContent(i,j); |
906 |
|
if(entry>=max) max=entry; |
907 |
|
} |
917 |
|
} |
918 |
|
if(explimits.size()==0) { |
919 |
|
write_warning(__FUNCTION__,"There are no expected limits! Will compute best limits based on observed limits! (WATCH OUT THIS IS DISCOURAGED!"); |
920 |
< |
for(int i=0;i<obslimits.size();i++) explimits.push_back(obslimits[i]); |
920 |
> |
for(int i=0;i<(int)obslimits.size();i++) explimits.push_back(obslimits[i]); |
921 |
|
} |
922 |
|
TH2F *bestlimit=(TH2F*)obslimits[0]->Clone("bestlimits"); |
923 |
|
TH2F *bestexplimit=(TH2F*)obslimits[0]->Clone("bestexplimits"); |
932 |
|
float min=findmaxentry(explimits,i,j); |
933 |
|
float omin=obslimits[0]->GetBinContent(i,j); |
934 |
|
int source=0; |
935 |
< |
for(int k=0;k<explimits.size();k++) { |
935 |
> |
for(int k=0;k<(int)explimits.size();k++) { |
936 |
|
float currlim=explimits[k]->GetBinContent(i,j); |
937 |
< |
if(currlim<min&&currlim>0) { |
937 |
> |
if(currlim<=min&&currlim>0) { |
938 |
|
min=currlim; |
939 |
|
omin=obslimits[k]->GetBinContent(i,j); |
940 |
|
source=k+1; |
964 |
|
bestlimitsource->GetYaxis()->CenterTitle(0); |
965 |
|
bestlimitsource->Draw("COL"); |
966 |
|
gPad->Update(); |
834 |
– |
if(scantype!=PlottingSetup::mSUGRA) bestlimitsource->Draw("TEXT,same"); |
967 |
|
TLegend *sourceleg = new TLegend(0.2,0.5,0.55,0.75); |
968 |
< |
for(int i=0;i<explimits.size();i++) { |
968 |
> |
for(int i=0;i<(int)explimits.size();i++) { |
969 |
|
stringstream legendentry; |
970 |
< |
legendentry << i+1 << " = " << give_nice_source_label(explimits[i]->GetName()); |
970 |
> |
legendentry << give_nice_source_label(explimits[i]->GetName()); |
971 |
|
Int_t currcol=get_exclusion_region_color(i+1,bestlimitsource); |
972 |
|
explimits[i]->SetFillColor(currcol); |
973 |
|
explimits[i]->SetLineColor(currcol); |
988 |
|
allbestexplimits.push_back(bestexp2mlimit); |
989 |
|
|
990 |
|
delete canlimsource; |
859 |
– |
delete bestexplimit; |
991 |
|
delete bestlimitsource; |
992 |
|
return bestlimit; |
993 |
|
} |
1003 |
|
} |
1004 |
|
xsecfile->Close(); |
1005 |
|
} |
1006 |
< |
if(scantype!=PlottingSetup::mSUGRA) for(int i=0;i<limits.size();i++) limits[i]->Scale(1./0.19); // because for T5zz we forced one z to decay leptonically |
1006 |
> |
if(scantype!=PlottingSetup::mSUGRA) for(int i=0;i<(int)limits.size();i++) limits[i]->Scale(1./0.19); // because for T5zz we forced one z to decay leptonically |
1007 |
|
|
1008 |
|
vector<TH2F*> explimits; |
1009 |
|
vector<TH2F*> exp1mlimits; |
1013 |
|
vector<TH2F*> obslimits; |
1014 |
|
vector<TH2F*> flipmaps; |
1015 |
|
vector<TH2F*> crosssections; |
1016 |
< |
|
1017 |
< |
for(int ilim=0;ilim<limits.size();ilim++) { |
1016 |
> |
vector<TH2F*> AbsCrossSection; |
1017 |
> |
vector<TH2F*> FilterEfficiencies; |
1018 |
> |
for(int ilim=0;ilim<(int)limits.size();ilim++) { |
1019 |
|
if(TString(limits[ilim]->GetName()).Contains("_explimitmap")) explimits.push_back(limits[ilim]); |
1020 |
|
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_exp1plimitmap")) exp1plimits.push_back(limits[ilim]); |
1021 |
|
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_exp1mlimitmap")) exp1mlimits.push_back(limits[ilim]); |
1022 |
|
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_exp2plimitmap")) exp2plimits.push_back(limits[ilim]); |
1023 |
|
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_exp2mlimitmap")) exp2mlimits.push_back(limits[ilim]); |
1024 |
< |
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_absolutecrosssectionmap")) crosssections.push_back(limits[ilim]); |
1024 |
> |
// if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_XS")) crosssections.push_back(limits[ilim]); |
1025 |
> |
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_absXS")) AbsCrossSection.push_back(limits[ilim]); |
1026 |
> |
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_FilterEfficiency")) FilterEfficiencies.push_back(limits[ilim]); |
1027 |
> |
if(wrongwaytodothis) { |
1028 |
> |
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_XS")) AbsCrossSection.push_back(limits[ilim]); |
1029 |
> |
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_absXS")) crosssections .push_back(limits[ilim]); |
1030 |
> |
if(scantype==PlottingSetup::mSUGRA && TString(limits[ilim]->GetName()).Contains("_XS")) FilterEfficiencies.push_back(limits[ilim]); |
1031 |
> |
} |
1032 |
|
if(TString(limits[ilim]->GetName()).Contains("_limitmap")) obslimits.push_back(limits[ilim]); |
1033 |
|
// if(TString(limits[ilim]->GetName()).Contains("_limitflipmap")) flipmaps.push_back(limits[ilim]); |
1034 |
|
} |
1035 |
|
|
1036 |
+ |
cout << "Size: " << AbsCrossSection.size() << endl; |
1037 |
|
TH2F *xsec; |
1038 |
|
if(scantype!=PlottingSetup::mSUGRA) xsec = adjust_histo(get_XS(xsecfilename,"gluino",limits[0]),limits[0]); |
1039 |
|
vector<TH2F*> bestexplimits; |
1040 |
|
TH2F *bestlimits = make_best_limits(explimits,obslimits,scantype, scanx, exp1mlimits, exp1plimits, exp2mlimits, exp2plimits, bestexplimits); |
1041 |
|
bestlimits->GetZaxis()->SetRangeUser(limits_lower_bound,limits_upper_bound); |
1042 |
< |
|
1043 |
< |
for(int ilim=0;ilim<limits.size();ilim++) { |
1042 |
> |
|
1043 |
> |
for(int ilim=0;ilim<(int)limits.size();ilim++) { |
1044 |
|
limits[ilim]->GetZaxis()->SetRangeUser(limits_lower_bound,limits_upper_bound); |
1045 |
|
} |
1046 |
|
|
1047 |
|
if(scantype!=PlottingSetup::mSUGRA) { |
1048 |
< |
for(int ilim=0;ilim<obslimits.size();ilim++) make_SMS_exclusion(obslimits[ilim],xsec,scantype,scanx); |
1048 |
> |
for(int ilim=0;ilim<(int)obslimits.size();ilim++) make_SMS_exclusion(obslimits[ilim],xsec,scantype,scanx); |
1049 |
|
make_SMS_exclusion(bestlimits,xsec,scantype,scanx); |
1050 |
|
} else { |
1051 |
< |
for(int ilim=0;ilim<obslimits.size();ilim++) { |
1052 |
< |
draw_mSUGRA_exclusion(crosssections[0], obslimits[ilim], explimits[ilim], exp1mlimits[ilim], exp1plimits[ilim], exp2mlimits[ilim], exp2plimits[ilim]); |
1051 |
> |
for(int ilim=0;ilim<(int)obslimits.size();ilim++) { |
1052 |
> |
draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],obslimits[ilim], explimits[ilim], exp1mlimits[ilim], exp1plimits[ilim], exp2mlimits[ilim], exp2plimits[ilim]); |
1053 |
|
} |
1054 |
< |
draw_mSUGRA_exclusion(crosssections[0], bestlimits, bestexplimits[0], bestexplimits[1], bestexplimits[2], bestexplimits[3], bestexplimits[4]); |
1054 |
> |
draw_mSUGRA_exclusion(crosssections[0],FilterEfficiencies[0],AbsCrossSection[0],bestlimits, bestexplimits[0], bestexplimits[1], bestexplimits[2], bestexplimits[3], bestexplimits[4]); |
1055 |
|
} |
1056 |
|
delete bestlimits; |
1057 |
|
} |
1058 |
|
|
919 |
– |
void decorate_mSUGRA(TH2F *cleanhisto, TVirtualPad *cvsSys,TGraph *expected,TGraph *expected2,TGraph *observed) { |
920 |
– |
cvsSys->SetRightMargin(standardmargin); |
921 |
– |
Int_t tanBeta_ = 10; |
922 |
– |
Bool_t plotLO_ = false; |
923 |
– |
|
924 |
– |
//convert tanb value to string |
925 |
– |
std::stringstream tmp; |
926 |
– |
tmp << tanBeta_; |
927 |
– |
TString tanb( tmp.str() ); |
928 |
– |
|
929 |
– |
//set old exclusion Limits |
930 |
– |
TGraph* LEP_ch = set_lep_ch(tanBeta_); |
931 |
– |
TGraph* LEP_sl = set_lep_sl(tanBeta_);//slepton curve |
932 |
– |
TGraph* TEV_sg_cdf = set_tev_sg_cdf(tanBeta_);//squark gluino cdf |
933 |
– |
TGraph* TEV_sg_d0 = set_tev_sg_d0(tanBeta_);//squark gluino d0 |
934 |
– |
TGraph* stau = set_tev_stau(tanBeta_);//stau |
935 |
– |
TGraph* NoEWSB = set_NoEWSB(tanBeta_); |
936 |
– |
|
937 |
– |
TGraph* TEV_sn_d0_1 = set_sneutrino_d0_1(tanBeta_); |
938 |
– |
TGraph* TEV_sn_d0_2 = set_sneutrino_d0_2(tanBeta_); |
939 |
– |
|
940 |
– |
//constant ssqquark and gluino lines |
941 |
– |
TF1* lnsq[10]; |
942 |
– |
TF1* lngl[10]; |
943 |
– |
|
944 |
– |
TLatex* sq_text[10]; |
945 |
– |
TLatex* gl_text[10]; |
946 |
– |
|
947 |
– |
for(int i = 0; i < 6; i++){ |
948 |
– |
lnsq[i] = constant_squark(tanBeta_,i); |
949 |
– |
sq_text[i] = constant_squark_text(i,*lnsq[i],tanBeta_); |
950 |
– |
lngl[i] = constant_gluino(tanBeta_,i); |
951 |
– |
gl_text[i] = constant_gluino_text(i,*lngl[i]); |
952 |
– |
} |
953 |
– |
|
954 |
– |
//Legends |
955 |
– |
TLegend* legst = makeStauLegend(0.05,tanBeta_); |
956 |
– |
TLegend* legNoEWSB = makeNoEWSBLegend(0.05,tanBeta_); |
957 |
– |
TLegend* legexp = makeExpLegend( *TEV_sg_cdf,*TEV_sg_d0,*LEP_ch,*LEP_sl,*TEV_sn_d0_1,0.035,tanBeta_); |
958 |
– |
|
959 |
– |
TEV_sn_d0_1->SetLineWidth(1); |
960 |
– |
TEV_sn_d0_2->SetLineWidth(1); |
961 |
– |
TEV_sg_d0->SetLineWidth(1); |
962 |
– |
|
963 |
– |
double m0min = 0; |
964 |
– |
if (tanBeta_ == 50) m0min=200; |
965 |
– |
TH2F* hist = new TH2F("h","h",100,m0min,1000,100,120,700); |
966 |
– |
hist->Draw(); |
967 |
– |
hist->GetXaxis()->SetTitle("m_{0} [GeV]"); |
968 |
– |
hist->GetXaxis()->CenterTitle(); |
969 |
– |
hist->GetYaxis()->SetTitle("m_{1/2} [GeV]"); |
970 |
– |
hist->GetYaxis()->CenterTitle(); |
971 |
– |
hist->GetXaxis()->SetTitleSize(0.04); |
972 |
– |
hist->GetYaxis()->SetTitleSize(0.04); |
973 |
– |
hist->GetXaxis()->SetTitleOffset(1.2); |
974 |
– |
hist->GetYaxis()->SetTitleOffset(1.5); |
975 |
– |
hist->GetXaxis()->SetNdivisions(506); |
976 |
– |
hist->GetYaxis()->SetNdivisions(506); |
977 |
– |
|
978 |
– |
int col[]={2,3,4}; |
979 |
– |
|
980 |
– |
TLegend* myleg; |
981 |
– |
|
982 |
– |
if( plotLO_ ) myleg = new TLegend(0.3,0.65,0.65,0.8,NULL,"brNDC"); |
983 |
– |
else myleg = new TLegend(0.25,0.76,0.44,0.91,NULL,"brNDC"); |
984 |
– |
|
985 |
– |
myleg->SetFillColor(0); |
986 |
– |
myleg->SetShadowColor(0); |
987 |
– |
myleg->SetTextSize(0.04); |
988 |
– |
myleg->SetBorderSize(0); |
989 |
– |
|
990 |
– |
//constant squark and gluino mass contours |
991 |
– |
for (int it=0;it<5;it++) { |
992 |
– |
lngl[it]->Draw("same"); |
993 |
– |
lnsq[it]->Draw("same"); |
994 |
– |
sq_text[it]->Draw(); |
995 |
– |
gl_text[it]->Draw(); |
996 |
– |
} |
997 |
– |
|
998 |
– |
//exclusion limits previous experiments |
999 |
– |
if(tanBeta_ == 3){ |
1000 |
– |
TEV_sn_d0_1->Draw("fsame"); |
1001 |
– |
TEV_sn_d0_2->Draw("fsame"); |
1002 |
– |
} |
1003 |
– |
LEP_ch->Draw("fsame"); |
1004 |
– |
if (tanBeta_ != 50) LEP_sl->Draw("fsame"); |
1005 |
– |
|
1006 |
– |
//remove CDF/D0 excluded regions |
1007 |
– |
TEV_sg_cdf->Draw("fsame"); |
1008 |
– |
TEV_sg_d0->Draw("same"); |
1009 |
– |
TEV_sg_d0->Draw("fsame"); |
1010 |
– |
|
1011 |
– |
//other labels |
1012 |
– |
Double_t xpos = 0; |
1013 |
– |
Double_t xposi = 0; |
1014 |
– |
Double_t ypos = 0; |
1015 |
– |
if(tanBeta_ == 50) xposi = 100; |
1016 |
– |
if(tanBeta_ == 50) xpos = 200; |
1017 |
– |
if(tanBeta_ == 50) ypos = -10; |
1018 |
– |
|
1019 |
– |
TString text_tanBeta; |
1020 |
– |
text_tanBeta = "tan#beta = "+tanb+", A_{0} = 0, #mu > 0"; |
1021 |
– |
TLatex* cmssmpars = new TLatex(/*530.+xpos,690.+ypos-130*/150,650,text_tanBeta); |
1022 |
– |
|
1023 |
– |
cmssmpars->SetTextSize(0.03); |
1024 |
– |
cmssmpars->Draw("same"); |
1025 |
– |
|
1026 |
– |
TLatex* lep_chargino = new TLatex(250,135,"LEP2 #tilde{#chi}_{1}^{#pm}"); |
1027 |
– |
lep_chargino->SetTextSize(0.03); |
1028 |
– |
lep_chargino->SetTextFont(42); |
1029 |
– |
|
1030 |
– |
TLatex* lep_slepton = new TLatex(26,190,"LEP2 #tilde{#font[12]{l}}^{#pm}"); |
1031 |
– |
lep_slepton->SetTextSize(0.03); |
1032 |
– |
lep_slepton->SetTextAngle(-83); |
1033 |
– |
lep_slepton->SetTextFont(42); |
1034 |
– |
|
1035 |
– |
if(draw2sigma) expected2->Draw("f"); |
1036 |
– |
expected->SetLineColor(expected->GetFillColor()); |
1037 |
– |
expected2->SetLineColor(expected2->GetFillColor()); |
1038 |
– |
expected->Draw("f"); |
1039 |
– |
observed->Draw("c"); |
1040 |
– |
|
1041 |
– |
stau->Draw("fsame"); |
1042 |
– |
NoEWSB->Draw("fsame"); |
1043 |
– |
|
1044 |
– |
legexp->AddEntry(observed,"Observed limit","l"); |
1045 |
– |
legexp->AddEntry(expected,"Expected 1#sigma limit","f"); |
1046 |
– |
if(draw2sigma) legexp->AddEntry(expected2,"Expected 2#sigma limit","f"); |
1047 |
– |
legexp->SetY1(0.60); |
1048 |
– |
legexp->SetX1(0.55); |
1049 |
– |
legexp->Draw(); |
1050 |
– |
legst->Draw(); |
1051 |
– |
|
1052 |
– |
hist->Draw("sameaxis"); |
1053 |
– |
cvsSys->RedrawAxis(); |
1054 |
– |
cvsSys->Update(); |
1055 |
– |
DrawPrelim(); |
1056 |
– |
} |
1059 |
|
|
1060 |
|
void smooth_line_once(TGraph *gr) { |
1061 |
|
//going to smooth graph |
1064 |
|
int sign=1; |
1065 |
|
for(int i=0;i<gr->GetN();i++) { |
1066 |
|
Double_t x,y,x1,y1,x2,y2; |
1065 |
– |
bool turning=false; |
1067 |
|
gr->GetPoint(i,x,y); |
1068 |
|
gr->GetPoint(i+1,x1,y1);//need to handle exception here |
1069 |
|
gr->GetPoint(i-1,x2,y2);//need to handle exception here |
1090 |
|
void set_range(TH2F *histo, int scantype, bool pushoutyz=false) { |
1091 |
|
gStyle->SetPadLeftMargin(0.18); |
1092 |
|
gStyle->SetPadRightMargin(0.19); |
1093 |
+ |
// histo->GetXaxis()->SetLabelSize(0.035); //paper style |
1094 |
+ |
// histo->GetYaxis()->SetLabelSize(0.035); //paper style |
1095 |
|
if(scantype==PlottingSetup::mSUGRA) { |
1096 |
< |
histo->GetXaxis()->SetRangeUser(0,2000); |
1097 |
< |
histo->GetYaxis()->SetRangeUser(0,800); |
1096 |
> |
histo->GetXaxis()->SetRangeUser(0,PlottingSetup::m0end); |
1097 |
> |
histo->GetYaxis()->SetRangeUser(0,PlottingSetup::m12end); |
1098 |
|
histo->GetXaxis()->SetTitle("m_{0} [GeV]"); |
1099 |
|
histo->GetYaxis()->SetTitle("m_{1/2} [GeV]"); |
1100 |
< |
histo->GetXaxis()->SetRangeUser(0,2000); |
1100 |
> |
histo->GetXaxis()->SetRangeUser(0,PlottingSetup::m0end); |
1101 |
|
histo->GetXaxis()->SetNdivisions(504,true); |
1102 |
|
} |
1103 |
|
if(scantype==PlottingSetup::SMS) { |
1200 |
|
TPRegexp pat("\\d+$"); |
1201 |
|
size_t index = name.Index(pat,0); |
1202 |
|
string cut = string("JZB > ")+(name(index,name.Length()-index).Data())+" GeV"; |
1203 |
+ |
//string cut = string("#splitline{JZB > ")+(name(index,name.Length()-index).Data())+" GeV}{n_{jets} #geq 3}"; //paper style |
1204 |
|
TText *text = write_text(xpos_of_text,0.73,cut); |
1205 |
|
text->SetTextAlign(11); |
1206 |
|
text->SetTextSize(0.035); |
1207 |
|
text->Draw(); |
1208 |
+ |
draw_diagonal_xchange( scantype, scanx ); |
1209 |
|
} |
1210 |
|
|
1211 |
|
CompleteSave(can,(saveto+(string)histo->GetName())); |
1217 |
|
|
1218 |
|
void make_all_syst_plots(vector<TH2F*> all_histos,int scantype,std::string& scanx) { |
1219 |
|
string saveto="Systematics/"; |
1220 |
< |
for(int iplot=0;iplot<all_histos.size();iplot++) { |
1220 |
> |
for(int iplot=0;iplot<(int)all_histos.size();iplot++) { |
1221 |
|
process_syst_plot(all_histos[iplot],saveto,scantype,scanx); |
1222 |
|
} |
1223 |
|
} |
1224 |
|
|
1225 |
+ |
string IdentifyScan(TString histoname) { |
1226 |
+ |
cout << "We are dealing with a histo called " << histoname << endl; |
1227 |
+ |
if (histoname.Contains("T5zzl")) return "0.75"; |
1228 |
+ |
if(histoname.Contains("T5zzh")) return "0.25"; |
1229 |
+ |
if(histoname.Contains("T5zz")) return "0.5"; |
1230 |
+ |
|
1231 |
+ |
return "IdentifyScanError"+string(histoname.Data()); |
1232 |
+ |
} |
1233 |
+ |
|
1234 |
|
void process_file(TFile* file, float stdmargin) { |
1235 |
|
standardmargin=stdmargin; |
1236 |
< |
xsecfilename="reference_xSec_SMS.root"; |
1236 |
> |
xsecfilename=PlottingSetup::cbafbasedir+"/"+PlottingSetup::SMSReferenceXSFile; |
1237 |
|
|
1238 |
|
// can receive a file with systematics and limits mixed, or a file with systematics only , or a file with limits only. |
1239 |
|
TIter nextkey(file->GetListOfKeys()); |
1241 |
|
|
1242 |
|
int scantype=PlottingSetup::SMS; |
1243 |
|
std::string scanx = "0"; // Just for the legend |
1230 |
– |
if (TString(file->GetName()).Contains("T5zzl")) scanx = "0.75"; |
1231 |
– |
else if(TString(file->GetName()).Contains("T5zzh")) scanx = "0.25"; |
1232 |
– |
else if(TString(file->GetName()).Contains("T5zz")) scanx = "0.5"; |
1244 |
|
|
1245 |
|
vector<TH2F*> systematics_histos; |
1246 |
|
vector<TH2F*> limits_histos; |
1260 |
|
if(name.Contains("exp2mlimitmap")) is_limit=true; |
1261 |
|
if(name.Contains("exclusionmap")) is_limit=true; |
1262 |
|
if(name.Contains("crosssectionmap")) is_limit=true; |
1263 |
< |
if(name.Contains("absolutecrosssectionmap")) is_limit=true; |
1263 |
> |
if(name.Contains("XS")) is_limit=true; |
1264 |
> |
if(name.Contains("absXS")) is_limit=true; |
1265 |
|
if(name.Contains("limitflipmap")) is_limit=true; |
1266 |
|
|
1267 |
|
if(name.Contains("sysjes")) is_systematic=true; |
1285 |
|
else if(is_systematic) systematics_histos.push_back((TH2F*) obj); |
1286 |
|
if(name.Contains("mSUGRA")) scantype=PlottingSetup::mSUGRA; |
1287 |
|
if(name.Contains("GMSB")) scantype=PlottingSetup::GMSB; |
1288 |
+ |
if(name.Contains("ScanIdentifier")) scanx=IdentifyScan(name); |
1289 |
|
} |
1290 |
< |
if(systematics_histos.size()>0) make_all_syst_plots(systematics_histos,scantype,scanx); |
1290 |
> |
// if (TString(file->GetName()).Contains("T5zzl")) scanx = "0.75"; |
1291 |
> |
// else if(TString(file->GetName()).Contains("T5zzh")) scanx = "0.25"; |
1292 |
> |
// else if(TString(file->GetName()).Contains("T5zz")) scanx = "0.5"; |
1293 |
> |
write_warning(__FUNCTION__,"Deactivated systematics plots"); |
1294 |
> |
// if(systematics_histos.size()>0) make_all_syst_plots(systematics_histos,scantype,scanx); |
1295 |
|
if(limits_histos.size()>0) create_exclusion_plots(limits_histos,scantype,scanx); |
1296 |
|
} |
1297 |
|
|