def aux_btag_veto(tree, global_variables, sys_type=None): # Choose jet correction if sys_type == 'JEC_up': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JECUp[_j]/tree.Jet_corr[_j]' elif sys_type== 'JEC_down': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JECDown[_j]/tree.Jet_corr[_j]' elif sys_type== 'JER_up': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JERUp[_j]/tree.Jet_corr_JER[_j]' elif sys_type== 'JER_down': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JERDown[_j]/tree.Jet_corr_JER[_j]' else: jet_pt = 'tree.Jet_pt[_j]' # Search for max b tag starts here _max_btag_value = -999 # Find HC candidate HC_idx = global_variables['boost_HC_index'] if HC_idx == -1: return -1 HC_eta = tree.FatjetAK08ungroomed_eta[HC_idx] HC_phi = tree.FatjetAK08ungroomed_phi[HC_idx] for _j in xrange(tree.nJet): # Filter jets if ROOT.deltaR( HC_eta, HC_phi, tree.Jet_eta[_j], tree.Jet_phi[_j]) < 0.8: continue if abs(tree.Jet_eta[_j]) > 2.4: continue if tree.Jet_id[_j] <= 0: continue if tree.Jet_puId[_j] <= 0: continue if eval(jet_pt) < 20: continue _btag_value = tree.Jet_btagCSV[_j] if _btag_value > _max_btag_value: _max_btag_value = _btag_value # WP: L, veto on max b_tag AK04 outside HC if _max_btag_value > 0.5426: return 0 # Veto passed return 1
def aux_ctag_veto(tree, global_variables, sys_type=None): # Choose jet correction if sys_type == 'JEC_up': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JECUp[_j]/tree.Jet_corr[_j]' elif sys_type== 'JEC_down': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JECDown[_j]/tree.Jet_corr[_j]' elif sys_type== 'JER_up': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JERUp[_j]/tree.Jet_corr_JER[_j]' elif sys_type== 'JER_down': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JERDown[_j]/tree.Jet_corr_JER[_j]' else: jet_pt = 'tree.Jet_pt[_j]' # Find HC candidate HC_idx = global_variables['boost_HC_index'] if HC_idx == -1: return -1 HC_eta = tree.FatjetAK08ungroomed_eta[HC_idx] HC_phi = tree.FatjetAK08ungroomed_phi[HC_idx] for _j in xrange(tree.nJet): # Filter jets if ROOT.deltaR( HC_eta, HC_phi, tree.Jet_eta[_j], tree.Jet_phi[_j]) > 0.8: continue if abs(tree.Jet_eta[_j]) > 2.4: continue if tree.Jet_id[_j] <= 0: continue if tree.Jet_puId[_j] <= 0: continue if eval(jet_pt) < 20: continue # WP: L, there should be no jets passing c tag selection below if tree.Jet_ctagVsB[_j] > -0.17 and tree.Jet_ctagVsL[_j] > -0.48: return 0 # Veto passed return 1
def aux_n_add_jets(tree, global_variables, sys_type=None): # Choose jet correction if sys_type == 'JEC_up': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JECUp[_j]/tree.Jet_corr[_j]' elif sys_type== 'JEC_down': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JECDown[_j]/tree.Jet_corr[_j]' elif sys_type== 'JER_up': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JERUp[_j]/tree.Jet_corr_JER[_j]' elif sys_type== 'JER_down': jet_pt = 'tree.Jet_pt[_j]*tree.Jet_corr_JERDown[_j]/tree.Jet_corr_JER[_j]' else: jet_pt = 'tree.Jet_pt[_j]' # Find HC candidate HC_idx = global_variables['boost_HC_index'] if HC_idx == -1: return -1 HC_eta = tree.FatjetAK08ungroomed_eta[HC_idx] HC_phi = tree.FatjetAK08ungroomed_phi[HC_idx] counter = 0 for _j in xrange(tree.nJet): # Filter jets if abs(tree.Jet_eta[_j]) > 2.4: continue if tree.Jet_id[_j] <= 0: continue if tree.Jet_puId[_j] <= 0: continue dR_HCJ = ROOT.deltaR( HC_eta, HC_phi, tree.Jet_eta[_j], tree.Jet_phi[_j]) if dR_HCJ < 0.8: continue if eval(jet_pt) < 20: continue counter += 1 return counter