File indexing completed on 2025-01-27 02:50:26
0001 import FWCore.ParameterSet.Config as cms
0002
0003 from PhysicsTools.NanoAOD.common_cff import *
0004 from PhysicsTools.NanoAOD.simpleGenJetFlatTableProducer_cfi import simpleGenJetFlatTableProducer
0005 from PhysicsTools.NanoAOD.simplePATJetFlatTableProducer_cfi import simplePATJetFlatTableProducer
0006 from PhysicsTools.NanoAOD.jetsAK8_cff import fatJetTable as _fatJetTable
0007 from PhysicsTools.NanoAOD.jetsAK8_cff import subJetTable as _subJetTable
0008 from RecoJets.JetProducers.ak4GenJets_cfi import ak4GenJets
0009
0010 jetMCTable = simplePATJetFlatTableProducer.clone(
0011 src = cms.InputTag("linkedObjects","jets"),
0012 name = cms.string("Jet"),
0013 extension = cms.bool(True),
0014 variables = cms.PSet(
0015 partonFlavour = Var("partonFlavour()", "int16", doc="flavour from parton matching"),
0016 hadronFlavour = Var("hadronFlavour()", "uint8", doc="flavour from hadron ghost clustering"),
0017
0018 genJetIdx = Var("?genJetFwdRef().backRef().isNonnull() && genJetFwdRef().backRef().pt() > 10.?genJetFwdRef().backRef().key():-1", "int16", doc="index of matched gen jet"),
0019 )
0020 )
0021 genJetTable = simpleGenJetFlatTableProducer.clone(
0022 src = cms.InputTag("slimmedGenJets"),
0023 cut = cms.string("pt > 10"),
0024 name = cms.string("GenJet"),
0025 doc = cms.string("slimmedGenJets, i.e. ak4 Jets made with visible genparticles"),
0026 variables = cms.PSet(P4Vars,
0027
0028 )
0029 )
0030
0031 patJetPartonsNano = cms.EDProducer('HadronAndPartonSelector',
0032 src = cms.InputTag("generator"),
0033 particles = cms.InputTag("prunedGenParticles"),
0034 partonMode = cms.string("Auto"),
0035 fullChainPhysPartons = cms.bool(True)
0036 )
0037
0038 genJetFlavourAssociation = cms.EDProducer("JetFlavourClustering",
0039 jets = genJetTable.src,
0040 bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"),
0041 cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"),
0042 partons = cms.InputTag("patJetPartonsNano","physicsPartons"),
0043 leptons = cms.InputTag("patJetPartonsNano","leptons"),
0044 jetAlgorithm = cms.string("AntiKt"),
0045 rParam = cms.double(0.4),
0046 ghostRescaling = cms.double(1e-18),
0047 hadronFlavourHasPriority = cms.bool(False)
0048 )
0049
0050 genJetFlavourTable = cms.EDProducer("GenJetFlavourTableProducer",
0051 name = genJetTable.name,
0052 src = genJetTable.src,
0053 cut = genJetTable.cut,
0054 deltaR = cms.double(0.1),
0055 jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"),
0056 )
0057
0058 genJetAK8Table = simpleGenJetFlatTableProducer.clone(
0059 src = cms.InputTag("slimmedGenJetsAK8"),
0060 cut = cms.string("pt > 100."),
0061 name = cms.string("GenJetAK8"),
0062 doc = cms.string("slimmedGenJetsAK8, i.e. ak8 Jets made with visible genparticles"),
0063 variables = cms.PSet(P4Vars,
0064
0065 )
0066 )
0067
0068 genJetAK8FlavourAssociation = cms.EDProducer("JetFlavourClustering",
0069 jets = genJetAK8Table.src,
0070 bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"),
0071 cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"),
0072 partons = cms.InputTag("patJetPartonsNano","physicsPartons"),
0073 leptons = cms.InputTag("patJetPartonsNano","leptons"),
0074 jetAlgorithm = cms.string("AntiKt"),
0075 rParam = cms.double(0.8),
0076 ghostRescaling = cms.double(1e-18),
0077 hadronFlavourHasPriority = cms.bool(False)
0078 )
0079
0080 genJetAK8FlavourTable = cms.EDProducer("GenJetFlavourTableProducer",
0081 name = genJetAK8Table.name,
0082 src = genJetAK8Table.src,
0083 cut = genJetAK8Table.cut,
0084 deltaR = cms.double(0.1),
0085 jetFlavourInfos = cms.InputTag("genJetAK8FlavourAssociation"),
0086 )
0087 fatJetMCTable = simplePATJetFlatTableProducer.clone(
0088 src = _fatJetTable.src,
0089 cut = _fatJetTable.cut,
0090 name = _fatJetTable.name,
0091 extension = cms.bool(True),
0092 variables = cms.PSet(
0093 hadronFlavour = Var("hadronFlavour()", "uint8", doc="flavour from hadron ghost clustering"),
0094
0095 genJetAK8Idx = Var("?genJetFwdRef().backRef().isNonnull() && genJetFwdRef().backRef().pt() > 100.?genJetFwdRef().backRef().key():-1", "int16", doc="index of matched gen AK8 jet"),
0096 )
0097 )
0098
0099 genSubJetAK8Table = simpleGenJetFlatTableProducer.clone(
0100 src = cms.InputTag("slimmedGenJetsAK8SoftDropSubJets"),
0101 name = cms.string("SubGenJetAK8"),
0102 doc = cms.string("slimmedGenJetsAK8SoftDropSubJets, i.e. subjets of ak8 Jets made with visible genparticles"),
0103 variables = cms.PSet(P4Vars,
0104
0105 )
0106 )
0107 subjetMCTable = simplePATJetFlatTableProducer.clone(
0108 src = _subJetTable.src,
0109 cut = _subJetTable.cut,
0110 name = _subJetTable.name,
0111 extension = cms.bool(True),
0112 variables = cms.PSet(
0113 nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"),
0114 nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"),
0115 hadronFlavour = Var("hadronFlavour()", "uint8", doc="flavour from hadron ghost clustering"),
0116 subGenJetAK8Idx = Var("?genJetFwdRef().backRef().isNonnull()?genJetFwdRef().backRef().key():-1", "int16", doc="index of matched gen subjet in SubGenJetAK8")
0117 )
0118 )
0119
0120 genParticlesForJetsCharged = cms.EDFilter("CandPtrSelector",
0121 src = cms.InputTag("prunedGenParticles"),
0122 cut = cms.string("charge != 0 && pt > 0.3 && status == 1 && abs(pdgId) != 12 && abs(pdgId) != 14 && abs(pdgId) != 16")
0123 )
0124
0125 ak4GenJetsChargedOnly = ak4GenJets.clone(src = cms.InputTag("genParticlesForJetsCharged"), rParam = cms.double(0.4), jetAlgorithm=cms.string("AntiKt"), doAreaFastjet = False, jetPtMin=1)
0126
0127
0128 trackGenJetAK4Table = genJetTable.clone(
0129 src = cms.InputTag("ak4GenJetsChargedOnly"),
0130 cut = cms.string("pt > 1"),
0131 name = cms.string("TrackGenJetAK4"),
0132 doc = cms.string("AK4 GenJets made with charged particles only"),
0133 variables = cms.PSet(P3Vars)
0134 )
0135
0136 trackGenJetAK4Table.variables.pt.precision = 10
0137 trackGenJetAK4Table.variables.eta.precision = 8
0138 trackGenJetAK4Table.variables.phi.precision = 8
0139
0140 jetMCTaskak4 = cms.Task(jetMCTable,genJetTable,patJetPartonsNano,genJetFlavourTable,genParticlesForJetsCharged,ak4GenJetsChargedOnly,trackGenJetAK4Table)
0141 jetMCTaskak8 = cms.Task(genJetAK8Table,genJetAK8FlavourAssociation,genJetAK8FlavourTable,fatJetMCTable,genSubJetAK8Table,subjetMCTable)
0142 jetMCTask = jetMCTaskak4.copyAndAdd(jetMCTaskak8)