ATLAS Offline Software
RegSelToolConfig.py
Go to the documentation of this file.
1 #
2 # @file RegSelToolConfig.py
3 #
4 # configuration functions for the new RegSelTools
5 #
6 # @author sutt
7 #
8 # @date Sun 8 Mar 2020 03:27:57 GMT
9 #
10 # Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration#
11 #
12 from AthenaConfiguration.AccumulatorCache import AccumulatorCache
13 from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
14 from AthenaConfiguration.ComponentFactory import CompFactory
15 from AthenaCommon.Logging import logging
16 _log = logging.getLogger(__name__)
17 
18 def _condAlgName(detector):
19  return "RegSelCondAlg_"+detector
20 
21 def _createRegSelCondAlg( detector, CondAlgConstructor, isOnline ):
22  """
23  Creates conditions alg that provides data to a RegSel Tool
24  """
25  if detector == "TRT":
26  condAlg = CondAlgConstructor( name = _condAlgName( detector ),
27  PrintTable = False,
28  RegSelLUT = ("RegSelLUTCondData_"+detector) )
29  else:
30  condAlg = CondAlgConstructor( name = _condAlgName( detector ),
31  ManagerName = detector,
32  PrintTable = False,
33  RegSelLUT = ("RegSelLUTCondData_"+detector) )
34 
35  if detector == "MDT" and isOnline:
36  condAlg.Conditions = ""
37  elif detector == "Pixel":
38  condAlg.DetEleCollKey = "PixelDetectorElementCollection"
39  condAlg.PixelCablingCondData = "PixelCablingCondData"
40  elif detector == "SCT":
41  condAlg.DetEleCollKey = "SCT_DetectorElementCollection"
42  condAlg.SCT_CablingData = "SCT_CablingData"
43  elif detector == "ITkPixel":
44  condAlg.DetEleCollKey = "ITkPixelDetectorElementCollection"
45  # No cabling data for ITk
46  condAlg.PixelCablingCondData = ""
47  elif detector == "ITkStrip":
48  condAlg.DetEleCollKey = "ITkStripDetectorElementCollection"
49  # No cabling data for ITk
50  condAlg.SCT_CablingData = ""
51  return condAlg
52 
53 def _createRegSelTool( detector, enable ):
54  """
55  Creates RegSelTool and corresponding cond tool that is needed for its function
56 
57  If the enable flag is set - the tool is properly configured, else it is configured NOT to provide the data.
58 
59  """
60 
61 
62  tool = CompFactory.RegSelTool(name="RegSelTool_"+detector)
63 
64  # should we enable the look up table access for this subsystem ?
65 
66  if not enable:
67  # detector not configured so don't enable
68  # lookup table access
69  tool.Initialised = False
70  return tool
71 
72  # add the lookup table to retrieve
73 
74  tool.RegSelLUT = "RegSelLUTCondData_"+detector # has to match wiht appropriate RegSelCondAlg
75  tool.Initialised = True
76  return tool
77 
78 
79 def regSelToolCfg(flags, detector, algorithm, readout_geometry=None, conditions=None):
81  if readout_geometry:
82  ca.merge(readout_geometry)
83  if conditions:
84  ca.merge(conditions)
85  ca.setPrivateTools(_createRegSelTool(detector, True))
86  the_alg = _createRegSelCondAlg(detector, algorithm, flags.Common.isOnline)
87  if detector == "MDT" and flags.Common.isOnline:
88  the_alg.Conditions = ""
89  ca.addCondAlgo(the_alg)
90  return ca
91 
92 # inner detector
93 @AccumulatorCache
95  from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
96  from PixelConditionsAlgorithms.PixelConditionsConfig import PixelCablingCondAlgCfg
97  return regSelToolCfg(flags, "Pixel", CompFactory.SiRegSelCondAlg,
98  readout_geometry=PixelReadoutGeometryCfg(flags), conditions=PixelCablingCondAlgCfg(flags))
99 
100 @AccumulatorCache
102  from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
103  from SCT_Cabling.SCT_CablingConfig import SCT_CablingCondAlgCfg
104  return regSelToolCfg(flags, "SCT", CompFactory.SiRegSelCondAlg,
105  readout_geometry=SCT_ReadoutGeometryCfg(flags), conditions=SCT_CablingCondAlgCfg(flags))
106 
107 @AccumulatorCache
109  from TRT_GeoModel.TRT_GeoModelConfig import TRT_ReadoutGeometryCfg
110  return regSelToolCfg(flags, "TRT", CompFactory.TRT_RegSelCondAlg,
111  readout_geometry=TRT_ReadoutGeometryCfg(flags))
112 
113 # ITk
114 @AccumulatorCache
116  from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
117  return regSelToolCfg(flags, "ITkPixel", CompFactory.SiRegSelCondAlg,
118  readout_geometry=ITkPixelReadoutGeometryCfg(flags))
119 
120 @AccumulatorCache
122  from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
123  return regSelToolCfg(flags, "ITkStrip", CompFactory.SiRegSelCondAlg,
124  readout_geometry=ITkStripReadoutGeometryCfg(flags))
125 
126 
127 # muon spectrometer
128 @AccumulatorCache
130  from MuonConfig.MuonCablingConfig import MDTCablingConfigCfg
131  from MuonConfig.MuonCondAlgConfig import MdtCondDbAlgCfg
132  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
133 
134  conditions = ComponentAccumulator()
135  conditions.merge(MuonGeoModelCfg(flags))
136  conditions.merge(MDTCablingConfigCfg(flags))
137  if not flags.Common.isOnline:
138  conditions.merge(MdtCondDbAlgCfg(flags))
139 
140  return regSelToolCfg(flags, "MDT", CompFactory.MDT_RegSelCondAlg,
141  conditions=conditions)
142 
143 @AccumulatorCache
145  from MuonConfig.MuonCablingConfig import RPCCablingConfigCfg
146  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
147 
148  conditions = ComponentAccumulator()
149  conditions.merge(MuonGeoModelCfg(flags))
150  conditions.merge(RPCCablingConfigCfg(flags))
151 
152  return regSelToolCfg(flags, "RPC", CompFactory.RPC_RegSelCondAlg,
153  conditions=conditions)
154 
155 @AccumulatorCache
157  from MuonConfig.MuonCablingConfig import TGCCablingConfigCfg
158  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
159 
160  conditions = ComponentAccumulator()
161  conditions.merge(MuonGeoModelCfg(flags))
162  conditions.merge(TGCCablingConfigCfg(flags))
163 
164  return regSelToolCfg(flags, "TGC", CompFactory.TGC_RegSelCondAlg,
165  conditions=conditions)
166 
167 @AccumulatorCache
169  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
170  from MuonConfig.MuonCablingConfig import CSCCablingConfigCfg
171 
172  conditions = ComponentAccumulator()
173  conditions.merge(MuonGeoModelCfg(flags))
174  conditions.merge(CSCCablingConfigCfg(flags))
175 
176  return regSelToolCfg(flags, "CSC", CompFactory.CSC_RegSelCondAlg,
177  conditions=conditions)
178 
179 @AccumulatorCache
181  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
182  return regSelToolCfg(flags, "sTGC", CompFactory.sTGC_RegSelCondAlg,
183  conditions=MuonGeoModelCfg(flags))
184 
185 @AccumulatorCache
186 def regSelTool_MM_Cfg(flags):
187  from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
188  return regSelToolCfg(flags, "MM", CompFactory.MM_RegSelCondAlg,
189  conditions=MuonGeoModelCfg(flags))
190 
191 
192 # calo
193 @AccumulatorCache
195  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
196  from LArRecUtils.LArRecUtilsConfig import LArRoIMapCondAlgCfg
197 
198  conditions = ComponentAccumulator()
199  conditions.merge(LArGMCfg(flags))
200  conditions.merge(LArRoIMapCondAlgCfg(flags))
201 
202  return regSelToolCfg(flags, "TTEM", CompFactory.RegSelCondAlg_LAr,
203  conditions=conditions)
204 
205 @AccumulatorCache
207  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
208  from LArRecUtils.LArRecUtilsConfig import LArRoIMapCondAlgCfg
209 
210  conditions = ComponentAccumulator()
211  conditions.merge(LArGMCfg(flags))
212  conditions.merge(LArRoIMapCondAlgCfg(flags))
213 
214  return regSelToolCfg(flags, "TTHEC", CompFactory.RegSelCondAlg_LAr,
215  conditions=conditions)
216 
217 @AccumulatorCache
219  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
220  from LArRecUtils.LArRecUtilsConfig import LArRoIMapCondAlgCfg
221 
222  conditions = ComponentAccumulator()
223  conditions.merge(LArGMCfg(flags))
224  conditions.merge(LArRoIMapCondAlgCfg(flags))
225 
226  return regSelToolCfg(flags, "FCALEM", CompFactory.RegSelCondAlg_LAr,
227  conditions=conditions)
228 
229 @AccumulatorCache
231  from LArGeoAlgsNV.LArGMConfig import LArGMCfg
232  from LArRecUtils.LArRecUtilsConfig import LArRoIMapCondAlgCfg
233 
234  conditions = ComponentAccumulator()
235  conditions.merge(LArGMCfg(flags))
236  conditions.merge(LArRoIMapCondAlgCfg(flags))
237 
238  return regSelToolCfg(flags, "FCALHAD", CompFactory.RegSelCondAlg_LAr,
239  conditions=conditions)
240 
241 @AccumulatorCache
243  from TileByteStream.TileHid2RESrcIDConfig import TileHid2RESrcIDCondAlgCfg
244  return regSelToolCfg(flags, "TILE", CompFactory.RegSelCondAlg_Tile,
245  conditions=TileHid2RESrcIDCondAlgCfg(flags, ForHLT=True))
246 
247 
248 def regSelToolsCfg(flags, detNames):
249  '''
250  Get a list of RegionSelector tools for given detector look-up tables if the corresponding Detector flags are enabled
251  '''
252  acc = ComponentAccumulator()
253  regSelTools = []
254  for det in detNames:
255  flagName = det
256  if det in ['TTEM', 'TTHEC', 'FCALEM', 'FCALHAD']:
257  flagName = 'LAr'
258  elif det == 'TILE':
259  flagName = 'Tile'
260  elif det == 'STGC':
261  flagName = 'sTGC'
262  detFlag = f'Enable{flagName}'
263  detEnabled = getattr(flags.Detector, detFlag)
264  if not detEnabled:
265  _log.debug('regSelToolsCfg: skip adding detector "%s" because the flag Detector.%s is False', det, detFlag)
266  continue
267  funcName = f'regSelTool_{det}_Cfg'
268  func = globals().get(funcName, None)
269  if func is None:
270  raise RuntimeError('regSelToolsCfg: cannot add detector "' + det + '", RegSelToolConfig does not have a function ' + funcName)
271  regSelTools += [acc.popToolsAndMerge(func(flags))]
272  acc.setPrivateTools(regSelTools)
273  return acc
274 
275 
276 # unit test
277 if __name__=='__main__':
278  from AthenaConfiguration.MainServicesConfig import MainServicesCfg
279  from AthenaConfiguration.AllConfigFlags import initConfigFlags
280  from AthenaConfiguration import DetectorConfigFlags, TestDefaults
281  from ByteStreamCnvSvc.ByteStreamConfig import ByteStreamReadCfg
282  import sys
283 
284  flags = initConfigFlags()
285  flags.Input.Files = TestDefaults.defaultTestFiles.RAW_RUN3
286  flags.GeoModel.AtlasVersion = TestDefaults.defaultGeometryTags.RUN3
287  flags.IOVDb.GlobalTag = 'CONDBR2-BLKPA-2023-02'
288  flags.Exec.MaxEvents = 1
289  flags.Concurrency.NumThreads = 1
290 
291  # Strict dependency checking
292  flags.Input.FailOnUnknownCollections = True
293  flags.Scheduler.AutoLoadUnmetDependencies = False
294 
295  detNames = sys.argv[1:]
296  # Toggle detectors. Note that we are not toggling the geometry because this would
297  # result in un-physical configurations that we are not supporting in reco anyway.
298  DetectorConfigFlags.disableDetectors(flags, DetectorConfigFlags.allDetectors +
299  list(DetectorConfigFlags.allGroups.keys()), toggle_geometry=False)
300  DetectorConfigFlags.enableDetectors(flags, detNames, toggle_geometry=False)
301  flags.lock()
302 
303  acc = MainServicesCfg(flags)
304  acc.merge(ByteStreamReadCfg(flags))
305 
306  if 'LAr' in detNames:
307  detNames.remove('LAr')
308  detNames += ['TTEM', 'TTHEC', 'FCALEM', 'FCALHAD']
309  if 'Tile' in detNames:
310  detNames.remove('Tile')
311  detNames.append('TILE')
312  if 'sTGC' in detNames:
313  detNames.remove('sTGC')
314  detNames.append('STGC')
315 
316  toolsCfg = regSelToolsCfg(flags, detNames)
317  alg = CompFactory.RegSelToolTester(
318  RegionSelectorTools = acc.popToolsAndMerge(toolsCfg) )
319  acc.addEventAlgo(alg, sequenceName='AthAlgSeq')
320 
321  sys.exit(acc.run().isFailure())
RegSelToolConfig.regSelTool_TRT_Cfg
def regSelTool_TRT_Cfg(flags)
Definition: RegSelToolConfig.py:108
python.SCT_CablingConfig.SCT_CablingCondAlgCfg
def SCT_CablingCondAlgCfg(flags, name="SCT_CablingCondAlgFromCoraCool")
Definition: SCT_CablingConfig.py:22
RegSelToolConfig.regSelTool_MDT_Cfg
def regSelTool_MDT_Cfg(flags)
Definition: RegSelToolConfig.py:129
RegSelToolConfig._createRegSelCondAlg
def _createRegSelCondAlg(detector, CondAlgConstructor, isOnline)
Definition: RegSelToolConfig.py:21
python.JetAnalysisCommon.ComponentAccumulator
ComponentAccumulator
Definition: JetAnalysisCommon.py:302
RegSelToolConfig.regSelTool_SCT_Cfg
def regSelTool_SCT_Cfg(flags)
Definition: RegSelToolConfig.py:101
RegSelToolConfig.regSelTool_TILE_Cfg
def regSelTool_TILE_Cfg(flags)
Definition: RegSelToolConfig.py:242
RegSelToolConfig.regSelTool_FCALHAD_Cfg
def regSelTool_FCALHAD_Cfg(flags)
Definition: RegSelToolConfig.py:230
RegSelToolConfig.regSelTool_STGC_Cfg
def regSelTool_STGC_Cfg(flags)
Definition: RegSelToolConfig.py:180
TRT_GeoModelConfig.TRT_ReadoutGeometryCfg
def TRT_ReadoutGeometryCfg(flags)
Definition: TRT_GeoModelConfig.py:55
python.MuonCablingConfig.TGCCablingConfigCfg
def TGCCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:74
PixelConditionsConfig.PixelCablingCondAlgCfg
def PixelCablingCondAlgCfg(flags, name="PixelCablingCondAlg", **kwargs)
Definition: PixelConditionsConfig.py:109
RegSelToolConfig.regSelTool_ITkPixel_Cfg
def regSelTool_ITkPixel_Cfg(flags)
Definition: RegSelToolConfig.py:115
RegSelToolConfig.regSelTool_TGC_Cfg
def regSelTool_TGC_Cfg(flags)
Definition: RegSelToolConfig.py:156
python.ByteStreamConfig.ByteStreamReadCfg
def ByteStreamReadCfg(flags, type_names=None)
Definition: Event/ByteStreamCnvSvc/python/ByteStreamConfig.py:25
python.MuonCondAlgConfig.MdtCondDbAlgCfg
def MdtCondDbAlgCfg(flags, **kwargs)
Definition: MuonCondAlgConfig.py:13
python.MuonCablingConfig.MDTCablingConfigCfg
def MDTCablingConfigCfg(flags, name="MuonMDT_CablingAlg", **kwargs)
Definition: MuonCablingConfig.py:91
RegSelToolConfig.regSelToolCfg
def regSelToolCfg(flags, detector, algorithm, readout_geometry=None, conditions=None)
Definition: RegSelToolConfig.py:79
RegSelToolConfig.regSelToolsCfg
def regSelToolsCfg(flags, detNames)
Definition: RegSelToolConfig.py:248
RegSelToolConfig.regSelTool_FCALEM_Cfg
def regSelTool_FCALEM_Cfg(flags)
Definition: RegSelToolConfig.py:218
RegSelToolConfig.regSelTool_ITkStrip_Cfg
def regSelTool_ITkStrip_Cfg(flags)
Definition: RegSelToolConfig.py:121
RegSelToolConfig.regSelTool_CSC_Cfg
def regSelTool_CSC_Cfg(flags)
Definition: RegSelToolConfig.py:168
SCT_GeoModelConfig.SCT_ReadoutGeometryCfg
def SCT_ReadoutGeometryCfg(flags)
Definition: SCT_GeoModelConfig.py:42
RegSelToolConfig._createRegSelTool
def _createRegSelTool(detector, enable)
Definition: RegSelToolConfig.py:53
python.MainServicesConfig.MainServicesCfg
def MainServicesCfg(flags, LoopMgr='AthenaEventLoopMgr')
Definition: MainServicesConfig.py:256
histSizes.list
def list(name, path='/')
Definition: histSizes.py:38
RegSelToolConfig.regSelTool_TTHEC_Cfg
def regSelTool_TTHEC_Cfg(flags)
Definition: RegSelToolConfig.py:206
RegSelToolConfig.regSelTool_MM_Cfg
def regSelTool_MM_Cfg(flags)
Definition: RegSelToolConfig.py:186
RegSelToolConfig.regSelTool_Pixel_Cfg
def regSelTool_Pixel_Cfg(flags)
Definition: RegSelToolConfig.py:94
LArGMConfig.LArGMCfg
def LArGMCfg(flags)
Definition: LArGMConfig.py:8
PixelGeoModelConfig.PixelReadoutGeometryCfg
def PixelReadoutGeometryCfg(flags)
Definition: PixelGeoModelConfig.py:42
python.MuonCablingConfig.CSCCablingConfigCfg
def CSCCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:115
ITkPixelGeoModelConfig.ITkPixelReadoutGeometryCfg
def ITkPixelReadoutGeometryCfg(flags, setGeometryAlignable=False, setAlignmentFolderName="/Indet/Align")
Definition: ITkPixelGeoModelConfig.py:39
TileHid2RESrcIDConfig.TileHid2RESrcIDCondAlgCfg
def TileHid2RESrcIDCondAlgCfg(flags, source='COOL', **kwargs)
Definition: TileHid2RESrcIDConfig.py:24
python.MuonCablingConfig.RPCCablingConfigCfg
def RPCCablingConfigCfg(flags)
Definition: MuonCablingConfig.py:26
python.MuonGeometryConfig.MuonGeoModelCfg
def MuonGeoModelCfg(flags)
Definition: MuonGeometryConfig.py:28
ITkStripGeoModelConfig.ITkStripReadoutGeometryCfg
def ITkStripReadoutGeometryCfg(flags, setGeometryAlignable=False, setAlignmentFolderName="/Indet/Align")
Definition: ITkStripGeoModelConfig.py:39
python.AllConfigFlags.initConfigFlags
def initConfigFlags()
Definition: AllConfigFlags.py:19
get
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)
Definition: hcg.cxx:127
RegSelToolConfig.regSelTool_RPC_Cfg
def regSelTool_RPC_Cfg(flags)
Definition: RegSelToolConfig.py:144
python.LArRecUtilsConfig.LArRoIMapCondAlgCfg
def LArRoIMapCondAlgCfg(flags, name='LArRoIMapCondAlg', **kwargs)
Definition: LArRecUtilsConfig.py:158
RegSelToolConfig._condAlgName
def _condAlgName(detector)
Definition: RegSelToolConfig.py:18
RegSelToolConfig.regSelTool_TTEM_Cfg
def regSelTool_TTEM_Cfg(flags)
Definition: RegSelToolConfig.py:194