ATLAS Offline Software
checkScenarioPresence.py
Go to the documentation of this file.
1 # Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
2 from __future__ import print_function
3 from __future__ import absolute_import
4 
5 """Check that if a scenario apppears in a chain part name, that it also
6 is a key in the chain part dict. This is to catch errors whereby a
7 scenario is present in the chain name, but is is not present in the
8 SignatureDicts.JetChainParts[hypoScenario] list, in which case
9 hypoScenario is set to the default. The ommision of the full scenario
10 name from the list is an easy mistake to make, but detecting the problem can be
11 difficult"""
12 
13 
14 from TriggerMenuMT.HLT.Menu.SignatureDicts import JetChainParts
15 
16 def checkScenarioPresence(chain_parts, chain_name):
17  full_scenarios = JetChainParts['hypoScenario']
18  headers = set([s.split('XX')[0] for s in full_scenarios])
19 
20  headers_in_chain_name = {h: chain_name.count(h) for h in headers}
21 
22  cp_scenarios = set([cp['hypoScenario'] for cp in chain_parts])
23 
24  headers_in_cp = {h: 0 for h in headers}
25 
26  for cps in cp_scenarios:
27  if cps == 'simple': continue # 'simple' not in chain name
28  for h in headers:
29  if cps.startswith(h):
30  headers_in_cp[h] += 1
31 
32  bad_headers = [h for h in headers_in_chain_name.keys() if
33  headers_in_chain_name[h] != headers_in_cp[h]]
34 
35  return bad_headers
36 
python.checkScenarioPresence.checkScenarioPresence
def checkScenarioPresence(chain_parts, chain_name)
Definition: checkScenarioPresence.py:16
CxxUtils::set
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.
Definition: bitmask.h:224