File indexing completed on 2025-01-27 02:50:26
0001 from PhysicsTools.NanoAOD.taus_cff import *
0002 from PhysicsTools.NanoAOD.jetMC_cff import *
0003 from PhysicsTools.NanoAOD.globals_cff import genTable,genFilterTable
0004 from PhysicsTools.NanoAOD.met_cff import metMCTable
0005 from PhysicsTools.NanoAOD.genparticles_cff import *
0006 from PhysicsTools.NanoAOD.particlelevel_cff import *
0007 from PhysicsTools.NanoAOD.genWeightsTable_cfi import *
0008 from PhysicsTools.NanoAOD.genVertex_cff import *
0009 from PhysicsTools.NanoAOD.common_cff import Var,CandVars
0010 from PhysicsTools.NanoAOD.simpleSingletonCandidateFlatTableProducer_cfi import simpleSingletonCandidateFlatTableProducer
0011 from RecoJets.JetProducers.ak4GenJets_cfi import ak4GenJets
0012
0013 nanoMetadata = cms.EDProducer("UniqueStringProducer",
0014 strings = cms.PSet(
0015 tag = cms.string("untagged"),
0016 )
0017 )
0018
0019
0020
0021 nanogenSequence = cms.Sequence(
0022 nanoMetadata+
0023 cms.Sequence(particleLevelTask)+
0024 genJetTable+
0025 patJetPartonsNano+
0026 genJetFlavourAssociation+
0027 genJetFlavourTable+
0028 genParticlesForJetsCharged+
0029 ak4GenJetsChargedOnly+
0030 trackGenJetAK4Table+
0031 genSubJetAK8Table+
0032 genJetAK8Table+
0033 genJetAK8FlavourAssociation+
0034 genJetAK8FlavourTable+
0035 cms.Sequence(genTauTask)+
0036 genTable+
0037 genIso+
0038 genFilterTable+
0039 cms.Sequence(genParticleTablesTask)+
0040 cms.Sequence(genVertexTablesTask)+
0041 tautagger+
0042 rivetProducerHTXS+
0043 cms.Sequence(particleLevelTablesTask)+
0044 metMCTable+
0045 genWeightsTable
0046 )
0047
0048 def nanoGenCommonCustomize(process):
0049 process.rivetMetTable.extension = False
0050 process.lheInfoTable.storeLHEParticles = True
0051 process.lheInfoTable.precision = 14
0052 process.genWeightsTable.keepAllPSWeights = True
0053 process.genJetFlavourAssociation.jets = process.genJetTable.src
0054 process.genJetFlavourTable.src = process.genJetTable.src
0055 process.genJetAK8FlavourAssociation.jets = process.genJetAK8Table.src
0056 process.genJetAK8FlavourTable.src = process.genJetAK8Table.src
0057 process.particleLevel.particleMaxEta = 999.
0058 process.particleLevel.lepMinPt = 0.
0059 process.particleLevel.lepMaxEta = 999.
0060 process.genJetFlavourTable.jetFlavourInfos = "genJetFlavourAssociation"
0061
0062 setGenPtPrecision(process, CandVars.pt.precision)
0063 setGenEtaPrecision(process, CandVars.eta.precision)
0064 setGenPhiPrecision(process, CandVars.phi.precision)
0065 setGenMassPrecision(process, CandVars.mass.precision)
0066
0067 for output in ("NANOEDMAODSIMoutput", "NANOAODSIMoutput"):
0068 if hasattr(process, output):
0069 getattr(process, output).outputCommands.append("drop edmTriggerResults_*_*_*")
0070
0071 def customizeNanoGENFromMini(process):
0072 process.nanogenSequence.insert(0, process.genParticles2HepMCHiggsVtx)
0073 process.nanogenSequence.insert(0, process.genParticles2HepMC)
0074 process.nanogenSequence.insert(0, process.mergedGenParticles)
0075
0076 process.metMCTable.src = "slimmedMETs"
0077 process.metMCTable.variables.pt = Var("genMET.pt", float, doc="pt")
0078 process.metMCTable.variables.phi = Var("genMET.phi", float, doc="phi")
0079 process.metMCTable.variables.phi.precision = CandVars.phi.precision
0080
0081 process.rivetProducerHTXS.HepMCCollection = "genParticles2HepMCHiggsVtx:unsmeared"
0082 process.genParticleTable.src = "prunedGenParticles"
0083 process.patJetPartonsNano.particles = "prunedGenParticles"
0084 process.particleLevel.src = "genParticles2HepMC:unsmeared"
0085 process.genIso.genPart = "prunedGenParticles"
0086
0087 process.genJetTable.src = "slimmedGenJets"
0088 process.genJetAK8Table.src = "slimmedGenJetsAK8"
0089 process.tauGenJetsForNano.GenParticles = "prunedGenParticles"
0090 process.genVisTaus.srcGenParticles = "prunedGenParticles"
0091
0092 nanoGenCommonCustomize(process)
0093
0094 return process
0095
0096 def customizeNanoGEN(process):
0097 process.metMCTable = simpleSingletonCandidateFlatTableProducer.clone(
0098 src = "genMetTrue",
0099 name = process.metMCTable.name,
0100 doc = process.metMCTable.doc,
0101 variables = cms.PSet(PTVars)
0102 )
0103
0104 process.nanogenSequence.insert(0, process.genParticles2HepMCHiggsVtx)
0105 process.nanogenSequence.insert(0, process.genParticles2HepMC)
0106 process.genParticles2HepMCHiggsVtx.genParticles = "genParticles"
0107 process.genParticles2HepMC.genParticles = "genParticles"
0108
0109 process.rivetProducerHTXS.HepMCCollection = "genParticles2HepMCHiggsVtx:unsmeared"
0110 process.genParticleTable.src = "genParticles"
0111 process.patJetPartonsNano.particles = "genParticles"
0112 process.particleLevel.src = "genParticles2HepMC:unsmeared"
0113
0114 process.genJetTable.src = "ak4GenJetsNoNu"
0115 process.genJetAK8Table.src = "ak8GenJetsNoNu"
0116 process.tauGenJetsForNano.GenParticles = "genParticles"
0117 process.genVisTaus.srcGenParticles = "genParticles"
0118 process.load("RecoJets.JetProducers.ak8GenJets_cfi")
0119 process.ak8GenJetsNoNuConstituents = process.ak8GenJetsConstituents.clone(src='ak8GenJetsNoNu')
0120 process.ak8GenJetsNoNuSoftDrop = process.ak8GenJetsSoftDrop.clone(src=cms.InputTag('ak8GenJetsNoNuConstituents', 'constituents'))
0121 process.genSubJetAK8Table.src = ("ak8GenJetsNoNuSoftDrop","SubJets")
0122 process.genParticlesForJetsCharged = cms.EDFilter("CandPtrSelector", src = cms.InputTag("genParticles"), cut = cms.string("charge != 0 && pt > 0.3 && status == 1 && abs(pdgId) != 12 && abs(pdgId) != 14 && abs(pdgId) != 16"))
0123 process.ak4GenJetsChargedOnly = ak4GenJets.clone(src = cms.InputTag("genParticlesForJetsCharged"), rParam = cms.double(0.4), jetAlgorithm=cms.string("AntiKt"), doAreaFastjet = False, jetPtMin=1)
0124 process.nanogenSequence.insert(0, process.ak4GenJetsChargedOnly)
0125 process.nanogenSequence.insert(0, process.genParticlesForJetsCharged)
0126 process.nanogenSequence.insert(0, process.ak8GenJetsNoNuSoftDrop)
0127 process.nanogenSequence.insert(0, process.ak8GenJetsNoNuConstituents)
0128
0129 process.nanogenSequence.remove(process.mergedGenParticles)
0130 process.nanogenSequence.remove(process.genIso)
0131 delattr(process.genParticleTable.externalVariables,"iso")
0132 nanoGenCommonCustomize(process)
0133 return process
0134
0135
0136 def pruneGenParticlesNano(process):
0137 process.finalGenParticles.src = process.genParticleTable.src.getModuleLabel()
0138 process.genParticleTable.src = "finalGenParticles"
0139 process.nanogenSequence.insert(1, process.finalGenParticles)
0140 return process
0141
0142
0143 def pruneGenParticlesMini(process):
0144
0145
0146
0147 from PhysicsTools.PatAlgos.slimming.prunedGenParticles_cfi import prunedGenParticles
0148 process.prunedGenParticles = prunedGenParticles.clone()
0149 process.prunedGenParticles.src = "genParticles"
0150 process.genParticleTable.src = "prunedGenParticles"
0151
0152 process.nanogenSequence.insert(0, process.prunedGenParticles)
0153 return process
0154
0155 def setGenFullPrecision(process):
0156 process = setGenPtPrecision(process, 23)
0157 process = setGenEtaPrecision(process, 23)
0158 process = setGenPhiPrecision(process, 23)
0159 process = setGenMassPrecision(process, 23)
0160 return process
0161
0162 def setGenPtPrecision(process, precision):
0163 process.genParticleTable.variables.pt.precision = precision
0164 process.genJetTable.variables.pt.precision = precision
0165 process.metMCTable.variables.pt.precision = precision
0166 return process
0167
0168 def setGenEtaPrecision(process, precision):
0169 process.genParticleTable.variables.eta.precision = precision
0170 process.genJetTable.variables.eta.precision = precision
0171 return process
0172
0173 def setGenPhiPrecision(process, precision):
0174 process.genParticleTable.variables.phi.precision = precision
0175 process.genJetTable.variables.phi.precision = precision
0176 process.metMCTable.variables.phi.precision = precision
0177 return process
0178
0179 def setGenMassPrecision(process, precision):
0180 process.genParticleTable.variables.mass.precision = precision
0181 process.genJetTable.variables.mass.precision = precision
0182 return process
0183
0184 def setLHEFullPrecision(process):
0185 process.lheInfoTable.precision = 23
0186 return process
0187
0188 def setGenWeightsFullPrecision(process):
0189 process.genWeightsTable.lheWeightPrecision = 23
0190 return process