File indexing completed on 2024-04-25 02:14:04
0001 import FWCore.ParameterSet.Config as cms
0002
0003 from PhysicsTools.NanoAOD.common_cff import *
0004 from PhysicsTools.NanoAOD.simpleCandidateFlatTableProducer_cfi import simpleCandidateFlatTableProducer
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
0009 jetMCTable = simplePATJetFlatTableProducer.clone(
0010 src = cms.InputTag("linkedObjects","jets"),
0011 name = cms.string("Jet"),
0012 extension = cms.bool(True),
0013 variables = cms.PSet(
0014 partonFlavour = Var("partonFlavour()", "int16", doc="flavour from parton matching"),
0015 hadronFlavour = Var("hadronFlavour()", "uint8", doc="flavour from hadron ghost clustering"),
0016
0017 genJetIdx = Var("?genJetFwdRef().backRef().isNonnull() && genJetFwdRef().backRef().pt() > 10.?genJetFwdRef().backRef().key():-1", "int16", doc="index of matched gen jet"),
0018 )
0019 )
0020 genJetTable = simpleCandidateFlatTableProducer.clone(
0021 src = cms.InputTag("slimmedGenJets"),
0022 cut = cms.string("pt > 10"),
0023 name = cms.string("GenJet"),
0024 doc = cms.string("slimmedGenJets, i.e. ak4 Jets made with visible genparticles"),
0025 variables = cms.PSet(P4Vars,
0026
0027 )
0028 )
0029
0030 patJetPartonsNano = cms.EDProducer('HadronAndPartonSelector',
0031 src = cms.InputTag("generator"),
0032 particles = cms.InputTag("prunedGenParticles"),
0033 partonMode = cms.string("Auto"),
0034 fullChainPhysPartons = cms.bool(True)
0035 )
0036
0037 genJetFlavourAssociation = cms.EDProducer("JetFlavourClustering",
0038 jets = genJetTable.src,
0039 bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"),
0040 cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"),
0041 partons = cms.InputTag("patJetPartonsNano","physicsPartons"),
0042 leptons = cms.InputTag("patJetPartonsNano","leptons"),
0043 jetAlgorithm = cms.string("AntiKt"),
0044 rParam = cms.double(0.4),
0045 ghostRescaling = cms.double(1e-18),
0046 hadronFlavourHasPriority = cms.bool(False)
0047 )
0048
0049 genJetFlavourTable = cms.EDProducer("GenJetFlavourTableProducer",
0050 name = genJetTable.name,
0051 src = genJetTable.src,
0052 cut = genJetTable.cut,
0053 deltaR = cms.double(0.1),
0054 jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"),
0055 )
0056
0057 genJetAK8Table = simpleCandidateFlatTableProducer.clone(
0058 src = cms.InputTag("slimmedGenJetsAK8"),
0059 cut = cms.string("pt > 100."),
0060 name = cms.string("GenJetAK8"),
0061 doc = cms.string("slimmedGenJetsAK8, i.e. ak8 Jets made with visible genparticles"),
0062 variables = cms.PSet(P4Vars,
0063
0064 )
0065 )
0066
0067 genJetAK8FlavourAssociation = cms.EDProducer("JetFlavourClustering",
0068 jets = genJetAK8Table.src,
0069 bHadrons = cms.InputTag("patJetPartonsNano","bHadrons"),
0070 cHadrons = cms.InputTag("patJetPartonsNano","cHadrons"),
0071 partons = cms.InputTag("patJetPartonsNano","physicsPartons"),
0072 leptons = cms.InputTag("patJetPartonsNano","leptons"),
0073 jetAlgorithm = cms.string("AntiKt"),
0074 rParam = cms.double(0.8),
0075 ghostRescaling = cms.double(1e-18),
0076 hadronFlavourHasPriority = cms.bool(False)
0077 )
0078
0079 genJetAK8FlavourTable = cms.EDProducer("GenJetFlavourTableProducer",
0080 name = genJetAK8Table.name,
0081 src = genJetAK8Table.src,
0082 cut = genJetAK8Table.cut,
0083 deltaR = cms.double(0.1),
0084 jetFlavourInfos = cms.InputTag("genJetAK8FlavourAssociation"),
0085 )
0086 fatJetMCTable = simplePATJetFlatTableProducer.clone(
0087 src = _fatJetTable.src,
0088 cut = _fatJetTable.cut,
0089 name = _fatJetTable.name,
0090 extension = cms.bool(True),
0091 variables = cms.PSet(
0092 hadronFlavour = Var("hadronFlavour()", "uint8", doc="flavour from hadron ghost clustering"),
0093
0094 genJetAK8Idx = Var("?genJetFwdRef().backRef().isNonnull() && genJetFwdRef().backRef().pt() > 100.?genJetFwdRef().backRef().key():-1", "int16", doc="index of matched gen AK8 jet"),
0095 )
0096 )
0097
0098 genSubJetAK8Table = simpleCandidateFlatTableProducer.clone(
0099 src = cms.InputTag("slimmedGenJetsAK8SoftDropSubJets"),
0100 name = cms.string("SubGenJetAK8"),
0101 doc = cms.string("slimmedGenJetsAK8SoftDropSubJets, i.e. subjets of ak8 Jets made with visible genparticles"),
0102 variables = cms.PSet(P4Vars,
0103
0104 )
0105 )
0106 subjetMCTable = simplePATJetFlatTableProducer.clone(
0107 src = _subJetTable.src,
0108 cut = _subJetTable.cut,
0109 name = _subJetTable.name,
0110 extension = cms.bool(True),
0111 variables = cms.PSet(
0112 nBHadrons = Var("jetFlavourInfo().getbHadrons().size()", "uint8", doc="number of b-hadrons"),
0113 nCHadrons = Var("jetFlavourInfo().getcHadrons().size()", "uint8", doc="number of c-hadrons"),
0114 hadronFlavour = Var("hadronFlavour()", "uint8", doc="flavour from hadron ghost clustering"),
0115 )
0116 )
0117
0118
0119 jetMCTaskak4 = cms.Task(jetMCTable,genJetTable,patJetPartonsNano,genJetFlavourTable)
0120 jetMCTaskak8 = cms.Task(genJetAK8Table,genJetAK8FlavourAssociation,genJetAK8FlavourTable,fatJetMCTable,genSubJetAK8Table,subjetMCTable)
0121 jetMCTask = jetMCTaskak4.copyAndAdd(jetMCTaskak8)