Back to home page

Project CMSSW displayed by LXR

 
 

    


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), # this is an extension  table for the jets
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         # cut should follow genJetTable.cut
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     #anything else?
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     #anything else?
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         # cut should follow genJetAK8Table.cut
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     #anything else?
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"),  # or "packedGenParticles" if available
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)