-
Notifications
You must be signed in to change notification settings - Fork 11
Expand file tree
/
Copy pathmakeCorrectionsWorkspace_minimal_sm.py
More file actions
293 lines (232 loc) · 19.3 KB
/
makeCorrectionsWorkspace_minimal_sm.py
File metadata and controls
293 lines (232 loc) · 19.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
#!/usr/bin/env python
import ROOT
import imp
import json
from array import array
wsptools = imp.load_source('wsptools', 'workspaceTools.py')
def GetFromTFile(str):
f = ROOT.TFile(str.split(':')[0])
obj = f.Get(str.split(':')[1]).Clone()
f.Close()
return obj
# Boilerplate
ROOT.PyConfig.IgnoreCommandLineOptions = True
ROOT.gROOT.SetBatch(ROOT.kTRUE)
ROOT.RooWorkspace.imp = getattr(ROOT.RooWorkspace, 'import')
ROOT.TH1.AddDirectory(0)
ROOT.gROOT.LoadMacro("CrystalBallEfficiency.cxx+")
w = ROOT.RooWorkspace('w')
### DESY electron/muon tag and probe results
loc = 'inputs/LeptonEfficiencies'
desyHistsToWrap = [
(loc+'/Muon/Run2016BtoH/Muon_IdIso_IsoLt0p15_2016BtoH_eff.root', 'MC', 'm_idiso0p15_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_IdIso_IsoLt0p15_2016BtoH_eff.root', 'Data', 'm_idiso0p15_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_IdIso_IsoLt0p2_2016BtoH_eff.root', 'MC', 'm_idiso0p20_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_IdIso_IsoLt0p2_2016BtoH_eff.root', 'Data', 'm_idiso0p20_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_IdIso_antiisolated_Iso0p15to0p3_eff_rb.root', 'MC', 'm_idiso_aiso0p15to0p3_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_IdIso_antiisolated_Iso0p15to0p3_eff_rb.root', 'Data', 'm_idiso_aiso0p15to0p3_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p05to0p15_IdIso_eff.root', 'MC', 'm_idiso_aiso0p05to0p15_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p05to0p15_IdIso_eff.root', 'Data', 'm_idiso_aiso0p05to0p15_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p15to0p25_IdIso_eff.root', 'MC', 'm_idiso_aiso0p15to0p25_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p15to0p25_IdIso_eff.root', 'Data', 'm_idiso_aiso0p15to0p25_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_IsoMu24_2016BtoH_eff.root', 'MC', 'm_trgIsoMu24_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_IsoMu24_2016BtoH_eff.root', 'Data', 'm_trgIsoMu24_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_IsoMu24_OR_TkIsoMu24_2016BtoH_eff.root', 'MC', 'm_trgIsoMu24orTkIsoMu24_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_IsoMu24_OR_TkIsoMu24_2016BtoH_eff.root', 'Data', 'm_trgIsoMu24orTkIsoMu24_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p05to0p15_IsoMu24ORTkIsoMu24_eff_rb.root', 'MC', 'm_trgIsoMu24orTkIsoMu24_aiso0p05to0p15_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p05to0p15_IsoMu24ORTkIsoMu24_eff_rb.root', 'Data', 'm_trgIsoMu24orTkIsoMu24_aiso0p05to0p15_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p15to0p25_IsoMu24ORTkIsoMu24_eff_rb.root', 'MC', 'm_trgIsoMu24orTkIsoMu24_aiso0p15to0p25_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_antiisolated_0p15to0p25_IsoMu24ORTkIsoMu24_eff_rb.root', 'Data', 'm_trgIsoMu24orTkIsoMu24_aiso0p15to0p25_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu8leg_2016BtoH_eff.root', 'MC', 'm_trgMu8leg_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu8leg_2016BtoH_eff.root', 'Data', 'm_trgMu8leg_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu23leg_2016BtoH_eff.root', 'MC', 'm_trgMu23leg_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu23leg_2016BtoH_eff.root', 'Data', 'm_trgMu23leg_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_2016BtoH_eff.root', 'MC', 'm_trgMu19leg_eta2p1_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_2016BtoH_eff.root', 'Data', 'm_trgMu19leg_eta2p1_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_eta2p1_antiisolated_Iso0p05to0p15_eff_rb.root', 'MC', 'm_trgMu19leg_eta2p1_aiso0p05to0p15_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_eta2p1_antiisolated_Iso0p05to0p15_eff_rb.root', 'Data', 'm_trgMu19leg_eta2p1_aiso0p05to0p15_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_eta2p1_antiisolated_Iso0p15to0p25_eff_rb.root', 'MC', 'm_trgMu19leg_eta2p1_aiso0p15to0p25_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_eta2p1_antiisolated_Iso0p15to0p25_eff_rb.root', 'Data', 'm_trgMu19leg_eta2p1_aiso0p15to0p25_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_eta2p1_antiisolated_Iso0p15to0p3_eff_rb.root', 'MC', 'm_trgMu19leg_eta2p1_aiso0p15to0p3_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu19leg_eta2p1_antiisolated_Iso0p15to0p3_eff_rb.root', 'Data', 'm_trgMu19leg_eta2p1_aiso0p15to0p3_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_eff.root', 'MC', 'm_trgMu22OR_eta2p1_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_eff.root', 'Data', 'm_trgMu22OR_eta2p1_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_antiisolated_Iso0p05to0p15_eff_rb.root', 'MC', 'm_trgMu22OR_eta2p1_aiso0p05to0p15_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_antiisolated_Iso0p05to0p15_eff_rb.root', 'Data', 'm_trgMu22OR_eta2p1_aiso0p05to0p15_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_antiisolated_Iso0p15to0p25_eff_rb.root', 'MC', 'm_trgMu22OR_eta2p1_aiso0p15to0p25_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_antiisolated_Iso0p15to0p25_eff_rb.root', 'Data', 'm_trgMu22OR_eta2p1_aiso0p15to0p25_desy_data'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_antiisolated_Iso0p15to0p3_eff_rb.root', 'MC', 'm_trgMu22OR_eta2p1_aiso0p15to0p3_desy_mc'),
(loc+'/Muon/Run2016BtoH/Muon_Mu22OR_eta2p1_antiisolated_Iso0p15to0p3_eff_rb.root', 'Data', 'm_trgMu22OR_eta2p1_aiso0p15to0p3_desy_data'),
]
for task in desyHistsToWrap:
wsptools.SafeWrapHist(w, ['m_pt', 'expr::m_abs_eta("TMath::Abs(@0)",m_eta[0])'],
wsptools.ProcessDESYLeptonSFs(task[0], task[1], task[2]), name=task[2])
for t in ['idiso0p15_desy', 'idiso0p20_desy', 'idiso_aiso0p15to0p3_desy', 'idiso_aiso0p05to0p15_desy', 'idiso_aiso0p15to0p25_desy', 'trgIsoMu24_desy', 'trgIsoMu24orTkIsoMu24_desy', 'trgIsoMu24orTkIsoMu24_aiso0p05to0p15_desy', 'trgIsoMu24orTkIsoMu24_aiso0p15to0p25_desy', 'trgMu8leg_desy', 'trgMu23leg_desy', 'trgMu19leg_eta2p1_desy', 'trgMu19leg_eta2p1_aiso0p05to0p15_desy', 'trgMu19leg_eta2p1_aiso0p15to0p25_desy', 'trgMu19leg_eta2p1_aiso0p15to0p3_desy', 'trgMu22OR_eta2p1_desy', 'trgMu22OR_eta2p1_aiso0p05to0p15_desy', 'trgMu22OR_eta2p1_aiso0p15to0p25_desy', 'trgMu22OR_eta2p1_aiso0p15to0p3_desy']:
w.factory('expr::m_%s_ratio("@0/@1", m_%s_data, m_%s_mc)' % (t, t, t))
desyHistsToWrap = [
(loc+'/Electron/Run2016BtoH/Electron_IdIso_IsoLt0p1_eff.root', 'MC', 'e_idiso0p1_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_IdIso_IsoLt0p1_eff.root', 'Data', 'e_idiso0p1_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_IdIso_IsoLt0p15_eff.root', 'MC', 'e_idiso0p15_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_IdIso_IsoLt0p15_eff.root', 'Data', 'e_idiso0p15_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_antiisolated_0p05to0p15_IdIso_eff.root', 'MC', 'e_idiso_aiso0p05to0p15_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_antiisolated_0p05to0p15_IdIso_eff.root', 'Data', 'e_idiso_aiso0p05to0p15_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_antiisolated_0p10to0p20_IdIso_eff.root', 'MC', 'e_idiso_aiso0p1to0p2_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_antiisolated_0p10to0p20_IdIso_eff.root', 'Data', 'e_idiso_aiso0p1to0p2_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_IdIso_antiisolated_Iso0p1to0p3_eff.root', 'MC', 'e_idiso_aiso0p1to0p3_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_IdIso_antiisolated_Iso0p1to0p3_eff.root', 'Data', 'e_idiso_aiso0p1to0p3_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_eff.root', 'MC', 'e_trgEle24_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_eff.root', 'Data', 'e_trgEle24_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_antiisolated_Iso0p05to0p15_eff_rb.root', 'MC', 'e_trgEle24_aiso0p05to0p15_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_antiisolated_Iso0p05to0p15_eff_rb.root', 'Data', 'e_trgEle24_aiso0p05to0p15_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_antiisolated_Iso0p1to0p2_eff_rb.root', 'MC', 'e_trgEle24_aiso0p1to0p2_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_antiisolated_Iso0p1to0p2_eff_rb.root', 'Data', 'e_trgEle24_aiso0p1to0p2_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_antiisolated_Iso0p1to0p3_eff_rb.root', 'MC', 'e_trgEle24_aiso0p1to0p3_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele24_antiisolated_Iso0p1to0p3_eff_rb.root', 'Data', 'e_trgEle24_aiso0p1to0p3_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_eff.root', 'MC', 'e_trgEle25eta2p1WPTight_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_eff.root', 'Data', 'e_trgEle25eta2p1WPTight_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_antiisolated_Iso0p05to0p15_eff_rb.root', 'MC', 'e_trgEle25eta2p1WPTight_aiso0p05to0p15_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_antiisolated_Iso0p05to0p15_eff_rb.root', 'Data', 'e_trgEle25eta2p1WPTight_aiso0p05to0p15_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_antiisolated_Iso0p1to0p2_eff_rb.root', 'MC', 'e_trgEle25eta2p1WPTight_aiso0p1to0p2_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_antiisolated_Iso0p1to0p2_eff_rb.root', 'Data', 'e_trgEle25eta2p1WPTight_aiso0p1to0p2_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_antiisolated_Iso0p1to0p3_eff_rb.root', 'MC', 'e_trgEle25eta2p1WPTight_aiso0p1to0p3_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele25WPTight_antiisolated_Iso0p1to0p3_eff_rb.root', 'Data', 'e_trgEle25eta2p1WPTight_aiso0p1to0p3_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele12leg_eff.root', 'MC', 'e_trgEle12leg_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele12leg_eff.root', 'Data', 'e_trgEle12leg_desy_data'),
(loc+'/Electron/Run2016BtoH/Electron_Ele23leg_eff.root', 'MC', 'e_trgEle23leg_desy_mc'),
(loc+'/Electron/Run2016BtoH/Electron_Ele23leg_eff.root', 'Data', 'e_trgEle23leg_desy_data')
]
for task in desyHistsToWrap:
wsptools.SafeWrapHist(w, ['e_pt', 'expr::e_abs_eta("TMath::Abs(@0)",e_eta[0])'],
wsptools.ProcessDESYLeptonSFs(task[0], task[1], task[2]), name=task[2])
for t in ['idiso0p10_KITbins_desy', 'idiso0p1_desy', 'idiso0p15_desy', 'idiso_aiso0p05to0p15_desy', 'idiso_aiso0p1to0p2_desy', 'idiso_aiso0p1to0p3_desy', 'trgEle24_desy', 'trgEle24_aiso0p05to0p15_desy', 'trgEle24_aiso0p1to0p2_desy', 'trgEle24_aiso0p1to0p3_desy', 'trgEle25eta2p1WPTight_desy', 'trgEle25eta2p1WPTight_aiso0p05to0p15_desy', 'trgEle25eta2p1WPTight_aiso0p1to0p2_desy', 'trgEle25eta2p1WPTight_aiso0p1to0p3_desy', 'trgEle25eta2p1WPTight_KITbins_desy', 'trgEle12leg_desy', 'trgEle23leg_desy']:
w.factory('expr::e_%s_ratio("@0/@1", e_%s_data, e_%s_mc)' % (t, t, t))
### Hadronic tau trigger efficiencies
with open('inputs/triggerSF-Moriond17/di-tau/fitresults_tt_moriond2017.json') as jsonfile:
pars = json.load(jsonfile)
for tautype in ['genuine', 'fake']:
for iso in ['VLooseIso','LooseIso','MediumIso','TightIso','VTightIso','VVTightIso']:
for dm in ['dm0', 'dm1', 'dm10']:
label = '%s_%s_%s' % (tautype, iso, dm)
x = pars['data_%s' % (label)]
w.factory('CrystalBallEfficiency::t_%s_tt_data(t_pt[0],%g,%g,%g,%g,%g)' % (
label, x['m_{0}'], x['sigma'], x['alpha'], x['n'], x['norm']
))
x = pars['mc_%s' % (label)]
w.factory('CrystalBallEfficiency::t_%s_tt_mc(t_pt[0],%g,%g,%g,%g,%g)' % (
label, x['m_{0}'], x['sigma'], x['alpha'], x['n'], x['norm']
))
label = '%s_%s' % (tautype, iso)
wsptools.MakeBinnedCategoryFuncMap(w, 't_dm', [-0.5, 0.5, 9.5, 10.5],
't_%s_tt_data' % label, ['t_%s_dm0_tt_data' % label, 't_%s_dm1_tt_data' % label, 't_%s_dm10_tt_data' % label])
wsptools.MakeBinnedCategoryFuncMap(w, 't_dm', [-0.5, 0.5, 9.5, 10.5],
't_%s_tt_mc' % label, ['t_%s_dm0_tt_mc' % label, 't_%s_dm1_tt_mc' % label, 't_%s_dm10_tt_mc' % label])
w.factory('expr::t_%s_tt_ratio("@0/@1", t_%s_tt_data, t_%s_tt_mc)' % (label, label, label))
interpOrder = 1
tau_tt_file = ROOT.TFile('inputs/tauleg_of_di_tau_real_taus_skim_v2.root')
tau_tt_file_mc = ROOT.TFile('inputs/tauleg_of_di_tau_real_taus_skim_mc_v2.root')
prefix = {
'genuine': 'lowmt_zmass_sub',
'fake': 'highmt_os'
}
for tautype in ['genuine', 'fake']:
for iso in ['TightIso']:
for dm in ['dm0', 'dm1', 'dm10']:
label = 'binned_%s_%s_%s' % (tautype, iso, dm)
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_tt_file.Get('%s_%s_%s_HLT_MediumIso35_L1iso30/tau_pt' % (prefix[tautype], iso, dm))), name='t_%s_tt_data' % label)
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_tt_file_mc.Get('%s_%s_%s_HLT_MediumIso35_L1iso30/tau_pt' % (prefix[tautype], iso, dm))), name='t_%s_tt_mc' % label)
w.function('t_%s_tt_data' % label).setInterpolationOrder(interpOrder)
w.function('t_%s_tt_mc' % label).setInterpolationOrder(interpOrder)
label = 'binned_%s_%s' % (tautype, iso)
wsptools.MakeBinnedCategoryFuncMap(w, 't_dm', [-0.5, 0.5, 9.5, 10.5],
't_%s_tt_data' % label, ['t_%s_dm0_tt_data' % label, 't_%s_dm1_tt_data' % label, 't_%s_dm10_tt_data' % label])
wsptools.MakeBinnedCategoryFuncMap(w, 't_dm', [-0.5, 0.5, 9.5, 10.5],
't_%s_tt_mc' % label, ['t_%s_dm0_tt_mc' % label, 't_%s_dm1_tt_mc' % label, 't_%s_dm10_tt_mc' % label])
w.factory('expr::t_%s_tt_ratio("@0/@1", t_%s_tt_data, t_%s_tt_mc)' % (label, label, label))
tau_mt_file = ROOT.TFile('inputs/triggerSF-Moriond17/mu-tau/trigger_sf_mt.root')
for tautype in ['genuine', 'fake']:
for iso in ['NoIso',
'VLooseIso',
'LooseIso',
'MediumIso',
'TightIso',
'VTightIso',
'VVTightIso']:
for region in ['barrel', 'endcap']:
label = '%s_%s_%s' % (tautype, region, iso)
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_mt_file.Get('data_%s' % label)), name='t_%s_mt_data' % label)
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_mt_file.Get('mc_%s' % label)), name='t_%s_mt_mc' % label)
w.function('t_%s_mt_data' % label).setInterpolationOrder(interpOrder)
w.function('t_%s_mt_mc' % label).setInterpolationOrder(interpOrder)
w.factory('expr::t_%s_mt_ratio("@0/@1", t_%s_mt_data, t_%s_mt_mc)' % (label, label, label))
w.factory('expr::t_%s_%s_mt_ratio("TMath::Abs(@0) < 1.5 ? @1 : @2", t_eta[0], t_%s_barrel_%s_mt_ratio, t_%s_endcap_%s_mt_ratio)' %
(tautype, iso, tautype, iso, tautype, iso))
w.factory('expr::t_%s_%s_mt_data("TMath::Abs(@0) < 1.5 ? @1 : @2", t_eta[0], t_%s_barrel_%s_mt_data, t_%s_endcap_%s_mt_data)' %
(tautype, iso, tautype, iso, tautype, iso))
w.factory('expr::t_%s_%s_mt_mc("TMath::Abs(@0) < 1.5 ? @1 : @2", t_eta[0], t_%s_barrel_%s_mt_mc, t_%s_endcap_%s_mt_mc)' %
(tautype, iso, tautype, iso, tautype, iso))
tau_mt_file.Close()
tau_et_file = ROOT.TFile('inputs/triggerSF-Moriond17/ele-tau/trigger_sf_et.root')
for tautype in ['genuine', 'fake']:
for iso in ['NoIso',
'VLooseIso',
'LooseIso',
'MediumIso',
'TightIso',
'VTightIso',
'VVTightIso']:
for region in ['barrel', 'endcap']:
label = '%s_%s_%s' % (tautype, region, iso)
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_et_file.Get('data_%s_dm0' % label)), name='t_%s_dm0_et_data' % label)
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_et_file.Get('data_%s_dm1' % label)), name='t_%s_dm1_et_data' % label)
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_et_file.Get('data_%s_dm10' % label)), name='t_%s_dm10_et_data' % label)
wsptools.MakeBinnedCategoryFuncMap(w, 't_dm', [-0.5, 0.5, 9.5, 10.5],
't_%s_et_data' % label, ['t_%s_dm0_et_data' % label, 't_%s_dm1_et_data' % label, 't_%s_dm10_et_data' % label])
wsptools.SafeWrapHist(w, ['t_pt'], wsptools.TGraphAsymmErrorsToTH1DForTaus(
tau_et_file.Get('mc_%s' % label)), name='t_%s_et_mc' % label)
w.function('t_%s_dm0_et_data' % label).setInterpolationOrder(interpOrder)
w.function('t_%s_dm1_et_data' % label).setInterpolationOrder(interpOrder)
w.function('t_%s_dm10_et_data' % label).setInterpolationOrder(interpOrder)
w.function('t_%s_et_mc' % label).setInterpolationOrder(interpOrder)
w.factory('expr::t_%s_et_ratio("@0/@1", t_%s_et_data, t_%s_et_mc)' % (label, label, label))
w.factory('expr::t_%s_%s_et_data("TMath::Abs(@0) < 1.5 ? @1 : @2", t_eta[0], t_%s_barrel_%s_et_data, t_%s_endcap_%s_et_data)' %
(tautype, iso, tautype, iso, tautype, iso))
w.factory('expr::t_%s_%s_et_mc("TMath::Abs(@0) < 1.5 ? @1 : @2", t_eta[0], t_%s_barrel_%s_et_mc, t_%s_endcap_%s_et_mc)' %
(tautype, iso, tautype, iso, tautype, iso))
w.factory('expr::t_%s_%s_et_ratio("TMath::Abs(@0) < 1.5 ? @1 : @2", t_eta[0], t_%s_barrel_%s_et_ratio, t_%s_endcap_%s_et_ratio)' %
(tautype, iso, tautype, iso, tautype, iso))
tau_et_file.Close()
w.importClassCode('CrystalBallEfficiency')
w.Print()
w.writeToFile('htt_scalefactors_sm_moriond_v2.root')
w.Delete()
fin = ROOT.TFile('htt_scalefactors_sm_moriond_v2.root')
w = fin.Get('w')
taus = [
(50.0303226283 , -0.690436537219, 10),
(59.5032264387 , -1.95157183364 , 0),
(43.1410575009 , 0.801236923794, 1),
(35.2404971103 , 1.89180734956 , 0),
(45.5487299326 , -1.33507357888 , 1),
(49.3098431225 , -0.55660978639 , 1),
(24.3615004894 , 0.786721853764, 1),
(59.8846279899 , -0.132008199188, 0),
(30.2513219915 , -1.56642180495 , 10),
(31.4383629152 , 1.61171893841 , 1),
(400.4383629152 , 1.61171893841 , 1),
(500.4383629152 , 1.61171893841 , 1),
(10000.4383629152 , 1.61171893841 , 1),
]
test_func1 = w.function("t_fake_VLooseIso_et_ratio").functor(ROOT.RooArgList(w.argSet("t_pt,t_eta,t_dm")))
test_func2 = w.function("t_fake_VLooseIso_et_data").functor(ROOT.RooArgList(w.argSet("t_pt,t_eta,t_dm")))
test_func3 = w.function("t_fake_VLooseIso_et_mc").functor(ROOT.RooArgList(w.argSet("t_pt,t_eta")))
# In the event loop need to pass an array of the argument:
for tau in taus:
args = array('d', [tau[0], tau[1], tau[2]])
print '%10.8f %10.8f %10.8f' % (test_func2.eval(args), test_func3.eval(array('d', [tau[0], tau[1]])), test_func1.eval(args))