diff --git a/PhysicsTools/JetMCAlgos/plugins/HadronAndPartonSelector.cc b/PhysicsTools/JetMCAlgos/plugins/HadronAndPartonSelector.cc index a04254a94ab66..a701029f968ea 100644 --- a/PhysicsTools/JetMCAlgos/plugins/HadronAndPartonSelector.cc +++ b/PhysicsTools/JetMCAlgos/plugins/HadronAndPartonSelector.cc @@ -118,7 +118,8 @@ HadronAndPartonSelector::HadronAndPartonSelector(const edm::ParameterSet& iConfi //register your products produces( "bHadrons" ); produces( "cHadrons" ); - produces( "partons" ); + produces( "algorithmicPartons" ); + produces( "physicsPartons" ); produces( "leptons" ); } @@ -206,6 +207,7 @@ HadronAndPartonSelector::produce(edm::Event& iEvent, const edm::EventSetup& iSet std::auto_ptr bHadrons ( new reco::GenParticleRefVector ); std::auto_ptr cHadrons ( new reco::GenParticleRefVector ); std::auto_ptr partons ( new reco::GenParticleRefVector ); + std::auto_ptr physicsPartons ( new reco::GenParticleRefVector ); std::auto_ptr leptons ( new reco::GenParticleRefVector ); // loop over particles and select b and c hadrons and leptons @@ -249,12 +251,20 @@ HadronAndPartonSelector::produce(edm::Event& iEvent, const edm::EventSetup& iSet } // select partons - if ( partonMode_!="Undefined" ) + if ( partonMode_!="Undefined" ) { partonSelector_->run(particles,partons); + for(reco::GenParticleCollection::const_iterator it = particles->begin(); it != particles->end(); ++it) + { + if( !(it->status()==3 || (( partonMode_=="Pythia8" ) && (it->status()==23)))) continue; + if( !CandMCTagUtils::isParton( *it ) ) continue; // skip particle if not a parton + physicsPartons->push_back( reco::GenParticleRef( particles, it - particles->begin() ) ); + } + } iEvent.put( bHadrons, "bHadrons" ); iEvent.put( cHadrons, "cHadrons" ); - iEvent.put( partons, "partons" ); + iEvent.put( partons, "algorithmicPartons" ); + iEvent.put( physicsPartons, "physicsPartons" ); iEvent.put( leptons, "leptons" ); } diff --git a/PhysicsTools/JetMCAlgos/python/AK4PFJetsMCFlavourInfos_cfi.py b/PhysicsTools/JetMCAlgos/python/AK4PFJetsMCFlavourInfos_cfi.py index 6bff3b31fe023..bcbe821370f89 100644 --- a/PhysicsTools/JetMCAlgos/python/AK4PFJetsMCFlavourInfos_cfi.py +++ b/PhysicsTools/JetMCAlgos/python/AK4PFJetsMCFlavourInfos_cfi.py @@ -4,7 +4,8 @@ jets = cms.InputTag("ak4PFJets"), bHadrons = cms.InputTag("selectedHadronsAndPartons","bHadrons"), cHadrons = cms.InputTag("selectedHadronsAndPartons","cHadrons"), - partons = cms.InputTag("selectedHadronsAndPartons","partons"), + partons = cms.InputTag("selectedHadronsAndPartons","physicsPartons"), + leptons = cms.InputTag("selectedHadronsAndPartons","leptons"), jetAlgorithm = cms.string("AntiKt"), rParam = cms.double(0.4), ghostRescaling = cms.double(1e-18), diff --git a/PhysicsTools/JetMCAlgos/python/AK5PFJetsMCFlavourInfos_cfi.py b/PhysicsTools/JetMCAlgos/python/AK5PFJetsMCFlavourInfos_cfi.py index 92d8936ca45c6..5bec65672a08e 100644 --- a/PhysicsTools/JetMCAlgos/python/AK5PFJetsMCFlavourInfos_cfi.py +++ b/PhysicsTools/JetMCAlgos/python/AK5PFJetsMCFlavourInfos_cfi.py @@ -4,7 +4,8 @@ jets = cms.InputTag("ak5PFJets"), bHadrons = cms.InputTag("selectedHadronsAndPartons","bHadrons"), cHadrons = cms.InputTag("selectedHadronsAndPartons","cHadrons"), - partons = cms.InputTag("selectedHadronsAndPartons","partons"), + partons = cms.InputTag("selectedHadronsAndPartons","physicsPartons"), + leptons = cms.InputTag("selectedHadronsAndPartons","leptons"), jetAlgorithm = cms.string("AntiKt"), rParam = cms.double(0.5), ghostRescaling = cms.double(1e-18), diff --git a/PhysicsTools/PatAlgos/python/mcMatchLayer0/jetFlavourId_cff.py b/PhysicsTools/PatAlgos/python/mcMatchLayer0/jetFlavourId_cff.py index 1434fea9bb4f2..6b798b45afaab 100644 --- a/PhysicsTools/PatAlgos/python/mcMatchLayer0/jetFlavourId_cff.py +++ b/PhysicsTools/PatAlgos/python/mcMatchLayer0/jetFlavourId_cff.py @@ -26,11 +26,12 @@ jets = cms.InputTag("ak4PFJetsCHS"), bHadrons = cms.InputTag("patJetPartons","bHadrons"), cHadrons = cms.InputTag("patJetPartons","cHadrons"), - partons = cms.InputTag("patJetPartons","partons"), + partons = cms.InputTag("patJetPartons","physicsPartons"), + leptons = cms.InputTag("patJetPartons","leptons"), jetAlgorithm = cms.string("AntiKt"), rParam = cms.double(0.4), ghostRescaling = cms.double(1e-18), - hadronFlavourHasPriority = cms.bool(True) + hadronFlavourHasPriority = cms.bool(False) ) # default PAT sequence for jet flavour identification diff --git a/PhysicsTools/PatAlgos/python/producersLayer1/jetProducer_cfi.py b/PhysicsTools/PatAlgos/python/producersLayer1/jetProducer_cfi.py index 3c8f0d230276d..3a67f59cbc9c3 100644 --- a/PhysicsTools/PatAlgos/python/producersLayer1/jetProducer_cfi.py +++ b/PhysicsTools/PatAlgos/python/producersLayer1/jetProducer_cfi.py @@ -75,7 +75,7 @@ # jet flavour idetification configurables getJetMCFlavour = cms.bool(True), useLegacyJetMCFlavour = cms.bool(False), - addJetFlavourInfo = cms.bool(False), + addJetFlavourInfo = cms.bool(True), JetPartonMapSource = cms.InputTag("patJetFlavourAssociationLegacy"), JetFlavourInfoSource = cms.InputTag("patJetFlavourAssociation"), # efficiencies diff --git a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py index b5c0c425e6e01..f1b7dc648224f 100644 --- a/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py +++ b/PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py @@ -278,6 +278,7 @@ def miniAOD_customizeMC(process): process.photonMatch.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.tauMatch.matched = "prunedGenParticles" process.tauGenJets.GenParticles = "prunedGenParticles" + process.patJetPartons.particles = "prunedGenParticles" process.patJetPartonMatch.matched = "prunedGenParticles" process.patJetPartonMatch.mcStatus = [ 3, 23 ] process.patJetGenJetMatch.matched = "slimmedGenJets" @@ -287,7 +288,7 @@ def miniAOD_customizeMC(process): process.patPhotons.embedGenMatch = False process.patTaus.embedGenMatch = False process.patJets.embedGenPartonMatch = False - #also jet flavour must be switched to ak4 + #also jet flavour must be switched process.patJetFlavourAssociation.rParam = 0.4 def miniAOD_customizeOutput(out): diff --git a/PhysicsTools/PatAlgos/python/tools/jetTools.py b/PhysicsTools/PatAlgos/python/tools/jetTools.py index c3e1985eb6098..76ef4d3093f36 100644 --- a/PhysicsTools/PatAlgos/python/tools/jetTools.py +++ b/PhysicsTools/PatAlgos/python/tools/jetTools.py @@ -318,7 +318,8 @@ def toolCode(self, process): _newPatJetFlavourAssociation.rParam=rParam _newPatJetFlavourAssociation.bHadrons=cms.InputTag("patJetPartons"+postfix,"bHadrons") _newPatJetFlavourAssociation.cHadrons=cms.InputTag("patJetPartons"+postfix,"cHadrons") - _newPatJetFlavourAssociation.partons=cms.InputTag("patJetPartons"+postfix,"partons") + _newPatJetFlavourAssociation.partons=cms.InputTag("patJetPartons"+postfix,"physicsPartons") + _newPatJetFlavourAssociation.leptons=cms.InputTag("patJetPartons"+postfix,"leptons") else : setattr(process, 'patJetFlavourAssociation'+_labelName+postfix, patJetFlavourAssociation.clone( @@ -327,7 +328,8 @@ def toolCode(self, process): rParam=rParam, bHadrons = cms.InputTag("patJetPartons"+postfix,"bHadrons"), cHadrons = cms.InputTag("patJetPartons"+postfix,"cHadrons"), - partons = cms.InputTag("patJetPartons"+postfix,"partons") + partons = cms.InputTag("patJetPartons"+postfix,"physicsPartons"), + leptons = cms.InputTag("patJetPartons"+postfix,"leptons") ) ) knownModules.append('patJetFlavourAssociation'+_labelName+postfix)