ATLAS Offline Software
test_hypoConfigBuilder.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
2 """Make chain dicts for testing jet hypo config modules"""
3 
4 from TriggerMenuMT.HLT.Menu.Physics_pp_run3_v1 import (
5  SingleJetGroup,
6  MultiJetGroup,
7  PhysicsStream,
8  SupportLegGroup,
9 )
10 
11 DevGroup = ['Development']
12 
13 
14 from TriggerMenuMT.HLT.Config.Utility.ChainDefInMenu import ChainProp
15 from TriggerMenuMT.HLT.Config.Utility.DictFromChainName import dictFromChainName
16 
17 from TrigHLTJetHypo.hypoToolDisplay import hypoToolDisplay
18 
19 import sys
20 
21 from pprint import pprint
22 
23 # from TrigHLTJetHypo.xmlConfig import hypotool_from_chaindict
24 from TrigHLTJetHypo.hypoConfigBuilder import hypotool_from_chaindict
25 
26 from AthenaCommon.Logging import logging
27 from AthenaCommon.Constants import DEBUG
28 logger = logging.getLogger( __name__)
29 
30 logger.setLevel(DEBUG)
31 
32 from AthenaConfiguration.AllConfigFlags import initConfigFlags
33 flags = initConfigFlags()
34 flags.Input.Files = []
35 flags.lock()
36 
37 
38 
39 chains = [
40 
41  ChainProp(name='HLT_j45a_pf_ftf_preselj20_L1J15', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream,'express'], groups=SingleJetGroup+SupportLegGroup+['RATE:CPS_J15'], monGroups=['jetMon:t0','jetMon:online','idMon:shifter','caloMon:t0']),
42 
43  ChainProp(name='HLT_j0_DIPZ50XX4j20_roiftf_preselj20_L13J35p0ETA23', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream,'express'], groups=MultiJetGroup+SupportLegGroup, monGroups=['jetMon:t0','jetMon:online']),
44  ChainProp(name='HLT_j0_DIPZ50XX4j20_MAXMULT20_roiftf_preselj20_L13J35p0ETA23', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream,'express'], groups=MultiJetGroup+SupportLegGroup, monGroups=['jetMon:t0','jetMon:online']),
45  ChainProp(name='HLT_4j110_pf_ftf_presel4jDIPZ50X20pt_L13J50', l1SeedThresholds=['FSNOSEED'], stream=[PhysicsStream,'express'], groups=MultiJetGroup+SupportLegGroup, monGroups=['jetMon:t0','jetMon:online']),
46 
47  ]
48 
49 def testChainDictMaker(idict):
50 
51  if idict >= 0:
52  chain_props = [chains[idict]]
53  else:
54  chain_props = chains
55 
56  result = []
57  for cp in chain_props:
58  logger.debug(cp)
59  chain_dict = dictFromChainName(flags, cp)
60  result.append((cp.name, chain_dict))
61 
62  return result
63 
64 
66  for i, c in enumerate(chains):
67  logger.debug('%2d ' + c.name, i)
68 
69 
70 if __name__ == '__main__':
71  import argparse
72  import os
73 
74  parser = argparse.ArgumentParser()
75 
76  parser.add_argument(
77  '-i',
78  '--iprop',
79  help='index of chainProp to run, -1: do all',
80  type=int)
81 
82  parser.add_argument('-d', '--dot', help='write out a dot file',
83  action='store_true')
84 
85  parser.add_argument(
86  '--dotdir',
87  help='specify directory to which dot file is to be written [$HOME]',
88  default=os.environ['HOME'])
89 
90 
91  args = parser.parse_args()
92 
93  if args.iprop is None:
94  list_chains()
95  sys.exit()
96 
97  iprop = args.iprop
98  dicts = testChainDictMaker(iprop)
99 
101  cdict = d[1]
102  # crass "fix" for out of order chainparts
103  # these errors probably arise from calling
104  # not-quite-correct menu code.
105  chain_part_inds = [cp['chainPartIndex'] for cp in cdict['chainParts']]
106  fix = chain_part_inds == sorted(chain_part_inds)
107  if not fix:
108  fix = chain_part_inds[-1] - chain_part_inds[0] == len(chain_part_inds)
109 
110 
111  if fix:
112  cpi = 0
113  for cp in cdict['chainParts']:
114  cp['chainPartIndex'] = cpi
115  cpi += 1
116 
117 
118  for d in dicts:
120  pprint(d)
121 
122  do_dot = args.dot
123  if args.dotdir:
124  do_dot = True
125 
126  for cn, d in dicts:
127  hypo_tool = hypotool_from_chaindict(d)
128  hypoToolDisplay(hypo_tool,
129  do_dot=do_dot,
130  dotdir=args.dotdir)
131 
132 
python.test_hypoConfigBuilder.order_chainparts
def order_chainparts(d)
Definition: test_hypoConfigBuilder.py:100
DictFromChainName.dictFromChainName
def dictFromChainName(flags, chainInfo)
Definition: DictFromChainName.py:626
python.test_hypoConfigBuilder.list_chains
def list_chains()
Definition: test_hypoConfigBuilder.py:65
python.test_hypoConfigBuilder.testChainDictMaker
def testChainDictMaker(idict)
Definition: test_hypoConfigBuilder.py:49
Constants
some useful constants -------------------------------------------------—
python.hypoConfigBuilder.hypotool_from_chaindict
def hypotool_from_chaindict(chain_dict, visit_debug=False)
Definition: hypoConfigBuilder.py:377
DerivationFramework::TriggerMatchingUtils::sorted
std::vector< typename T::value_type > sorted(T begin, T end)
Helper function to create a sorted vector from an unsorted one.
python.hypoToolDisplay.hypoToolDisplay
def hypoToolDisplay(tool, do_dot=False, dotdir='')
Definition: hypoToolDisplay.py:72
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19