110 |
|
vector<int> emptyvector; |
111 |
|
fill_result_histos(zossfp, zossfperr,zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,datajzb,cut,cuthigh,mcordata,result,emptyvector,allsamples,addcut); |
112 |
|
} |
113 |
< |
|
114 |
< |
/* |
115 |
< |
void get_result_above_one_fixed_jzb_value(float cut ,string mcjzb,string datajzb, int mcordata,float jzbpeakerrorMC, float jzbpeakerrorData, TCanvas *rescan, bool chatty=false, bool dopoisson=false) { |
116 |
< |
rescan->cd(); |
117 |
< |
if(mcordata==data) dout << "***\nCrunching numbers for JZB>" << cut << " : " << endl; |
118 |
< |
|
119 |
< |
float zossfp, zossfperr, zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,result; |
120 |
< |
if(mcordata==mc) fill_result_histos(zossfp, zossfperr, zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,mcjzb,cut,mcordata,result); |
121 |
< |
if(mcordata==data) fill_result_histos(zossfp, zossfperr, zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,datajzb,cut,mcordata,result); |
122 |
< |
if(mcordata==mcwithsignal) fill_result_histos(zossfp, zossfperr, zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,mcjzb,cut,mcordata,result); |
123 |
< |
|
124 |
< |
float zossfpee, zossfpeeerr, zosofpee, zossfnee, zosofnee, sbossfpee, sbosofpee, sbossfnee, sbosofnee,resultee; |
125 |
< |
float zossfpmm, zossfpmmerr, zosofpmm, zossfnmm, zosofnmm, sbossfpmm, sbosofpmm, sbossfnmm, sbosofnmm,resultmm; |
126 |
< |
if(mcordata==data) { |
127 |
< |
fill_result_histos(zossfpee, zossfpeeerr, zosofpee, zossfnee, zosofnee, sbossfpee, sbosofpee, sbossfnee, sbosofnee,datajzb,cut,mcordata,resultee,"id1==0"); |
128 |
< |
fill_result_histos(zossfpmm, zossfpmmerr, zosofpmm, zossfnmm, zosofnmm, sbossfpmm, sbosofpmm, sbossfnmm, sbosofnmm,datajzb,cut,mcordata,resultmm,"id1==1"); |
129 |
< |
} |
130 |
< |
|
131 |
< |
float ppzossfp, ppzossfperr, ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn, ppresult; |
132 |
< |
if(mcordata==mc) fill_result_histos(ppzossfp, ppzossfperr,ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(mcjzb,jzbpeakerrorMC),cut,mcordata,ppresult); |
133 |
< |
if(mcordata==data) fill_result_histos(ppzossfp, ppzossfperr,ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(datajzb,jzbpeakerrorData),cut,mcordata,ppresult); |
134 |
< |
if(mcordata==mcwithsignal) fill_result_histos(ppzossfp, ppzossfperr,ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(mcjzb,jzbpeakerrorMC),cut,mcordata,ppresult); |
135 |
< |
|
136 |
< |
float pnzossfp, pnzossfperr, pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn, pnresult; |
137 |
< |
if(mcordata==mc) fill_result_histos(pnzossfp, pnzossfperr,pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn,newjzbexpression(mcjzb,-jzbpeakerrorMC),cut,mcordata,pnresult); |
138 |
< |
if(mcordata==data) fill_result_histos(pnzossfp, pnzossfperr,pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn,newjzbexpression(datajzb,-jzbpeakerrorData),cut,mcordata,pnresult); |
139 |
< |
if(mcordata==mcwithsignal) fill_result_histos(pnzossfp, pnzossfperr,pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn,newjzbexpression(mcjzb,-jzbpeakerrorMC),cut,mcordata,pnresult); |
140 |
< |
|
141 |
< |
float syserr=0; |
142 |
< |
float peakerr=0; |
143 |
< |
float staterr=0; |
144 |
< |
float poissonstaterrup=-999; |
145 |
< |
float poissonstaterrdown=-999; |
146 |
< |
if(fabs(result-pnresult)>fabs(result-ppresult)) peakerr=fabs(result-pnresult); else peakerr=fabs(result-ppresult); |
147 |
< |
|
148 |
< |
float zjetsestimateuncert=0.5; |
149 |
< |
float emuncert=0.5; |
150 |
< |
float emsidebanduncert=0.5; |
151 |
< |
float eemmsidebanduncert=0.5; |
152 |
< |
syserr = (zjetsestimateuncert*zossfn)*(zjetsestimateuncert*zossfn);//first term |
153 |
< |
syserr+= ((zosofp)*(zosofp) + (zosofn)*(zosofn))*(1.0/9)*emuncert*emuncert;//sys err from emu method |
154 |
< |
syserr+= ((sbossfp)*(sbossfp)+(sbossfn)*(sbossfn))*(1.0/9)*eemmsidebanduncert*eemmsidebanduncert; // sys err from eemm sidebands |
155 |
< |
syserr+= ((sbosofp)*(sbosofp)+(sbosofn)*(sbosofn))*(1.0/9)*emsidebanduncert*emsidebanduncert; // sys err from emu sidebands |
156 |
< |
syserr=TMath::Sqrt(syserr); |
157 |
< |
|
158 |
< |
staterr=TMath::Sqrt(zossfn + (1.0/9)*(zosofp+zosofn)+ (1.0/9)*(sbossfp+sbossfn)+ (1.0/9)*(sbosofp+sbosofn)); |
159 |
< |
if(dopoisson) advanced_poisson(zossfn,zosofp,zosofn,sbossfp,sbossfn,sbosofp,sbosofn,poissonstaterrdown,poissonstaterrup); |
160 |
< |
|
161 |
< |
float e_to_emu=0.5; |
162 |
< |
float m_to_emu=0.5; |
163 |
< |
|
164 |
< |
if(mcordata==mc) dout << " MC :: "; |
165 |
< |
if(mcordata==mcwithsignal) dout << " MC with S :: "; |
166 |
< |
if(mcordata==data) dout << " "; |
167 |
< |
dout << "Observed : " << zossfp << "+-" << zossfperr << endl; |
168 |
< |
if(mcordata==data) dout << " Composition: " << zossfpee << " (ee), " << zossfpmm << " (mm) " << endl; |
169 |
< |
|
170 |
< |
if(mcordata==mc) dout << " MC :: "; |
171 |
< |
if(mcordata==mcwithsignal) dout << " MC with S :: "; |
172 |
< |
if(mcordata==data) dout << " "; |
173 |
< |
dout << "Predicted: " << zossfn << " + (1/3)*(" << zosofp << "-" << zosofn<<") [e&mu]+ (1/3)*(" << sbossfp << "-" << sbossfn<<") [SF,SB]+ (1/3)*(" << sbosofp << "-" << sbosofn<<") [OF,SB] = "; |
174 |
< |
dout << zossfn + (1.0/3)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn)<< " +/- " << peakerr << " (peak ) " << " +/- " << syserr << " (sys) +/- " << staterr << " (stat)" << endl; |
175 |
< |
if(dopoisson) dout << " stat error with Poisson : +" << poissonstaterrup << " - " << poissonstaterrdown << endl; |
176 |
< |
|
177 |
< |
if(mcordata==data) { |
178 |
< |
dout << " Composition: (ee)" << zossfnee << " + (1/3)*(" << e_to_emu*zosofp << "-" << e_to_emu*zosofn<<") ["<<e_to_emu<<"*e&mu]+ (1/3)*(" << sbossfpee << "-" << sbossfnee<<") [SF,SB]+ (1/3)*(" << sbosofp*e_to_emu << "-" << sbosofn*e_to_emu<<") ["<<e_to_emu<<"*OF,SB] = "; |
179 |
< |
dout << zossfnee + (1.0/3)*(e_to_emu*zosofp-e_to_emu*zosofn)+ (1.0/3)*(sbossfpee-sbossfnee) + (1.0/3)*(sbosofp*e_to_emu - sbosofn*e_to_emu) << endl; |
180 |
< |
dout << " (mm)" << zossfnmm << " + (1/3)*(" << m_to_emu*zosofp << "-" << m_to_emu*zosofn<<") ["<<m_to_emu<<"*e&mu]+ (1/3)*(" << sbossfpmm << "-" << sbossfnmm<<") [SF,SB]+ (1/3)*(" << sbosofp*m_to_emu << "-" << sbosofn*m_to_emu<<") ["<<m_to_emu<<"*OF,SB] = "; |
181 |
< |
dout << zossfnmm + (1.0/3)*(m_to_emu*zosofp - m_to_emu*zosofn) + (1.0/3)*(sbossfpmm -sbossfnmm)+ (1.0/3)*(sbosofp*m_to_emu-sbosofn*e_to_emu) << endl; |
182 |
< |
} |
183 |
< |
|
184 |
< |
if(chatty) { |
185 |
< |
dout << " Pred(ZJets ) \t " << zossfn << endl; |
186 |
< |
dout << " Pred(eμ]) \t " << zosofp << "-" << zosofn << " = " << zosofp-zosofn<<endl; |
187 |
< |
dout << " Pred(ossf,sb]) \t " << sbossfp << "-" << sbossfn<<" = "<<sbossfp-sbossfn<<endl; |
188 |
< |
dout << " Pred(osof,sb]) \t " << sbosofp << "-" << sbosofn<<" = "<<sbosofp-sbosofn<<endl; |
189 |
< |
} |
190 |
< |
|
191 |
< |
if(mcordata==data) { |
192 |
< |
//store the result! |
193 |
< |
Nobs.push_back(zossfp); |
194 |
< |
Npred.push_back(zossfn + (1.0/3)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn)); |
195 |
< |
float totprederr=0; |
196 |
< |
totprederr+=peakerr*peakerr; |
197 |
< |
totprederr+=syserr*syserr; |
198 |
< |
totprederr+=staterr*staterr; |
199 |
< |
totprederr=TMath::Sqrt(totprederr); |
200 |
< |
Nprederr.push_back(totprederr); |
201 |
< |
} |
202 |
< |
} |
203 |
< |
*/ |
113 |
> |
|
114 |
|
vector<float> get_result_between_two_fixed_jzb_values(float cut , float cuthigh, string mcjzb,string datajzb, int mcordata,float jzbpeakerrorMC, float jzbpeakerrorData, TCanvas *rescan, bool chatty=false, bool dopoisson=false, bool writeanything=true) { |
115 |
|
/*return vector of floats |
116 |
|
[0] Bpred [1] Bpred uncert [2] Observed [3] Observed error |
131 |
|
fill_result_histos(zossfpmm, zossfpmmerr, zosofpmm, zossfnmm, zosofnmm, sbossfpmm, sbosofpmm, sbossfnmm, sbosofnmm,datajzb,cut,cuthigh,mcordata,resultmm,"id1==1"); |
132 |
|
} |
133 |
|
|
224 |
– |
// float ppzossfp, ppzossfperr, ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn, ppresult; |
225 |
– |
// if(mcordata==mc) fill_result_histos(ppzossfp, ppzossfperr,ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(mcjzb,jzbpeakerrorMC),cut,cuthigh,mcordata,ppresult); |
226 |
– |
// if(mcordata==data) fill_result_histos(ppzossfp, ppzossfperr,ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(datajzb,jzbpeakerrorData),cut,cuthigh,mcordata,ppresult); |
227 |
– |
// if(mcordata==mcwithsignal) fill_result_histos(ppzossfp, ppzossfperr,ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(mcjzb,jzbpeakerrorMC),cut,cuthigh,mcordata,ppresult); |
228 |
– |
|
134 |
|
float pnzossfp, pnzossfperr, pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn, pnresult; |
135 |
|
if(mcordata==mc) fill_result_histos(pnzossfp, pnzossfperr,pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn,newjzbexpression(mcjzb,-jzbpeakerrorMC),cut,cuthigh,mcordata,pnresult); |
136 |
|
if(mcordata==data) fill_result_histos(pnzossfp, pnzossfperr,pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn,newjzbexpression(datajzb,-jzbpeakerrorData),cut,cuthigh,mcordata,pnresult); |
139 |
|
float syserr=0; |
140 |
|
float peakerr=0; |
141 |
|
float staterr=0; |
142 |
+ |
|
143 |
+ |
float fsyserr=0; |
144 |
+ |
float fpeakerr=0; |
145 |
+ |
float fstaterr=0; |
146 |
+ |
|
147 |
|
float poissonstaterrup=-999; |
148 |
|
float poissonstaterrdown=-999; |
149 |
|
// if(fabs(result-pnresult)>fabs(result-ppresult)) peakerr=fabs(result-pnresult); else peakerr=fabs(result-ppresult); |
153 |
|
float emsidebanduncert=0.5; |
154 |
|
float eemmsidebanduncert=0.5; |
155 |
|
syserr = (zjetsestimateuncert*zossfn)*(zjetsestimateuncert*zossfn);//first term |
156 |
+ |
fsyserr = (zjetsestimateuncert*zossfp)*(zjetsestimateuncert*zossfp);//first term |
157 |
|
flag_this_change(__FUNCTION__,__LINE__,true);//PlottingSetup::RestrictToMassPeak |
158 |
|
if(PlottingSetup::RestrictToMassPeak) { |
159 |
|
syserr+= ((zosofp)*(zosofp) + (zosofn)*(zosofn))*(1.0/9)*emuncert*emuncert;//sys err from emu method |
160 |
|
syserr+= ((sbossfp)*(sbossfp)+(sbossfn)*(sbossfn))*(1.0/9)*eemmsidebanduncert*eemmsidebanduncert; // sys err from eemm sidebands |
161 |
|
syserr+= ((sbosofp)*(sbosofp)+(sbosofn)*(sbosofn))*(1.0/9)*emsidebanduncert*emsidebanduncert; // sys err from emu sidebands |
162 |
+ |
|
163 |
+ |
fsyserr+= ((zosofp)*(zosofp) + (zosofn)*(zosofn))*(1.0/9)*emuncert*emuncert;//sys err from emu method |
164 |
+ |
fsyserr+= ((sbossfp)*(sbossfp)+(sbossfn)*(sbossfn))*(1.0/9)*eemmsidebanduncert*eemmsidebanduncert; // sys err from eemm sidebands |
165 |
+ |
fsyserr+= ((sbosofp)*(sbosofp)+(sbosofn)*(sbosofn))*(1.0/9)*emsidebanduncert*emsidebanduncert; // sys err from emu sidebands |
166 |
|
} else { |
167 |
|
syserr+= ((zosofp)*(zosofp) + (zosofn)*(zosofn))*emuncert*emuncert;//sys err from emu method |
168 |
+ |
fsyserr+= ((zosofp)*(zosofp) + (zosofn)*(zosofn))*emuncert*emuncert;//sys err from emu method |
169 |
|
} |
170 |
|
|
171 |
|
syserr=TMath::Sqrt(syserr); |
172 |
+ |
fsyserr=TMath::Sqrt(fsyserr); |
173 |
|
|
174 |
|
flag_this_change(__FUNCTION__,__LINE__,true);//PlottingSetup::RestrictToMassPeak |
175 |
|
if(PlottingSetup::RestrictToMassPeak) { |
176 |
|
staterr=TMath::Sqrt(zossfn + (1.0/9)*(zosofp+zosofn)+ (1.0/9)*(sbossfp+sbossfn)+ (1.0/9)*(sbosofp+sbosofn)); |
177 |
+ |
fstaterr=TMath::Sqrt(zossfp + (1.0/9)*(zosofp+zosofn)+ (1.0/9)*(sbossfp+sbossfn)+ (1.0/9)*(sbosofp+sbosofn)); |
178 |
|
} else { |
179 |
|
staterr=TMath::Sqrt(zossfn + (zosofp+zosofn)); |
180 |
+ |
fstaterr=TMath::Sqrt(zossfp + (zosofp+zosofn)); |
181 |
|
} |
182 |
|
if(dopoisson) advanced_poisson(zossfn,zosofp,zosofn,sbossfp,sbossfn,sbosofp,sbosofn,poissonstaterrdown,poissonstaterrup); |
183 |
|
|
204 |
|
dout << zossfn + (zosofp-zosofn) << " +/- " << peakerr << " (peak ) " << " +/- " << syserr << " (sys) +/- " << staterr << " (stat)" << endl; |
205 |
|
if(dopoisson) dout << " stat error with Poisson : +" << poissonstaterrup << " - " << poissonstaterrdown << endl; |
206 |
|
} |
288 |
– |
|
207 |
|
|
208 |
|
if(mcordata==data) { |
209 |
|
flag_this_change(__FUNCTION__,__LINE__,true);//PlottingSetup::RestrictToMassPeak |
234 |
|
if(mcordata==data) { |
235 |
|
//store the result! |
236 |
|
Nobs.push_back(zossfp); |
237 |
+ |
flippedNobs.push_back(zossfn); |
238 |
|
flag_this_change(__FUNCTION__,__LINE__,true);//PlottingSetup::RestrictToMassPeak |
239 |
< |
if(PlottingSetup::RestrictToMassPeak) Npred.push_back(zossfn + (1.0/3)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn)); |
240 |
< |
else Npred.push_back(zossfn + (zosofp-zosofn)); |
239 |
> |
if(PlottingSetup::RestrictToMassPeak) { |
240 |
> |
Npred.push_back(zossfn + (1.0/3)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn)); |
241 |
> |
flippedNpred.push_back(zossfp - (1.0/3)*(zosofp-zosofn) - (1.0/3)*(sbossfp-sbossfn) - (1.0/3)*(sbosofp-sbosofn)); |
242 |
> |
} else { |
243 |
> |
Npred.push_back(zossfn + (zosofp-zosofn)); |
244 |
> |
Npred.push_back(zossfp - (zosofp-zosofn)); |
245 |
> |
} |
246 |
|
float totprederr=0; |
247 |
|
totprederr+=peakerr*peakerr; |
248 |
|
totprederr+=syserr*syserr; |
249 |
|
totprederr+=staterr*staterr; |
250 |
|
totprederr=TMath::Sqrt(totprederr); |
251 |
|
Nprederr.push_back(totprederr); |
252 |
+ |
|
253 |
+ |
float ftotprederr=0; |
254 |
+ |
ftotprederr+=fpeakerr*fpeakerr; |
255 |
+ |
ftotprederr+=fsyserr*fsyserr; |
256 |
+ |
ftotprederr+=fstaterr*fstaterr; |
257 |
+ |
ftotprederr=TMath::Sqrt(ftotprederr); |
258 |
+ |
flippedNprederr.push_back(ftotprederr); |
259 |
|
} |
260 |
< |
vector<float> resultvector; |
260 |
> |
vector<float> resultvector; // only used for poisson computation in experimental module (therefore ignoring flipped business) |
261 |
|
flag_this_change(__FUNCTION__,__LINE__,true);//PlottingSetup::RestrictToMassPeak |
262 |
|
if(PlottingSetup::RestrictToMassPeak) resultvector.push_back(zossfn + (1.0/3)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn)); |
263 |
|
else resultvector.push_back(zossfn + (zosofp-zosofn)); |
333 |
– |
|
264 |
|
resultvector.push_back(TMath::Sqrt(peakerr*peakerr+syserr*syserr+staterr*staterr)); |
265 |
|
resultvector.push_back(zossfp); |
266 |
|
resultvector.push_back(zossfperr); |