예제 #1
0
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
예제 #2
0
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
예제 #3
0
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