ATLAS Offline Software
Loading...
Searching...
No Matches
eEmTipWriterParams_from_json.py
Go to the documentation of this file.
1# Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
2
3#
4# Read a json file which is contains run 4 information (a first guess),
5# and extract parameters used to initialise GlobalSim Hypo block
6# Alforithms. For now, this is limited to eEmMultAlgTool
7#
8
9from AthenaCommon.Logging import logging
10logger = logging.getLogger(__name__)
11
12from pprint import pprint
13
14import json as js
15
17
18 logger.setLevel(OutputLevel)
19
20
21 with open('/afs/cern.ch/work/p/peter/public/BDT1/build/x86_64-el9-gcc14-opt/share/L0GlobalTestMenuv1_Buttinger.json') as fh:
22 menu = js.load(fh)
23
24
25 eEm_names_l = get_eEm_names(menu)
26 j_pars_l = [get_eEm_jpars(menu, n) for n in eEm_names_l]
27 tlines_l = [get_eEm_triggerline(menu, n) for n in eEm_names_l]
28
29 assert len(eEm_names_l) == len(j_pars_l)
30 assert len(eEm_names_l) == len(tlines_l)
31
32 return [get_params(*z) for z in zip(eEm_names_l, j_pars_l, tlines_l)]
33
34def get_eEm_names(menu):
35 return menu['thresholds']['eEM']['thresholds'].keys()
36
37def get_eEm_jpars(menu, name):
38 return menu['thresholds']['eEM']['thresholds'][name]
39
40def get_eEm_triggerline(menu, name):
41
42 for tl in menu['connectors']['L0Global']['triggerlines']:
43 if tl['name'] == name: return tl
44 raise AssertionError('Triggerline not found for name ' + name)
45
46def get_params(name, j_pars, tl):
47 print('get_params')
48 print(name)
49 pprint(j_pars)
50 pprint(tl)
51
52 conversion_factors = {
53 'etmin' : 10,
54 'etaMin' : 1, # not known at present (13/102025)
55 'etaMax' : 1, # not known at present (13/102025)
56 }
57
58 params = {
59 'name': name,
60 'etmin': str(int(j_pars['etmin']*conversion_factors['etmin'])),
61 'absEta': j_pars['absEta'],
62 'etaMin': '0',
63 'etaMax': 'inf',
64 'rhad': 'unknown',
65 'reta': 'unknown',
66 'wstot': 'unknown',
67 'rhad_op': '',
68 'reta_op': '',
69 'wstot_op': '',
70 'startbit': tl['startbit'],
71 'nbits': tl['nbits']
72 }
73
74 set_eEm_discriminants(params, j_pars['flags'])
75 return params
76
77def set_eEm_discriminants(params, discs):
78 legal_ops = ('>=', '<=', '>', '<')
79 for fkey, fval in discs.items():
80 op_name = fkey+'_op'
81 op = discs[fkey]['compOp']
82 assert op in legal_ops, 'Unknown op ' + op
83 assert op_name in params
84 assert fkey in params
85 params[fkey] = str(fval['value'])
86 params[op_name] = op
87
88
void print(char *figname, TCanvas *c1)