ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/cbrown/AnalysisFramework/Plotting/Modules/ResultModule.C
(Generate patch)

Comparing UserCode/cbrown/AnalysisFramework/Plotting/Modules/ResultModule.C (file contents):
Revision 1.15 by buchmann, Mon Oct 24 15:05:37 2011 UTC vs.
Revision 1.16 by buchmann, Mon Nov 7 11:19:12 2011 UTC

# Line 110 | Line 110 | void fill_result_histos(float &zossfp, f
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&mu;]) \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
# Line 221 | Line 131 | vector<float> get_result_between_two_fix
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);
# Line 234 | Line 139 | vector<float> get_result_between_two_fix
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);
# Line 243 | Line 153 | vector<float> get_result_between_two_fix
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    
# Line 285 | Line 204 | vector<float> get_result_between_two_fix
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
# Line 316 | Line 234 | vector<float> get_result_between_two_fix
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);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines