Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-03-14 23:36:08

0001 import FWCore.ParameterSet.Config as cms
0002 from PhysicsTools.NanoAOD.common_cff import *
0003 from PhysicsTools.NanoAOD.l1trig_cff import *
0004 
0005 ## Import GT scales for HW to physical value conversion
0006 from L1Trigger.Phase2L1GT.l1tGTScales import scale_parameter
0007 
0008 ### common variables set (pt/eta/phi)
0009 l1GTObjVars = cms.PSet(
0010     l1P3Vars,
0011 )
0012 
0013 ### P2GT Algo Block - trigger decisions
0014 l1tP2GTTrigConvert = cms.EDProducer("P2GTTriggerResultsConverter",
0015     src = cms.InputTag("l1tGTAlgoBlockProducer"),
0016     prefix = cms.string("L1_"),     # can be anything or omitted, default: "L1_" 
0017     decision = cms.string("final"), # can be "beforeBxMaskAndPrescale", "beforePrescale", "final" or omitted, default: "final"
0018 )
0019 
0020 # gtAlgoTable = cms.EDProducer(
0021 #     "P2GTAlgoBlockFlatTableProducer",
0022 #     src = cms.InputTag('l1tGTAlgoBlockProducer'),
0023 #     cut = cms.string(""),
0024 #     name = cms.string("L1GT"),
0025 #     doc = cms.string("GT Algo Block decisions"),
0026 #     singleton = cms.bool(False), # the number of entries is variable
0027 #     variables = cms.PSet(
0028 #         # name = Var("algoName",string, doc = "algo name"), # does not work
0029 #         final = Var("decisionFinal",float, doc = "final decision"),
0030 #         initial = Var("decisionBeforeBxMaskAndPrescale",float, doc = "initial decision"),
0031 #     )
0032 # )
0033 
0034 
0035 
0036 ### Vertex
0037 gtVtxTable = cms.EDProducer(
0038     "SimpleP2GTCandidateFlatTableProducer",
0039     src = cms.InputTag('l1tGTProducer','GTTPrimaryVert'),
0040     cut = cms.string(""),
0041     name = cms.string("L1GTVertex"),
0042     doc = cms.string("GT GTT Vertices"),
0043     singleton = cms.bool(False), # the number of entries is variable
0044     variables = cms.PSet(
0045         z0 = Var("vz",float, doc = "primary vertex position z coordinate"),
0046         # sumPt = Var("hwSum_pT_pv_toInt()*0.25",float, doc = "sum pt of tracks"),
0047         ## hw vars
0048         hwZ0 = Var("hwZ0_toInt()",int, doc = "HW primary vertex position z coordinate"),
0049         # hwSum_pT_pv = Var("hwSum_pT_pv_toInt()",int, doc = "HW sum pt of tracks"),
0050     )
0051 )
0052 
0053 ### Store Primary Vertex only (first vertex)
0054 gtPvTable = gtVtxTable.clone(
0055     name = cms.string("L1GTPV"),
0056     doc = cms.string("GT GTT Leading Primary Vertex"),
0057     maxLen = cms.uint32(1),
0058 )
0059 
0060 ### GT
0061 gtTkPhoTable =cms.EDProducer(
0062     "SimpleP2GTCandidateFlatTableProducer",
0063     src = cms.InputTag('l1tGTProducer','CL2Photons'),
0064     name = cms.string("L1GTtkPhoton"),
0065     doc = cms.string("GT tkPhotons"),
0066     cut = cms.string(""),
0067     singleton = cms.bool(False), # the number of entries is variable
0068     variables = cms.PSet(
0069         l1GTObjVars,
0070         ## hw values
0071         # hwPt = Var("hwPT_toInt()",int,doc="hardware pt"),
0072         hwQual = Var("hwQualityFlags_toInt()",int),
0073         hwIso = Var("hwIsolationPT_toInt()",int),
0074         ## more physical values
0075         ## using the GT scales for HW to physicsal vonversion, see scales in https://github.com/cms-sw/cmssw/blob/master/L1Trigger/Phase2L1GT/python/l1tGTScales.py
0076         iso = Var(f"hwIsolationPT_toInt()*{scale_parameter.isolationPT_lsb.value()}",float, doc = "absolute isolation"),
0077         relIso = Var(f"hwIsolationPT_toInt()*{scale_parameter.isolationPT_lsb.value()} / pt",float, doc = "relative isolation")
0078     )
0079 )
0080 
0081 ## GT tkElectrons
0082 gtTkEleTable = gtTkPhoTable.clone(
0083     src = cms.InputTag('l1tGTProducer','CL2Electrons'),
0084     name = cms.string("L1GTtkElectron"),
0085     doc = cms.string("GT tkElectrons"),
0086 )
0087 
0088 gtTkEleTable.variables.z0 = Var("vz",float)
0089 gtTkEleTable.variables.charge = Var("charge", int, doc="charge id")
0090 gtTkEleTable.variables.hwZ0 = Var("hwZ0_toInt()",int)
0091 
0092 ## GT gmtTkMuons
0093 gtTkMuTable = gtTkEleTable.clone(
0094     src = cms.InputTag('l1tGTProducer','GMTTkMuons'),
0095     name = cms.string("L1GTgmtTkMuon"),
0096     doc = cms.string("GT GMT tkMuon"),
0097     variables = cms.PSet(
0098         l1GTObjVars,
0099         z0 = Var("vz",float),
0100         charge = Var("charge", int, doc="charge id"),
0101         ## hw
0102         hwQual = Var("hwQualityFlags_toInt()",int),
0103         hwD0 = Var("hwD0_toInt()",int),
0104         hwZ0 = Var("hwZ0_toInt()",int),
0105         # hwBeta = Var("hwBeta_toInt()",int)
0106     )
0107 )
0108 
0109 gtSaMuTable = gtTkMuTable.clone(
0110     src = cms.InputTag('l1tGTProducer','GMTSaPromptMuons'),
0111     name = cms.string("L1GTgmtMuon"),
0112     doc = cms.string("GT GMT standalone Muon"),
0113 )
0114 
0115 gtSaDispMuTable = gtTkMuTable.clone(
0116     src = cms.InputTag('l1tGTProducer','GMTSaDisplacedMuons'),
0117     name = cms.string("L1GTgmtDispMuon"),
0118     doc = cms.string("GT GMT standalone displaced Muon"),
0119 )
0120 
0121 # ## GT seededCone puppi Jets
0122 # gtSCJetsTable = cms.EDProducer(
0123 #     # "SimpleCandidateFlatTableProducer",
0124 #     "SimpleP2GTCandidateFlatTableProducer",
0125 #     src = cms.InputTag('l1tGTProducer','CL2Jets'),
0126 #     cut = cms.string(""),
0127 #     name = cms.string("L1GTscJet"),
0128 #     doc = cms.string("GT CL2Jets: seededCone Puppi Jets"),
0129 #     singleton = cms.bool(False), # the number of entries is variable
0130 #     variables = cms.PSet(
0131 #         l1GTObjVars,
0132 #         z0 = Var("vz",float),
0133 #     )
0134 # )
0135 
0136 ## GT seededCone 0.4 puppi Jets
0137 gtSC4JetsTable = cms.EDProducer(
0138     "SimpleP2GTCandidateFlatTableProducer",
0139     src = cms.InputTag('l1tGTProducer','CL2JetsSC4'),
0140     cut = cms.string(""),
0141     name = cms.string("L1GTsc4Jet"),
0142     doc = cms.string("GT CL2JetsSC4: seededCone 0.4 Puppi Jets"),
0143     singleton = cms.bool(False), # the number of entries is variable
0144     variables = cms.PSet(
0145         l1GTObjVars,
0146         z0 = Var("vz",float),
0147     )
0148 )
0149 
0150 ## GT seededCone 0.8 puppi Jets
0151 gtSC8JetsTable = cms.EDProducer(
0152     "SimpleP2GTCandidateFlatTableProducer",
0153     src = cms.InputTag('l1tGTProducer','CL2JetsSC8'),
0154     cut = cms.string(""),
0155     name = cms.string("L1GTsc8Jet"),
0156     doc = cms.string("GT CL2JetsSC8: seededCone 0.8 Puppi Jets"),
0157     singleton = cms.bool(False), # the number of entries is variable
0158     variables = cms.PSet(
0159         l1GTObjVars,
0160         z0 = Var("vz",float),
0161     )
0162 )
0163 
0164 gtNNTauTable = cms.EDProducer(
0165     "SimpleP2GTCandidateFlatTableProducer",
0166     src = cms.InputTag('l1tGTProducer','CL2Taus'),
0167     cut = cms.string(""),
0168     name = cms.string("L1GTnnTau"),
0169     doc = cms.string("GT CL2Taus: NN puppi Taus"),
0170     singleton = cms.bool(False), # the number of entries is variable
0171     variables = cms.PSet(
0172         l1GTObjVars,
0173         z0 = Var(f"hwSeed_z0_toInt()*{scale_parameter.seed_z0_lsb.value()}",float, doc = "z0"),
0174         hwZ0 = Var(f"hwSeed_z0_toInt()",int, doc = "hwZ0"),
0175     )
0176 )
0177 
0178 gtEtSumTable = cms.EDProducer(
0179     "SimpleP2GTCandidateFlatTableProducer",
0180     src = cms.InputTag('l1tGTProducer','CL2EtSum'),
0181     name = cms.string("L1GTpuppiMET"),
0182     doc = cms.string("GT CL2EtSum"),
0183     singleton = cms.bool(True), # the number of entries is variable
0184     variables = cms.PSet(
0185         pt = Var("pt", float, doc="MET pt"),
0186         phi = Var("phi", float, doc="MET phi"),
0187     )
0188 )
0189 
0190 gtHtSumTable = cms.EDProducer(
0191     "SimpleP2GTCandidateFlatTableProducer",
0192     src = cms.InputTag('l1tGTProducer','CL2HtSum'),
0193     name = cms.string("L1GTscJetSum"),
0194     doc = cms.string("GT CL2HtSum"),
0195     singleton = cms.bool(True), # the number of entries is variable
0196     variables = cms.PSet(
0197         # l1GTObjVars,
0198         mht = Var("pt", float, doc="MHT pt"),
0199         mhtPhi = Var("phi", float, doc="MHT phi"),
0200         ht = Var(f"hwScalarSumPT_toInt()*{scale_parameter.scalarSumPT_lsb.value()}", float, doc="HT"), ## HACK via hw value!
0201     )
0202 )
0203 
0204 ## GT objects
0205 p2GTL1TablesTask = cms.Task(
0206     l1tP2GTTrigConvert, #gtAlgoTable,
0207     gtTkPhoTable,
0208     gtTkEleTable,
0209     gtTkMuTable,
0210     gtSaMuTable, gtSaDispMuTable,
0211     # gtSCJetsTable,
0212     gtSC4JetsTable,
0213     gtSC8JetsTable,
0214     gtNNTauTable,
0215     gtEtSumTable,
0216     gtHtSumTable,
0217     gtVtxTable,
0218     gtPvTable,
0219 )