1 |
buchmann |
1.1 |
/*
|
2 |
|
|
|
3 |
|
|
Contains functions that were used in the past but are out now ...
|
4 |
|
|
|
5 |
|
|
*/
|
6 |
|
|
#include <iostream>
|
7 |
|
|
#include <vector>
|
8 |
|
|
#include <sys/stat.h>
|
9 |
|
|
|
10 |
|
|
#include <TCut.h>
|
11 |
|
|
#include <TROOT.h>
|
12 |
|
|
#include <TCanvas.h>
|
13 |
|
|
#include <TMath.h>
|
14 |
|
|
#include <TColor.h>
|
15 |
|
|
#include <TPaveText.h>
|
16 |
|
|
#include <TRandom.h>
|
17 |
|
|
#include <TH1.h>
|
18 |
|
|
#include <TH2.h>
|
19 |
|
|
#include <TF1.h>
|
20 |
|
|
#include <TSQLResult.h>
|
21 |
|
|
#include <TProfile.h>
|
22 |
|
|
|
23 |
buchmann |
1.3 |
string centralupdownname(int num) {
|
24 |
|
|
if (num==0) return "central";
|
25 |
|
|
if (num==1) return "down";
|
26 |
|
|
if (num==2) return "up";
|
27 |
|
|
return "centralupdownnameERROR";
|
28 |
|
|
}
|
29 |
|
|
|
30 |
|
|
string dataormc(int isdata) {
|
31 |
|
|
if(isdata) return "Data";
|
32 |
|
|
else return "MC";
|
33 |
|
|
}
|
34 |
|
|
|
35 |
|
|
int histocounter=0;
|
36 |
|
|
string give_histo_number(string basename="", int isdata=-1, int centralcounter=-1) {
|
37 |
|
|
histocounter++;
|
38 |
|
|
stringstream histocounternum;
|
39 |
|
|
if(isdata==-1) {
|
40 |
|
|
if(basename=="") histocounternum << histocounter;
|
41 |
|
|
else histocounternum << basename << "_" << histocounter;
|
42 |
|
|
}
|
43 |
|
|
else {
|
44 |
|
|
histocounternum << basename << "_" << dataormc(isdata) << "_" << centralupdownname(centralcounter);
|
45 |
|
|
}
|
46 |
|
|
return histocounternum.str();
|
47 |
|
|
}
|
48 |
|
|
|
49 |
|
|
int central=0;
|
50 |
|
|
int down=1;
|
51 |
|
|
int up=2;
|
52 |
|
|
|
53 |
buchmann |
1.1 |
void crunch_the_numbers(TH1F *RcorrJZBeemmop[3][2],TH1F *RcorrJZBeeop[3][2],TH1F *RcorrJZBmmop[3][2],TH1F *LcorrJZBeemmop[3][2],TH1F *LcorrJZBeeop[3][2],TH1F *LcorrJZBmmop[3][2],TH1F *RcorrJZBemop[3][2],TH1F *LcorrJZBemop[3][2],float zjetsestimate[3][2][20],float ttbarestimate[3][2][2][20],float predicted[3][2][20],float observed[3][2][20],int isdata,vector<float> jzbcuts,float eemmmumu[2][3][20]) {
|
54 |
buchmann |
1.4 |
// dout << "Crunching the numbers for is_data=" << isdata << endl;
|
55 |
buchmann |
1.1 |
for(int k=0;k<20;k++) {for(int i=0;i<2;i++){for(int j=0;j<3;j++) {eemmmumu[i][j][k]=0;}}}
|
56 |
|
|
for(int icut=0;icut<jzbcuts.size()-1;icut++) {//do calculation for each JZB cut
|
57 |
|
|
for(int ibin=1;ibin<jzbcuts.size();ibin++) {//and to do that, we need to consider each bin.
|
58 |
|
|
if(RcorrJZBeemmop[0][isdata]->GetBinLowEdge(ibin)<jzbcuts[icut]) continue;
|
59 |
buchmann |
1.4 |
// if(icut==0) dout << "Predicted+=" << LcorrJZBeemmop[central][isdata]->GetBinContent(ibin) << " eemm,L" << endl;
|
60 |
buchmann |
1.1 |
predicted[central][isdata][icut]+=LcorrJZBeemmop[central][isdata]->GetBinContent(ibin);
|
61 |
|
|
predicted[up][isdata][icut]+=LcorrJZBeemmop[up][isdata]->GetBinContent(ibin);
|
62 |
|
|
predicted[down][isdata][icut]+=LcorrJZBeemmop[down][isdata]->GetBinContent(ibin);
|
63 |
|
|
|
64 |
buchmann |
1.4 |
// if(icut==0) dout << "Predicted+=" << RcorrJZBemop[central][isdata]->GetBinContent(ibin) << " em, R" << endl;
|
65 |
buchmann |
1.1 |
predicted[central][isdata][icut]+=RcorrJZBemop[central][isdata]->GetBinContent(ibin);
|
66 |
|
|
predicted[up][isdata][icut]+=RcorrJZBemop[up][isdata]->GetBinContent(ibin);
|
67 |
|
|
predicted[down][isdata][icut]+=RcorrJZBemop[down][isdata]->GetBinContent(ibin);
|
68 |
|
|
|
69 |
buchmann |
1.4 |
// if(icut==0) dout << "Predicted-=" << LcorrJZBemop[central][isdata]->GetBinContent(ibin) <<" em, L" << endl;
|
70 |
buchmann |
1.1 |
predicted[central][isdata][icut]-=LcorrJZBemop[central][isdata]->GetBinContent(ibin);
|
71 |
|
|
predicted[up][isdata][icut]-=LcorrJZBemop[up][isdata]->GetBinContent(ibin);
|
72 |
|
|
predicted[down][isdata][icut]-=LcorrJZBemop[down][isdata]->GetBinContent(ibin);
|
73 |
|
|
|
74 |
buchmann |
1.4 |
// if(icut==0) dout << "Observed=" << RcorrJZBeemmop[central][isdata]->GetBinContent(ibin) << "eemm, R" << endl;
|
75 |
buchmann |
1.1 |
observed[central][isdata][icut]+=RcorrJZBeemmop[central][isdata]->GetBinContent(ibin);
|
76 |
|
|
observed[up][isdata][icut]+=RcorrJZBeemmop[up][isdata]->GetBinContent(ibin);
|
77 |
|
|
observed[down][isdata][icut]+=RcorrJZBeemmop[down][isdata]->GetBinContent(ibin);
|
78 |
|
|
|
79 |
|
|
zjetsestimate[central][isdata][icut]+=LcorrJZBeemmop[central][isdata]->GetBinContent(ibin);
|
80 |
|
|
ttbarestimate[central][isdata][0][icut]+=RcorrJZBemop[central][isdata]->GetBinContent(ibin);
|
81 |
|
|
ttbarestimate[central][isdata][1][icut]+=LcorrJZBemop[central][isdata]->GetBinContent(ibin);
|
82 |
|
|
|
83 |
|
|
eemmmumu[0][0][icut]+=LcorrJZBeeop[central][isdata]->GetBinContent(ibin);
|
84 |
|
|
eemmmumu[0][1][icut]+=LcorrJZBmmop[central][isdata]->GetBinContent(ibin);
|
85 |
|
|
eemmmumu[0][2][icut]+=LcorrJZBemop[central][isdata]->GetBinContent(ibin);
|
86 |
|
|
|
87 |
|
|
eemmmumu[1][0][icut]+=RcorrJZBeeop[central][isdata]->GetBinContent(ibin);
|
88 |
|
|
eemmmumu[1][1][icut]+=RcorrJZBmmop[central][isdata]->GetBinContent(ibin);
|
89 |
|
|
eemmmumu[1][2][icut]+=RcorrJZBemop[central][isdata]->GetBinContent(ibin);
|
90 |
|
|
|
91 |
|
|
}//end of ibin loop
|
92 |
|
|
}//end of icut loop
|
93 |
|
|
}
|
94 |
|
|
|
95 |
|
|
void make_table(float eemmmumu[2][3][20],int icut,float JZBcut) {
|
96 |
|
|
vector< vector <string> > entries;
|
97 |
|
|
vector <string> line;
|
98 |
|
|
line.push_back("");
|
99 |
|
|
line.push_back("eemm (ee/mm)");
|
100 |
|
|
line.push_back("em");
|
101 |
|
|
entries.push_back(line);
|
102 |
|
|
line.clear();
|
103 |
|
|
line.push_back("JZB>"+any2string(JZBcut));
|
104 |
|
|
line.push_back(any2string(eemmmumu[1][0][icut]+eemmmumu[1][1][icut])+"("+any2string(eemmmumu[1][0][icut])+"/"+any2string(eemmmumu[1][1][icut])+")");
|
105 |
|
|
line.push_back(any2string(eemmmumu[1][2][icut]));
|
106 |
|
|
entries.push_back(line);
|
107 |
|
|
line.clear();
|
108 |
|
|
line.push_back("JZB<-"+any2string(JZBcut));
|
109 |
|
|
line.push_back(any2string(eemmmumu[0][0][icut]+eemmmumu[0][1][icut])+"("+any2string(eemmmumu[0][0][icut])+"/"+any2string(eemmmumu[0][1][icut])+")");
|
110 |
|
|
line.push_back(any2string(eemmmumu[0][2][icut]));
|
111 |
|
|
entries.push_back(line);
|
112 |
|
|
make_nice_jzb_table(entries);
|
113 |
|
|
/*
|
114 |
buchmann |
1.4 |
dout << " \t\t | \t eemm (ee/mm) \t | \t em" << endl;
|
115 |
|
|
dout << "JZB>peak\t | \t " << eemmmumu[1][0]+eemmmumu[1][1] << "(" << eemmmumu[1][0] << "/" << eemmmumu[1][1] << ")\t | \t" << eemmmumu[1][2] << endl;
|
116 |
|
|
dout << "JZB<peak\t | \t " << eemmmumu[0][0]+eemmmumu[0][1] << "(" << eemmmumu[0][0] << "/" << eemmmumu[0][1] << ")\t | \t" << eemmmumu[0][2] << endl;
|
117 |
|
|
dout << endl;
|
118 |
buchmann |
1.1 |
*/
|
119 |
|
|
}
|
120 |
|
|
|
121 |
|
|
void present_result(vector<float> &jzbcuts,float predicted[3][2][20],float observed[3][2][20],float zjetsestimate[3][2][20],float ttbarestimate[3][2][2][20],int icut, float eemmmumu[2][3][20]) {
|
122 |
|
|
|
123 |
|
|
//blublu
|
124 |
buchmann |
1.4 |
dout << endl << endl;
|
125 |
|
|
dout << "--------------------------------------------------------------------------------------" << endl;
|
126 |
|
|
dout << "DATA: " << endl;
|
127 |
|
|
dout << " For JZB>" << jzbcuts[icut];
|
128 |
buchmann |
1.1 |
float max,downvar,upvar;
|
129 |
|
|
stringstream printtitle;
|
130 |
|
|
printtitle << "JZB>" << jzbcuts[icut] << " (data)";
|
131 |
|
|
ComputePoissonError(zjetsestimate[central][data][icut],ttbarestimate[central][data][0][icut],ttbarestimate[central][data][1][icut],max,downvar,upvar,printtitle.str());
|
132 |
buchmann |
1.4 |
//dout << " Predicted: " << print_range(predicted[central][data][icut],predicted[up][data][icut],predicted[down][data][icut]) << " (stat) +" << 0.2*zjetsestimate[central][data][icut] << "-" << 0.4*zjetsestimate[central][data][icut] << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
|
133 |
buchmann |
1.1 |
float pred=predicted[central][data][icut];
|
134 |
|
|
float sysP=abs(predicted[up][data][icut]-pred);
|
135 |
|
|
float sysN=abs(pred-predicted[down][data][icut]);
|
136 |
|
|
sysN = sysN + pred*(1-fitresultconstdata);//fitresultconst comes from the fit in the 0-30 GeV range!
|
137 |
buchmann |
1.4 |
dout << " Predicted: " << pred << "+" << statErrorP(pred) << "-" << statErrorN(pred) << " (stat) +" << sysP << " - " << sysN << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
|
138 |
buchmann |
1.1 |
//0.2*zjetsestimate[central][data][icut] << "-" << 0.4*zjetsestimate[central][data][icut] << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
|
139 |
buchmann |
1.4 |
dout << " Details: ZJetsEstimate= " << zjetsestimate[central][data][icut] << ", TTbar estimate=" << ttbarestimate[central][data][0][icut]-ttbarestimate[central][data][1][icut] << " [" << ttbarestimate[central][data][0][icut] << " R -" << ttbarestimate[central][data][1][icut] << " L ]" << endl;
|
140 |
|
|
dout << " For JZB>" << jzbcuts[icut] << " Observed: " << observed[central][data][icut] << endl;
|
141 |
|
|
dout << "TABLE:" << endl;
|
142 |
buchmann |
1.1 |
make_table(eemmmumu,icut,jzbcuts[icut]);
|
143 |
buchmann |
1.4 |
dout << "MC: " << endl;
|
144 |
buchmann |
1.1 |
printtitle.str("");
|
145 |
|
|
printtitle<<"JZB>"<<jzbcuts[icut]<<" (MC)";
|
146 |
|
|
ComputePoissonError(zjetsestimate[central][mc][icut],ttbarestimate[central][mc][0][icut],ttbarestimate[central][mc][1][icut],max,downvar,upvar,printtitle.str());
|
147 |
|
|
pred=predicted[central][mc][icut];
|
148 |
|
|
sysP=abs(predicted[up][mc][icut]-pred);
|
149 |
|
|
sysN=abs(pred-predicted[down][mc][icut]);
|
150 |
|
|
sysN = sysN + pred*(1-fitresultconstmc);//fitresultconst comes from the fit in the 0-30 GeV range!
|
151 |
buchmann |
1.4 |
dout << " Predicted: " << pred << "+" << statErrorP(pred) << "-" << statErrorN(pred) << " (stat) +" << sysP << " - " << sysN << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
|
152 |
|
|
// dout << " Predicted: " << print_range(pred,statErrorP(pred),statErrorN(pred)) << " (stat) +" << sysP << " - " << sysN << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
|
153 |
|
|
//dout << " Predicted: " << print_range(predicted[central][mc][icut],predicted[down][mc][icut],predicted[up][mc][icut]) << " (stat) +" << 0.2*zjetsestimate[central][mc][icut] << "-" << 0.4*zjetsestimate[central][mc][icut] << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
|
154 |
buchmann |
1.1 |
//print_range(predicted[central][mc][icut],predicted[central][mc][icut]+upvar,predicted[central][mc][icut]-downvar) << ")" << endl;
|
155 |
buchmann |
1.4 |
dout << " Details: ZJetsEstimate= " << zjetsestimate[central][mc][icut] << ", TTbar estimate=" << ttbarestimate[central][mc][0][icut]-ttbarestimate[central][mc][1][icut] << " [" << ttbarestimate[central][mc][0][icut] << " R -" << ttbarestimate[central][mc][1][icut] << " L ] )" << endl;
|
156 |
|
|
dout << " For JZB>" << jzbcuts[icut] << " Observed: " << observed[central][mc][icut] << endl;
|
157 |
|
|
dout << endl << endl;
|
158 |
buchmann |
1.1 |
}
|
159 |
|
|
|
160 |
|
|
void calculate_predicted_and_observed_eemm(float MCPeak,float MCPeakError,float DataPeak,float DataPeakError,vector<float> jzbcuts) { // DO NOT CHANGE THIS TO ... &jzbcuts !!! we add one!
|
161 |
|
|
jzbcuts.push_back(14000);
|
162 |
|
|
|
163 |
|
|
/*
|
164 |
|
|
* We want the following numbers: For all JZB cuts, we want: ee,mm,em; observed, predicted. we want final results with errors from the peak and statistical error.
|
165 |
|
|
* How to accomplish this; we draw histos for MC&data, once with the peak (to extract obs/pred), once with peak+sigma, once with peak-sigma. this gives us the peak error.
|
166 |
|
|
* Statistical error: Comes from Poissonian errors ... for this we have a special little macro that will give us the value for three given parameters (cool, right?)
|
167 |
|
|
*/
|
168 |
|
|
|
169 |
|
|
string jzbpeak[3][2];
|
170 |
|
|
jzbpeak[central][data]=give_jzb_expression(DataPeak,data);
|
171 |
|
|
jzbpeak[up][data]=give_jzb_expression(DataPeak+DataPeakError,data);
|
172 |
|
|
jzbpeak[down][data]=give_jzb_expression(DataPeak-DataPeakError,data);
|
173 |
|
|
jzbpeak[central][mc]=give_jzb_expression(MCPeak,mc);
|
174 |
|
|
jzbpeak[up][mc]=give_jzb_expression(MCPeak+MCPeakError,mc);
|
175 |
|
|
jzbpeak[down][mc]=give_jzb_expression(MCPeak-MCPeakError,mc);
|
176 |
|
|
|
177 |
|
|
TH1F *RcorrJZBeemmop[3][2];
|
178 |
|
|
TH1F *LcorrJZBeemmop[3][2];
|
179 |
|
|
TH1F *RcorrJZBeeop[3][2];
|
180 |
|
|
TH1F *LcorrJZBeeop[3][2];
|
181 |
|
|
TH1F *RcorrJZBmmop[3][2];
|
182 |
|
|
TH1F *LcorrJZBmmop[3][2];
|
183 |
|
|
TH1F *RcorrJZBemop[3][2];
|
184 |
|
|
TH1F *LcorrJZBemop[3][2];
|
185 |
|
|
float zjetsestimate[3][2][20];
|
186 |
|
|
float predicted[3][2][20];
|
187 |
|
|
float observed[3][2][20];
|
188 |
|
|
float ttbarestimate[3][2][2][20];
|
189 |
|
|
float eemmmumu[2][3][20];
|
190 |
|
|
|
191 |
|
|
|
192 |
|
|
for(int isdata=0;isdata<=1;isdata++) {
|
193 |
|
|
for(int centraldownup=0;centraldownup<=2;centraldownup++) {
|
194 |
buchmann |
1.2 |
RcorrJZBeemmop[centraldownup][isdata] = allsamples.Draw(give_histo_number("RcorrJZBeemmop",isdata,centraldownup),jzbpeak[centraldownup][isdata].c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets,isdata, luminosity);
|
195 |
|
|
LcorrJZBeemmop[centraldownup][isdata] = allsamples.Draw(give_histo_number("LcorrJZBeemmop",isdata,centraldownup),("-"+jzbpeak[centraldownup][isdata]).c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets,isdata, luminosity);
|
196 |
buchmann |
1.1 |
|
197 |
buchmann |
1.2 |
RcorrJZBemop[centraldownup][isdata] = allsamples.Draw(give_histo_number("RcorrJZBemop",isdata,centraldownup),jzbpeak[centraldownup][isdata].c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSOF&&cutnJets,isdata, luminosity);
|
198 |
|
|
LcorrJZBemop[centraldownup][isdata] = allsamples.Draw(give_histo_number("LcorrJZBemop",isdata,centraldownup),("-"+jzbpeak[centraldownup][isdata]).c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSOF&&cutnJets,isdata,luminosity);
|
199 |
|
|
RcorrJZBemop[centraldownup][isdata]->Add(allsamples.Draw(give_histo_number("RcorrJZBemopSB",isdata,centraldownup),jzbpeak[centraldownup][isdata].c_str(),jzbcuts, "JZB [GeV]", "events", sidebandcut&&cutOSOF&&cutnJets,isdata, luminosity));
|
200 |
|
|
LcorrJZBemop[centraldownup][isdata]->Add(allsamples.Draw(give_histo_number("LcorrJZBemopSB",isdata,centraldownup),("-"+jzbpeak[centraldownup][isdata]).c_str(),jzbcuts, "JZB [GeV]", "events", sidebandcut&&cutOSOF&&cutnJets,isdata,luminosity));
|
201 |
|
|
RcorrJZBemop[centraldownup][isdata]->Add(allsamples.Draw(give_histo_number("RcorrJZBeemmopSB",isdata,centraldownup),jzbpeak[centraldownup][isdata].c_str(),jzbcuts, "JZB [GeV]", "events", sidebandcut&&cutOSSF&&cutnJets,isdata, luminosity));
|
202 |
|
|
LcorrJZBemop[centraldownup][isdata]->Add(allsamples.Draw(give_histo_number("LcorrJZBeemmopSB",isdata,centraldownup),("-"+jzbpeak[centraldownup][isdata]).c_str(),jzbcuts, "JZB [GeV]", "events", sidebandcut&&cutOSSF&&cutnJets,isdata,luminosity));
|
203 |
buchmann |
1.1 |
LcorrJZBemop[centraldownup][isdata]->Scale(1.0/3);
|
204 |
|
|
RcorrJZBemop[centraldownup][isdata]->Scale(1.0/3);
|
205 |
buchmann |
1.2 |
RcorrJZBeeop[centraldownup][isdata] = allsamples.Draw(give_histo_number("RcorrJZBeeop",isdata,centraldownup),jzbpeak[centraldownup][isdata].c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&"id1==0",isdata, luminosity);
|
206 |
|
|
LcorrJZBeeop[centraldownup][isdata] = allsamples.Draw(give_histo_number("LcorrJZBeeop",isdata,centraldownup),("-"+jzbpeak[centraldownup][isdata]).c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&"id1==0",isdata, luminosity);
|
207 |
|
|
RcorrJZBmmop[centraldownup][isdata] = allsamples.Draw(give_histo_number("RcorrJZBmmop",isdata,centraldownup),jzbpeak[centraldownup][isdata].c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&"id1==1",isdata, luminosity);
|
208 |
|
|
LcorrJZBmmop[centraldownup][isdata] = allsamples.Draw(give_histo_number("LcorrJZBmmop",isdata,centraldownup),("-"+jzbpeak[centraldownup][isdata]).c_str(),jzbcuts, "JZB [GeV]", "events", cutmass&&cutOSSF&&cutnJets&&"id1==1",isdata, luminosity);
|
209 |
buchmann |
1.1 |
for(int icut=0;icut<=jzbcuts.size();icut++) {
|
210 |
|
|
zjetsestimate[centraldownup][isdata][icut]=0;
|
211 |
|
|
predicted[centraldownup][isdata][icut]=0;
|
212 |
|
|
observed[centraldownup][isdata][icut]=0;
|
213 |
|
|
ttbarestimate[centraldownup][isdata][0][icut]=0;
|
214 |
|
|
ttbarestimate[centraldownup][isdata][1][icut]=0;
|
215 |
|
|
}
|
216 |
|
|
}//end of for central,up,down loop
|
217 |
|
|
crunch_the_numbers(RcorrJZBeemmop,RcorrJZBeeop,RcorrJZBmmop,LcorrJZBeemmop,LcorrJZBeeop,LcorrJZBmmop,RcorrJZBemop,LcorrJZBemop,zjetsestimate,ttbarestimate,predicted,observed,isdata,jzbcuts,eemmmumu);
|
218 |
|
|
|
219 |
|
|
// void crunch_the_numbers(TH1F *RcorrJZBeemmop[3][2],TH1F *RcorrJZBeeop[3][2],TH1F *RcorrJZBmmop[3][2],TH1F *LcorrJZBeemmop[3][2],TH1F *LcorrJZBeeop[3][2],TH1F *LcorrJZBmmop[3][2],TH1F *RcorrJZBemop[3][2],TH1F *LcorrJZBemop[3][2],float zjetsestimate[3][2][20],float ttbarestimate[3][2][2][20],float predicted[3][2][20],float observed[3][2][20],int isdata,vector<float> jzbcuts,float eemmmumu[2][3]) {
|
220 |
|
|
|
221 |
|
|
}//end of is data loop
|
222 |
|
|
|
223 |
|
|
|
224 |
buchmann |
1.4 |
dout << "We obtain the following results: " << endl;
|
225 |
buchmann |
1.1 |
for(int icut=0;icut<jzbcuts.size()-1;icut++) {
|
226 |
|
|
present_result(jzbcuts,predicted,observed,zjetsestimate,ttbarestimate,icut,eemmmumu);
|
227 |
|
|
}
|
228 |
|
|
|
229 |
|
|
|
230 |
|
|
}
|
231 |
|
|
|