ra4_macros  bede988c286599a3a84b77a4d788ac0a971e89f9
table_rpv.cxx
Go to the documentation of this file.
1 #include <iostream>
2 #include <vector>
3 #include <iomanip>
4 
5 #include "TStyle.h"
6 #include "TString.h"
7 #include "TCanvas.h"
8 #include "TH1F.h"
9 #include "TFile.h"
10 #include "TDirectory.h"
11 #include "TMath.h"
12 
13 using namespace std;
14 
15 bool doLatex=false;
16 
17 float AddInQuad(float a, float b);
18 void printOneLine(int nb,
19  float data, float qcd, float ttbar, float wjets, float other,
20  float sig1000, float sig1100, float sig1200, float sig1300, float sig1400,
21  float data_err, float qcd_err, float ttbar_err, float wjets_err, float other_err,
22  float sig1000_err, float sig1100_err, float sig1200_err, float sig1300_err, float sig1400_err, float doLatex);
23 void printYieldBin(int nb, float data,
24  float qcd, float ttbar, float wjets, float other, float sig,
25  float qcd_err, float ttbar_err, float wjets_err, float other_err,
26  float dataovermc, bool doNorm);
27 
28 
29 //
30 // main
31 //
32 int main()
33 {
34  cout << " ........................... "<< endl;
35  cout << " .. I am making yield table " << endl;
36  cout << " ........................... "<< endl;
37 
38  TString bin[18] = {
39  // control regions
40  "0-lepton,HT>1500,4#leq N_{jets}#leq5,500<MJ<800",
41  "0-lepton,HT>1500,6#leq N_{jets}#leq7,500<MJ<800",
42  "1-lepton,HT>1200,4#leq N_{jets}#leq5,500<MJ<800",
43  "0-lepton,HT>1500,4#leq N_{jets}#leq5,MJ>800",
44  "0-lepton,HT>1500,6#leq N_{jets}#leq7,MJ>800",
45  "1-lepton,HT>1200,4#leq N_{jets}#leq5,MJ>800",
46  // low MJ control regions
47  "0-lepton,HT>1500,4#leq N_{jets}#leq5,300<MJ<500", // 6
48  "0-lepton,HT>1500,6#leq N_{jets}#leq7,300<MJ<500",
49  "0-lepton,HT>1500,8#leq N_{jets}#leq9,300<MJ<500",
50  "0-lepton,HT>1500,N_{jets}#geq10,300<MJ<500",
51  // signal regions, low MJ
52  "0-lepton,HT>1500,N_{jets}#geq10,500<MJ<800", // 10
53  "1-lepton,HT>1200,6#leq N_{jets}#leq7,500<MJ<800",
54  "1-lepton,HT>1200,N_{jets}#geq8,500<MJ<800",
55  // signal regions, high MJ
56  "0-lepton,HT>1500,N_{jets}#geq10,MJ>800", // 13
57  "1-lepton,HT>1200,6#leq N_{jets}#leq7,MJ>800",
58  "1-lepton,HT>1200,N_{jets}#geq8,MJ>800",
59  //Missing regions
60  "0-lepton,HT>1500,8#leq N_{jets}#leq9,500<MJ<800", // 16
61  "0-lepton,HT>1500,8#leq N_{jets}#leq9,MJ>800"
62  };
63 
64  TString binLatex[18] = {
65  // control regions
66  "N_{leps}=0,H_{T}>1500~\\GeV,4\\leq N_{jets}\\leq5, 500<M_{J}<800~\\GeV",
67  "N_{leps}=0,H_{T}>1500~\\GeV,6\\leq N_{jets}\\leq7, 500<M_{J}<800~\\GeV",
68  "N_{leps}=1,H_{T}>1200~\\GeV,4\\leq N_{jets}\\leq5, 500<M_{J}<800~\\GeV",
69  "N_{leps}=0,H_{T}>1500~\\GeV,4\\leq N_{jets}\\leq5, M_{J}>800~\\GeV",
70  "N_{leps}=0,H_{T}>1500~\\GeV,6\\leq N_{jets}\\leq7, M_{J}>800~\\GeV",
71  "N_{leps}=1,H_{T}>1200~\\GeV,4\\leq N_{jets}\\leq5, M_{J}>800~\\GeV",
72  // low M_{J} control regions
73  "N_{leps}=0,H_{T}>1500~\\GeV,4\\leq N_{jets}\\leq5,300<M_{J}<500~\\GeV", // 6
74  "N_{leps}=0,H_{T}>1500~\\GeV,6\\leq N_{jets}\\leq7,300<M_{J}<500~\\GeV",
75  "N_{leps}=0,H_{T}>1500~\\GeV,8\\leq N_{jets}\\leq9,300<M_{J}<500~\\GeV",
76  "N_{leps}=0,H_{T}>1500~\\GeV,N_{jets}\\geq10,300<M_{J}<500~\\GeV",
77  // signal regions, low M_{J}
78  "N_{leps}=0,H_{T}>1500~\\GeV,N_{jets}\\geq10,500<M_{J}<800~\\GeV", // 10
79  "N_{leps}=1,H_{T}>1200~\\GeV,6\\leq N_{jets}\\leq7,500<M_{J}<800~\\GeV",
80  "N_{leps}=1,H_{T}>1200~\\GeV,N_{jets}\\geq8,500<M_{J}<800~\\GeV",
81  // signal regions, high M_{J}
82  "N_{leps}=0,H_{T}>1500~\\GeV,N_{jets}\\geq10,M_{J}>800~\\GeV", // 13
83  "N_{leps}=1,H_{T}>1200~\\GeV,6\\leq N_{jets}\\leq7,M_{J}>800~\\GeV",
84  "N_{leps}=1,H_{T}>1200~\\GeV,N_{jets}\\geq8,M_{J}>800~\\GeV",
85  //Missing regions
86  "N_{leps}=0,H_{T}>1500~\\GeV,8\\leq N_{jets}\\leq9,500<M_{J}<800~\\GeV", // 16
87  "N_{leps}=0,H_{T}>1500~\\GeV,8\\leq N_{jets}\\leq9,M_{J}>800~\\GeV"
88  };
89 
90  TFile* infile = TFile::Open("variations/sum_rescaled.root", "READ");
91 
92  float data[18][5], qcd[18][5], ttbar[18][5], wjets[18][5], other[18][5],
93  sig1000[18][5], sig1100[18][5], sig1200[18][5], sig1300[18][5], sig1400[18][5];
94  float data_err[18][5], qcd_err[18][5], ttbar_err[18][5], wjets_err[18][5], other_err[18][5],
95  sig1000_err[18][5], sig1100_err[18][5], sig1200_err[18][5], sig1300_err[18][5], sig1400_err[18][5];
96  for(int ibin=0; ibin<18; ibin++)
97  {
98  if(ibin>=6 && ibin<=9) continue;
99  for(int inb=0; inb<5; inb++)
100  {
101  data[ibin][inb] = 0;
102  qcd[ibin][inb] = 0;
103  ttbar[ibin][inb] = 0;
104  wjets[ibin][inb] = 0;
105  other[ibin][inb] = 0;
106  sig1000[ibin][inb] = 0;
107  sig1100[ibin][inb] = 0;
108  sig1200[ibin][inb] = 0;
109  sig1300[ibin][inb] = 0;
110  sig1400[ibin][inb] = 0;
111 
112  data_err[ibin][inb] = 0;
113  qcd_err[ibin][inb] = 0;
114  ttbar_err[ibin][inb] = 0;
115  wjets_err[ibin][inb] = 0;
116  other_err[ibin][inb] = 0;
117  sig1000_err[ibin][inb] = 0;
118  sig1100_err[ibin][inb] = 0;
119  sig1200_err[ibin][inb] = 0;
120  sig1300_err[ibin][inb] = 0;
121  sig1400_err[ibin][inb] = 0;
122  }
123  }
124  //
125  for(int ibin=0; ibin<18; ibin++)
126  {
127  if(ibin>=6 && ibin<=9) continue;
128  //TDirectory* dir = infile->GetDirectory(Form("bin%i", ibin));
129 
130  for(int inb=1; inb<5; inb++)
131  {
132  data[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/data_obs", ibin)))->GetBinContent(inb+1);
133  qcd[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/qcd", ibin)))->GetBinContent(inb+1);
134  ttbar[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/ttbar", ibin)))->GetBinContent(inb+1);
135  wjets[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/wjets", ibin)))->GetBinContent(inb+1);
136  other[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/other", ibin)))->GetBinContent(inb+1);
137  sig1000[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1000", ibin)))->GetBinContent(inb+1);
138  sig1100[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1100", ibin)))->GetBinContent(inb+1);
139  sig1200[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1200", ibin)))->GetBinContent(inb+1);
140  sig1300[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1300", ibin)))->GetBinContent(inb+1);
141  sig1400[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1400", ibin)))->GetBinContent(inb+1);
142 
143  data_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/data_obs", ibin)))->GetBinError(inb+1);
144  qcd_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/qcd", ibin)))->GetBinError(inb+1);
145  ttbar_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/ttbar", ibin)))->GetBinError(inb+1);
146  wjets_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/wjets", ibin)))->GetBinError(inb+1);
147  other_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/other", ibin)))->GetBinError(inb+1);
148  sig1000_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1000", ibin)))->GetBinError(inb+1);
149  sig1100_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1100", ibin)))->GetBinError(inb+1);
150  sig1200_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1200", ibin)))->GetBinError(inb+1);
151  sig1300_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1300", ibin)))->GetBinError(inb+1);
152  sig1400_err[ibin][inb-1]= static_cast<TH1F*>(infile->Get(Form("bin%i/signal_M1400", ibin)))->GetBinError(inb+1);
153  }
154  }
155 
156  float sig1000sum(0), sig1100sum(0), sig1200sum(0), sig1300sum(0), sig1400sum(0);
157  for(int ibin=0; ibin<18; ibin++)
158  {
159  if(ibin>5 && ibin<10) continue; // skip low MJ bins
160  for(int inb=1; inb<5; inb++)
161  {
162  sig1000sum = sig1000sum + sig1000[ibin][inb-1];
163  sig1100sum = sig1100sum + sig1100[ibin][inb-1];
164  sig1200sum = sig1200sum + sig1200[ibin][inb-1];
165  sig1300sum = sig1300sum + sig1300[ibin][inb-1];
166  sig1400sum = sig1400sum + sig1400[ibin][inb-1];
167  }
168  }
169 
170  // -----------------------------------------------------
171  // table for AN
172  // -----------------------------------------------------
173  for(int ibin=0; ibin<18; ibin++)
174  {
175 
176  if(ibin>5 && ibin<10) continue; // skip low MJ bins
177 
178  if(doLatex)
179  {
180 
181  cout << "\\begin{table}" << endl;
182  cout << "\\centering" << endl;
183  cout << "\\caption{Yields for $" << binLatex[ibin].Data()<< "$. Uncertainties are statistical only.}" << endl;
184  cout << "\\begin{tabular}[tbp!]{ l | c c c c | c c c }" << endl;
185  cout << "\\hline" << endl;
186  cout << "$N_{b}$ & QCD & $t\\bar{t}$ & W+jets & Other & $m_{\\tilde{g}}=1000$ & $m_{\\tilde{g}}=1200$ & $m_{\\tilde{g}}=1400$ \\\\" << endl;
187  cout << "\\hline\\hline" << endl;
188  }
189  else
190  {
191  cout << "|" <<
192  left << setw(142) << Form("Bin %i: %s",ibin, (bin[ibin].ReplaceAll("#leq","<=").ReplaceAll("#geq",">=")).Data()) << " |" << endl;
193  cout << "|" <<
194  setw(4) << Form("Nb") << " |" <<
195  //setw(10) << Form("%.2f",data) << " |" <<
196  setw(16) << "qcd" << " |" <<
197  setw(16) << "ttbar" << " |" <<
198  setw(16) << "wjets" << " |" <<
199  setw(16) << "other" << " |" <<
200  setw(20) << "M=1000(S/B)"<< " |" <<
201  setw(20) << "M=1200(S/B)" << " |" <<
202  setw(20) << "M=1400(S/B)" << " |" << endl;
203  }
204 
205 
206 
207  for(int inb=1; inb<5; inb++)
208  {
209  printOneLine(inb,
210  data[ibin][inb-1], qcd[ibin][inb-1], ttbar[ibin][inb-1], wjets[ibin][inb-1], other[ibin][inb-1],
211  //sig1000[ibin][inb-1], sig1100[ibin][inb-1], sig1200[ibin][inb-1], sig1300[ibin][inb-1], sig1400[ibin][inb-1],
212  sig1000[ibin][inb-1]/sig1000sum, sig1100[ibin][inb-1]/sig1100sum, sig1200[ibin][inb-1]/sig1200sum,
213  sig1300[ibin][inb-1]/sig1300sum, sig1400[ibin][inb-1]/sig1400sum,
214  data_err[ibin][inb-1], qcd_err[ibin][inb-1], ttbar_err[ibin][inb-1], wjets_err[ibin][inb-1], other_err[ibin][inb-1],
215  sig1000_err[ibin][inb-1], sig1100_err[ibin][inb-1], sig1200_err[ibin][inb-1], sig1300_err[ibin][inb-1], sig1400_err[ibin][inb-1],
216  doLatex);
217  }
218 
219  if(doLatex)
220  {
221  cout<< "\\hline" << endl;
222  cout << "\\end{tabular}"<<endl;
223  cout << "\\end{table}\n";
224  cout << endl;
225  }
226  else
227  {
228  cout << endl;
229  }
230  }
231 
232  // -----------------------------------------------------
233  // table for supplementary material
234  // -----------------------------------------------------
235 
236  // Get pre-fit errors
237  float err[4][18][4];
238 
239  for(int ibin=0; ibin<18; ibin++)
240  {
241  for(int inb=0; inb<4; inb++)
242  {
243  err[0][ibin][inb] = 0;
244  err[1][ibin][inb] = 0;
245  err[2][ibin][inb] = 0;
246  err[3][ibin][inb] = 0;
247  }
248  }
249 
250  for(int ibin=0; ibin<18; ibin++) {
251 
252  if(ibin>=6 && ibin<=9) continue;
253 
254  for(int iproc=0; iproc<4; iproc++)
255  {
256  std::string process;
257  if(iproc==0) process = "qcd";
258  if(iproc==1) process = "ttbar";
259  if(iproc==2) process = "wjets";
260  if(iproc==3) process = "other";
261 
262  // loop over nb bins
263  for(int inb=1; inb<5; inb++)
264  {
265  cout << "... " << process << endl;
266  float central;
267  float up;
268 
269  if(infile->Get(Form("bin%i/%s", ibin, process.c_str()))==0x0) continue;
270  central = static_cast<TH1F*>(infile->Get(Form("bin%i/%s", ibin, process.c_str())))->GetBinContent(inb+1);
271 
272  if(central !=0)
273  {
274  // btag bc
275  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_btag_bcUp", ibin, process.c_str())))->GetBinContent(inb+1);
276  err[iproc][ibin][inb-1] = TMath::Abs(up-central)/central;
277 
278  // btag udsg
279  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_btag_udsgUp", ibin, process.c_str())))->GetBinContent(inb+1);
280  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
281 
282  // pileup
283  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_pileupUp", ibin, process.c_str())))->GetBinContent(inb+1);
284  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
285 
286  // qcd flavor
287  if(iproc==0)
288  {
289  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_qcd_flavorUp", ibin, process.c_str())))->GetBinContent(inb+1);
290  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
291  }
292 
293  // scale variations
294  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_%s_murUp", ibin, process.c_str(), process.c_str())))->GetBinContent(inb+1);
295  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
296  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_%s_mufUp", ibin, process.c_str(), process.c_str())))->GetBinContent(inb+1);
297  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
298  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_%s_murfUp", ibin, process.c_str(), process.c_str())))->GetBinContent(inb+1);
299  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
300 
301  // jer jes
302  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_jerUp", ibin, process.c_str())))->GetBinContent(inb+1);
303  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
304  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_jesUp", ibin, process.c_str())))->GetBinContent(inb+1);
305  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
306  // pdf
307  float pdferr=0;
308  for(int ipdf=0; ipdf<100; ipdf++)
309  {
310  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_w_pdf%iUp", ibin, process.c_str(), ipdf)))->GetBinContent(inb+1);
311  pdferr = AddInQuad(pdferr,TMath::Abs(up-central)/central);
312  }
313  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],pdferr/10);
314  cout << "pdf: " << ibin << " " << inb << " " << pdferr << endl;
315 
316  // Stats
317  if(infile->Get(Form("bin%i/%s_mcstat_%s_bin%i_nb%iUp", ibin, process.c_str(), process.c_str(),ibin,inb))!=0x0)
318  {
319  up = static_cast<TH1F*>(infile->Get(Form("bin%i/%s_mcstat_%s_bin%i_nb%iUp", ibin, process.c_str(), process.c_str(),ibin,inb)))->GetBinContent(inb+1);
320  err[iproc][ibin][inb-1] = AddInQuad(err[iproc][ibin][inb-1],TMath::Abs(up-central)/central);
321  }
322  }
323  cout << "both: " << ibin << " " << inb << " " << err[iproc][ibin][inb-1]<< endl;
324  }
325  }
326  }
327 
328  //
329  // 0-lepton
330  //
331  int tablebin_0lep[4]={16,17,10,13};
332  cout << "\\begin{table}" << endl;
333  cout << "\\centering" << endl;
334  cout << "\\begin{tabular}[tbp!]{ l | c c c c | c | c | c }" << endl;
335  cout << "\\hline" << endl;
336  cout << "$N_{b}$ & QCD & $t\\bar{t}$ & W+jets & Other & All bkg. & Data & $m_{\\tilde{g}}=1200\\GeV$\\\\" << endl;
337  cout << "\\hline\\hline" << endl;
338 
339  for(int ibin=0; ibin<4; ibin++)
340  {
341  int tablebin=tablebin_0lep[ibin];
342 
343  float databin(0), mcbin(0);
344  for(int inb=1; inb<5; inb++)
345  {
346  databin = databin + data[tablebin][inb-1];
347  mcbin = mcbin + qcd[tablebin][inb-1] + ttbar[tablebin][inb-1] + wjets[tablebin][inb-1] + other[tablebin][inb-1];
348  }
349 
350  cout <<"\\multicolumn{8}{c}{$" << binLatex[tablebin].Data() << "$} \\\\" << endl;
351  cout << "\\hline" << endl;
352  for(int inb=1; inb<5; inb++)
353  printYieldBin(inb,
354  data[tablebin][inb-1],
355  qcd[tablebin][inb-1],
356  ttbar[tablebin][inb-1],
357  wjets[tablebin][inb-1],
358  other[tablebin][inb-1],
359  sig1200[tablebin][inb-1],
360  err[0][tablebin][inb-1]*qcd[tablebin][inb-1],
361  err[1][tablebin][inb-1]*ttbar[tablebin][inb-1],
362  err[2][tablebin][inb-1]*wjets[tablebin][inb-1],
363  err[3][tablebin][inb-1]*other[tablebin][inb-1],
364  databin/mcbin, true /*renormalize to data*/);
365  cout << "\\hline" << endl;
366  }
367  cout<< "\\hline" << endl;
368  cout << "\\end{tabular}"<<endl;
369  cout << "\\end{table}\n"<< endl;
370 
371  cout << endl;
372  cout << endl;
373 
374 
375  //
376  // 1-lepton
377  //
378  int tablebin_1lep[4]={11,14,12,15};
379  cout << "\\begin{table}" << endl;
380  cout << "\\centering" << endl;
381  cout << "\\begin{tabular}[tbp!]{ l | c c c c | c | c | c }" << endl;
382  cout << "\\hline" << endl;
383  cout << "$N_{b}$ & QCD & $t\\bar{t}$ & W+jets & Other & All bkg. & Data & $m_{\\tilde{g}}=1200\\GeV$\\\\" << endl;
384  cout << "\\hline\\hline" << endl;
385 
386  for(int ibin=0; ibin<4; ibin++)
387  {
388  int tablebin=tablebin_1lep[ibin];
389 
390  float databin(0), mcbin(0);
391  for(int inb=1; inb<5; inb++)
392  {
393  databin = databin + data[tablebin][inb-1];
394  mcbin = mcbin + qcd[tablebin][inb-1] + ttbar[tablebin][inb-1] + wjets[tablebin][inb-1] + other[tablebin][inb-1];
395  }
396 
397  cout <<"\\multicolumn{8}{c}{$" << binLatex[tablebin].Data() << "$} \\\\" << endl;
398  cout << "\\hline" << endl;
399  for(int inb=1; inb<5; inb++)
400  printYieldBin(inb,
401  data[tablebin][inb-1],
402  qcd[tablebin][inb-1],
403  ttbar[tablebin][inb-1],
404  wjets[tablebin][inb-1],
405  other[tablebin][inb-1],
406  sig1200[tablebin][inb-1],
407  err[0][tablebin][inb-1]*qcd[tablebin][inb-1],
408  err[1][tablebin][inb-1]*ttbar[tablebin][inb-1],
409  err[2][tablebin][inb-1]*wjets[tablebin][inb-1],
410  err[3][tablebin][inb-1]*other[tablebin][inb-1],
411  databin/mcbin, true /*renormalize to data*/);
412  cout << "\\hline" << endl;
413  }
414  cout<< "\\hline" << endl;
415  cout << "\\end{tabular}"<<endl;
416  cout << "\\end{table}\n"<< endl;
417 
418  infile->Close();
419 
420  return 0;
421 }
422 
423 //
424 void printOneLine(int nb,
425  float data, float qcd, float ttbar, float wjets, float other,
426  float sig1000, float sig1100, float sig1200, float sig1300, float sig1400,
427  float data_err, float qcd_err, float ttbar_err, float wjets_err, float other_err,
428  float sig1000_err, float sig1100_err, float sig1200_err, float sig1300_err, float sig1400_err, float formatLatex)
429 {
430 
431  float how_to_deal_with_unused_vars;
432  how_to_deal_with_unused_vars=data;
433  how_to_deal_with_unused_vars=data_err;
434  how_to_deal_with_unused_vars=sig1100;
435  how_to_deal_with_unused_vars=sig1100_err;
436  how_to_deal_with_unused_vars=sig1300;
437  how_to_deal_with_unused_vars=sig1300_err;
438  how_to_deal_with_unused_vars=4;
439 
440  float totbkg=qcd+ttbar+wjets+other;
441 
442  if(formatLatex)
443  {
444  cout << Form("%i", nb) << " & "
445  << Form("$%.2f\\pm%.2f$",qcd,qcd_err) << " & "
446  << Form("$%.2f\\pm%.2f$",ttbar,ttbar_err) << " & "
447  << Form("$%.2f\\pm%.2f$",wjets,wjets_err) << " & "
448  << Form("$%.2f\\pm%.2f$",other,other_err) << " & "
449  //<< Form("$%.0f$",data) << " & "
450  << Form("$%.2f\\pm%.2f$",sig1000,sig1000_err) << " & "
451  << Form("$%.2f\\pm%.2f$",sig1200,sig1200_err) << " & "
452  << Form("$%.2f\\pm%.2f$",sig1400,sig1400_err) << " \\\\" << endl;
453  }
454  else
455  {
456  cout << "|" <<
457  setw(how_to_deal_with_unused_vars) << nb << " |" <<
458  setw(16) << Form("%.2f+-%.2f",qcd,qcd_err) << " |" <<
459  setw(16) << Form("%.2f+-%.2f",ttbar,ttbar_err) << " |" <<
460  setw(16) << Form("%.2f+-%.2f",wjets,wjets_err) << " |" <<
461  setw(16) << Form("%.2f+-%.2f",other,other_err) << " |" <<
462  //setw(16) << Form("%.2f+-%.2f",data) << " |" <<
463  setw(20) << Form("%.2f+-%.2f(%.2f)",sig1000,sig1000_err,sig1000/totbkg ) << " |" <<
464  setw(20) << Form("%.2f+-%.2f(%.2f)",sig1200,sig1200_err,sig1200/totbkg) << " |" <<
465  setw(20) << Form("%.2f+-%.2f(%.2f)",sig1400,sig1400_err,sig1400/totbkg) << " |" << endl;
466  }
467 }
468 
469 void printYieldBin(int nb, float data,
470  float qcd, float ttbar, float wjets, float other, float sig,
471  float qcd_err, float ttbar_err, float wjets_err, float other_err,
472  float dataovermc, bool doNorm)
473 {
474  if(qcd==0) qcd_err=0;
475  if(ttbar==0) ttbar_err=0;
476  if(wjets==0) wjets_err=0;
477  if(other==0) other_err=0;
478 
479  string nbbin;
480  if(nb==1) nbbin="$1$";
481  if(nb==2) nbbin="$2$";
482  if(nb==3) nbbin="$3$";
483  if(nb==4) nbbin="$\\geq 4$";
484 
485  if(doNorm)
486  {
487  qcd = qcd * dataovermc; qcd_err = qcd_err * dataovermc;
488  ttbar = ttbar * dataovermc; ttbar_err = ttbar_err * dataovermc;
489  wjets = wjets * dataovermc; wjets_err = wjets_err * dataovermc;
490  other = other * dataovermc; other_err = other_err * dataovermc;
491  }
492 
493  float tot_err = TMath::Sqrt(qcd_err*qcd_err+ttbar_err*ttbar_err+wjets_err*wjets_err+other_err*other_err);
494 
495  cout << nbbin << " & "
496  << Form("$%.1f \\pm %.1f$",qcd,qcd_err) << " & "
497  << Form("$%.1f \\pm %.1f$",ttbar,ttbar_err) << " & "
498  << Form("$%.1f \\pm %.1f$",wjets,wjets_err) << " & "
499  << Form("$%.1f \\pm %.1f$",other,other_err) << " & "
500  << Form("$%.1f \\pm %.1f$",qcd+ttbar+wjets+other,tot_err) << " & "
501  << Form("$%.0f$",data) << " & "
502  << Form("$%.1f$",sig) << " \\\\ " << endl;
503 }
504 
505 float AddInQuad(float a, float b)
506 {
507  return TMath::Sqrt(a*a+b*b);
508 }
509 
510 
int main()
Definition: table_rpv.cxx:32
STL namespace.
void printYieldBin(int nb, float data, float qcd, float ttbar, float wjets, float other, float sig, float qcd_err, float ttbar_err, float wjets_err, float other_err, float dataovermc, bool doNorm)
Definition: table_rpv.cxx:469
float AddInQuad(float a, float b)
Definition: table_rpv.cxx:505
void printOneLine(int nb, float data, float qcd, float ttbar, float wjets, float other, float sig1000, float sig1100, float sig1200, float sig1300, float sig1400, float data_err, float qcd_err, float ttbar_err, float wjets_err, float other_err, float sig1000_err, float sig1100_err, float sig1200_err, float sig1300_err, float sig1400_err, float doLatex)
Definition: table_rpv.cxx:424
bool doLatex
Definition: table_rpv.cxx:15
tuple data
Definition: parse_card.py:260