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}
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}
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}