12from AthenaConfiguration.AccumulatorCache
import AccumulatorCache
13from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
14from AthenaConfiguration.ComponentFactory
import CompFactory
15from AthenaCommon.Logging
import logging
16_log = logging.getLogger(__name__)
19 return "RegSelCondAlg_"+detector
23 Creates conditions alg that provides data to a RegSel Tool
26 condAlg = CondAlgConstructor( name =
_condAlgName( detector ),
27 PrintTable = printTable,
28 RegSelLUT = (
"RegSelLUTCondData_"+detector) )
30 condAlg = CondAlgConstructor( name =
_condAlgName( detector ),
31 ManagerName = detector,
32 PrintTable = printTable,
33 RegSelLUT = (
"RegSelLUTCondData_"+detector) )
35 if detector ==
"MDT" and not useMdtDcsData:
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"
46 condAlg.PixelCablingCondData =
""
47 elif detector ==
"ITkStrip":
48 condAlg.DetEleCollKey =
"ITkStripDetectorElementCollection"
50 condAlg.SCT_CablingData =
""
55 Creates RegSelTool and corresponding cond tool that is needed for its function
57 If the enable flag is set - the tool is properly configured, else it is configured NOT to provide the data.
62 tool = CompFactory.RegSelTool(name=
"RegSelTool_"+detector)
69 tool.Initialised =
False
74 tool.RegSelLUT =
"RegSelLUTCondData_"+detector
75 tool.Initialised =
True
79def regSelToolCfg(flags, detector, algorithm, readout_geometry=None, conditions=None):
80 ca = ComponentAccumulator()
82 ca.merge(readout_geometry)
89 if flags.hasFlag(
"PrintLUT"):
90 printLUT = flags.PrintLUT
92 the_alg =
_createRegSelCondAlg(detector, algorithm, flags.Muon.useMdtDcsData, printTable=printLUT )
93 ca.addCondAlgo(the_alg)
100 from PixelGeoModel.PixelGeoModelConfig
import PixelReadoutGeometryCfg
101 from PixelConditionsAlgorithms.PixelConditionsConfig
import PixelCablingCondAlgCfg
102 return regSelToolCfg(flags,
"Pixel", CompFactory.SiRegSelCondAlg,
103 readout_geometry=PixelReadoutGeometryCfg(flags), conditions=PixelCablingCondAlgCfg(flags))
107 from SCT_GeoModel.SCT_GeoModelConfig
import SCT_ReadoutGeometryCfg
108 from SCT_Cabling.SCT_CablingConfig
import SCT_CablingCondAlgCfg
109 return regSelToolCfg(flags,
"SCT", CompFactory.SiRegSelCondAlg,
110 readout_geometry=SCT_ReadoutGeometryCfg(flags), conditions=SCT_CablingCondAlgCfg(flags))
114 from TRT_GeoModel.TRT_GeoModelConfig
import TRT_ReadoutGeometryCfg
115 return regSelToolCfg(flags,
"TRT", CompFactory.TRT_RegSelCondAlg,
116 readout_geometry=TRT_ReadoutGeometryCfg(flags))
121 from PixelGeoModelXml.ITkPixelGeoModelConfig
import ITkPixelReadoutGeometryCfg
122 return regSelToolCfg(flags,
"ITkPixel", CompFactory.SiRegSelCondAlg,
123 readout_geometry=ITkPixelReadoutGeometryCfg(flags))
127 from StripGeoModelXml.ITkStripGeoModelConfig
import ITkStripReadoutGeometryCfg
128 return regSelToolCfg(flags,
"ITkStrip", CompFactory.SiRegSelCondAlg,
129 readout_geometry=ITkStripReadoutGeometryCfg(flags))
135 from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg
136 from MuonConfig.MuonCondAlgConfig
import MdtCondDbAlgCfg
137 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
139 conditions = ComponentAccumulator()
140 conditions.merge(MuonGeoModelCfg(flags))
141 conditions.merge(MDTCablingConfigCfg(flags))
142 if flags.Muon.useMdtDcsData:
143 conditions.merge(MdtCondDbAlgCfg(flags))
145 return regSelToolCfg(flags,
"MDT", CompFactory.MDT_RegSelCondAlg,
146 conditions=conditions)
150 from MuonConfig.MuonCablingConfig
import RPCCablingConfigCfg
151 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
153 conditions = ComponentAccumulator()
154 conditions.merge(MuonGeoModelCfg(flags))
155 conditions.merge(RPCCablingConfigCfg(flags))
157 return regSelToolCfg(flags,
"RPC", CompFactory.RPC_RegSelCondAlg,
158 conditions=conditions)
162 from MuonConfig.MuonCablingConfig
import TGCCablingConfigCfg
163 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
165 conditions = ComponentAccumulator()
166 conditions.merge(MuonGeoModelCfg(flags))
167 conditions.merge(TGCCablingConfigCfg(flags))
169 return regSelToolCfg(flags,
"TGC", CompFactory.TGC_RegSelCondAlg,
170 conditions=conditions)
174 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
175 from MuonConfig.MuonCablingConfig
import CSCCablingConfigCfg
177 conditions = ComponentAccumulator()
178 conditions.merge(MuonGeoModelCfg(flags))
179 conditions.merge(CSCCablingConfigCfg(flags))
181 return regSelToolCfg(flags,
"CSC", CompFactory.CSC_RegSelCondAlg,
182 conditions=conditions)
186 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
187 return regSelToolCfg(flags,
"sTGC", CompFactory.sTGC_RegSelCondAlg,
188 conditions=MuonGeoModelCfg(flags))
192 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
193 return regSelToolCfg(flags,
"MM", CompFactory.MM_RegSelCondAlg,
194 conditions=MuonGeoModelCfg(flags))
200 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
201 from LArRecUtils.LArRecUtilsConfig
import LArRoIMapCondAlgCfg
203 conditions = ComponentAccumulator()
204 conditions.merge(LArGMCfg(flags))
205 conditions.merge(LArRoIMapCondAlgCfg(flags))
207 return regSelToolCfg(flags,
"TTEM", CompFactory.RegSelCondAlg_LAr,
208 conditions=conditions)
212 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
213 from LArRecUtils.LArRecUtilsConfig
import LArRoIMapCondAlgCfg
215 conditions = ComponentAccumulator()
216 conditions.merge(LArGMCfg(flags))
217 conditions.merge(LArRoIMapCondAlgCfg(flags))
219 return regSelToolCfg(flags,
"TTHEC", CompFactory.RegSelCondAlg_LAr,
220 conditions=conditions)
224 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
225 from LArRecUtils.LArRecUtilsConfig
import LArRoIMapCondAlgCfg
227 conditions = ComponentAccumulator()
228 conditions.merge(LArGMCfg(flags))
229 conditions.merge(LArRoIMapCondAlgCfg(flags))
231 return regSelToolCfg(flags,
"FCALEM", CompFactory.RegSelCondAlg_LAr,
232 conditions=conditions)
236 from LArGeoAlgsNV.LArGMConfig
import LArGMCfg
237 from LArRecUtils.LArRecUtilsConfig
import LArRoIMapCondAlgCfg
239 conditions = ComponentAccumulator()
240 conditions.merge(LArGMCfg(flags))
241 conditions.merge(LArRoIMapCondAlgCfg(flags))
243 return regSelToolCfg(flags,
"FCALHAD", CompFactory.RegSelCondAlg_LAr,
244 conditions=conditions)
248 from TileByteStream.TileHid2RESrcIDConfig
import TileHid2RESrcIDCondAlgCfg
249 return regSelToolCfg(flags,
"TILE", CompFactory.RegSelCondAlg_Tile,
250 conditions=TileHid2RESrcIDCondAlgCfg(flags, ForHLT=
True))
255 Get a list of RegionSelector tools for given detector look-up tables if the corresponding Detector flags are enabled
257 acc = ComponentAccumulator()
261 if det
in [
'TTEM',
'TTHEC',
'FCALEM',
'FCALHAD']:
267 detFlag = f
'Enable{flagName}'
268 detEnabled = getattr(flags.Detector, detFlag)
270 _log.debug(
'regSelToolsCfg: skip adding detector "%s" because the flag Detector.%s is False', det, detFlag)
272 funcName = f
'regSelTool_{det}_Cfg'
273 func = globals().
get(funcName,
None)
275 raise RuntimeError(
'regSelToolsCfg: cannot add detector "' + det +
'", RegSelToolConfig does not have a function ' + funcName)
276 regSelTools += [acc.popToolsAndMerge(func(flags))]
277 acc.setPrivateTools(regSelTools)
282if __name__==
'__main__':
283 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
284 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
285 from AthenaConfiguration
import DetectorConfigFlags, TestDefaults
286 from ByteStreamCnvSvc.ByteStreamConfig
import ByteStreamReadCfg
289 flags = initConfigFlags()
290 flags.Input.Files = TestDefaults.defaultTestFiles.RAW_RUN3
291 flags.GeoModel.AtlasVersion = TestDefaults.defaultGeometryTags.RUN3
292 flags.IOVDb.GlobalTag = TestDefaults.defaultConditionsTags.RUN3_DATA23
293 flags.Exec.MaxEvents = 1
294 flags.Concurrency.NumThreads = 1
297 flags.Input.FailOnUnknownCollections =
True
298 flags.Scheduler.AutoLoadUnmetDependencies =
False
303 flags.addFlag(
"PrintLUT",
True )
305 detNames = sys.argv[1:]
310 DetectorConfigFlags.disableDetectors(flags, DetectorConfigFlags.allDetectors +
311 list(DetectorConfigFlags.allGroups.keys()), toggle_geometry=
False)
313 DetectorConfigFlags.enableDetectors(flags, detNames, toggle_geometry=
False)
317 acc = MainServicesCfg(flags)
318 acc.merge(ByteStreamReadCfg(flags))
320 if 'LAr' in detNames:
321 detNames.remove(
'LAr')
322 detNames += [
'TTEM',
'TTHEC',
'FCALEM',
'FCALHAD']
323 if 'Tile' in detNames:
324 detNames.remove(
'Tile')
325 detNames.append(
'TILE')
326 if 'sTGC' in detNames:
327 detNames.remove(
'sTGC')
328 detNames.append(
'STGC')
332 alg = CompFactory.RegSelToolTester(
333 RegionSelectorTools = acc.popToolsAndMerge(toolsCfg) )
335 acc.addEventAlgo(alg, sequenceName=
'AthAlgSeq')
337 sys.exit(acc.run().isFailure())
T * get(TKey *tobj)
get a TObject* from a TKey* (why can't a TObject be a TKey?)