13 #include "RooStats/NumberCountingUtils.h" 32 TString
YieldsCut(TString title, TString cuts, vector<TChain*> chain, vector<sfeats> Samples,
int nsig);
37 TString folder=
"/cms2r0/babymaker/babies/2015_10_19/mc/skim_1lht400mc/";
38 TString folder_ns=
"/cms2r0/babymaker/babies/2015_10_19/mc/";
39 TString folder_data=
"/cms2r0/babymaker/babies/2015_10_19/data/singlelep/combined/skim_1lht400/";
40 TString folder_data_ns=
"/cms2r0/babymaker/babies/2015_10_19/data/singlelep/combined/";
43 s_tt.push_back(folder+
"*_TTJets*Lept*");
44 s_tt.push_back(folder+
"*_TTJets_HT-*");
45 vector<TString> s_wjets;
46 s_wjets.push_back(folder+
"*_WJetsToLNu_HT*");
47 vector<TString> s_single;
48 s_single.push_back(folder+
"*_ST_*");
49 vector<TString> s_ttv;
50 s_ttv.push_back(folder+
"*TTW*");
51 s_ttv.push_back(folder+
"*TTZ*");
52 vector<TString> s_qcd;
53 s_qcd.push_back(folder+
"*_QCD_HT*");
54 vector<TString> s_other;
55 s_other.push_back(folder+
"*_DYJetsToLL_M-50_HT*");
57 s_other.push_back(folder+
"*_ttHJetTobb*");
58 s_other.push_back(folder+
"*_WWTo2L2Nu*");
59 s_other.push_back(folder+
"*_WWToLNuQQ*");
60 s_other.push_back(folder+
"*_ggZH_HToBB*");
61 vector<TString> s_t1t;
62 s_t1t.push_back(folder+
"*-T1tttt_mGluino-1500_mLSP-100*");
63 vector<TString> s_t1tc;
64 s_t1tc.push_back(folder+
"*-T1tttt_mGluino-1200_mLSP-800*");
68 vector<TChain *> chain, chain_ns;
69 vector<sfeats> Samples;
70 Samples.push_back(
sfeats(s_other,
"Other", 1001));
71 Samples.push_back(
sfeats(s_qcd,
"QCD", 1005,1));
72 Samples.push_back(
sfeats(s_ttv,
"$t\\bar{t}V$", 1002));
73 Samples.push_back(
sfeats(s_single,
"Single $t$", 1005));
74 Samples.push_back(
sfeats(s_wjets,
"W+jets", 1004));
75 Samples.push_back(
sfeats(s_tt,
"$t\\bar{t}$ (1$\\ell$)", 1000,1,
"ntruleps==1"));
76 Samples.push_back(
sfeats(s_tt,
"$t\\bar{t}$ ($2\\ell$)", 1006,1,
"ntruleps>=2"));
78 Samples.push_back(
sfeats(s_t1t,
"T1tttt NC", 2));
79 Samples.push_back(
sfeats(s_t1tc,
"T1tttt C", 2,2));
83 for(
unsigned sam(0); sam < Samples.size(); sam++){
84 chain.push_back(
new TChain(
"tree"));
85 chain_ns.push_back(
new TChain(
"tree"));
86 for(
unsigned insam(0); insam < Samples[sam].file.size(); insam++){
87 chain[sam]->Add(Samples[sam].
file[insam]);
88 file_ns = Samples[sam].file[insam];
89 if(Samples[sam].isData) file_ns.ReplaceAll(folder_data, folder_data_ns);
90 else file_ns.ReplaceAll(folder, folder_ns);
91 chain_ns[sam]->Add(file_ns);
99 TString minjets_2l(
""), midjets_2l(
"");
100 minjets_2l += (
minjets.Atoi()-1); midjets_2l += (
midjets.Atoi()-1);
101 TString fom(
"$Z_{\\rm bi}$");
102 if(!do_zbi) fom =
"S/B";
104 if(
do_2l) outname.ReplaceAll(
"yields",
"yields_2l");
105 if(do_zbi) outname.ReplaceAll(
"yields",
"yields_zbi");
107 ifstream header(
"txt/header.tex");
108 ifstream footer(
"txt/footer.tex");
109 ofstream
file(outname);
110 file<<header.rdbuf();
111 file<<
"\\vspace{80 mm}\n";
112 file <<
"\n\\begin{tabular}[!htb]{ l | ";
113 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++) file <<
"r";
115 for(
int sam(0); sam < nsig; sam++) file<<
"| r ";
116 file<<
"}\\hline\\hline\n";
117 file <<
" \\multicolumn{1}{c|}{${\\cal L} = "<<
luminosity<<
"$ fb$^{-1}$} ";
118 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++)
119 file <<
" & "<<Samples[sam].label;
120 file<<
" & SM bkg. ";
121 for(
unsigned sam(Samples.size()-nsig); sam < Samples.size(); sam++)
122 file <<
" & "<<Samples[sam].label;
123 file <<
"\\\\ \\hline \n ";
127 file <<
YieldsCut(
"No selection", cuts, chain_ns, Samples, nsig);
128 cuts +=
"&&(nmus+nels)==1";
129 file <<
YieldsCut(
"$1\\ell$", cuts, chain_ns, Samples, nsig);
131 file <<
YieldsCut(
"$H_T>500$ GeV", cuts, chain, Samples, nsig);
133 file <<
YieldsCut(
"${\\rm MET}>200$ GeV", cuts, chain, Samples, nsig);
135 file <<
YieldsCut(
"$n_{\\rm jets}\\geq "+
minjets+
"$", cuts, chain, Samples, nsig);
137 file <<
YieldsCut(
"$n_{\\rm b}\\geq 2$", cuts, chain, Samples, nsig);
139 file <<
YieldsCut(
"$m_T>140$ GeV", cuts, chain, Samples, nsig);
143 file <<
YieldsCut(
"${\\rm MET}>400$ GeV", cuts, chain, Samples, nsig);
145 file <<
YieldsCut(
"$n_{\\rm jets}\\geq "+
midjets+
"$", cuts, chain, Samples, nsig);
151 file <<
"\\hline\\multicolumn{1}{c|}{} ";
152 for(
unsigned sam(0); sam < Samples.size()-nsig; sam++)
153 file <<
" & "<<Samples[sam].label;
154 file<<
" & SM bkg. ";
155 for(
unsigned sam(Samples.size()-nsig); sam < Samples.size(); sam++)
156 file <<
" & "<<Samples[sam].label;
159 file<<
"\\hline\\hline\n\\end{tabular}"<<endl<<endl;
160 file<<footer.rdbuf();
162 cout<<endl<<
"Written "<<outname<<endl;
165 TString
YieldsCut(TString title, TString cuts, vector<TChain*> chain, vector<sfeats> Samples,
int nsig){
166 TString totCut, Hname =
"histo", out;
167 vector<double> yield, error;
168 double bkg(0), bkg_err(0), err;
169 int nsam(chain.size());
170 TH1D histo(Hname,
"",100, 0, 10000);
172 for(
int sam(0); sam < nsam; sam++){
173 totCut =
luminosity+
"*weight*("+cuts+
"&&"+Samples[sam].cut+
")";
174 chain[sam]->Project(Hname,
"met", totCut);
175 yield.push_back(histo.IntegralAndError(0,101,err));
176 error.push_back(err);
178 if(yield[sam]>0) bkg += yield[sam];
179 bkg_err = sqrt(pow(bkg_err,2)+pow(err,2));
186 for(
int sam(0); sam < nsam-nsig; sam++) out += (
" \t & " +
RoundNumber(yield[sam],1));
189 for(
int sam(nsam-nsig); sam < nsam; sam++) {
192 else out += (
" \t& $" +
RoundNumber(yield[sam],1))+
"$";
TString YieldsCut(TString title, TString cuts, vector< TChain * > chain, vector< sfeats > Samples, int nsig)
TString RoundNumber(double num, int decimals, double denom=1.)
TString ntuple_date("2015_05_25")