예제 #1
0
    def buildDiLeptonsSingle(self, leptons, event):
        '''
        '''
        # RIC: patch to adapt it to the di-tau case. Need to talk to Jan
        di_objects = []

        if hasattr(event, 'calibratedTaus'):
            taus = event.calibratedTaus
        else:
            taus = self.handles['taus'].product()

        if hasattr(event, 'calibratedPfMet'):
            met = event.calibratedPfMet
        else:
            met = self.handles['pfMET'].product()[0]

        for leg1 in taus:
            for leg2 in taus:
                if leg1 != leg2:
                    di_tau = DirectDiTau(Tau(leg1), Tau(leg2), met)
                    di_tau.leg2().associatedVertex = event.goodVertices[0]
                    di_tau.leg1().associatedVertex = event.goodVertices[0]
                    di_tau.mvaMetSig = None
                    di_objects.append(di_tau)
        return di_objects
예제 #2
0
    def buildDiLeptonsSingle(self, leptons, event):
        di_leptons = []
        met = self.handles['met'].product()[0]
        for pat_ele in leptons:
            ele = self.__class__.LeptonClass(pat_ele)
            for pat_tau in self.handles['taus'].product():
                tau = Tau(pat_tau)
                di_tau = DirectDiTau(ele, tau, met)
                di_tau.leg2().associatedVertex = event.goodVertices[0]
                di_tau.leg1().associatedVertex = event.goodVertices[0]
                di_tau.leg1().rho = event.rho

                di_tau.mvaMetSig = None
                di_leptons.append(di_tau)
        return di_leptons
예제 #3
0
 def buildDiLeptonsSingle(self, leptons, event):
     di_objects = []
     for leg1 in leptons:
         for leg2 in leptons:
             if leg1 != leg2:
                 di_objects.append(DirectDiTau(leg1, leg2, self.handles['met'].product()[0]))
     return di_objects
예제 #4
0
 def buildDiLeptonsSingle(self, leptons, event):
   '''
   '''
   # RIC: patch to adapt it to the di-tau case. Need to talk to Jan
   di_objects = []
   taus = self.handles['taus'].product()
   met  = self.handles['met' ].product()[0]
   for leg1 in taus:
     for leg2 in taus:
       if leg1 != leg2:
         di_tau = DirectDiTau(Tau(leg1), Tau(leg2), met)
         di_tau.leg2().associatedVertex = event.goodVertices[0]
         di_tau.leg1().associatedVertex = event.goodVertices[0]
         di_tau.mvaMetSig = None
         di_objects.append(di_tau)
   return di_objects
예제 #5
0
    def buildDiLeptonsSingle(self, leptons, event):
        di_leptons = []
        met = self.handles['met'].product()[0]
        for pat_mu in leptons:
            muon = self.__class__.LeptonClass(pat_mu)
            for pat_tau in self.handles['taus'].product():
                tau = Tau(pat_tau)
                di_tau = DirectDiTau(muon, tau, met)
                di_tau.leg2().associatedVertex = event.goodVertices[0]
                di_tau.leg1().associatedVertex = event.goodVertices[0]
                if not self.testLeg1(di_tau.leg1(), 99999):
                    continue

                di_tau.mvaMetSig = None
                di_leptons.append(di_tau)
        return di_leptons
예제 #6
0
    def buildDiLeptonsSingle(self, leptons, event):
        di_leptons = []
        met = self.handles['pfMET'].product()[0]
        for pat_mu in leptons:
            muon = self.__class__.LeptonClass(pat_mu)
            for i_jet, pat_jet in enumerate(self.handles['jets'].product()):
                for pat_tau in self.handles['taus'].product():
                    # Get highest-pt tau in jet cone, if any
                    if deltaR2(pat_jet.eta(), pat_jet.phi(), pat_tau.eta(), pat_tau.phi()) < 0.25:
                        pat_jet.tau = Tau(pat_tau)
                        pat_jet.tau.associatedVertex = event.goodVertices[0]
                        break

                di_tau = DirectDiTau(muon, pat_jet, met)
                di_tau.leg2().associatedVertex = event.goodVertices[0]
                di_tau.leg2().nth_jet = i_jet
                di_tau.leg1().associatedVertex = event.goodVertices[0]
                di_tau.leg1().event = event.input.object()
                di_tau.leg2().event = event.input.object()
                if not self.testLeg1(di_tau.leg1(), 99999):
                    continue

                di_tau.mvaMetSig = None
                di_leptons.append(di_tau)
        return di_leptons
예제 #7
0
    def buildDiLeptonsSingle(self, leptons, event):
        di_leptons = []
        met = self.handles['pfMET'].product()[0]

#        import pdb; pdb.set_trace()
        for pat_e in leptons:
            electron = self.__class__.LeptonClass(pat_e)
            for pat_mu in self.handles['otherLeptons'].product():
                muon = self.__class__.OtherLeptonClass(pat_mu)
                di_tau = DirectDiTau(electron, muon, met)
                di_tau.leg1().associatedVertex = event.goodVertices[0]
                di_tau.leg2().associatedVertex = event.goodVertices[0]
                di_tau.leg1().event = event.input.object()
                di_tau.leg2().event = event.input.object()
                di_tau.leg1().rho = event.rho

                if not self.testLeg1(di_tau.leg1(), 99999):
                    continue

                di_tau.mvaMetSig = None
                di_leptons.append(di_tau)
        return di_leptons
    def buildDiLeptonsSingle(self, leptons, event):
        di_leptons = []
        met = event.pfmet
        for pat_mu in leptons:
            muon = self.__class__.LeptonClass(pat_mu)
            for pat_tau in self.handles['taus'].product():
                tau = Tau(pat_tau)
                di_tau = DirectDiTau(muon, tau, met)
                di_tau.leg2().associatedVertex = event.goodVertices[0]
                di_tau.leg1().associatedVertex = event.goodVertices[0]
                di_tau.leg1().event = event.input.object()
                di_tau.leg2().event = event.input.object()
                if not self.testLeg1(di_tau.leg1(), 99999):
                    continue

                di_tau.mvaMetSig = None
                di_leptons.append(di_tau)
        return di_leptons
예제 #9
0
    def buildDiLeptonsSingle(self, leptons, event):
        di_leptons = []
        met = self.handles['met'].product()[0]
        for i_1, pat_muon1 in enumerate(leptons):
            muon1 = self.__class__.LeptonClass(pat_muon1)
            for i_2, pat_muon2 in enumerate(leptons):
                # Keep only pairs with pT(muon1) > pT(muon2)
                if i_2 <= i_1:
                    continue

                muon2 = self.__class__.LeptonClass(pat_muon2)
                di_tau = DirectDiTau(muon1, muon2, met)
                di_tau.leg2().associatedVertex = event.goodVertices[0]
                di_tau.leg1().associatedVertex = event.goodVertices[0]
                di_tau.leg1().event = event.input.object()
                di_tau.leg2().event = event.input.object()
                if not self.testLeg1(di_tau.leg1(), 99999):
                    continue

                di_tau.mvaMetSig = None
                di_leptons.append(di_tau)
        return di_leptons
예제 #10
0
    def buildDiLeptonsSingle(self, leptons, event):
        di_leptons = []
        met = self.handles["met"].product()[0]

        #        import pdb; pdb.set_trace()
        for pat_e in leptons:
            electron = self.__class__.LeptonClass(pat_e)
            for pat_mu in self.handles["otherLeptons"].product():
                muon = self.__class__.OtherLeptonClass(pat_mu)
                di_tau = DirectDiTau(electron, muon, met)
                di_tau.leg1().associatedVertex = event.goodVertices[0]
                di_tau.leg2().associatedVertex = event.goodVertices[0]
                di_tau.leg1().rho = event.rho

                if not self.testLeg1(di_tau.leg1(), 99999):
                    continue

                di_tau.mvaMetSig = None
                di_leptons.append(di_tau)
        return di_leptons