15 #include "RooStats/NumberCountingUtils.h" 45 TString
YieldsCut(TString title, TString cuts, vector<TChain*> chain, vector<sfeats> Samples,
int nsig);
47 int main(
int argc,
char *argv[]){
50 while((c=getopt(argc, argv,
"m:oz:t:j:h:f:e:b:p:"))!=-1){
59 if(0==atoi(optarg))
do_zbi=
false;
60 if(1==atoi(optarg))
do_zbi=
true;
89 TString folder =
"~manuelf/work/babies/"+
ntuple_date+
"/mc/skim_1lht500met200/";
90 folder =
"archive/2015_10_19/mc/skim_1lht500met200/";
93 s_tt.push_back(folder+
"*_TTJets*Lept*");
94 s_tt.push_back(folder+
"*_TTJets_HT*");
95 vector<TString> s_wjets;
96 s_wjets.push_back(folder+
"*_WJetsToLNu*");
97 vector<TString> s_ttv;
98 s_ttv.push_back(folder+
"*_TTWJets*");
99 s_ttv.push_back(folder+
"*_TTZTo*");
100 vector<TString> s_single;
101 s_single.push_back(folder+
"*_ST_*");
102 vector<TString> s_other;
103 s_other.push_back(folder+
"*DYJetsToLL*");
104 s_other.push_back(folder+
"*_QCD_HT*");
105 s_other.push_back(folder+
"*_ZJet*");
106 s_other.push_back(folder+
"*_WWTo*");
107 s_other.push_back(folder+
"*ggZH_HToBB*");
108 s_other.push_back(folder+
"*ttHJetTobb*");
109 vector<TString> s_t1t;
110 s_t1t.push_back(folder+
"*T1tttt*1500_*");
111 vector<TString> s_t1tc;
112 s_t1tc.push_back(folder+
"*T1tttt*1200_*");
114 vector<TChain *> chain;
115 vector<sfeats> Samples;
117 Samples.push_back(
sfeats(s_other,
"Other", 1001));
118 Samples.push_back(
sfeats(s_ttv,
"$t\\bar{t}V$", 1002));
119 Samples.push_back(
sfeats(s_single,
"Single $t$", 1005));
120 Samples.push_back(
sfeats(s_wjets,
"W+jets", 1004));
122 Samples.push_back(
sfeats(s_tt,
"$t\\bar{t}$ (1$\\ell$)", 1000,1,
124 Samples.push_back(
sfeats(s_tt,
"$t\\bar{t}$ ($2\\ell$)", 1006,1,
127 Samples.push_back(
sfeats(s_t1t,
"T1tttt NC", 2));
128 Samples.push_back(
sfeats(s_t1tc,
"T1tttt C", 2,2));
130 for(
unsigned sam(0); sam < Samples.size(); sam++){
131 chain.push_back(
new TChain(
"tree"));
132 for(
unsigned insam(0); insam < Samples[sam].file.size(); insam++)
133 chain[sam]->Add(Samples[sam].
file[insam]);
141 TString minjets_2l(
""), midjets_2l(
"");
142 minjets_2l += (
minjets.Atoi()-1); midjets_2l += (midjets.Atoi()-1);
143 TString fom(
"$Z_{\\rm bi}$");
145 TString lumi_s(
luminosity); lumi_s.ReplaceAll(
".",
"p");
147 if(
do_1b) outname.ReplaceAll(
"yields",
"yields_1b");
148 if(
do_2l) outname.ReplaceAll(
"yields",
"yields_2l");
149 if(
do_zbi) outname.ReplaceAll(
"yields",
"yields_zbi");
151 TString baseline(
"ht>500&&met>200");
152 TString cuts_1l(baseline+
"&&(nmus+nels)==1&&nbm>=2&&njets>="+
minjets+
"");
153 TString cuts_1l1b(baseline+
"&&(nmus+nels)==1&&nbm==1&&njets>="+
minjets+
"");
154 TString cuts_2l(baseline+
"&&(nmus+nels)==2&&nbm==1&&njets>="+minjets_2l+
"");
155 TString cuts_2lbb(baseline+
"&&(nmus+nels)==2&&nbm==2&&njets>="+minjets_2l+
"");
156 TString cuts_1ltex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+
minjets+
", n_b\\geq 2, n_{\\rm lep}=1$");
157 TString cuts_1l1btex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+
minjets+
", n_b=1, n_{\\rm lep}=1$");
158 TString cuts_2ltex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+minjets_2l+
", n_b=1, n_{\\rm lep}=2$");
159 TString cuts_2lbbtex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+minjets_2l+
", n_b=2, n_{\\rm lep}=2$");
161 cuts_1l.ReplaceAll(
"nbm>=2",
"nbm==1");
162 cuts_1ltex.ReplaceAll(
"n_b\\geq 2",
"n_b=1");
164 ifstream header(
"txt/header.tex");
165 ifstream footer(
"txt/footer.tex");
166 ofstream
file(outname);
167 file<<header.rdbuf();
168 file<<
"\\vspace{80 mm}\n";
169 file <<
"\n\\begin{tabular}[tbp!]{ l | ";
170 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++) file <<
"r";
172 for(
int sam(0); sam < nsig; sam++) file<<
"| r | r";
173 file<<
"}\\hline\\hline\n";
174 file <<
" \\multicolumn{1}{c|}{${\\cal L} = "<<
luminosity<<
"$ fb$^{-1}$} ";
175 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++)
176 file <<
" & "<<Samples[sam].label;
177 file<<
" & SM bkg. ";
178 for(
unsigned sam(Samples.size()-nsig); sam < Samples.size(); sam++)
179 file <<
" & "<<Samples[sam].label<<
" & "+fom;
180 file <<
"\\\\ \\hline \n ";
182 TString mtcut, mjcut;
183 TString indent(
"\\hspace{5 mm} ");
185 vector<TString> binnames;
186 for(
unsigned bin(1); bin <= 6; bin++)
187 if(
do_note) binnames.push_back(
"");
189 TString name(
"Bin "); name += bin; name +=
": ";
190 binnames.push_back(name);
192 TString lownj(
"$n_j\\leq "+midjets+
"$");
193 TString hignj(
"$n_j\\geq "+
highjets+
"$");
194 TString lownj_2l(
"$n_j\\leq "+midjets_2l+
"$");
195 TString highjets_2l(
""); highjets_2l += (midjets_2l.Atoi()+1);
196 TString hignj_2l(
"$n_j\\geq "+highjets_2l+
"$");
197 TString lowmet(
"$\\text{MET}\\leq "+
highmet+
"$");
198 TString higmet(
"$\\text{MET}> "+
highmet+
"$");
200 if(
do_1b) letter =
"B";
201 if(
do_2l) letter =
"D";
203 for(
int ind(0); ind<4; ind++) {regions[ind] = letter; regions[ind] += (ind+1);}
206 file <<
" \\multicolumn{"<< Samples.size()+1<<
"}{c}{"<< cuts_1ltex <<
"} \\\\ \\hline \\hline\n";
209 mjcut=
"mj<="+
mjthresh; mtcut=
"mt<=140";
210 file <<
YieldsCut(regions[0]+
": $m_T \\leq 140,M_J\\leq "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
214 file <<
YieldsCut(indent+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
215 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
216 file <<
YieldsCut(indent+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
217 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
220 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
221 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
222 file <<
YieldsCut(indent+higmet, mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
225 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
226 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
227 file <<
YieldsCut(indent+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
228 file <<
YieldsCut(indent+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
234 mjcut=
"mj>"+
mjthresh; mtcut=
"mt<=140";
235 file <<
YieldsCut(regions[1]+
": $m_T \\leq 140,M_J> "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
240 file <<
YieldsCut(indent+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
241 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
242 file <<
YieldsCut(indent+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
243 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
246 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
247 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
248 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
249 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
250 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
251 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
254 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
255 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
256 file <<
YieldsCut(indent+lownj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
257 file <<
YieldsCut(indent+lownj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
258 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
259 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
260 file <<
YieldsCut(indent+hignj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
261 file <<
YieldsCut(indent+hignj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
268 mjcut=
"mj<="+
mjthresh; mtcut=
"mt>140";
269 file <<
YieldsCut(regions[2]+
": $m_T > 140,M_J \\leq "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
273 file <<
YieldsCut(indent+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
274 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
275 file <<
YieldsCut(indent+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
276 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
279 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
280 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
281 file <<
YieldsCut(indent+higmet, mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
284 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
285 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
286 file <<
YieldsCut(indent+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
287 file <<
YieldsCut(indent+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
295 mjcut=
"mj>"+
mjthresh; mtcut=
"mt>140";
296 file <<
YieldsCut(regions[3]+
": $m_T > 140,M_J > "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
300 file <<
YieldsCut(binnames[0]+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
301 file <<
YieldsCut(binnames[1]+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
302 file <<
YieldsCut(binnames[2]+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
303 file <<
YieldsCut(binnames[3]+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
306 file <<
YieldsCut(binnames[0]+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
307 file <<
YieldsCut(binnames[1]+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
308 file <<
YieldsCut(binnames[2]+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
309 file <<
YieldsCut(binnames[3]+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
310 file <<
YieldsCut(binnames[4]+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
311 file <<
YieldsCut(binnames[5]+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
314 file <<
YieldsCut(binnames[0]+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
315 file <<
YieldsCut(binnames[1]+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
316 file <<
YieldsCut(binnames[2]+lownj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
317 file <<
YieldsCut(binnames[2]+lownj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
318 file <<
YieldsCut(binnames[3]+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
319 file <<
YieldsCut(binnames[4]+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
320 file <<
YieldsCut(binnames[5]+hignj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
321 file <<
YieldsCut(binnames[5]+hignj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
328 file <<
"\\hline \\hline\\multicolumn{"<< Samples.size()+1<<
"}{c}{" 329 <<cuts_2ltex <<
"} \\\\ \\hline \\hline\n";
334 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2l, chain, Samples, nsig);
335 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
336 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
337 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
344 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2l, chain, Samples, nsig);
345 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
346 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
347 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
349 file <<
"\\hline \\hline\\multicolumn{"<< Samples.size()+1<<
"}{c}{" 350 << cuts_2lbbtex<<
"} \\\\ \\hline \\hline\n";
355 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2lbb, chain, Samples, nsig);
356 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
357 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
358 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
364 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2lbb, chain, Samples, nsig);
365 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
366 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
367 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
370 file <<
"\\hline\\multicolumn{1}{c|}{} ";
371 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++)
372 file <<
" & "<<Samples[sam].label;
373 file<<
" & SM bkg. ";
374 for(
unsigned sam(Samples.size()-nsig); sam < Samples.size(); sam++)
375 file <<
" & "<<Samples[sam].label<<
" & "+fom;
378 file<<
"\\hline\\hline\n\\end{tabular}"<<endl<<endl;
379 file<<footer.rdbuf();
381 cout<<endl<<
" pdflatex "<<outname<<endl<<endl;
384 TString
YieldsCut(TString title, TString cuts, vector<TChain*> chain, vector<sfeats> Samples,
int nsig){
385 TString totCut, Hname =
"histo", out;
386 vector<double> yield, error;
387 double bkg(0), bkg_err(0), err, yield_sam;
388 int nsam(chain.size()), entries(0);
389 for(
int sam(0); sam < nsam; sam++){
390 totCut =
luminosity+
"*weight*("+cuts+
"&&"+Samples[sam].cut+
")";
391 entries =
getYieldErr(*chain[sam], totCut, yield_sam, err);
392 yield.push_back(yield_sam);
393 error.push_back(err);
395 if(yield[sam]>0) bkg += yield[sam];
396 bkg_err = sqrt(pow(bkg_err,2)+pow(err,2));
398 if(
false) cout<<sam<<
": yield "<<Samples[sam].label<<
" "<<yield[sam]<<
", n "<<entries<<
" \t "<<totCut<<endl;
404 for(
int sam(0); sam < nsam-nsig; sam++) out += (
" \t & " +
RoundNumber(yield[sam],digits));
406 for(
int sam(nsam-nsig); sam < nsam; sam++) {
407 float fracerr(sqrt(pow(bkg_err/bkg,2)+0.3*0.3+0.24*0.24));
409 if(
do_zbi) out +=
RoundNumber(RooStats::NumberCountingUtils::BinomialExpZ(yield[sam], bkg, fracerr),2);
413 cout<<
RoundNumber(RooStats::NumberCountingUtils::BinomialExpZ(yield[sam], bkg, fracerr),2);
long getYieldErr(TChain &tree, TString cut, double &yield, double &uncertainty)
TString ntuple_date("2015_10_19")
TString YieldsCut(TString title, TString cuts, vector< TChain * > chain, vector< sfeats > Samples, int nsig)
TString RoundNumber(double num, int decimals, double denom=1.)
int main(int argc, char *argv[])