示例#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 __init__(self, diobject, iso='byIsolationMVArun2v1DBnewDMwLTraw'):
     super(TauTau, self).__init__(diobject)
     if super(TauTau, self).leg1().tauID(iso) > super(TauTau, self).leg2().tauID(iso):
         self.tau = Tau(super(TauTau, self).leg1())
         self.tau2 = Tau(super(TauTau, self).leg2())
     else:
         self.tau = Tau(super(TauTau, self).leg2())
         self.tau2 = Tau(super(TauTau, self).leg1())
     self.iso = iso
示例#3
0
文件: DiObject.py 项目: smdogra/mTop
 def __init__(self, diobject, iso='byIsolationMVArun2v1DBoldDMwLTraw'):
     super(TauTau, self).__init__(diobject)
     # if super(TauTau, self).leg1().tauID(iso) > super(TauTau, self).leg2().tauID(iso):
     if super(TauTau, self).leg1().pt() > super(TauTau, self).leg2().pt():
         self.tau = Tau(super(TauTau, self).leg1())
         self.tau2 = Tau(super(TauTau, self).leg2())
     else:
         self.tau = Tau(super(TauTau, self).leg2())
         self.tau2 = Tau(super(TauTau, self).leg1())
     self.iso = iso
     self.diobject.setP4(self.p4())
示例#4
0
 def FillLeg(self, leg, weight):
     dbetaFactor = 0.5
     self.h_pt.Fill(leg.pt(), weight)
     self.h_eta.Fill(leg.eta(), weight)
     self.h_iso.Fill(leg.relIso(), weight)
     self.h_iso_dbeta.Fill(leg.relIso(dbetaFactor), weight)
     self.h_iso_abs.Fill(leg.absIso(), weight)
     self.h_iso_abs_dbeta.Fill(leg.absIso(dbetaFactor), weight)
     self.h_iso_ch.Fill(leg.chargedHadronIso(), weight)
     self.h_iso_nh.Fill(leg.neutralHadronIso(), weight)
     self.h_iso_ph.Fill(leg.photonIso(), weight)
     if isTau(leg):
         tau = Tau(leg)
         self.h_eOverP.Fill(tau.calcEOverP(), weight)
         self.h_decMode.Fill(tau.decayMode(), weight)
    def buildDiLeptonsSingle(self, leptons, event):
        '''
        '''
        di_objects = []

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

        met = event.pfmet

        taus = [Tau(tau) for tau in taus]

        if getattr(self.cfg_ana, 'scaleTaus', False):
            for tau in taus:
                HTTGenAnalyzer.genMatch(event, tau, event.ptSelGentauleps,
                                        event.ptSelGenleps,
                                        event.ptSelGenSummary)
                HTTGenAnalyzer.attachGenStatusFlag(tau)
                self.scaleP4(tau, self.cfg_ana.tes_scale)

        for leg1 in taus:
            for leg2 in taus:
                if leg1 != leg2:
                    di_tau = DirectTauTau(leg1, leg2, 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()
                    di_tau.mvaMetSig = None
                    di_objects.append(di_tau)
        return di_objects
示例#6
0
class TauTau(DiTau):
    def __init__(self, diobject, iso='byIsolationMVArun2v1DBoldDMwLTraw'):
        super(TauTau, self).__init__(diobject)
        # if super(TauTau, self).leg1().tauID(iso) > super(TauTau, self).leg2().tauID(iso):
        if super(TauTau, self).leg1().pt() > super(TauTau, self).leg2().pt():
            self.tau = Tau(super(TauTau, self).leg1())
            self.tau2 = Tau(super(TauTau, self).leg2())
        else:
            self.tau = Tau(super(TauTau, self).leg2())
            self.tau2 = Tau(super(TauTau, self).leg1())
        self.iso = iso
        self.diobject.setP4(self.p4())

    def leg1(self):
        if self.tau.pt() > self.tau2.pt():
            return self.tau
        else:
            return self.tau2

    def leg2(self):
        if self.tau.pt() > self.tau2.pt():
            return self.tau2
        else:
            return self.tau
示例#7
0
文件: DiObject.py 项目: smdogra/mTop
 def __init__(self, diobject):
     super(TauElectron, self).__init__(diobject)
     self.tau = Tau(super(TauElectron, self).leg1())
     self.ele = Electron(super(TauElectron, self).leg2())
     self.diobject.setP4(self.p4())
示例#8
0
文件: DiObject.py 项目: smdogra/mTop
 def __init__(self, diobject):
     super(TauMuon, self).__init__(diobject)
     self.tau = Tau(super(TauMuon, self).leg1())
     self.mu = Muon(super(TauMuon, self).leg2())
     self.diobject.setP4(self.p4())
示例#9
0
    def process(self, event):
        '''
        '''

        self.readCollections(event.input)

        taus     = [Tau(tau) for tau in self.handles['taus'].product()]
        jets     = [Jet(jet) for jet in self.handles['jets'].product()]
        pfmet    = self.handles['pfMET'   ].product()[0]
        puppimet = self.handles['puppiMET'].product()[0]
        
        pairs = matchObjectCollection(taus, jets, 0.5 * 0.5)
        
#         import pdb ; pdb.set_trace()
        
        # associating a jet to each lepton
        for tau in taus:
            jet = pairs[tau]
            if jet is None:
                pass
            else:
                tau.jet = jet

        event.calibratedTaus = []
        
        for tau in taus:

            tau.associatedVertex = event.goodVertices[0]

            tau_p4_scale = 1.
            
            if tau.decayMode() in (0, 1, 10) and hasattr(tau, 'jet'):

                self.tauIsoBreakdown(tau)

                self.variables['tau_pt'                     ][0] = tau.pt()               
                self.variables['tau_eta'                    ][0] = tau.eta()              
                self.variables['tau_mass'                   ][0] = tau.mass()             
                self.variables['tau_decayMode'              ][0] = tau.decayMode()        

                self.variables['tau_charged_iso'            ][0] = tau.chargedPtSumIso    
                self.variables['tau_gamma_iso'              ][0] = tau.gammaPtSumIso      
                self.variables['tau_charged_sig'            ][0] = tau.chargedPtSumSignal 
                self.variables['tau_gamma_sig'              ][0] = tau.gammaPtSumSignal   

                self.variables['tau_jet_pt'                 ][0] = tau.jet.pt()           
                self.variables['tau_jet_mass'               ][0] = tau.jet.mass()         
                self.variables['tau_jet_nConstituents'      ][0] = tau.jet.nConstituents()
                self.variables['tau_jet_rawFactor'          ][0] = tau.jet.rawFactor()
                self.variables['tau_jet_chargedHadronEnergy'][0] = tau.jet.chargedHadronEnergy()      
                self.variables['tau_jet_neutralHadronEnergy'][0] = tau.jet.neutralHadronEnergy()      
                self.variables['tau_jet_neutralEmEnergy'    ][0] = tau.jet.neutralEmEnergy()    
                self.variables['tau_jet_chargedEmEnergy'    ][0] = tau.jet.chargedEmEnergy()          

                calibrated_tau_pt = self.reader.EvaluateRegression('BDTG')[0]
                tau_p4_scale = calibrated_tau_pt / tau.pt()

                pfmetP4    = pfmet   .p4()
                puppimetP4 = puppimet.p4()

                # remove pre-calibrated tau from met computation
                pfmetP4    += tau.p4()
                puppimetP4 += tau.p4()
                
                self.scaleP4(tau, tau_p4_scale)
                tau.ptScale = tau_p4_scale

                # include calibrated tau into the met computation
                pfmetP4    -= tau.p4()
                puppimetP4 -= tau.p4()
            
                pfmet   .setP4(pfmetP4   )
                puppimet.setP4(puppimetP4)
            
            event.calibratedTaus.append(tau)
        
        event.calibratedPfMet    = pfmet
        event.calibratedPuppiMet = puppimet

        return True
示例#10
0
 def __init__(self, diobject):
     super(TauTau, self).__init__(diobject)
     self.tau = Tau(super(TauTau, self).leg1())
     self.tau2 = Tau(super(TauTau, self).leg2())
示例#11
0
 def __init__(self, diobject):
     super(TauElectron, self).__init__(diobject)
     self.tau = Tau(diobject.leg1())
     self.ele = HTauTauElectron(diobject.leg2())