ATLAS Offline Software
Loading...
Searching...
No Matches
GlobalSimJsonConfig Namespace Reference

Functions

 get_all_vector_keys (conf)
 eEmEg1BDTMultCfg (flags, thrname, input, et_low, workingPoint, startbit, nbits, **kwargs)
 eEmEg1MultCfg (flags, thrname, input, et_low, workingPoint, startbit, nbits, **kwargs)
 commonMultCfg (flags, thrname, input, et_low, startbit, nbits, **kwargs)
 threshold_type_to_hypo_config (threshold)
 forward_to_subtool (substr, subval, props)
 GenericTOBProducerAlgCfg (flags, name, type, input, output, **params)
 GenericTOBProducerAlgToolCfg (flags, name, type, input, output, **params)
 TOBProvider_cfg_fn (name)
 expand_io (io)
 config_TOB_providers (flags, tobs_to_providers, input, recurse=True)
 L0HypoCfg (flags, threshold, hypo_specs, tobs_to_providers, triggerlines)
 GlobalSimJsonCfg (flags, json_name, force_config_TOBs=[], ignore_prereqs=[], print_detailed_config=False)
 main ()

Variables

dict threshold_type_configs
dict inputs_to_gsim

Function Documentation

◆ commonMultCfg()

commonMultCfg ( flags,
thrname,
input,
et_low,
startbit,
nbits,
** kwargs )

Definition at line 85 of file GlobalSimJsonConfig.py.

85def commonMultCfg(flags,thrname,input,et_low,startbit,nbits,**kwargs):
86 cfg = ComponentAccumulator()
87 alg = CompFactory.GlobalSim.GlobalSimulationAlg('GlobalSimulationAlg')
88 tool = CompFactory.GlobalSim.CommonMultAlgTool(
89 f'commonMult_{thrname}',
90 et_low = et_low,
91 TIPposition=startbit,
92 TIPwidth=nbits,
93 # Assume this is unique, otherwise we need a custom configurator
94 CommonTOBsKey = list(input.values())[0],
95 enable_dump=True,
96 )
97
98 alg.TIPwriters = [tool]
99 cfg.addEventAlgo(alg)
100
101 vector_outputs = get_all_vector_keys(tool)
102 return cfg, vector_outputs
103
104
105# Define the mapping to non-generic config functions

◆ config_TOB_providers()

config_TOB_providers ( flags,
tobs_to_providers,
input,
recurse = True )

Definition at line 254 of file GlobalSimJsonConfig.py.

254def config_TOB_providers(flags, tobs_to_providers, input, recurse=True):
255 TOB_CAs = []
256 all_vector_outputs = set()
257
258 upstream_deps = set()
259 input_list = list(input)
260 while len(input_list)>0:
261 tob = input_list.pop()
262 # For now, the GlobalLArCells are the common input for everything, which are produced upstream.
263 # Specified explicitly in the menu to make it clear that the algorithm is at the start of Global
264 if tob in inputs_to_gsim:
265 continue
266 assert tob in tobs_to_providers, f"Configuration for {tob} provider not specified in L0 menu!"
267 provider = tobs_to_providers[tob]
268 cfg_fn = TOBProvider_cfg_fn(provider['type'])
269 assert cfg_fn is not None, f"No configuration available for {provider['type']}"
270 params = dict(provider['parameters'])
271 if '.' not in provider['type']:
272 params.update(dict(
273 name = provider['name'],
274 type = provider['type'],
275 input = provider['input'],
276 output = provider['output'],
277 ))
278 TOB_cfg, vector_outputs = cfg_fn(flags,**params)
279 TOB_CAs.append(TOB_cfg)
280 all_vector_outputs |= vector_outputs
281 log.debug(f"{provider['name']} needs:")
282 log.debug(pformat(provider['input']))
283 upstream_deps |= set(i[1] for i in provider['input'])
284
285 # Organised this way, we do tiers of inputs,
286 # prioritising those needed for the hypo first,
287 # then iterating backwards
288 # Mostly only for clarity in the sequence, but
289 # useful if setting threads=0 (but why?)
290 if recurse and upstream_deps:
291 upstream_CAs, upstream_vecs = config_TOB_providers(flags, tobs_to_providers, upstream_deps, recurse=True)
292 TOB_CAs += upstream_CAs
293 all_vector_outputs |= upstream_vecs
294
295 return TOB_CAs, all_vector_outputs
296
297
298# Configure the TIPWriter that evaluates a single threshold, and the TOB providers that
299# generate the necessary inputs to execute the TIPWriter
300# The prerequisites should be shared with any TIPWriter processing the same threshold type
STL class.

◆ eEmEg1BDTMultCfg()

eEmEg1BDTMultCfg ( flags,
thrname,
input,
et_low,
workingPoint,
startbit,
nbits,
** kwargs )

Definition at line 35 of file GlobalSimJsonConfig.py.

35def eEmEg1BDTMultCfg(flags,thrname,input,et_low,workingPoint,startbit,nbits,**kwargs):
36 cfg = ComponentAccumulator()
37 alg = CompFactory.GlobalSim.GlobalSimulationAlg('GlobalSimulationAlg')
38 # This is for a working point with no eta-dependence
39 # (Run 3 convention) Eta-dependent ones would require looping over eta ranges
40 # with individual priorities
41 tool = CompFactory.GlobalSim.eEmEg1BDTMultAlgTool(
42 f'Egamma1BDTAlgTool_{thrname}',
43 et_low=et_low,
44 Eg1BDT=workingPoint['value'],
45 Eg1BDT_op=workingPoint['compOp'],
46 eEmEg1BDTTOBContainerKey=input['eEmEg1BDTTOBContainer'],
47 TIPposition=startbit,
48 TIPwidth=nbits,
49 enable_dump=True,
50 )
51 alg.TIPwriters = [tool]
52 cfg.addEventAlgo(alg)
53
54 vector_outputs = get_all_vector_keys(tool)
55 return cfg, vector_outputs
56
57

◆ eEmEg1MultCfg()

eEmEg1MultCfg ( flags,
thrname,
input,
et_low,
workingPoint,
startbit,
nbits,
** kwargs )

Definition at line 58 of file GlobalSimJsonConfig.py.

58def eEmEg1MultCfg(flags,thrname,input,et_low,workingPoint,startbit,nbits,**kwargs):
59 cfg = ComponentAccumulator()
60 alg = CompFactory.GlobalSim.GlobalSimulationAlg('GlobalSimulationAlg')
61 # This is for a working point with no eta-dependence
62 # (Run 3 convention) Eta-dependent ones would require looping over eta ranges
63 # with individual priorities
64 tool = CompFactory.GlobalSim.eEmMultAlgTool(
65 f'eEmMultAlgTool_{thrname}',
66 et_low=et_low,
67 rhad=workingPoint['rhad'],
68 rhad_op=workingPoint['rhad_op'],
69 reta=workingPoint['reta'],
70 reta_op=workingPoint['reta_op'],
71 wstot=workingPoint['wstot'],
72 wstot_op=workingPoint['wstot_op'],
73 eEmTOBs=input['eEmTOBContainer'],
74 TIPposition=startbit,
75 TIPwidth=nbits,
76 enable_dump=True,
77 )
78 alg.TIPwriters = [tool]
79 cfg.addEventAlgo(alg)
80
81 vector_outputs = get_all_vector_keys(tool)
82 return cfg, vector_outputs
83
84

◆ expand_io()

expand_io ( io)

Definition at line 225 of file GlobalSimJsonConfig.py.

225def expand_io(io):
226 expanded = []
227 if isinstance(io,str):
228 expanded.append((io,io))
229 else:
230 if isinstance(io,list):
231 expanded += [(el,el) for el in io]
232 elif isinstance(io,dict):
233 expanded += [(ttype,tname) for ttype,tname in io.items()]
234 else:
235 raise TypeError(f"Unhandled type {type(io)} for I/O definition")
236 return tuple(expanded)
237
238
239# Configure the components necessary to generate a list of required input TOBs
240# By default, recurse through the prerequisites of these components to capture all requirements.
241# Another way to do this would be to construct a DAG from the inputs/outputs,
242# then iterate through the nodes and instantiate each component.
243#
244# No need to resolve objects created upstream of GSim

◆ forward_to_subtool()

forward_to_subtool ( substr,
subval,
props )

Definition at line 117 of file GlobalSimJsonConfig.py.

117def forward_to_subtool(substr, subval, props):
118 subname, subprop = substr.split('.')
119 if '/' in subname:
120 subtype, subname = subname.split('/')
121 else:
122 subtype = subname
123 if subname not in props:
124 props[subname] = CompFactory.getComp(f"GlobalSim::{subtype}")(
125 subtype,
126 **{subprop:subval}
127 )
128 else:
129 props[subname][subprop] = subval
130
131# Generic function to instantiate an Alg that does not need special config
132# Currently assumes one instance per type
133# If we wanted multiple instances, the type would have to be added to the menu
134@AccumulatorCache

◆ GenericTOBProducerAlgCfg()

GenericTOBProducerAlgCfg ( flags,
name,
type,
input,
output,
** params )

Definition at line 135 of file GlobalSimJsonConfig.py.

135def GenericTOBProducerAlgCfg(flags, name, type, input, output, **params):
136 cfg = ComponentAccumulator()
137
138 props = {}
139 for i in input:
140 if '.' in i[0]:
141 forward_to_subtool(i[0]+'Key',i[1],props)
142 else:
143 props[i[0]+'Key'] = i[1]
144 for o in output:
145 if '.' in o[0]:
146 forward_to_subtool(o[0]+'Key',o[1],props)
147 else:
148 props[o[0]+'Key'] = o[1]
149
150 for prop, val in params.items():
151 if '.' in prop:
152 forward_to_subtool(prop,val,props)
153 else:
154 props[prop] = val
155 alg = CompFactory.getComp(f"GlobalSim::{type}")(
156 name,
157 **props)
158 cfg.addEventAlgo(alg)
159
160 # At the moment it doesn't seem like we want to write anything but it might be more
161 # consistent if we just call the function anyway?
162 vector_outputs = get_all_vector_keys(alg)
163 return cfg, vector_outputs
164
165
166# Generic function to instantiate an Alg that does not need special config
167# Currently assumes one instance per type
168# If we wanted multiple instances, the type would have to be added to the menu
169@AccumulatorCache

◆ GenericTOBProducerAlgToolCfg()

GenericTOBProducerAlgToolCfg ( flags,
name,
type,
input,
output,
** params )

Definition at line 170 of file GlobalSimJsonConfig.py.

170def GenericTOBProducerAlgToolCfg(flags, name, type, input, output, **params):
171 cfg = ComponentAccumulator()
172
173 # Construct the tool and add it to a GlobalSimulationAlg
174 props = {}
175 for i in input:
176 if '.' in i[0]:
177 forward_to_subtool(i[0]+'Key',i[1],props)
178 else:
179 props[i[0]+'Key'] = i[1]
180 for o in output:
181 if '.' in o[0]:
182 forward_to_subtool(o[0]+'Key',o[1],props)
183 else:
184 props[o[0]+'Key'] = o[1]
185
186 for prop, val in params.items():
187 if '.' in prop:
188 forward_to_subtool(prop,val,props)
189 else:
190 props[prop] = val
191 algtool = CompFactory.getComp(f"GlobalSim::{type}")(
192 name,
193 **props)
194 alg = CompFactory.GlobalSim.GlobalSimulationAlg(
195 name.replace("AlgTool","Alg"),
196 globalsim_algs = [algtool]
197 )
198 cfg.addEventAlgo(alg)
199
200 vector_outputs = get_all_vector_keys(algtool)
201 return cfg, vector_outputs
202
203
204# Ideally we use the generic configuration for everything, working
205# from conventions in the json description, however some
206# custom configurator functions may be necessary.

◆ get_all_vector_keys()

get_all_vector_keys ( conf)

Definition at line 14 of file GlobalSimJsonConfig.py.

14def get_all_vector_keys(conf):
15 key_props = set()
16 vector_outputs = set()
17 for pname,pdef in conf.getDefaultProperties().items():
18 if pname.endswith('Key'):
19 key_props.add(pname)
20 for key in key_props:
21 prop = getattr(conf,key)
22 if prop.type().startswith('std::vector') and \
23 prop.mode()=='W':
24 vector_outputs.add(f'{prop.type()}#{prop.path}')
25 return vector_outputs
26
27
28# The alg is shared between all hypo tools in order to merge the TIP word
29# For now, expect a dict extracted from json
30# Might be a threshold class later
31# The alg instantiation could also be pulled out into the upper level loop
32# The kwargs can absorb any other info in the threshold, but it seems better to
33# name all required properties explicitly
34# No need to cache, we should just be doing a series of unique thresholds

◆ GlobalSimJsonCfg()

GlobalSimJsonCfg ( flags,
json_name,
force_config_TOBs = [],
ignore_prereqs = [],
print_detailed_config = False )

Definition at line 362 of file GlobalSimJsonConfig.py.

368 ):
369 menu = json.load(open(json_name))
370 log.setLevel(INFO)
371
372 gsim_alg_prefix = "GlobalSim_"
373
374 cfg = ComponentAccumulator()
375 # This is for placing any algorithms that produce inputs required by Global
376 # that happen upstream of the hardware system
377 cfg.addSequence(CompFactory.AthSequencer('GlobalSimPrereqs'))
378 # Generate LAr Cells a la FEB2/LASP/MUX
379 cfg.addSequence(CompFactory.AthSequencer('LArPreprocessing'), parentName='GlobalSimPrereqs')
380 from GlobalSimulation.LArCellPreparationAlgConfig import LArCellPreparationAlgCfg
381 cfg.merge( LArCellPreparationAlgCfg(
382 flags,
383 name = gsim_alg_prefix+'LArCellPreparationAlg',
384 GlobalLArCellsKey='GlobalLArCells',
385 ),
386 sequenceName='LArPreprocessing'
387 )
388
389 cfg.addSequence(CompFactory.AthSequencer('GlobalSimulation'))
390
391 all_vector_outputs = set()
392
393 # Map output TOBs to their providers
394 # Where necessary, the input property name minus 'Key', which hints at the type, is specified
395 # in the json -- make a tuple with the type and name in all cases
396 # This is probably more common for inputs...
397 tobs_to_providers = {}
398 for pname, provider in menu['algorithms'].items():
399 log.debug(f"{pname} --> {provider}")
400 output = expand_io(provider['output'])
401 log.debug('Outputs:')
402 log.debug(pformat(output))
403 _provider = dict(provider)
404 if '/' in pname:
405 _provider['type'], _provider['name'] = pname.split('/',1)
406 else:
407 _provider['type'] = _provider['name'] = pname
408 if gsim_alg_prefix:
409 _provider['name'] = gsim_alg_prefix + _provider['name']
410 _provider['input'] = expand_io(provider['input'])
411 _provider['output'] = output
412 _provider['parameters'] = {}
413 _provider['parameters'].update(provider.get('parameters',{}))
414 for otuple in output:
415 assert otuple[1] not in tobs_to_providers, f"Duplicate provider for {otuple}"
416 tobs_to_providers[otuple[1]] = _provider
417
418 log.debug(pformat(tobs_to_providers))
419
420 # Get L1 items (never mind CTP logic for now) and run configuration for each threshold
421 # Let CA merging sort out all overlaps (add caching a la HLT later)
422 active_thresholds = set()
423 TIP_bits = 0
424 for item, item_dict in menu['items'].items():
425 for threshold in item_dict['thresholds']:
426 active_thresholds.add(threshold)
427
428 for threshold in active_thresholds:
429 hypo_ca, vector_outputs, hypo_dict = L0HypoCfg(
430 flags,
431 threshold,
432 hypo_specs = menu['hypotheses'],
433 tobs_to_providers = tobs_to_providers,
434 triggerlines = menu['connectors']['L0Global']['triggerlines']
435 )
436 cfg.merge(hypo_ca,'GlobalSimulation')
437 all_vector_outputs |= vector_outputs
438
439 # Check that the TIP bits don't overlap
440 hypo_bits = sum([1<<i for i in range(hypo_dict['startbit'],hypo_dict['startbit']+hypo_dict['nbits'])])
441 assert TIP_bits & hypo_bits == 0, f"TIP bits for {threshold} overlap other thresholds"
442 TIP_bits = TIP_bits + hypo_bits
443
444 # Explicitly requested TOBproviders
445 for tob in force_config_TOBs:
446 recurse = tob not in ignore_prereqs
447 log.info(f"Explicitly configuring {tob} from menu {'with' if recurse else 'without'} prereqs")
448 tob_cfgs, vector_outputs = config_TOB_providers(flags,tobs_to_providers,{tob},recurse)
449 # Try to put in serial execution order, no guarantees
450 for ca in reversed(tob_cfgs):
451 cfg.merge(ca,'GlobalSimulation')
452 all_vector_outputs |= vector_outputs
453
454 # Record diagnostic data to output stream (auto-extract from algs?)
455 from OutputStreamAthenaPool.OutputStreamConfig import addToAOD
456 cfg.merge(addToAOD(flags,all_vector_outputs))
457
458 if print_detailed_config:
459 cfg.printConfig(summariseProps=True)
460
461 return cfg
462
463

◆ L0HypoCfg()

L0HypoCfg ( flags,
threshold,
hypo_specs,
tobs_to_providers,
triggerlines )

Definition at line 301 of file GlobalSimJsonConfig.py.

301def L0HypoCfg(flags, threshold, hypo_specs, tobs_to_providers, triggerlines):
302
303 cfg = ComponentAccumulator()
304
305 # The menu describes the common properties of threshold types and specific instances
306 # Extract all information for the current threshold instance
307 hypo_dict = None
308 for hypo_type, hypo_type_dict in hypo_specs.items():
309 if threshold in hypo_type_dict['thresholds']:
310 this_thr = hypo_type_dict['thresholds'][threshold]
311 hypo_dict = dict(this_thr)
312 hypo_dict['type'] = hypo_type
313 hypo_dict['input'] = hypo_type_dict['input']
314 log.info(f" Menu contains specs for {threshold}: {this_thr}")
315 if 'workingPoint' in hypo_dict:
316 hypo_dict['workingPoint'] = hypo_type_dict['workingPoints'][this_thr['workingPoint']]
317
318 for line in triggerlines:
319 if threshold == line['name']:
320 hypo_dict['startbit'] = line['startbit']
321 hypo_dict['nbits'] = line['nbits']
322 break
323 break
324 assert hypo_dict is not None, f"Threshold {threshold} not in L0 menu"
325 assert 'startbit' in hypo_dict, f"Threshold {threshold} missing TIP position"
326
327 log.debug(pformat(hypo_dict))
328
329 # Put all the inputs in a supersequence to run before the single hypo alg
330 cfg.addSequence(CompFactory.AthSequencer('GlobalSimulationInputs'))
331 # This level mainly just makes clear which algs are needed for a given threshold
332 # Many algs will be shared
333 seqname = f"GlobalSimulationInputs_{hypo_dict['type']}"
334 cfg.addSequence(CompFactory.AthSequencer(seqname),parentName='GlobalSimulationInputs')
335
336 all_vector_outputs = set()
337 # Grab the corresponding configuration function
338 # This should interpret the threshold data to generate a single hypo instance
339 hypo, vector_outputs = threshold_type_to_hypo_config(hypo_dict['type'])(flags,threshold,**hypo_dict)
340 all_vector_outputs |= vector_outputs
341
342 # Configure input algs for multiplicity
343 # Iterate backwards to their prerequisites
344 # Collect the globalsim_algs (TOB writers) for GlobalSimulationAlg
345 # For aesthetic reasons (and for threads=0), collect the inputs and reverse order
346 # Expand here to treat all formats in the json consistently
347 inputs = expand_io(hypo_dict['input'])
348
349 all_input_CAs, input_vector_outputs = config_TOB_providers(flags, tobs_to_providers, [i[1] for i in inputs])
350 all_vector_outputs |= input_vector_outputs
351
352 for ca in reversed(all_input_CAs):
353 cfg.merge(ca,seqname)
354
355 # Merge one GlobalSimulationAlg that runs all TIP writers
356 cfg.merge(hypo)
357
358 # Keep the hypo_dict around for diagnostics
359 return cfg, all_vector_outputs, hypo_dict
360
361

◆ main()

main ( )

Definition at line 464 of file GlobalSimJsonConfig.py.

464def main():
465 from AthenaConfiguration.AllConfigFlags import initConfigFlags
466 flags = initConfigFlags()
467
468 # Standard argparse.ArgumentParser initialisation options can be provided here
469 parser = flags.getArgumentParser(
470 prog='GlobalSimJsonConfig',
471 description='Prototype Global Simulation steering from json menu',
472 epilog='Give us 25Gbps or give us ...'
473 )
474 parser.add_argument(
475 '-j','--config-json',
476 default='GlobalSimulation/L0GlobalTestMenuv1_Khoo.json',
477 help='The input json config (L0 menu prototype)'
478 )
479 parser.add_argument(
480 '--force-TOBs',
481 default=[],
482 nargs='+',
483 help='List of TOBs to force on'
484 )
485 parser.add_argument(
486 '--ignore-prereqs',
487 default=[],
488 nargs='+',
489 help='List of forced TOBs for which prerequisites should be ignored'
490 )
491
492 args = flags.fillFromArgs(parser=parser)
493 flags.lock()
494
495 from AthenaConfiguration.MainServicesConfig import MainServicesCfg
496 cfg = MainServicesCfg(flags)
497
498 from AthenaConfiguration.Enums import Format
499 if flags.Input.Format==Format.POOL:
500 from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg
501 cfg.merge(PoolReadCfg(flags))
502 elif flags.Input.Format==Format.BS:
503 from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
504 cfg.merge(ByteStreamReadCfg(flags))
505
506 from TrigConfigSvc.TrigConfigSvcCfg import L1ConfigSvcCfg
507 cfg.merge(L1ConfigSvcCfg(flags))
508
509 from L1CaloFEXByteStream.L1CaloFEXByteStreamConfig import eFexByteStreamToolCfg, jFexRoiByteStreamToolCfg, gFexByteStreamToolCfg
510 decoderTools = []
511 if flags.Trigger.L1.doeFex: decoderTools += [cfg.popToolsAndMerge(eFexByteStreamToolCfg(flags=flags,name='eFexBSDecoderTool',writeBS=False))]
512 if flags.Trigger.L1.dojFex: decoderTools += [cfg.popToolsAndMerge(jFexRoiByteStreamToolCfg(flags=flags,name="jFexBSDecoderTool",writeBS=False))]
513 if flags.Trigger.L1.dogFex: decoderTools += [cfg.popToolsAndMerge(gFexByteStreamToolCfg(flags=flags,name="gFexBSDecoderTool",writeBS=False))]
514 cfg.addEventAlgo(CompFactory.L1TriggerByteStreamDecoderAlg(
515 name="L1TriggerByteStreamDecoder",
516 DecoderTools=decoderTools
517 ))
518 else:
519 raise RuntimeError(f'Unrecognised input file format {flags.Input.Format} for {flags.Input.Files}')
520
521 from TrigValTools.TrigValSteering.Common import find_file_in_path
522 jsonpath = find_file_in_path(args.config_json, 'DATAPATH')
523 cfg.merge( GlobalSimJsonCfg(flags, jsonpath, args.force_TOBs, args.ignore_prereqs, print_detailed_config=True) )
524
525 cfg.run()
526
527
528
int main()
Definition hello.cxx:18

◆ threshold_type_to_hypo_config()

threshold_type_to_hypo_config ( threshold)

Definition at line 111 of file GlobalSimJsonConfig.py.

111def threshold_type_to_hypo_config(threshold):
112 return threshold_type_configs.get(threshold,commonMultCfg)
113
114
115# Forward configuration to a subtool
116# One level of nesting here, make recursive if we need more

◆ TOBProvider_cfg_fn()

TOBProvider_cfg_fn ( name)

Definition at line 207 of file GlobalSimJsonConfig.py.

207def TOBProvider_cfg_fn(name):
208 if '.' in name:
209 # Interpret as a python function in a specified module
210 modulename, cfgname = name.rsplit('.',1)
211 module = importlib.import_module(modulename)
212 return lambda flags, **params: (getattr(module,cfgname)(flags, **params), set())
213 elif name.endswith('AlgTool'):
214 return GenericTOBProducerAlgToolCfg
215 elif name.endswith('Alg'):
216 return GenericTOBProducerAlgCfg
217 else:
218 return None
219
220
221# Handle different ways of specifying input/output names for handle properties,
222# converting the menu representation into a list of pairs
223# - Defaults to assuming we set [TOBContainerName]Key = "[TOBContainerName]"
224# - If the property name does not match the container name, then use the menu mapping

Variable Documentation

◆ inputs_to_gsim

dict GlobalSimJsonConfig.inputs_to_gsim
Initial value:
= {
'AllCalo',
'GlobalLArCells',
'L1_eEMRoI',
'L1_eEMRoI_ReSim',
'L1_jFexSRJetRoI',
'L1_jFexSRJetRoI_ReSim',
'L1_gFexRhoRoI',
}

Definition at line 245 of file GlobalSimJsonConfig.py.

◆ threshold_type_configs

dict GlobalSimJsonConfig.threshold_type_configs
Initial value:
= {
'eEMBDT': eEmEg1BDTMultCfg,
'eEMBeeDeeTee': eEmEg1BDTMultCfg,
'eEMEg1': eEmEg1MultCfg,
}

Definition at line 106 of file GlobalSimJsonConfig.py.