Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-05-04 22:50:32

0001 import FWCore.ParameterSet.Config as cms
0002 from PhysicsTools.NanoAOD.common_cff import *
0003 from PhysicsTools.NanoAOD.l1trig_cff import *
0004 
0005 #### GTT Vertex
0006 vtxTable = cms.EDProducer(
0007     "SimpleL1VtxWordCandidateFlatTableProducer", ## note the use of a dedicated table producer which is defined in the plugins/L1TableProducer.cc
0008     src = cms.InputTag('l1tVertexFinderEmulator','L1VerticesEmulation'),
0009     cut = cms.string(""),
0010     name = cms.string("L1Vertex"),
0011     doc = cms.string("GTT Vertices"),
0012     singleton = cms.bool(False), # the number of entries is variable
0013     variables = cms.PSet(
0014         z0 = Var("z0()",float, doc = "primary vertex position z coordinate"),
0015         sumPt = Var("pt()",float, doc = "sum pt of tracks"),
0016         hwValid = Var("validBits()", bool, doc = "hardware vertex valid bit"),
0017         hwPt = Var("ptBits()", "uint", doc = "hardware pt"),
0018         hwZ0 = Var("z0Bits()", "uint", doc = "hardware z0 vertex position"),
0019         hwQual = Var("qualityBits()", "uint", doc = "hardware qual"), # Currently not filled in emulation or firmware
0020         hwNTracksIn = Var("multiplicityBits()", "uint", doc = "hardware track multiplicity in the vertex"), # Currently not filled in emulation or firmware
0021         hwNTracksOut = Var("inverseMultiplicityBits()", "uint", doc = "hardware track multiplicity out of the vertex"), # Currently not filled in emulation or firmware
0022         # hwWordA = Var("vertexWord().range(31, 0).to_uint()", "uint", doc = "hardware vertex word first 32 bits"),
0023         # hwWordB = Var("vertexWord().range(63, 32).to_uint()", "uint", doc = "hardware vertex word second 32 bits"),
0024      )
0025  )
0026 
0027 gttTrackJetsTable = cms.EDProducer(
0028     "SimpleL1TkJetWordCandidateFlatTableProducer",
0029     src = cms.InputTag("l1tTrackJetsEmulation","L1TrackJets"),
0030     name = cms.string("L1TrackJet"),
0031     doc = cms.string("GTT Track Jets"),
0032     singleton = cms.bool(False), # the number of entries is variable
0033     variables = cms.PSet(
0034         pt = Var("pt()", float, doc="pt"),
0035         eta = Var("glbeta()", float, doc="eta"),
0036         phi = Var("glbphi()", float, doc="phi"),
0037         z0 = Var("z0()", float, doc="z0"), 
0038         hwPt = Var("ptBits()", "uint", doc="hardware pt"),
0039         hwEta = Var("glbEtaBits()", "uint", doc="hardware eta"),
0040         hwPhi = Var("glbPhiBits()", "uint", doc="hardware eta"),
0041         hwZ0 = Var("z0Bits()", "uint", doc="hardware z0"),
0042         hwNTracks = Var("ntBits()", "uint", doc="hardware number of tracks"),
0043         hwNDisplacedTracks = Var("xtBits()", "uint", doc="hardware number of tracks"),
0044         hwDisplacedFlagBits = Var("dispFlagBits()", "uint", doc="hardware displaced flag bits"),
0045         # hwWordA = Var("tkJetWord().range(31, 0).to_uint()", "uint", doc = "hardware track jet word first 32 bits"),
0046         # hwWordB = Var("tkJetWord().range(63, 32).to_uint()", "uint", doc = "hardware track jet word second 32 bits"),
0047         # hwWordC = Var("tkJetWord().range(95, 64).to_uint()", "uint", doc = "hardware track jet word third 32 bits"),
0048         # hwWordD = Var("tkJetWord().range(127, 96).to_uint()", "uint", doc = "hardware track jet word fourth 32 bits"),
0049     )
0050 )
0051 
0052 gttExtTrackJetsTable = gttTrackJetsTable.clone(
0053     src = cms.InputTag("l1tTrackJetsExtendedEmulation", "L1TrackJetsExtended"),
0054     name = cms.string("L1ExtTrackJet"),
0055     doc = cms.string("GTT Extended Track Jets"),
0056 )
0057 
0058 gttTripletTable = cms.EDProducer(
0059     "SimpleTkTripletWordCandidateFlatTableProducer",
0060     src = cms.InputTag("l1tTrackTripletEmulation","L1TrackTripletWord"),
0061     name = cms.string("L1TrackTripletWord"),
0062     doc = cms.string("GTT Triplets"),
0063     singleton = cms.bool(False), # the number of entries is variable
0064     variables = cms.PSet(
0065         valid = Var("valid()", float, doc="valid"),
0066         pt = Var("pt()", float, doc="pt"),
0067         eta = Var("glbeta()", float, doc="eta"),
0068         phi = Var("glbphi()", float, doc="phi"),
0069         mass = Var("mass()", float, doc="mass"),
0070         charge = Var("charge()", float, doc="charge"),
0071         ditrackMinMass = Var("ditrackMinMass()", float, doc="ditrackMinMass"),
0072         ditrackMaxMass = Var("ditrackMaxMass()", float, doc="ditrackMaxMass"),
0073         ditrackMinZ0 = Var("ditrackMinZ0()", float, doc="ditrackMinZ0"),
0074         ditrackMaxZ0 = Var("ditrackMaxZ0()", float, doc="ditrackMaxZ0"),
0075         hwValid = Var("validBits()", "uint", doc="hardware valid"),
0076         hwPt = Var("ptBits()", "uint", doc="hardware pt"),
0077         hwEta = Var("glbEtaBits()", "uint", doc="hardware eta"),
0078         hwPhi = Var("glbPhiBits()", "uint", doc="hardware eta"),
0079         hwMass = Var("massBits()", "uint", doc="hardware mass"),
0080         hwCharge = Var("chargeBits()", "uint", doc="hardware charge"),
0081         hwDitrackMinMass = Var("ditrackMinMassBits()", "uint", doc="hardware DitrackMinMass"),
0082         hwDitrackMaxMass = Var("ditrackMaxMassBits()", "uint", doc="hardware DitrackMaxMass"),
0083         hwDitrackMinZ0 = Var("ditrackMinZ0Bits()", "uint", doc="hardware DitrackMinZ0"),
0084         hwDitrackMaxZ0 = Var("ditrackMaxZ0Bits()", "uint", doc="hardware DitrackMaxZ0")
0085     )
0086 )
0087 
0088 gttEtSumTable = cms.EDProducer(
0089     "SimpleTriggerL1CandidateFlatTableProducer",
0090     src = cms.InputTag("l1tTrackerEmuEtMiss", "L1TrackerEmuEtMiss"),
0091     name = cms.string("L1TrackMET"),
0092     doc = cms.string("GTT Track MET"),
0093     singleton = cms.bool(True), # the number of entries is variable
0094     variables = cms.PSet(
0095         # as in https://github.com/cms-l1t-offline/cmssw/blob/phase2-l1t-integration-14_0_0_pre3/L1Trigger/L1TTrackMatch/interface/L1TkEtMissEmuAlgo.h#L50
0096         pt = Var("et", float, doc = "Track MET"),
0097         # as in https://github.com/cms-l1t-offline/cmssw/blob/phase2-l1t-integration-14_0_0_pre3/L1Trigger/L1TTrackMatch/interface/L1TkEtMissEmuAlgo.h#L51
0098         phi = Var("hwPhi() * 0.00076699039", float, doc = "Track MET Phi"),
0099         hwValid = Var("hwQual() > 0", bool, doc = "hardware Missing Et valid bit"),
0100         hwPt = Var("hwPt()", "int", doc = "hardware pt track MET"),
0101         hwPhi = Var("hwPhi()", "int", doc = "hardware Missing Et phi"),
0102     )
0103 )
0104 
0105 gttHtSumTable = cms.EDProducer(
0106     "SimpleTriggerL1CandidateFlatTableProducer",
0107     src = cms.InputTag("l1tTrackerEmuHTMiss", "L1TrackerEmuHTMiss"),
0108     name = cms.string("L1TrackHT"),
0109     doc = cms.string("GTT Track Missing HT"),
0110     singleton = cms.bool(True), # the number of entries is variable
0111     variables = cms.PSet(
0112         # as in https://github.com/artlbv/cmssw/blob/from-CMSSW_12_5_2_patch1/L1Trigger/L1TNtuples/src/L1AnalysisPhaseIIStep1.cc#L623
0113         mht = Var(f"p4().energy()", float, doc="Track MHT vector sum"), 
0114         # as in https://github.com/cms-l1t-offline/cmssw/blob/phase2-l1t-integration-14_0_0_pre3/L1Trigger/L1TTrackMatch/interface/L1TkHTMissEmulatorProducer.h#L70
0115         phi = Var("?hwPhi * 0.00076699039 > 3.1415926535?hwPhi * 0.00076699039 - 2 * 3.1415926535:hwPhi * 0.00076699039", float, doc = "Track MHT Phi"), # Fix phi-wraparound issue
0116         # as in https://github.com/cms-l1t-offline/cmssw/blob/phase2-l1t-integration-14_0_0_pre3/L1Trigger/L1TTrackMatch/interface/L1TkHTMissEmulatorProducer.h#L65
0117         ht = Var("hwPt() * 0.03125", float, doc = "Track HT scalar sum"), 
0118         hwValid = Var("hwQual() > 0", bool, doc = "hardware Track MHT valid bit"),
0119         hwPt = Var("hwPt()", "int", doc = "hardware Track HT scalar sum"),
0120         hwPhi = Var("hwPhi()", "int", doc = "hardware Track MHT phi"),
0121     )
0122 )
0123 
0124 gttExtHtSumTable = gttHtSumTable.clone(
0125     src = cms.InputTag("l1tTrackerEmuHTMissExtended","L1TrackerEmuHTMissExtended"),
0126     name = cms.string("L1ExtTrackHT"),
0127     doc = cms.string("GTT Extended Track Missing HT"),
0128 )
0129 
0130 ### Store Primary Vertex only (first vertex)
0131 pvtxTable = vtxTable.clone(
0132     maxLen = cms.uint32(1),
0133     name = cms.string("L1PV"),
0134     doc = cms.string("GTT Leading Primary Vertex"),
0135 )
0136 
0137 #### EG
0138 tkPhotonTable = cms.EDProducer(
0139     "SimpleTriggerL1TkEmFlatTableProducer",
0140     src = cms.InputTag('l1tLayer2EG','L1CtTkEm'),
0141     cut = cms.string("pt > 5"),
0142     name = cms.string("L1tkPhoton"),
0143     doc = cms.string("Tk Photons (EM)"),
0144     # singleton = cms.bool(False), # the number of entries is variable
0145     variables = cms.PSet(
0146         l1ObjVars,
0147         relIso = Var("trkIsol", float, doc = "relative Isolation based on trkIsol variable"),
0148         # tkIso   = Var("trkIsol", float), ## use above instead to be consistent with the GT and with the tkEle
0149         # tkIsoPV  = Var("trkIsolPV", float),
0150         # pfIso   = Var("pfIsol", float),
0151         # puppiIso  = Var("puppiIsol", float),
0152         ## quality WPs, see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuidePhysicsCutParser#Suppported_operators_and_functio
0153         saId  = Var("test_bit(hwQual(),0)", bool, doc = "standalone ID, bit 0 of hwQual"),
0154         eleId = Var("test_bit(hwQual(),1)", bool, doc = "electron ID, bit 1 of hwQual"),
0155         phoId = Var("test_bit(hwQual(),2)", bool, doc = "photon ID, bit 2 of hwQual"),
0156     )
0157 )
0158 
0159 tkEleTable = cms.EDProducer(
0160     "SimpleTriggerL1TkElectronFlatTableProducer", #TkElectron includes trkzVtx
0161     src = cms.InputTag('l1tLayer2EG','L1CtTkElectron'),
0162     name = cms.string("L1tkElectron"),
0163     doc = cms.string("Tk Electrons"),
0164     cut = cms.string("pt > 5"),
0165     # singleton = cms.bool(False), # the number of entries is variable
0166     variables = cms.PSet(
0167         tkPhotonTable.variables.clone(),
0168         z0     = Var("trkzVtx", float, "track vertex z0"),
0169         charge = Var("charge", int, doc="charge"),
0170     )
0171 )
0172 
0173 ## additional variables that are not used in the menu/GT
0174 ## from https://github.com/p2l1pfp/FastPUPPI/blob/12_5_X/NtupleProducer/python/runPerformanceNTuple.py#L499C8-L501C83
0175 # tkEleTable.variables.tkEta = Var("trkPtr.eta", float,precision=8)
0176 # tkEleTable.variables.tkPhi = Var("trkPtr.phi", float,precision=8)
0177 # tkEleTable.variables.tkPt = Var("trkPtr.momentum.perp", float,precision=8)
0178 
0179 # merge EG
0180 staEGmerged = cms.EDProducer("CandViewMerger",
0181        src = cms.VInputTag(
0182            cms.InputTag('l1tPhase2L1CaloEGammaEmulator','GCTEGammas'),
0183            cms.InputTag('l1tLayer2EG','L1CtEgEE'),
0184   )
0185 )
0186 
0187 staEGTable = cms.EDProducer(
0188     "SimpleCandidateFlatTableProducer",
0189     src = cms.InputTag("staEGmerged"),
0190     cut = cms.string("pt > 5"),
0191     name = cms.string("L1EG"),
0192     doc = cms.string("standalone EG merged endcap and barrel"),
0193     # singleton = cms.bool(False), # the number of entries is variable
0194     variables = cms.PSet(
0195         l1P3Vars,
0196         ### FIXME
0197         ### NOTE THE BELOW DOES NOT WORK FOR NOW
0198         ### This only works when using each collection barrel/endcap separately with the SimpleTriggerL1EGFlatTableProducer -> Need to fix this !
0199         # hwQual = Var("hwQual",int,doc="hardware qual"),
0200         ## quality WPs, see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuidePhysicsCutParser#Suppported_operators_and_functio
0201         # saId  = Var("test_bit(hwQual(),0)", bool),
0202         # eleId = Var("test_bit(hwQual(),1)", bool),
0203         # phoId = Var("test_bit(hwQual(),2)", bool),
0204     )
0205 )
0206 
0207 staEGebTable = cms.EDProducer(
0208     "SimpleTriggerL1EGFlatTableProducer",
0209     src = cms.InputTag('l1tPhase2L1CaloEGammaEmulator','GCTEGammas'),
0210     cut = cms.string("pt > 5"),
0211     name = cms.string("L1EGbarrel"),
0212     doc = cms.string("standalone EG barrel"),
0213     # singleton = cms.bool(False), # the number of entries is variable
0214     variables = cms.PSet(
0215         l1P3Vars,
0216         ### FIXME
0217         ### This only works when using each collection barrel/endcap separately with the SimpleTriggerL1EGFlatTableProducer -> Need to fix this !
0218         hwQual = Var("hwQual",int,doc="hardware qual"),
0219         # quality WPs, see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuidePhysicsCutParser#Suppported_operators_and_functio
0220         saId  = Var("test_bit(hwQual(),0)", bool, doc = "standalone ID, bit 0 of hwQual"),
0221         eleId = Var("test_bit(hwQual(),1)", bool, doc = "electron ID, bit 1 of hwQual"),
0222         phoId = Var("test_bit(hwQual(),2)", bool, doc = "photon ID, bit 2 of hwQual"),
0223     )
0224 )
0225 
0226 staEGeeTable =  staEGebTable.clone(
0227     src = cms.InputTag('l1tLayer2EG','L1CtEgEE'),
0228     name = cms.string("L1EGendcap"),
0229     doc = cms.string("standalone EG endcap"),
0230 )
0231 
0232 ### Muons
0233 
0234 staMuTable = cms.EDProducer(
0235     "SimpleTriggerL1SAMuonFlatTableProducer",
0236     src = cms.InputTag('l1tSAMuonsGmt','prompt'),
0237     name = cms.string("L1gmtMuon"),
0238     doc = cms.string("GMT standalone Muons, origin: GMT"),
0239     cut = cms.string(""),
0240     # singleton = cms.bool(False), # the number of entries is variable
0241     variables = cms.PSet(
0242         # l1ObjVars,
0243         ### WARNING : the pt/eta/phi/vz methods give rounded results -> use the "physical" accessors
0244         # vz = Var("vz",float),
0245         chargeNoPh = Var("charge", int, doc="charge id"),
0246 
0247         ## physical values
0248         charge  = Var("phCharge", int, doc="charge id"),
0249         pt  = Var("phPt()",float),
0250         eta = Var("phEta()",float),
0251         phi = Var("phPhi()",float),
0252         z0 = Var("phZ0()",float),
0253         d0 = Var("phD0()",float),
0254         # beta = Var("phBeta()",float), # does not exist
0255 
0256         ## hw Values
0257         hwPt = Var("hwPt()",int,doc="hardware pt"),
0258         hwEta = Var("hwEta()",int,doc="hardware eta"),
0259         hwPhi = Var("hwPhi()",int,doc="hardware phi"),
0260         hwQual = Var("hwQual()",int,doc="hardware qual"),
0261         hwIso = Var("hwIso()",int,doc="hardware iso"),
0262         hwBeta = Var("hwBeta()",int,doc="hardware beta"),
0263 
0264         # ## more info
0265         # nStubs = Var("stubs().size()",int,doc="number of stubs"),
0266     )
0267 )
0268 
0269 staDisplacedMuTable = staMuTable.clone(
0270     src = cms.InputTag("l1tSAMuonsGmt", "displaced"),
0271     name = cms.string("L1gmtDispMuon"),
0272     doc = cms.string("GMT standalone displaced Muons, origin: GMT"),
0273 )
0274 
0275 gmtTkMuTable = cms.EDProducer(
0276     "SimpleTriggerL1TrackerMuonFlatTableProducer",
0277     src = cms.InputTag('l1tTkMuonsGmt'),
0278     name = cms.string("L1gmtTkMuon"),
0279     doc = cms.string("GMT Tk Muons, origin: GMT"),
0280     cut = cms.string(""),
0281     # singleton = cms.bool(False), # the number of entries is variable
0282     variables = cms.PSet(
0283         staMuTable.variables.clone(),
0284 
0285         ## tkMu specific
0286         vlooseId  = Var("test_bit(hwQual(),0)", bool, doc = "VLoose ID, bit 0 of hwQual"),
0287         looseId   = Var("test_bit(hwQual(),1)", bool, doc = "Loose ID, bit 1 of hwQual"),
0288         mediumId  = Var("test_bit(hwQual(),2)", bool, doc = "Medium ID, bit 2 of hwQual"),
0289         tightId   = Var("test_bit(hwQual(),3)", bool, doc = "Tight ID, bit 3 of hwQual")
0290 
0291         # ## more info
0292         # nStubs = Var("stubs().size()",int,doc="number of stubs"),
0293     )
0294 )
0295 
0296 ### Standalone Muon from GMT, before ghost busting
0297 
0298 KMTFpromptMuTable = staMuTable.clone(
0299     src = cms.InputTag("l1tKMTFMuonsGmt", "prompt"),
0300     name = cms.string("L1MuonKMTF"),
0301     doc = cms.string("GMT KMTF prompt Muons, origin: GMT"),
0302 )
0303 
0304 KMTFDisplaceMuTable = staMuTable.clone(
0305     src = cms.InputTag("l1tKMTFMuonsGmt", "displaced"),
0306     name = cms.string("L1DispMuonKMTF"),
0307     doc = cms.string("GMT KMTF Displaced Muons, origin: GMT"),
0308 )
0309 
0310 OMTFpromptMuTable = staMuTable.clone(
0311     src = cms.InputTag("l1tFwdMuonsGmt", "prompt"),
0312     cut = cms.string("tfType() == 1 | tfType() == 2"), #tftype::omtf_neg, tftype::omtf_pos
0313     name = cms.string("L1MuonOMTF"),
0314     doc = cms.string("GMT OMTF prompt Muons, origin: GMT"),
0315 )
0316 
0317 OMTFDisplaceMuTable = staMuTable.clone(
0318     src = cms.InputTag("l1tFwdMuonsGmt", "displaced"),
0319     cut = cms.string("tfType() == 1 | tfType() == 2"), #tftype::omtf_neg, tftype::omtf_pos
0320     name = cms.string("L1DispMuonOMTF"),
0321     doc = cms.string("GMT OMTF displaced Muons, origin: GMT"),
0322 )
0323 
0324 EMTFpromptMuTable = staMuTable.clone(
0325     src = cms.InputTag("l1tFwdMuonsGmt", "prompt"),
0326     cut = cms.string("tfType() == 3 | tfType() == 4"), #tftype::EMTF_neg, tftype::EMTF_pos
0327     name = cms.string("L1MuonEMTF"),
0328     doc = cms.string("GMT EMTF prompt Muons, origin: GMT"),
0329 )
0330 
0331 EMTFDisplaceMuTable = staMuTable.clone(
0332     src = cms.InputTag("l1tFwdMuonsGmt", "displaced"),
0333     cut = cms.string("tfType() == 3 | tfType() == 4"), #tftype::EMTF_neg, tftype::EMTF_pos
0334     name = cms.string("L1DispMuonEMTF"),
0335     doc = cms.string("GMT EMTF displaced Muons, origin: GMT"),
0336 )
0337 
0338 ### Jets
0339 sc4JetTable = cms.EDProducer(
0340     "SimpleCandidateFlatTableProducer",
0341     src = cms.InputTag('l1tSC4PFL1PuppiCorrectedEmulator'),
0342     cut = cms.string(""),
0343     name = cms.string("L1puppiJetSC4"),
0344     doc = cms.string("SeededCone 0.4 Puppi jet,  origin: Correlator"),
0345     singleton = cms.bool(False), # the number of entries is variable
0346     variables = cms.PSet(
0347         l1P3Vars,
0348         et = Var("et",float),
0349         # z0 = Var("vz", float, "vertex z0"), ## empty
0350     )
0351 )
0352 
0353 sc8JetTable = sc4JetTable.clone(
0354     src = 'l1tSC8PFL1PuppiCorrectedEmulator',
0355     name = "L1puppiJetSC8",
0356     doc = "SeededCone 0.8 Puppi jet,  origin: Correlator"
0357 )
0358 
0359 sc4ExtJetTable = sc4JetTable.clone(
0360     src = cms.InputTag('l1tSC4PFL1PuppiExtendedCorrectedEmulator'),
0361     name = cms.string("L1puppiExtJetSC4"),
0362     doc = cms.string("SeededCone 0.4 Puppi jet from extended Puppi,  origin: Correlator"),
0363     externalVariables = cms.PSet(
0364         btagScore = ExtVar(cms.InputTag("l1tBJetProducerPuppiCorrectedEmulator", "L1PFBJets"),float, doc="NNBtag score"),
0365         llpTagScore = ExtVar(cms.InputTag("l1tTOoLLiPProducerCorrectedEmulator", "L1PFLLPJets"),float, doc="NN LLP Tag score"),
0366     ),
0367 )
0368 
0369 histoJetTable = sc4JetTable.clone(
0370     src = cms.InputTag("l1tPhase1JetCalibrator9x9trimmed" ,   "Phase1L1TJetFromPfCandidates"),
0371     name = cms.string("L1puppiJetHisto"),
0372     doc = cms.string("Puppi Jets histogrammed 9x9, trimmed, origin: Correlator"),
0373 )
0374 
0375 
0376 caloJetTable = sc4JetTable.clone(
0377     src = cms.InputTag("l1tPhase2CaloJetEmulator","GCTJet"),
0378     name = cms.string("L1caloJet"),
0379     doc = cms.string("Calo Jets, origin: GCT"),
0380     cut = cms.string("pt > 5"), ## increase this to save space
0381 )
0382 
0383 ### SUMS
0384 
0385 puppiMetTable = cms.EDProducer(
0386     "SimpleCandidateFlatTableProducer",
0387     src = cms.InputTag("l1tMETPFProducer",""),
0388     name = cms.string("L1puppiMET"),
0389     doc = cms.string("Puppi MET, origin: Correlator"),
0390     singleton = cms.bool(True), # the number of entries is variable
0391     variables = cms.PSet(
0392         l1PtVars,
0393         et = Var("et",float)
0394     )
0395 )
0396 
0397 puppiMLMetTable = cms.EDProducer(
0398     "SimpleCandidateFlatTableProducer",
0399     src = cms.InputTag("l1tMETMLProducer",""),
0400     name = cms.string("L1puppiMLMET"),
0401     doc = cms.string("Puppi ML MET, origin: Correlator"),
0402     singleton = cms.bool(True), # the number of entries is variable
0403     variables = cms.PSet(
0404         l1PtVars,
0405         et = Var("et",float)
0406     )
0407 )
0408 
0409 sc4SumsTable = cms.EDProducer(
0410     "SimpleCandidateFlatTableProducer",
0411     src = cms.InputTag("l1tSC4PFL1PuppiCorrectedEmulatorMHT",""),
0412     name = cms.string("L1puppiJetSC4sums"),
0413     doc = cms.string("HT and MHT from SeededCone Radius 0.8 jets; idx 0 is HT, idx 1 is MHT, origin: Correlator"),
0414     singleton = cms.bool(False), # the number of entries is not variable
0415     cut = cms.string(""),
0416     variables = cms.PSet(
0417         l1PtVars,
0418         #ht = Var("pt[0]", float)
0419     )
0420 )
0421 
0422 histoSumsTable = sc4SumsTable.clone(
0423     src = cms.InputTag("l1tPhase1JetSumsProducer9x9trimmed","Sums"),
0424     name = cms.string("L1puppiHistoJetSums"),
0425     doc = cms.string("HT and MHT from histogrammed 9x9 jets, origin: Correlator"),
0426 )
0427 
0428 
0429 ### Taus
0430 caloTauTable = cms.EDProducer(
0431     "SimpleTriggerL1CaloJetFlatTableProducer",
0432     src = cms.InputTag("l1tPhase2CaloJetEmulator","GCTJet"),
0433     cut = cms.string("pt > 5"),
0434     name = cms.string("L1caloTau"),
0435     doc = cms.string("Calo Taus"),
0436     # singleton = cms.bool(False), # the number of entries is variable
0437     variables = cms.PSet(
0438         pt  = Var("tauEt",  float, precision=l1_float_precision_), # Define as pt in nano, as required by menu tools downstream
0439         phi = Var("phi", float, precision=l1_float_precision_),
0440         eta = Var("eta", float, precision=l1_float_precision_),
0441     )
0442 )
0443 
0444 
0445 nnCaloTauTable = cms.EDProducer(
0446     "SimpleTriggerL1CandidateFlatTableProducer",
0447     src = cms.InputTag("l1tNNCaloTauEmulator","L1NNCaloTauCollectionBXV"),
0448     cut = cms.string("pt > 5"),
0449     name = cms.string("L1nnCaloTau"),
0450     doc = cms.string("NN Calo Taus"),
0451     singleton = cms.bool(False), # the number of entries is variable
0452     variables = cms.PSet(
0453         l1P3Vars,
0454         hwQual = Var("hwQual",int,doc="Tau ID working point, 90% --> 3, 95% --> 2, 99% --> 1, anything else --> 0"),
0455         hwIso = Var("hwIso",int,doc="Tau ID * 10E4")
0456     )
0457 )
0458 
0459 nnPuppiTauTable = cms.EDProducer(
0460     "SimpleTriggerL1PFTauFlatTableProducer",
0461     src = cms.InputTag("l1tNNTauProducerPuppi","L1PFTausNN"),
0462     cut = cms.string(""),
0463     name = cms.string("L1nnPuppiTau"),
0464     doc = cms.string("NN Puppi Taus"),
0465     # singleton = cms.bool(False), # the number of entries is variable
0466     variables = cms.PSet(
0467         l1P3Vars,
0468         charge = Var("charge", int),
0469         z0 = Var("z0", float, "vertex z0"),                
0470         ## copy paste from old menu ntuple https://github.com/artlbv/cmssw/blob/from-CMSSW_12_5_2_patch1/L1Trigger/L1TNtuples/src/L1AnalysisPhaseIIStep1.cc#L543C1-L555C1
0471         chargedIso = Var("chargedIso", float),
0472         fullIso = Var("fullIso", float),
0473         id = Var("id", int),
0474         passLooseNN = Var("passLooseNN", int),
0475         passLoosePF = Var("passLoosePF", int),
0476         passTightPF = Var("passTightPF", int),
0477         passTightNN = Var("passTightNN", int),
0478         passLooseNNMass = Var("passLooseNNMass", int),
0479         passTightNNMass = Var("passTightNNMass", int),
0480         passMass = Var("passMass", int),
0481         dXY = Var("dxy", float),
0482     )
0483 )
0484 
0485 hpsTauTable = cms.EDProducer(
0486     "SimpleTriggerL1HPSPFTauFlatTableProducer",
0487     src = cms.InputTag("l1tHPSPFTauProducerPuppi",""),
0488     cut = cms.string(""),
0489     name = cms.string("L1hpsTau"),
0490     doc = cms.string("HPS Taus"),
0491     singleton = cms.bool(False), # the number of entries is variable
0492     variables = cms.PSet(
0493         l1P3Vars
0494     )
0495 )
0496 
0497 ## L1 Objects
0498 p2L1TablesTask = cms.Task(
0499     ## Muons
0500     gmtTkMuTable,
0501     staMuTable, staDisplacedMuTable,
0502 
0503     # below not available in `RAW/DIGI/FEVTDEBUG` data tier, only when rerunning L1 at the same time
0504     KMTFpromptMuTable,
0505     KMTFDisplaceMuTable,
0506     OMTFpromptMuTable,
0507     OMTFDisplaceMuTable,
0508     EMTFpromptMuTable,
0509     EMTFDisplaceMuTable,
0510     
0511     ## EG
0512     tkEleTable,
0513     tkPhotonTable,
0514     staEGmerged, staEGTable, ## Need to run merger before Table task! Stanalone EG – not in GT yet
0515     staEGebTable, staEGeeTable,
0516     # ## jets
0517     sc4JetTable,
0518     sc8JetTable,
0519     sc4ExtJetTable, 
0520     histoJetTable,
0521     caloJetTable,
0522     # ## sums
0523     puppiMetTable,
0524     puppiMLMetTable,
0525     sc4SumsTable,
0526     histoSumsTable,
0527     # taus
0528     caloTauTable,
0529     nnCaloTauTable,
0530     nnPuppiTauTable,
0531     hpsTauTable,
0532     # GTT
0533     vtxTable,
0534     pvtxTable,
0535     gttTrackJetsTable,
0536     gttExtTrackJetsTable,
0537     gttTripletTable,
0538     gttEtSumTable,
0539     gttHtSumTable,
0540     gttExtHtSumTable,
0541 )
0542