def analyze(self, event): all_leps = [l for l in Collection(event,"LepGood")] nFO = getattr(event,"nLepFO"+self.inputlabel) chosen = getattr(event,"iLepFO"+self.inputlabel) leps = [all_leps[chosen[i]] for i in xrange(nFO)] if len(leps) < 2: return True ret = {} for var in self.systsJEC: ret['highestHjTagger%s'%self.systsJEC[var]] = -99 _var = var if not hasattr(event,"nJet25"+self.systsJEC[var]+self.inputlabel): _var = 0; jets = [j for j in Collection(event,"JetSel"+self.inputlabel)] jetptcut = 25 jets = filter(lambda x : getattr(x,'pt%s'%self.systsJEC[_var]) > jetptcut, jets) allVars = [] for j in jets: pseudoevent = emptyclass() setattr(pseudoevent, 'v1', min( deltaR(j, leps[0]), deltaR(j, leps[1]))) setattr(pseudoevent, 'v2', max( 0, j.btagDeepFlavB)) setattr(pseudoevent, 'v3', max( 0, j.qgl )) setattr(pseudoevent, 'v4', max( deltaR(j, leps[0]), deltaR(j, leps[1]) )) setattr(pseudoevent, 'v5', getattr(j,'pt%s'%self.systsJEC[_var])) allVars.append( self._MVA( pseudoevent ) ) del pseudoevent if len(allVars): ret['highestHjTagger%s'%self.systsJEC[var]] = max(allVars) writeOutput(self, ret) return True
def analyze(self, event): myvars = [ event.iLepFO_Recl[0], event.iLepFO_Recl[1], event.iLepFO_Recl[2] ] ret = [] for worker in self._MVAs: ret.extend([(x, y) for x, y in worker(event).iteritems()]) writeOutput(self, dict(ret)) return True
def analyze(self,event): myvars = [event.iLepFO_Recl[0],event.iLepFO_Recl[1],event.iLepFO_Recl[2]] ret = [] for worker in self._MVAs: name = worker.name if not hasattr(event,"nJet25_jerUp_Recl") and ('_jes' in name or '_jer' in name or '_uncl' in name): continue # using jer bc components wont change ret.extend( [(x,y) for x,y in worker(event).iteritems()]) writeOutput(self, dict(ret)) return True
def analyze(self, event): myvars = [ event.iLepFO_Recl[0], event.iLepFO_Recl[1], event.iLepFO_Recl[2] ] ret = [] for worker in self._MVAs: name = worker.name if not hasattr(event, "nJet25_jesDown_Recl") and ( '_jes' in name or '_jer' in name or '_uncl' in name): continue #if not ('_jes' in name or '_jer' in name or '_uncl' in name) and event.event == 259935: worker.debug=True ret.extend([(x, y) for x, y in worker(event).iteritems()]) #if not ('_jes' in name or '_jer' in name or '_uncl' in name) and event.event == 259935: worker.debug=False writeOutput(self, dict(ret)) return True
def analyze(self, event): myvars = [ event.iLepFO_Recl[0], event.iLepFO_Recl[1], event.iLepFO_Recl[2] ] ret = [] if self.fillInputs and self.inputHelper: for var in self.inputHelper: ret.append((var, self.inputHelper[var](event))) for worker in self._MVAs: name = worker.name if (not hasattr(event, "nJet25_jerUp_Recl") and not hasattr(event, "nJet25_jesBBEC1_yearDown_Recl") ) and ('_jes' in name or '_jer' in name or '_uncl' in name): continue # using jer bc components wont change ret.extend([(x, y) for x, y in worker(event).iteritems()]) writeOutput(self, dict(ret)) return True
def analyze(self, event): jets = [ j for j in Collection(event, self.jetcoll)] ret = {} for var in self.vars: res = 1 for jet in jets: if jet.pt<25: continue res *= getattr(jet,var) ret[var] = res if not self.isGroups: resCorrUp =0; resCorrDown=0; resUnCorrUp=0; resUnCorrDown=0; for corr in self.corrs: resCorrUp = (resCorrUp**2 + self.corrs[corr] *(ret['btagSF_shape_up_jes%s' %corr]-ret['btagSF_shape'])**2)**0.5 resCorrDown = (resCorrDown**2 + self.corrs[corr] *(ret['btagSF_shape_down_jes%s'%corr]-ret['btagSF_shape'])**2)**0.5 resUnCorrUp = (resUnCorrUp**2 + (1-self.corrs[corr])*(ret['btagSF_shape_up_jes%s' %corr]-ret['btagSF_shape'])**2)**0.5 resUnCorrDown = (resUnCorrDown**2 + (1-self.corrs[corr])*(ret['btagSF_shape_down_jes%s'%corr]-ret['btagSF_shape'])**2)**0.5 if self.corrs: for corr in self.corrs: ret.pop( 'btagSF_shape_up_jes%s'%corr) ret.pop( 'btagSF_shape_down_jes%s'%corr) ret['btagSF_shape_up_jesCorr'] = resCorrUp + ret['btagSF_shape'] ret['btagSF_shape_down_jesCorr'] = -resCorrDown + ret['btagSF_shape'] ret['btagSF_shape_up_jesUnCorr'] = resUnCorrUp + ret['btagSF_shape'] ret['btagSF_shape_down_jesUnCorr'] = -resUnCorrDown + ret['btagSF_shape'] else: for corr in self.corrs: ret['btagSF_shape_grouped_up_jes%s'%corr] =0; ret['btagSF_shape_grouped_down_jes%s'%corr] =0; for comp in self.corrs[corr]: if comp == "RelativeSample": continue # not here ret['btagSF_shape_grouped_up_jes%s'%corr] = ( ret['btagSF_shape_grouped_up_jes%s'%corr]**2 + (ret['btagSF_shape_up_jes%s' %comp]-ret['btagSF_shape'])**2)**0.5 ret['btagSF_shape_grouped_down_jes%s'%corr] = ( ret['btagSF_shape_grouped_down_jes%s'%corr]**2 + (ret['btagSF_shape_down_jes%s' %comp]-ret['btagSF_shape'])**2)**0.5 ret.pop( 'btagSF_shape_up_jes%s'%comp) ret.pop( 'btagSF_shape_down_jes%s'%comp) ret['btagSF_shape_up_jes%s'%corr] = ret['btagSF_shape_grouped_up_jes%s'%corr] + ret['btagSF_shape'] ret['btagSF_shape_down_jes%s'%corr] = -ret['btagSF_shape_grouped_down_jes%s'%corr] + ret['btagSF_shape'] ret.pop( 'btagSF_shape_grouped_up_jes%s'%corr ) ret.pop( 'btagSF_shape_grouped_down_jes%s'%corr ) writeOutput(self, ret) return True
def analyze(self, event): jets = [j for j in Collection(event, self.jetcoll)] ret = {} for var in self.vars: res = 1 for jet in jets: res *= getattr(jet, var) ret[var] = res resCorrUp = 0 resCorrDown = 0 resUnCorrUp = 0 resUnCorrDown = 0 for corr in self.corrs: resCorrUp = ( resCorrUp**2 + self.corrs[corr] * (ret['btagSF_shape_up_jes%s' % corr] - ret['btagSF_shape'])**2 )**0.5 resCorrDown = (resCorrDown**2 + self.corrs[corr] * (ret['btagSF_shape_down_jes%s' % corr] - ret['btagSF_shape'])**2)**0.5 resUnCorrUp = ( resCorrUp**2 + (1 - self.corrs[corr]) * (ret['btagSF_shape_up_jes%s' % corr] - ret['btagSF_shape'])**2 )**0.5 resUnCorrDown = (resCorrDown**2 + (1 - self.corrs[corr]) * (ret['btagSF_shape_down_jes%s' % corr] - ret['btagSF_shape'])**2)**0.5 if self.corrs: for corr in self.corrs: ret.pop('btagSF_shape_up_jes%s' % corr) ret.pop('btagSF_shape_down_jes%s' % corr) ret['btagSF_shape_up_jesCorr'] = resCorrUp ret['btagSF_shape_down_jesCorr'] = resCorrDown ret['btagSF_shape_up_jesUnCorr'] = resUnCorrUp ret['btagSF_shape_down_jesUnCorr'] = resUnCorrDown writeOutput(self, ret) return True
def analyze(self, event): writeOutput(self, self.runIt(event)) return True
def analyze(self, event): writeOutput(self, self.run(event, NanoAODCollection, "MET")) return True
def analyze(self, event): myvars = [event.iLepFO_Recl[0],event.iLepFO_Recl[1],event.iLepFO_Recl[2]] writeOutput(self, dict([ (name, mva(event)) for name, mva in self._MVAs.iteritems()])) return True