15 #include "RooStats/NumberCountingUtils.h" 46 TString
YieldsCut(TString title, TString cuts, vector<TChain*> chain, vector<sfeats> Samples,
int nsig);
48 int main(
int argc,
char *argv[]){
51 while((c=getopt(argc, argv,
"m:oz:t:j:h:f:e:b:p:"))!=-1){
60 if(0==atoi(optarg))
do_zbi=
false;
61 if(1==atoi(optarg))
do_zbi=
true;
90 TString folder =
"/afs/cern.ch/work/m/manuelf/public/babies/2015_10_19/mc/skim_1lht500met200/";
92 TString folder_other=
"/afs/cern.ch/user/a/ana/public/151028_230803/";
96 s_tt.push_back(folder+
"*_TTJets*Lept*");
97 s_tt.push_back(folder+
"*_TTJets_HT*");
98 vector<TString> s_other;
99 s_other.push_back(folder_other+
"*_TTJets*Lept*");
100 s_other.push_back(folder_other+
"*_TTJets_HT*");
118 vector<TString> s_t1t;
119 s_t1t.push_back(folder+
"*T1tttt*1500_*");
120 vector<TString> s_t1tc;
121 s_t1tc.push_back(folder+
"*T1tttt*1200_*");
123 vector<TChain *> chain;
124 vector<sfeats> Samples;
128 Samples.push_back(
sfeats(s_other,
"Smeared $t\\bar{t}$ (1$\\ell$)", 1001,1,
"ntruleps==1"));
129 Samples.push_back(
sfeats(s_other,
"Smeared $t\\bar{t}$ (2$\\ell$)", 1001,1,
"ntruleps==2"));
134 Samples.push_back(
sfeats(s_tt,
"$t\\bar{t}$ (1$\\ell$)", 1000,1,
136 Samples.push_back(
sfeats(s_tt,
"$t\\bar{t}$ ($2\\ell$)", 1006,1,
139 Samples.push_back(
sfeats(s_t1t,
"T1tttt NC", 2));
140 Samples.push_back(
sfeats(s_t1tc,
"T1tttt C", 2,2));
142 for(
unsigned sam(0); sam < Samples.size(); sam++){
143 chain.push_back(
new TChain(
"tree"));
144 for(
unsigned insam(0); insam < Samples[sam].file.size(); insam++)
145 chain[sam]->Add(Samples[sam].
file[insam]);
153 TString minjets_2l(
""), midjets_2l(
"");
154 minjets_2l += (
minjets.Atoi()-1); midjets_2l += (midjets.Atoi()-1);
155 TString fom(
"$Z_{\\rm bi}$");
157 TString lumi_s(
luminosity); lumi_s.ReplaceAll(
".",
"p");
159 if(
do_1b) outname.ReplaceAll(
"yields",
"yields_1b");
160 if(
do_2l) outname.ReplaceAll(
"yields",
"yields_2l");
161 if(
do_zbi) outname.ReplaceAll(
"yields",
"yields_zbi");
163 TString baseline(
"ht>500&&met>200");
164 TString cuts_1l(baseline+
"&&(nmus+nels)==1&&nbm>=1&&njets>="+
minjets+
"");
165 TString cuts_1l1b(baseline+
"&&(nmus+nels)==1&&nbm==1&&njets>="+
minjets+
"");
166 TString cuts_2l(baseline+
"&&(nmus+nels)==2&&nbm==1&&njets>="+minjets_2l+
"");
167 TString cuts_2lbb(baseline+
"&&(nmus+nels)==2&&nbm==2&&njets>="+minjets_2l+
"");
168 TString cuts_1ltex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+
minjets+
", n_b\\geq 1, n_{\\rm lep}=1$");
169 TString cuts_1l1btex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+
minjets+
", n_b=1, n_{\\rm lep}=1$");
170 TString cuts_2ltex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+minjets_2l+
", n_b=1, n_{\\rm lep}=2$");
171 TString cuts_2lbbtex(
"$H_T>500, \\mathrm{MET}>200, n_{\\rm jets}\\geq "+minjets_2l+
", n_b=2, n_{\\rm lep}=2$");
173 cuts_1l.ReplaceAll(
"nbm>=2",
"nbm==1");
174 cuts_1ltex.ReplaceAll(
"n_b\\geq 2",
"n_b=1");
176 ifstream header(
"txt/header.tex");
177 ifstream footer(
"txt/footer.tex");
178 ofstream
file(outname);
179 file<<header.rdbuf();
180 file<<
"\\vspace{80 mm}\n";
181 file <<
"\n\\begin{tabular}[tbp!]{ l | ";
182 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++) file <<
"r";
184 for(
int sam(0); sam < nsig; sam++) {
188 file<<
"}\\hline\\hline\n";
189 file <<
" \\multicolumn{1}{c|}{${\\cal L} = "<<
luminosity<<
"$ fb$^{-1}$} ";
190 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++)
191 file <<
" & "<<Samples[sam].label;
192 file<<
" & SM bkg. ";
193 for(
unsigned sam(Samples.size()-nsig); sam < Samples.size(); sam++) {
194 file <<
" & "<<Samples[sam].label;
197 file <<
"\\\\ \\hline \n ";
199 TString mtcut, mjcut;
200 TString indent(
"\\hspace{5 mm} ");
202 vector<TString> binnames;
203 for(
unsigned bin(1); bin <= 6; bin++)
204 if(
do_note) binnames.push_back(
"");
206 TString name(
"Bin "); name += bin; name +=
": ";
207 binnames.push_back(name);
209 TString lownj(
"$n_j\\leq "+midjets+
"$");
210 TString hignj(
"$n_j\\geq "+
highjets+
"$");
211 TString lownj_2l(
"$n_j\\leq "+midjets_2l+
"$");
212 TString highjets_2l(
""); highjets_2l += (midjets_2l.Atoi()+1);
213 TString hignj_2l(
"$n_j\\geq "+highjets_2l+
"$");
214 TString lowmet(
"$\\text{MET}\\leq "+
highmet+
"$");
215 TString higmet(
"$\\text{MET}> "+
highmet+
"$");
217 if(
do_1b) letter =
"B";
218 if(
do_2l) letter =
"D";
220 for(
int ind(0); ind<4; ind++) {regions[ind] = letter; regions[ind] += (ind+1);}
223 file <<
" \\multicolumn{"<< Samples.size()+1<<
"}{c}{"<< cuts_1ltex <<
"} \\\\ \\hline \\hline\n";
226 mjcut=
"mj<="+
mjthresh; mtcut=
"mt<=140";
227 file <<
YieldsCut(regions[0]+
": $m_T \\leq 140,M_J\\leq "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
231 file <<
YieldsCut(indent+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
232 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
233 file <<
YieldsCut(indent+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
234 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
237 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
238 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
239 file <<
YieldsCut(indent+higmet, mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
242 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
243 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
244 file <<
YieldsCut(indent+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
245 file <<
YieldsCut(indent+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
251 mjcut=
"mj>"+
mjthresh; mtcut=
"mt<=140";
252 file <<
YieldsCut(regions[1]+
": $m_T \\leq 140,M_J> "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
257 file <<
YieldsCut(indent+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
258 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
259 file <<
YieldsCut(indent+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
260 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
263 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
264 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
265 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
266 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
267 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
268 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
271 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
272 file <<
YieldsCut(indent+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
273 file <<
YieldsCut(indent+lownj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
274 file <<
YieldsCut(indent+lownj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
275 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
276 file <<
YieldsCut(indent+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
277 file <<
YieldsCut(indent+hignj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
278 file <<
YieldsCut(indent+hignj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
285 mjcut=
"mj<="+
mjthresh; mtcut=
"mt>140";
286 file <<
YieldsCut(regions[2]+
": $m_T > 140,M_J \\leq "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
290 file <<
YieldsCut(indent+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
291 file <<
YieldsCut(indent+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
292 file <<
YieldsCut(indent+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
293 file <<
YieldsCut(indent+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
296 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
297 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
298 file <<
YieldsCut(indent+higmet, mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
301 file <<
YieldsCut(indent+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
302 file <<
YieldsCut(indent+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
303 file <<
YieldsCut(indent+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
304 file <<
YieldsCut(indent+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
312 mjcut=
"mj>"+
mjthresh; mtcut=
"mt>140";
313 file <<
YieldsCut(regions[3]+
": $m_T > 140,M_J > "+
mjthresh+
"$", mjcut+
"&&"+mtcut+
"&&"+cuts_1l, chain, Samples, nsig);
317 file <<
YieldsCut(binnames[0]+lownj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&"+cuts_1l, chain, Samples, nsig);
318 file <<
YieldsCut(binnames[1]+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
319 file <<
YieldsCut(binnames[2]+hignj+
", "+lowmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
320 file <<
YieldsCut(binnames[3]+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
323 file <<
YieldsCut(binnames[0]+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
324 file <<
YieldsCut(binnames[1]+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
325 file <<
YieldsCut(binnames[2]+lownj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
326 file <<
YieldsCut(binnames[3]+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
327 file <<
YieldsCut(binnames[4]+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
328 file <<
YieldsCut(binnames[5]+hignj+
", "+higmet, mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&" +cuts_1l, chain, Samples, nsig);
331 file <<
YieldsCut(binnames[0]+lownj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm==2&&"+cuts_1l, chain, Samples, nsig);
332 file <<
YieldsCut(binnames[1]+lownj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&"+cuts_1l, chain, Samples, nsig);
333 file <<
YieldsCut(binnames[2]+lownj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
334 file <<
YieldsCut(binnames[2]+lownj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets<="+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
335 file <<
YieldsCut(binnames[3]+hignj+
", "+lowmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
336 file <<
YieldsCut(binnames[4]+hignj+
", "+lowmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met<="+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
337 file <<
YieldsCut(binnames[5]+hignj+
", "+higmet+
", $n_b=2$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm==2&&" +cuts_1l, chain, Samples, nsig);
338 file <<
YieldsCut(binnames[5]+hignj+
", "+higmet+
", $n_b\\geq 3$", mjcut+
"&&"+mtcut+
"&&njets>"+midjets+
"&&met>"+
highmet+
"&&nbm>=3&&" +cuts_1l, chain, Samples, nsig);
345 file <<
"\\hline \\hline\\multicolumn{"<< Samples.size()+1<<
"}{c}{" 346 <<cuts_2ltex <<
"} \\\\ \\hline \\hline\n";
351 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2l, chain, Samples, nsig);
352 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
353 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
354 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
361 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2l, chain, Samples, nsig);
362 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
363 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
364 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2l, chain, Samples, nsig);
366 file <<
"\\hline \\hline\\multicolumn{"<< Samples.size()+1<<
"}{c}{" 367 << cuts_2lbbtex<<
"} \\\\ \\hline \\hline\n";
372 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2lbb, chain, Samples, nsig);
373 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
374 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
375 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
381 file <<
YieldsCut(indent+lownj_2l+
", "+lowmet, mjcut+
"&&njets<="+midjets_2l+
"&&met<="+
highmet+
"&&"+cuts_2lbb, chain, Samples, nsig);
382 file <<
YieldsCut(indent+lownj_2l+
", "+higmet, mjcut+
"&&njets<="+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
383 file <<
YieldsCut(indent+hignj_2l+
", "+lowmet, mjcut+
"&&njets>"+midjets_2l+
"&&met<="+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
384 file <<
YieldsCut(indent+hignj_2l+
", "+higmet, mjcut+
"&&njets>"+midjets_2l+
"&&met>"+
highmet+
"&&" +cuts_2lbb, chain, Samples, nsig);
387 file <<
"\\hline\\multicolumn{1}{c|}{} ";
388 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++)
389 file <<
" & "<<Samples[sam].label;
390 file<<
" & SM bkg. ";
391 for(
unsigned sam(Samples.size()-nsig); sam < Samples.size(); sam++)
392 file <<
" & "<<Samples[sam].label;
396 file<<
"\\hline\\hline\n\\end{tabular}"<<endl<<endl;
397 file<<footer.rdbuf();
399 cout<<endl<<
" pdflatex "<<outname<<endl<<endl;
402 TString
YieldsCut(TString title, TString cuts, vector<TChain*> chain, vector<sfeats> Samples,
int nsig){
403 TString totCut, Hname =
"histo", out;
404 vector<double> yield, error;
405 double bkg(0), bkg_err(0), err, yield_sam;
406 int nsam(chain.size()), entries(0);
408 for(
int sam(0); sam < nsam; sam++){
409 if (Samples[sam].label.Contains(
"Smeared"))
410 totCut =
luminosity+
"*(1/1.0287)*weight*(1+0.5*((Max$(jets_pt_res)>1.391)||Min$(jets_pt_res)<0.675))*("+cuts+
"&&"+Samples[sam].cut+
")";
414 totCut =
luminosity+
"*weight*("+cuts+
"&&"+Samples[sam].cut+
")";
415 entries =
getYieldErr(*chain[sam], totCut, yield_sam, err);
416 yield.push_back(yield_sam);
417 error.push_back(err);
419 if(yield[sam]>0) bkg += yield[sam];
420 bkg_err = sqrt(pow(bkg_err,2)+pow(err,2));
428 for(
int sam(0); sam < nsam-nsig; sam++) out += (
" \t & " +
RoundNumber(yield[sam],digits));
430 for(
int sam(nsam-nsig); sam < nsam; sam++) {
431 float fracerr(sqrt(pow(bkg_err/bkg,2)+0.3*0.3+0.24*0.24));
433 if(
do_zbi) out +=
" \t& " +
RoundNumber(RooStats::NumberCountingUtils::BinomialExpZ(yield[sam], bkg, fracerr),2);
437 cout<<
RoundNumber(RooStats::NumberCountingUtils::BinomialExpZ(yield[sam], bkg, fracerr),2);
long getYieldErr(TChain &tree, TString cut, double &yield, double &uncertainty)
TString YieldsCut(TString title, TString cuts, vector< TChain * > chain, vector< sfeats > Samples, int nsig)
TString ntuple_date("2015_10_19")
TString RoundNumber(double num, int decimals, double denom=1.)
int main(int argc, char *argv[])