Exemple #1
0
def getGoodJets(c, crosscleanobjects, jermode=options.jermode, jesmode=options.jesmode):
  nSoftJets = getVarValue(c, 'nsoftjets')   # jet.pt() > 10.
  res = []
  bres = []
  ht = 0.
  nbtags = 0
  met_dx = 0.
  met_dy = 0.
  if jesmode.lower()!="none":
    if jesmode.lower()=='up':
      sign=+1
    if jesmode.lower()=='down':
      sign=-1
    delta_met_x_unclustered = getVarValue(c, 'deltaMETxUnclustered')
    delta_met_y_unclustered = getVarValue(c, 'deltaMETyUnclustered')
    met_dx+=0.1*sign*delta_met_x_unclustered
    met_dy+=0.1*sign*delta_met_y_unclustered
  for i in range(int(nSoftJets)):
    eta = getVarValue(c, 'jetsEta', i)
    pt  = getVarValue(c, 'jetsPt', i)
    unc = getVarValue(c, 'jetsUnc', i)
    id =  getVarValue(c, 'jetsID', i)
    phi = getVarValue(c, 'jetsPhi', i)
#      if max([jet['muef'],jet['elef']]) > 0.6 : print jet
    if jermode.lower()!="none":
      c_jet = jerDifferenceScaleFactor(eta, jermode)
      sigmaMCRel = jerSigmaMCRel(pt, eta)
      sigma = sqrt(c_jet**2 - 1)*sigmaMCRel
      scale = random.gauss(1,sigma)
      met_dx+=(1-scale)*cos(phi)*pt
      met_dy+=(1-scale)*sin(phi)*pt
      pt*=scale
#      print i,'pt', pt, 'eta',eta, 'sigmaMCRel', sigmaMCRel, 'c_jet',c_jet,'sigma', sigma,'scale',scale, 'met_dx',met_dx,'met_dy',met_dy
    if jesmode.lower()!="none":
      scale = 1. + sign*unc
      met_dx+=(1-scale)*cos(phi)*pt
      met_dy+=(1-scale)*sin(phi)*pt
      pt*=scale
    if abs(eta) <= 4.5 and pt>40:
      parton = int(abs(getVarValue(c, 'jetsParton', i)))
      jet = {'pt':pt, 'eta':eta,'phi':phi, 'Pdg':parton,\
      'id':id,
      'chef':getVarValue(c, 'jetsChargedHadronEnergyFraction', i), 'nhef':getVarValue(c, 'jetsNeutralHadronEnergyFraction', i),\
      'ceef':getVarValue(c, 'jetsChargedEmEnergyFraction', i), 'neef':getVarValue(c, 'jetsNeutralEmEnergyFraction', i), 'id':id,\
      'hfhef':getVarValue(c, 'jetsHFHadronEnergyFraction', i), 'hfeef':getVarValue(c, 'jetsHFEMEnergyFraction', i),\
      'muef':getVarValue(c, 'jetsMuonEnergyFraction', i), 'elef':getVarValue(c, 'jetsElectronEnergyFraction', i), 'phef':getVarValue(c, 'jetsPhotonEnergyFraction', i),\
      'jetCutBasedPUJetIDFlag':getVarValue(c, 'jetsCutBasedPUJetIDFlag', i),'jetMET53XPUJetIDFlag':getVarValue(c, 'jetsMET53XPUJetIDFlag', i),'jetFull53XPUJetIDFlag':getVarValue(c, 'jetsFull53XPUJetIDFlag', i), 
      'btag': getVarValue(c, 'jetsBtag', i), 'unc': unc 
      }
      isolated = True
      for obj in crosscleanobjects:   #Jet cross-cleaning
        if deltaR(jet, obj) < 0.3:# and  obj['relIso']< relIsoCleaningRequ: #(obj['pt']/jet['pt']) > 0.4:  
          isolated = False
#          print "Cleaned", 'deltaR', deltaR(jet, obj), 'maxfrac', max([jet['muef'],jet['elef']]), 'pt:jet/obj', jet['pt'], obj['pt'], "relIso",  obj['relIso'], 'btag',getVarValue(c, 'jetsBtag', i), "parton", parton
  #          print 'Not this one!', jet, obj, deltaR(jet, obj)
          break
      jet['isolated'] = isolated
      res.append(jet)
  res  = sorted(res,  key=lambda k: -k['pt'])
  return {'jets':res,'met_dx':met_dx, 'met_dy':met_dy}
Exemple #2
0
def getGoodJets(c, crosscleanobjects=[]):
  nSoftJets = getVarValue(c, 'nsoftjets')   # jet.pt() > 10.
  res = []
  bres = []
  ht = 0.
  nbtags = 0
  for i in range(int(nSoftJets)):
    eta = getVarValue(c, 'jetsEta', i)
    pt  = getVarValue(c, 'jetsPt', i)
    if abs(eta) <= 4.5:
      unc = getVarValue(c, 'jetsUnc', i)
      id =  getVarValue(c, 'jetsID', i)
      phi = getVarValue(c, 'jetsPhi', i)
  #      if max([jet['muef'],jet['elef']]) > 0.6 : print jet
      if pt>30:
        parton = int(abs(getVarValue(c, 'jetsParton', i)))
        jet = {'pt':pt, 'eta':eta,'phi':phi, 'Pdg':parton,\
        'id':id,
        'chef':getVarValue(c, 'jetsChargedHadronEnergyFraction', i), 'nhef':getVarValue(c, 'jetsNeutralHadronEnergyFraction', i),\
        'ceef':getVarValue(c, 'jetsChargedEmEnergyFraction', i), 'neef':getVarValue(c, 'jetsNeutralEmEnergyFraction', i), 'id':id,\
        'hfhef':getVarValue(c, 'jetsHFHadronEnergyFraction', i), 'hfeef':getVarValue(c, 'jetsHFEMEnergyFraction', i),\
        'muef':getVarValue(c, 'jetsMuonEnergyFraction', i), 'elef':getVarValue(c, 'jetsElectronEnergyFraction', i), 'phef':getVarValue(c, 'jetsPhotonEnergyFraction', i),\
#        'jetCutBasedPUJetIDFlag':getVarValue(c, 'jetsCutBasedPUJetIDFlag', i),'jetMET53XPUJetIDFlag':getVarValue(c, 'jetsMET53XPUJetIDFlag', i),'jetFull53XPUJetIDFlag':getVarValue(c, 'jetsFull53XPUJetIDFlag', i), 
        'btag': getVarValue(c, 'jetsBtag', i), 'unc': unc 
        }
        isolated = True
        for obj in crosscleanobjects:   #Jet cross-cleaning
          if deltaR(jet, obj) < 0.3:# and  obj['relIso']< relIsoCleaningRequ: #(obj['pt']/jet['pt']) > 0.4:  
            isolated = False
  #          print "Cleaned", 'deltaR', deltaR(jet, obj), 'maxfrac', max([jet['muef'],jet['elef']]), 'pt:jet/obj', jet['pt'], obj['pt'], "relIso",  obj['relIso'], 'btag',getVarValue(c, 'jetsBtag', i), "parton", parton
    #          print 'Not this one!', jet, obj, deltaR(jet, obj)
            break
        jet['isolated'] = isolated
        res.append(jet)
  res  = sorted(res,  key=lambda k: -k['pt'])
  return {'jets':res}#,'met_dx':met_dx, 'met_dy':met_dy}
Exemple #3
0
def getGoodJets(c,
                crosscleanobjects,
                jermode=options.jermode,
                jesmode=options.jesmode):
    nSoftJets = getVarValue(c, 'nsoftjets')  # jet.pt() > 10.
    res = []
    bres = []
    ht = 0.
    nbtags = 0
    met_dx = 0.
    met_dy = 0.
    if jesmode.lower() != "none":
        if jesmode.lower() == 'up':
            sign = +1
        if jesmode.lower() == 'down':
            sign = -1
        delta_met_x_unclustered = getVarValue(c, 'deltaMETxUnclustered')
        delta_met_y_unclustered = getVarValue(c, 'deltaMETyUnclustered')
        met_dx += 0.1 * sign * delta_met_x_unclustered
        met_dy += 0.1 * sign * delta_met_y_unclustered
    for i in range(int(nSoftJets)):
        eta = getVarValue(c, 'jetsEta', i)
        pt = getVarValue(c, 'jetsPt', i)
        unc = getVarValue(c, 'jetsUnc', i)
        id = getVarValue(c, 'jetsID', i)
        phi = getVarValue(c, 'jetsPhi', i)
        #      if max([jet['muef'],jet['elef']]) > 0.6 : print jet
        if jermode.lower() != "none":
            c_jet = jerDifferenceScaleFactor(eta, jermode)
            sigmaMCRel = jerSigmaMCRel(pt, eta)
            sigma = sqrt(c_jet**2 - 1) * sigmaMCRel
            scale = random.gauss(1, sigma)
            met_dx += (1 - scale) * cos(phi) * pt
            met_dy += (1 - scale) * sin(phi) * pt
            pt *= scale
#      print i,'pt', pt, 'eta',eta, 'sigmaMCRel', sigmaMCRel, 'c_jet',c_jet,'sigma', sigma,'scale',scale, 'met_dx',met_dx,'met_dy',met_dy
        if jesmode.lower() != "none":
            scale = 1. + sign * unc
            met_dx += (1 - scale) * cos(phi) * pt
            met_dy += (1 - scale) * sin(phi) * pt
            pt *= scale
        if abs(eta) <= 4.5 and pt > 40:
            parton = int(abs(getVarValue(c, 'jetsParton', i)))
            jet = {'pt':pt, 'eta':eta,'phi':phi, 'Pdg':parton,\
            'id':id,
            'chef':getVarValue(c, 'jetsChargedHadronEnergyFraction', i), 'nhef':getVarValue(c, 'jetsNeutralHadronEnergyFraction', i),\
            'ceef':getVarValue(c, 'jetsChargedEmEnergyFraction', i), 'neef':getVarValue(c, 'jetsNeutralEmEnergyFraction', i), 'id':id,\
            'hfhef':getVarValue(c, 'jetsHFHadronEnergyFraction', i), 'hfeef':getVarValue(c, 'jetsHFEMEnergyFraction', i),\
            'muef':getVarValue(c, 'jetsMuonEnergyFraction', i), 'elef':getVarValue(c, 'jetsElectronEnergyFraction', i), 'phef':getVarValue(c, 'jetsPhotonEnergyFraction', i),\
            'jetCutBasedPUJetIDFlag':getVarValue(c, 'jetsCutBasedPUJetIDFlag', i),'jetMET53XPUJetIDFlag':getVarValue(c, 'jetsMET53XPUJetIDFlag', i),'jetFull53XPUJetIDFlag':getVarValue(c, 'jetsFull53XPUJetIDFlag', i),
            'btag': getVarValue(c, 'jetsBtag', i), 'unc': unc
            }
            isolated = True
            for obj in crosscleanobjects:  #Jet cross-cleaning
                if deltaR(
                        jet, obj
                ) < 0.3:  # and  obj['relIso']< relIsoCleaningRequ: #(obj['pt']/jet['pt']) > 0.4:
                    isolated = False
                    #          print "Cleaned", 'deltaR', deltaR(jet, obj), 'maxfrac', max([jet['muef'],jet['elef']]), 'pt:jet/obj', jet['pt'], obj['pt'], "relIso",  obj['relIso'], 'btag',getVarValue(c, 'jetsBtag', i), "parton", parton
                    #          print 'Not this one!', jet, obj, deltaR(jet, obj)
                    break
            jet['isolated'] = isolated
            res.append(jet)
    res = sorted(res, key=lambda k: -k['pt'])
    return {'jets': res, 'met_dx': met_dx, 'met_dy': met_dy}