19 |
|
|
20 |
|
using namespace PlottingSetup; |
21 |
|
|
22 |
+ |
string newjzbexpression(string oldexpression,float shift) { |
23 |
+ |
stringstream ss; |
24 |
+ |
if(shift>0) ss<<oldexpression<<"+"<<shift; |
25 |
+ |
if(shift<0) ss<<oldexpression<<shift; |
26 |
+ |
if(shift==0) ss<<oldexpression; |
27 |
+ |
return ss.str(); |
28 |
+ |
} |
29 |
|
|
30 |
< |
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) { |
24 |
< |
rescan->cd(); |
25 |
< |
if(mcordata!=mc) cout << "Crunching the numbers for JZB>" << cut << endl; |
26 |
< |
|
30 |
> |
void fill_result_histos(float &zossfp, float &zosofp, float &zossfn, float &zosofn, float &sbossfp, float &sbosofp, float &sbossfn, float &sbosofn,string datajzb,float cut, int mcordata, float &result) { |
31 |
|
string xlabel="JZB (GeV) -- for algoritm internal use only!"; |
32 |
|
TH1F *ZOSSFP = allsamples.Draw("ZOSSFP",datajzb,1,cut,14000, xlabel, "events",cutmass&&cutOSSF&&cutnJets&&basiccut,mcordata,luminosity); |
33 |
|
TH1F *ZOSOFP = allsamples.Draw("ZOSOFP",datajzb,1,cut,14000, xlabel, "events",cutmass&&cutOSOF&&cutnJets&&basiccut,mcordata,luminosity); |
38 |
|
TH1F *SBOSOFP = allsamples.Draw("SBOSOFP",datajzb,1,cut,14000, xlabel, "events",cutOSOF&&cutnJets&&basiccut&&sidebandcut,mcordata,luminosity); |
39 |
|
TH1F *SBOSSFN = allsamples.Draw("SBOSSFN","-"+datajzb,1,cut,14000, xlabel, "events",cutOSSF&&cutnJets&&basiccut&&sidebandcut,mcordata,luminosity); |
40 |
|
TH1F *SBOSOFN = allsamples.Draw("SBOSOFN","-"+datajzb,1,cut,14000, xlabel, "events",cutOSOF&&cutnJets&&basiccut&&sidebandcut,mcordata,luminosity); |
41 |
+ |
|
42 |
+ |
zossfp=ZOSSFP->Integral(); |
43 |
+ |
zosofp=ZOSOFP->Integral(); |
44 |
+ |
zossfn=ZOSSFN->Integral(); |
45 |
+ |
zosofn=ZOSOFN->Integral(); |
46 |
+ |
sbossfp=SBOSSFP->Integral(); |
47 |
+ |
sbosofp=SBOSOFP->Integral(); |
48 |
+ |
sbossfn=SBOSSFN->Integral(); |
49 |
+ |
sbosofn=SBOSOFN->Integral(); |
50 |
+ |
|
51 |
+ |
result = zossfn + (1.0/3)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn); |
52 |
+ |
delete ZOSSFP; |
53 |
+ |
delete ZOSOFP; |
54 |
+ |
delete ZOSSFN; |
55 |
+ |
delete ZOSOFN; |
56 |
+ |
|
57 |
+ |
delete SBOSSFP; |
58 |
+ |
delete SBOSOFP; |
59 |
+ |
delete SBOSSFN; |
60 |
+ |
delete SBOSOFN; |
61 |
+ |
|
62 |
+ |
} |
63 |
+ |
|
64 |
+ |
|
65 |
+ |
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) { |
66 |
+ |
rescan->cd(); |
67 |
+ |
if(mcordata!=mc) cout << "Crunching the numbers for JZB>" << cut << endl; |
68 |
+ |
|
69 |
+ |
float zossfp, zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,result; |
70 |
+ |
if(mcordata==mc) fill_result_histos(zossfp, zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,mcjzb,cut,mcordata,result); |
71 |
+ |
if(mcordata==data) fill_result_histos(zossfp, zosofp, zossfn, zosofn, sbossfp, sbosofp, sbossfn, sbosofn,datajzb,cut,mcordata,result); |
72 |
+ |
|
73 |
+ |
|
74 |
+ |
float ppzossfp, ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn, ppresult; |
75 |
+ |
if(mcordata==mc) fill_result_histos(ppzossfp, ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(mcjzb,jzbpeakerrorMC),cut,mcordata,ppresult); |
76 |
+ |
if(mcordata==data) fill_result_histos(ppzossfp, ppzosofp, ppzossfn, ppzosofn, ppsbossfp, ppsbosofp, ppsbossfn, ppsbosofn,newjzbexpression(datajzb,jzbpeakerrorData),cut,mcordata,ppresult); |
77 |
+ |
|
78 |
+ |
float pnzossfp, pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn, pnresult; |
79 |
+ |
if(mcordata==mc) fill_result_histos(pnzossfp, pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn,newjzbexpression(mcjzb,-jzbpeakerrorMC),cut,mcordata,pnresult); |
80 |
+ |
if(mcordata==data) fill_result_histos(pnzossfp, pnzosofp, pnzossfn, pnzosofn, pnsbossfp, pnsbosofp, pnsbossfn, pnsbosofn,newjzbexpression(datajzb,-jzbpeakerrorData),cut,mcordata,pnresult); |
81 |
|
|
82 |
|
float syserr=0; |
83 |
|
float peakerr=0; |
84 |
|
float staterr=0; |
85 |
|
|
86 |
+ |
if(fabs(result-pnresult)>fabs(result-ppresult)) peakerr=fabs(result-pnresult); else peakerr=fabs(result-ppresult); |
87 |
+ |
|
88 |
+ |
syserr = -999; |
89 |
+ |
staterr=TMath::Sqrt(zossfn*zossfn + (1.0/3)*(zosofp-zosofn)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn)*(sbosofp-sbosofn)); |
90 |
+ |
|
91 |
|
if(mcordata==mc) cout << " MC :: "; |
92 |
|
else cout << " "; |
93 |
< |
cout << "Observed : " << ZOSSFP->Integral() << endl; |
93 |
> |
cout << "Observed : " << zossfp << endl; |
94 |
|
if(mcordata==mc) cout << " MC :: "; |
95 |
|
else cout << " "; |
96 |
< |
cout << "Predicted: " << ZOSSFN->Integral() << " + (1/3)*(" << ZOSOFP->Integral() << "-" << ZOSOFN->Integral()<<") [e&mu]+ (1/3)*(" << SBOSSFP->Integral() << "-" << SBOSSFN->Integral()<<") [SF,SB]+ (1/3)*(" << SBOSOFP->Integral() << "-" << SBOSOFN->Integral()<<") [OF,SB] = "; |
97 |
< |
cout << ZOSSFN->Integral() + (1.0/3)*(ZOSOFP->Integral()-ZOSOFN->Integral())+ (1.0/3)*(SBOSSFP->Integral()-SBOSSFN->Integral())+ (1.0/3)*(SBOSOFP->Integral()-SBOSOFN->Integral())<< " +/- " << peakerr << " (peak ) " << " +/- " << syserr << " (sys) +/- " << staterr << " (stat)" << endl; |
96 |
> |
cout << "Predicted: " << zossfn << " + (1/3)*(" << zosofp << "-" << zosofn<<") [e&mu]+ (1/3)*(" << sbossfp << "-" << sbossfn<<") [SF,SB]+ (1/3)*(" << sbosofp << "-" << sbosofn<<") [OF,SB] = "; |
97 |
> |
cout << zossfn + (1.0/3)*(zosofp-zosofn)+ (1.0/3)*(sbossfp-sbossfn)+ (1.0/3)*(sbosofp-sbosofn)<< " +/- " << peakerr << " (peak ) " << " +/- " << syserr << " (sys) +/- " << staterr << " (stat)" << endl; |
98 |
|
|
99 |
|
if(chatty) { |
100 |
< |
cout << " Pred(ZJets ) \t " << ZOSSFN->Integral() << endl; |
101 |
< |
cout << " Pred(eμ]) \t " << ZOSOFP->Integral() << "-" << ZOSOFN->Integral() << " = " << ZOSOFP->Integral()-ZOSOFN->Integral()<<endl; |
102 |
< |
cout << " Pred(ossf,sb]) \t " << SBOSSFP->Integral() << "-" << SBOSSFN->Integral()<<" = "<<SBOSSFP->Integral()-SBOSSFN->Integral()<<endl; |
103 |
< |
cout << " Pred(osof,sb]) \t " << SBOSOFP->Integral() << "-" << SBOSOFN->Integral()<<" = "<<SBOSOFP->Integral()-SBOSOFN->Integral()<<endl; |
100 |
> |
cout << " Pred(ZJets ) \t " << zossfn << endl; |
101 |
> |
cout << " Pred(eμ]) \t " << zosofp << "-" << zosofn << " = " << zosofp-zosofn<<endl; |
102 |
> |
cout << " Pred(ossf,sb]) \t " << sbossfp << "-" << sbossfn<<" = "<<sbossfp-sbossfn<<endl; |
103 |
> |
cout << " Pred(osof,sb]) \t " << sbosofp << "-" << sbosofn<<" = "<<sbosofp-sbosofn<<endl; |
104 |
|
} |
56 |
– |
|
57 |
– |
delete ZOSSFP; |
58 |
– |
delete ZOSOFP; |
59 |
– |
delete ZOSSFN; |
60 |
– |
delete ZOSOFN; |
61 |
– |
|
62 |
– |
delete SBOSSFP; |
63 |
– |
delete SBOSOFP; |
64 |
– |
delete SBOSSFN; |
65 |
– |
delete SBOSOFN; |
105 |
|
} |
106 |
|
|
107 |
|
|