1 |
//Plots efficiencies...
|
2 |
|
3 |
//ROOT includes
|
4 |
#include "TFile.h"
|
5 |
#include "TH1F.h"
|
6 |
#include "TGraph.h"
|
7 |
|
8 |
|
9 |
//System includes
|
10 |
#include <TObject.h>
|
11 |
#include <TMinuit.h>
|
12 |
#include <TLorentzVector.h>
|
13 |
#include <TMath.h>
|
14 |
#include <TString.h>
|
15 |
#include <TStyle.h>
|
16 |
#include <TLegend.h>
|
17 |
#include <TCanvas.h>
|
18 |
#include <TPad.h>
|
19 |
#include <TGraphErrors.h>
|
20 |
#include <TSystem.h>
|
21 |
#include <vector>
|
22 |
#include <stdio.h>
|
23 |
#include <stdlib.h>
|
24 |
#include <iostream>
|
25 |
#include <string>
|
26 |
|
27 |
|
28 |
void EfficiencyPlotter() {
|
29 |
|
30 |
TFile *f = new TFile("efficiencyPlots_data.root", "recreate");
|
31 |
TFile *inputFile1 = new TFile("./files/TagAndProbe/tnp_MC_noJetReq_noTrigReq_AltBin.root", "open");
|
32 |
//TFile *inputFile2 = new TFile("./files/TagAndProbe/tnp_DATA_noJetReq_noTrigReq2_AltBin.root", "open");
|
33 |
//TFile *inputFile3 = new TFile("./files/TagAndProbe/tnp_DATA_noJetReq_noTrigReq3_AltBin.root", "open");
|
34 |
//TFile *inputFile4 = new TFile("./files/TagAndProbe/tnp_DATA_noJetReq_noTrigReq4_AltBin.root", "open");
|
35 |
//TFile *inputFile5 = new TFile("./files/TagAndProbe/tnp_DATA_noJetReq_noTrigReq5_AltBin.root", "open");
|
36 |
TString PlotType = "_MC_AltBin.png";
|
37 |
|
38 |
//List the variables that we want plots of
|
39 |
int nVariables = 4;
|
40 |
int nBins[4] = { 5, 5, 5, 5};
|
41 |
TString VariableList[4] = { "drMin", "eta", "pt", "relPt" };
|
42 |
//double VariableMax[4] = { 5., 2.1, 200., 200. };
|
43 |
//double VariableMin[4] = { 0., -2.1, 0., 0.};
|
44 |
|
45 |
|
46 |
//Loop over all of the variables we want to plot
|
47 |
for ( int i = 0; i < nVariables; i++ ) {
|
48 |
|
49 |
probePlot1 = (TH1F *)inputFile1->Get(VariableList[i]+"_probe");
|
50 |
passPlot1 = (TH1F *)inputFile1->Get(VariableList[i]+"_pass");
|
51 |
|
52 |
//probePlot2 = (TH1F *)inputFile2->Get(VariableList[i]+"_probe");
|
53 |
//passPlot2 = (TH1F *)inputFile2->Get(VariableList[i]+"_pass");
|
54 |
|
55 |
//probePlot3 = (TH1F *)inputFile3->Get(VariableList[i]+"_probe");
|
56 |
//passPlot3 = (TH1F *)inputFile3->Get(VariableList[i]+"_pass");
|
57 |
|
58 |
//probePlot4 = (TH1F *)inputFile4->Get(VariableList[i]+"_probe");
|
59 |
//passPlot4 = (TH1F *)inputFile4->Get(VariableList[i]+"_pass");
|
60 |
|
61 |
//probePlot5 = (TH1F *)inputFile5->Get(VariableList[i]+"_probe");
|
62 |
//passPlot5 = (TH1F *)inputFile5->Get(VariableList[i]+"_pass");
|
63 |
|
64 |
|
65 |
TCanvas* c1 = new TCanvas("c1","", 600, 600);
|
66 |
c1->cd();
|
67 |
|
68 |
const int n = 5;
|
69 |
const int m = 5;
|
70 |
|
71 |
|
72 |
Float_t x[n];
|
73 |
Float_t y[n];
|
74 |
|
75 |
Float_t ex[n];
|
76 |
Float_t ey[n];
|
77 |
|
78 |
|
79 |
for ( int j = 0; j < nBins[i]; j++ ) {
|
80 |
|
81 |
|
82 |
float nPass1 = passPlot1->GetBinContent(j+1);
|
83 |
float nProbe1 = probePlot1->GetBinContent(j+1);
|
84 |
|
85 |
//float nPass2 = passPlot2->GetBinContent(j+1);
|
86 |
//float nProbe2 = probePlot2->GetBinContent(j+1);
|
87 |
|
88 |
//float nPass3 = passPlot3->GetBinContent(j+1);
|
89 |
//float nProbe3 = probePlot3->GetBinContent(j+1);
|
90 |
|
91 |
//float nPass4 = passPlot4->GetBinContent(j+1);
|
92 |
//float nProbe4 = probePlot4->GetBinContent(j+1);
|
93 |
|
94 |
//float nPass5 = passPlot5->GetBinContent(j+1);
|
95 |
//float nProbe5 = probePlot5->GetBinContent(j+1);
|
96 |
|
97 |
|
98 |
//float sumPass = (float) nPass1+nPass2+nPass3+nPass4+nPass5;
|
99 |
//float sumProbe = (float) nProbe1+nProbe2+nProbe3+nProbe4+nProbe5;
|
100 |
|
101 |
float sumPass = (float) nPass1;
|
102 |
float sumProbe = (float) nProbe1;
|
103 |
|
104 |
float efficiency = 0.;
|
105 |
if (sumProbe > 0.99) efficiency = (sumPass) / (sumProbe);
|
106 |
|
107 |
float error = 0.;
|
108 |
|
109 |
//if (nPass >= 10) {
|
110 |
|
111 |
//If > 10 per bin use gaussian errors
|
112 |
if (sumProbe > 0.99 && sumPass > 0.99) error = efficiency * sqrt ( 1./(float)sumPass + 1./(float)sumProbe );
|
113 |
|
114 |
//}
|
115 |
|
116 |
//take info from histos and put them in graphs
|
117 |
x[j] = passPlot1->GetBinCenter(j+1);
|
118 |
y[j] = efficiency;
|
119 |
//ex[j] = passPlot->GetBinWidth(j+1) / 2.;
|
120 |
ex[j] = 0.;
|
121 |
ey[j] = error;
|
122 |
|
123 |
}
|
124 |
|
125 |
|
126 |
gr = new TGraphErrors(n,x,y,ex,ey);
|
127 |
gr->SetTitle(VariableList[i]);
|
128 |
gr->SetMarkerColor(4);
|
129 |
gr->SetMarkerStyle(21);
|
130 |
gr->GetYaxis()->SetRangeUser(0.1, 1.5);
|
131 |
gr->GetYaxis()->SetTitle("Efficiency");
|
132 |
if (i == 0) gr->GetXaxis()->SetTitle("#Delta R_{min} (#mu, jet)");
|
133 |
else if (i == 1) gr->GetXaxis()->SetTitle("eta");
|
134 |
else if (i == 2) gr->GetXaxis()->SetTitle("p_{T}");
|
135 |
else if (i == 3) gr->GetXaxis()->SetTitle("p_{T}^{rel} (#mu, jet)");
|
136 |
gr->Draw("AP");
|
137 |
|
138 |
c1->Update();
|
139 |
c1->Print( VariableList[i]+PlotType );
|
140 |
delete c1;
|
141 |
|
142 |
f->cd();
|
143 |
|
144 |
gr->Write();
|
145 |
|
146 |
}//for nVariables
|
147 |
|
148 |
|
149 |
|
150 |
f->cd();
|
151 |
f->Write();
|
152 |
f->Close();
|
153 |
|
154 |
|
155 |
}//EfficiencyPlotter()
|