ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/UserCode/FGolf/Tools/convertFlipRateToHisto.C
Revision: 1.1
Committed: Tue May 24 00:10:48 2011 UTC (13 years, 11 months ago) by fgolf
Content type: text/plain
Branch: MAIN
CVS Tags: ss_summer2011approvalV2, ss_summer2011approval, synchMay2011v1, HEAD
Error occurred while calculating annotation data.
Log Message:
tool to convert flip rate macro to a histogram

File Contents

# Content
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 }