Пример #1
0
 def update(self,_) :
     csv = self.source[self.leaf]
     if self.source['isRealData'] or not self.activated:
         self.value = csv
         return
     iB = self.source[self.IndicesGenB]
     self.value = utils.vector( [ self.funcsBN[0 if i in iB else 1].Eval(c) for i,c in enumerate(csv) ] )
Пример #2
0
 def update(self,_) :
     jets = self.source[self.p4jet]
     iLep = next(iter(self.source[self.indices]), None )
     lep =  self.source[self.p4lep][iLep] if iLep>None else None
     self.value = utils.vector()
     for iJet in range(len(jets)) :
         jet = jets[iJet]
         self.value.push_back( self.jes( next( j if j.M()>0 else utils.LorentzV(1,jet.eta(),jet.phi(),0) for j in [jet - lep])
                                         if lep and 0.5>r.Math.VectorUtil.DeltaR(jet,lep) else
                                         jet ) )
Пример #3
0
 def update(self, _):
     csv = self.source[self.leaf]
     if self.source['isRealData'] or not self.activated:
         self.value = csv
         return
     iB = self.source[self.IndicesGenB]
     self.value = utils.vector([
         self.funcsBN[0 if i in iB else 1].Eval(c)
         for i, c in enumerate(csv)
     ])
Пример #4
0
    def __init__(self,xcjets = None, applyResidualCorrectionsToData = None,
                 gamma    = None, gammaDR    = 0,
                 electron = None, electronDR = 0,
                 muon     = None, muonDR     = 0,
                 correctForMuons = None,
                 jesAbs = 1,
                 jesRel = 0 ) :
        self.value = utils.vector()
        self.jetP4Source = "CorrectedP4".join(xcjets)[2:]
        if applyResidualCorrectionsToData : print "WARNING: you are applying Spring10 Residual corrections to data!"

        for item in ["xcjets", "applyResidualCorrectionsToData", "correctForMuons", "jesAbs", "jesRel"] :
            setattr(self, item, eval(item))

        self.other = dict( [ (i,(eval(i),eval(i+"DR"))) for i in ["gamma","electron","muon"]] )
        self.resCorr = ("%sResidualCorrectionsFromFile%s"%self.xcjets)
        self.moreName = "; ".join(["%s%sDR<%.2f"%(v[0]+(v[1],)) for v in filter(lambda v: v[0], self.other.values())])
        if jesAbs!=1.0 or jesRel!=0.0:
            self.moreName2 += "jes corr: %.2f*(1+%.2f|eta|)"%(jesAbs,jesRel)
Пример #5
0
    def update(self,ignored) :
        jetP4s = self.source[self.jetP4Source]
        killed = self.source["%sIndicesKilled%s"%self.xcjets]
        nMuonsMatched = self.source["%sNMuonsMatched%s"%self.xcjets]
        matchedMuons = []

        self.value = utils.vector()
        for iJet in range(len(jetP4s)) :
            self.value.push_back(self.jes(jetP4s[iJet]))
            
            if self.matchesIn("gamma",self.value[iJet]) \
            or self.matchesIn("electron",self.value[iJet]) :
                killed.add(iJet)
                continue

            for p4 in self.matchesIn("muon",self.value[iJet], exitEarly=False, indicesStr="%sIndicesNonIso%s") :
                matchedMuons.append(p4)
                nMuonsMatched[iJet] += 1
                if self.correctForMuons: self.value[iJet] += p4

        if self.other["muon"][0] :
            nonisomu = self.source["%sIndicesNonIso%s"%self.other["muon"][0]]
            self.source["crock"]["%s%sNonIsoMuonsUniquelyMatched"%self.xcjets]= (len(set(matchedMuons)) == len(nonisomu) == len(matchedMuons))