Skip to content

Commit

Permalink
Merge pull request #13796 from jdolen/backport_ak8puppi_try1
Browse files Browse the repository at this point in the history
Update miniAOD AK8 userFloat content. Add PUPPI substructure. Remove CMSTT. (80X)
  • Loading branch information
davidlange6 committed Apr 14, 2016
2 parents 1c34f76 + 35aac24 commit a329cf2
Show file tree
Hide file tree
Showing 7 changed files with 170 additions and 65 deletions.
22 changes: 13 additions & 9 deletions CommonTools/RecoAlgos/plugins/JetDeltaRValueMapProducer.cc
Expand Up @@ -17,7 +17,7 @@


#include "FWCore/Framework/interface/stream/EDProducer.h"

#include "DataFormats/PatCandidates/interface/Jet.h"
#include "DataFormats/JetReco/interface/Jet.h"
#include "DataFormats/JetReco/interface/PFJet.h"
#include "DataFormats/JetReco/interface/CaloJet.h"
Expand All @@ -28,7 +28,7 @@
#include "DataFormats/Common/interface/ValueMap.h"
#include "DataFormats/Math/interface/deltaR.h"

template < class T >
template < class T, class C=T >
class JetDeltaRValueMapProducer : public edm::stream::EDProducer<> {

public:
Expand All @@ -37,7 +37,7 @@ class JetDeltaRValueMapProducer : public edm::stream::EDProducer<> {

JetDeltaRValueMapProducer ( edm::ParameterSet const & params ) :
srcToken_( consumes< typename edm::View<T> >( params.getParameter<edm::InputTag>("src") ) ),
matchedToken_( consumes< typename edm::View<T> >( params.getParameter<edm::InputTag>( "matched" ) ) ),
matchedToken_( consumes< typename edm::View<C> >( params.getParameter<edm::InputTag>( "matched" ) ) ),
distMax_( params.getParameter<double>( "distMax" ) ),
value_( params.existsAs<std::string>("value") ? params.getParameter<std::string>("value") : "" ),
values_( params.existsAs<std::vector<std::string> >("values") ? params.getParameter<std::vector<std::string> >("values") : std::vector<std::string>() ),
Expand All @@ -47,7 +47,7 @@ class JetDeltaRValueMapProducer : public edm::stream::EDProducer<> {
{
if( value_!="" )
{
evaluationMap_.insert( std::make_pair( value_, std::unique_ptr<StringObjectFunction<T> >( new StringObjectFunction<T>( value_, lazyParser_ ) ) ) );
evaluationMap_.insert( std::make_pair( value_, std::unique_ptr<StringObjectFunction<C> >( new StringObjectFunction<C>( value_, lazyParser_ ) ) ) );
produces< JetValueMap >();
}

Expand All @@ -58,7 +58,7 @@ class JetDeltaRValueMapProducer : public edm::stream::EDProducer<> {
multiValue_ = true;
for( size_t i=0; i<valueLabels_.size(); ++i)
{
evaluationMap_.insert( std::make_pair( valueLabels_[i], std::unique_ptr<StringObjectFunction<T> >( new StringObjectFunction<T>( values_[i], lazyParser_ ) ) ) );
evaluationMap_.insert( std::make_pair( valueLabels_[i], std::unique_ptr<StringObjectFunction<C> >( new StringObjectFunction<C>( values_[i], lazyParser_ ) ) ) );
produces< JetValueMap >(valueLabels_[i]);
}
}
Expand All @@ -75,7 +75,7 @@ class JetDeltaRValueMapProducer : public edm::stream::EDProducer<> {

edm::Handle< typename edm::View<T> > h_jets1;
iEvent.getByToken( srcToken_, h_jets1 );
edm::Handle< typename edm::View<T> > h_jets2;
edm::Handle< typename edm::View<C> > h_jets2;
iEvent.getByToken( matchedToken_, h_jets2 );

std::vector<float> values( h_jets1->size(), -99999 );
Expand All @@ -87,7 +87,7 @@ class JetDeltaRValueMapProducer : public edm::stream::EDProducer<> {
}
std::vector<bool> jets1_locks( h_jets1->size(), false );

for ( typename edm::View<T>::const_iterator ibegin = h_jets2->begin(),
for ( typename edm::View<C>::const_iterator ibegin = h_jets2->begin(),
iend = h_jets2->end(), ijet = ibegin;
ijet != iend; ++ijet )
{
Expand Down Expand Up @@ -156,16 +156,20 @@ class JetDeltaRValueMapProducer : public edm::stream::EDProducer<> {
}

const edm::EDGetTokenT< typename edm::View<T> > srcToken_;
const edm::EDGetTokenT< typename edm::View<T> > matchedToken_;
const edm::EDGetTokenT< typename edm::View<C> > matchedToken_;
const double distMax_;
const std::string value_;
const std::vector<std::string> values_;
const std::vector<std::string> valueLabels_;
const bool lazyParser_;
bool multiValue_;
std::map<std::string, std::unique_ptr<const StringObjectFunction<T> > > evaluationMap_;
std::map<std::string, std::unique_ptr<const StringObjectFunction<C> > > evaluationMap_;
};

typedef JetDeltaRValueMapProducer<reco::Jet> RecoJetDeltaRValueMapProducer;
typedef JetDeltaRValueMapProducer<reco::Jet,pat::Jet> RecoJetToPatJetDeltaRValueMapProducer;
typedef JetDeltaRValueMapProducer<pat::Jet> PatJetDeltaRValueMapProducer;

DEFINE_FWK_MODULE( RecoJetDeltaRValueMapProducer );
DEFINE_FWK_MODULE( RecoJetToPatJetDeltaRValueMapProducer );
DEFINE_FWK_MODULE( PatJetDeltaRValueMapProducer );
11 changes: 2 additions & 9 deletions PhysicsTools/PatAlgos/python/slimming/MicroEventContent_cff.py
Expand Up @@ -15,13 +15,8 @@
'keep *_slimmedMETsNoHF_*_*',
'keep *_slimmedMETsPuppi_*_*',
'keep *_slimmedSecondaryVertices_*_*',
'keep *_cmsTopTaggerMap_*_*',
#'keep *_slimmedJetsAK8PFCHSSoftDropSubjets_*_*',
#'keep *_slimmedJetsCMSTopTagCHSSubjets_*_*',
'keep *_slimmedJetsAK8PFCHSSoftDropPacked_SubJets_*',
'keep *_slimmedJetsCMSTopTagCHSPacked_SubJets_*',
#'keep *_packedPatJetsAK8_*_*',
## add extra METs
'keep *_slimmedJetsAK8PFPuppiSoftDropPacked_SubJets_*',

'keep recoPhotonCores_reducedEgamma_*_*',
'keep recoGsfElectronCores_reducedEgamma_*_*',
Expand All @@ -40,7 +35,6 @@

'keep *_bunchSpacingProducer_*_*',

#'keep double_fixedGridRho*__*',
'keep double_fixedGridRhoAll__*',
'keep double_fixedGridRhoFastjetAll__*',
'keep double_fixedGridRhoFastjetAllCalo__*',
Expand All @@ -60,8 +54,7 @@
'keep patPackedCandidates_lostTracks_*_*',
'keep HcalNoiseSummary_hcalnoise__*',
'keep recoCSCHaloData_CSCHaloData_*_*',
'keep recoBeamHaloSummary_BeamHaloSummary_*_*',
'keep *_caTopTagInfosPAT_*_*'
'keep recoBeamHaloSummary_BeamHaloSummary_*_*'
)
)
MicroEventContentMC = cms.PSet(
Expand Down
171 changes: 125 additions & 46 deletions PhysicsTools/PatAlgos/python/slimming/applySubstructure_cff.py
Expand Up @@ -4,15 +4,6 @@ def applySubstructure( process ) :

from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection

# add CMS top tagger
from RecoJets.JetProducers.caTopTaggers_cff import caTopTagInfos
process.caTopTagInfos = caTopTagInfos.clone()
process.caTopTagInfosPAT = cms.EDProducer("RecoJetDeltaRTagInfoValueMapProducer",
src = cms.InputTag("ak8PFJetsCHS"),
matched = cms.InputTag("cmsTopTagPFJetsCHS"),
matchedTagInfos = cms.InputTag("caTopTagInfos"),
distMax = cms.double(0.8)
)

from PhysicsTools.PatAlgos.producersLayer1.jetProducer_cfi import _patJets as patJetsDefault

Expand All @@ -28,19 +19,28 @@ def applySubstructure( process ) :
process.selectedPatJetsAK8.cut = cms.string("pt > 170")


process.load('RecoJets.JetProducers.ak8PFJetsPuppi_cfi')
process.ak8PFJetsPuppi.doAreaFastjet = True # even for standard ak8PFJets this is overwritten in RecoJets/Configuration/python/RecoPFJets_cff

from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX
process.ak8PFJetsPuppiTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorAtVertex",
j2tParametersVX,
jets = cms.InputTag("ak8PFJetsPuppi")
)
process.patJetPuppiCharge = cms.EDProducer("JetChargeProducer",
src = cms.InputTag("ak8PFJetsPuppiTracksAssociatorAtVertex"),
var = cms.string('Pt'),
exp = cms.double(1.0)
)

## AK8 groomed masses
from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsCHSPruned, ak8PFJetsCHSSoftDrop, ak8PFJetsCHSFiltered, ak8PFJetsCHSTrimmed
from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsCHSPruned, ak8PFJetsCHSSoftDrop, ak8PFJetsPuppiSoftDrop
process.ak8PFJetsCHSPruned = ak8PFJetsCHSPruned.clone()
process.ak8PFJetsCHSSoftDrop = ak8PFJetsCHSSoftDrop.clone()
process.ak8PFJetsCHSTrimmed = ak8PFJetsCHSTrimmed.clone()
process.ak8PFJetsCHSFiltered = ak8PFJetsCHSFiltered.clone()
process.ak8PFJetsPuppiSoftDrop = ak8PFJetsPuppiSoftDrop.clone()
process.load("RecoJets.JetProducers.ak8PFJetsCHS_groomingValueMaps_cfi")
process.patJetsAK8.userData.userFloats.src += ['ak8PFJetsCHSPrunedMass','ak8PFJetsCHSSoftDropMass','ak8PFJetsCHSTrimmedMass','ak8PFJetsCHSFilteredMass']

# Add AK8 top tagging variables
process.patJetsAK8.tagInfoSources = cms.VInputTag(cms.InputTag("caTopTagInfosPAT"))
process.patJetsAK8.addTagInfos = cms.bool(True)
process.patJetsAK8.userData.userFloats.src += ['ak8PFJetsCHSPrunedMass','ak8PFJetsCHSSoftDropMass']
process.patJetsAK8.addTagInfos = cms.bool(False)



Expand All @@ -52,6 +52,82 @@ def applySubstructure( process ) :
process.patJetsAK8.userData.userFloats.src += ['NjettinessAK8:tau1','NjettinessAK8:tau2','NjettinessAK8:tau3']




#add AK8 from PUPPI

process.load('RecoJets.JetProducers.ak8PFJetsPuppi_cfi')
process.ak8PFJetsPuppi.doAreaFastjet = True # even for standard ak8PFJets this is overwritten in RecoJets/Configuration/python/RecoPFJets_cff


addJetCollection(process, labelName = 'AK8Puppi',
jetSource = cms.InputTag('ak8PFJetsPuppi'),
algo= 'AK', rParam = 0.8,
jetCorrections = ('AK8PFPuppi', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'),
genJetCollection = cms.InputTag('slimmedGenJetsAK8')
)
process.patJetsAK8Puppi.userData.userFloats.src = [] # start with empty list of user floats
process.selectedPatJetsAK8Puppi.cut = cms.string("pt > 170")


from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX
process.ak8PFJetsPuppiTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorAtVertex",
j2tParametersVX,
jets = cms.InputTag("ak8PFJetsPuppi")
)
process.patJetAK8PuppiCharge = cms.EDProducer("JetChargeProducer",
src = cms.InputTag("ak8PFJetsPuppiTracksAssociatorAtVertex"),
var = cms.string('Pt'),
exp = cms.double(1.0)
)

## AK8 groomed masses
from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsPuppiSoftDrop
process.ak8PFJetsPuppiSoftDrop = ak8PFJetsPuppiSoftDrop.clone()
process.load("RecoJets.JetProducers.ak8PFJetsPuppi_groomingValueMaps_cfi")
process.patJetsAK8Puppi.userData.userFloats.src += ['ak8PFJetsPuppiSoftDropMass']
process.patJetsAK8Puppi.addTagInfos = cms.bool(False)



# add Njetiness
process.NjettinessAK8Puppi = process.Njettiness.clone()
process.NjettinessAK8Puppi.src = cms.InputTag("ak8PFJetsPuppi")
process.NjettinessAK8Puppi.cone = cms.double(0.8)
process.patJetsAK8Puppi.userData.userFloats.src += ['NjettinessAK8Puppi:tau1','NjettinessAK8Puppi:tau2','NjettinessAK8Puppi:tau3']




process.ak8PFJetsPuppiValueMap = cms.EDProducer("RecoJetToPatJetDeltaRValueMapProducer",
src = cms.InputTag("ak8PFJetsCHS"),
matched = cms.InputTag("patJetsAK8Puppi"),
distMax = cms.double(0.8),
values = cms.vstring([
'userFloat("NjettinessAK8Puppi:tau1")',
'userFloat("NjettinessAK8Puppi:tau2")',
'userFloat("NjettinessAK8Puppi:tau3")',
'pt','eta','phi','mass'
]),
valueLabels = cms.vstring( [
'NjettinessAK8PuppiTau1',
'NjettinessAK8PuppiTau2',
'NjettinessAK8PuppiTau3',
'pt','eta','phi','mass'
])
)
#process.patJetsAK8.userData.userFloats.src += ['NjettinessAK8:tau1','NjettinessAK8:tau2','NjettinessAK8:tau3']

process.patJetsAK8.userData.userFloats.src += [cms.InputTag('ak8PFJetsPuppiValueMap','NjettinessAK8PuppiTau1'),
cms.InputTag('ak8PFJetsPuppiValueMap','NjettinessAK8PuppiTau2'),
cms.InputTag('ak8PFJetsPuppiValueMap','NjettinessAK8PuppiTau3'),
cms.InputTag('ak8PFJetsPuppiValueMap','pt'),
cms.InputTag('ak8PFJetsPuppiValueMap','eta'),
cms.InputTag('ak8PFJetsPuppiValueMap','phi'),
cms.InputTag('ak8PFJetsPuppiValueMap','mass'),
]


## PATify pruned fat jets
addJetCollection(
process,
Expand Down Expand Up @@ -98,36 +174,39 @@ def applySubstructure( process ) :
jetSrc=cms.InputTag("selectedPatJetsAK8PFCHSSoftDrop"),
subjetSrc=cms.InputTag("slimmedJetsAK8PFCHSSoftDropSubjets")
)




## PATify pruned fat jets
addJetCollection(
process,
labelName = 'CMSTopTagCHS',
jetSource = cms.InputTag('cmsTopTagPFJetsCHS'),
jetCorrections = ('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'),
labelName = 'AK8PFPuppiSoftDrop',
jetSource = cms.InputTag('ak8PFJetsPuppiSoftDrop'),
btagDiscriminators = ['None'],
genJetCollection = cms.InputTag('slimmedGenJetsAK8'),
getJetMCFlavour = False #
)
process.selectedPatJetsCMSTopTagCHS.cut = cms.string("pt > 200")

jetCorrections = ('AK8PFPuppi', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'),
getJetMCFlavour = False # jet flavor disabled
)

## PATify soft drop subjets
addJetCollection(
process,
labelName = 'CMSTopTagCHSSubjets',
jetSource = cms.InputTag('cmsTopTagPFJetsCHS','caTopSubJets'),
algo = 'AK', # needed for subjet flavor clustering
rParam = 0.8, # needed for subjet flavor clustering
labelName = 'AK8PFPuppiSoftDropSubjets',
jetSource = cms.InputTag('ak8PFJetsPuppiSoftDrop','SubJets'),
algo = 'ak', # needed for subjet flavor clustering
rParam = 0.8, # needed for subjet flavor clustering
btagDiscriminators = ['pfCombinedSecondaryVertexV2BJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags'],
jetCorrections = ('AK4PFchs', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'),
genJetCollection = cms.InputTag('slimmedGenJets'), # Using ak4GenJets for matching which is not entirely appropriate
jetCorrections = ('AK4PFPuppi', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'),
explicitJTA = True, # needed for subjet b tagging
svClustering = True, # needed for subjet b tagging
fatJets=cms.InputTag('ak8PFJetsCHS'), # needed for subjet flavor clustering
groomedFatJets=cms.InputTag('cmsTopTagPFJetsCHS') # needed for subjet flavor clustering

)

process.slimmedJetsCMSTopTagCHSSubjets = cms.EDProducer("PATJetSlimmer",
src = cms.InputTag("selectedPatJetsCMSTopTagCHSSubjets"),
genJetCollection = cms.InputTag('slimmedGenJets'),
fatJets=cms.InputTag('ak8PFJetsPuppi'), # needed for subjet flavor clustering
groomedFatJets=cms.InputTag('ak8PFJetsPuppiSoftDrop') # needed for subjet flavor clustering
)
process.selectedPatJetsAK8PFPuppiSoftDrop.cut = cms.string("pt > 170")

process.slimmedJetsAK8PFPuppiSoftDropSubjets = cms.EDProducer("PATJetSlimmer",
src = cms.InputTag("selectedPatJetsAK8PFPuppiSoftDropSubjets"),
packedPFCandidates = cms.InputTag("packedPFCandidates"),
dropJetVars = cms.string("1"),
dropDaughters = cms.string("0"),
Expand All @@ -138,28 +217,28 @@ def applySubstructure( process ) :
modifyJets = cms.bool(True),
modifierConfig = cms.PSet( modifications = cms.VPSet() )
)


## Establish references between PATified fat jets and subjets using the BoostedJetMerger
process.slimmedJetsCMSTopTagCHSPacked = cms.EDProducer("BoostedJetMerger",
jetSrc=cms.InputTag("selectedPatJetsCMSTopTagCHS"),
subjetSrc=cms.InputTag("slimmedJetsCMSTopTagCHSSubjets")
process.slimmedJetsAK8PFPuppiSoftDropPacked = cms.EDProducer("BoostedJetMerger",
jetSrc=cms.InputTag("selectedPatJetsAK8PFPuppiSoftDrop"),
subjetSrc=cms.InputTag("slimmedJetsAK8PFPuppiSoftDropSubjets")
)


process.packedPatJetsAK8 = cms.EDProducer("JetSubstructurePacker",
jetSrc = cms.InputTag("selectedPatJetsAK8"),
distMax = cms.double(0.8),
algoTags = cms.VInputTag(
# NOTE: For an optimal storage of the AK8 jet daughters, the first subjet collection listed here should be
# derived from AK8 jets, i.e., subjets should contain either all or a subset of AK8 constituents.
# The CMSTopTag subjets are derived from CA8 jets later matched to AK8 jets and could in principle
# contain extra constituents not clustered inside AK8 jets.
# The PUPPI collection has its own pointers to its own PUPPI constituents.
cms.InputTag("slimmedJetsAK8PFCHSSoftDropPacked"),
cms.InputTag("slimmedJetsCMSTopTagCHSPacked")
cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked")
),
algoLabels = cms.vstring(
'SoftDrop',
'CMSTopTag'
'SoftDropPuppi'
),
fixDaughters = cms.bool(True),
packedPFCandidates = cms.InputTag("packedPFCandidates"),
Expand Down
2 changes: 1 addition & 1 deletion PhysicsTools/PatAlgos/python/slimming/miniAOD_tools.py
Expand Up @@ -244,7 +244,7 @@ def miniAOD_customizeCommon(process):
process.slimmedJetsPuppi.src = cms.InputTag("selectedPatJetsPuppi")
process.slimmedJetsPuppi.packedPFCandidates = cms.InputTag("packedPFCandidates")


## puppi met
from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppies
makePuppies( process );
Expand Down
7 changes: 7 additions & 0 deletions RecoJets/Configuration/python/RecoPFJets_cff.py
Expand Up @@ -21,6 +21,7 @@
from CommonTools.PileupAlgos.Puppi_cff import puppi
from CommonTools.PileupAlgos.softKiller_cfi import softKiller
from RecoJets.JetProducers.ak4PFJetsPuppi_cfi import ak4PFJetsPuppi
from RecoJets.JetProducers.ak8PFJetsPuppi_cfi import ak8PFJetsPuppi
from RecoJets.JetProducers.ak4PFJetsSK_cfi import ak4PFJetsSK

sisCone7PFJets = sisCone5PFJets.clone( rParam = 0.7 )
Expand All @@ -40,6 +41,7 @@
ak5PFJetsTrimmed.doAreaFastjet = True
ak7PFJets.doAreaFastjet = True
ak8PFJets.doAreaFastjet = True
ak8PFJetsPuppi.doAreaFastjet = True
ak4PFJetsSK.doAreaFastjet = True

kt6PFJetsCentralChargedPileUp = kt6PFJets.clone(
Expand Down Expand Up @@ -140,6 +142,11 @@
R0 = 0.8
)

ak8PFJetsPuppiSoftDrop = ak8PFJetsCHSSoftDrop.clone(
src = cms.InputTag("puppi")
)



ca8PFJetsCHS = ak8PFJetsCHS.clone(
jetAlgorithm = cms.string("CambridgeAachen")
Expand Down

0 comments on commit a329cf2

Please sign in to comment.