def ElectronPath(process, conf): process.elePathPreCount = cms.EDProducer("EventCountProducer") process.efficiencyAnalyzerEle = cms.EDAnalyzer( 'EfficiencyAnalyzer', histogrammableCounters=cms.untracked.vstring(["elePath"]), elePath=cms.untracked.vstring([ "PATTotalEventsProcessedCount", "singleTopPathStep1ElePreCount", "singleTopPathStep1ElePostCount", "elePathPreCount", "elePathStepHLTsyncElePostCount", "elePathOneIsoElePostCount", "elePathLooseEleVetoElePostCount", "elePathLooseMuVetoElePostCount", "elePathNJetsPostCount", "elePathMetEleSequencePostCount", "elePathMBTagsPostCount" ])) process.elePath = cms.Path( process.elePathPreCount * process.stepHLTsyncEle * process.muIsoSequence * process.eleIsoSequence * process.goodSignalElectrons * process.electronCount * process.looseVetoElectrons * process.oneIsoEle * process.singleIsoEle * process.looseEleVetoEle * process.looseVetoMuons * process.looseMuVetoEle * process.jetSequence * process.nJets * process.metEleSequence * process.goodSignalLeptons * process.mBTags * process.topRecoSequenceEle # process.efficiencyAnalyzerEle ) #Insert debugging modules for printout if conf.doDebug: process.elePath.insert( process.elePath.index(process.oneIsoEle) + 1, process.oneIsoEleIDs) process.elePath.insert(process.elePath.index(process.oneIsoEle), process.electronAnalyzer) process.elePath.insert(process.elePath.index(process.looseEleVetoEle), process.electronVetoAnalyzer) process.elePath.insert( process.elePath.index(process.looseEleVetoEle) + 1, process.eleVetoIDs) process.elePath.insert( process.elePath.index(process.metEleSequence) + 1, process.metIDS) process.elePath.insert( process.elePath.index(process.nJets) + 1, process.NJetIDs) process.elePath.insert(process.elePath.index(process.metEleSequence), process.metAnalyzer) if conf.isMC: process.elePath.insert( process.elePath.index(process.singleIsoEle) + 1, process.electronWeightsProducer) #Produce the electron parentage decay tree string if conf.isMC and not conf.isSherpa: process.decayTreeProducerEle = cms.EDProducer( 'GenParticleDecayTreeProducer<pat::Electron>', src=cms.untracked.InputTag("singleIsoEle")) process.elePath.insert( process.elePath.index(process.singleIsoEle) + 1, process.decayTreeProducerEle) if conf.isMC and conf.channel == conf.Channel.signal: #Put the parton level study after the top reco sequence. process.elePath.insert( process.elePath.index(process.topRecoSequenceEle) + 1, process.partonStudyCompareSequence) eventCounting.countAfter(process, process.elePath, [ "stepHLTsyncEle", "oneIsoEle", "looseEleVetoEle", "looseMuVetoEle", "metEleSequence", "nJets", "mBTags" ])
def MuonPath(process, conf): process.muPathPreCount = cms.EDProducer("EventCountProducer") process.efficiencyAnalyzerMu = cms.EDAnalyzer('EfficiencyAnalyzer' , histogrammableCounters = cms.untracked.vstring(["muPath"]) , muPath = cms.untracked.vstring([ "PATTotalEventsProcessedCount", "singleTopPathStep1MuPreCount", "singleTopPathStep1MuPostCount", "muPathPreCount", "muPathStepHLTsyncMuPostCount", "muPathOneIsoMuPostCount", "muPathLooseMuVetoMuPostCount", "muPathLooseEleVetoMuPostCount", "muPathNJetsPostCount", "muPathMetMuSequencePostCount", "muPathMBTagsPostCount" ] )) process.muPath = cms.Path( process.muPathPreCount * #Optionally select the HLT process.stepHLTsyncMu * process.muIsoSequence * process.eleIsoSequence * #Select one isolated muon and veto additional loose muon/electron process.goodSignalMuons * process.muonCount * process.looseVetoMuons * process.looseVetoElectrons * process.oneIsoMu * process.singleIsoMu * #process.looseMuVetoMu * #process.looseEleVetoMu * #Do general jet cleaning, PU-jet cleaning and select 2 good jets process.jetSequence * process.nJets * #Select mu and MET invariant transverse mass OR the MET process.metMuSequence * process.mBTags * #Reconstruct the neutrino, the top quark and calculate the cosTheta* variable process.topRecoSequenceMu # process.efficiencyAnalyzerMu ) #Only do the parton identification in the signal channel if conf.isMC and conf.channel == conf.Channel.signal: process.muPath.insert( process.muPath.index(process.topRecoSequenceMu)+1, process.partonStudyCompareSequence ) if conf.doDebug: process.goodSignalMuAnalyzer = cms.EDAnalyzer("SimpleMuonAnalyzer", interestingCollections=cms.untracked.VInputTag("muonsWithIso", "goodSignalMuons")) process.vetoEleAnalyzer = cms.EDAnalyzer("SimpleElectronAnalyzer", interestingCollections=cms.untracked.VInputTag("looseVetoElectrons")) process.muPrintOutSequence = cms.Sequence(process.goodSignalMuAnalyzer*process.vetoEleAnalyzer) process.muPath.insert( process.muPath.index(process.oneIsoMu), process.muPrintOutSequence ) process.oneIsoMuID = cms.EDAnalyzer("EventIDAnalyzer", name=cms.untracked.string("oneIsoMuID")) process.muPath.insert( process.muPath.index(process.oneIsoMu)+1, process.oneIsoMuID ) process.nJetID = cms.EDAnalyzer("EventIDAnalyzer", name=cms.untracked.string("nJetID")) process.muPath.insert( process.muPath.index(process.nJets)+1, process.nJetID ) if conf.isMC: #Add muon scale factors process.muPath.insert( process.muPath.index(process.singleIsoMu)+1, process.muonWeightsProducer ) if conf.isMC and not conf.isSherpa: process.decayTreeProducerMu = cms.EDProducer( 'GenParticleDecayTreeProducer<pat::Muon>', src=cms.untracked.InputTag("singleIsoMu") ) process.muPath.insert( process.muPath.index(process.singleIsoMu)+1, process.decayTreeProducerMu ) #Count number of events passing the selection filters eventCounting.countAfter(process, process.muPath, [ "stepHLTsyncMu", "oneIsoMu", #"looseMuVetoMu", #"looseEleVetoMu", #"metMuSequence", "nJets", "mBTags" ] )
def ElectronPath(process, conf): process.elePathPreCount = cms.EDProducer("EventCountProducer") process.efficiencyAnalyzerEle = cms.EDAnalyzer('EfficiencyAnalyzer' , histogrammableCounters = cms.untracked.vstring(["elePath"]) , elePath = cms.untracked.vstring([ "PATTotalEventsProcessedCount", "singleTopPathStep1ElePreCount", "singleTopPathStep1ElePostCount", "elePathPreCount", "elePathStepHLTsyncElePostCount", "elePathOneIsoElePostCount", "elePathLooseEleVetoElePostCount", "elePathLooseMuVetoElePostCount", "elePathNJetsPostCount", "elePathMetEleSequencePostCount", "elePathMBTagsPostCount" ] )) process.elePath = cms.Path( process.elePathPreCount * process.stepHLTsyncEle * process.muIsoSequence * process.eleIsoSequence * process.goodSignalElectrons * process.electronCount * process.looseVetoElectrons * process.oneIsoEle * process.singleIsoEle * process.looseEleVetoEle * process.looseVetoMuons * process.looseMuVetoEle * process.jetSequence * process.nJets * process.metEleSequence * process.goodSignalLeptons * process.mBTags * process.topRecoSequenceEle # process.efficiencyAnalyzerEle ) #Insert debugging modules for printout if conf.doDebug: process.elePath.insert( process.elePath.index(process.oneIsoEle)+1, process.oneIsoEleIDs ) process.elePath.insert( process.elePath.index(process.oneIsoEle), process.electronAnalyzer ) process.elePath.insert( process.elePath.index(process.looseEleVetoEle), process.electronVetoAnalyzer ) process.elePath.insert( process.elePath.index(process.looseEleVetoEle)+1, process.eleVetoIDs ) process.elePath.insert( process.elePath.index(process.metEleSequence)+1, process.metIDS ) process.elePath.insert( process.elePath.index(process.nJets)+1, process.NJetIDs ) process.elePath.insert( process.elePath.index(process.metEleSequence), process.metAnalyzer ) if conf.isMC: process.elePath.insert( process.elePath.index(process.singleIsoEle)+1, process.electronWeightsProducer ) #Produce the electron parentage decay tree string if conf.isMC and not conf.isSherpa: process.decayTreeProducerEle = cms.EDProducer( 'GenParticleDecayTreeProducer<pat::Electron>', src=cms.untracked.InputTag("singleIsoEle") ) process.elePath.insert( process.elePath.index(process.singleIsoEle)+1, process.decayTreeProducerEle ) if conf.isMC and conf.channel == conf.Channel.signal: #Put the parton level study after the top reco sequence. process.elePath.insert( process.elePath.index(process.topRecoSequenceEle)+1, process.partonStudyCompareSequence ) eventCounting.countAfter(process, process.elePath, [ "stepHLTsyncEle", "oneIsoEle", "looseEleVetoEle", "looseMuVetoEle", "metEleSequence", "nJets", "mBTags" ] )
def MuonPath(process, conf): process.muPathPreCount = cms.EDProducer("EventCountProducer") process.efficiencyAnalyzerMu = cms.EDAnalyzer( 'EfficiencyAnalyzer', histogrammableCounters=cms.untracked.vstring(["muPath"]), muPath=cms.untracked.vstring([ "PATTotalEventsProcessedCount", "singleTopPathStep1MuPreCount", "singleTopPathStep1MuPostCount", "muPathPreCount", "muPathStepHLTsyncMuPostCount", "muPathOneIsoMuPostCount", "muPathLooseMuVetoMuPostCount", "muPathLooseEleVetoMuPostCount", "muPathNJetsPostCount", "muPathMetMuSequencePostCount", "muPathMBTagsPostCount" ])) process.muPath = cms.Path( process.muPathPreCount * #Optionally select the HLT process.stepHLTsyncMu * process.muIsoSequence * process.eleIsoSequence * #Select one isolated muon and veto additional loose muon/electron process.goodSignalMuons * process.muonCount * process.looseVetoMuons * process.looseVetoElectrons * process.oneIsoMu * process.singleIsoMu * #process.looseMuVetoMu * #process.looseEleVetoMu * #Do general jet cleaning, PU-jet cleaning and select 2 good jets process.jetSequence * process.nJets * #Select mu and MET invariant transverse mass OR the MET process.metMuSequence * process.mBTags * #Reconstruct the neutrino, the top quark and calculate the cosTheta* variable process.topRecoSequenceMu # process.efficiencyAnalyzerMu ) #Only do the parton identification in the signal channel if conf.isMC and conf.channel == conf.Channel.signal: process.muPath.insert( process.muPath.index(process.topRecoSequenceMu) + 1, process.partonStudyCompareSequence) if conf.doDebug: process.goodSignalMuAnalyzer = cms.EDAnalyzer( "SimpleMuonAnalyzer", interestingCollections=cms.untracked.VInputTag( "muonsWithIso", "goodSignalMuons")) process.vetoEleAnalyzer = cms.EDAnalyzer( "SimpleElectronAnalyzer", interestingCollections=cms.untracked.VInputTag( "looseVetoElectrons")) process.muPrintOutSequence = cms.Sequence( process.goodSignalMuAnalyzer * process.vetoEleAnalyzer) process.muPath.insert(process.muPath.index(process.oneIsoMu), process.muPrintOutSequence) process.oneIsoMuID = cms.EDAnalyzer( "EventIDAnalyzer", name=cms.untracked.string("oneIsoMuID")) process.muPath.insert( process.muPath.index(process.oneIsoMu) + 1, process.oneIsoMuID) process.nJetID = cms.EDAnalyzer("EventIDAnalyzer", name=cms.untracked.string("nJetID")) process.muPath.insert( process.muPath.index(process.nJets) + 1, process.nJetID) if conf.isMC: #Add muon scale factors process.muPath.insert( process.muPath.index(process.singleIsoMu) + 1, process.muonWeightsProducer) if conf.isMC and not conf.isSherpa: process.decayTreeProducerMu = cms.EDProducer( 'GenParticleDecayTreeProducer<pat::Muon>', src=cms.untracked.InputTag("singleIsoMu")) process.muPath.insert( process.muPath.index(process.singleIsoMu) + 1, process.decayTreeProducerMu) #Count number of events passing the selection filters eventCounting.countAfter( process, process.muPath, [ "stepHLTsyncMu", "oneIsoMu", #"looseMuVetoMu", #"looseEleVetoMu", #"metMuSequence", "nJets", "mBTags" ])