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