From 80f720b632a9011d327c225da7c37e4a4c564511 Mon Sep 17 00:00:00 2001 From: Heather Russell <heather.russell@cern.ch> Date: Mon, 19 Oct 2020 10:39:58 +0200 Subject: [PATCH 1/5] First work for auto-merging --- .../python/HLTMenuConfig/Menu/ChainMerging.py | 21 +++++++++++++++++++ .../python/HLTMenuConfig/Menu/LS2_v1.py | 2 ++ .../HLTMenuConfig/Menu/MenuAlignmentTools.py | 4 ++++ 3 files changed, 27 insertions(+) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py index 6bdde51d52cf..56247492d7f3 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py @@ -5,6 +5,7 @@ log = logging.getLogger( __name__ ) from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain, ChainStep, EmptyMenuSequence, RecoFragmentsPool +from TriggerMenuMT.HLTMenuConfig.Menu.MenuAlignmentTools import getAlignmentGroupOrdering from copy import deepcopy import re @@ -21,6 +22,26 @@ def mergeChainDefs(listOfChainDefs, chainDict): return mergeParallel(listOfChainDefs, offset) elif strategy=="serial": return mergeSerial(listOfChainDefs) + + elif strategy=="auto": + ordering = getAlignmentGroupOrdering() + merging_dict = OrderedDict() + for ich,cConfig in enumerate(listOfChainDefs): + chain_ag = cConfig.alignmentGroups[0] + if chain_ag not in ordering: + log.error("Alignment group %s can't be auto-merged because it's not in the grouping list!",chain_ag) + if chain_ag in merging_dict: + merging_dict[chain_ag] += [ich] + else: + merging_dict[chain_ag] = [ich] + tmp_merged = [] + for ag in ordering: + if ag not in merging_dict: + continue + tmp_merged += [mergeParallel(list( listOfChainDefs[i] for i in merging_dict[ag] ),offset)] + return mergeSerial(tmp_merged) + + else: log.error("Merging failed for %s. Merging strategy '%s' not known.", (listOfChainDefs, strategy)) return -1 diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index b1573112911d..bd2592e93aa5 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -359,6 +359,8 @@ def setupMenu(): TriggerFlags.CombinedSlice.signatures = TriggerFlags.CombinedSlice.signatures() + [ # groups need to be properly assigned here later # Primary e-mu chains + ChainProp(name='HLT_e17_lhloose_g5_etcut_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','EM3','MU10'], mergingStrategy='auto', stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_e17_lhloose_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','MU10'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), ChainProp(name='HLT_e7_lhmedium_mu24_L1MU20',l1SeedThresholds=['EM3','MU20'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), ChainProp(name='HLT_e12_lhloose_2mu10_L12MU10', l1SeedThresholds=['EM8VH','MU10'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py index 2d5252be534c..b07dfba16b39 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py @@ -24,6 +24,10 @@ the_signature_grouping = OrderedDict([ ('UnconventionalTracking','UnconventionalTracking'), ]) +def getAlignmentGroupOrdering(): + seen = set() + return [v for _,v in the_signature_grouping.items() if not (v in seen or seen.add(v))] + def getAlignmentGroupFromPattern(sName, extra): signature_for_alignment = sName + extra -- GitLab From 5ad8478753e4b95aaab1c407337b0cd30ae96b94 Mon Sep 17 00:00:00 2001 From: Heather Russell <heather.russell@cern.ch> Date: Mon, 19 Oct 2020 11:59:51 +0200 Subject: [PATCH 2/5] Removing parallel/serial, change default merging to auto --- .../HLTMenuConfig/Menu/ChainDefInMenu.py | 2 +- .../python/HLTMenuConfig/Menu/ChainMerging.py | 5 +- .../HLTMenuConfig/Menu/GenerateMenuMT.py | 2 +- .../python/HLTMenuConfig/Menu/LS2_v1.py | 52 +++++++++---------- .../HLTMenuConfig/Menu/MenuAlignmentTools.py | 2 +- .../HLTMenuConfig/Menu/Physics_pp_run3_v1.py | 4 +- .../HLTMenuConfig/Menu/SignatureDicts.py | 4 +- 7 files changed, 35 insertions(+), 36 deletions(-) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDefInMenu.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDefInMenu.py index 90844fe6b759..61f5c45d8fa8 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDefInMenu.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainDefInMenu.py @@ -18,7 +18,7 @@ ChainProp = namedtuple_with_defaults("ChainProp", ['name', 'l1SeedThresholds', 'stream', 'groups', 'mergingStrategy', 'mergingOrder', 'mergingOffset', 'topoStartFrom'], {'stream':['Main'], 'l1SeedThresholds': [], - 'mergingStrategy':'parallel', + 'mergingStrategy':'auto', 'mergingOrder': [], 'mergingOffset': -1, 'topoStartFrom': False}) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py index 56247492d7f3..7a7e7d470d62 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py @@ -6,6 +6,7 @@ log = logging.getLogger( __name__ ) from TriggerMenuMT.HLTMenuConfig.Menu.MenuComponents import Chain, ChainStep, EmptyMenuSequence, RecoFragmentsPool from TriggerMenuMT.HLTMenuConfig.Menu.MenuAlignmentTools import getAlignmentGroupOrdering +from collections import OrderedDict from copy import deepcopy import re @@ -212,9 +213,9 @@ def makeCombinedStep(steps, stepNumber, chainDefList): stepDicts.append(deepcopy(chainDefList[chain_index].steps[-1].chainDicts[-1])) else: # Standard step, append it to the combined step - log.debug(" step %s, multiplicity = %s", step.name, str(step.multiplicity)) + log.info(" step %s, multiplicity = %s", step.name, str(step.multiplicity)) if len(step.sequences): - log.debug(" with sequences = %s", ' '.join(map(str, [seq.name for seq in step.sequences]))) + log.info(" with sequences = %s", ' '.join(map(str, [seq.name for seq in step.sequences]))) # this function only works if the input chains are single-object chains (one menu seuqnce) if len(step.sequences) > 1: diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py index 47b508b57744..16a3c1e07296 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py @@ -255,7 +255,7 @@ class GenerateMenuMT(object): chainConfig.numberAllSteps() TriggerConfigHLT.registerChain( chainDict, chainConfig ) - elif len(alignmentGroups) == 2: + elif len(alignmentGroups) > 1: #check for a few bad conditions first: if(alignmentGroups[0] not in alignmentGroup_sets_to_align or alignmentGroups[1] not in alignmentGroup_sets_to_align): log.error(" one of the alignmentGroups in %s is not available in the sets to align dictionary!", alignmentGroups) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index bd2592e93aa5..5334f24c0104 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -33,8 +33,8 @@ def setupMenu(): #ATR-19985 ChainProp(name='HLT_mu6_idperf_L1MU6', groups=SingleMuonGroup), ChainProp(name='HLT_mu24_idperf_L1MU20', groups=SingleMuonGroup), - ChainProp(name='HLT_mu6_mu6noL1_L1MU6', l1SeedThresholds=['MU6','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), - ChainProp(name='HLT_mu20_ivarmedium_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), + ChainProp(name='HLT_mu6_mu6noL1_L1MU6', l1SeedThresholds=['MU6','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu20_ivarmedium_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), #test chains ChainProp(name='HLT_mu6fast_L1MU6', groups=SingleMuonGroup), @@ -69,12 +69,12 @@ def setupMenu(): ChainProp(name='HLT_3mu8_msonly_L13MU6', groups=SingleMuonGroup), ChainProp(name='HLT_mu80_L1MU20', groups=SingleMuonGroup), ChainProp(name='HLT_mu60_L1MU20', groups=SingleMuonGroup), - ChainProp(name='HLT_mu24_mu10noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), - ChainProp(name='HLT_mu26_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), - ChainProp(name='HLT_mu26_mu10noL1_L1MU20', l1SeedThresholds=['MU20', 'FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), - ChainProp(name='HLT_mu28_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), - ChainProp(name='HLT_mu22_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), - ChainProp(name='HLT_mu24_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_mu10noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu26_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu26_mu10noL1_L1MU20', l1SeedThresholds=['MU20', 'FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu28_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu22_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), + ChainProp(name='HLT_mu24_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), ChainProp(name="HLT_mu10_L1MU10", groups=SingleMuonGroup), ChainProp(name='HLT_2mu4_L12MU4', groups=MultiMuonGroup), @@ -198,8 +198,8 @@ def setupMenu(): # MultiMET Chain ChainProp(name='HLT_xe30_cell_xe30_tcpufit_L1XE10', l1SeedThresholds=['XE10']*2, groups=MultiMETGroup), #must be FS seeded # ATR-21934 - ChainProp(name='HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50',l1SeedThresholds=['XE50']*3, mergingStrategy='parallel', groups=MultiMETGroup), - ChainProp(name='HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50', l1SeedThresholds=['XE50']*3, mergingStrategy='parallel', groups=MultiMETGroup), + ChainProp(name='HLT_xe100_trkmht_xe85_tcpufit_xe65_cell_L1XE50',l1SeedThresholds=['XE50']*3, groups=MultiMETGroup), + ChainProp(name='HLT_xe95_trkmht_xe90_tcpufit_xe75_cell_L1XE50', l1SeedThresholds=['XE50']*3, groups=MultiMETGroup), ] @@ -339,9 +339,9 @@ def setupMenu(): ChainProp(name="HLT_tau200_mediumRNN_tracktwoMVA_L1TAU100",groups=SingleTauGroup), # ATR-21797 # the following 3 chains were in serial mode in Run-2 - ChainProp(name="HLT_tau80_mediumRNN_tracktwoMVA_tau60_mediumRNN_tracktwoMVA_L1TAU60_2TAU40", l1SeedThresholds=['TAU60','TAU40'], mergingStrategy='parallel', groups=MultiTauGroup), - ChainProp(name="HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_L1TAU60_DR-TAU20ITAU12I",l1SeedThresholds=['TAU60','TAU12IM'], mergingStrategy='parallel', groups=MultiTauGroup), - ChainProp(name="HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_L1DR-TAU20ITAU12I-J25", l1SeedThresholds=['TAU20IM','TAU12IM'], mergingStrategy='parallel', groups=MultiTauGroup), + ChainProp(name="HLT_tau80_mediumRNN_tracktwoMVA_tau60_mediumRNN_tracktwoMVA_L1TAU60_2TAU40", l1SeedThresholds=['TAU60','TAU40'], groups=MultiTauGroup), + ChainProp(name="HLT_tau80_mediumRNN_tracktwoMVA_tau35_mediumRNN_tracktwoMVA_L1TAU60_DR-TAU20ITAU12I",l1SeedThresholds=['TAU60','TAU12IM'], groups=MultiTauGroup), + ChainProp(name="HLT_tau35_mediumRNN_tracktwoMVA_tau25_mediumRNN_tracktwoMVA_L1DR-TAU20ITAU12I-J25", l1SeedThresholds=['TAU20IM','TAU12IM'], groups=MultiTauGroup), ] TriggerFlags.BphysicsSlice.signatures = TriggerFlags.BphysicsSlice.signatures() + [ @@ -359,28 +359,26 @@ def setupMenu(): TriggerFlags.CombinedSlice.signatures = TriggerFlags.CombinedSlice.signatures() + [ # groups need to be properly assigned here later # Primary e-mu chains - ChainProp(name='HLT_e17_lhloose_g5_etcut_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','EM3','MU10'], mergingStrategy='auto', stream=[PhysicsStream], groups=MultiElectronGroup), - - ChainProp(name='HLT_e17_lhloose_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','MU10'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), - ChainProp(name='HLT_e7_lhmedium_mu24_L1MU20',l1SeedThresholds=['EM3','MU20'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), - ChainProp(name='HLT_e12_lhloose_2mu10_L12MU10', l1SeedThresholds=['EM8VH','MU10'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), - ChainProp(name='HLT_2e12_lhloose_mu10_L12EM8VH_MU10', l1SeedThresholds=['EM8VH','MU10'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_e17_lhloose_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','MU10'], mergingStrategy='auto', stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_e7_lhmedium_mu24_L1MU20',l1SeedThresholds=['EM3','MU20'], stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_e12_lhloose_2mu10_L12MU10', l1SeedThresholds=['EM8VH','MU10'], stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_2e12_lhloose_mu10_L12EM8VH_MU10', l1SeedThresholds=['EM8VH','MU10'], stream=[PhysicsStream], groups=MultiElectronGroup), # Primary g-mu chains - ChainProp(name='HLT_g25_medium_mu24_ivarmedium_L1MU20',l1SeedThresholds=['EM15VH','MU20'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), - ChainProp(name='HLT_g35_loose_mu18_L1EM24VHI', l1SeedThresholds=['EM24VHI','MU10'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), - ChainProp(name='HLT_2g10_loose_mu20_L1MU20', l1SeedThresholds=['EM7','MU20'], mergingStrategy='serial', stream=[PhysicsStream], groups=MultiElectronGroup), # unsure what EM seed should be + ChainProp(name='HLT_g25_medium_mu24_ivarmedium_L1MU20',l1SeedThresholds=['EM15VH','MU20'], stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_g35_loose_mu18_L1EM24VHI', l1SeedThresholds=['EM24VHI','MU10'], stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_2g10_loose_mu20_L1MU20', l1SeedThresholds=['EM7','MU20'], stream=[PhysicsStream], groups=MultiElectronGroup), # unsure what EM seed should be # Primary e-g chains: electron + photon stay in the same step - these need to be parallel merged! # test - ChainProp(name='HLT_e3_etcut1step_g5_etcut_L12EM3',l1SeedThresholds=['EM3','EM3'], mergingStrategy='parallel', stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_e3_etcut1step_g5_etcut_L12EM3',l1SeedThresholds=['EM3','EM3'], stream=[PhysicsStream], groups=MultiElectronGroup), # primaries - ChainProp(name='HLT_e24_lhmedium_g25_medium_L12EM20VH', l1SeedThresholds=['EM20VH','EM20VH'], mergingStrategy='parallel', stream=[PhysicsStream], groups=MultiElectronGroup), - ChainProp(name='HLT_e24_lhmedium_2g12_loose_L1EM20VH_3EM10VH', l1SeedThresholds=['EM20VH','EM10VH'], mergingStrategy='parallel', stream=[PhysicsStream], groups=MultiElectronGroup), # unsure about l1SeedThresholds + ChainProp(name='HLT_e24_lhmedium_g25_medium_L12EM20VH', l1SeedThresholds=['EM20VH','EM20VH'], stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_e24_lhmedium_2g12_loose_L1EM20VH_3EM10VH', l1SeedThresholds=['EM20VH','EM10VH'], stream=[PhysicsStream], groups=MultiElectronGroup), # unsure about l1SeedThresholds # Test chains for muon + jet/MET merging/aligning - ChainProp(name='HLT_mu6fast_xe30_mht_L1XE10', l1SeedThresholds=['MU6','XE10'], mergingStrategy='serial', stream=[PhysicsStream], groups=SingleMETGroup), - ChainProp(name='HLT_mu6fast_j45_nojcalib_L1J20', l1SeedThresholds=['MU6','J20'], mergingStrategy='serial', stream=[PhysicsStream], groups=SingleMETGroup), + ChainProp(name='HLT_mu6fast_xe30_mht_L1XE10', l1SeedThresholds=['MU6','XE10'], stream=[PhysicsStream], groups=SingleMETGroup), + ChainProp(name='HLT_mu6fast_j45_nojcalib_L1J20', l1SeedThresholds=['MU6','J20'], stream=[PhysicsStream], groups=SingleMETGroup), ] TriggerFlags.HeavyIonSlice.signatures = TriggerFlags.HeavyIonSlice.signatures() + [] diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py index b07dfba16b39..4d2873baf4b7 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuAlignmentTools.py @@ -36,7 +36,7 @@ def getAlignmentGroupFromPattern(sName, extra): elif sName in the_signature_grouping.keys(): return the_signature_grouping[sName] else: - log.info("No alignment grouping for signature %s (%s)",sName,extra) + log.info("No dedicated alignment grouping for signature %s (%s)",sName,extra) return sName # Here, we use a list of all the signature combinations in the menu and the signature diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py index 6ad08d81ca8f..4516817372c6 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/Physics_pp_run3_v1.py @@ -56,12 +56,12 @@ def setupMenu(): ChainProp(name='HLT_mu60_0eta105_msonly_L1MU20', groups=SingleMuonGroup), ChainProp(name='HLT_mu80_msonly_3layersEC_L1MU20', groups=SingleMuonGroup), #-- 2 mu - ChainProp(name='HLT_mu22_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), + ChainProp(name='HLT_mu22_mu8noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), ChainProp(name='HLT_2mu14_L12MU10', groups=MultiMuonGroup), #-- 2 mu iso invm ChainProp(name='HLT_mu10_ivarmedium_mu10_10invm70_L12MU10', groups=MultiMuonGroup), #-- 3 mu - ChainProp(name='HLT_mu20_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], mergingStrategy='serial', groups=MultiMuonGroup), + ChainProp(name='HLT_mu20_2mu4noL1_L1MU20', l1SeedThresholds=['MU20','FSNOSEED'], groups=MultiMuonGroup), ChainProp(name='HLT_3mu6_L13MU6', l1SeedThresholds=['MU6'], groups=MultiMuonGroup), ChainProp(name='HLT_3mu6_msonly_L13MU6', l1SeedThresholds=['MU6'], groups=MultiMuonGroup), #-- 4 mu diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py index a02231864877..4e3460087e6c 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py @@ -665,7 +665,7 @@ AllowedMonitorChainIdentifiers = ['robrequest', 'timeburner', 'costmonitor', # ---- Monitor Chain Dictionary of all allowed Values ---- MonitorChainParts = { 'signature' : ['Monitor'], - 'alignmentGroup' : ['Monitor'], + 'alignmentGroup' : ['Monitor','LArNoiseBurst'], 'chainPartName' : '', 'L1threshold' : '', 'monType' : AllowedMonitorChainIdentifiers, @@ -679,7 +679,7 @@ MonitorChainParts = { # ---- Monitor Chain Default Dictionary of all allowed Values ---- MonitorChainParts_Default = { 'signature' : ['Monitor'], - 'alignmentGroup' : ['Monitor'], + 'alignmentGroup' : ['Monitor','LArNoiseBurst'], 'chainPartName' : '', 'L1threshold' : '', 'monType' : [], -- GitLab From 7ce9ab05651d7cb748da13a6480b0deb05fe401e Mon Sep 17 00:00:00 2001 From: Heather Russell <heather.russell@cern.ch> Date: Mon, 19 Oct 2020 13:45:42 +0200 Subject: [PATCH 3/5] Fixes for parallel-only chains, cleanup --- .../python/HLTMenuConfig/Menu/ChainMerging.py | 15 ++++++++++++--- .../python/HLTMenuConfig/Menu/GenerateMenuMT.py | 2 +- .../python/HLTMenuConfig/Menu/MenuComponents.py | 1 + .../python/HLTMenuConfig/Menu/SignatureDicts.py | 4 ++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py index 7a7e7d470d62..5a87049bb3eb 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/ChainMerging.py @@ -35,11 +35,20 @@ def mergeChainDefs(listOfChainDefs, chainDict): merging_dict[chain_ag] += [ich] else: merging_dict[chain_ag] = [ich] + tmp_merged = [] for ag in ordering: if ag not in merging_dict: continue - tmp_merged += [mergeParallel(list( listOfChainDefs[i] for i in merging_dict[ag] ),offset)] + if len(merging_dict[ag]) > 1: + tmp_merged += [mergeParallel(list( listOfChainDefs[i] for i in merging_dict[ag] ),offset)] + else: + tmp_merged += [listOfChainDefs[merging_dict[ag][0]]] + + # only serial merge if necessary + if len(tmp_merged) == 1: + return tmp_merged[0] + return mergeSerial(tmp_merged) @@ -213,9 +222,9 @@ def makeCombinedStep(steps, stepNumber, chainDefList): stepDicts.append(deepcopy(chainDefList[chain_index].steps[-1].chainDicts[-1])) else: # Standard step, append it to the combined step - log.info(" step %s, multiplicity = %s", step.name, str(step.multiplicity)) + log.debug(" step %s, multiplicity = %s", step.name, str(step.multiplicity)) if len(step.sequences): - log.info(" with sequences = %s", ' '.join(map(str, [seq.name for seq in step.sequences]))) + log.debug(" with sequences = %s", ' '.join(map(str, [seq.name for seq in step.sequences]))) # this function only works if the input chains are single-object chains (one menu seuqnce) if len(step.sequences) > 1: diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py index 16a3c1e07296..47b508b57744 100755 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/GenerateMenuMT.py @@ -255,7 +255,7 @@ class GenerateMenuMT(object): chainConfig.numberAllSteps() TriggerConfigHLT.registerChain( chainDict, chainConfig ) - elif len(alignmentGroups) > 1: + elif len(alignmentGroups) == 2: #check for a few bad conditions first: if(alignmentGroups[0] not in alignmentGroup_sets_to_align or alignmentGroups[1] not in alignmentGroup_sets_to_align): log.error(" one of the alignmentGroups in %s is not available in the sets to align dictionary!", alignmentGroups) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py index 49e3c9685e26..eb05869917f8 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/MenuComponents.py @@ -655,6 +655,7 @@ class Chain(object): # new way to configure hypo tools, works if the chain dictionaries have been attached to the steps log.debug('%s in new hypo tool creation method, step mult= %d, isCombo=%d', self.name, sum(step.multiplicity), step.isCombo) log.debug("N(seq)=%d, N(chainDicts)=%d", len(step.sequences), len(step.chainDicts)) + assert len(step.sequences)==len(step.chainDicts), "createHypoTools only makes sense if number of sequences == number of chain dicts" for seq, onePartChainDict in zip(step.sequences, step.chainDicts): log.debug(' seq: %s, onePartChainDict:', seq.name) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py index 4e3460087e6c..a02231864877 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/SignatureDicts.py @@ -665,7 +665,7 @@ AllowedMonitorChainIdentifiers = ['robrequest', 'timeburner', 'costmonitor', # ---- Monitor Chain Dictionary of all allowed Values ---- MonitorChainParts = { 'signature' : ['Monitor'], - 'alignmentGroup' : ['Monitor','LArNoiseBurst'], + 'alignmentGroup' : ['Monitor'], 'chainPartName' : '', 'L1threshold' : '', 'monType' : AllowedMonitorChainIdentifiers, @@ -679,7 +679,7 @@ MonitorChainParts = { # ---- Monitor Chain Default Dictionary of all allowed Values ---- MonitorChainParts_Default = { 'signature' : ['Monitor'], - 'alignmentGroup' : ['Monitor','LArNoiseBurst'], + 'alignmentGroup' : ['Monitor'], 'chainPartName' : '', 'L1threshold' : '', 'monType' : [], -- GitLab From c2b1d4198d617ce9f43e2d6fa0d015d545ea1d3f Mon Sep 17 00:00:00 2001 From: Heather Russell <heather.russell@cern.ch> Date: Mon, 19 Oct 2020 14:36:38 +0200 Subject: [PATCH 4/5] Add back merging strategy for newJO, which isn't part of the whole alignment strategy jet --- .../TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py index 955836c64b6a..62e528b81338 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1_newJO.py @@ -70,8 +70,8 @@ def setupMenu(flags): ] flags.Trigger.menu.combined = [ - ChainProp(name='HLT_e7_etcut_mu10_L1EM7_MU10', groups=CombinedGroup), - ChainProp(name='HLT_e7_etcut_mu12_L1EM7_MU10', groups=CombinedGroup) + ChainProp(name='HLT_e7_etcut_mu10_L1EM7_MU10', mergingStrategy='parallel', groups=CombinedGroup), + ChainProp(name='HLT_e7_etcut_mu12_L1EM7_MU10', mergingStrategy='parallel', groups=CombinedGroup) ] if __name__ == "__main__": -- GitLab From bd535d4435536035c1600bdbb97e26e0df0aba19 Mon Sep 17 00:00:00 2001 From: Heather Russell <heather.russell@cern.ch> Date: Mon, 19 Oct 2020 15:12:42 +0200 Subject: [PATCH 5/5] Remove stray mergingStrategy line from ls2_1 --- .../TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py index 5334f24c0104..08cfeebaccf3 100644 --- a/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py +++ b/Trigger/TriggerCommon/TriggerMenuMT/python/HLTMenuConfig/Menu/LS2_v1.py @@ -359,7 +359,7 @@ def setupMenu(): TriggerFlags.CombinedSlice.signatures = TriggerFlags.CombinedSlice.signatures() + [ # groups need to be properly assigned here later # Primary e-mu chains - ChainProp(name='HLT_e17_lhloose_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','MU10'], mergingStrategy='auto', stream=[PhysicsStream], groups=MultiElectronGroup), + ChainProp(name='HLT_e17_lhloose_mu14_L1EM15VH_MU10', l1SeedThresholds=['EM15VH','MU10'], stream=[PhysicsStream], groups=MultiElectronGroup), ChainProp(name='HLT_e7_lhmedium_mu24_L1MU20',l1SeedThresholds=['EM3','MU20'], stream=[PhysicsStream], groups=MultiElectronGroup), ChainProp(name='HLT_e12_lhloose_2mu10_L12MU10', l1SeedThresholds=['EM8VH','MU10'], stream=[PhysicsStream], groups=MultiElectronGroup), ChainProp(name='HLT_2e12_lhloose_mu10_L12EM8VH_MU10', l1SeedThresholds=['EM8VH','MU10'], stream=[PhysicsStream], groups=MultiElectronGroup), -- GitLab