1 |
#include "TH2.h"
|
2 |
#include "fliprate_egun.cc" // get this from UserCode/JRibnik/NtupleMacros/Tools
|
3 |
#include "eff2.C"
|
4 |
#include "TFile.h"
|
5 |
|
6 |
void convertFlipRateToHisto (const char* outfile) {
|
7 |
|
8 |
TFile* file = new TFile(outfile, "RECREATE");
|
9 |
file->cd();
|
10 |
|
11 |
float xbins[9] = { 0.0, 0.5, 1.0, 1.479, 1.8, 2.0, 2.1, 2.2, 2.4 };
|
12 |
unsigned int nbinsx = 8;
|
13 |
float ybins[18] = { 10., 20., 25., 30., 35., 40., 45., 50., 55., 60., 65., 70., 75., 80., 85., 90., 95., 100. };
|
14 |
unsigned int nbinsy = 17;
|
15 |
|
16 |
TH2F* flipRateNum = new TH2F("flipRateNum", "flipRateNum", nbinsx, xbins, nbinsy, ybins);
|
17 |
flipRateNum->GetXaxis()->SetTitle("#eta");
|
18 |
flipRateNum->GetYaxis()->SetTitle("p_{T} (GeV)");
|
19 |
flipRateNum->SetTitle("");
|
20 |
flipRateNum->Sumw2();
|
21 |
|
22 |
TH2F* flipRateDen = new TH2F("flipRateDen", "flipRateDen", nbinsx, xbins, nbinsy, ybins);
|
23 |
flipRateDen->GetXaxis()->SetTitle("#eta");
|
24 |
flipRateDen->GetYaxis()->SetTitle("p_{T} (GeV)");
|
25 |
flipRateDen->SetTitle("");
|
26 |
flipRateDen->Sumw2();
|
27 |
|
28 |
for (unsigned int ix = 1; ix < nbinsx+1; ix++) {
|
29 |
for (unsigned int iy = 1; iy < nbinsy+1; iy++) {
|
30 |
|
31 |
float eta = (xbins[ix] + xbins[ix-1])/2.;
|
32 |
float pt = (ybins[iy] + ybins[iy-1])/2.;
|
33 |
|
34 |
float den = getSingleEleDenom(pt, eta);
|
35 |
float num = getSingleEleNum(pt, eta);
|
36 |
|
37 |
flipRateNum->SetBinContent(ix, iy, num);
|
38 |
flipRateNum->SetBinError(ix, iy, sqrt(num));
|
39 |
flipRateDen->SetBinContent(ix, iy, den);
|
40 |
flipRateDen->SetBinError(ix, iy, sqrt(den));
|
41 |
}
|
42 |
}
|
43 |
|
44 |
TH2F* flipRate = eff2(flipRateDen, flipRateNum, "flipRate");
|
45 |
// check if any bins are zero and set the errors "appropriately"
|
46 |
for (unsigned int ix = 1; ix < nbinsx+1; ix++) {
|
47 |
for (unsigned int iy = 1; iy < nbinsy+1; iy++) {
|
48 |
|
49 |
float fliprate = flipRate->GetBinContent(ix, iy);
|
50 |
if (fliprate > 0)
|
51 |
continue;
|
52 |
|
53 |
float denom = flipRateDen->GetBinContent(ix, iy);
|
54 |
flipRate->SetBinError(ix, iy, 1./denom);
|
55 |
}
|
56 |
}
|
57 |
|
58 |
flipRate->Write();
|
59 |
}
|