def preselection(self, row, cut_flow_trk = None, LT_threshold = 80.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False cut_flow_trk.Fill('trigger') if not selections.eSelection(row, 'e1'): return False cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e2'): return False cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False if not row.tAntiMuonLoose: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e1_e2_SS and row.e1_t_SS : return False #remove three SS leptons if row.e1_e2_Mass < 20: return False if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') #REMOVE CHARGE FAKES! if not self.logic_cut_met(row, 1.): return False cut_flow_trk.Fill('charge_fakes') return True
def preselection( self, row, cut_flow_trk = None, LT_threshold = 80.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' mu17e8 = (row.mu17ele8isoPass and row.mPt >= 20) if use_iso_trigger else (row.mu17ele8Pass and row.mPt >= 20) mu8e17 = (row.mu8ele17isoPass and row.ePt >= 20) #if use_iso_trigger else (row.mu17ele8Pass and row.mPt < 20) if not (mu17e8 or mu8e17): return False cut_flow_trk.Fill('trigger') if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if row.tMuOverlap: return False if not row.tAntiMuonTight: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e_m_SS and row.e_t_SS: return False #remove three SS leptons if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') cut_flow_trk.Fill('charge_fakes') #no charge fakes here return True
def preselection(row, cut_flow_trk): if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False cut_flow_trk.Fill('trigger') if row.e1_e2_DR < 0.5: return False cut_flow_trk.Fill('e1_e2_DR') if not row.e1Pt > 20: return False if not selections.eSelection(row, 'e1'): return False if not row.e1MVAIDH2TauWP: return False cut_flow_trk.Fill('e1 presel') if not selections.eSelection(row, 'e2'): return False cut_flow_trk.Fill('e2 presel') #if not (row.jetVeto40_DR05 >= 1): return False if row.jetVeto20 == 0: return False cut_flow_trk.Fill('jet requirement') if not selections.vetos(row, cut_flow_trk): return False return True
def preselection(self, row, cut_flow_trk = None, LT_threshold = 80.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' double_mu_pass = row.doubleMuPass #and \ ## row.m1MatchesDoubleMu2011Paths > 0 and \ ## row.m2MatchesDoubleMu2011Paths > 0 if not ( double_mu_pass ): return False cut_flow_trk.Fill('trigger') if row.m1Pt < row.m2Pt: return False if row.m1Pt < 20: return False if not selections.muSelection(row, 'm1'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj1 Presel') if not selections.muSelection(row, 'm2'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if not row.tAntiElectronMVA3Loose: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.m1_m2_SS and row.m1_t_SS: return False #remove three SS leptons if row.m1_m2_Mass < 20: return False if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') cut_flow_trk.Fill('charge_fakes') #no charge fakes here return True
def preselection(row): if not row.e_m_SS: return False if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) if not row.eChargeIdTight: return False if not (row.jetVeto40_DR05 >= 1): return False if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes return True
def preselection(row): if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False if not row.e1Pt > 20: return False if not selections.eSelection(row, 'e1'): return False if not row.e1MVAIDH2TauWP: return False if not selections.eSelection(row, 'e2'): return False if not selections.vetos(row): return False return True
def preselection( self, row, cut_flow_trk = None, LT_threshold = 80., taupt_thr = 0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if row.e_t_DR < 0.5 or row.m_t_DR < 0.5 or row.e_m_DR < 0.5: return False cut_flow_trk.Fill('DR separation') if self.hfunc['subMass'](row, 1)[0] < 20: return False cut_flow_trk.Fill('sub mass cut') mu17e8, mu8e17 = False, False if use_iso_trigger: mu17e8 = row.mu17ele8isoPass and \ row.mMatchesMu17Ele8IsoPath > 0 and \ row.eMatchesMu17Ele8IsoPath > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17isoPass and \ row.mMatchesMu8Ele17IsoPath > 0 and \ row.eMatchesMu8Ele17IsoPath > 0 and \ row.ePt >= 20 else: mu17e8 = row.mu17ele8Pass and \ row.mMatchesMu17Ele8Path > 0 and \ row.eMatchesMu17Ele8Path > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17Pass and \ row.mMatchesMu8Ele17Path > 0 and \ row.eMatchesMu8Ele17Path > 0 and \ row.ePt >= 20 if not (mu17e8 or mu8e17): return False cut_flow_trk.Fill('trigger') if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if row.tPt < taupt_thr: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e_m_Mass < 20: return False cut_flow_trk.Fill('dilepton mass cut') if not selections.vetos(row, cut_flow_trk): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('charge_fakes') #no charge fakes here return True
def preselection(self, row): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' mu17e8 = (row.mu17ele8isoPass and row.mPt >= 20) if use_iso_trigger else (row.mu17ele8Pass and row.mPt >= 20) mu8e17 = (row.mu8ele17isoPass and row.ePt >= 20) #if use_iso_trigger else (row.mu17ele8Pass and row.mPt < 20) if not (mu17e8 or mu8e17): return False if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes return True
def preselection(row): if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False if not row.e1Pt > 20: return False if not selections.eSelection(row, 'e1'): return False if not row.e1MVAIDH2TauWP: return False if not selections.eSelection(row, 'e2'): return False if not (row.jetVeto40_DR05 >= 1): return False if not selections.vetos(row): return False return True
def preselection(self, row, cut_flow_trk = None, LT_threshold = 80., taupt_thr = 0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' double_mu_pass = row.doubleMuPass and \ row.m1MatchesDoubleMuPaths > 0 and \ row.m2MatchesDoubleMuPaths > 0 double_muTrk_pass = row.doubleMuTrkPass and \ row.m1MatchesDoubleMuTrkPaths > 0 and \ row.m2MatchesDoubleMuTrkPaths > 0 if not ( double_mu_pass or double_muTrk_pass ): return False cut_flow_trk.Fill('trigger') if row.m1Pt < row.m2Pt: return False if row.m1Pt < 20: return False if not selections.muSelection(row, 'm1'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj1 Presel') #cut_flow_trk.Fill('pt requirements 1', 'eta requirements 1', 'MissingHits 1', 'HasConversion 1', 'JetBtag 1', 'DZ 1',) if not selections.muSelection(row, 'm2'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj2 Presel') #cut_flow_trk.Fill('pt requirements 2', 'eta requirements 2', 'MissingHits 2', 'HasConversion 2', 'JetBtag 2', 'DZ 2',) if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if not row.tAntiElectronMVA3Loose: return False if row.tPt < taupt_thr: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.m1_m2_SS and row.m1_t_SS: return False #remove three SS leptons if row.m1_m2_Mass < 20: return False if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') #cut_flow_trk.Fill('ChargeIdTight') cut_flow_trk.Fill('charge_fakes') #no charge fakes here #FIXME: ONLY FOR CUT-FLOW PRODUCTION #if not row.m1PFIDTight: return False #cut_flow_trk.Fill('obj1 ID') #if not selections.lepton_id_iso(row, 'm1', 'h2taucuts'): return False #cut_flow_trk.Fill('obj1 Iso') #if not row.m2PFIDTight: return False #cut_flow_trk.Fill('obj2 ID') #if not selections.lepton_id_iso(row, 'm2', 'h2taucuts'): return False #cut_flow_trk.Fill('obj2 Iso') #if not row.tLooseIso3Hits: return False #cut_flow_trk.Fill('obj3 IDIso') return True
def preselection(self, row): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if not row.doubleEPass: return False if row.e1Pt < 20: return False if not selections.eSelection(row, 'e1'): return False if not selections.eSelection(row, 'e2'): return False if not selections.vetos(row): return False if not (row.jetVeto40 >= 1): return False return True
def preselection(self, row): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if not row.isoMu24eta2p1Pass : return False if not selections.muSelection(row, 'm1', 10): return False if not selections.muSelection(row, 'm2', 10): return False m1matches = row.m1MatchesIsoMu24eta2p1 and \ (row.m1Pt > 25) and (row.m1AbsEta < 2.1) m2matches = row.m2MatchesIsoMu24eta2p1 and \ (row.m2Pt > 25) and (row.m2AbsEta < 2.1) if not (m1matches or m2matches): return False if not selections.mu_idIso(row, 'm1'): return False if not selections.vetos(row): return False return True
def preselection(self, row): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False if row.e1Pt < 20: return False if not selections.eSelection(row, 'e1'): return False if not selections.eSelection(row, 'e2'): return False if not selections.vetos(row): return False if row.e1_e2_Mass < 40: return False if not (row.jetVeto40 >= 1): return False return True
def preselection(self, row, cut_flow_trk = None, LT_threshold = 80., taupt_thr = 0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' # # NEW EXPLICIT CUT, BEFORE IT WAS IMPLICIT AND MADE WHILE PLOTTING! # if row.m1_t_DR < 0.5 or row.m2_t_DR < 0.5 or row.m1_m2_DR < 0.5: return False cut_flow_trk.Fill('DR separation') if row.m2_t_Mass < 20: return False cut_flow_trk.Fill('sub mass cut') double_mu_pass = row.doubleMuPass and \ row.m1MatchesDoubleMuPaths > 0 and \ row.m2MatchesDoubleMuPaths > 0 double_muTrk_pass = row.doubleMuTrkPass and \ row.m1MatchesMu17TrkMu8Path > 0 and \ row.m2MatchesMu17TrkMu8Path > 0 if not ( double_mu_pass or double_muTrk_pass ): return False cut_flow_trk.Fill('trigger') if row.m1Pt < row.m2Pt: return False if row.m1Pt < 20: return False if not selections.muSelection(row, 'm1'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj1 Presel') if not selections.muSelection(row, 'm2'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if not row.tAntiElectronMVA3Loose: return False if row.tPt < taupt_thr: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.m1_m2_Mass < 20: return False cut_flow_trk.Fill('dilepton mass cut') if not selections.vetos(row, cut_flow_trk): return False #applies mu bjet e additional tau vetoes return True
def preselection(self, row, cut_flow_trk=None, LT_threshold=80., taupt_thr=0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if row.e1_t_DR < 0.5 or row.e2_t_DR < 0.5 or row.e1_e2_DR < 0.5: return False cut_flow_trk.Fill('DR separation') if row.e2_t_Mass < 20: return False cut_flow_trk.Fill('sub mass cut') if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False cut_flow_trk.Fill('trigger') if row.e1Pt < 20: return False if not selections.eSelection(row, 'e1'): return False cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e2'): return False cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False if row.tPt < taupt_thr: return False if not row.tAntiMuonLoose: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') #if row.e1_e2_SS and row.e1_t_SS: return False #remove three SS leptons if row.e1_e2_Mass < 20: return False cut_flow_trk.Fill('dilepton mass cut') if not selections.vetos(row, cut_flow_trk): return False #applies mu bjet e additional tau vetoes return True
def preselection(self, row): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' mu17e8 = (row.mu17ele8isoPass and row.mPt >= 20) if use_iso_trigger else ( row.mu17ele8Pass and row.mPt >= 20) mu8e17 = ( row.mu8ele17isoPass and row.ePt >= 20 ) #if use_iso_trigger else (row.mu17ele8Pass and row.mPt < 20) if not (mu17e8 or mu8e17): return False if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes return True
def preselection(row): double_mu_pass = row.doubleMuPass and \ row.m1MatchesDoubleMuPaths > 0 and \ row.m2MatchesDoubleMuPaths > 0 double_muTrk_pass = row.doubleMuTrkPass and \ row.m1MatchesDoubleMuTrkPaths > 0 and \ row.m2MatchesDoubleMuTrkPaths > 0 if not (double_mu_pass or double_muTrk_pass): return False if not row.m1_m2_SS: return False if row.m2Pt > row.m1Pt: return False if row.m1_m2_Mass < 20: return False if not row.m1Pt > 20: return False if not row.m1PFIDTight: return False if not selections.muSelection(row, 'm1'): return False if not selections.muSelection(row, 'm2'): return False if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes if not (row.jetVeto40_DR05 >= 1): return False return True
def preselection(row): if not row.e_m_SS: return False cut_flow_trk.Fill('e_m_SS') if row.e_m_DR < 0.5: return False cut_flow_trk.Fill('e_m_DR') if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('mu presel') if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) if not row.eChargeIdTight: return False cut_flow_trk.Fill('e presel') #if not (row.jetVeto40_DR05 >= 1): return False if row.jetVeto20 == 0: return False cut_flow_trk.Fill('jet presence') if not selections.vetos(row, cut_flow_trk, False): return False #applies mu bjet e additional tau vetoes #DO NOT APPLY BJet veto. It is used for ttbar CR return True
def preselection(self, row, cut_flow_trk = None, LT_threshold = 80., taupt_thr = 0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if row.e1_t_DR < 0.5 or row.e2_t_DR < 0.5 or row.e1_e2_DR < 0.5: return False cut_flow_trk.Fill('DR separation') if row.e2_t_Mass < 20: return False cut_flow_trk.Fill('sub mass cut') if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False cut_flow_trk.Fill('trigger') if row.e1Pt < 20: return False if not selections.eSelection(row, 'e1'): return False cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e2'): return False cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False if row.tPt < taupt_thr: return False if not row.tAntiMuonLoose: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') #if row.e1_e2_SS and row.e1_t_SS: return False #remove three SS leptons if row.e1_e2_Mass < 20: return False cut_flow_trk.Fill('dilepton mass cut') if not selections.vetos(row, cut_flow_trk): return False #applies mu bjet e additional tau vetoes return True
def preselection(row, cut_flow_trk): double_mu_pass = row.doubleMuPass and \ row.m1MatchesDoubleMuPaths > 0 and \ row.m2MatchesDoubleMuPaths > 0 double_muTrk_pass = row.doubleMuTrkPass and \ row.m1MatchesMu17TrkMu8Path > 0 and \ row.m2MatchesMu17TrkMu8Path > 0 if not ( double_mu_pass or double_muTrk_pass ): return False cut_flow_trk.Fill('trigger') if not row.m1_m2_SS: return False cut_flow_trk.Fill('m1_m2_SS') if row.m1_m2_DR < 0.5: return False cut_flow_trk.Fill('m1_m2_DR') if row.m2Pt > row.m1Pt: return False if row.m1_m2_Mass < 20: return False cut_flow_trk.Fill('m1_m2_Mass') if not selections.muSelection(row, 'm1', cut_flow_trk): return False if not row.m1Pt > 20: return False cut_flow_trk.Fill('lead mu pt') if not row.m1PFIDTight: return False cut_flow_trk.Fill('m1PFIDTight') #cut_flow_trk.Fill('lead mu preselection') if not selections.muSelection(row, 'm2'): return False cut_flow_trk.Fill('sublead mu preselection') if not selections.vetos(row, cut_flow_trk): return False #applies mu bjet e additional tau vetoes #if not (row.jetVeto40_DR05 >= 1): return False if row.jetVeto20 == 0: return False cut_flow_trk.Fill('Jet presence') return True
def preselection(self, row, cut_flow_trk=None, LT_threshold=80., taupt_thr=0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' mu17e8, mu8e17 = False, False if use_iso_trigger: mu17e8 = row.mu17ele8isoPass and \ row.mMatchesMu17Ele8IsoPath > 0 and \ row.eMatchesMu17Ele8IsoPath > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17isoPass and \ row.mMatchesMu8Ele17IsoPath > 0 and \ row.eMatchesMu8Ele17IsoPath > 0 and \ row.ePt >= 20 else: mu17e8 = row.mu17ele8Pass and \ row.mMatchesMu17Ele8Path > 0 and \ row.eMatchesMu17Ele8Path > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17Pass and \ row.mMatchesMu8Ele17Path > 0 and \ row.eMatchesMu8Ele17Path > 0 and \ row.ePt >= 20 if not (mu17e8 or mu8e17): return False cut_flow_trk.Fill('trigger') if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) #cut_flow_trk.Fill('pt requirements 1', 'eta requirements 1', 'MissingHits 1', 'HasConversion 1', 'JetBtag 1', 'DZ 1',) cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) cut_flow_trk.Fill('obj2 Presel') #FIXME #if row.ePt < 10: return False #cut_flow_trk.Fill('pt requirements 2') #if row.eAbsEta > 2.5: return False #cut_flow_trk.Fill('eta requirements 2') #if row.eMissingHits: return False #cut_flow_trk.Fill('MissingHits 2') #if row.eHasConversion: return False #cut_flow_trk.Fill('HasConversion 2') #if row.eJetBtag > 3.3: return False #cut_flow_trk.Fill('JetBtag 2') #if abs(row.eDZ) > 0.2: return False #cut_flow_trk.Fill('DZ 2') if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if row.tPt < taupt_thr: return False if row.tMuOverlap: return False if not row.tAntiMuonTight: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e_m_SS and row.e_t_SS: return False #remove three SS leptons if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') #FIXME if not row.eChargeIdTight: return False #cut_flow_trk.Fill('ChargeIdTight') if e_m_Mass < 20: return False cut_flow_trk.Fill('charge_fakes') #no charge fakes here #FIXME: ONLY FOR CUT-FLOW PRODUCTION #if not row.mPFIDTight: return False #cut_flow_trk.Fill('obj1 ID') #if not selections.lepton_id_iso(row, 'm', 'h2taucuts'): return False #cut_flow_trk.Fill('obj1 Iso') #if not selections.summer_2013_eid(row, 'e'): return False #cut_flow_trk.Fill('obj2 ID') #if not selections.lepton_id_iso(row, 'e', 'h2taucuts'): return False #cut_flow_trk.Fill('obj2 Iso') #if not row.tLooseIso3Hits: return False #cut_flow_trk.Fill('obj3 IDIso') return True
def preselection(self, row, cut_flow_trk=None, LT_threshold=80., taupt_thr=0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False cut_flow_trk.Fill('trigger') if row.e1Pt < 20: return False if not selections.eSelection(row, 'e1'): return False cut_flow_trk.Fill('obj1 Presel') #FIXME #if row.e1Pt < 20: return False #cut_flow_trk.Fill('pt requirements 1') #if row.e1AbsEta > 2.5: return False #cut_flow_trk.Fill('eta requirements 1') #if row.e1MissingHits: return False #cut_flow_trk.Fill('MissingHits 1') #if row.e1HasConversion: return False #cut_flow_trk.Fill('HasConversion 1') #if row.e1JetBtag > 3.3: return False #cut_flow_trk.Fill('JetBtag 1') #if abs(row.e1DZ) > 0.2: return False #cut_flow_trk.Fill('DZ 1') if not selections.eSelection(row, 'e2'): return False cut_flow_trk.Fill('obj2 Presel') #FIXME #if row.e2Pt < 10: return False #cut_flow_trk.Fill('pt requirements 2') #if row.e2AbsEta > 2.5: return False #cut_flow_trk.Fill('eta requirements 2') #if row.e2MissingHits: return False #cut_flow_trk.Fill('MissingHits 2') #if row.e2HasConversion: return False #cut_flow_trk.Fill('HasConversion 2') #if row.e2JetBtag > 3.3: return False #cut_flow_trk.Fill('JetBtag 2') #if abs(row.e2DZ) > 0.2: return False #cut_flow_trk.Fill('DZ 2') if not selections.tauSelection(row, 't'): return False if row.tPt < taupt_thr: return False if not row.tAntiMuonLoose: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e1_e2_SS and row.e1_t_SS: return False #remove three SS leptons if row.e1_e2_Mass < 20: return False if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') #REMOVE CHARGE FAKES! #FIXME #if not row.e1ChargeIdLoose: return False #if not row.e2ChargeIdLoose: return False #cut_flow_trk.Fill('ChargeIdLoose') #cut_flow_trk.Fill('charge_fakes') #FIXME: ONLY FOR CUT-FLOW PRODUCTION #if not selections.summer_2013_eid(row, 'e1'): return False #cut_flow_trk.Fill('obj1 ID') #if not selections.lepton_id_iso(row, 'e1', 'eid13Looseh2taucuts'): return False #cut_flow_trk.Fill('obj1 Iso') #if not selections.summer_2013_eid(row, 'e2'): return False #cut_flow_trk.Fill('obj2 ID') #if not selections.lepton_id_iso(row, 'e2', 'eid13Looseh2taucuts'): return False #cut_flow_trk.Fill('obj2 Iso') #if not row.tLooseIso3Hits: return False #cut_flow_trk.Fill('obj3 IDIso') return True
def preselection( self, row, cut_flow_trk = None, LT_threshold = 80., taupt_thr = 0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' mu17e8, mu8e17 = False, False if use_iso_trigger: mu17e8 = row.mu17ele8isoPass and \ row.mMatchesMu17Ele8IsoPath > 0 and \ row.eMatchesMu17Ele8IsoPath > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17isoPass and \ row.mMatchesMu8Ele17IsoPath > 0 and \ row.eMatchesMu8Ele17IsoPath > 0 and \ row.ePt >= 20 else: mu17e8 = row.mu17ele8Pass and \ row.mMatchesMu17Ele8Path > 0 and \ row.eMatchesMu17Ele8Path > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17Pass and \ row.mMatchesMu8Ele17Path > 0 and \ row.eMatchesMu8Ele17Path > 0 and \ row.ePt >= 20 if not (mu17e8 or mu8e17): return False cut_flow_trk.Fill('trigger') if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) #cut_flow_trk.Fill('pt requirements 1', 'eta requirements 1', 'MissingHits 1', 'HasConversion 1', 'JetBtag 1', 'DZ 1',) cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) cut_flow_trk.Fill('obj2 Presel') #FIXME #if row.ePt < 10: return False #cut_flow_trk.Fill('pt requirements 2') #if row.eAbsEta > 2.5: return False #cut_flow_trk.Fill('eta requirements 2') #if row.eMissingHits: return False #cut_flow_trk.Fill('MissingHits 2') #if row.eHasConversion: return False #cut_flow_trk.Fill('HasConversion 2') #if row.eJetBtag > 3.3: return False #cut_flow_trk.Fill('JetBtag 2') #if abs(row.eDZ) > 0.2: return False #cut_flow_trk.Fill('DZ 2') if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if row.tPt < taupt_thr: return False if row.tMuOverlap: return False if not row.tAntiMuonTight: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e_m_SS and row.e_t_SS: return False #remove three SS leptons if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') #FIXME if not row.eChargeIdTight: return False #cut_flow_trk.Fill('ChargeIdTight') if e_m_Mass < 20: return False cut_flow_trk.Fill('charge_fakes') #no charge fakes here #FIXME: ONLY FOR CUT-FLOW PRODUCTION #if not row.mPFIDTight: return False #cut_flow_trk.Fill('obj1 ID') #if not selections.lepton_id_iso(row, 'm', 'h2taucuts'): return False #cut_flow_trk.Fill('obj1 Iso') #if not selections.summer_2013_eid(row, 'e'): return False #cut_flow_trk.Fill('obj2 ID') #if not selections.lepton_id_iso(row, 'e', 'h2taucuts'): return False #cut_flow_trk.Fill('obj2 Iso') #if not row.tLooseIso3Hits: return False #cut_flow_trk.Fill('obj3 IDIso') return True
def preselection(self, row, cut_flow_trk = None, LT_threshold = 80., taupt_thr = 0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if not row.doubleEPass: return False if not (row.e1MatchesDoubleEPath > 0 and \ row.e2MatchesDoubleEPath > 0): return False cut_flow_trk.Fill('trigger') if row.e1Pt < 20: return False if not selections.eSelection(row, 'e1'): return False cut_flow_trk.Fill('obj1 Presel') #FIXME #if row.e1Pt < 20: return False #cut_flow_trk.Fill('pt requirements 1') #if row.e1AbsEta > 2.5: return False #cut_flow_trk.Fill('eta requirements 1') #if row.e1MissingHits: return False #cut_flow_trk.Fill('MissingHits 1') #if row.e1HasConversion: return False #cut_flow_trk.Fill('HasConversion 1') #if row.e1JetBtag > 3.3: return False #cut_flow_trk.Fill('JetBtag 1') #if abs(row.e1DZ) > 0.2: return False #cut_flow_trk.Fill('DZ 1') if not selections.eSelection(row, 'e2'): return False cut_flow_trk.Fill('obj2 Presel') #FIXME #if row.e2Pt < 10: return False #cut_flow_trk.Fill('pt requirements 2') #if row.e2AbsEta > 2.5: return False #cut_flow_trk.Fill('eta requirements 2') #if row.e2MissingHits: return False #cut_flow_trk.Fill('MissingHits 2') #if row.e2HasConversion: return False #cut_flow_trk.Fill('HasConversion 2') #if row.e2JetBtag > 3.3: return False #cut_flow_trk.Fill('JetBtag 2') #if abs(row.e2DZ) > 0.2: return False #cut_flow_trk.Fill('DZ 2') if not selections.tauSelection(row, 't'): return False if row.tPt < taupt_thr: return False if not row.tAntiMuonLoose: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e1_e2_SS and row.e1_t_SS: return False #remove three SS leptons if row.e1_e2_Mass < 20: return False if not selections.vetos(row): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('vetos') #REMOVE CHARGE FAKES! #FIXME #if not row.e1ChargeIdLoose: return False #if not row.e2ChargeIdLoose: return False #cut_flow_trk.Fill('ChargeIdLoose') #cut_flow_trk.Fill('charge_fakes') #FIXME: ONLY FOR CUT-FLOW PRODUCTION #if not selections.summer_2013_eid(row, 'e1'): return False #cut_flow_trk.Fill('obj1 ID') #if not selections.lepton_id_iso(row, 'e1', 'eid13Looseh2taucuts'): return False #cut_flow_trk.Fill('obj1 Iso') #if not selections.summer_2013_eid(row, 'e2'): return False #cut_flow_trk.Fill('obj2 ID') #if not selections.lepton_id_iso(row, 'e2', 'eid13Looseh2taucuts'): return False #cut_flow_trk.Fill('obj2 Iso') #if not row.tLooseIso3Hits: return False #cut_flow_trk.Fill('obj3 IDIso') return True
def preselection(self, row, cut_flow_trk=None, LT_threshold=80., taupt_thr=0.): ''' Preselection applied to events. Excludes FR object IDs and sign cut. ''' if row.e_t_DR < 0.5 or row.m_t_DR < 0.5 or row.e_m_DR < 0.5: return False cut_flow_trk.Fill('DR separation') if self.hfunc['subMass'](row, 1)[0] < 20: return False cut_flow_trk.Fill('sub mass cut') mu17e8, mu8e17 = False, False if use_iso_trigger: mu17e8 = row.mu17ele8isoPass and \ row.mMatchesMu17Ele8IsoPath > 0 and \ row.eMatchesMu17Ele8IsoPath > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17isoPass and \ row.mMatchesMu8Ele17IsoPath > 0 and \ row.eMatchesMu8Ele17IsoPath > 0 and \ row.ePt >= 20 else: mu17e8 = row.mu17ele8Pass and \ row.mMatchesMu17Ele8Path > 0 and \ row.eMatchesMu17Ele8Path > 0 and \ row.mPt >= 20 mu8e17 = row.mu8ele17Pass and \ row.mMatchesMu8Ele17Path > 0 and \ row.eMatchesMu8Ele17Path > 0 and \ row.ePt >= 20 if not (mu17e8 or mu8e17): return False cut_flow_trk.Fill('trigger') if not selections.muSelection(row, 'm'): return False #applies basic selection (eta, pt > 10, DZ, pixHits, jetBTag) cut_flow_trk.Fill('obj1 Presel') if not selections.eSelection(row, 'e'): return False #applies basic selection (eta, pt > 10, DZ, missingHits, jetBTag, HasConversion and chargedIdTight) cut_flow_trk.Fill('obj2 Presel') if not selections.tauSelection(row, 't'): return False #applies basic selection (eta, pt > 20, DZ) if row.tPt < taupt_thr: return False cut_flow_trk.Fill('obj3 Presel') if row.LT < LT_threshold: return False cut_flow_trk.Fill('LT') if row.e_m_Mass < 20: return False cut_flow_trk.Fill('dilepton mass cut') if not selections.vetos(row, cut_flow_trk): return False #applies mu bjet e additional tau vetoes cut_flow_trk.Fill('charge_fakes') #no charge fakes here return True