ra4_macros  bede988c286599a3a84b77a4d788ac0a971e89f9
plot_turnon_dps.cxx
Go to the documentation of this file.
1 // plot_trigger: Plots for the trigger section of the RA4 note
2 
3 #include <iostream>
4 #include <fstream>
5 #include <vector>
6 #include <cmath>
7 
8 #include "TChain.h"
9 #include "TH1D.h"
10 #include "TF1.h"
11 #include "TMath.h"
12 #include "TCanvas.h"
13 #include "TPad.h"
14 #include "TLegend.h"
15 #include "TLine.h"
16 #include "TGaxis.h"
17 #include "TBox.h"
18 #include "TLatex.h"
19 #include "TPaveText.h"
20 #include "TString.h"
21 #include "TStyle.h"
22 #include "TGraphAsymmErrors.h"
23 #include "TEfficiency.h"
24 
25 #include "styles.hpp"
26 #include "utilities.hpp"
27 #include "utilities_macros.hpp"
28 
29 namespace {
30  bool do_si = true;
31  bool do_lep = false;
32  bool do_dps = false;
33  bool do_ht = false;
34  bool do_met = false;
35  TString plot_type = ".pdf";
36 }
37 
38 using namespace std;
39 
40 Double_t errorFun(Double_t *x, Double_t *par) {
41  double value(0.5*par[0]*(1. + TMath::Erf( (x[0] - par[1]) / (sqrt(2.)*par[2]) )));
42  return value;
43 }
44 
45 void PlotTurnOn(TChain *data, TString var, int nbins, double minx, double maxx, TString xtitle,
46  TString den, TString num, TString title="", TString ytitle="", float minfit=-1., bool isData=true);
47 TString Efficiency(TChain *data, TString den, TString num, float &effic, float &errup, float &errdown);
48 
49 int main(){
50 
51  styles style("HLTStyle"); style.setDefaultStyle();
52  gStyle->SetPadTickY(0);
53 
54  TString folder("/net/cms2/cms2r0/ald77/archive/2015_08_25/");
55  //folder = "root/";
56 
57  TChain c_tt("tree"); c_tt.Add("/cms2r0/ald77/archive/2015_08_13/small_quick_TTJets_TuneCUETP8M1_13TeV-madgraphMLM-pythia8_RunIISpring15DR74-Asympt50ns_MCRUN2_74_V9A-v1_MINIAODSIM_UCSB2650_v82_files20_batch*.root");
58  TChain c_jetht("tree"); c_jetht.Add(folder+"*JetHT*root");
59  TChain c_met("tree"); c_met.Add(folder+"*MET*root");
60  TChain c_mu("tree"); c_mu.Add(folder+"*SingleMuon*");
61  TChain c_el("tree"); c_el.Add(folder+"*SingleElectron*");
62  TChain c_lep("tree"); c_lep.Add(folder+"*Single*");
63  TChain c_all("tree"); c_all.Add(folder+"alldata/*root");
64 
65  if(do_si){
66  float lmin(25), lmax(300);
67  int lbins(static_cast<int>((lmax-lmin)/12.5));
68 
69  // TM turn-ons IsoMu20
70  lmin = 0; lmax = 100; lbins = static_cast<int>((lmax-lmin)/2);
71  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&mus_tru_tm))-0.1", lbins,lmin,lmax,
72  "#mu_{medium, miniso} p_{T}","1", "trig[18]","TM medium #mu, I_{mini} < 0.2",
73  "IsoMu20",-50,false);
74  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_reliso<0.12&&mus_tru_tm))-0.1", lbins,lmin,lmax,
75  "#mu_{medium, reliso} p_{T}","1", "trig[18]","TM medium #mu, I_{R=0.4} < 0.12",
76  "IsoMu20",-50,false);
77  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_reliso<0.2&&mus_tru_tm))-0.1", lbins,lmin,lmax,
78  "#mu_{medium, reliso} p_{T}","1", "trig[18]","TM medium #mu, I_{R=0.4} < 0.2",
79  "IsoMu20",-50,false);
80 
81  float effic, errup, errdown;
82  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>50","trig[18]",effic, errup, errdown);
83  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>50&&ht>500","trig[18]",effic, errup, errdown);
84  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>50&&ht>1000","trig[18]",effic, errup, errdown);
85  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>50&&ht>1500","trig[18]",effic, errup, errdown);
86 
87  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>50","trig[18]",effic, errup, errdown);
88  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>50&&ht>500","trig[18]",effic, errup, errdown);
89  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>50&&ht>1000","trig[18]",effic, errup, errdown);
90  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>50&&ht>1500","trig[18]",effic, errup, errdown);
91 
92  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>50","trig[18]",effic, errup, errdown);
93  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>50&&ht>500","trig[18]",effic, errup, errdown);
94  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>50&&ht>1000","trig[18]",effic, errup, errdown);
95  Efficiency(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>50&&ht>1500","trig[18]",effic, errup, errdown);
96 
97  float htmin(175), htmax(1000);
98  int htbins(static_cast<int>((htmax-htmin)/12.5));
99  htmin = 0; htmax = 2400; htbins = static_cast<int>((htmax-htmin)/200);
100  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
101  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>50",
102  "trig[18]","n_{#mu,50,reliso} #geq 1", "IsoMu20", -500,false);
103  PlotTurnOn(&c_tt, "ht", htbins,htmin,htmax, "H_{T}",
104  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>50",
105  "trig[18]","n_{#mu,50,miniso} #geq 1", "IsoMu20", -500,false);
106  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
107  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>50",
108  "trig[18]","n_{#mu,50,reliso} #geq 1", "IsoMu20", -500,false);
109 
110 
111  }
112 
113  if(do_lep){
114  float lmin(25), lmax(300);
115  int lbins(static_cast<int>((lmax-lmin)/12.5));
116 
117  // Truth-matched plateaus
118  lmin = 0; lmax = 300; lbins = static_cast<int>((lmax-lmin)/20);
119  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_reliso<0.12&&mus_tru_tm))-0.1", lbins,lmin,lmax,
120  "#mu_{medium, reliso} p_{T}","1", "trig[18]","TM medium #mu, I_{R=0.4} < 0.12", "IsoMu20",-40,false);
121  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_reliso<0.2&&mus_tru_tm))-0.1", lbins,lmin,lmax,
122  "#mu_{medium, reliso} p_{T}","1", "trig[18]","TM medium #mu, I_{R=0.4} < 0.2", "IsoMu20",-40,false);
123  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&mus_tru_tm))-0.1", lbins,lmin,lmax,
124  "#mu_{medium, miniso} p_{T}","1", "trig[18]","TM medium #mu, I_{mini} < 0.2", "IsoMu20",-40,false);
125  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_reliso<0.12&&mus_tru_tm))-0.1", lbins,lmin,lmax,
126  "#mu_{medium, reliso} p_{T}","1", "trig[21]","TM medium #mu, I_{R=0.4} < 0.12", "Mu50",-60,false);
127  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&mus_tru_tm))-0.1", lbins,lmin,lmax,
128  "#mu_{medium, miniso} p_{T}","1", "trig[21]","TM medium #mu, I_{mini} < 0.2", "Mu50",-60,false);
129 
130  PlotTurnOn(&c_tt, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&els_tru_tm&&abs(els_eta)<1.4))-0.1",
131  lbins,lmin,lmax, "e_{medium}^{|#eta|<1.4} p_{T}","1", "trig[24]",
132  "TM medium e, I_{mini} < 0.1", "Ele105",-120,false);
133  PlotTurnOn(&c_tt, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&els_tru_tm&&abs(els_eta)>1.5))-0.1",
134  lbins,lmin,lmax, "e_{medium}^{|#eta|>1.5} p_{T}","1", "trig[24]",
135  "TM medium e, I_{mini} < 0.1", "Ele105",-120,false);
136 
137  // Truth-matched turn-ons
138  lmin = 5; lmax = 50; lbins = static_cast<int>((lmax-lmin)/1);
139  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_reliso<0.12&&mus_tru_tm))-0.1", lbins,lmin,lmax,
140  "#mu_{medium, reliso} p_{T}","1", "trig[18]","TM medium #mu, I_{R=0.4} < 0.12",
141  "IsoMu20",-1,false);
142  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_reliso<0.2&&mus_tru_tm))-0.1", lbins,lmin,lmax,
143  "#mu_{medium, reliso} p_{T}","1", "trig[18]","TM medium #mu, I_{R=0.4} < 0.2",
144  "IsoMu20",-1,false);
145  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&mus_tru_tm))-0.1", lbins,lmin,lmax,
146  "#mu_{medium, reliso} p_{T}","1", "trig[18]","TM medium #mu, I_{mini} < 0.2",
147  "IsoMu20",-1,false);
148  lmin = 25; lmax = 100; lbins = static_cast<int>((lmax-lmin)/1);
149  PlotTurnOn(&c_tt, "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
150  "#mu_{medium} p_{T}","1", "trig[21]","TM medium #mu, I_{mini} < 0.2", "Mu50",48,false);
151  lmin = 70; lmax = 160; lbins = static_cast<int>((lmax-lmin)/2.5);
152  PlotTurnOn(&c_tt, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&els_tru_tm&&abs(els_eta)<1.4))-0.1",
153  lbins,lmin,lmax, "e_{medium}^{|#eta|<1.4} p_{T}",
154  "1", "trig[24]","TM medium e, I_{mini} < 0.1", "Ele105",-1,false);
155  PlotTurnOn(&c_tt, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&els_tru_tm&&abs(els_eta)>1.5))-0.1",
156  lbins,lmin,lmax, "e_{medium}^{|#eta|>1.5} p_{T}",
157  "1", "trig[24]","TM medium e, I_{mini} < 0.1", "Ele105",-1,false);
158 
159 
160  // Turn-ons Ele105/Mu50
161  lmin = 60; lmax = 160; lbins = static_cast<int>((lmax-lmin)/5);
162  PlotTurnOn(&c_all, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&abs(els_eta)<1.4))-0.1", lbins,lmin,lmax,
163  "e_{medium}^{|#eta|<1.4} p_{T}",
164  "(trig[0]||trig[12])", "trig[24]","HT800 || HT350_MET100", "Ele105");
165  PlotTurnOn(&c_all, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&abs(els_eta)>1.5))-0.1", lbins,lmin,lmax,
166  "e_{medium}^{|#eta|>1.5} p_{T}",
167  "(trig[0]||trig[12])", "trig[24]","HT800 || HT350_MET100", "Ele105");
168 
169  lmin = 0; lmax = 100; lbins = static_cast<int>((lmax-lmin)/2.5);
170  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2))-0.1", lbins,lmin,lmax, "#mu_{medium} p_{T}",
171  "(trig[0]||trig[12])", "trig[21]","HT800 || HT350_MET100", "Mu50");
172 
173  // Turn-ons IsoMu20, VVVL
174  lmin = 0; lmax = 60; lbins = static_cast<int>((lmax-lmin)/2.5);
175  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2))-0.1", lbins,lmin,lmax, "#mu_{medium} p_{T}",
176  "(trig[0]||trig[12])", "trig[18]","HT800 || HT350_MET100", "IsoMu20");
177  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2))-0.1", lbins,lmin,lmax, "#mu_{medium} p_{T}",
178  "(trig[0]||trig[12])", "trig[1]||trig[2]","HT800 || HT350_MET100", "Mu15_(HT350_MET70 || HT600)");
179  PlotTurnOn(&c_all, "Max$(els_pt*(els_sigid&&els_miniso<0.1))-0.1", lbins,lmin,lmax, "e_{medium} p_{T}",
180  "(trig[0]||trig[12])", "trig[5]||trig[6]","HT800 || HT350_MET100", "Ele15_(HT350_MET70 || HT600)");
181 
182  // Plateaus
183  lmin = 0; lmax = 300; lbins = static_cast<int>((lmax-lmin)/20);
184  PlotTurnOn(&c_el, "Max$(mus_pt*(mus_tight&&mus_reliso<0.12))-0.1", lbins,lmin,lmax,
185  "#mu_{tight} p_{T}",
186  "(trig[22]||trig[26])", "trig[18]","Ele27 || Ele24_22", "IsoMu20");
187  PlotTurnOn(&c_el, "Max$(mus_pt*(mus_tight&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
188  "#mu_{tight} p_{T}",
189  "(trig[22]||trig[26])", "trig[18]","Ele27 || Ele24_22", "IsoMu20");
190  PlotTurnOn(&c_el, "Max$(mus_pt*(mus_tight&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
191  "#mu_{tight} p_{T}",
192  "(trig[22]||trig[26])", "trig[1]||trig[2]","Ele27 || Ele24_22", "Mu15_(HT350_MET70 || HT600)");
193  PlotTurnOn(&c_el, "Max$(mus_pt*(mus_tight&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
194  "#mu_{tight} p_{T}",
195  "(trig[22]||trig[26])", "trig[21]","Ele27 || Ele24_22", "Mu50");
196 
197  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_tight&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
198  "#mu_{tight} p_{T}",
199  "(trig[0]||trig[12])", "trig[18]","HT800 || HT350_MET100", "IsoMu20");
200  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_tight&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
201  "#mu_{tight} p_{T}",
202  "(trig[0]||trig[12])", "trig[1]||trig[2]","HT800 || HT350_MET100", "Mu15_(HT350_MET70 || HT600)");
203  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_tight&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
204  "#mu_{tight} p_{T}",
205  "(trig[0]||trig[12])", "trig[21]","HT800 || HT350_MET100", "Mu50");
206 
207  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
208  "#mu_{medium} p_{T}",
209  "(trig[0]||trig[12])", "trig[18]","HT800 || HT350_MET100", "IsoMu20");
210  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
211  "#mu_{medium} p_{T}",
212  "(trig[0]||trig[12])", "trig[1]||trig[2]","HT800 || HT350_MET100", "Mu15_(HT350_MET70 || HT600)");
213  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2))-0.1", lbins,lmin,lmax,
214  "#mu_{medium} p_{T}",
215  "(trig[0]||trig[12])", "trig[21]","HT800 || HT350_MET100", "Mu50");
216 
217  lmin = 0; lmax = 300; lbins = static_cast<int>((lmax-lmin)/20);
218  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&abs(mus_eta)<1.4))-0.1", lbins,lmin,lmax,
219  "#mu_{medium}^{|#eta|<1.4} p_{T}",
220  "(trig[0]||trig[12])", "trig[1]||trig[2]","HT800 || HT350_MET100", "Mu15_(HT350_MET70 || HT600)");
221  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&abs(mus_eta)>1.5))-0.1", lbins,lmin,lmax,
222  "#mu_{medium}^{|#eta|>1.5} p_{T}",
223  "(trig[0]||trig[12])", "trig[1]||trig[2]","HT800 || HT350_MET100", "Mu15_(HT350_MET70 || HT600)");
224 
225  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&abs(mus_eta)<1.4))-0.1", lbins,lmin,lmax,
226  "#mu_{medium}^{|#eta|<1.4} p_{T}",
227  "(trig[0]||trig[12])", "trig[21]","HT800 || HT350_MET100",
228  "Mu50");
229  PlotTurnOn(&c_all, "Max$(mus_pt*(mus_sigid&&mus_miniso<0.2&&abs(mus_eta)>1.5))-0.1", lbins,lmin,lmax,
230  "#mu_{medium}^{|#eta|>1.5} p_{T}",
231  "(trig[0]||trig[12])", "trig[21]","HT800 || HT350_MET100",
232  "Mu50");
233 
234  PlotTurnOn(&c_all, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&abs(els_eta)<1.4))-0.1", lbins,lmin,lmax,
235  "e_{medium}^{|#eta|<1.4} p_{T}",
236  "(trig[0]||trig[12])", "trig[5]||trig[6]","HT800 || HT350_MET100", "Ele15_(HT350_MET70 || HT600)");
237  PlotTurnOn(&c_all, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&abs(els_eta)>1.5))-0.1", lbins,lmin,lmax,
238  "e_{medium}^{|#eta|>1.5} p_{T}",
239  "(trig[0]||trig[12])", "trig[5]||trig[6]","HT800 || HT350_MET100", "Ele15_(HT350_MET70 || HT600)");
240 
241  PlotTurnOn(&c_all, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&abs(els_eta)<1.4))-0.1", lbins,lmin,lmax,
242  "e_{medium}^{|#eta|<1.4} p_{T}",
243  "(trig[0]||trig[12])", "trig[24]","HT800 || HT350_MET100",
244  "Ele105");
245  PlotTurnOn(&c_all, "Max$(els_pt*(els_sigid&&els_miniso<0.1&&abs(els_eta)>1.5))-0.1", lbins,lmin,lmax,
246  "e_{medium}^{|#eta|>1.5} p_{T}",
247  "(trig[0]||trig[12])", "trig[24]","HT800 || HT350_MET100",
248  "Ele105");
249 
250  float htmin(175), htmax(1000);
251  int htbins(static_cast<int>((htmax-htmin)/12.5));
252  htmin = 0; htmax = 2400; htbins = static_cast<int>((htmax-htmin)/200);
253  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
254  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>40",
255  "trig[18]","n_{#mu,40,reliso} #geq 1", "IsoMu20", -500,false);
256  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
257  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>25",
258  "trig[18]","n_{#mu,25,reliso} #geq 1", "IsoMu20", -500,false);
259  PlotTurnOn(&c_tt, "ht", htbins,htmin,htmax, "H_{T}",
260  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>25",
261  "trig[18]","n_{#mu,25,miniso} #geq 1", "IsoMu20", -500,false);
262  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
263  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>25",
264  "trig[18]","n_{#mu,25,reliso} #geq 1", "IsoMu20", -500,false);
265 
266  PlotTurnOn(&c_tt, "ht", htbins,htmin,htmax, "H_{T}",
267  "Max$(mus_pt*(mus_sigid&&mus_tru_tm))>25",
268  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>25","n_{#mu,25} #geq 1",
269  "n_{#mu,25,miniso} #geq 1", -500,false);
270  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
271  "Max$(mus_pt*(mus_sigid&&mus_tru_tm))>25",
272  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>25","n_{#mu,25} #geq 1",
273  "n_{#mu,25,reliso} #geq 1", -500,false);
274  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
275  "Max$(mus_pt*(mus_sigid&&mus_tru_tm))>25",
276  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>25","n_{#mu,25} #geq 1",
277  "n_{#mu,25,reliso} #geq 1", -500,false);
278  PlotTurnOn(&c_tt, "ht", htbins,htmin,htmax, "H_{T}",
279  "Max$(mus_pt*(mus_sigid&&mus_tru_tm))>25",
280  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_miniso<0.2))>25&&trig[18]","n_{#mu,25} #geq 1",
281  "n_{#mu,25,miniso} #geq 1, IsoMu20", -500,false);
282  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
283  "Max$(mus_pt*(mus_sigid&&mus_tru_tm))>25",
284  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.2))>25&&trig[18]","n_{#mu,25} #geq 1",
285  "n_{#mu,25,reliso} #geq 1, IsoMu20", -500,false);
286  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
287  "Max$(mus_pt*(mus_sigid&&mus_tru_tm))>25",
288  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>25&&trig[18]","n_{#mu,25} #geq 1",
289  "n_{#mu,25,reliso} #geq 1, IsoMu20", -500,false);
290  PlotTurnOn(&c_tt, "ht_reliso", htbins,htmin,htmax, "H_{T}",
291  "Max$(mus_pt*(mus_sigid&&mus_tru_tm))>40",
292  "Max$(mus_pt*(mus_sigid&&mus_tru_tm&&mus_reliso<0.12))>40&&trig[18]","n_{#mu,40} #geq 1",
293  "n_{#mu,40,reliso} #geq 1, IsoMu20", -500,false);
294 
295  float ltmin(0), ltmax(600);
296  int ltbins(static_cast<int>((ltmax-ltmin)/25));
297  PlotTurnOn(&c_jetht, "met_nohf+Sum$(mus_pt*(mus_sigid&&mus_miniso<0.2))", ltbins, ltmin, ltmax, "L_{T}",
298  "Sum$((mus_pt>25&&mus_sigid&&mus_miniso<0.2))==1&&ht>500", "trig[1]||trig[21]",
299  "JetHT, n_{#mu}^{25} = 1, H_{T} > 500","Mu15_HT350_MET70 || Mu50");
300 
301  PlotTurnOn(&c_jetht, "met_nohf+Sum$(els_pt*(els_sigid&&els_miniso<0.1))", ltbins, ltmin, ltmax, "L_{T}",
302  "Sum$((els_pt>25&&els_sigid&&els_miniso<0.1))==1&&ht>500", "trig[5]||trig[24]",
303  "JetHT, n_{e}^{25} = 1, H_{T} > 500","Ele15_HT350_MET70 || Ele105");
304  } // if(do_lep)
305 
306 
307  if(do_dps){
308  float metmin(0), metmax(460);
309  int metbins(static_cast<int>((metmax-metmin)/20));
310  TString vvvl_or("(HT400_Btag || HT600)");
311  PlotTurnOn(&c_all, "met", metbins,metmin,metmax, "E_{T}^{miss}",
312  "(trig[22]||trig[10])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets_ra2b>=4&&ht_ra2b>500&&onht>350", "trig[0]",
313  "Ele27 || DoubleEle8, n_{j} #geq 4, H_{T} > 500", "HT350_MET100");
314  PlotTurnOn(&c_el, "met", metbins,metmin,metmax, "E_{T}^{miss}",
315  "(trig[6]||trig[7])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[5]",
316  "Ele15_"+vvvl_or+", n_{j} #geq 4", "Ele15_HT350_MET70");
317  PlotTurnOn(&c_all, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
318  "(trig[22]||trig[10])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets_ra2b>=4&&ht_ra2b>500&&onht>350", "trig[0]",
319  "Ele27 || DoubleEle8, n_{j} #geq 4, H_{T} > 500", "HT350_MET100");
320 
321 
322  float htmin(175), htmax(850);
323  int htbins(static_cast<int>((htmax-htmin)/12.5));
324  PlotTurnOn(&c_met, "ht_hlt", htbins,htmin,htmax, "H_{T}",
325  "trig[14]&&nvleps==0", "trig[0]","MET170, no leptons", "HT350_MET100");
326  htmin = 575; htmax = 1450; htbins = static_cast<int>((htmax-htmin)/25);
327  PlotTurnOn(&c_jetht, "ht_hlt", htbins,htmin,htmax, "H_{T}",
328  "trig[11]&&nvleps==0", "trig[12]","HT475, no leptons", "HT800");
329  htmin = 125; htmax = 850; htbins = static_cast<int>((htmax-htmin)/25);
330  PlotTurnOn(&c_met, "ht_hlt", htbins,htmin,htmax, "H_{T}",
331  "(trig[13])&&(nmus)>=1&&onmaxmu>15", "trig[1]","MET120_Mu5, n_{#mu} #geq 1",
332  "Mu15_HT350_MET70");
333  htmin = 375; htmax = 1250; htbins = static_cast<int>((htmax-htmin)/25);
334  PlotTurnOn(&c_el, "ht_hlt", htbins,htmin,htmax, "H_{T}",
335  "(trig[5])", "trig[6]","Ele15_HT350_MET70", "Ele15_HT600");
336 
337  }
338 
340  if(do_met){
341  float metmin(0), metmax(500);
342  int metbins(static_cast<int>((metmax-metmin)/20));
343  TString vvvl_or("(HT400_Btag || HT600)");
344 
345  // MET, njets >= 4
346  vvvl_or = "HT400_Btag";
347  PlotTurnOn(&c_el, "met", metbins,metmin,metmax, "E_{T}^{miss}",
348  "(trig[7])&&njets>=4", "trig[0]",
349  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
350  PlotTurnOn(&c_el, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
351  "(trig[7])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[0]",
352  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
353  // MET, njets >= 4
354  vvvl_or = "HT600";
355  PlotTurnOn(&c_el, "met", metbins,metmin,metmax, "E_{T}^{miss}",
356  "(trig[6])&&njets>=4", "trig[0]",
357  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
358  PlotTurnOn(&c_el, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
359  "(trig[6])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[0]",
360  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
361  PlotTurnOn(&c_all, "met", metbins,metmin,metmax, "E_{T}^{miss}",
362  "(trig[22]||trig[26])&&njets_ra2b>=4&&ht_ra2b>500", "trig[0]",
363  "(Ele27 || Ele24_22), n_{j}#geq4, H_{T}>500", "HT350_MET100");
364  PlotTurnOn(&c_all, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
365  "(trig[22]||trig[26])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets_ra2b>=4&&ht_ra2b>500", "trig[0]",
366  "(Ele27 || Ele24_22), n_{j}#geq4, H_{T}>500", "HT350_MET100");
367 
368 
369  // MET, no cuts
370  PlotTurnOn(&c_el, "met", metbins,metmin,metmax, "E_{T}^{miss}",
371  "(trig[6]||trig[7])", "trig[0]", "Ele15_"+vvvl_or+"", "HT350_MET100");
372  PlotTurnOn(&c_mu, "met", metbins,metmin,metmax, "E_{T}^{miss}",
373  "(trig[2]||trig[3])", "trig[0]", "Mu15_"+vvvl_or+"", "HT350_MET100");
374  // MET, njets >= 4
375  PlotTurnOn(&c_el, "met", metbins,metmin,metmax, "E_{T}^{miss}",
376  "(trig[6]||trig[7])&&njets>=4", "trig[0]",
377  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
378  PlotTurnOn(&c_mu, "met", metbins,metmin,metmax, "E_{T}^{miss}",
379  "(trig[2]||trig[3])&&njets>=4", "trig[0]",
380  "Mu15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
381  PlotTurnOn(&c_lep, "met", metbins,metmin,metmax, "E_{T}^{miss}",
382  "(trig[2]||trig[3]||trig[6]||trig[7])&&njets>=4", "trig[0]",
383  "Lep15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
384 
385  // MET no HF, njets >= 4
386  PlotTurnOn(&c_el, "met_nohf", metbins,metmin,metmax, "E_{T}^{miss} no HF",
387  "(trig[6]||trig[7])&&njets>=4", "trig[0]",
388  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
389  PlotTurnOn(&c_mu, "met_nohf", metbins,metmin,metmax, "E_{T}^{miss} no HF",
390  "(trig[2]||trig[3])&&njets>=4", "trig[0]",
391  "Mu15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
392  PlotTurnOn(&c_lep, "met_nohf", metbins,metmin,metmax, "E_{T}^{miss} no HF",
393  "(trig[2]||trig[3]||trig[6]||trig[7])&&njets>=4", "trig[0]",
394  "Lep15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
395 
396  // MHT, njets >= 4
397  PlotTurnOn(&c_el, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
398  "(trig[6]||trig[7])&&njets>=4", "trig[0]",
399  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
400  PlotTurnOn(&c_el, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
401  "(trig[6]||trig[7])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[0]",
402  "Ele15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
403  PlotTurnOn(&c_mu, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
404  "(trig[2]||trig[3])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[0]",
405  "Mu15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
406  PlotTurnOn(&c_lep, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
407  "(trig[2]||trig[3]||trig[6]||trig[7])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[0]",
408  "Lep15_"+vvvl_or+", n_{j}#geq4", "HT350_MET100");
409 
410  // MET70, njets >= 4
411  PlotTurnOn(&c_el, "met", metbins,metmin,metmax, "E_{T}^{miss}",
412  "(trig[6]||trig[7])&&njets>=4", "trig[5]",
413  "Ele15_"+vvvl_or+", n_{j}#geq4", "Ele15_HT350_MET70");
414  PlotTurnOn(&c_mu, "met", metbins,metmin,metmax, "E_{T}^{miss}",
415  "(trig[2]||trig[3])&&njets>=4", "trig[1]",
416  "Mu15_"+vvvl_or+", n_{j}#geq4", "Mu15_HT350_MET70");
417  PlotTurnOn(&c_lep, "met", metbins,metmin,metmax, "E_{T}^{miss}",
418  "(trig[2]||trig[3]||trig[6]||trig[7])&&njets>=4", "trig[1]||trig[5]",
419  "Lep15_"+vvvl_or+", n_{j}#geq4", "Lep15_HT350_MET70");
420  PlotTurnOn(&c_el, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
421  "(trig[6]||trig[7])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[5]",
422  "Ele15_"+vvvl_or+", n_{j}#geq4", "Ele15_HT350_MET70");
423  PlotTurnOn(&c_mu, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
424  "(trig[2]||trig[3])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4", "trig[1]",
425  "Mu15_"+vvvl_or+", n_{j}#geq4", "Mu15_HT350_MET70");
426  PlotTurnOn(&c_lep, "mht_ra2b", metbins,metmin,metmax, "H_{T}^{miss}",
427  "(trig[2]||trig[3]||trig[6]||trig[7])&&mht_ra2b/met>0.5&&mht_ra2b/met<2&&njets>=4",
428  "trig[1]||trig[5]", "Lep15_"+vvvl_or+", n_{j}#geq4", "Lep15_HT350_MET70");
429  }
430 
432 
433  if(do_ht){
434  float htmin(175), htmax(1000);
435  int htbins(static_cast<int>((htmax-htmin)/12.5));
436  PlotTurnOn(&c_met, "ht", htbins,htmin,htmax, "H_{T}",
437  "trig[14]&&nvleps==0", "trig[0]","MET170, no leptons", "HT350_MET100");
438  PlotTurnOn(&c_met, "ht_hlt", htbins,htmin,htmax, "H_{T}",
439  "trig[14]&&nvleps==0", "trig[0]","MET170, no leptons", "HT350_MET100");
440  PlotTurnOn(&c_met, "ht", htbins,htmin,htmax, "H_{T}",
441  "trig[14]&&nvleps==0", "trig[0]","MET170, no leptons", "HT350_MET100",350);
442  PlotTurnOn(&c_met, "ht_hlt", htbins,htmin,htmax, "H_{T}",
443  "trig[14]&&nvleps==0", "trig[0]","MET170, no leptons", "HT350_MET100",350);
444 
445  htmin = 600; htmax = 1600; htbins = static_cast<int>((htmax-htmin)/25);
446  PlotTurnOn(&c_jetht, "ht", htbins,htmin,htmax, "H_{T}",
447  "trig[11]&&nvleps==0", "trig[12]","HT475, no leptons", "HT800");
448  PlotTurnOn(&c_jetht, "ht_hlt", htbins,htmin,htmax, "H_{T}",
449  "trig[11]&&nvleps==0", "trig[12]","HT475, no leptons", "HT800");
450  PlotTurnOn(&c_jetht, "ht", htbins,htmin,htmax, "H_{T}",
451  "trig[11]&&nvleps==0", "trig[12]","HT475, no leptons", "HT800",825);
452  PlotTurnOn(&c_jetht, "ht_hlt", htbins,htmin,htmax, "H_{T}",
453  "trig[11]&&nvleps==0", "trig[12]","HT475, no leptons", "HT800",825);
454 
455 
456  htmin = 125; htmax = 1000; htbins = static_cast<int>((htmax-htmin)/25);
457  PlotTurnOn(&c_met, "ht_hlt", htbins,htmin,htmax, "H_{T}",
458  "(trig[14])&&nels>=1&&onmaxel>15", "trig[5]","MET170, n_{e} #geq 1",
459  "Ele15_HT350_MET70");
460  PlotTurnOn(&c_met, "ht_hlt", htbins,htmin,htmax, "H_{T}",
461  "(trig[13])&&(nmus)>=1&&onmaxmu>15", "trig[1]","MET120_Mu5, n_{#mu} #geq 1",
462  "Mu15_HT350_MET70");
463  htmin = 400; htmax = 1300; htbins = static_cast<int>((htmax-htmin)/25);
464  PlotTurnOn(&c_mu, "ht_hlt", htbins,htmin,htmax, "H_{T}",
465  "(trig[1])", "trig[2]","Mu15_HT350_MET70", "Mu15_HT600");
466  PlotTurnOn(&c_el, "ht_hlt", htbins,htmin,htmax, "H_{T}",
467  "(trig[5])", "trig[6]","Ele15_HT350_MET70", "Ele15_HT600");
468  PlotTurnOn(&c_mu, "ht", htbins,htmin,htmax, "H_{T}",
469  "(trig[1])", "trig[2]","Mu15_HT350_MET70", "Mu15_HT600");
470  PlotTurnOn(&c_el, "ht", htbins,htmin,htmax, "H_{T}",
471  "(trig[5])", "trig[6]","Ele15_HT350_MET70", "Ele15_HT600");
472  PlotTurnOn(&c_mu, "ht", htbins,htmin,htmax, "H_{T}",
473  "(trig[1])", "trig[2]","Mu15_HT350_MET70", "Mu15_HT600",600);
474  PlotTurnOn(&c_el, "ht", htbins,htmin,htmax, "H_{T}",
475  "(trig[5])", "trig[6]","Ele15_HT350_MET70", "Ele15_HT600",600);
476 
477 
478  } // if(do_ht)
479 
480 }
481 
482 void PlotTurnOn(TChain *data, TString var, int nbins, double minx, double maxx, TString xtitle,
483  TString den, TString num, TString title, TString ytitle, float minfit, bool isData){
484  styles style("HLTStyle"); gStyle->SetPadTickY(0);
485  bool dofit(minfit>=-1);
486  TCanvas can;
487  //can.SetGrid();
488  TH1D* histo[2];
489  TString hname, totCut, pname;
490  den = "("+den+")&&json_golden&&pass";
491  hname = "den"; totCut = den;
492  histo[0] = new TH1D(hname, "", nbins, minx, maxx);
493  data->Project(hname, var, totCut);
494 
495  hname = "num"; totCut = "("+den+")&&("+num+")";
496  histo[1] = new TH1D(hname, "", nbins, minx, maxx);
497  data->Project(hname, var, totCut);
498 
499  // Adding overflow bins
500  for(unsigned his(0); his<2; his++)
501  histo[his]->SetBinContent(nbins, histo[his]->GetBinContent(nbins)+histo[his]->GetBinContent(nbins+1));
502 
503  TGraphAsymmErrors heff(histo[1], histo[0], "cp");
504  //TEfficiency heff(*histo[1], *histo[0]);
505  heff.SetMarkerStyle(20); heff.SetMarkerSize(0.9);
506  heff.SetMarkerColor(1); heff.SetLineColor(1);
507 
508  TString epsi("#scale[1.3]{#font[122]{e}}");
509  //epsi = "Efficiency";
510  // Ploting denominator
511  float hscaled(0.3), maxeff(1.42);
512  float hfactor(hscaled/histo[1]->GetMaximum()), hmax(histo[1]->GetMaximum());
513  float axismax(hmax*maxeff/hscaled);
514  histo[1]->Scale(hfactor);
515  //histo[1]->SetFillStyle(3344);
516  histo[1]->SetFillColor(kBlue-9);
517  histo[1]->SetLineStyle(0);
518  //histo[1]->SetTitle("Denom: "+title);
519  histo[1]->GetXaxis()->SetTitle("Offline "+xtitle+" [GeV]");
520  histo[1]->GetYaxis()->SetTitle(epsi+" ["+ytitle+"]");
521  histo[1]->GetYaxis()->SetTitle("Efficiency ["+ytitle+"]");
522  histo[1]->GetYaxis()->SetRangeUser(0,maxeff);
523  histo[1]->GetYaxis()->CenterTitle(true);
524  histo[1]->Draw();
525 
526  TLine line; line.SetLineStyle(3);
527  line.DrawLine(minx, 1, maxx, 1);
528 
529  histo[0]->Scale(hfactor);
530  histo[0]->SetLineColor(kBlue+2);
531  histo[0]->SetLineStyle(2);
532  histo[0]->SetLineWidth(2);
533  histo[0]->Draw("same");
534 
535  pname = "plots/turnon_"+format_tag(var)+"_";
536  pname += maxx; pname += "_"+format_tag(num)+"_"+format_tag(den);
537  if(minfit>0) {pname += "_min"; pname += minfit; }
538  if(isData) pname += "_data";
539  else pname += "_mc";
540  pname += plot_type;
541  pname.ReplaceAll("_json_golden_pass","");
542 
543 
544  // Fitting turn on curve
545  if(minfit<0 && dofit) minfit = minx;
546  TF1 *fitCurve = new TF1("fitCurve",errorFun,minx,maxx,3);
547  Double_t params[] = {0.99,minx+(maxx-minx)/4.,50., 50.};
548  //Double_t params[] = {0.99,880,50.};
549  fitCurve->SetParameters(params);
550  fitCurve->SetParNames("#epsilon","#mu","#sigma");
551  fitCurve->SetLineColor(2);
552  fitCurve->SetLineWidth(2);
553  if(dofit) heff.Fit("fitCurve","QEM+","",minfit, maxx);
554 
555  heff.Draw("p");
556  histo[1]->Draw("axis same");
557 
558  float binw((maxx-minx)/static_cast<float>(nbins));
559  int digits((binw-floor(binw))>0?1:0);
560 
561  TString ntitle("Events/("+RoundNumber(maxx-minx,digits,nbins)+" GeV)");
562  TGaxis *axis = new TGaxis(maxx,0, maxx, maxeff,0,axismax,508,"+L");
563  axis->SetLineColor(kBlue+2);
564  axis->SetTextColor(kBlue+2); axis->SetLabelColor(kBlue+2);
565  axis->SetTextFont(style.nFont); axis->SetLabelFont(style.nFont);
566  axis->SetTitleSize(style.LabelSize); axis->SetLabelSize(style.LabelSize);
567  if(axismax>=1000) axis->SetTitleOffset(style.yTitleOffset+0.34);
568  else axis->SetTitleOffset(style.yTitleOffset+0.22);
569  axis->SetTitle(ntitle); axis->CenterTitle(true);
570  axis->Draw();
571 
572 
573  float effic, errup, errdown;
574  float mu(fitCurve->GetParameter(1)), sigma(fitCurve->GetParameter(2));
575  float rgev(mu>200?10:5);
576  float var_plateau_f(floor((mu+3*sigma+5)/rgev)*rgev);
577  if(!dofit) var_plateau_f = fabs(minfit);
578  TString den_plateau(den), var_plateau(RoundNumber(var_plateau_f, 0));
579  den_plateau += ("&&"+var+">"+var_plateau);
580  Efficiency(data, den_plateau, num, effic, errup, errdown);
581 
582  // 98th percentile of Gaussian from Wolfram Alpha
583  float p98(fitCurve->GetParameter(1)+2.05*fitCurve->GetParameter(2));
584  float eplateau(fitCurve->GetParError(0)*100);
585  if(eplateau<0.1 && dofit) cout<<"Error on plateau "<<eplateau<<"%"<<endl;
586  epsi.ToLower();
587  // TString fitpar("Plateau "+epsi+" = ("+RoundNumber(fitCurve->GetParameter(0)*100,1)+" #pm "+
588  // RoundNumber(eplateau,1)+")%");
589  // TString fitpar("Plateau "+epsi+" = "+RoundNumber(effic*100,1)+"^{+"+RoundNumber(errup*100,1)+
590  // "}_{-"+RoundNumber(errdown*100,1)+"} %");
591  TString fitpar(epsi+"("+xtitle+" > "+var_plateau+" GeV) = "+RoundNumber(effic*100,1)+"^{+"+RoundNumber(errup*100,1)+
592  "}_{-"+RoundNumber(errdown*100,1)+"} %");
593  TLatex label; label.SetTextSize(0.042);
594  label.SetTextAlign(33); //label.SetNDC();
595  float range(maxx-minx);
596  float x2(maxx-0.04*range), y2(maxeff-0.07), ysingle(0.1);
597  label.DrawLatex(x2, y2, "Denom: #font[52]{"+title+"}");
598  label.DrawLatex(x2, y2-ysingle,fitpar);
599  fitpar = "98% of plateau at "+RoundNumber(p98,0)+" GeV";
600  if(dofit) label.DrawLatex(x2, y2-2.3*ysingle,fitpar);
601 
602  // Drawing CMS preliminary
603  label.SetNDC(); label.SetTextAlign(11); label.SetTextSize(0.045);
604  if(isData) label.DrawLatex(0.13, 0.93, "#font[61]{CMS} #scale[0.8]{#font[52]{Preliminary}}");
605  else label.DrawLatex(0.13, 0.93, "#font[61]{CMS} #scale[0.8]{#font[52]{Simulation}}");
606  // Drawing luminosity
607  label.SetTextAlign(31);
608  if(isData) label.DrawLatex(0.85, 0.93, "42 pb^{-1} (13 TeV)");
609  else label.DrawLatex(0.85, 0.93, "Spring15 t#bar{t}");
610 
611  can.SaveAs(pname);
612 
613  for(unsigned his(0); his<2; his++)
614  histo[his]->Delete();
615  fitCurve->Delete();
616 }
617 
618 TString Efficiency(TChain *data, TString den, TString num, float &effic, float &errup, float &errdown){
619  TH1D* histo[2];
620  TString hname, totCut, pname;
621  den = "("+den+")&&json_golden&&pass";
622  hname = "eden"; totCut = den;
623  histo[0] = new TH1D(hname, "", 1, 0, 1);
624  float denom(data->GetEntries(totCut));
625  histo[0]->SetBinContent(1,denom);
626 
627  hname = "enum"; totCut = "("+den+")&&("+num+")";
628  histo[1] = new TH1D(hname, "", 1, 0, 1);
629  float numer(data->GetEntries(totCut));
630  histo[1]->SetBinContent(1,numer);
631 
632  TGraphAsymmErrors heff(histo[1], histo[0], "cp");
633  //TEfficiency heff(*histo[1], *histo[0]);
634 
635  effic = numer/denom;
636  errup = heff.GetErrorYhigh(0); errdown = heff.GetErrorYlow(0);
637  //float errup(heff.GetEfficiencyErrorUp(0)), errdown(heff.GetEfficiencyErrorLow(0));
638 
639  den.ReplaceAll("&&json_golden","");
640  if(denom) cout<<endl<<"Eff = "<<RoundNumber(numer*100,1,denom)<<"+"<<RoundNumber(errup*100,1)
641  <<"-"<<RoundNumber(errdown*100,1)<<" for num "<<num<<" and "<<den<<" with "<<denom<<" entries"<<endl;
642  else cout<<"Denominator is zero"<<endl;
643 
644  TString efficiency(RoundNumber(numer*100,1,denom)+"^{+"+RoundNumber(errup*100,1)+
645  "}_{-"+RoundNumber(errdown*100,1)+"}");
646 
647  for(unsigned his(0); his<2; his++)
648  histo[his]->Delete();
649 
650  return efficiency;
651 
652 }
653 
TString Efficiency(TChain *data, TString den, TString num, float &effic, float &errup, float &errdown)
void setDefaultStyle()
Definition: styles.cpp:36
float LabelSize
Definition: styles.hpp:35
void PlotTurnOn(TChain *data, TString var, int nbins, double minx, double maxx, TString xtitle, TString den, TString num, TString title="", TString ytitle="", float minfit=-1., bool isData=true)
STL namespace.
Double_t errorFun(Double_t *x, Double_t *par)
TString format_tag(TString tag)
int main()
float yTitleOffset
Definition: styles.hpp:35
TString RoundNumber(double num, int decimals, double denom=1.)
Definition: utilities.cpp:191
int nFont
Definition: styles.hpp:33
tuple data
Definition: parse_card.py:260