示例#1
0
    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
示例#2
0
 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
示例#3
0
    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
示例#5
0
 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
示例#6
0
    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
示例#7
0
    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
示例#8
0
 def analyze(self, event):
     writeOutput(self, self.runIt(event))
     return True
示例#9
0
 def analyze(self, event):
     writeOutput(self, self.run(event, NanoAODCollection, "MET"))
     return True
示例#10
0
 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