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
Log Message:
tool to convert flip rate macro to a histogram

File Contents

# User Rev Content
1 fgolf 1.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     }