3from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
4from AthenaConfiguration.ComponentFactory
import CompFactory
5from AthenaConfiguration.Enums
import Format
10 MdtCache =
"MdtPrdCache"
11 CscCache =
"CscPrdCache"
12 CscStripCache =
"CscStripPrdCache"
13 RpcCache =
"RpcPrdCache"
14 TgcCache =
"TgcPrdCache"
15 sTgcCache =
"sTgcPrdCache"
16 MmCache =
"MmPrdCache"
17 RpcCoinCache =
"RpcCoinCache"
18 TgcCoinCache =
"TgcCoinCache"
28 acc = ComponentAccumulator()
30 MuonPRDCacheCreator=CompFactory.MuonPRDCacheCreator
31 cacheCreator =
MuonPRDCacheCreator(CscStripCacheKey = (MuonPrdCacheNames.CscStripCache
if flags.Detector.GeometryCSC
else ""),
32 MdtCacheKey = MuonPrdCacheNames.MdtCache,
33 CscCacheKey = (MuonPrdCacheNames.CscCache
if flags.Detector.GeometryCSC
else ""),
34 RpcCacheKey = MuonPrdCacheNames.RpcCache,
35 TgcCacheStr = MuonPrdCacheNames.TgcCache,
36 sTgcCacheKey = (MuonPrdCacheNames.sTgcCache
if flags.Detector.GeometrysTGC
else ""),
37 MmCacheKey = (MuonPrdCacheNames.MmCache
if flags.Detector.GeometryMM
else ""),
38 TgcCoinCacheStr = MuonPrdCacheNames.TgcCoinCache,
39 RpcCoinCacheKey = MuonPrdCacheNames.RpcCoinCache,
42 acc.addEventAlgo( cacheCreator, primary=
True )
46 result = ComponentAccumulator()
48 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
49 result.merge(MuonGeoModelCfg(flags))
50 if flags.Muon.usePhaseIIGeoSetup:
51 from ActsAlignmentAlgs.AlignmentAlgsConfig
import ActsGeometryContextAlgCfg
52 result.merge(ActsGeometryContextAlgCfg(flags))
54 kwargs.setdefault(
"DoSeededDecoding", flags.Trigger.doHLT )
55 the_alg = CompFactory.MuonRdoToPrepDataAlg(name, **kwargs)
56 result.addEventAlgo(the_alg, primary =
True)
62 result = ComponentAccumulator()
65 if flags.Input.isMC
and flags.Muon.usePhaseIIGeoSetup
and \
66 len([x
for x
in flags.Input.TypedCollections
if x.find(
"RpcPadContainer#") != -1]):
68 from MuonConfig.MuonByteStreamCnvTestConfig
import RpcRdoToRpcDigitCfg, NrpcDigitToNrpcRDOCfg
71 if RDOContainer: cnv_args.setdefault(
"RpcRdoContainer", RDOContainer)
73 result.merge(RpcRdoToRpcDigitCfg(flags,
74 name=
"RpcRdoDigitPatchAlg" + suffix,
75 RpcDigitContainer=
"CnvRpcDigits",
78 result.merge(NrpcDigitToNrpcRDOCfg(flags,
79 name=
"RpcBackConverterAlg" + suffix,
80 RpcDigitContainer=
"CnvRpcDigits",
81 NrpcRdoKey=
"CnvRpcRDOs"))
82 kwargs.setdefault(
"RpcRdoContainer",
"CnvRpcRDOs")
86 kwargs.setdefault(
"RpcRdoContainer", RDOContainer)
88 if flags.Input.isMC
and flags.Muon.usePhaseIIGeoSetup:
89 from MuonConfig.MuonCablingConfig
import NRPCCablingConfigCfg
90 result.merge(NRPCCablingConfigCfg(flags))
91 from AthenaConfiguration.Enums
import LHCPeriod
92 kwargs.setdefault(
"decode2DStrips", flags.GeoModel.Run >= LHCPeriod.Run4)
93 if not kwargs[
"decode2DStrips"]:
94 kwargs.setdefault(
"OutputContainer",
"xRpcMeasurements")
95 the_tool = CompFactory.MuonR4.RpcRdoToRpcPrepDataTool(name=
"RpcPrepDataProviderTool", **kwargs)
96 result.setPrivateTools(the_tool)
99 from MuonConfig.MuonCablingConfig
import RPCLegacyCablingConfigCfg
100 result.merge(RPCLegacyCablingConfigCfg(flags))
102 if not flags.Input.isMC:
103 kwargs[
"reduceCablingOverlap"] =
True
104 kwargs[
"produceRpcCoinDatafromTriggerWords"] =
True
105 kwargs[
"overlap_timeTolerance"] = 1000
106 kwargs[
"solvePhiAmbiguities"] =
True
107 kwargs[
"etaphi_coincidenceTime"] = 1000
108 if not flags.Trigger.doHLT:
109 kwargs[
"RpcPrdContainerCacheKey"] =
""
110 kwargs[
"RpcCoinDataContainerCacheKey"] =
""
112 from MuonConfig.MuonCondAlgConfig
import RpcCondDbAlgCfg
113 result.merge(RpcCondDbAlgCfg(flags))
115 kwargs[
"RPCInfoFromDb"] =
False
117 if not flags.Muon.enableNRPC:
118 kwargs[
"NrpcInputCollection"] =
""
120 kwargs[
"xAODKey"] =
"xRpcMeasurements" if flags.Muon.writexAODPRD
or \
121 flags.Muon.usePhaseIIGeoSetup
else ""
128 if not flags.Input.isMC
and (flags.Muon.MuonTrigger
or flags.Input.RunNumbers[0] >= 454434):
129 kwargs[
"timeShift"] = 37.5
131 if flags.Muon.MuonTrigger:
132 kwargs[
"RdoDecoderTool"] = CompFactory.Muon.RpcRDO_Decoder(
"RpcRDO_Decoder", BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ)
134 kwargs.setdefault(
"isMC", flags.Input.isMC)
135 the_tool = CompFactory.Muon.RpcRdoToPrepDataToolMT(name=
"RpcPrepDataProviderTool",**kwargs)
136 result.setPrivateTools(the_tool)
141 acc = ComponentAccumulator()
143 suffix = name[name.find(
"_") :]
if name.find(
"_") != -1
else ""
146 kwargs.setdefault(
"DecodingTool", acc.popToolsAndMerge(
RpcRdoToPrepDataToolCfg(flags, suffix=suffix, RDOContainer=RDOContainer)))
148 from RegionSelector.RegSelToolConfig
import regSelTool_RPC_Cfg
149 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_RPC_Cfg(flags)))
150 kwargs.setdefault(
"useROBs",
False)
156 if flags.Muon.usePhaseIIGeoSetup
and flags.Input.isMC:
157 from xAODMuonTrkPrepDataCnv.MuonPrepDataCnvCfg
import xRpcToRpcPrepDataCnvAlgCfg
158 acc.merge(xRpcToRpcPrepDataCnvAlgCfg(flags, name=f
"xAODRpcToPrepDataCnvAlg{suffix}"))
159 from AthenaConfiguration.Enums
import LHCPeriod
160 if flags.GeoModel.Run >= LHCPeriod.Run4:
161 from xAODMuonViewAlgs.ViewAlgsConfig
import RpcMeasViewAlgCfg
162 acc.merge(RpcMeasViewAlgCfg(flags, name=f
"RpcMeasViewAlg{suffix}"))
167 acc = ComponentAccumulator()
170 from MuonConfig.MuonCablingConfig
import TGCCablingConfigCfg
171 acc.merge(TGCCablingConfigCfg(flags))
175 if not flags.Trigger.doHLT:
176 tool_args.setdefault(
"PrdCacheString",
"")
177 tool_args.setdefault(
"CoinCacheString",
"")
178 tool_args.setdefault(
"xAODKey",
"xTgcStrips" if flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup
else "")
180 if RDOContainer: tool_args.setdefault(
"RDOContainer", RDOContainer)
181 kwargs.setdefault(
"DecodingTool", CompFactory.Muon.TgcRdoToPrepDataToolMT(name=
"TgcPrepDataProviderTool", **tool_args))
184 from RegionSelector.RegSelToolConfig
import regSelTool_TGC_Cfg
185 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_TGC_Cfg(flags)))
186 kwargs.setdefault(
"useROBs",
False)
194 acc = ComponentAccumulator()
195 the_tool = CompFactory.Muon.TgcPrepDataReplicationToolAllBCto3BC(name, **kwargs)
196 acc.setPrivateTools(the_tool)
200 acc = ComponentAccumulator()
202 acc.addEventAlgo(CompFactory.Muon.TgcPrepDataReplicationAlg(name, **kwargs))
207 result = ComponentAccumulator()
208 kwargs.setdefault(
"PrdCacheKey" , MuonPrdCacheNames.sTgcCache
if flags.Muon.MuonTrigger
else "")
209 kwargs.setdefault(
"UseR4DetMgr", flags.Muon.usePhaseIIGeoSetup)
210 if flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup:
211 kwargs.setdefault(
"xAODStripKey",
"xAODsTgcStrips")
212 kwargs.setdefault(
"xAODWireKey",
"xAODsTgcWires")
213 kwargs.setdefault(
"xAODPadKey",
"xAODsTgcPads")
215 from MuonConfig.MuonRecToolsConfig
import SimpleSTgcClusterBuilderToolCfg
216 kwargs.setdefault(
"ClusterBuilderTool",result.popToolsAndMerge(SimpleSTgcClusterBuilderToolCfg(flags)))
217 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
218 kwargs.setdefault(
"NSWCalibTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
219 the_tool = CompFactory.Muon.sTgcRdoToPrepDataToolMT(name, **kwargs)
220 result.setPrivateTools(the_tool)
225 acc = ComponentAccumulator()
229 from RegionSelector.RegSelToolConfig
import regSelTool_STGC_Cfg
230 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_STGC_Cfg(flags)))
231 kwargs.setdefault(
"useROBs",
False)
236 if flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup:
237 suffix = name[name.find(
"_") :]
if name.find(
"_") != -1
else ""
238 from xAODMuonViewAlgs.ViewAlgsConfig
import sTgcMeasViewAlgCfg
239 acc.merge(sTgcMeasViewAlgCfg(flags, name=f
"sTgcMeasViewAlg{suffix}"))
245 result = ComponentAccumulator()
246 kwargs.setdefault(
"PrdCacheKey" , MuonPrdCacheNames.MmCache
if flags.Trigger.doHLT
else "")
248 from MuonConfig.MuonRecToolsConfig
import SimpleMMClusterBuilderToolCfg
249 kwargs.setdefault(
"ClusterBuilderTool",result.popToolsAndMerge(SimpleMMClusterBuilderToolCfg(flags)))
250 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
251 kwargs.setdefault(
"NSWCalibTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
252 kwargs[
"xAODKey"] =
"xAODMMClusters" if flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup
else ""
253 kwargs[
"UseR4DetMgr"] = flags.Muon.usePhaseIIGeoSetup
254 the_tool = CompFactory.Muon.MmRdoToPrepDataToolMT(name, **kwargs)
255 result.setPrivateTools(the_tool)
260 acc = ComponentAccumulator()
264 from RegionSelector.RegSelToolConfig
import regSelTool_MM_Cfg
265 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_MM_Cfg(flags)))
266 kwargs.setdefault(
"useROBs",
False)
273 acc = ComponentAccumulator()
274 from MuonConfig.MuonCalibrationConfig
import MdtCalibrationToolCfg
279 tool_kwargs.setdefault(
'UseTwin',
True)
280 if flags.IOVDb.DatabaseInstance ==
'COMP200':
281 tool_kwargs[
'UseTwin'] =
False
284 from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg, MdtTwinTubeMapCondAlgCfg
285 acc.merge(MDTCablingConfigCfg(flags))
286 if tool_kwargs[
'UseTwin']:
287 acc.merge(MdtTwinTubeMapCondAlgCfg(flags))
289 writexAOD = flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup
290 tool_kwargs[
"xAODKey"] =
"xMdtDriftCircles" if writexAOD
else ""
291 tool_kwargs[
"xAODTwinKey"] =
"xMdtTwinDriftCircles" if writexAOD
else ""
293 tool_kwargs[
"UseR4DetMgr"] = flags.Muon.usePhaseIIGeoSetup
294 tool_kwargs[
"CalibrationTool"] = acc.popToolsAndMerge(MdtCalibrationToolCfg(flags, TimeWindowSetting = 2,
295 DoPropagationCorrection =
False))
296 if RDOContainer: tool_kwargs[
"RDOContainer"] = RDOContainer
298 kwargs.setdefault(
"DecodingTool", CompFactory.Muon.MdtRdoToPrepDataToolMT(name=
"MdtPrepDataProviderTool", **tool_kwargs))
301 from RegionSelector.RegSelToolConfig
import regSelTool_MDT_Cfg
302 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_MDT_Cfg(flags)))
307 suffix = name[name.find(
"_") :]
if name.find(
"_") != -1
else ""
308 from xAODMuonViewAlgs.ViewAlgsConfig
import MdtMeasViewAlgCfg
309 acc.merge(MdtMeasViewAlgCfg(flags, name=f
"MdtMeasViewAlg{suffix}"))
314 acc = ComponentAccumulator()
317 from MuonConfig.MuonCablingConfig
import CSCCablingConfigCfg
318 acc.merge(CSCCablingConfigCfg(flags))
320 from MuonConfig.MuonCondAlgConfig
import CscCondDbAlgCfg
321 acc.merge(CscCondDbAlgCfg(flags))
325 kwargs.setdefault(
"useROBs",
False)
326 kwargs.setdefault(
"DecodingTool", CompFactory.Muon.CscRdoToCscPrepDataToolMT(name=
"CscPrepDataProviderTool"))
328 kwargs[
"DecodingTool"].RDOContainer = RDOContainer
330 from RegionSelector.RegSelToolConfig
import regSelTool_CSC_Cfg
331 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_CSC_Cfg(flags)))
339 acc = ComponentAccumulator()
340 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
341 from MuonConfig.MuonSegmentFindingConfig
import CalibCscStripFitterCfg, QratCscClusterFitterCfg, CscAlignmentTool
342 from MuonConfig.MuonCalibrationConfig
import CscCalibToolCfg
346 MuonIdHelperSvc = acc.getPrimaryAndMerge( MuonIdHelperSvcCfg(flags) )
347 CalibCscStripFitter = acc.getPrimaryAndMerge( CalibCscStripFitterCfg(flags) )
348 QratCscClusterFitter = acc.getPrimaryAndMerge( QratCscClusterFitterCfg(flags) )
349 SimpleCscClusterFitter = CompFactory.SimpleCscClusterFitter(CscAlignmentTool =
CscAlignmentTool(flags) )
350 CscSplitClusterFitter = CompFactory.CscSplitClusterFitter( precision_fitter = QratCscClusterFitter,
351 default_fitter = SimpleCscClusterFitter )
352 CscCalibTool = acc.getPrimaryAndMerge( CscCalibToolCfg(flags) )
353 CscThresholdClusterBuilderTool=CompFactory.CscThresholdClusterBuilderTool
355 MuonIdHelperSvc = MuonIdHelperSvc,
356 strip_fitter = CalibCscStripFitter,
357 precision_fitter = QratCscClusterFitter,
358 default_fitter = SimpleCscClusterFitter,
359 split_fitter = CscSplitClusterFitter,
360 cscCalibTool = CscCalibTool)
363 CscThresholdClusterBuilder=CompFactory.CscThresholdClusterBuilder
365 cluster_builder = CscClusterBuilderTool,
366 MuonIdHelperSvc = MuonIdHelperSvc
368 acc.addEventAlgo(CscClusterBuilder)
374 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
375 result = ComponentAccumulator()
376 result.merge(MuonIdHelperSvcCfg(flags))
378 if not flags.Detector.GeometryMDT: kwargs.setdefault(
"MdtPrdKey",
"")
379 if not flags.Detector.GeometryRPC: kwargs.setdefault(
"RpcPrdKey",
"")
380 if not flags.Detector.GeometryTGC: kwargs.setdefault(
"TgcPrdKey",
"")
381 if not flags.Detector.GeometryCSC: kwargs.setdefault(
"CscPrdKey",
"")
383 if not flags.Detector.GeometrysTGC: kwargs.setdefault(
"sTgcPrdKey",
"")
384 if not flags.Detector.GeometryMM: kwargs.setdefault(
"MmPrdKey",
"")
386 kwargs.setdefault(
"TgcPrdKey",
'TGC_MeasurementsAllBCs' if not flags.Muon.useTGCPriorNextBC
else 'TGC_Measurements')
387 result.addEventAlgo(CompFactory.MuonPRD_MultiTruthMaker(name, **kwargs), primary =
True)
393 acc = ComponentAccumulator()
395 if flags.Detector.GeometryMDT:
398 if flags.Detector.GeometryRPC:
401 if flags.Detector.GeometryTGC:
404 if flags.Detector.GeometrysTGC:
407 if flags.Detector.GeometryMM:
411 if flags.Detector.GeometryCSC:
415 if flags.Muon.scheduleActsReco:
416 from MuonSpacePointFormation.SpacePointFormationConfig
import MuonSpacePointFormationCfg
417 acc.merge(MuonSpacePointFormationCfg(flags))
420 if not flags.Muon.usePhaseIIGeoSetup:
423 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
424 acc.merge(MuonTruthAlgsCfg(flags))
430 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
431 from AthenaConfiguration.TestDefaults
import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
432 flags = initConfigFlags()
433 flags.Input.Files = defaultTestFiles.RAW_RUN2
434 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
435 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
440 from AthenaCommon.Logging
import log
443 log.info(
'About to setup Raw data decoding')
445 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
446 cfg = MainServicesCfg(flags)
451 from MuonConfig.MuonBytestreamDecodeConfig
import MuonCacheCfg
452 cfg.merge( MuonCacheCfg(flags) )
454 if flags.Input.Format
is Format.BS:
455 from MuonConfig.MuonBytestreamDecodeConfig
import MuonByteStreamDecodersCfg
456 cfg.merge( MuonByteStreamDecodersCfg( flags) )
460 log.info(
'Print Config')
461 cfg.printConfig(withDetails=
True)
464 pklName =
'MuonRdoDecode_Cache.pkl'
466 pklName =
'MuonRdoDecode.pkl'
469 log.info(
'Save Config')
470 with open(pklName,
'wb')
as f:
478 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
479 from AthenaConfiguration.TestDefaults
import defaultTestFiles
480 flags = initConfigFlags()
481 flags.Input.Files = defaultTestFiles.RDO_RUN3
486 from AthenaCommon.Logging
import log
489 log.info(
'About to setup Rpc RDO data decoding')
491 cfg=ComponentAccumulator()
494 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
495 cfg.merge(PoolReadCfg(flags))
500 log.info(
'Print Config')
501 cfg.printConfig(withDetails=
True)
504 log.info(
'Save Config')
505 with open(
'MuonRdoDecode.pkl',
'wb')
as f:
510if __name__==
"__main__":
Small class to hold the names for cache containers, should help to avoid copy / paste errors.
muonRdoDecodeTestData(forTrigger=False)
CscClusterBuildCfg(flags, name="CscThresholdClusterBuilder")
TgcPrepDataReplicationToolAllBCto3BC(flags, name="TgcPrepDataAllBCto3BCTool", **kwargs)
MMRdoToPrepDataToolCfg(flags, name="MmRdoToPrepDataTool", **kwargs)
CscRDODecodeCfg(flags, name="CscRdoToCscPrepData", RDOContainer=None, **kwargs)
MMRDODecodeCfg(flags, name="MuonMmRdoToPrdConv", **kwargs)
MdtRDODecodeCfg(flags, name="MuonMdtRdoToPrdConv", RDOContainer=None, **kwargs)
MuonPrdCacheCfg(flags)
This configuration function creates the IdentifiableCaches for PRD.
StgcRdoToPrepDataToolCfg(flags, name="STGC_PrepDataProviderTool", **kwargs)
MuonRDOtoPRDConvertorsCfg(flags)
RpcRDODecodeCfg(flags, name="MuonRpcRdoToPrdConv", RDOContainer=None, **kwargs)
MuonPRD_MultiTruthMakerCfg(flags, name="MuonPRD_MultiTruthMaker", **kwargs)
MuonRdoToPrepDataAlgCfg(flags, name="MuonRdoToPrepDataAlg", **kwargs)
StgcRDODecodeCfg(flags, name="MuonStgcRdoToPrdConv", **kwargs)
RpcRdoToPrepDataToolCfg(flags, suffix="", RDOContainer=None, **kwargs)
This configuration function sets up everything for decoding RPC RDO to PRD conversion.
TgcRDODecodeCfg(flags, name="MuonTgcRdoToPrdConv", RDOContainer=None, **kwargs)
TgcPrepDataAllBCto3BCCfg(flags, name="TgcPrepDataAllTo3Replicator", **kwargs)