# do not produce momentum-corrected muons from TauAnalysis.RecoTools.patLeptonSelection_cff import patMuonSelConfigurator setattr(patMuonSelConfigurator, "src", "patMuons" ) process.selectPatMuons = patMuonSelConfigurator.configure(process = process) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # # electron selection # # VBTF WP80 electron ID changeCut(process,"selectedPatElectronsForElecTauId","(abs(superCluster.eta) < 1.479 & pt > 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.004 & abs(deltaPhiSuperClusterTrackAtVtx) < 0.06 & hcalOverEcal < 0.04 & sigmaIetaIeta < 0.01) | (abs(superCluster.eta) > 1.479 & pt > 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.007 & abs(deltaPhiSuperClusterTrackAtVtx) <0.03 & hcalOverEcal < 0.025 & sigmaIetaIeta < 0.03) | (abs(superCluster.eta) < 1.479 & pt < 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.004 & abs(deltaPhiSuperClusterTrackAtVtx) < 0.03 & hcalOverEcal < 0.025 & sigmaIetaIeta < 0.01 & (fbrem > 0.15 | (abs(superCluster.eta) < 1 & eSuperClusterOverP > 0.95) )) | (abs(superCluster.eta) > 1.479 & pt < 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.005 & abs(deltaPhiSuperClusterTrackAtVtx) <0.02 & hcalOverEcal < 0.025 & sigmaIetaIeta < 0.03 & (fbrem > 0.15 | (abs(superCluster.eta) < 1 & eSuperClusterOverP > 0.95) ))") # electron eta range changeCut(process,"selectedPatElectronsForElecTauEta","abs(eta) < 2.1") # electron pt changeCut(process,"selectedPatElectronsForElecTauPt","pt > 18") # PF combinded relative isolation changeCut(process,"selectedPatElectronsForElecTauIso",cms.double(0.08),"sumPtMaxEB") changeCut(process,"selectedPatElectronsForElecTauIso",cms.double(0.04),"sumPtMaxEE") changeCut(process,"selectedPatElectronsForElecTauIsoLooseIsolation",cms.double(0.25),"sumPtMax") # electron conversion veto changeCut(process,"selectedPatElectronsForElecTauConversionVeto",cms.int32(0), attribute = "maxMissingInnerHits")
def _changeTauId(process, tau_id, **kwargs): for selector in _tauIdChannelMap[kwargs['channel']]: changeCut(process, selector, tau_id)
def _changeTauId(process, tau_id, **kwargs): for selector in _tauIdChannelMap[kwargs['channel']]: changeCut(process, selector, tau_id)
process.selectedPatMuonsPFRelIso.photonIso.ptMin = 1.5 process.selectedPatMuonsPFRelIso.sumPtMax = 1.0 process.selectedPatMuonsPFRelIso.sumPtMethod = "absolute" process.selectedPatMuonsPFRelIsoLooseIsolation.chargedHadronIso.ptMin = 1.0 process.selectedPatMuonsPFRelIsoLooseIsolation.neutralHadronIso.ptMin = 2000. process.selectedPatMuonsPFRelIsoLooseIsolation.photonIso.ptMin = 1.5 process.selectedPatMuonsPFRelIsoLooseIsolation.sumPtMax = 8.0 process.selectedPatMuonsPFRelIsoLooseIsolation.sumPtMethod = "absolute" #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # change upper limit on tranverse impact parameter of muon track to 2mm changeCut(process, "selectedPatMuonsTrkIP", 0.2, attribute = "IpMax") # change cut on TaNC output in case using new HPS + TaNC combined tau id. algorithm changeCut(process, "selectedPatTausTaNCdiscr", "tauID('byTaNCmedium') > 0.5") changeCut(process, "selectedPatTausForMuTauTaNCdiscr", "tauID('byTaNCmedium') > 0.5") # change lower limit on separation required between muon and tau-jet to dR > 0.5 changeCut(process, "selectedMuTauPairsAntiOverlapVeto", "dR12 > 0.5") changeCut(process, "selectedMuTauPairsAntiOverlapVetoLooseMuonIsolation", "dR12 > 0.5") # change upper limit on muon + MET transverse mass to 40 GeV changeCut(process, "selectedMuTauPairsMt1MET", "mt1MET < 40.") changeCut(process, "selectedMuTauPairsMt1METlooseMuonIsolation", "mt1MET < 40.") # disable cut on Pzeta variable changeCut(process, "selectedMuTauPairsPzetaDiff", "(pZeta - 1.5*pZetaVis) > -1000.")
# -------------------------------------------------------------------------------- # -------------------------------------------------------------------------------- # do not produce momentum-corrected muons from TauAnalysis.RecoTools.patLeptonSelection_cff import patMuonSelConfigurator setattr(patMuonSelConfigurator, "src", "cleanPatMuons") process.selectPatMuons = patMuonSelConfigurator.configure(process=process) # -------------------------------------------------------------------------------- # -------------------------------------------------------------------------------- # make cut changes from TauAnalysis.Configuration.tools.changeCut import changeCut # update all tau discriminant to HPS types changeCut(process, "selectedPatTausLeadTrk", 'tauID("decayModeFinding")') changeCut(process, "selectedPatTausLeadTrkPt", 'tauID("decayModeFinding")') changeCut(process, "selectedPatTausTaNCdiscr", 'tauID("byLooseCombinedIsolationDeltaBetaCorr")') # -------------------------------------------------------------------------------- # before starting to process 1st event, print event content process.printEventContent = cms.EDAnalyzer("EventContentAnalyzer") process.filterFirstEvent = cms.EDFilter("EventCountFilter", numEvents=cms.int32(1)) process.n = cms.Path(process.filterFirstEvent + process.printEventContent) process.o = cms.Path(process.dataQualityFilters) # Define a generic end path that filters the final events that a pool # output module can be hooked into if desired. process.filterFinalEvents = cms.EDFilter("BoolEventFilter", src=cms.InputTag("isRecAHtoElecTau"))
# uncomment to add pfMET # set Boolean swich to true in order to apply type-1 corrections addPFMet(process, correct = False) # uncomment to replace caloMET by pfMET in all di-tau objects process.load("TauAnalysis.CandidateTools.diTauPairProductionAllKinds_cff") replaceMETforDiTaus(process, cms.InputTag('patMETs'), cms.InputTag('patPFMETs')) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # change upper limit on tranverse impact parameter of muon track to 2mm changeCut(process, "selectedPatMuonsTrkIP", 0.2, attribute = "IpMax") # switch between TaNC and HPS tau id. discriminators #changeCut(process, "selectedPatTausLeadTrkPt", "tauID('leadingTrackPtCut') > 0.5") #changeCut(process, "selectedPatTausForMuTauLeadTrkPt", "tauID('leadingTrackPtCut') > 0.5") #changeCut(process, "selectedPatTausTaNCdiscr", "tauID('byTaNCloose') > 0.5") #changeCut(process, "selectedPatTausForMuTauTaNCdiscr", "tauID('byTaNCloose') > 0.5") changeCut(process, "selectedPatTausLeadTrkPt", "tauID('decayModeFinding') > 0.5") changeCut(process, "selectedPatTausForMuTauLeadTrkPt", "tauID('decayModeFinding') > 0.5") changeCut(process, "selectedPatTausTaNCdiscr", "tauID('byLooseCombinedIsolationDeltaBetaCorr') > 0.5") changeCut(process, "selectedPatTausForMuTauTaNCdiscr", "tauID('byLooseCombinedIsolationDeltaBetaCorr') > 0.5") # disable calorimeter muon veto for now... changeCut(process, "selectedPatTausForMuTauCaloMuonVeto", "tauID('againstMuonTight') > -1.") # change lower limit on separation required between muon and tau-jet to dR > 0.5
process.selectedPatMuonsPFRelIso.photonIso.ptMin = 1.5 process.selectedPatMuonsPFRelIso.sumPtMax = 1.0 process.selectedPatMuonsPFRelIso.sumPtMethod = "absolute" process.selectedPatMuonsPFRelIsoLooseIsolation.chargedHadronIso.ptMin = 1.0 process.selectedPatMuonsPFRelIsoLooseIsolation.neutralHadronIso.ptMin = 2000. process.selectedPatMuonsPFRelIsoLooseIsolation.photonIso.ptMin = 1.5 process.selectedPatMuonsPFRelIsoLooseIsolation.sumPtMax = 8.0 process.selectedPatMuonsPFRelIsoLooseIsolation.sumPtMethod = "absolute" #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # change upper limit on tranverse impact parameter of muon track to 2mm changeCut(process, "selectedPatMuonsTrkIP", 0.2, attribute="IpMax") # change cut on TaNC output in case using new HPS + TaNC combined tau id. algorithm changeCut(process, "selectedPatTausTaNCdiscr", "tauID('byTaNCmedium') > 0.5") changeCut(process, "selectedPatTausForMuTauTaNCdiscr", "tauID('byTaNCmedium') > 0.5") # change lower limit on separation required between muon and tau-jet to dR > 0.5 changeCut(process, "selectedMuTauPairsAntiOverlapVeto", "dR12 > 0.5") changeCut(process, "selectedMuTauPairsAntiOverlapVetoLooseMuonIsolation", "dR12 > 0.5") # change upper limit on muon + MET transverse mass to 40 GeV changeCut(process, "selectedMuTauPairsMt1MET", "mt1MET < 40.") changeCut(process, "selectedMuTauPairsMt1METlooseMuonIsolation", "mt1MET < 40.")
cut_values['mt_only_loose_Muon_tightTau'] = copy.deepcopy(cut_values['loose']) cut_values['mt_only_loose_Muon_tightTau']['mt1MET'] = 50 cut_values['mt_only_loose_Muon_tightTau']['pzeta'] = -1e9 cut_values['mt_only_loose_Muon_tightTau']['zmumu_iso'] = 0.3 cut_values['mt_only_loose_Muon_tightTau']['muon_iso'] = _LOOSE_MUON_ISO cut_values['mt_only_loose_Muon_tightTau']['tanc'] = \ "tauID('%s') > 0.5" % _TAUID cuts = cut_values[_CUTS] # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # change muon Pt threshold to 15 GeV changeCut(process, "selectedPatMuonsPt15", "pt > %0.2f" % cuts['muon_pt']) # change muon eta acceptance changeCut(process, "selectedPatMuonsEta21", "abs(eta) < %0.2f" % cuts['muon_eta']) #print "WARNING CHANGING MU ETA CUT" #changeCut(process, "selectedPatMuonsEta21", "eta > -1.5 & eta < -1.4") # change tau pt threshold changeCut(process, "selectedPatTausForMuTauPt20", "pt > %0.2f" % cuts['tau_pt']) # change eta acceptance for tau-jets to |eta| < 2.3 changeCut(process, "selectedPatTausForMuTauEta23", "abs(eta) < %0.2f" % cuts['tau_eta'])
from TauAnalysis.RecoTools.patLeptonSelection_cff import patMuonSelConfigurator setattr(patMuonSelConfigurator, "src", "patMuons") process.selectPatMuons = patMuonSelConfigurator.configure(process=process) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # # electron selection # # VBTF WP80 electron ID changeCut( process, "selectedPatElectronsForElecTauId", "(abs(superCluster.eta) < 1.479 & pt > 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.004 & abs(deltaPhiSuperClusterTrackAtVtx) < 0.06 & hcalOverEcal < 0.04 & sigmaIetaIeta < 0.01) | (abs(superCluster.eta) > 1.479 & pt > 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.007 & abs(deltaPhiSuperClusterTrackAtVtx) <0.03 & hcalOverEcal < 0.025 & sigmaIetaIeta < 0.03) | (abs(superCluster.eta) < 1.479 & pt < 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.004 & abs(deltaPhiSuperClusterTrackAtVtx) < 0.03 & hcalOverEcal < 0.025 & sigmaIetaIeta < 0.01 & (fbrem > 0.15 | (abs(superCluster.eta) < 1 & eSuperClusterOverP > 0.95) )) | (abs(superCluster.eta) > 1.479 & pt < 20 & abs(deltaEtaSuperClusterTrackAtVtx) < 0.005 & abs(deltaPhiSuperClusterTrackAtVtx) <0.02 & hcalOverEcal < 0.025 & sigmaIetaIeta < 0.03 & (fbrem > 0.15 | (abs(superCluster.eta) < 1 & eSuperClusterOverP > 0.95) ))" ) # electron eta range changeCut(process, "selectedPatElectronsForElecTauEta", "abs(eta) < 2.1") # electron pt changeCut(process, "selectedPatElectronsForElecTauPt", "pt > 18") # PF combinded relative isolation changeCut(process, "selectedPatElectronsForElecTauIso", cms.double(0.08), "sumPtMaxEB") changeCut(process, "selectedPatElectronsForElecTauIso", cms.double(0.04), "sumPtMaxEE") changeCut(process, "selectedPatElectronsForElecTauIsoLooseIsolation",
# uncomment to add pfMET # set Boolean swich to true in order to apply type-1 corrections addPFMet(process, correct = False) # uncomment to replace caloMET by pfMET in all di-tau objects process.load("TauAnalysis.CandidateTools.diTauPairProductionAllKinds_cff") replaceMETforDiTaus(process, cms.InputTag('patMETs'), cms.InputTag('patPFMETs')) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # disable cuts on tau id. discriminators for Track && ECAL isolation (for both taus) changeCut(process, "selectedPatTausForDiTau1stTrkIso", "tauID('trackIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndTrkIso", "tauID('trackIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndTrkIsoLoose", "tauID('trackIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau1stEcalIso", "tauID('ecalIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndEcalIso", "tauID('ecalIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndEcalIsoLoose", "tauID('ecalIsolation') > -1.") # change cut on TaNC output in case using new HPS + TaNC combined tau id. algorithm # CV: discriminators by Track/ECAL isolation do not exist for the combined tau id. algorithm # and need to be replaced by dummy cuts, in order to avoid run-time exceptions changeCut(process, "selectedPatTausTrkIso", "tauID('byTaNCtight') > -1.") changeCut(process, "selectedPatTausForDiTau1stTrkIso", "tauID('byTaNCtight') > -1.") changeCut(process, "selectedPatTausForDiTau2ndTrkIso", "tauID('byTaNCtight') > -1.") changeCut(process, "selectedPatTausForDiTau2ndTrkIsoLoose", "tauID('byTaNCtight') > -1.") changeCut(process, "selectedPatTausEcalIso", "tauID('byTaNCtight') > -1.") changeCut(process, "selectedPatTausForDiTau1stEcalIso", "tauID('byTaNCtight') > -1.")
# trigger switches for the different sets of samples #-------------------------------------------------------------------------------- process.load("PhysicsTools.PatAlgos.triggerLayer1.triggerProducer_cfi") process.load("PhysicsTools.PatAlgos.triggerLayer1.triggerEventProducer_cfi") ## #for running on the Winter10 samples process.patTriggerEvent.processName = cms.string('REDIGI39X') process.patTrigger.processName = cms.string('REDIGI39X') ## #for running on data #process.patTriggerEvent.processName = cms.string( 'HLT' ) #process.patTrigger.processName = cms.string( 'HLT' ) #-------------------------------------------------------------------------------- # import utility function for changing cut values #-------------------------------------------------------------------------------- from TauAnalysis.Configuration.tools.changeCut import changeCut #tau selection changeCut(process, "selectedPatTausForWTauNuEta21", "abs(eta) < 2.3") changeCut(process, "selectedPatTausForWTauNuPt20", "pt() > 30") changeCut(process, "selectedPatTausForWTauNuLeadTrk", "pt() > 30") #tauID('decayModeFinding') > 0.5") changeCut( process, "selectedPatTausForWTauNuLeadTrkPt", "pt() > 30" ) #leadPFChargedHadrCand().isNonnull() & leadPFChargedHadrCand().pt() > 20.") changeCut(process, "selectedPatTausForWTauNuElectronVeto", "tauID('againstElectronTight') > 0.5") changeCut(process, "selectedPatTausForWTauNuMuonVeto", "tauID('againstMuonTight') > 0.5") changeCut(process, "selectedPatTausForWTauNuEmFraction", "emFraction < 0.90") changeCut(process, "selectedPatTausForWTauNuIso", "tauID('byHPSmedium') < 0.5") #electron selection
# uncomment to add pfMET, set Boolean swich to true in order to apply type-1 corrections addPFMet(process, correct = False) # replace caloMET by pfMET in all tau-Nu objects process.load("TauAnalysis.CandidateTools.tauNuPairProduction_cff") replaceMETforTauNu(process, cms.InputTag('patMETs'),cms.InputTag('patPFMETs')) #-------------------------------------------------------------------------------- #process.load("ElectroWeakAnalysis.WENu.simpleEleIdSequence_cff") #process.patElectronIDs = cms.Sequence(process.simpleEleIdSequence) #process.makePatElectrons = cms.Sequence(process.patElectronIDs*process.patElectrons) #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut #tau selection changeCut(process,"selectedPatTausForWTauNuEta21","abs(eta) < 2.3") changeCut(process,"selectedPatTausForWTauNuPt20","pt() > 30") changeCut(process,"selectedPatTausForWTauNuLeadTrk","tauID('decayModeFinding') > 0.5") changeCut(process,"selectedPatTausForWTauNuLeadTrkPt","leadPFChargedHadrCand().isNonnull() & leadPFChargedHadrCand().pt() > 15.") changeCut(process,"selectedPatTausForWTauNuElectronVeto","tauID('againstElectronTight') > 0.5") changeCut(process,"selectedPatTausForWTauNuMuonVeto","tauID('againstMuonTight') > 0.5") changeCut(process,"selectedPatTausForWTauNuEmFraction","emFraction < 0.9") changeCut(process,"selectedPatTausForWTauNuIso","tauID('byMediumIsolation') > 0.5") #electron selection changeCut(process,"selectedPatElectronsTightId","electronID('eidLoose') > 0.5") changeCut(process,"selectedPatElectronsEta21","abs(eta) < 2.4") changeCut(process,"selectedPatElectronsPt15","pt > 15") #muon selection
# uncomment to add pfMET # set Boolean swich to true in order to apply type-1 corrections addPFMet(process, correct=False) # uncomment to replace caloMET by pfMET in all di-tau objects process.load("TauAnalysis.CandidateTools.diTauPairProductionAllKinds_cff") replaceMETforDiTaus(process, cms.InputTag('patMETs'), cms.InputTag('patPFMETs')) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # disable cuts on tau id. discriminators for Track && ECAL isolation (for both taus) changeCut(process, "selectedPatTausForDiTau1stTrkIso", "tauID('trackIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndTrkIso", "tauID('trackIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndTrkIsoLoose", "tauID('trackIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau1stEcalIso", "tauID('ecalIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndEcalIso", "tauID('ecalIsolation') > -1.") changeCut(process, "selectedPatTausForDiTau2ndEcalIsoLoose", "tauID('ecalIsolation') > -1.") # change cut on TaNC output in case using new HPS + TaNC combined tau id. algorithm # CV: discriminators by Track/ECAL isolation do not exist for the combined tau id. algorithm # and need to be replaced by dummy cuts, in order to avoid run-time exceptions changeCut(process, "selectedPatTausTrkIso", "tauID('byTaNCtight') > -1.")
cut_values['mt_only_loose_Muon_tightTau'] = copy.deepcopy(cut_values['loose']) cut_values['mt_only_loose_Muon_tightTau']['mt1MET'] = 50 cut_values['mt_only_loose_Muon_tightTau']['pzeta'] = -1e9 cut_values['mt_only_loose_Muon_tightTau']['zmumu_iso'] = 0.3 cut_values['mt_only_loose_Muon_tightTau']['muon_iso'] = _LOOSE_MUON_ISO cut_values['mt_only_loose_Muon_tightTau']['tanc'] = \ "tauID('%s') > 0.5" % _TAUID cuts = cut_values[_CUTS] # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # change muon Pt threshold to 15 GeV changeCut(process, "selectedPatMuonsPt15", "pt > %0.2f" % cuts['muon_pt']) # change muon eta acceptance changeCut(process, "selectedPatMuonsEta21", "abs(eta) < %0.2f" % cuts['muon_eta']) #print "WARNING CHANGING MU ETA CUT" #changeCut(process, "selectedPatMuonsEta21", "eta > -1.5 & eta < -1.4") # change tau pt threshold changeCut(process, "selectedPatTausForMuTauPt20", "pt > %0.2f" % cuts['tau_pt']) # change eta acceptance for tau-jets to |eta| < 2.3 changeCut(process, "selectedPatTausForMuTauEta23", "abs(eta) < %0.2f" % cuts['tau_eta'])
# switch to pfMET in all analysis sequences if hasattr(process, "patPFMETs"): process.muTauPairsBgEstQCDenriched.srcMET = cms.InputTag('patPFMETs') process.muTauPairsBgEstWplusJetsEnriched.srcMET = cms.InputTag('patPFMETs') #process.muTauPairsBgEstWplusJetsEnrichedFRweighted.srcMET = cms.InputTag('patPFMETs') process.muTauPairsBgEstTTplusJetsEnriched.srcMET = cms.InputTag('patPFMETs') process.muTauPairsBgEstZmumuJetMisIdEnriched.srcMET = cms.InputTag('patPFMETs') process.muTauPairsBgEstZmumuMuonMisIdEnriched.srcMET = cms.InputTag('patPFMETs') #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # change upper limit on tranverse impact parameter of muon track to 2mm changeCut(process, "selectedPatMuonsTrkIP", 0.2, attribute = "IpMax") # switch between TaNC and HPS tau id. discriminators changeCut(process, "selectedPatTausLeadTrk", "tauID('leadingTrackPtCut') > 0.5") changeCut(process, "selectedPatTausLeadTrkPt", "tauID('decayModeFinding') > 0.5") changeCut(process, "selectedPatTausForMuTauLeadTrk", "tauID('leadingTrackPtCut') > 0.5") changeCut(process, "selectedPatTausForMuTauLeadTrkPt", "tauID('decayModeFinding') > 0.5") #changeCut(process, "selectedPatTausTaNCdiscr", "tauID('byTaNCloose') > 0.5") #changeCut(process, "selectedPatTausForMuTauTaNCdiscr", "tauID('byTaNCloose') > 0.5") #changeCut(process, "tausBgEstQCDenrichedTaNCdiscr", "tauID('byTaNCvloose') > 0.5 & tauID('byTaNCmedium') < 0.5") #changeCut(process, "tausBgEstWplusJetsEnrichedTaNCdiscr", "tauID('byTaNCvloose') > 0.5 & tauID('byTaNCmedium') < 0.5") #changeCut(process, "tausBgEstWplusJetsEnrichedFRweightedTaNCdiscrNotApplied", "tauID('byTaNCvloose') > -1000. & tauID('byTaNCmedium') < +1000.") #changeCut(process, "tausBgEstZmumuJetMisIdEnrichedTaNCdiscr", "tauID('byTaNCvloose') > 0.5 & tauID('byTaNCmedium') < 0.5") changeCut(process, "selectedPatTausTaNCdiscr", "tauID('byLooseCombinedIsolationDeltaBetaCorr') > 0.5") changeCut(process, "selectedPatTausForMuTauTaNCdiscr", "tauID('byLooseCombinedIsolationDeltaBetaCorr') > 0.5") ## <<<<--------------- TAU ID changeCut(process, "tausBgEstQCDenrichedTaNCdiscr", "tauID('byVLooseIsolationDeltaBetaCorr') > 0.5 & tauID('byMediumIsolationDeltaBetaCorr') < 0.5")
process.load("TauAnalysis.CandidateTools.diTauPairProductionAllKinds_cff") metTools.replaceMETforDiTaus(process, cms.InputTag('patMETs'), cms.InputTag('patPFMETs')) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # do not produce momentum-corrected muons from TauAnalysis.RecoTools.patLeptonSelection_cff import patMuonSelConfigurator setattr(patMuonSelConfigurator, "src", "cleanPatMuons" ) process.selectPatMuons = patMuonSelConfigurator.configure(process = process) #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # make cut changes from TauAnalysis.Configuration.tools.changeCut import changeCut # update all tau discriminant to HPS types changeCut(process,"selectedPatTausLeadTrk",'tauID("decayModeFinding")') changeCut(process,"selectedPatTausLeadTrkPt",'tauID("decayModeFinding")') changeCut(process,"selectedPatTausTaNCdiscr",'tauID("byLooseCombinedIsolationDeltaBetaCorr")') #-------------------------------------------------------------------------------- # before starting to process 1st event, print event content process.printEventContent = cms.EDAnalyzer("EventContentAnalyzer") process.filterFirstEvent = cms.EDFilter("EventCountFilter", numEvents = cms.int32(1) ) process.n = cms.Path(process.filterFirstEvent + process.printEventContent) process.o = cms.Path(process.dataQualityFilters) # Define a generic end path that filters the final events that a pool
process.muTauPairsBgEstWplusJetsEnriched.srcMET = cms.InputTag('patPFMETs') #process.muTauPairsBgEstWplusJetsEnrichedFRweighted.srcMET = cms.InputTag('patPFMETs') process.muTauPairsBgEstTTplusJetsEnriched.srcMET = cms.InputTag( 'patPFMETs') process.muTauPairsBgEstZmumuJetMisIdEnriched.srcMET = cms.InputTag( 'patPFMETs') process.muTauPairsBgEstZmumuMuonMisIdEnriched.srcMET = cms.InputTag( 'patPFMETs') #-------------------------------------------------------------------------------- #-------------------------------------------------------------------------------- # import utility function for changing cut values from TauAnalysis.Configuration.tools.changeCut import changeCut # change upper limit on tranverse impact parameter of muon track to 2mm changeCut(process, "selectedPatMuonsTrkIP", 0.2, attribute="IpMax") # switch between TaNC and HPS tau id. discriminators changeCut(process, "selectedPatTausLeadTrk", "tauID('leadingTrackPtCut') > 0.5") changeCut(process, "selectedPatTausLeadTrkPt", "tauID('decayModeFinding') > 0.5") changeCut(process, "selectedPatTausForMuTauLeadTrk", "tauID('leadingTrackPtCut') > 0.5") changeCut(process, "selectedPatTausForMuTauLeadTrkPt", "tauID('decayModeFinding') > 0.5") #changeCut(process, "selectedPatTausTaNCdiscr", "tauID('byTaNCloose') > 0.5") #changeCut(process, "selectedPatTausForMuTauTaNCdiscr", "tauID('byTaNCloose') > 0.5") #changeCut(process, "tausBgEstQCDenrichedTaNCdiscr", "tauID('byTaNCvloose') > 0.5 & tauID('byTaNCmedium') < 0.5") #changeCut(process, "tausBgEstWplusJetsEnrichedTaNCdiscr", "tauID('byTaNCvloose') > 0.5 & tauID('byTaNCmedium') < 0.5") #changeCut(process, "tausBgEstWplusJetsEnrichedFRweightedTaNCdiscrNotApplied", "tauID('byTaNCvloose') > -1000. & tauID('byTaNCmedium') < +1000.")
def enableFakeRatesImpl(process, method=None, preselPatTauSource=None, tauIds=None, patTupleProdSequenceName=None, analyzers=None, histManagers=[], tauCuts=None, diTauCuts=[], selTauByDiTauModuleType=None, frSet='ewkTauIdHPSloose', recoTauProducerName='hpsPFTauProducer', recoTauPreselFlag='ewkTauId', patTauProducerName='patTaus', prePatProdSequenceName="producePrePat"): # check validity of method parameter if method is None: raise ValueError("Undefined method Parameter !!") else: if method != "simple" and method != "CDF": raise ValueError("Invalid method Parameter !!") # compute fake-rates weights and add computed values to pat::Taus configureFakeRateProductionPAT(process, recoTauProducerName, recoTauPreselFlag, patTauProducerName, frSet, method, prePatProdSequenceName) # disable cuts on tau id. discriminators # # NOTE: tau lead. track finding and lead. track Pt discriminators # must **not** be disabled, as these discriminators are already applied at the skimming stage !! # Instead, need to apply TauAnalysis specific efficiency/fake-rate values, # which represent the probability for a tau-jet candidate # passing the lead. track finding and lead. track Pt discriminators # to pass the track && ECAL isolation, 1||3 tracks in signal cone and charge = +/- 1 requirements as well # for source, new_cut in tauIds.items(): print "FR method: Disabling tauID cut: %s --> %s for fake rate method" % ( source, new_cut) changeCut(process, source, new_cut) # get list of fake-rates types to be processed frConfigParameters = getFakeRateConfigParameters(process) # Fill histograms only for events passing all event selection criteria for genAnalyzerName in analyzers: if not hasattr(process, genAnalyzerName): print "FR method: Can't add fake rate to analysis sequence %s" % genAnalyzerName, \ " it does not exist in the process !!" continue genAnalyzerModule = getattr(process, genAnalyzerName) print "FR method: Removing extra plots for analyzer: %s" % genAnalyzerName pruneAnalysisSequence(genAnalyzerModule) print "FR method: Disabling event dumps" if len(genAnalyzerModule.eventDumps): disabledEventDump = copy.deepcopy(genAnalyzerModule.eventDumps[0]) disabledEventDump.output = cms.string("std::cout") disabledEventDump.triggerConditions = cms.vstring() genAnalyzerModule.eventDumps[0] = disabledEventDump bgEstFakeRateAnalysisSequence = cms.Sequence() # for each type of fake-rate weights given as function argument, # duplicate analysis sequence with: # # 1.) tau id. discriminators not applied # 2.) events weighted by fake-rate instead # # NOTE: special care is needed to avoid double-counting in case there is # more than one (loosely selected) tau-jet candidate in the event when # filling histograms that are sensitive to the tau-jet multiplicity # for frType, frConfig in frConfigParameters.items(): print "FR method: Building frType:", frType # check if factorization is enabled; if so, apply fake-rate event # weights to analysis paths without/with muon isolation, else apply # fake-rate event weights to "standard" analysis path addFakeRateGenAnalyzerModule(process, genAnalyzerModule, histManagers, tauCuts, diTauCuts, selTauByDiTauModuleType, frType, frConfig, bgEstFakeRateAnalysisSequence) # for the purpose of making control plots for the data sample # selected in case no tau id. criteria are applied, # add analysis sequence with: # # 1.) tau id. discriminators not applied # 2.) events **not** weighted by fake-rate instead # print "FR method: Adding unweighted sequence" addGenAnalyzerModule(process, genAnalyzerModule, "frUnweighted", bgEstFakeRateAnalysisSequence) # in case method is "simple", # add analysis sequence with: # # 1.) with tau id. discriminators not applied # 2.) events weighted by tau id. efficiency # # for the purpose of checking the tau id. efficiency values # which are used by the "CDF" method. if method == "simple": process.bgEstFakeRateJetWeights.frTypes.tauIdEfficiency = cms.PSet( tauJetDiscriminators=cms.VPSet( cms.PSet(tauJetIdEffSource=cms.InputTag( frProdConfig['ZTTsim']), qcdJetFakeRateSource=cms.InputTag( frProdConfig['ZTTsim']), tauJetDiscrSource=cms.InputTag("ewkTauId")))) frConfig[frType] = {} frConfig[frType]['srcJetWeight'] = cms.InputTag( "bgEstFakeRateJetWeights", "tauIdEfficiency") frConfig[frType]['patLabel'] = "".join( ["bgEstFakeRateJetWeight", "_", "tauIdEfficiency"]) print "FR method: Using simple weights, adding ZTT eff" addFakeRateGenAnalyzerModule(process, genAnalyzerModule, histManagers, tauCuts, diTauCuts, selTauByDiTauModuleType, "tauIdEfficiency", frConfig, bgEstFakeRateAnalysisSequence) bgEstFakeRateAnalysisSequenceName = "bgEstFakeRateAnalysisSequenceX%s" % genAnalyzerName setattr(process, bgEstFakeRateAnalysisSequenceName, bgEstFakeRateAnalysisSequence) print "FR method: Replacing %s by the new sequence %s" % ( genAnalyzerName, bgEstFakeRateAnalysisSequenceName) process.p.replace(genAnalyzerModule, bgEstFakeRateAnalysisSequence) # enable checking of fake-rates and tau id. efficiencies # with event weights in tau-jet histogram manager print "FR method: Enabling weight consistency check" setattr(process.tauHistManager, "checkWeightConsistency", cms.bool(True))