Skip to content
Snippets Groups Projects
Commit b3665d92 authored by Vakhtang Tsulaia's avatar Vakhtang Tsulaia
Browse files

Merge branch 'chains-are-not-flags' into 'master'

Handle menu chains outside of the config flags (HLT newJO)

See merge request atlas/athena!38105
parents db884c5f 97bc86b9
No related branches found
No related tags found
No related merge requests found
...@@ -12,10 +12,6 @@ atlas_add_test( TriggerConfigFlagsTest ...@@ -12,10 +12,6 @@ atlas_add_test( TriggerConfigFlagsTest
SCRIPT python -m unittest TriggerJobOpts.TriggerConfigFlags SCRIPT python -m unittest TriggerJobOpts.TriggerConfigFlags
POST_EXEC_SCRIPT nopost.sh ) POST_EXEC_SCRIPT nopost.sh )
atlas_add_test( TriggerMenuFlagsTest
SCRIPT python -m unittest TriggerJobOpts.MenuConfigFlags
POST_EXEC_SCRIPT nopost.sh )
atlas_add_test( TriggerConfigTest atlas_add_test( TriggerConfigTest
SCRIPT python -m TriggerJobOpts.TriggerConfig SCRIPT python -m TriggerJobOpts.TriggerConfig
POST_EXEC_SCRIPT nopost.sh ) POST_EXEC_SCRIPT nopost.sh )
# Copyright (C) 2002-2019 CERN for the benefit of the ATLAS collaboration
from AthenaConfiguration.AthConfigFlags import AthConfigFlags
def createMenuFlags():
# this flags define which chains are in trgger menu
# the flags content is not just the name bu contains a few key elements of the chains definition, like the seed, other chain aspects can be added
# The DF/CF and hypos are then generated using the menu code
# Should the HLT_ and L1_ prefixes are omitted (DRY principle)?
# each flag is translated to an independent reconstruction chain
flags = AthConfigFlags()
#flags.addFlag('Trigger.menu.muons', [])
flags.addFlag('Trigger.menu.muon', [])
flags.addFlag('Trigger.menu.electron', [])
flags.addFlag('Trigger.menu.photon', [])
flags.addFlag('Trigger.menu.jet', [])
flags.addFlag('Trigger.menu.combined', [])
return flags
class MenuUtils(object):
@staticmethod
def toCTPSeedingDict( flags ):
seeding = {} # HLTChain to L1 item mapping
for k,v in flags._flagdict.iteritems():
if "Trigger.menu." in k:
for chain in v.get():
hlt = chain.name
l1 = hlt[hlt.index("_L1")+1:].replace("L1","L1_", 1)
seeding[hlt] = l1 # this is the item name
return seeding
import unittest
class __MustHaveMenuInTheName(unittest.TestCase):
def runTest(self):
flags = createMenuFlags()
for fname,fval in flags._flagdict.items():
self.assertTrue( fname.startswith('Trigger.menu.') )
...@@ -281,9 +281,6 @@ def createTriggerFlags(): ...@@ -281,9 +281,6 @@ def createTriggerFlags():
from TrigInDetConfig.TrigTrackingCutFlags import createTrigTrackingFlags from TrigInDetConfig.TrigTrackingCutFlags import createTrigTrackingFlags
flags.addFlagsCategory( 'Trigger.InDetTracking', createTrigTrackingFlags ) flags.addFlagsCategory( 'Trigger.InDetTracking', createTrigTrackingFlags )
from TriggerJobOpts.MenuConfigFlags import createMenuFlags
flags.join( createMenuFlags() )
return flags return flags
# for reference, this flags are skipped as never used or never set in fact, or set identical to de default or used in a very old JO: # for reference, this flags are skipped as never used or never set in fact, or set identical to de default or used in a very old JO:
# readLVL1Calo, readLVL1Muon, fakeLVL1, useCaloTTL # readLVL1Calo, readLVL1Muon, fakeLVL1, useCaloTTL
......
...@@ -43,13 +43,6 @@ flags.Scheduler.ShowDataDeps = True ...@@ -43,13 +43,6 @@ flags.Scheduler.ShowDataDeps = True
flags.Scheduler.ShowDataFlow = True flags.Scheduler.ShowDataFlow = True
flags.Scheduler.ShowControlFlow = True flags.Scheduler.ShowControlFlow = True
import importlib
setupMenuPath = "TriggerMenuMT.HLTMenuConfig.Menu."+flags.Trigger.triggerMenuSetup+"_newJO"
setupMenuModule = importlib.import_module( setupMenuPath )
assert setupMenuModule is not None, "Could not import module {}".format(setupMenuPath)
assert setupMenuModule.setupMenu is not None, "Could not import setupMenu from {}".format(setupMenuPath)
flags.needFlagsCategory('Trigger')
setupMenuModule.setupMenu(flags)
flags.Exec.MaxEvents=50 flags.Exec.MaxEvents=50
flags.Input.isMC = False flags.Input.isMC = False
flags.Common.isOnline=True flags.Common.isOnline=True
...@@ -87,6 +80,7 @@ acc.merge(ByteStreamReadCfg( flags )) ...@@ -87,6 +80,7 @@ acc.merge(ByteStreamReadCfg( flags ))
from TriggerJobOpts.TriggerHistSvcConfig import TriggerHistSvcConfig from TriggerJobOpts.TriggerHistSvcConfig import TriggerHistSvcConfig
acc.merge(TriggerHistSvcConfig( flags )) acc.merge(TriggerHistSvcConfig( flags ))
from TriggerMenuMT.HLTMenuConfig.Menu.GenerateMenuMT_newJO import generateMenu as generateHLTMenu from TriggerMenuMT.HLTMenuConfig.Menu.GenerateMenuMT_newJO import generateMenu as generateHLTMenu
from TriggerJobOpts.TriggerConfig import triggerRunCfg from TriggerJobOpts.TriggerConfig import triggerRunCfg
acc.merge( triggerRunCfg( flags, seqName = "AthMasterSeq", menu=generateHLTMenu ) ) acc.merge( triggerRunCfg( flags, seqName = "AthMasterSeq", menu=generateHLTMenu ) )
......
...@@ -26,8 +26,18 @@ def fillGeneratorsMap( sigMap, signature ): ...@@ -26,8 +26,18 @@ def fillGeneratorsMap( sigMap, signature ):
sigMap[signature] = gen.generateChains sigMap[signature] = gen.generateChains
log.info( 'Imported generator for %s', signature ) log.info( 'Imported generator for %s', signature )
def obtainChainsOfMenu(flags):
import importlib
setupMenuPath = "TriggerMenuMT.HLTMenuConfig.Menu."+flags.Trigger.triggerMenuSetup+"_newJO"
setupMenuModule = importlib.import_module( setupMenuPath )
assert setupMenuModule is not None, "Could not import module {}".format(setupMenuPath)
assert setupMenuModule.setupMenu is not None, "Could not import setupMenu from {}".format(setupMenuPath)
return setupMenuModule.setupMenu(flags)
def generateMenu( flags ):
def generateMenu(flags):
""" """
Using flags generate appropriate Control Flow Graph wiht all HLT algorithms Using flags generate appropriate Control Flow Graph wiht all HLT algorithms
""" """
...@@ -42,22 +52,18 @@ def generateMenu( flags ): ...@@ -42,22 +52,18 @@ def generateMenu( flags ):
menuAcc = ComponentAccumulator() menuAcc = ComponentAccumulator()
mainSequenceName = 'HLTAllSteps' mainSequenceName = 'HLTAllSteps'
menuAcc.addSequence( seqAND(mainSequenceName) ) menuAcc.addSequence(seqAND(mainSequenceName))
chainsInMenu = obtainChainsOfMenu(flags)
for name, cfgFlag in list(flags._flagdict.items()): for signatureName, chains in chainsInMenu.items():
if 'Trigger.menu.' not in name: if len(chains) == 0:
continue
value = flags._get(name)
if len(value) == 0:
continue continue
signatureName = name.split('.')[-1]
signatures = [] signatures = []
# fill the map[signature, generating function] # fill the map[signature, generating function]
if signatureName== 'combined': if signatureName== 'combined':
for chain in cfgFlag.get(): for chain in chains:
signatures += dictFromChainName(chain)['signatures'] signatures += dictFromChainName(chain)['signatures']
else: else:
signatures = [signatureName] signatures = [signatureName]
...@@ -66,7 +72,7 @@ def generateMenu( flags ): ...@@ -66,7 +72,7 @@ def generateMenu( flags ):
fillGeneratorsMap( signatureToGenerator, sig.lower() ) fillGeneratorsMap( signatureToGenerator, sig.lower() )
# call generating function and pass to CF builder # call generating function and pass to CF builder
for chain in cfgFlag.get(): for chain in chains:
# TODO topo threshold # TODO topo threshold
mainChainDict = dictFromChainName( chain ) mainChainDict = dictFromChainName( chain )
......
...@@ -18,6 +18,7 @@ def setupMenu(flags): ...@@ -18,6 +18,7 @@ def setupMenu(flags):
""" """
Assign chains for LS2_v1 to menu flags Assign chains for LS2_v1 to menu flags
""" """
chains = {}
#--------------------------------------------------------------------- #---------------------------------------------------------------------
# INPUT FORMAT FOR CHAINS: # INPUT FORMAT FOR CHAINS:
...@@ -37,7 +38,7 @@ def setupMenu(flags): ...@@ -37,7 +38,7 @@ def setupMenu(flags):
SingleJetGroup = ['RATE:SingleJet', 'BW:Jet'] SingleJetGroup = ['RATE:SingleJet', 'BW:Jet']
CombinedGroup = ['RATE:Combined', 'BW:Combined'] CombinedGroup = ['RATE:Combined', 'BW:Combined']
flags.Trigger.menu.muon = [ chains["muon"] = [
ChainProp(name='HLT_mu20_L1MU20', groups=SingleMuonGroup), ChainProp(name='HLT_mu20_L1MU20', groups=SingleMuonGroup),
ChainProp(name='HLT_mu10_L1MU10', groups=SingleMuonGroup), ChainProp(name='HLT_mu10_L1MU10', groups=SingleMuonGroup),
ChainProp(name='HLT_mu8_L1MU6', groups=SingleMuonGroup), ChainProp(name='HLT_mu8_L1MU6', groups=SingleMuonGroup),
...@@ -47,7 +48,7 @@ def setupMenu(flags): ...@@ -47,7 +48,7 @@ def setupMenu(flags):
ChainProp(name='HLT_mu8_msonly_L1MU6', groups=SingleMuonGroup) ChainProp(name='HLT_mu8_msonly_L1MU6', groups=SingleMuonGroup)
] ]
flags.Trigger.menu.electron = [ chains["electron"] = [
ChainProp(name='HLT_e3_etcut_L1EM3', groups=SingleElectronGroup), ChainProp(name='HLT_e3_etcut_L1EM3', groups=SingleElectronGroup),
ChainProp(name='HLT_2e3_etcut_L12EM3', groups=MultiElectronGroup), ChainProp(name='HLT_2e3_etcut_L12EM3', groups=MultiElectronGroup),
# this chain does not work yet # this chain does not work yet
...@@ -56,21 +57,22 @@ def setupMenu(flags): ...@@ -56,21 +57,22 @@ def setupMenu(flags):
ChainProp(name='HLT_e7_etcut_L1EM7', groups=SingleElectronGroup) ChainProp(name='HLT_e7_etcut_L1EM7', groups=SingleElectronGroup)
] ]
flags.Trigger.menu.photon = [ chains["photon"] = [
ChainProp(name='HLT_g10_etcut_L1EM7', groups=SinglePhotonGroup), ChainProp(name='HLT_g10_etcut_L1EM7', groups=SinglePhotonGroup),
ChainProp(name='HLT_g11_etcut_L1EM7', groups=SinglePhotonGroup), ChainProp(name='HLT_g11_etcut_L1EM7', groups=SinglePhotonGroup),
] ]
flags.Trigger.menu.jet = [ chains["jet"] = [
ChainProp(name='HLT_j45_L1J20', groups=SingleJetGroup), ChainProp(name='HLT_j45_L1J20', groups=SingleJetGroup),
ChainProp(name='HLT_j85_L1J20', groups=SingleJetGroup), ChainProp(name='HLT_j85_L1J20', groups=SingleJetGroup),
ChainProp(name='HLT_2j35_L1J20', groups=SingleJetGroup) ChainProp(name='HLT_2j35_L1J20', groups=SingleJetGroup)
] ]
flags.Trigger.menu.combined = [ chains["combined"] = [
ChainProp(name='HLT_e7_etcut_mu10_L1EM7_MU10', mergingStrategy='parallel', groups=CombinedGroup), ChainProp(name='HLT_e7_etcut_mu10_L1EM7_MU10', mergingStrategy='parallel', groups=CombinedGroup),
ChainProp(name='HLT_e7_etcut_mu10_msonly_L1EM7_MU10', mergingStrategy='parallel', groups=CombinedGroup) ChainProp(name='HLT_e7_etcut_mu10_msonly_L1EM7_MU10', mergingStrategy='parallel', groups=CombinedGroup)
] ]
return chains
if __name__ == "__main__": if __name__ == "__main__":
from AthenaCommon.Configurable import Configurable from AthenaCommon.Configurable import Configurable
...@@ -89,16 +91,15 @@ if __name__ == "__main__": ...@@ -89,16 +91,15 @@ if __name__ == "__main__":
from AthenaConfiguration.AllConfigFlags import ConfigFlags from AthenaConfiguration.AllConfigFlags import ConfigFlags
ConfigFlags.Trigger.generateMenuDiagnostics = True ConfigFlags.Trigger.generateMenuDiagnostics = True
setupMenu(ConfigFlags)
from AthenaConfiguration.TestDefaults import defaultTestFiles from AthenaConfiguration.TestDefaults import defaultTestFiles
ConfigFlags.Input.Files = defaultTestFiles.RAW ConfigFlags.Input.Files = defaultTestFiles.RAW
ConfigFlags.Trigger.triggerMenuSetup="LS2_v1"
ConfigFlags.lock() ConfigFlags.lock()
ConfigFlags.dump() ConfigFlags.dump()
from TriggerMenuMT.HLTMenuConfig.Menu.GenerateMenuMT_newJO import generateMenu from TriggerMenuMT.HLTMenuConfig.Menu.GenerateMenuMT_newJO import generateMenu
menu = generateMenu( ConfigFlags ) menu = generateMenu( ConfigFlags)
acc.merge(menu) acc.merge(menu)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment