1 |
jbabb |
1.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()
|