def addGenuineTauPreselection(process, sequence, param, prefix="genuineTauPreselection", pileupWeight=None, maxGenTaus=None): counters = [] genTauSequence = cms.Sequence() # Create PU weight producer for the counters if pileupWeight == None: puModule = cms.EDProducer( "HPlusVertexWeightProducer", alias=cms.string("pileupWeight"), histogramAmbientLevel=cms.untracked.string("Systematics")) HChTools.insertPSetContentsTo(param.vertexWeight.clone(), puModule) pileupWeight = prefix + "PileupWeight" setattr(process, pileupWeight, puModule) genTauSequence *= puModule counterPrototype = cms.EDProducer("HPlusEventCountProducer", weightSrc=cms.InputTag(pileupWeight)) allCount = counterPrototype.clone() setattr(process, prefix + "AllCount", allCount) counters.append(prefix + "AllCount") # Generator taus (if you modify this, remember to modify similar in below) genTaus = cms.EDFilter("GenParticleSelector", src=cms.InputTag("genParticles"), cut=cms.string(generatorTauSelection % generatorTauPt)) genTausName = prefix + "GenTau" setattr(process, genTausName, genTaus) if maxGenTaus is not None: genTausFilter = cms.EDFilter( "PATCandViewCountFilter", src=cms.InputTag(genTausName), minNumber=cms.uint32(1), maxNumber=cms.uint32(maxGenTaus), ) else: genTausFilter = cms.EDFilter( "CandViewCountFilter", src=cms.InputTag(genTausName), minNumber=cms.uint32(1), ) setattr(process, prefix + "GenTauFilter", genTausFilter) genTausCount = counterPrototype.clone() setattr(process, prefix + "GenTauCount", genTausCount) counters.append(prefix + "GenTauCount") genTauSequence *= (allCount * genTaus * genTausFilter * genTausCount) setattr(process, prefix + "Sequence", genTauSequence) sequence *= genTauSequence return counters
def addGenuineTauPreselection(process, sequence, param, prefix="genuineTauPreselection", pileupWeight=None, maxGenTaus=None): counters = [] genTauSequence = cms.Sequence() # Create PU weight producer for the counters if pileupWeight == None: puModule = cms.EDProducer("HPlusVertexWeightProducer", alias = cms.string("pileupWeight"), histogramAmbientLevel = cms.untracked.string("Systematics") ) HChTools.insertPSetContentsTo(param.vertexWeight.clone(), puModule) pileupWeight = prefix+"PileupWeight" setattr(process, pileupWeight, puModule) genTauSequence *= puModule counterPrototype = cms.EDProducer("HPlusEventCountProducer", weightSrc = cms.InputTag(pileupWeight) ) allCount = counterPrototype.clone() setattr(process, prefix+"AllCount", allCount) counters.append(prefix+"AllCount") # Generator taus (if you modify this, remember to modify similar in below) genTaus = cms.EDFilter("GenParticleSelector", src = cms.InputTag("genParticles"), cut = cms.string(generatorTauSelection % generatorTauPt) ) genTausName = prefix+"GenTau" setattr(process, genTausName, genTaus) if maxGenTaus is not None: genTausFilter = cms.EDFilter("PATCandViewCountFilter", src = cms.InputTag(genTausName), minNumber = cms.uint32(1), maxNumber = cms.uint32(maxGenTaus), ) else: genTausFilter = cms.EDFilter("CandViewCountFilter", src = cms.InputTag(genTausName), minNumber = cms.uint32(1), ) setattr(process, prefix+"GenTauFilter", genTausFilter) genTausCount = counterPrototype.clone() setattr(process, prefix+"GenTauCount", genTausCount) counters.append(prefix+"GenTauCount") genTauSequence *= ( allCount * genTaus * genTausFilter * genTausCount ) setattr(process, prefix+"Sequence", genTauSequence) sequence *= genTauSequence return counters
def addGenuineTauPreselection(process, sequence, param, prefix="genuineTauPreselection"): counters = [] # Create PU weight producer for the counters pileupWeight = cms.EDProducer("HPlusVertexWeightProducer", alias = cms.string("pileupWeight"), ) HChTools.insertPSetContentsTo(param.vertexWeight.clone(), pileupWeight) setattr(process, prefix+"PileupWeight", pileupWeight) counterPrototype = cms.EDProducer("HPlusEventCountProducer", weightSrc = cms.InputTag(prefix+"PileupWeight") ) allCount = counterPrototype.clone() setattr(process, prefix+"AllCount", allCount) counters.append(prefix+"AllCount") # Generator taus (if you modify this, remember to modify similar in below) genTaus = cms.EDFilter("GenParticleSelector", src = cms.InputTag("genParticles"), cut = cms.string("abs(pdgId()) == 15 && pt() > 40 && abs(eta()) < 2.1") ) genTausName = prefix+"GenTau" setattr(process, genTausName, genTaus) genTausFilter = cms.EDFilter("CandViewCountFilter", src = cms.InputTag(genTausName), minNumber = cms.uint32(1), ) setattr(process, prefix+"GenTauFilter", genTausFilter) genTausCount = counterPrototype.clone() setattr(process, prefix+"GenTauCount", genTausCount) counters.append(prefix+"GenTauCount") genTauSequence = cms.Sequence( pileupWeight * allCount * genTaus * genTausFilter * genTausCount ) setattr(process, prefix+"Sequence", genTauSequence) sequence *= genTauSequence return counters
def addEmbeddingLikePreselection(process, sequence, param, prefix="embeddingLikePreselection", disableTrigger=True, pileupWeight=None, selectOnlyFirstGenTau=False, maxGenTaus=None): counters = [] genTauSequence = cms.Sequence() # Create PU weight producer for the counters if pileupWeight == None: puModule = cms.EDProducer("HPlusVertexWeightProducer", alias = cms.string("pileupWeight"), histogramAmbientLevel = cms.untracked.string("Systematics") ) HChTools.insertPSetContentsTo(param.vertexWeight.clone(), puModule) pileupWeight = prefix+"PileupWeight" setattr(process, pileupWeight, puModule) genTauSequence *= puModule counterPrototype = cms.EDProducer("HPlusEventCountProducer", weightSrc = cms.InputTag(pileupWeight) ) # Disable trigger if disableTrigger: param.trigger.selectionType = "disabled" param.tauTriggerEfficiencyScaleFactor.mode = "disabled" param.metTriggerEfficiencyScaleFactor.mode = "disabled" allCount = counterPrototype.clone() setattr(process, prefix+"AllCount", allCount) genTauSequence *= allCount counters.append(prefix+"AllCount") # Primary vertex pvFilter = cms.EDFilter("VertexCountFilter", src = cms.InputTag("selectedPrimaryVertex"), minNumber = cms.uint32(1), maxNumber = cms.uint32(999) ) pvFilterCount = counterPrototype.clone() setattr(process, prefix+"PrimaryVertex", pvFilter) setattr(process, prefix+"PrimaryVertexCount", pvFilterCount) genTauSequence *= (pvFilter * pvFilterCount) counters.append(prefix+"PrimaryVertexCount") # Generator taus (if you modify this, remember to modify similar in above) genTaus = cms.EDFilter("GenParticleSelector", src = cms.InputTag("genParticles"), cut = cms.string(generatorTauSelection % generatorTauPt) ) genTausName = prefix+"GenTau" setattr(process, genTausName, genTaus) genTauSequence *= genTaus if maxGenTaus is not None: genTausFilter = cms.EDFilter("PATCandViewCountFilter", src = cms.InputTag(genTausName), minNumber = cms.uint32(1), maxNumber = cms.uint32(maxGenTaus), ) else: genTausFilter = cms.EDFilter("CandViewCountFilter", src = cms.InputTag(genTausName), minNumber = cms.uint32(1), ) setattr(process, prefix+"GenTauFilter", genTausFilter) genTauSequence *= genTausFilter genTausCount = counterPrototype.clone() setattr(process, prefix+"GenTauCount", genTausCount) genTauSequence *= genTausCount counters.append(prefix+"GenTauCount") # Select first generator tau for e/mu veto, and if the flag is # true, also for the jet cleaning and tau selection genTauFirst = cms.EDProducer("HPlusFirstGenParticleSelector", src = cms.InputTag(genTausName) ) genTauFirstName = prefix+"GenTauFirst" setattr(process, genTauFirstName, genTauFirst) genTauSequence *= genTauFirst if selectOnlyFirstGenTau: genTausName = genTauFirstName genTausVisible = cms.EDProducer("HPlusGenVisibleTauComputer", src = cms.InputTag(genTausName) ) genTausVisibleName = prefix+"GenTauVisible" setattr(process, genTausVisibleName, genTausVisible) genTauSequence *= genTausVisible genTauFirstVisible = cms.EDProducer("HPlusGenVisibleTauComputer", src = cms.InputTag(genTauFirstName) ) genTauFirstVisibleName = prefix+"GenTauFirstVisible" setattr(process, genTauFirstVisibleName, genTauFirstVisible) genTauSequence *= genTauFirstVisible # Tau selection # genTauReco = cms.EDProducer("HPlusPATTauCandViewClosestDeltaRSelector", # src = cms.InputTag("selectedPatTausHpsPFTau"), # refSrc = cms.InputTag(genTausName), # maxDeltaR = cms.double(0.5), # ) genTauReco = cms.EDProducer("HPlusPATTauLorentzVectorViewClosestDeltaRSelector", # src = cms.InputTag("selectedPatTaus"+PF2PATVersion), # not trigger matched # src = cms.InputTag("selectedPatTausHpsPFTau"), # 2011 src = cms.InputTag("selectedPatTaus"), refSrc = cms.InputTag(genTausVisibleName), maxDeltaR = cms.double(0.5), ) # if PF2PATVersion != "": # raise Exception("I don't support PF2PAT at the moment") if not disableTrigger: genTauReco.src = param.tauSelection.src.value() genTauRecoName = prefix+"TauMCMatched" setattr(process, genTauRecoName, genTauReco) genTauSequence *= genTauReco param.tauSelection.src = genTauRecoName genTauFirstReco = genTauReco.clone( refSrc = genTauFirstVisibleName ) genTauFirstRecoName = prefix+"FirstTauMCMatched" setattr(process, genTauFirstRecoName, genTauFirstReco) genTauSequence *= genTauFirstReco if not selectOnlyFirstGenTau: # Select the tau candidate which is most likely going to pass the identification genTauSelected = cms.EDProducer("HPlusPATTauMostLikelyIdentifiedSelector", eventCounter = param.eventCounter.clone(enabled = cms.untracked.bool(False)), tauSelection = param.tauSelection.clone(), vertexSrc = cms.InputTag(param.primaryVertexSelection.selectedSrc.value()), histogramAmbientLevel = cms.untracked.string("Systematics"), ) genTauSelectedName = prefix+"TauSelected" setattr(process, genTauSelectedName, genTauSelected) genTauSequence *= genTauSelected param.tauSelection.src = genTauSelectedName genTauCleanPSet = cms.PSet( # src = cms.InputTag(param.tauSelection.src.value()), src = cms.InputTag(genTauFirstRecoName), algorithm = cms.string("byDeltaR"), preselection = cms.string(""), deltaR = cms.double(0.5), checkRecoComponents = cms.bool(False), pairCut = cms.string(""), requireNoOverlaps = cms.bool(True), ) # Clean the selected generator tau from the electrons and muons # for the e/mu veto. We don't want to reject events where the e/mu # comes from the tau decay. from PhysicsTools.PatAlgos.cleaningLayer1.electronCleaner_cfi import cleanPatElectrons from PhysicsTools.PatAlgos.cleaningLayer1.muonCleaner_cfi import cleanPatMuons cleanedElectrons = cleanPatElectrons.clone( src = cms.InputTag(param.ElectronSelection.ElectronCollectionName.value()), checkOverlaps = cms.PSet( genTaus = genTauCleanPSet.clone() ) ) cleanedElectronsName = prefix+"CleanedElectrons" param.ElectronSelection.ElectronCollectionName = cleanedElectronsName setattr(process, cleanedElectronsName, cleanedElectrons) cleanedMuons = cleanPatMuons.clone( src = cms.InputTag(param.MuonSelection.MuonCollectionName.value()), checkOverlaps = cms.PSet( genTaus = genTauCleanPSet.clone() ) ) cleanedMuonsName = prefix+"CleanedMuons" param.MuonSelection.MuonCollectionName = cleanedMuonsName setattr(process, cleanedMuonsName, cleanedMuons) genTauSequence *= (cleanedElectrons * cleanedMuons) # Electron and muon veto import HiggsAnalysis.HeavyChHiggsToTauNu.HChGlobalElectronVetoFilter_cfi as ElectronVeto eveto = ElectronVeto.hPlusGlobalElectronVetoFilter.clone( histogramAmbientLevel = "Systematics" ) eveto.eventCounter.enabled = cms.untracked.bool(False) evetoCount = counterPrototype.clone() import HiggsAnalysis.HeavyChHiggsToTauNu.HChGlobalMuonVetoFilter_cfi as MuonVeto muveto = MuonVeto.hPlusGlobalMuonVetoFilter.clone( histogramAmbientLevel = "Systematics" ) muveto.eventCounter.enabled = cms.untracked.bool(False) muvetoCount = counterPrototype.clone() setattr(process, prefix+"ElectronVeto", eveto) setattr(process, prefix+"ElectronVetoCount", evetoCount) setattr(process, prefix+"MuonVeto", muveto) setattr(process, prefix+"MuonVetoCount", muvetoCount) counters.extend([prefix+"ElectronVetoCount", prefix+"MuonVetoCount"]) genTauSequence *= ( eveto * evetoCount * muveto * muvetoCount ) # 3 jets # from PhysicsTools.PatAlgos.cleaningLayer1.jetCleaner_cfi import cleanPatJets # cleanedJets = cleanPatJets.clone( # src = cms.InputTag(param.jetSelection.src.value()), # preselection = cms.string(jetSelection), # checkOverlaps = cms.PSet( # genTaus = genTauCleanPSet.clone() # ) # ) # cleanedJetsName = prefix+"CleanedJets" # setattr(process, cleanedJetsName, cleanedJets) # cleanedJetsFilter = cms.EDFilter("CandViewCountFilter", # src = cms.InputTag(cleanedJetsName), # minNumber = cms.uint32(3) # ) # setattr(process, cleanedJetsName+"Filter", cleanedJetsFilter) import HiggsAnalysis.HeavyChHiggsToTauNu.HChJetFilter_cfi as jetFilter_cfi cleanedJets = jetFilter_cfi.hPlusJetPtrSelectorFilter.clone( tauSrc = param.tauSelection.src.value(), allowEmptyTau = True, histogramAmbientLevel = "Systematics", ) cleanedJets.eventCounter.enabled = cms.untracked.bool(False) cleanedJetsName = prefix+"CleanedJets" setattr(process, cleanedJetsName, cleanedJets) cleanedJetsCount = counterPrototype.clone() setattr(process, cleanedJetsName+"Count", cleanedJetsCount) counters.append(cleanedJetsName+"Count") genTauSequence *= ( cleanedJets * #cleanedJetsFilter * cleanedJetsCount ) setattr(process, prefix+"Sequence", genTauSequence) sequence *= genTauSequence return counters
def addEmbeddingLikePreselection(process, sequence, param, prefix="embeddingLikePreselection", disableTrigger=True): counters = [] # Create PU weight producer for the counters pileupWeight = cms.EDProducer("HPlusVertexWeightProducer", alias = cms.string("pileupWeight"), ) HChTools.insertPSetContentsTo(param.vertexWeight.clone(), pileupWeight) setattr(process, prefix+"PileupWeight", pileupWeight) counterPrototype = cms.EDProducer("HPlusEventCountProducer", weightSrc = cms.InputTag(prefix+"PileupWeight") ) # Disable trigger if disableTrigger: param.trigger.selectionType = "disabled" param.triggerEfficiencyScaleFactor.mode = "disabled" allCount = counterPrototype.clone() setattr(process, prefix+"AllCount", allCount) counters.append(prefix+"AllCount") # Primary vertex pvFilter = cms.EDFilter("VertexCountFilter", src = cms.InputTag("selectedPrimaryVertex"), minNumber = cms.uint32(1), maxNumber = cms.uint32(999) ) pvFilterCount = counterPrototype.clone() setattr(process, prefix+"PrimaryVertex", pvFilter) setattr(process, prefix+"PrimaryVertexCount", pvFilterCount) counters.append(prefix+"PrimaryVertexCount") # Generator taus (if you modify this, remember to modify similar in above) genTaus = cms.EDFilter("GenParticleSelector", src = cms.InputTag("genParticles"), cut = cms.string("abs(pdgId()) == 15 && pt() > 40 && abs(eta()) < 2.1") ) genTausName = prefix+"GenTau" setattr(process, genTausName, genTaus) genTausFilter = cms.EDFilter("CandViewCountFilter", src = cms.InputTag(genTausName), minNumber = cms.uint32(1), ) setattr(process, prefix+"GenTauFilter", genTausFilter) genTausCount = counterPrototype.clone() setattr(process, prefix+"GenTauCount", genTausCount) counters.append(prefix+"GenTauCount") # Select first generator tau for the jet cleaning and tau selection genTauFirst = cms.EDProducer("HPlusFirstCandidateSelector", src = cms.InputTag(genTausName) ) genTauFirstName = prefix+"First" setattr(process, genTauFirstName, genTauFirst) # Tau selection genTauReco = cms.EDProducer("HPlusPATTauCandViewDeltaRSelector", src = cms.InputTag("selectedPatTausHpsPFTau"), # not trigger matched refSrc = cms.InputTag(genTauFirstName), deltaR = cms.double(0.5), ) if not disableTrigger: genTauReco.src = param.tauSelection.src.value() genTauRecoName = prefix+"Reco" setattr(process, genTauRecoName, genTauReco) param.tauSelection.src = genTauRecoName genTauCleanPSet = cms.PSet( src = cms.InputTag(genTauFirstName), algorithm = cms.string("byDeltaR"), preselection = cms.string(""), deltaR = cms.double(0.5), checkRecoComponents = cms.bool(False), pairCut = cms.string(""), requireNoOverlaps = cms.bool(True), ) # Clean the selected generator tau from the electrons and muons # for the e/mu veto. We don't want to reject events where the e/mu # comes from the tau decay. from PhysicsTools.PatAlgos.cleaningLayer1.electronCleaner_cfi import cleanPatElectrons from PhysicsTools.PatAlgos.cleaningLayer1.muonCleaner_cfi import cleanPatMuons cleanedElectrons = cleanPatElectrons.clone( src = cms.InputTag(param.GlobalElectronVeto.ElectronCollectionName.value()), checkOverlaps = cms.PSet( genTaus = genTauCleanPSet.clone() ) ) cleanedElectronsName = prefix+"CleanedElectrons" param.GlobalElectronVeto.ElectronCollectionName = cleanedElectronsName setattr(process, cleanedElectronsName, cleanedElectrons) cleanedMuons = cleanPatMuons.clone( src = cms.InputTag(param.GlobalMuonVeto.MuonCollectionName.value()), checkOverlaps = cms.PSet( genTaus = genTauCleanPSet.clone() ) ) cleanedMuonsName = prefix+"CleanedMuons" param.GlobalMuonVeto.MuonCollectionName = cleanedMuonsName setattr(process, cleanedMuonsName, cleanedMuons) # Electron and muon veto eveto = ElectronVeto.hPlusGlobalElectronVetoFilter.clone() evetoCount = counterPrototype.clone() muveto = MuonVeto.hPlusGlobalMuonVetoFilter.clone() muvetoCount = counterPrototype.clone() setattr(process, prefix+"ElectronVeto", eveto) setattr(process, prefix+"ElectronVetoCount", evetoCount) setattr(process, prefix+"MuonVeto", muveto) setattr(process, prefix+"MuonVetoCount", muvetoCount) counters.extend([prefix+"ElectronVetoCount", prefix+"MuonVetoCount"]) # 3 jets from PhysicsTools.PatAlgos.cleaningLayer1.jetCleaner_cfi import cleanPatJets cleanedJets = cleanPatJets.clone( src = cms.InputTag(param.jetSelection.src.value()), preselection = cms.string(jetSelection), checkOverlaps = cms.PSet( genTaus = genTauCleanPSet.clone() ) ) cleanedJetsName = prefix+"CleanedJets" setattr(process, cleanedJetsName, cleanedJets) cleanedJetsFilter = cms.EDFilter("CandViewCountFilter", src = cms.InputTag(cleanedJetsName), minNumber = cms.uint32(3) ) setattr(process, cleanedJetsName+"Filter", cleanedJetsFilter) cleanedJetsCount = counterPrototype.clone() setattr(process, cleanedJetsName+"Count", cleanedJetsCount) counters.append(cleanedJetsName+"Count") genTauSequence = cms.Sequence( pileupWeight * allCount * pvFilter * pvFilterCount * genTaus * genTausFilter * genTausCount * genTauFirst * genTauReco * cleanedElectrons * cleanedMuons * eveto * evetoCount * muveto * muvetoCount * cleanedJets * cleanedJetsFilter * cleanedJetsCount ) setattr(process, prefix+"Sequence", genTauSequence) sequence *= genTauSequence return counters
def addEmbeddingLikePreselection(process, sequence, param, prefix="embeddingLikePreselection", disableTrigger=True, pileupWeight=None, selectOnlyFirstGenTau=False, maxGenTaus=None): counters = [] genTauSequence = cms.Sequence() # Create PU weight producer for the counters if pileupWeight == None: puModule = cms.EDProducer( "HPlusVertexWeightProducer", alias=cms.string("pileupWeight"), histogramAmbientLevel=cms.untracked.string("Systematics")) HChTools.insertPSetContentsTo(param.vertexWeight.clone(), puModule) pileupWeight = prefix + "PileupWeight" setattr(process, pileupWeight, puModule) genTauSequence *= puModule counterPrototype = cms.EDProducer("HPlusEventCountProducer", weightSrc=cms.InputTag(pileupWeight)) # Disable trigger if disableTrigger: param.trigger.selectionType = "disabled" param.tauTriggerEfficiencyScaleFactor.mode = "disabled" param.metTriggerEfficiencyScaleFactor.mode = "disabled" allCount = counterPrototype.clone() setattr(process, prefix + "AllCount", allCount) genTauSequence *= allCount counters.append(prefix + "AllCount") # Primary vertex pvFilter = cms.EDFilter("VertexCountFilter", src=cms.InputTag("selectedPrimaryVertex"), minNumber=cms.uint32(1), maxNumber=cms.uint32(999)) pvFilterCount = counterPrototype.clone() setattr(process, prefix + "PrimaryVertex", pvFilter) setattr(process, prefix + "PrimaryVertexCount", pvFilterCount) genTauSequence *= (pvFilter * pvFilterCount) counters.append(prefix + "PrimaryVertexCount") # Generator taus (if you modify this, remember to modify similar in above) genTaus = cms.EDFilter("GenParticleSelector", src=cms.InputTag("genParticles"), cut=cms.string(generatorTauSelection % generatorTauPt)) genTausName = prefix + "GenTau" setattr(process, genTausName, genTaus) genTauSequence *= genTaus if maxGenTaus is not None: genTausFilter = cms.EDFilter( "PATCandViewCountFilter", src=cms.InputTag(genTausName), minNumber=cms.uint32(1), maxNumber=cms.uint32(maxGenTaus), ) else: genTausFilter = cms.EDFilter( "CandViewCountFilter", src=cms.InputTag(genTausName), minNumber=cms.uint32(1), ) setattr(process, prefix + "GenTauFilter", genTausFilter) genTauSequence *= genTausFilter genTausCount = counterPrototype.clone() setattr(process, prefix + "GenTauCount", genTausCount) genTauSequence *= genTausCount counters.append(prefix + "GenTauCount") # Select first generator tau for e/mu veto, and if the flag is # true, also for the jet cleaning and tau selection genTauFirst = cms.EDProducer("HPlusFirstGenParticleSelector", src=cms.InputTag(genTausName)) genTauFirstName = prefix + "GenTauFirst" setattr(process, genTauFirstName, genTauFirst) genTauSequence *= genTauFirst if selectOnlyFirstGenTau: genTausName = genTauFirstName genTausVisible = cms.EDProducer("HPlusGenVisibleTauComputer", src=cms.InputTag(genTausName)) genTausVisibleName = prefix + "GenTauVisible" setattr(process, genTausVisibleName, genTausVisible) genTauSequence *= genTausVisible genTauFirstVisible = cms.EDProducer("HPlusGenVisibleTauComputer", src=cms.InputTag(genTauFirstName)) genTauFirstVisibleName = prefix + "GenTauFirstVisible" setattr(process, genTauFirstVisibleName, genTauFirstVisible) genTauSequence *= genTauFirstVisible # Tau selection # genTauReco = cms.EDProducer("HPlusPATTauCandViewClosestDeltaRSelector", # src = cms.InputTag("selectedPatTausHpsPFTau"), # refSrc = cms.InputTag(genTausName), # maxDeltaR = cms.double(0.5), # ) genTauReco = cms.EDProducer( "HPlusPATTauLorentzVectorViewClosestDeltaRSelector", # src = cms.InputTag("selectedPatTaus"+PF2PATVersion), # not trigger matched # src = cms.InputTag("selectedPatTausHpsPFTau"), # 2011 src=cms.InputTag("selectedPatTaus"), refSrc=cms.InputTag(genTausVisibleName), maxDeltaR=cms.double(0.5), ) # if PF2PATVersion != "": # raise Exception("I don't support PF2PAT at the moment") if not disableTrigger: genTauReco.src = param.tauSelection.src.value() genTauRecoName = prefix + "TauMCMatched" setattr(process, genTauRecoName, genTauReco) genTauSequence *= genTauReco param.tauSelection.src = genTauRecoName genTauFirstReco = genTauReco.clone(refSrc=genTauFirstVisibleName) genTauFirstRecoName = prefix + "FirstTauMCMatched" setattr(process, genTauFirstRecoName, genTauFirstReco) genTauSequence *= genTauFirstReco if not selectOnlyFirstGenTau: # Select the tau candidate which is most likely going to pass the identification genTauSelected = cms.EDProducer( "HPlusPATTauMostLikelyIdentifiedSelector", eventCounter=param.eventCounter.clone( enabled=cms.untracked.bool(False)), tauSelection=param.tauSelection.clone(), vertexSrc=cms.InputTag( param.primaryVertexSelection.selectedSrc.value()), histogramAmbientLevel=cms.untracked.string("Systematics"), ) genTauSelectedName = prefix + "TauSelected" setattr(process, genTauSelectedName, genTauSelected) genTauSequence *= genTauSelected param.tauSelection.src = genTauSelectedName genTauCleanPSet = cms.PSet( # src = cms.InputTag(param.tauSelection.src.value()), src=cms.InputTag(genTauFirstRecoName), algorithm=cms.string("byDeltaR"), preselection=cms.string(""), deltaR=cms.double(0.5), checkRecoComponents=cms.bool(False), pairCut=cms.string(""), requireNoOverlaps=cms.bool(True), ) # Clean the selected generator tau from the electrons and muons # for the e/mu veto. We don't want to reject events where the e/mu # comes from the tau decay. from PhysicsTools.PatAlgos.cleaningLayer1.electronCleaner_cfi import cleanPatElectrons from PhysicsTools.PatAlgos.cleaningLayer1.muonCleaner_cfi import cleanPatMuons cleanedElectrons = cleanPatElectrons.clone( src=cms.InputTag( param.ElectronSelection.ElectronCollectionName.value()), checkOverlaps=cms.PSet(genTaus=genTauCleanPSet.clone())) cleanedElectronsName = prefix + "CleanedElectrons" param.ElectronSelection.ElectronCollectionName = cleanedElectronsName setattr(process, cleanedElectronsName, cleanedElectrons) cleanedMuons = cleanPatMuons.clone( src=cms.InputTag(param.MuonSelection.MuonCollectionName.value()), checkOverlaps=cms.PSet(genTaus=genTauCleanPSet.clone())) cleanedMuonsName = prefix + "CleanedMuons" param.MuonSelection.MuonCollectionName = cleanedMuonsName setattr(process, cleanedMuonsName, cleanedMuons) genTauSequence *= (cleanedElectrons * cleanedMuons) # Electron and muon veto import HiggsAnalysis.HeavyChHiggsToTauNu.HChGlobalElectronVetoFilter_cfi as ElectronVeto eveto = ElectronVeto.hPlusGlobalElectronVetoFilter.clone( histogramAmbientLevel="Systematics") eveto.eventCounter.enabled = cms.untracked.bool(False) evetoCount = counterPrototype.clone() import HiggsAnalysis.HeavyChHiggsToTauNu.HChGlobalMuonVetoFilter_cfi as MuonVeto muveto = MuonVeto.hPlusGlobalMuonVetoFilter.clone( histogramAmbientLevel="Systematics") muveto.eventCounter.enabled = cms.untracked.bool(False) muvetoCount = counterPrototype.clone() setattr(process, prefix + "ElectronVeto", eveto) setattr(process, prefix + "ElectronVetoCount", evetoCount) setattr(process, prefix + "MuonVeto", muveto) setattr(process, prefix + "MuonVetoCount", muvetoCount) counters.extend([prefix + "ElectronVetoCount", prefix + "MuonVetoCount"]) genTauSequence *= (eveto * evetoCount * muveto * muvetoCount) # 3 jets # from PhysicsTools.PatAlgos.cleaningLayer1.jetCleaner_cfi import cleanPatJets # cleanedJets = cleanPatJets.clone( # src = cms.InputTag(param.jetSelection.src.value()), # preselection = cms.string(jetSelection), # checkOverlaps = cms.PSet( # genTaus = genTauCleanPSet.clone() # ) # ) # cleanedJetsName = prefix+"CleanedJets" # setattr(process, cleanedJetsName, cleanedJets) # cleanedJetsFilter = cms.EDFilter("CandViewCountFilter", # src = cms.InputTag(cleanedJetsName), # minNumber = cms.uint32(3) # ) # setattr(process, cleanedJetsName+"Filter", cleanedJetsFilter) import HiggsAnalysis.HeavyChHiggsToTauNu.HChJetFilter_cfi as jetFilter_cfi cleanedJets = jetFilter_cfi.hPlusJetPtrSelectorFilter.clone( tauSrc=param.tauSelection.src.value(), allowEmptyTau=True, histogramAmbientLevel="Systematics", ) cleanedJets.eventCounter.enabled = cms.untracked.bool(False) cleanedJetsName = prefix + "CleanedJets" setattr(process, cleanedJetsName, cleanedJets) cleanedJetsCount = counterPrototype.clone() setattr(process, cleanedJetsName + "Count", cleanedJetsCount) counters.append(cleanedJetsName + "Count") genTauSequence *= ( cleanedJets * #cleanedJetsFilter * cleanedJetsCount) setattr(process, prefix + "Sequence", genTauSequence) sequence *= genTauSequence return counters