14def getRegSelTools(flags, detNames):
15 '''
16 Get a list of RegionSelector tools for given detector look-up tables to build list of ROBs
17 in these detectors that intersect with the RoI. Special value 'All' can be also given
18 in the detNames list to include all detectors available in RegionSelector.
19 '''
20
21 _regSelToDetFlagMap = {
22
23 'TTEM': 'Calo',
24 'TTHEC': 'Calo',
25 'FCALEM': 'LAr',
26 'FCALHAD': 'LAr',
27 'TILE': 'Tile',
28 }
29
30 _regSelToDetFlagMap |= dict([(d,d) for d in ['Pixel', 'SCT', 'TRT']])
31
32 _regSelToDetFlagMap |= dict([(d,d) for d in ['MDT', 'RPC', 'TGC', 'CSC', 'MM']])
33 _regSelToDetFlagMap['STGC'] = 'sTGC'
34 if 'All' in detNames:
35 detNames = _regSelToDetFlagMap.keys()
36
37 acc = ComponentAccumulator()
38 regSelTools = []
39 for det in detNames:
40 if det=='sTGC':
41 det='STGC'
42 if det not in _regSelToDetFlagMap:
43 raise RuntimeError('Cannot add detector "' + det + '" because it is not in _regSelToDetFlagMap')
44 detFlag = 'Enable'+_regSelToDetFlagMap[det]
45 detEnabled = getattr(flags.Detector, detFlag)
46 if not detEnabled:
47 _log.debug('addRegSelDets: skip adding detector "%s" because the flag Detector.%s is False', det, detFlag)
48 continue
49 funcName = f'regSelTool_{det}_Cfg'
50 if not hasattr(RegSelToolConfig, funcName):
51 raise RuntimeError('Cannot add detector "' + det + '", RegSelToolConfig does not have a function ' + funcName)
52 func = getattr(RegSelToolConfig, funcName)
53 if not callable(func):
54 raise RuntimeError('Cannot add detector "' + det + '", RegSelToolConfig.' + funcName + ' is not callable')
55 regSelTools += [acc.popToolsAndMerge(func(flags))]
56
57 acc.setPrivateTools(regSelTools)
58 return acc
59
60