diff --git a/Configuration/Applications/python/ConfigBuilder.py b/Configuration/Applications/python/ConfigBuilder.py index 79aff9aba3e7f..5eba30a3e6818 100644 --- a/Configuration/Applications/python/ConfigBuilder.py +++ b/Configuration/Applications/python/ConfigBuilder.py @@ -1559,6 +1559,7 @@ def prepare_REPACK(self, stepSpec = None): def loadPhase2GTMenu(self, menuFile: str): import importlib menuPath = f'L1Trigger.Configuration.Phase2GTMenus.{menuFile}' + print(f"Loading P2GT menu from {menuPath}") menuModule = importlib.import_module(menuPath) theMenu = menuModule.menu @@ -1585,7 +1586,7 @@ def prepare_L1P2GT(self, stepSpec=None): self.scheduleSequence('l1tGTProducerSequence', 'Phase2L1GTProducer') self.scheduleSequence('l1tGTAlgoBlockProducerSequence', 'Phase2L1GTAlgoBlockProducer') if stepSpec == None: - defaultMenuFile = "prototype_2023_v1_0_0" + defaultMenuFile = "step1_2024" self.loadPhase2GTMenu(menuFile = defaultMenuFile) else: self.loadPhase2GTMenu(menuFile = stepSpec) diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/prototypeSeeds.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/prototypeSeeds.py deleted file mode 100644 index def3cf3098e67..0000000000000 --- a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/prototypeSeeds.py +++ /dev/null @@ -1,10 +0,0 @@ -# Concatenate prototype menu seeds somewhere easy to handle -from L1Trigger.Phase2L1GT.l1tGTMenu_lepSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_hadr_metSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_crossLepSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_hadr_crossLepSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_BTagSeeds_cff import * diff --git a/L1Trigger/Phase2L1GT/python/l1tGTMenu_BTagSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_BTagSeeds_cff.py similarity index 100% rename from L1Trigger/Phase2L1GT/python/l1tGTMenu_BTagSeeds_cff.py rename to L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_BTagSeeds_cff.py diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_cff.py new file mode 100644 index 0000000000000..d03c99306fbd2 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_cff.py @@ -0,0 +1,16 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Menu +############################################################ + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2023.l1tGTMenu_lepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2023.l1tGTMenu_hadr_metSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2023.l1tGTMenu_crossLepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2023.l1tGTMenu_hadr_crossLepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2023.l1tGTMenu_BTagSeeds_cff import * + diff --git a/L1Trigger/Phase2L1GT/python/l1tGTMenu_crossLepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_crossLepSeeds_cff.py similarity index 100% rename from L1Trigger/Phase2L1GT/python/l1tGTMenu_crossLepSeeds_cff.py rename to L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_crossLepSeeds_cff.py diff --git a/L1Trigger/Phase2L1GT/python/l1tGTMenu_hadr_crossLepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_hadr_crossLepSeeds_cff.py similarity index 100% rename from L1Trigger/Phase2L1GT/python/l1tGTMenu_hadr_crossLepSeeds_cff.py rename to L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_hadr_crossLepSeeds_cff.py diff --git a/L1Trigger/Phase2L1GT/python/l1tGTMenu_hadr_metSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_hadr_metSeeds_cff.py similarity index 100% rename from L1Trigger/Phase2L1GT/python/l1tGTMenu_hadr_metSeeds_cff.py rename to L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_hadr_metSeeds_cff.py diff --git a/L1Trigger/Phase2L1GT/python/l1tGTMenu_lepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_lepSeeds_cff.py similarity index 100% rename from L1Trigger/Phase2L1GT/python/l1tGTMenu_lepSeeds_cff.py rename to L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2023/l1tGTMenu_lepSeeds_cff.py diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenuObjects_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenuObjects_cff.py new file mode 100644 index 0000000000000..9475e9d3764f6 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenuObjects_cff.py @@ -0,0 +1,103 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# Common objects for P2GT L1 seeds +############################################################ + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_constants import * + +############################################################ +# Muons +############################################################ + +l1tGTtkMuon = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), +) +l1tGTtkMuonLoose = l1tGTtkMuon.clone( + qualityFlags = get_object_ids("GMTTkMuons","Loose"), +) +l1tGTtkMuonVLoose = l1tGTtkMuonLoose.clone( + qualityFlags = get_object_ids("GMTTkMuons","VLoose"), +) + +############################################################ +# Jets +############################################################ + +l1tGTsc4Jet = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double( 2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + # minPt = cms.double(25), # safety cut - can be enabled everywhere (for now done in the get_threshold function) +) + +l1tGTsc4Jet_er5 = l1tGTsc4Jet.clone( + minEta = cms.double(-5), + maxEta = cms.double(5), +) + +############################################################ +# Taus +############################################################ +l1tGTnnTau = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Taus"), + minEta = cms.double(-2.172), + maxEta = cms.double(2.172), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Taus"), + minQualityScore = get_object_ids("CL2Taus","default") +) + +############################################################ +# Sums +############################################################ + +l1tGTHtSum = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum") +) + +l1tGTEtSum = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2EtSum") +) + +############################################################ +# Electrons +############################################################ + +l1tGTtkElectronBase = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), +) + +l1tGTtkElectron = l1tGTtkElectronBase.clone( + regionsQualityFlags = get_object_ids("CL2Electrons","NoIso"), +) + +l1tGTtkElectronLowPt = l1tGTtkElectronBase.clone( + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), +) + +l1tGTtkIsoElectron = l1tGTtkElectronBase.clone( + regionsMaxRelIsolationPt = get_object_isos("CL2Electrons","Iso"), +) + +############################################################ +# Photons +############################################################ + +l1tGTtkPhoton = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), +) + +l1tGTtkIsoPhoton = l1tGTtkPhoton.clone( + regionsMaxRelIsolationPt = get_object_isos("CL2Photons","Iso"), +) \ No newline at end of file diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_BTagSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_BTagSeeds_cff.py new file mode 100644 index 0000000000000..496d6f07bf8fd --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_BTagSeeds_cff.py @@ -0,0 +1,126 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_constants import * +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenuObjects_cff import * + +DoubleTkMuonOSEr1p5Dr1p4 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + minEta = cms.double(-1.5), + maxEta = cms.double(1.5), + ), + collection2 = l1tGTtkMuonLoose.clone( + minEta = cms.double(-1.5), + maxEta = cms.double(1.5), + ), + minDR = cms.double(0), + maxDR =cms.double(1.4), + maxDz = cms.double(1), + os = cms.bool(True), +) +pDoubleTkMuon_OS_Er1p5_Dr1p4 = cms.Path(DoubleTkMuonOSEr1p5Dr1p4) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon_OS_Er1p5_Dr1p4"))) + +DoubleTkMuon44OSDr1p2 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + minPt = cms.double(4), + ), + collection2 = l1tGTtkMuonLoose.clone( + minPt = cms.double(4), + ), + minDR = cms.double(0), + maxDR = cms.double(1.2), + maxDz = cms.double(1), + os = cms.bool(True), +) +pDoubleTkMuon_4_4_OS_Dr1p2 = cms.Path(DoubleTkMuon44OSDr1p2) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon_4_4_OS_Dr1p2"))) + +DoubleTkMuon4p5OSEr2Mass7to18 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + minEta = cms.double(-2.0), + maxEta = cms.double(2.0), + minPt = cms.double(4), + ), + collection2 = l1tGTtkMuonLoose.clone( + minEta = cms.double(-2.0), + maxEta = cms.double(2.0), + minPt = cms.double(4), + ), + minDR = cms.double(0), + minInvMass = cms.double(7), + maxInvMass = cms.double(18), + maxDz = cms.double(1), + os = cms.bool(True), +) +pDoubleTkMuon_4p5_4p5_OS_Er2_Mass7to18 = cms.Path(DoubleTkMuon4p5OSEr2Mass7to18) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon_4p5_4p5_OS_Er2_Mass7to18"))) + +TripleTkMuon530OSMassMax9 = l1tGTTripleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + minPt = cms.double(5), + ), + collection2 = l1tGTtkMuonLoose.clone( + minPt = cms.double(3), + ), + collection3 = l1tGTtkMuonLoose.clone( + minPt = cms.double(0), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1), + os = cms.bool(True), + maxInvMass = cms.double(9), + ), + correl13 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl23 = cms.PSet( + minDR = cms.double(0), + ) +) +pTripleTkMuon_5_3_0_DoubleTkMuon_5_3_OS_MassTo9 = cms.Path(TripleTkMuon530OSMassMax9) +algorithms.append(cms.PSet(expression = cms.string("pTripleTkMuon_5_3_0_DoubleTkMuon_5_3_OS_MassTo9"))) + +TripleTkMuon53p52p5OSMass5to17 = l1tGTTripleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + minPt = cms.double(5), + ), + collection2 = l1tGTtkMuonLoose.clone( + minPt = cms.double(4), + ), + collection3 = l1tGTtkMuonLoose.clone( + minPt = cms.double(2), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1), + ), + correl13 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1), + os = cms.bool(True), + minInvMass = cms.double(5), + maxInvMass = cms.double(17), + ), + correl23 = cms.PSet( + minDR = cms.double(0), + ) +) +pTripleTkMuon_5_3p5_2p5_OS_Mass5to17 = cms.Path(TripleTkMuon53p52p5OSMass5to17) +algorithms.append(cms.PSet(expression = cms.string("pTripleTkMuon_5_3p5_2p5_OS_Mass5to17"))) diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_cff.py new file mode 100644 index 0000000000000..b9497032a5c6b --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_cff.py @@ -0,0 +1,16 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Menu +############################################################ + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenu_lepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenu_hadr_metSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenu_crossLepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenu_hadr_crossLepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenu_BTagSeeds_cff import * + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_crossLepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_crossLepSeeds_cff.py new file mode 100644 index 0000000000000..bcdf5cae59e83 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_crossLepSeeds_cff.py @@ -0,0 +1,128 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_constants import * +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenuObjects_cff import * + +TkMuonTkIsoEle720 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(7,7,7), # no scaling used below 8 GeV + ), + collection2 = l1tGTtkIsoElectron.clone( + regionsMinPt = get_object_thrs(20, "CL2Electrons","Iso"), + ), + maxDz = cms.double(1), +) +pTkMuonTkIsoEle7_20 = cms.Path(TkMuonTkIsoEle720) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonTkIsoEle7_20"))) + +TkMuonTkEle723 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(7,7,7), # no scaling used below 8 GeV + ), + collection2 = l1tGTtkElectron.clone( + regionsMinPt = get_object_thrs(23, "CL2Electrons","NoIso"), + ), + maxDz = cms.double(1), +) +pTkMuonTkEle7_23 = cms.Path(TkMuonTkEle723) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonTkEle7_23"))) + +TkEleTkMuon1020 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkElectron.clone( + regionsMinPt = get_object_thrs(36, "CL2Electrons","NoIso"), + ), + collection2 = l1tGTtkMuonVLoose.clone( + regionsMinPt = get_object_thrs(20, "GMTTkMuons","VLoose"), + ), + maxDz = cms.double(1), +) +pTkEleTkMuon10_20 = cms.Path(TkEleTkMuon1020) +algorithms.append(cms.PSet(expression = cms.string("pTkEleTkMuon10_20"))) + +TkMuonDoubleTkEle61717 = l1tGTTripleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(6,6,6), + ), + collection2 = l1tGTtkElectronLowPt.clone( + regionsMinPt = get_object_thrs(17, "CL2Electrons","NoIso"), + ), + collection3 = l1tGTtkElectronLowPt.clone( + regionsMinPt = get_object_thrs(17, "CL2Electrons","NoIso"), + ), + correl12 = cms.PSet( + maxDz = cms.double(1) + ), + correl13 = cms.PSet( + maxDz = cms.double(1) + ), +) +pTkMuonDoubleTkEle6_17_17 = cms.Path(TkMuonDoubleTkEle61717) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonDoubleTkEle6_17_17"))) + +DoubleTkMuonTkEle559 = l1tGTTripleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(5,5,5), + ), + collection2 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(5,5,5), + ), + collection3 = l1tGTtkElectronLowPt.clone( + regionsMinPt = get_object_thrs(9, "CL2Electrons","NoIso"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl13 = cms.PSet( + maxDz = cms.double(1) + ), +) +pDoubleTkMuonTkEle5_5_9 = cms.Path(DoubleTkMuonTkEle559) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuonTkEle5_5_9"))) + +PuppiTauTkMuon4218 = l1tGTDoubleObjectCond.clone( ###NB We need puppivertex here + collection1 = l1tGTtkMuonVLoose.clone( + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsMinPt = get_object_thrs(18, "GMTTkMuons","VLoose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0) # primary vertex index (choose 0) + ), + collection2 = l1tGTnnTau.clone( + regionsMinPt = get_object_thrs(42, "CL2Taus","default"), + ), +) +pPuppiTauTkMuon42_18 = cms.Path(PuppiTauTkMuon4218) +algorithms.append(cms.PSet(expression = cms.string("pPuppiTauTkMuon42_18"))) + +PuppiTauTkIsoEle4522 = l1tGTDoubleObjectCond.clone( ###NB We need puppivertex here + collection1 = l1tGTtkIsoElectron.clone( + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsMinPt = get_object_thrs(22, "CL2Electrons","Iso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0) # primary vertex index (choose 0) + ), + collection2 = l1tGTnnTau.clone( + regionsMinPt = get_object_thrs(45, "CL2Taus","default"), + ), +) +pPuppiTauTkIsoEle45_22 = cms.Path(PuppiTauTkIsoEle4522) +algorithms.append(cms.PSet(expression = cms.string("pPuppiTauTkIsoEle45_22"))) + + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_hadr_crossLepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_hadr_crossLepSeeds_cff.py new file mode 100644 index 0000000000000..65774e94fed94 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_hadr_crossLepSeeds_cff.py @@ -0,0 +1,190 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_constants import * +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenuObjects_cff import * + +TkMuonPuppiHT6320 = l1tGTDoubleObjectCond.clone( #needs z0 with the puppivertex + collection1 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(6,6,6), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = l1tGTHtSum.clone( + minScalarSumPt = get_object_thrs(320, "CL2HtSum","HT"), + ), +) +pTkMuonPuppiHT6_320 = cms.Path(TkMuonPuppiHT6320) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonPuppiHT6_320"))) + + +TkMuTriPuppiJetdRMaxDoubleJetdEtaMax = l1tGTQuadObjectCond.clone( #needs z0 between muon and puppivertex + collection1 = l1tGTtkMuonVLoose.clone( + regionsMinPt = get_object_thrs(12, "GMTTkMuons","VLoose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = l1tGTsc4Jet.clone( + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + collection3 = l1tGTsc4Jet.clone( + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + collection4 = l1tGTsc4Jet.clone( + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + correl12 = cms.PSet( + maxDR = cms.double(0.4), + ), + correl34 = cms.PSet( + maxDEta = cms.double(1.6) + ), +) +pTkMuTriPuppiJet_12_40_dRMax_DoubleJet_dEtaMax = cms.Path(TkMuTriPuppiJetdRMaxDoubleJetdEtaMax) +algorithms.append(cms.PSet(expression=cms.string("pTkMuTriPuppiJet_12_40_dRMax_DoubleJet_dEtaMax"))) + +TkMuPuppiJetPuppiMet = l1tGTTripleObjectCond.clone( #needs z0 between muon and puppivertex + collection1 = l1tGTtkMuonLoose.clone( + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsMinPt=cms.vdouble(3,3,3), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(110, "CL2JetsSC4", "default"), + ), + collection3 = l1tGTEtSum.clone( + minPt = get_object_thrs(120, "CL2EtSum","default"), + ), +) +pTkMuPuppiJetPuppiMet_3_110_120 = cms.Path(TkMuPuppiJetPuppiMet) +algorithms.append(cms.PSet(expression=cms.string("pTkMuPuppiJetPuppiMet_3_110_120"))) + + +DoubleTkMuPuppiJetPuppiMet = l1tGTQuadObjectCond.clone( #needs z0 between puppivertex and muon + collection1 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(3,3,3), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(3,3,3), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection3 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(60, "CL2JetsSC4", "default"), + ), + collection4 = l1tGTEtSum.clone( + minPt = get_object_thrs(130, "CL2EtSum","default"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + ) +) +pDoubleTkMuPuppiJetPuppiMet_3_3_60_130 = cms.Path(DoubleTkMuPuppiJetPuppiMet) +algorithms.append(cms.PSet(expression=cms.string("pDoubleTkMuPuppiJetPuppiMet_3_3_60_130"))) + + +DoubleTkMuPuppiHT = l1tGTTripleObjectCond.clone( #needs z0 between puppivertex and muon + collection1 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(3,3,3), + primVertex = cms.uint32(0), # primary vertex index (choose 0) + maxPrimVertDz = cms.double(1), + ), + collection2 = l1tGTtkMuonLoose.clone( + regionsMinPt=cms.vdouble(3,3,3), + primVertex = cms.uint32(0), # primary vertex index (choose 0) + maxPrimVertDz = cms.double(1), + ), + collection3 = l1tGTHtSum.clone( + minScalarSumPt = get_object_thrs(300, "CL2HtSum","HT"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + ) +) +pDoubleTkMuPuppiHT_3_3_300 = cms.Path(DoubleTkMuPuppiHT) + +algorithms.append(cms.PSet(expression=cms.string("pDoubleTkMuPuppiHT_3_3_300"))) + + +DoubleTkElePuppiHT = l1tGTTripleObjectCond.clone( #needs z0 between puppivertex and muon + collection1 = l1tGTtkElectronLowPt.clone( + regionsMinPt = get_object_thrs(8, "CL2Electrons","NoIso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = l1tGTtkElectronLowPt.clone( + regionsMinPt = get_object_thrs(8, "CL2Electrons","NoIso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection3 = l1tGTHtSum.clone( + minScalarSumPt = get_object_thrs(390, "CL2HtSum","HT"), + ), +) +pDoubleTkElePuppiHT_8_8_390 = cms.Path(DoubleTkElePuppiHT) + +algorithms.append(cms.PSet(expression=cms.string("pDoubleTkElePuppiHT_8_8_390"))) + + +TkEleIsoPuppiHT = l1tGTDoubleObjectCond.clone( #missing z0 between electron and puppivertex + collection1 = l1tGTtkIsoElectron.clone( + minEta = cms.double(-2.1), # TBC WHY? + maxEta = cms.double(2.1), # TBC WHY? + regionsMinPt = get_object_thrs(26, "CL2Electrons","Iso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = l1tGTHtSum.clone( + minScalarSumPt = get_object_thrs(190, "CL2HtSum","HT"), + ), +) +pTkEleIsoPuppiHT_26_190 = cms.Path(TkEleIsoPuppiHT) +algorithms.append(cms.PSet(expression = cms.string("pTkEleIsoPuppiHT_26_190"))) + + +TkElePuppiJetMinDR = l1tGTDoubleObjectCond.clone( #missing z0 between electron and puppivertex + collection1 = l1tGTtkElectron.clone( + minEta = cms.double(-2.1), # TBC WHY? + maxEta = cms.double(2.1), # TBC WHY? + regionsMinPt = get_object_thrs(28, "CL2Electrons","NoIso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = l1tGTsc4Jet.clone( + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + minDR = cms.double(0.3) +) +pTkElePuppiJet_28_40_MinDR = cms.Path(TkElePuppiJetMinDR) +algorithms.append(cms.PSet(expression=cms.string("pTkElePuppiJet_28_40_MinDR"))) + +NNPuppiTauPuppiMet = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTnnTau.clone( + regionsMinPt = get_object_thrs(55, "CL2Taus","default"), + ), + collection2 = l1tGTEtSum.clone( + minPt = get_object_thrs(190, "CL2EtSum","default"), + ), + +) +pNNPuppiTauPuppiMet_55_190 = cms.Path(NNPuppiTauPuppiMet) +algorithms.append(cms.PSet(expression=cms.string("pNNPuppiTauPuppiMet_55_190"))) + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_hadr_metSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_hadr_metSeeds_cff.py new file mode 100644 index 0000000000000..eca10298f93a7 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_hadr_metSeeds_cff.py @@ -0,0 +1,102 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_constants import * +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenuObjects_cff import * + +####### JET, MET, HT ########### + +SinglePuppiJet230 = l1tGTSingleObjectCond.clone( + l1tGTsc4Jet.clone(), + regionsMinPt = get_object_thrs(230, "CL2JetsSC4", "default"), +) +pSinglePuppiJet230 = cms.Path(SinglePuppiJet230) +algorithms.append(cms.PSet(expression = cms.string("pSinglePuppiJet230"))) + +DoublePuppiJet112112 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(112, "CL2JetsSC4", "default"), + ), + collection2 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(112, "CL2JetsSC4", "default"), + ), + maxDEta = cms.double(1.6), +) +pDoublePuppiJet112_112 = cms.Path(DoublePuppiJet112112) +algorithms.append(cms.PSet(expression = cms.string("pDoublePuppiJet112_112"))) + +DoublePuppiJet16035Mass620 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTsc4Jet_er5.clone( + regionsMinPt = get_object_thrs(160, "CL2JetsSC4", "default"), + ), + collection2 = l1tGTsc4Jet_er5.clone( + regionsMinPt = get_object_thrs(35, "CL2JetsSC4", "default"), + ), + minInvMass = cms.double(620), +) +pDoublePuppiJet160_35_mass620 = cms.Path(DoublePuppiJet16035Mass620) +algorithms.append(cms.PSet(expression = cms.string("pDoublePuppiJet160_35_mass620"))) + + +PuppiHT450 = l1tGTSingleObjectCond.clone( + l1tGTHtSum.clone(), + minScalarSumPt = get_object_thrs(450, "CL2HtSum", "HT"), +) +pPuppiHT450 = cms.Path(PuppiHT450) +algorithms.append(cms.PSet(expression = cms.string("pPuppiHT450"))) + +PuppiMHT140 = l1tGTSingleObjectCond.clone( + l1tGTHtSum.clone(), + minPt = get_object_thrs(140, "CL2HtSum", "MHT"), +) +pPuppiMHT140 = cms.Path(PuppiMHT140) +algorithms.append(cms.PSet(expression = cms.string("pPuppiMHT140"))) + +PuppiMET200 = l1tGTSingleObjectCond.clone( + l1tGTEtSum.clone(), + minPt = get_object_thrs(200, "CL2EtSum", "default"), +) +pPuppiMET200 = cms.Path(PuppiMET200) +algorithms.append(cms.PSet(expression = cms.string("pPuppiMET200"))) + +QuadJet70554040 = l1tGTQuadObjectCond.clone( + collection1 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(70, "CL2JetsSC4", "default"), + ), + collection2 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(55, "CL2JetsSC4", "default"), + ), + collection3 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(40, "CL2JetsSC4", "default"), + ), + collection4 = l1tGTsc4Jet.clone( + regionsMinPt = get_object_thrs(40, "CL2JetsSC4", "default"), + ), + +) +pQuadJet70_55_40_40 = cms.Path(QuadJet70554040) + +PuppiHT400 = l1tGTSingleObjectCond.clone( + l1tGTHtSum.clone(), + minScalarSumPt = get_object_thrs(400, "CL2HtSum", "HT"), +) +pPuppiHT400 = cms.Path(PuppiHT400) + + +algorithms.append(cms.PSet(name=cms.string("pPuppiHT400_pQuadJet70_55_40_40"), + expression=cms.string("pPuppiHT400 and pQuadJet70_55_40_40"))) + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_lepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_lepSeeds_cff.py new file mode 100644 index 0000000000000..32bbab33163ac --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTMenu_lepSeeds_cff.py @@ -0,0 +1,157 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_constants import * +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenuObjects_cff import * + +####### MUON SEEDS ########### + +SingleTkMuon22 = l1tGTSingleObjectCond.clone( + l1tGTtkMuonVLoose.clone(), + regionsMinPt = get_object_thrs(22, "GMTTkMuons","VLoose"), +) +pSingleTkMuon22 = cms.Path(SingleTkMuon22) +algorithms.append(cms.PSet(expression = cms.string("pSingleTkMuon22"))) + +DoubleTkMuon157 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkMuonVLoose.clone( + regionsMinPt = get_object_thrs(15, "GMTTkMuons","VLoose"), + ), + collection2 = l1tGTtkMuonLoose.clone( + regionsMinPt = cms.vdouble(7,7,7), # no scaling used below 8 GeV + ), + maxDz = cms.double(1), + minDR = cms.double(0), +) +pDoubleTkMuon15_7 = cms.Path(DoubleTkMuon157) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon15_7"))) + +TripleTkMuon533 = l1tGTTripleObjectCond.clone( + collection1 = l1tGTtkMuonLoose.clone( + minPt = cms.double(5), # no scaling used below 8 GeV + ), + collection2 = l1tGTtkMuonLoose.clone( + minPt = cms.double(3), + ), + collection3 = l1tGTtkMuonLoose.clone( + minPt = cms.double(3), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl13 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl23 = cms.PSet( + minDR = cms.double(0), + ) +) +pTripleTkMuon5_3_3 = cms.Path(TripleTkMuon533) +algorithms.append(cms.PSet(expression = cms.string("pTripleTkMuon5_3_3"))) + +####### EG and PHO seeds ########### + +SingleEGEle51 = l1tGTSingleObjectCond.clone( + l1tGTtkPhoton.clone(), + regionsMinPt = get_object_thrs(51, "CL2Photons","Iso"), +) +pSingleEGEle51 = cms.Path(SingleEGEle51) +algorithms.append(cms.PSet(expression = cms.string("pSingleEGEle51"))) + +DoubleEGEle3724 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkIsoPhoton.clone( + regionsMinPt = get_object_thrs(37, "CL2Photons","Iso"), + ), + collection2 = l1tGTtkIsoPhoton.clone( + regionsMinPt = get_object_thrs(24, "CL2Photons","Iso"), + ), + minDR = cms.double(0.1), +) +pDoubleEGEle37_24 = cms.Path(DoubleEGEle3724) +algorithms.append(cms.PSet(expression = cms.string("pDoubleEGEle37_24"))) + +IsoTkEleEGEle2212 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkIsoElectron.clone( + regionsMinPt = get_object_thrs(22, "CL2Electrons","Iso"), + ), + collection2 = l1tGTtkIsoPhoton.clone( + regionsMinPt = get_object_thrs(12, "CL2Photons","Iso"), + ), + minDR = cms.double(0.1), +) +pIsoTkEleEGEle22_12 = cms.Path(IsoTkEleEGEle2212) +algorithms.append(cms.PSet(expression = cms.string("pIsoTkEleEGEle22_12"))) + +SingleTkEle36 = l1tGTSingleObjectCond.clone( + l1tGTtkElectron.clone(), + regionsMinPt = get_object_thrs(36, "CL2Electrons","NoIso"), +) +pSingleTkEle36 = cms.Path(SingleTkEle36) +algorithms.append(cms.PSet(expression = cms.string("pSingleTkEle36"))) + +SingleIsoTkEle28 = l1tGTSingleObjectCond.clone( + l1tGTtkIsoElectron.clone(), + regionsMinPt = get_object_thrs(28, "CL2Electrons","Iso"), +) +pSingleIsoTkEle28 = cms.Path(SingleIsoTkEle28) +algorithms.append(cms.PSet(expression = cms.string("pSingleIsoTkEle28"))) + +SingleIsoTkPho36 = l1tGTSingleObjectCond.clone( + l1tGTtkIsoPhoton.clone(), + regionsMinPt = get_object_thrs(36, "CL2Photons","Iso"), +) +pSingleIsoTkPho36 = cms.Path(SingleIsoTkPho36) + +algorithms.append(cms.PSet(expression=cms.string("pSingleIsoTkPho36"))) + +DoubleTkEle2512 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkElectronLowPt.clone( + regionsMinPt = get_object_thrs(25, "CL2Electrons","NoIso"), + ), + collection2 = l1tGTtkElectronLowPt.clone( + regionsMinPt = get_object_thrs(12, "CL2Electrons","NoIso"), + ), + maxDz = cms.double(1), +) +pDoubleTkEle25_12 = cms.Path(DoubleTkEle2512) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkEle25_12"))) + +DoubleIsoTkPho2212 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTtkIsoPhoton.clone( + regionsMinPt = get_object_thrs(22, "CL2Photons","Iso"), + ), + collection2 = l1tGTtkIsoPhoton.clone( + regionsMinPt = get_object_thrs(12, "CL2Photons","Iso"), + ), +) +pDoubleIsoTkPho22_12 = cms.Path(DoubleIsoTkPho2212) +algorithms.append(cms.PSet(expression = cms.string("pDoubleIsoTkPho22_12"))) + +DoublePuppiTau5252 = l1tGTDoubleObjectCond.clone( + collection1 = l1tGTnnTau.clone( + regionsMinPt = get_object_thrs(52, "CL2Taus","default"), + ), + collection2 = l1tGTnnTau.clone( + regionsMinPt = get_object_thrs(52, "CL2Taus","default"), + ), + minDR = cms.double(0.5), +) +pDoublePuppiTau52_52 = cms.Path(DoublePuppiTau5252) +algorithms.append(cms.PSet(expression = cms.string("pDoublePuppiTau52_52"))) + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_constants.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_constants.py new file mode 100644 index 0000000000000..5eabf34bf8673 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_constants.py @@ -0,0 +1,72 @@ +""" +Module for handling L1 trigger menu constants and conversions. +""" + +import FWCore.ParameterSet.Config as cms +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_scalings import scalings +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTObject_ids import objectIDs + +obj_regions_abseta_lowbounds = { + "CL2Photons": { "barrel": 0, "endcap": 1.479 }, + "CL2Electrons": { "barrel": 0, "endcap": 1.479 }, + + "CL2Taus": { "barrel": 0, "endcap": 1.5 }, + "CL2JetsSC4": { "barrel": 0, "endcap": 1.5, "forward": 2.4 }, + + "GMTTkMuons": { "barrel": 0, "overlap": 0.83, "endcap": 1.24 }, + "GMTMuons": { "barrel": 0, "overlap": 0.83, "endcap": 1.24 }, + + "CL2HtSum": {"inclusive": 0}, + "CL2EtSum": {"inclusive": 0}, +} + +def get_object_etalowbounds(obj): + return cms.vdouble(tuple(obj_regions_abseta_lowbounds[obj].values())) + +def off2onl_thresholds(thr, obj, id, region, scalings=scalings): + """ + Convert offline thresholds to online thresholds. + + Args: + thr (float): The offline threshold. + obj (str): The object type. + id (str): The object ID. + region (str): The region. + scalings (dict): The scalings dictionary. + + Returns: + float: The online threshold. + """ + offset = scalings[obj][id][region]["offset"] + slope = scalings[obj][id][region]["slope"] + new_thr = round((thr - offset) / slope, 1) + + if "Jet" in obj: + # Safety cut + return max(25, new_thr) + else: + return max(0, new_thr) + +def get_object_thrs(thr, obj, id = "default", scalings=scalings): + regions = obj_regions_abseta_lowbounds[obj].keys() + thresholds = [off2onl_thresholds(thr, obj, id, region) for region in regions] + if len(thresholds) > 1: + return cms.vdouble(tuple(thresholds)) + else: + return cms.double(thresholds[0]) + +def get_object_ids(obj, id = "default", obj_dict=objectIDs): + values = obj_dict[obj][id]["qual"] + if isinstance(values, dict): + regions = obj_regions_abseta_lowbounds[obj].keys() + return cms.vuint32(tuple(values[region] for region in regions)) + else: + return cms.uint32(values) + +def get_object_isos(obj, id = "default", obj_dict=objectIDs): + values = obj_dict[obj][id]["iso"] + if isinstance(values, dict): + regions = obj_regions_abseta_lowbounds[obj].keys() + return cms.vdouble(tuple(values[region] for region in regions)) + else: + return cms.double(values) diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_ids.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_ids.py new file mode 100644 index 0000000000000..8d2cc0eebee55 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_ids.py @@ -0,0 +1,61 @@ +### L1T Object ID and Isolation criteria +### as provided by the L1 DPG object contacts +### in agreement with the subsystems + +objectIDs = { + "CL2Taus": { + "default": { + "qual" : 225 + } + }, + "CL2Photons":{ + "Iso": { + "qual": { + "barrel": 0b0010, + "endcap": 0b0100, + }, + "iso": { + "barrel": 0.25, + "endcap": 0.205, + } + } + }, + "CL2Electrons":{ + "Iso": { + # "qual": { + # "barrel": 0b0010, + # "endcap": 0b0010, + # }, + "iso": { + "barrel": 0.13, + "endcap": 0.28, + } + }, + "NoIso": { + "qual": { + "barrel": 0b0010, + "endcap": 0b0010, + }, + }, + "NoIsoLowPt": { + "qual": { + "barrel": 0b0010, + "endcap": 0b0000, + }, + } + }, + "GMTTkMuons":{ + "VLoose": { + "qual": 0b0001, + }, + "Loose": { + "qual": 0b0010, + }, + "Medium": { + "qual": 0b0100, + }, + "Tight": { + "qual": 0b1000, + }, + } +} \ No newline at end of file diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_scalings.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_scalings.py new file mode 100644 index 0000000000000..111bd18addf67 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024/l1tGTObject_scalings.py @@ -0,0 +1,323 @@ +### L1T Object threshold scalings +### as derived by the Phase-2 L1 DPG Menu team +### using the Phase-2 MenuTools: https://github.com/cms-l1-dpg/Phase2-L1MenuTools + +### Corresponds to version v44 derived with the Annual Review 2024 config in the 14_2_x release +### See the L1T Phase-2 Menu Twiki for more details: https://twiki.cern.ch/twiki/bin/viewauth/CMS/PhaseIIL1TriggerMenuTools#Phase_2_L1_Trigger_objects_based + +### NB Objects starting with L1 are not yet part of the Step1 Menu and thus no seeds implemented in the P2GT emulator + +scalings = { + "CL2Electrons": { + "Iso": { + "barrel": { + "offset": 1.16, + "slope": 1.18 + }, + "endcap": { + "offset": 0.18, + "slope": 1.25 + } + }, + "NoIso": { + "barrel": { + "offset": 1.24, + "slope": 1.18 + }, + "endcap": { + "offset": 0.63, + "slope": 1.25 + } + } + }, + "CL2EtSum": { + "default": { + "inclusive": { + "offset": 37.05, + "slope": 1.64 + } + } + }, + "CL2HtSum": { + "HT": { + "inclusive": { + "offset": 45.7, + "slope": 1.12 + } + }, + "MHT": { + "inclusive": { + "offset": -12.93, + "slope": 1.16 + } + } + }, + "CL2JetsSC4": { + "default": { + "barrel": { + "offset": 17.33, + "slope": 1.28 + }, + "endcap": { + "offset": 15.33, + "slope": 1.67 + }, + "forward": { + "offset": 71.45, + "slope": 1.14 + } + } + }, + "CL2JetsSC8": { + "default": { + "barrel": { + "offset": 23.98, + "slope": 1.37 + }, + "endcap": { + "offset": 28.95, + "slope": 1.56 + }, + "forward": { + "offset": 69.06, + "slope": 1.42 + } + } + }, + "CL2Photons": { + "Iso": { + "barrel": { + "offset": 3.04, + "slope": 1.09 + }, + "endcap": { + "offset": 7.73, + "slope": 0.96 + } + }, + "NoIso": { + "barrel": { + "offset": 4.43, + "slope": 1.07 + }, + "endcap": { + "offset": 5.22, + "slope": 1.07 + } + } + }, + "CL2Taus": { + "default": { + "barrel": { + "offset": 3.53, + "slope": 1.26 + }, + "endcap": { + "offset": -3.15, + "slope": 1.66 + } + } + }, + "GMTSaPromptMuons": { + "default": { + "barrel": { + "offset": 1.08, + "slope": 1.69 + }, + "endcap": { + "offset": -2.97, + "slope": 1.21 + }, + "overlap": { + "offset": -1.17, + "slope": 1.35 + } + } + }, + "GMTTkMuons": { + "Loose": { + "barrel": { + "offset": 0.96, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.16, + "slope": 1.03 + } + }, + "Medium": { + "barrel": { + "offset": 0.95, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.16, + "slope": 1.03 + } + }, + "Tight": { + "barrel": { + "offset": 0.94, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.17, + "slope": 1.03 + } + }, + "VLoose": { + "barrel": { + "offset": 0.96, + "slope": 1.04 + }, + "endcap": { + "offset": 0.94, + "slope": 1.04 + }, + "overlap": { + "offset": 1.17, + "slope": 1.03 + } + }, + "default": { + "barrel": { + "offset": 0.96, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.16, + "slope": 1.03 + } + } + }, + "L1EG": { + "default": { + "barrel": { + "offset": 4.36, + "slope": 1.12 + }, + "endcap": { + "offset": 5.22, + "slope": 1.07 + } + } + }, + "L1TrackHT": { + "HT": { + "inclusive": { + "offset": -51.83, + "slope": 2.58 + } + }, + "MHT": { + "inclusive": { + "offset": -19.41, + "slope": 2.27 + } + } + }, + "L1TrackJet": { + "default": { + "barrel": { + "offset": 14.84, + "slope": 5.15 + }, + "endcap": { + "offset": 30.24, + "slope": 7.12 + } + } + }, + "L1TrackMET": { + "default": { + "inclusive": { + "offset": -75.85, + "slope": 8.69 + } + } + }, + "L1caloJet": { + "default": { + "barrel": { + "offset": 2.27, + "slope": 1.48 + }, + "endcap": { + "offset": 77.98, + "slope": 1.74 + }, + "forward": { + "offset": 223.84, + "slope": 0.89 + } + } + }, + "L1caloTau": { + "default": { + "barrel": { + "offset": -10.87, + "slope": 1.69 + }, + "endcap": { + "offset": -45.77, + "slope": 2.54 + } + } + }, + "L1hpsTau": { + "default": { + "barrel": { + "offset": 1.88, + "slope": 1.74 + }, + "endcap": { + "offset": 37.49, + "slope": 1.5 + } + } + }, + "L1nnCaloTau": { + "default": { + "barrel": { + "offset": -0.72, + "slope": 1.31 + }, + "endcap": { + "offset": -6.02, + "slope": 1.38 + } + } + }, + "L1puppiHistoJetSums": { + "MHT": { + "inclusive": { + "offset": -15.69, + "slope": 1.18 + } + } + }, + "L1puppiMLMET": { + "default": { + "inclusive": { + "offset": 29.35, + "slope": 1.56 + } + } + } +} \ No newline at end of file diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_BTagSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_BTagSeeds_cff.py new file mode 100644 index 0000000000000..70e5848b0cf9b --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_BTagSeeds_cff.py @@ -0,0 +1,169 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTObject_constants import * + +DoubleTkMuonOSEr1p5Dr1p4 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-1.5), + maxEta = cms.double(1.5), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-1.5), + maxEta = cms.double(1.5), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + minDR = cms.double(0), + maxDR =cms.double(1.4), + maxDz = cms.double(1), + os = cms.bool(True), +) +pDoubleTkMuon_OS_Er1p5_Dr1p4 = cms.Path(DoubleTkMuonOSEr1p5Dr1p4) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon_OS_Er1p5_Dr1p4"))) + +DoubleTkMuon44OSDr1p2 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(4,4,4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(4,4,4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + minDR = cms.double(0), + maxDR =cms.double(1.2), + maxDz = cms.double(1), + os = cms.bool(True), +) +pDoubleTkMuon_4_4_OS_Dr1p2 = cms.Path(DoubleTkMuon44OSDr1p2) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon_4_4_OS_Dr1p2"))) + +DoubleTkMuon4p5OSEr2Mass7to18 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.0), + maxEta = cms.double(2.0), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(4,4,4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.0), + maxEta = cms.double(2.0), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(4,4,4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + minDR = cms.double(0), + minInvMass = cms.double(7), + maxInvMass = cms.double(18), + maxDz = cms.double(1), + os = cms.bool(True), +) +pDoubleTkMuon_4p5_4p5_OS_Er2_Mass7to18 = cms.Path(DoubleTkMuon4p5OSEr2Mass7to18) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon_4p5_4p5_OS_Er2_Mass7to18"))) + +TripleTkMuon530OSMassMax9 = l1tGTTripleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(5), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(3), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(0), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1), + os = cms.bool(True), + maxInvMass = cms.double(9), + ), + correl13 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl23 = cms.PSet( + minDR = cms.double(0), + ) +) +pTripleTkMuon_5_3_0_DoubleTkMuon_5_3_OS_MassTo9 = cms.Path(TripleTkMuon530OSMassMax9) +algorithms.append(cms.PSet(expression = cms.string("pTripleTkMuon_5_3_0_DoubleTkMuon_5_3_OS_MassTo9"))) + +TripleTkMuon53p52p5OSMass5to17 = l1tGTTripleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(5), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(4), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(2), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1), + ), + correl13 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1), + os = cms.bool(True), + minInvMass = cms.double(5), + maxInvMass = cms.double(17), + ), + correl23 = cms.PSet( + minDR = cms.double(0), + ) +) +pTripleTkMuon_5_3p5_2p5_OS_Mass5to17 = cms.Path(TripleTkMuon53p52p5OSMass5to17) +algorithms.append(cms.PSet(expression = cms.string("pTripleTkMuon_5_3p5_2p5_OS_Mass5to17"))) diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_cff.py new file mode 100644 index 0000000000000..4be528c95a445 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_cff.py @@ -0,0 +1,16 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Menu +############################################################ + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTMenu_lepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTMenu_hadr_metSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTMenu_crossLepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTMenu_hadr_crossLepSeeds_cff import * + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTMenu_BTagSeeds_cff import * + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_crossLepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_crossLepSeeds_cff.py new file mode 100644 index 0000000000000..9e61b69849470 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_crossLepSeeds_cff.py @@ -0,0 +1,204 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTObject_constants import * + +TkMuonTkIsoEle720 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(7,7,7), # no scaling used below 8 GeV + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(20, "CL2Electrons","Iso"), + regionsMaxRelIsolationPt = get_object_isos("CL2Electrons","Iso"), + ), + maxDz = cms.double(1), +) +pTkMuonTkIsoEle7_20 = cms.Path(TkMuonTkIsoEle720) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonTkIsoEle7_20"))) + +TkMuonTkEle723 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(7,7,7), # no scaling used below 8 GeV + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(23, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIso"), + ), + maxDz = cms.double(1), +) +pTkMuonTkEle7_23 = cms.Path(TkMuonTkEle723) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonTkEle7_23"))) + +TkEleTkMuon1020 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(36, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIso"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt = get_object_thrs(20, "GMTTkMuons","VLoose"), + qualityFlags = get_object_ids("GMTTkMuons","VLoose"), + ), + maxDz = cms.double(1), +) +pTkEleTkMuon10_20 = cms.Path(TkEleTkMuon1020) +algorithms.append(cms.PSet(expression = cms.string("pTkEleTkMuon10_20"))) + +TkMuonDoubleTkEle61717 = l1tGTTripleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(6,6,6), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(17, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(17, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), + ), + correl12 = cms.PSet( + maxDz = cms.double(1) + ), + correl13 = cms.PSet( + maxDz = cms.double(1) + ), +) +pTkMuonDoubleTkEle6_17_17 = cms.Path(TkMuonDoubleTkEle61717) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonDoubleTkEle6_17_17"))) + +DoubleTkMuonTkEle559 = l1tGTTripleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(5,5,5), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(5,5,5), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(9, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), + + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl13 = cms.PSet( + maxDz = cms.double(1) + ), +) +pDoubleTkMuonTkEle5_5_9 = cms.Path(DoubleTkMuonTkEle559) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuonTkEle5_5_9"))) + +PuppiTauTkMuon4218 = l1tGTDoubleObjectCond.clone( ###NB We need puppivertex here + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt = get_object_thrs(18, "GMTTkMuons","VLoose"), + qualityFlags = get_object_ids("GMTTkMuons","VLoose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0) # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Taus"), + minEta = cms.double(-2.172), + maxEta = cms.double(2.172), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Taus"), + regionsMinPt = get_object_thrs(42, "CL2Taus","default"), + minQualityScore = get_object_ids("CL2Taus","default") + ), +) +pPuppiTauTkMuon42_18 = cms.Path(PuppiTauTkMuon4218) +algorithms.append(cms.PSet(expression = cms.string("pPuppiTauTkMuon42_18"))) + +PuppiTauTkIsoEle4522 = l1tGTDoubleObjectCond.clone( ###NB We need puppivertex here + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(22, "CL2Electrons","Iso"), + regionsMaxRelIsolationPt = get_object_isos("CL2Electrons","Iso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0) # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Taus"), + minEta = cms.double(-2.172), + maxEta = cms.double(2.172), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Taus"), + regionsMinPt = get_object_thrs(45, "CL2Taus","default"), + minQualityScore = get_object_ids("CL2Taus","default") + ), +) +pPuppiTauTkIsoEle45_22 = cms.Path(PuppiTauTkIsoEle4522) +algorithms.append(cms.PSet(expression = cms.string("pPuppiTauTkIsoEle45_22"))) + + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_hadr_crossLepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_hadr_crossLepSeeds_cff.py new file mode 100644 index 0000000000000..0d6280ea8e1f8 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_hadr_crossLepSeeds_cff.py @@ -0,0 +1,278 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTObject_constants import * + +TkMuonPuppiHT6320 = l1tGTDoubleObjectCond.clone( #needs z0 with the puppivertex + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(6,6,6), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum"), + minScalarSumPt = get_object_thrs(320, "CL2HtSum","HT"), + ), +) +pTkMuonPuppiHT6_320 = cms.Path(TkMuonPuppiHT6320) +algorithms.append(cms.PSet(expression = cms.string("pTkMuonPuppiHT6_320"))) + + +TkMuTriPuppiJetdRMaxDoubleJetdEtaMax = l1tGTQuadObjectCond.clone( #needs z0 between muon and puppivertex + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt = get_object_thrs(12, "GMTTkMuons","VLoose"), + qualityFlags = get_object_ids("GMTTkMuons","VLoose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + collection4 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + correl12 = cms.PSet( + maxDR = cms.double(0.4), + ), + correl34 = cms.PSet( + maxDEta = cms.double(1.6) + ), +) +pTkMuTriPuppiJet_12_40_dRMax_DoubleJet_dEtaMax = cms.Path(TkMuTriPuppiJetdRMaxDoubleJetdEtaMax) +algorithms.append(cms.PSet(expression=cms.string("pTkMuTriPuppiJet_12_40_dRMax_DoubleJet_dEtaMax"))) + +TkMuPuppiJetPuppiMet = l1tGTTripleObjectCond.clone( #needs z0 between muon and puppivertex + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(3,3,3), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(110, "CL2JetsSC4", "default"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2EtSum"), + minPt = get_object_thrs(120, "CL2EtSum","default"), + ), +) +pTkMuPuppiJetPuppiMet_3_110_120 = cms.Path(TkMuPuppiJetPuppiMet) +algorithms.append(cms.PSet(expression=cms.string("pTkMuPuppiJetPuppiMet_3_110_120"))) + + +DoubleTkMuPuppiJetPuppiMet = l1tGTQuadObjectCond.clone( #needs z0 between puppivertex and muon + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(3,3,3), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(3,3,3), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(60, "CL2JetsSC4", "default"), + ), + collection4 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2EtSum"), + minPt = get_object_thrs(130, "CL2EtSum","default"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + ) +) +pDoubleTkMuPuppiJetPuppiMet_3_3_60_130 = cms.Path(DoubleTkMuPuppiJetPuppiMet) +algorithms.append(cms.PSet(expression=cms.string("pDoubleTkMuPuppiJetPuppiMet_3_3_60_130"))) + + +DoubleTkMuPuppiHT = l1tGTTripleObjectCond.clone( #needs z0 between puppivertex and muon + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(3,3,3), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(3,3,3), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum"), + minScalarSumPt = get_object_thrs(300, "CL2HtSum","HT"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + ) +) +pDoubleTkMuPuppiHT_3_3_300 = cms.Path(DoubleTkMuPuppiHT) + +algorithms.append(cms.PSet(expression=cms.string("pDoubleTkMuPuppiHT_3_3_300"))) + + +DoubleTkElePuppiHT = l1tGTTripleObjectCond.clone( #needs z0 between puppivertex and muon + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(8, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(8, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum"), + minScalarSumPt = get_object_thrs(390, "CL2HtSum","HT"), + ), +) +pDoubleTkElePuppiHT_8_8_390 = cms.Path(DoubleTkElePuppiHT) + +algorithms.append(cms.PSet(expression=cms.string("pDoubleTkElePuppiHT_8_8_390"))) + + +TkEleIsoPuppiHT = l1tGTDoubleObjectCond.clone( #missing z0 between electron and puppivertex + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(26, "CL2Electrons","Iso"), + regionsMaxRelIsolationPt = get_object_isos("CL2Electrons","Iso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum"), + minScalarSumPt = get_object_thrs(190, "CL2HtSum","HT"), + ), +) +pTkEleIsoPuppiHT_26_190 = cms.Path(TkEleIsoPuppiHT) +algorithms.append(cms.PSet(expression = cms.string("pTkEleIsoPuppiHT_26_190"))) + + +TkElePuppiJetMinDR = l1tGTDoubleObjectCond.clone( #missing z0 between electron and puppivertex + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.1), + maxEta = cms.double(2.1), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(28, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIso"), + maxPrimVertDz = cms.double(1), # in cm + primVertex = cms.uint32(0), # primary vertex index (choose 0) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt=cms.vdouble(25,25), #safety cut + ), + minDR = cms.double(0.3) +) +pTkElePuppiJet_28_40_MinDR = cms.Path(TkElePuppiJetMinDR) + +algorithms.append(cms.PSet(expression=cms.string("pTkElePuppiJet_28_40_MinDR"))) + + + +NNPuppiTauPuppiMet = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Taus"), + minEta = cms.double(-2.172), + maxEta = cms.double(2.172), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(55, "CL2Taus","default"), + minQualityScore = get_object_ids("CL2Taus","default") + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2EtSum"), + minPt = get_object_thrs(190, "CL2EtSum","default"), + ), + +) +pNNPuppiTauPuppiMet_55_190 = cms.Path(NNPuppiTauPuppiMet) + +algorithms.append(cms.PSet(expression=cms.string("pNNPuppiTauPuppiMet_55_190"))) + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_hadr_metSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_hadr_metSeeds_cff.py new file mode 100644 index 0000000000000..024bcea845383 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_hadr_metSeeds_cff.py @@ -0,0 +1,136 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTObject_constants import * + +####### JET, MET, HT ########### + +SinglePuppiJet230 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(230, "CL2JetsSC4", "default"), +) +pSinglePuppiJet230 = cms.Path(SinglePuppiJet230) +algorithms.append(cms.PSet(expression = cms.string("pSinglePuppiJet230"))) + +DoublePuppiJet112112 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(112, "CL2JetsSC4", "default"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(112, "CL2JetsSC4", "default"), + ), + maxDEta = cms.double(1.6), +) +pDoublePuppiJet112_112 = cms.Path(DoublePuppiJet112112) +algorithms.append(cms.PSet(expression = cms.string("pDoublePuppiJet112_112"))) + +DoublePuppiJet16035Mass620 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-5), + maxEta = cms.double(5), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(160, "CL2JetsSC4", "default"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-5), + maxEta = cms.double(5), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(35, "CL2JetsSC4", "default"), + ), + minInvMass = cms.double(620), +) +pDoublePuppiJet160_35_mass620 = cms.Path(DoublePuppiJet16035Mass620) +algorithms.append(cms.PSet(expression = cms.string("pDoublePuppiJet160_35_mass620"))) + + +PuppiHT450 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum"), + minScalarSumPt = get_object_thrs(450, "CL2HtSum", "HT"), +) +pPuppiHT450 = cms.Path(PuppiHT450) +algorithms.append(cms.PSet(expression = cms.string("pPuppiHT450"))) + +PuppiMHT140 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum"), + minPt = get_object_thrs(140, "CL2HtSum", "MHT"), +) +pPuppiMHT140 = cms.Path(PuppiMHT140) +algorithms.append(cms.PSet(expression = cms.string("pPuppiMHT140"))) + +PuppiMET200 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2EtSum"), + minPt = get_object_thrs(200, "CL2EtSum", "default"), +) +pPuppiMET200 = cms.Path(PuppiMET200) +algorithms.append(cms.PSet(expression = cms.string("pPuppiMET200"))) + +QuadJet70554040 = l1tGTQuadObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(70, "CL2JetsSC4", "default"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(55, "CL2JetsSC4", "default"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(40, "CL2JetsSC4", "default"), + ), + collection4 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2JetsSC4"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(40, "CL2JetsSC4", "default"), + ), + +) +pQuadJet70_55_40_40 = cms.Path(QuadJet70554040) + +PuppiHT400 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2HtSum"), + minScalarSumPt = get_object_thrs(400, "CL2HtSum", "HT"), +) +pPuppiHT400 = cms.Path(PuppiHT400) + + +algorithms.append(cms.PSet(name=cms.string("pPuppiHT400_pQuadJet70_55_40_40"), + expression=cms.string("pPuppiHT400 and pQuadJet70_55_40_40"))) + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_lepSeeds_cff.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_lepSeeds_cff.py new file mode 100644 index 0000000000000..9663b573e040a --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTMenu_lepSeeds_cff.py @@ -0,0 +1,260 @@ +import FWCore.ParameterSet.Config as cms + +############################################################ +# L1 Global Trigger Emulation +############################################################ + +# Conditions + +from L1Trigger.Phase2L1GT.l1tGTProducer_cff import l1tGTProducer + +from L1Trigger.Phase2L1GT.l1tGTSingleObjectCond_cfi import l1tGTSingleObjectCond +from L1Trigger.Phase2L1GT.l1tGTDoubleObjectCond_cfi import l1tGTDoubleObjectCond +from L1Trigger.Phase2L1GT.l1tGTTripleObjectCond_cfi import l1tGTTripleObjectCond +from L1Trigger.Phase2L1GT.l1tGTQuadObjectCond_cfi import l1tGTQuadObjectCond + +from L1Trigger.Phase2L1GT.l1tGTAlgoBlockProducer_cff import algorithms + +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTObject_constants import * + +####### MUON SEEDS ########### + +# regionsAbsEtaLowerBounds=cms.vdouble(0,1.2,3), +# regionsMinPt=cms.vdouble(12,14,15) + + +SingleTkMuon22 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt = get_object_thrs(22, "GMTTkMuons","VLoose"), + qualityFlags = get_object_ids("GMTTkMuons","VLoose"), +) +pSingleTkMuon22 = cms.Path(SingleTkMuon22) +algorithms.append(cms.PSet(expression = cms.string("pSingleTkMuon22"))) + +DoubleTkMuon157 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt = get_object_thrs(15, "GMTTkMuons","VLoose"), + qualityFlags = get_object_ids("GMTTkMuons","VLoose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("GMTTkMuons"), + regionsMinPt=cms.vdouble(7,7,7), # no scaling used below 8 GeV + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + maxDz = cms.double(1), + minDR = cms.double(0), +) +pDoubleTkMuon15_7 = cms.Path(DoubleTkMuon157) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkMuon15_7"))) + +TripleTkMuon533 = l1tGTTripleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(5), # no scaling used below 8 GeV + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(3), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + collection3 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "GMTTkMuons"), + minPt = cms.double(3), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + qualityFlags = get_object_ids("GMTTkMuons","Loose"), + ), + correl12 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl13 = cms.PSet( + minDR = cms.double(0), + maxDz = cms.double(1) + ), + correl23 = cms.PSet( + minDR = cms.double(0), + ) +) +pTripleTkMuon5_3_3 = cms.Path(TripleTkMuon533) +algorithms.append(cms.PSet(expression = cms.string("pTripleTkMuon5_3_3"))) + +####### EG and PHO seeds ########### + +SingleEGEle51 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsMinPt = get_object_thrs(51, "CL2Photons","Iso"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), +) +pSingleEGEle51 = cms.Path(SingleEGEle51) +algorithms.append(cms.PSet(expression = cms.string("pSingleEGEle51"))) + +DoubleEGEle3724 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsMinPt = get_object_thrs(37, "CL2Photons","Iso"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsMinPt = get_object_thrs(24, "CL2Photons","Iso"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), + ), + minDR = cms.double(0.1), +) +pDoubleEGEle37_24 = cms.Path(DoubleEGEle3724) +algorithms.append(cms.PSet(expression = cms.string("pDoubleEGEle37_24"))) + +IsoTkEleEGEle2212 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(22, "CL2Electrons","Iso"), + regionsMaxRelIsolationPt = get_object_isos("CL2Electrons","Iso"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsMinPt = get_object_thrs(12, "CL2Photons","Iso"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), + ), + minDR = cms.double(0.1), +) +pIsoTkEleEGEle22_12 = cms.Path(IsoTkEleEGEle2212) +algorithms.append(cms.PSet(expression = cms.string("pIsoTkEleEGEle22_12"))) + +SingleTkEle36 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(36, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIso"), + # regionsMaxRelIsolationPt = get_object_isos("CL2Electrons","NoIso"), + +) +pSingleTkEle36 = cms.Path(SingleTkEle36) +algorithms.append(cms.PSet(expression = cms.string("pSingleTkEle36"))) + +SingleIsoTkEle28 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(28, "CL2Electrons","Iso"), + # regionsQualityFlags = get_object_ids("CL2Electrons","Iso"), + regionsMaxRelIsolationPt = get_object_isos("CL2Electrons","Iso"), +) +pSingleIsoTkEle28 = cms.Path(SingleIsoTkEle28) +algorithms.append(cms.PSet(expression = cms.string("pSingleIsoTkEle28"))) + +SingleIsoTkPho36 = l1tGTSingleObjectCond.clone( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsMinPt = get_object_thrs(36, "CL2Photons","Iso"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), + regionsMaxRelIsolationPt = get_object_isos("CL2Photons","Iso"), +) +pSingleIsoTkPho36 = cms.Path(SingleIsoTkPho36) + +algorithms.append(cms.PSet(expression=cms.string("pSingleIsoTkPho36"))) + +DoubleTkEle2512 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(25, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Electrons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Electrons"), + regionsMinPt = get_object_thrs(12, "CL2Electrons","NoIso"), + regionsQualityFlags = get_object_ids("CL2Electrons","NoIsoLowPt"), + ), + maxDz = cms.double(1), +) +pDoubleTkEle25_12 = cms.Path(DoubleTkEle2512) +algorithms.append(cms.PSet(expression = cms.string("pDoubleTkEle25_12"))) + +DoubleIsoTkPho2212 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsMinPt = get_object_thrs(22, "CL2Photons","Iso"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), + regionsMaxRelIsolationPt = cms.vdouble( + get_object_isos("CL2Photons","Iso") + ) + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Photons"), + minEta = cms.double(-2.4), + maxEta = cms.double(2.4), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2Photons"), + regionsMinPt = get_object_thrs(12, "CL2Photons","Iso"), + regionsQualityFlags = get_object_ids("CL2Photons","Iso"), + regionsMaxRelIsolationPt = get_object_isos("CL2Photons","Iso") + ), +) +pDoubleIsoTkPho22_12 = cms.Path(DoubleIsoTkPho2212) +algorithms.append(cms.PSet(expression = cms.string("pDoubleIsoTkPho22_12"))) + +DoublePuppiTau5252 = l1tGTDoubleObjectCond.clone( + collection1 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Taus"), + minEta = cms.double(-2.172), + maxEta = cms.double(2.172), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(52, "CL2Taus","default"), + minQualityScore = get_object_ids("CL2Taus","default") + ), + collection2 = cms.PSet( + tag = cms.InputTag("l1tGTProducer", "CL2Taus"), + minEta = cms.double(-2.172), + maxEta = cms.double(2.172), + regionsAbsEtaLowerBounds = get_object_etalowbounds("CL2JetsSC4"), + regionsMinPt = get_object_thrs(52, "CL2Taus","default"), + minQualityScore = get_object_ids("CL2Taus","default") + ), + minDR = cms.double(0.5), +) +pDoublePuppiTau52_52 = cms.Path(DoublePuppiTau5252) +algorithms.append(cms.PSet(expression = cms.string("pDoublePuppiTau52_52"))) + diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_constants.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_constants.py new file mode 100644 index 0000000000000..fd85e227574f9 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_constants.py @@ -0,0 +1,72 @@ +""" +Module for handling L1 trigger menu constants and conversions. +""" + +import FWCore.ParameterSet.Config as cms +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTObject_scalings import scalings +from L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTObject_ids import objectIDs + +obj_regions_abseta_lowbounds = { + "CL2Photons": { "barrel": 0, "endcap": 1.479 }, + "CL2Electrons": { "barrel": 0, "endcap": 1.479 }, + + "CL2Taus": { "barrel": 0, "endcap": 1.5 }, + "CL2JetsSC4": { "barrel": 0, "endcap": 1.5, "forward": 2.4 }, + + "GMTTkMuons": { "barrel": 0, "overlap": 0.83, "endcap": 1.24 }, + "GMTMuons": { "barrel": 0, "overlap": 0.83, "endcap": 1.24 }, + + "CL2HtSum": {"inclusive": 0}, + "CL2EtSum": {"inclusive": 0}, +} + +def get_object_etalowbounds(obj): + return cms.vdouble(tuple(obj_regions_abseta_lowbounds[obj].values())) + +def off2onl_thresholds(thr, obj, id, region, scalings=scalings): + """ + Convert offline thresholds to online thresholds. + + Args: + thr (float): The offline threshold. + obj (str): The object type. + id (str): The object ID. + region (str): The region. + scalings (dict): The scalings dictionary. + + Returns: + float: The online threshold. + """ + offset = scalings[obj][id][region]["offset"] + slope = scalings[obj][id][region]["slope"] + new_thr = round((thr - offset) / slope, 1) + + if "Jet" in obj: + # Safety cut + return max(25, new_thr) + else: + return max(0, new_thr) + +def get_object_thrs(thr, obj, id = "default", scalings=scalings): + regions = obj_regions_abseta_lowbounds[obj].keys() + thresholds = [off2onl_thresholds(thr, obj, id, region) for region in regions] + if len(thresholds) > 1: + return cms.vdouble(tuple(thresholds)) + else: + return cms.double(thresholds[0]) + +def get_object_ids(obj, id = "default", obj_dict=objectIDs): + values = obj_dict[obj][id]["qual"] + if isinstance(values, dict): + regions = obj_regions_abseta_lowbounds[obj].keys() + return cms.vuint32(tuple(values[region] for region in regions)) + else: + return cms.uint32(values) + +def get_object_isos(obj, id = "default", obj_dict=objectIDs): + values = obj_dict[obj][id]["iso"] + if isinstance(values, dict): + regions = obj_regions_abseta_lowbounds[obj].keys() + return cms.vdouble(tuple(values[region] for region in regions)) + else: + return cms.double(values) diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_ids.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_ids.py new file mode 100644 index 0000000000000..8d2cc0eebee55 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_ids.py @@ -0,0 +1,61 @@ +### L1T Object ID and Isolation criteria +### as provided by the L1 DPG object contacts +### in agreement with the subsystems + +objectIDs = { + "CL2Taus": { + "default": { + "qual" : 225 + } + }, + "CL2Photons":{ + "Iso": { + "qual": { + "barrel": 0b0010, + "endcap": 0b0100, + }, + "iso": { + "barrel": 0.25, + "endcap": 0.205, + } + } + }, + "CL2Electrons":{ + "Iso": { + # "qual": { + # "barrel": 0b0010, + # "endcap": 0b0010, + # }, + "iso": { + "barrel": 0.13, + "endcap": 0.28, + } + }, + "NoIso": { + "qual": { + "barrel": 0b0010, + "endcap": 0b0010, + }, + }, + "NoIsoLowPt": { + "qual": { + "barrel": 0b0010, + "endcap": 0b0000, + }, + } + }, + "GMTTkMuons":{ + "VLoose": { + "qual": 0b0001, + }, + "Loose": { + "qual": 0b0010, + }, + "Medium": { + "qual": 0b0100, + }, + "Tight": { + "qual": 0b1000, + }, + } +} \ No newline at end of file diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_scalings.py b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_scalings.py new file mode 100644 index 0000000000000..111bd18addf67 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/SeedDefinitions/step1_2024_explicitSeeds/l1tGTObject_scalings.py @@ -0,0 +1,323 @@ +### L1T Object threshold scalings +### as derived by the Phase-2 L1 DPG Menu team +### using the Phase-2 MenuTools: https://github.com/cms-l1-dpg/Phase2-L1MenuTools + +### Corresponds to version v44 derived with the Annual Review 2024 config in the 14_2_x release +### See the L1T Phase-2 Menu Twiki for more details: https://twiki.cern.ch/twiki/bin/viewauth/CMS/PhaseIIL1TriggerMenuTools#Phase_2_L1_Trigger_objects_based + +### NB Objects starting with L1 are not yet part of the Step1 Menu and thus no seeds implemented in the P2GT emulator + +scalings = { + "CL2Electrons": { + "Iso": { + "barrel": { + "offset": 1.16, + "slope": 1.18 + }, + "endcap": { + "offset": 0.18, + "slope": 1.25 + } + }, + "NoIso": { + "barrel": { + "offset": 1.24, + "slope": 1.18 + }, + "endcap": { + "offset": 0.63, + "slope": 1.25 + } + } + }, + "CL2EtSum": { + "default": { + "inclusive": { + "offset": 37.05, + "slope": 1.64 + } + } + }, + "CL2HtSum": { + "HT": { + "inclusive": { + "offset": 45.7, + "slope": 1.12 + } + }, + "MHT": { + "inclusive": { + "offset": -12.93, + "slope": 1.16 + } + } + }, + "CL2JetsSC4": { + "default": { + "barrel": { + "offset": 17.33, + "slope": 1.28 + }, + "endcap": { + "offset": 15.33, + "slope": 1.67 + }, + "forward": { + "offset": 71.45, + "slope": 1.14 + } + } + }, + "CL2JetsSC8": { + "default": { + "barrel": { + "offset": 23.98, + "slope": 1.37 + }, + "endcap": { + "offset": 28.95, + "slope": 1.56 + }, + "forward": { + "offset": 69.06, + "slope": 1.42 + } + } + }, + "CL2Photons": { + "Iso": { + "barrel": { + "offset": 3.04, + "slope": 1.09 + }, + "endcap": { + "offset": 7.73, + "slope": 0.96 + } + }, + "NoIso": { + "barrel": { + "offset": 4.43, + "slope": 1.07 + }, + "endcap": { + "offset": 5.22, + "slope": 1.07 + } + } + }, + "CL2Taus": { + "default": { + "barrel": { + "offset": 3.53, + "slope": 1.26 + }, + "endcap": { + "offset": -3.15, + "slope": 1.66 + } + } + }, + "GMTSaPromptMuons": { + "default": { + "barrel": { + "offset": 1.08, + "slope": 1.69 + }, + "endcap": { + "offset": -2.97, + "slope": 1.21 + }, + "overlap": { + "offset": -1.17, + "slope": 1.35 + } + } + }, + "GMTTkMuons": { + "Loose": { + "barrel": { + "offset": 0.96, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.16, + "slope": 1.03 + } + }, + "Medium": { + "barrel": { + "offset": 0.95, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.16, + "slope": 1.03 + } + }, + "Tight": { + "barrel": { + "offset": 0.94, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.17, + "slope": 1.03 + } + }, + "VLoose": { + "barrel": { + "offset": 0.96, + "slope": 1.04 + }, + "endcap": { + "offset": 0.94, + "slope": 1.04 + }, + "overlap": { + "offset": 1.17, + "slope": 1.03 + } + }, + "default": { + "barrel": { + "offset": 0.96, + "slope": 1.04 + }, + "endcap": { + "offset": 0.87, + "slope": 1.04 + }, + "overlap": { + "offset": 1.16, + "slope": 1.03 + } + } + }, + "L1EG": { + "default": { + "barrel": { + "offset": 4.36, + "slope": 1.12 + }, + "endcap": { + "offset": 5.22, + "slope": 1.07 + } + } + }, + "L1TrackHT": { + "HT": { + "inclusive": { + "offset": -51.83, + "slope": 2.58 + } + }, + "MHT": { + "inclusive": { + "offset": -19.41, + "slope": 2.27 + } + } + }, + "L1TrackJet": { + "default": { + "barrel": { + "offset": 14.84, + "slope": 5.15 + }, + "endcap": { + "offset": 30.24, + "slope": 7.12 + } + } + }, + "L1TrackMET": { + "default": { + "inclusive": { + "offset": -75.85, + "slope": 8.69 + } + } + }, + "L1caloJet": { + "default": { + "barrel": { + "offset": 2.27, + "slope": 1.48 + }, + "endcap": { + "offset": 77.98, + "slope": 1.74 + }, + "forward": { + "offset": 223.84, + "slope": 0.89 + } + } + }, + "L1caloTau": { + "default": { + "barrel": { + "offset": -10.87, + "slope": 1.69 + }, + "endcap": { + "offset": -45.77, + "slope": 2.54 + } + } + }, + "L1hpsTau": { + "default": { + "barrel": { + "offset": 1.88, + "slope": 1.74 + }, + "endcap": { + "offset": 37.49, + "slope": 1.5 + } + } + }, + "L1nnCaloTau": { + "default": { + "barrel": { + "offset": -0.72, + "slope": 1.31 + }, + "endcap": { + "offset": -6.02, + "slope": 1.38 + } + } + }, + "L1puppiHistoJetSums": { + "MHT": { + "inclusive": { + "offset": -15.69, + "slope": 1.18 + } + } + }, + "L1puppiMLMET": { + "default": { + "inclusive": { + "offset": 29.35, + "slope": 1.56 + } + } + } +} \ No newline at end of file diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/prototype_2023_v1_0_0.py b/L1Trigger/Configuration/python/Phase2GTMenus/prototype_2023_v1_0_0.py deleted file mode 100644 index 733a90deee4f2..0000000000000 --- a/L1Trigger/Configuration/python/Phase2GTMenus/prototype_2023_v1_0_0.py +++ /dev/null @@ -1,5 +0,0 @@ -# The first prototype menu - -menu = [ - 'L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.prototypeSeeds' -] diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/step1_2023.py b/L1Trigger/Configuration/python/Phase2GTMenus/step1_2023.py new file mode 100644 index 0000000000000..1c3e690fd0af2 --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/step1_2023.py @@ -0,0 +1,5 @@ +# The first prototype menu + +menu = [ + "L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2023.l1tGTMenu_cff" +] diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/step1_2024.py b/L1Trigger/Configuration/python/Phase2GTMenus/step1_2024.py new file mode 100644 index 0000000000000..aa9fdd3fdc20c --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/step1_2024.py @@ -0,0 +1,5 @@ +# The first prototype menu + +menu = [ + "L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024.l1tGTMenu_cff" +] diff --git a/L1Trigger/Configuration/python/Phase2GTMenus/step1_2024_explicitSeeds.py b/L1Trigger/Configuration/python/Phase2GTMenus/step1_2024_explicitSeeds.py new file mode 100644 index 0000000000000..34693f01fc84c --- /dev/null +++ b/L1Trigger/Configuration/python/Phase2GTMenus/step1_2024_explicitSeeds.py @@ -0,0 +1,5 @@ +# The first prototype menu + +menu = [ + "L1Trigger.Configuration.Phase2GTMenus.SeedDefinitions.step1_2024_explicitSeeds.l1tGTMenu_cff" +] diff --git a/L1Trigger/Phase2L1GT/python/l1tGTMenu_cff.py b/L1Trigger/Phase2L1GT/python/l1tGTMenu_cff.py deleted file mode 100644 index 605246bf488fc..0000000000000 --- a/L1Trigger/Phase2L1GT/python/l1tGTMenu_cff.py +++ /dev/null @@ -1,16 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -############################################################ -# L1 Global Trigger Menu -############################################################ - -from L1Trigger.Phase2L1GT.l1tGTMenu_lepSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_hadr_metSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_crossLepSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_hadr_crossLepSeeds_cff import * - -from L1Trigger.Phase2L1GT.l1tGTMenu_BTagSeeds_cff import * -