@@ -39,7 +39,7 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
39
39
for evt in mytree
40
40
# ## initial_cut
41
41
cutflow_ptr = 0
42
- pusher! (dict[:CutFlow ], cutflow_ptr)
42
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
43
43
v_m_eta_orig, v_e_caloeta_orig = evt. v_m_eta, evt. v_e_caloeta
44
44
e_etamask = [abs (η) < 2.47 && (abs (η)< 1.37 || abs (η)> 1.52 ) for η in v_e_caloeta_orig]
45
45
m_etamask = [abs (η) < 2.5 for η in v_m_eta_orig]
@@ -48,7 +48,7 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
48
48
Nlep = length (v_l_pid)
49
49
Nlep != 4 && continue
50
50
cutflow_ptr += 1
51
- pusher! (dict[:CutFlow ], cutflow_ptr)
51
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
52
52
Nelec = count (e_etamask)
53
53
Nmuon = Nlep - Nelec
54
54
(; v_e_pt, v_e_eta, v_e_phi,
@@ -64,19 +64,19 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
64
64
Z_pair, W_pair, best_Z_mass = Find_Z_Pairs (v_l_pid, v_l_tlv)
65
65
isinf (best_Z_mass) && continue
66
66
cutflow_ptr += 1
67
- pusher! (dict[:CutFlow ], cutflow_ptr)
67
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
68
68
other_mass = mass (v_l_tlv[W_pair[1 ]] + v_l_tlv[W_pair[2 ]])
69
69
abs (best_Z_mass - Z_m) > 20 && continue
70
70
cutflow_ptr += 1
71
- pusher! (dict[:CutFlow ], cutflow_ptr)
71
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
72
72
mass_4l = mass (sum (v_l_tlv))
73
73
mass_4l < 0.0 && continue
74
74
cutflow_ptr += 1
75
- pusher! (dict[:CutFlow ], cutflow_ptr)
75
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
76
76
# ## end of initial_cut
77
77
! (evt. passTrig) && continue
78
78
cutflow_ptr += 1
79
- pusher! (dict[:CutFlow ], cutflow_ptr)
79
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
80
80
v_l_order = sortperm (v_l_tlv; by= pt, rev= true )
81
81
v_l_medium = @views Vcat (evt. v_e_LHMedium[e_etamask] , evt. v_m_medium[m_etamask]) # quality
82
82
@@ -92,7 +92,7 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
92
92
failed_PLTight = any (== (false ), v_l_PLTight[W_pair])
93
93
failed_PLTight && continue
94
94
cutflow_ptr += 1
95
- pusher! (dict[:CutFlow ], cutflow_ptr)
95
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
96
96
# end
97
97
(;
98
98
v_e_passIso_Loose_VarRad,
@@ -109,16 +109,15 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
109
109
)
110
110
for i in 1 : 2
111
111
# ## for Z leptons isolation: Loose(e) and Loose(mu)
112
- ( (abs (v_l_pid[Z_pair[i]]) == 11 ) && ! v_l_passIso[Z_pair[i]] ) && (pass_WWZ_cut = false )
113
- ( (abs (v_l_pid[Z_pair[i]]) == 13 ) && ! v_l_passIso[Z_pair[i]] ) && (pass_WWZ_cut = false )
112
+ ! v_l_passIso[Z_pair[i]] && (pass_WWZ_cut = false )
114
113
115
114
# ## for W leptons, require medium quality and PLIV tight
116
- ( ! v_l_medium[W_pair[i]] ) && (pass_WWZ_cut = false )
115
+ ! v_l_medium[W_pair[i]] && (pass_WWZ_cut = false )
117
116
end
118
117
119
118
! pass_WWZ_cut && continue
120
119
cutflow_ptr += 1
121
- pusher! (dict[:CutFlow ], cutflow_ptr)
120
+ if NN_hist pusher! (dict[:CutFlow ], cutflow_ptr) end
122
121
123
122
has_b = any (evt. v_j_btag77)
124
123
@@ -145,9 +144,6 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
145
144
:v_e_wgtReco , e_etamask; sfsys)
146
145
make_sfsys_wgt! (evt, wgt_dict,
147
146
:v_m_wgtTTVA , m_etamask; sfsys)
148
- # quality weights
149
- # v_l_wgtLoose = @views Vcat(evt.v_e_wgtLoose[e_etamask] , evt.v_m_wgtLoose[m_etamask]) # quality wgt
150
- # v_l_wgtMedium = @views Vcat(evt.v_e_wgtMedium[e_etamask], evt.v_m_wgtMedium[m_etamask]) # quality wgt
151
147
make_sfsys_wgt! (evt, wgt_dict,
152
148
:v_e_wgtLoose ,
153
149
Z_pair_in_e; pre_mask = e_etamask, sfsys)
@@ -160,8 +156,6 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
160
156
make_sfsys_wgt! (evt, wgt_dict,
161
157
:v_m_wgtMedium ,
162
158
W_pair_in_m; pre_mask = m_etamask, sfsys)
163
- # iso weights
164
- # v_l_wgtIso = @views Vcat(v_e_wgtIso_Loose_VarRad_LooseBLayer[e_etamask], v_m_wgtIso_PflowLoose_VarRad[m_etamask])
165
159
make_sfsys_wgt! (evt, wgt_dict,
166
160
:v_e_wgtIso_Loose_VarRad_LooseBLayer ,
167
161
Z_pair_in_e; pre_mask = e_etamask, sfsys)
@@ -239,9 +233,11 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
239
233
NN_score = model (BDT_input; fold = moded_event, region)
240
234
end
241
235
242
- is_SR = ! has_b
243
- is_ZZCR = sr_SF_inZ && MET < 10 && is_SR
244
- is_ttZCR = has_b
236
+ cr_ZZ = sr_SF_inZ && MET < 10 && ! has_b
237
+ cr_ttZ = has_b
238
+ if cr_ZZ || cr_ttZ
239
+ SR = - 1
240
+ end
245
241
246
242
if NN_hist && ! arrow_making
247
243
region_prefix = if sr_SF_inZ
@@ -255,11 +251,11 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
255
251
if k== :NOMINAL && shape_variation != " NOMINAL"
256
252
k = shape_variation
257
253
end
258
- if is_ZZCR
254
+ if cr_ZZ
259
255
pusher! (dict[Symbol (:ZZCR , :__Njet , :__ , k)], Njet, v)
260
- elseif is_ttZCR
256
+ elseif cr_ttZ
261
257
pusher! (dict[Symbol (:ttZCR , :__Njet , :__ , k)], Njet, v)
262
- elseif is_SR
258
+ elseif SR >= 0
263
259
cutflow_ptr += 1
264
260
pusher! (dict[:CutFlow ], cutflow_ptr)
265
261
pusher! (dict[Symbol (region_prefix, :__NN , :__ , k)], NN_score, v)
@@ -303,7 +299,7 @@ function main_looper(mytree, sumWeight, dict, pusher!, models,
303
299
jet_pt_2, jet_pt_3, jet_pt_4, jet_eta_1, jet_eta_2, jet_eta_3, jet_eta_4, jet_phi_1, jet_phi_2,
304
300
jet_phi_3, jet_phi_4, jet_m_1, jet_m_2, jet_m_3, jet_m_4, v_j_btagCont, v_j_btag60,
305
301
v_j_btag70, v_j_btag77, v_j_btag85, jet_btagCont_1, jet_btagCont_2, jet_btagCont_3, jet_btagCont_4, wgt, mcGenWgt,
306
- sr_SF_inZ, sr_SF_noZ, sr_DF, event
302
+ sr_SF_inZ, sr_SF_noZ, sr_DF, cr_ZZ, cr_ttZ, event
307
303
else
308
304
@fill_dict! dict wgt pusher! pt_1, pt_2, pt_3, pt_4, eta_1, eta_2,
309
305
eta_3, eta_4, mass_4l, Zcand_mass, other_mass, METSig, MET, HT, leptonic_HT, total_HT, SR,
0 commit comments