ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/cbrown/AnalysisFramework/Plotting/Modules/DustyModule.C
Revision: 1.1
Committed: Tue Jul 12 12:58:33 2011 UTC (13 years, 9 months ago) by buchmann
Content type: text/plain
Branch: MAIN
Log Message:
Functions that have been removed from the main plotting engine are now in this module

File Contents

# Content
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 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]) {
24 // cout << "Crunching the numbers for is_data=" << isdata << endl;
25 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;}}}
26 for(int icut=0;icut<jzbcuts.size()-1;icut++) {//do calculation for each JZB cut
27 for(int ibin=1;ibin<jzbcuts.size();ibin++) {//and to do that, we need to consider each bin.
28 if(RcorrJZBeemmop[0][isdata]->GetBinLowEdge(ibin)<jzbcuts[icut]) continue;
29 // if(icut==0) cout << "Predicted+=" << LcorrJZBeemmop[central][isdata]->GetBinContent(ibin) << " eemm,L" << endl;
30 predicted[central][isdata][icut]+=LcorrJZBeemmop[central][isdata]->GetBinContent(ibin);
31 predicted[up][isdata][icut]+=LcorrJZBeemmop[up][isdata]->GetBinContent(ibin);
32 predicted[down][isdata][icut]+=LcorrJZBeemmop[down][isdata]->GetBinContent(ibin);
33
34 // if(icut==0) cout << "Predicted+=" << RcorrJZBemop[central][isdata]->GetBinContent(ibin) << " em, R" << endl;
35 predicted[central][isdata][icut]+=RcorrJZBemop[central][isdata]->GetBinContent(ibin);
36 predicted[up][isdata][icut]+=RcorrJZBemop[up][isdata]->GetBinContent(ibin);
37 predicted[down][isdata][icut]+=RcorrJZBemop[down][isdata]->GetBinContent(ibin);
38
39 // if(icut==0) cout << "Predicted-=" << LcorrJZBemop[central][isdata]->GetBinContent(ibin) <<" em, L" << endl;
40 predicted[central][isdata][icut]-=LcorrJZBemop[central][isdata]->GetBinContent(ibin);
41 predicted[up][isdata][icut]-=LcorrJZBemop[up][isdata]->GetBinContent(ibin);
42 predicted[down][isdata][icut]-=LcorrJZBemop[down][isdata]->GetBinContent(ibin);
43
44 // if(icut==0) cout << "Observed=" << RcorrJZBeemmop[central][isdata]->GetBinContent(ibin) << "eemm, R" << endl;
45 observed[central][isdata][icut]+=RcorrJZBeemmop[central][isdata]->GetBinContent(ibin);
46 observed[up][isdata][icut]+=RcorrJZBeemmop[up][isdata]->GetBinContent(ibin);
47 observed[down][isdata][icut]+=RcorrJZBeemmop[down][isdata]->GetBinContent(ibin);
48
49 zjetsestimate[central][isdata][icut]+=LcorrJZBeemmop[central][isdata]->GetBinContent(ibin);
50 ttbarestimate[central][isdata][0][icut]+=RcorrJZBemop[central][isdata]->GetBinContent(ibin);
51 ttbarestimate[central][isdata][1][icut]+=LcorrJZBemop[central][isdata]->GetBinContent(ibin);
52
53 eemmmumu[0][0][icut]+=LcorrJZBeeop[central][isdata]->GetBinContent(ibin);
54 eemmmumu[0][1][icut]+=LcorrJZBmmop[central][isdata]->GetBinContent(ibin);
55 eemmmumu[0][2][icut]+=LcorrJZBemop[central][isdata]->GetBinContent(ibin);
56
57 eemmmumu[1][0][icut]+=RcorrJZBeeop[central][isdata]->GetBinContent(ibin);
58 eemmmumu[1][1][icut]+=RcorrJZBmmop[central][isdata]->GetBinContent(ibin);
59 eemmmumu[1][2][icut]+=RcorrJZBemop[central][isdata]->GetBinContent(ibin);
60
61 }//end of ibin loop
62 }//end of icut loop
63 }
64
65 void make_table(float eemmmumu[2][3][20],int icut,float JZBcut) {
66 vector< vector <string> > entries;
67 vector <string> line;
68 line.push_back("");
69 line.push_back("eemm (ee/mm)");
70 line.push_back("em");
71 entries.push_back(line);
72 line.clear();
73 line.push_back("JZB>"+any2string(JZBcut));
74 line.push_back(any2string(eemmmumu[1][0][icut]+eemmmumu[1][1][icut])+"("+any2string(eemmmumu[1][0][icut])+"/"+any2string(eemmmumu[1][1][icut])+")");
75 line.push_back(any2string(eemmmumu[1][2][icut]));
76 entries.push_back(line);
77 line.clear();
78 line.push_back("JZB<-"+any2string(JZBcut));
79 line.push_back(any2string(eemmmumu[0][0][icut]+eemmmumu[0][1][icut])+"("+any2string(eemmmumu[0][0][icut])+"/"+any2string(eemmmumu[0][1][icut])+")");
80 line.push_back(any2string(eemmmumu[0][2][icut]));
81 entries.push_back(line);
82 make_nice_jzb_table(entries);
83 /*
84 cout << " \t\t | \t eemm (ee/mm) \t | \t em" << endl;
85 cout << "JZB>peak\t | \t " << eemmmumu[1][0]+eemmmumu[1][1] << "(" << eemmmumu[1][0] << "/" << eemmmumu[1][1] << ")\t | \t" << eemmmumu[1][2] << endl;
86 cout << "JZB<peak\t | \t " << eemmmumu[0][0]+eemmmumu[0][1] << "(" << eemmmumu[0][0] << "/" << eemmmumu[0][1] << ")\t | \t" << eemmmumu[0][2] << endl;
87 cout << endl;
88 */
89 }
90
91 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]) {
92
93 //blublu
94 cout << endl << endl;
95 cout << "--------------------------------------------------------------------------------------" << endl;
96 cout << "DATA: " << endl;
97 cout << " For JZB>" << jzbcuts[icut];
98 float max,downvar,upvar;
99 stringstream printtitle;
100 printtitle << "JZB>" << jzbcuts[icut] << " (data)";
101 ComputePoissonError(zjetsestimate[central][data][icut],ttbarestimate[central][data][0][icut],ttbarestimate[central][data][1][icut],max,downvar,upvar,printtitle.str());
102 //cout << " 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;
103 float pred=predicted[central][data][icut];
104 float sysP=abs(predicted[up][data][icut]-pred);
105 float sysN=abs(pred-predicted[down][data][icut]);
106 sysN = sysN + pred*(1-fitresultconstdata);//fitresultconst comes from the fit in the 0-30 GeV range!
107 cout << " Predicted: " << pred << "+" << statErrorP(pred) << "-" << statErrorN(pred) << " (stat) +" << sysP << " - " << sysN << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
108 //0.2*zjetsestimate[central][data][icut] << "-" << 0.4*zjetsestimate[central][data][icut] << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
109 cout << " 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;
110 cout << " For JZB>" << jzbcuts[icut] << " Observed: " << observed[central][data][icut] << endl;
111 cout << "TABLE:" << endl;
112 make_table(eemmmumu,icut,jzbcuts[icut]);
113 cout << "MC: " << endl;
114 printtitle.str("");
115 printtitle<<"JZB>"<<jzbcuts[icut]<<" (MC)";
116 ComputePoissonError(zjetsestimate[central][mc][icut],ttbarestimate[central][mc][0][icut],ttbarestimate[central][mc][1][icut],max,downvar,upvar,printtitle.str());
117 pred=predicted[central][mc][icut];
118 sysP=abs(predicted[up][mc][icut]-pred);
119 sysN=abs(pred-predicted[down][mc][icut]);
120 sysN = sysN + pred*(1-fitresultconstmc);//fitresultconst comes from the fit in the 0-30 GeV range!
121 cout << " Predicted: " << pred << "+" << statErrorP(pred) << "-" << statErrorN(pred) << " (stat) +" << sysP << " - " << sysN << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
122 // cout << " Predicted: " << print_range(pred,statErrorP(pred),statErrorN(pred)) << " (stat) +" << sysP << " - " << sysN << " (sys) " << " using Poisson: " << print_range(max,max+upvar,max-downvar) << ")" << endl;
123 //cout << " 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;
124 //print_range(predicted[central][mc][icut],predicted[central][mc][icut]+upvar,predicted[central][mc][icut]-downvar) << ")" << endl;
125 cout << " 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;
126 cout << " For JZB>" << jzbcuts[icut] << " Observed: " << observed[central][mc][icut] << endl;
127 cout << endl << endl;
128 }
129
130 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!
131 jzbcuts.push_back(14000);
132
133 /*
134 * 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.
135 * 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.
136 * 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?)
137 */
138
139 string jzbpeak[3][2];
140 jzbpeak[central][data]=give_jzb_expression(DataPeak,data);
141 jzbpeak[up][data]=give_jzb_expression(DataPeak+DataPeakError,data);
142 jzbpeak[down][data]=give_jzb_expression(DataPeak-DataPeakError,data);
143 jzbpeak[central][mc]=give_jzb_expression(MCPeak,mc);
144 jzbpeak[up][mc]=give_jzb_expression(MCPeak+MCPeakError,mc);
145 jzbpeak[down][mc]=give_jzb_expression(MCPeak-MCPeakError,mc);
146
147 TH1F *RcorrJZBeemmop[3][2];
148 TH1F *LcorrJZBeemmop[3][2];
149 TH1F *RcorrJZBeeop[3][2];
150 TH1F *LcorrJZBeeop[3][2];
151 TH1F *RcorrJZBmmop[3][2];
152 TH1F *LcorrJZBmmop[3][2];
153 TH1F *RcorrJZBemop[3][2];
154 TH1F *LcorrJZBemop[3][2];
155 float zjetsestimate[3][2][20];
156 float predicted[3][2][20];
157 float observed[3][2][20];
158 float ttbarestimate[3][2][2][20];
159 float eemmmumu[2][3][20];
160
161
162 for(int isdata=0;isdata<=1;isdata++) {
163 for(int centraldownup=0;centraldownup<=2;centraldownup++) {
164 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);
165 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);
166
167 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);
168 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);
169 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));
170 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));
171 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));
172 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));
173 LcorrJZBemop[centraldownup][isdata]->Scale(1.0/3);
174 RcorrJZBemop[centraldownup][isdata]->Scale(1.0/3);
175 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);
176 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);
177 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);
178 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);
179 for(int icut=0;icut<=jzbcuts.size();icut++) {
180 zjetsestimate[centraldownup][isdata][icut]=0;
181 predicted[centraldownup][isdata][icut]=0;
182 observed[centraldownup][isdata][icut]=0;
183 ttbarestimate[centraldownup][isdata][0][icut]=0;
184 ttbarestimate[centraldownup][isdata][1][icut]=0;
185 }
186 }//end of for central,up,down loop
187 crunch_the_numbers(RcorrJZBeemmop,RcorrJZBeeop,RcorrJZBmmop,LcorrJZBeemmop,LcorrJZBeeop,LcorrJZBmmop,RcorrJZBemop,LcorrJZBemop,zjetsestimate,ttbarestimate,predicted,observed,isdata,jzbcuts,eemmmumu);
188
189 // 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]) {
190
191 }//end of is data loop
192
193
194 cout << "We obtain the following results: " << endl;
195 for(int icut=0;icut<jzbcuts.size()-1;icut++) {
196 present_result(jzbcuts,predicted,observed,zjetsestimate,ttbarestimate,icut,eemmmumu);
197 }
198
199
200 }
201