Back to home page

Project CMSSW displayed by LXR

 
 

    


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