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 =
"TgcPrdCacheAllBCs"
15 sTgcCache =
"sTgcPrdCache"
16 MmCache =
"MmPrdCache"
17 RpcCoinCache =
"RpcCoinCache"
18 TgcCoinCache =
"TgcCoinCache"
28 acc = ComponentAccumulator()
29 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
30 MuonIdHelperSvc = acc.getPrimaryAndMerge( MuonIdHelperSvcCfg(flags) )
32 MuonPRDCacheCreator=CompFactory.MuonPRDCacheCreator
33 cacheCreator =
MuonPRDCacheCreator(CscStripCacheKey = (MuonPrdCacheNames.CscStripCache
if flags.Detector.GeometryCSC
else ""),
34 MdtCacheKey = MuonPrdCacheNames.MdtCache,
35 CscCacheKey = (MuonPrdCacheNames.CscCache
if flags.Detector.GeometryCSC
else ""),
36 RpcCacheKey = MuonPrdCacheNames.RpcCache,
37 TgcCacheKey = MuonPrdCacheNames.TgcCache,
38 sTgcCacheKey = (MuonPrdCacheNames.sTgcCache
if flags.Detector.GeometrysTGC
else ""),
39 MmCacheKey = (MuonPrdCacheNames.MmCache
if flags.Detector.GeometryMM
else ""),
40 TgcCoinCacheStr = MuonPrdCacheNames.TgcCoinCache,
41 RpcCoinCacheKey = MuonPrdCacheNames.RpcCoinCache,
42 MuonIdHelperSvc = MuonIdHelperSvc
45 acc.addEventAlgo( cacheCreator, primary=
True )
49 result = ComponentAccumulator()
51 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
52 result.merge(MuonGeoModelCfg(flags))
53 if flags.Muon.usePhaseIIGeoSetup:
54 from ActsAlignmentAlgs.AlignmentAlgsConfig
import ActsGeometryContextAlgCfg
55 result.merge(ActsGeometryContextAlgCfg(flags))
57 kwargs.setdefault(
"DoSeededDecoding", flags.Trigger.doHLT )
58 the_alg = CompFactory.MuonRdoToPrepDataAlg(name, **kwargs)
59 result.addEventAlgo(the_alg, primary =
True)
65 result = ComponentAccumulator()
68 if flags.Muon.usePhaseIIGeoSetup
and ( \
69 not flags.Input.isMC
or len([x
for x
in flags.Input.TypedCollections
if x.find(
"RpcPadContainer#") != -1])):
71 from MuonConfig.MuonByteStreamCnvTestConfig
import RpcRdoToRpcDigitCfg, NrpcDigitToNrpcRDOCfg
74 if RDOContainer: cnv_args.setdefault(
"RpcRdoContainer", RDOContainer)
76 result.merge(RpcRdoToRpcDigitCfg(flags,
77 name=
"RpcRdoDigitPatchAlg" + suffix,
78 RpcDigitContainer=
"CnvRpcDigits",
81 result.merge(NrpcDigitToNrpcRDOCfg(flags,
82 name=
"RpcBackConverterAlg" + suffix,
83 RpcDigitContainer=
"CnvRpcDigits",
84 NrpcRdoKey=
"CnvRpcRDOs"))
85 kwargs.setdefault(
"RpcRdoContainer",
"CnvRpcRDOs")
89 kwargs.setdefault(
"RpcRdoContainer", RDOContainer)
91 if flags.Muon.usePhaseIIGeoSetup:
92 from MuonConfig.MuonCablingConfig
import NRPCCablingConfigCfg
93 result.merge(NRPCCablingConfigCfg(flags))
94 from AthenaConfiguration.Enums
import LHCPeriod
95 kwargs.setdefault(
"decode2DStrips", flags.GeoModel.Run >= LHCPeriod.Run4)
96 if not kwargs[
"decode2DStrips"]:
97 kwargs.setdefault(
"OutputContainer",
"xRpcMeasurements")
98 the_tool = CompFactory.MuonR4.RpcRdoToRpcPrepDataTool(name=
"RpcPrepDataProviderTool", **kwargs)
99 result.setPrivateTools(the_tool)
102 from MuonConfig.MuonCablingConfig
import RPCLegacyCablingConfigCfg
103 result.merge(RPCLegacyCablingConfigCfg(flags))
105 if not flags.Input.isMC:
106 kwargs[
"reduceCablingOverlap"] =
True
107 kwargs[
"produceRpcCoinDatafromTriggerWords"] =
True
108 kwargs[
"overlap_timeTolerance"] = 1000
109 kwargs[
"solvePhiAmbiguities"] =
True
110 kwargs[
"etaphi_coincidenceTime"] = 1000
111 if not flags.Trigger.doHLT:
112 kwargs[
"RpcPrdContainerCacheKey"] =
""
113 kwargs[
"RpcCoinDataContainerCacheKey"] =
""
115 from MuonConfig.MuonCondAlgConfig
import RpcCondDbAlgCfg
116 result.merge(RpcCondDbAlgCfg(flags))
118 kwargs[
"RPCInfoFromDb"] =
False
120 if not flags.Muon.enableNRPC:
121 kwargs[
"NrpcInputCollection"] =
""
129 if not flags.Input.isMC
and (flags.Muon.MuonTrigger
or flags.Input.RunNumbers[0] >= 454434):
130 kwargs[
"timeShift"] = 37.5
132 if flags.Muon.MuonTrigger:
133 kwargs[
"RdoDecoderTool"] = CompFactory.Muon.RpcRDO_Decoder(
"RpcRDO_Decoder", BCZERO=flags.Trigger.L1MuonSim.RPCNBCZ)
135 kwargs.setdefault(
"isMC", flags.Input.isMC)
136 the_tool = CompFactory.Muon.RpcRdoToPrepDataToolMT(name=
"RpcPrepDataProviderTool",**kwargs)
137 result.setPrivateTools(the_tool)
142 acc = ComponentAccumulator()
144 suffix = name[name.find(
"_") :]
if name.find(
"_") != -1
else ""
147 kwargs.setdefault(
"DecodingTool", acc.popToolsAndMerge(
RpcRdoToPrepDataToolCfg(flags, suffix=suffix, RDOContainer=RDOContainer)))
149 from RegionSelector.RegSelToolConfig
import regSelTool_RPC_Cfg
150 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_RPC_Cfg(flags)))
151 kwargs.setdefault(
"useROBs",
False)
157 if flags.Muon.usePhaseIIGeoSetup:
158 from xAODMuonTrkPrepDataCnv.MuonPrepDataCnvCfg
import xRpcToPrepDataCnvAlgCfg
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}"))
163 acc.merge(xRpcToPrepDataCnvAlgCfg(flags, name=f
"xAODRpcToPrepDataCnvAlg{suffix}"))
169 acc = ComponentAccumulator()
170 suffix = name[name.find(
"_") :]
if name.find(
"_") != -1
else ""
173 from MuonConfig.MuonCablingConfig
import TGCCablingConfigCfg
174 acc.merge(TGCCablingConfigCfg(flags))
179 if flags.Muon.usePhaseIIGeoSetup:
180 from MuonConfig.MuonByteStreamCnvTestConfig
import TgcRdoToTgcDigitCfg
181 acc.merge(TgcRdoToTgcDigitCfg(flags, name=f
"MuonTgcRdoToDigitR4{suffix}",
182 TgcRdoContainer =
"TGCRDO" if not RDOContainer
else RDOContainer,
183 TgcDigitContainer=
"TgcDigitsRdoConv"))
184 kwargs.setdefault(
"DecodingTool",
185 CompFactory.MuonR4.TgcDigitToPrepDataCnvTool(name=
"TgcPrepDataProviderTool",
186 ReadKey=
"TgcDigitsRdoConv",
187 convertAllBCs =
not flags.Muon.useTGCPriorNextBC))
188 from xAODMuonTrkPrepDataCnv.MuonPrepDataCnvCfg
import xTgcToPrepDataCnvAlgCfg
189 acc.merge(xTgcToPrepDataCnvAlgCfg(flags, name=f
"xAODTgcToPrepDataCnvAlg{suffix}"))
192 if not flags.Trigger.doHLT:
193 tool_args.setdefault(
"UpdateKeyPrd",
"")
194 tool_args.setdefault(
"CoinCacheString",
"")
197 tool_args.setdefault(
"RDOContainer", RDOContainer)
198 tool_args.setdefault(
"convertAllBCs",
not flags.Muon.useTGCPriorNextBC)
199 kwargs.setdefault(
"DecodingTool", CompFactory.Muon.TgcRdoToPrepDataToolMT(name=
"TgcPrepDataProviderTool", **tool_args))
202 from RegionSelector.RegSelToolConfig
import regSelTool_TGC_Cfg
203 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_TGC_Cfg(flags)))
204 kwargs.setdefault(
"useROBs",
False)
212 result = ComponentAccumulator()
213 kwargs.setdefault(
"UseR4DetMgr", flags.Muon.usePhaseIIGeoSetup)
214 if flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup:
215 kwargs.setdefault(
"xAODStripKey",
"xAODsTgcStrips")
216 kwargs.setdefault(
"xAODWireKey",
"xAODsTgcWires")
217 kwargs.setdefault(
"xAODPadKey",
"xAODsTgcPads")
219 from MuonConfig.MuonRecToolsConfig
import SimpleSTgcClusterBuilderToolCfg
220 kwargs.setdefault(
"ClusterBuilderTool",result.popToolsAndMerge(SimpleSTgcClusterBuilderToolCfg(flags)))
221 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
222 kwargs.setdefault(
"NSWCalibTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
223 the_tool = CompFactory.Muon.sTgcRdoToPrepDataToolMT(name, **kwargs)
224 result.setPrivateTools(the_tool)
229 acc = ComponentAccumulator()
233 from RegionSelector.RegSelToolConfig
import regSelTool_STGC_Cfg
234 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_STGC_Cfg(flags)))
235 kwargs.setdefault(
"useROBs",
False)
240 if flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup:
241 suffix = name[name.find(
"_") :]
if name.find(
"_") != -1
else ""
242 from xAODMuonViewAlgs.ViewAlgsConfig
import sTgcMeasViewAlgCfg
243 acc.merge(sTgcMeasViewAlgCfg(flags, name=f
"sTgcMeasViewAlg{suffix}"))
249 result = ComponentAccumulator()
251 from MuonConfig.MuonRecToolsConfig
import SimpleMMClusterBuilderToolCfg
252 kwargs.setdefault(
"ClusterBuilderTool",result.popToolsAndMerge(SimpleMMClusterBuilderToolCfg(flags)))
253 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg
254 kwargs.setdefault(
"NSWCalibTool", result.popToolsAndMerge(NSWCalibToolCfg(flags)))
255 kwargs[
"xAODKey"] =
"xAODMMClusters" if flags.Muon.writexAODPRD
or flags.Muon.usePhaseIIGeoSetup
else ""
256 kwargs[
"UseR4DetMgr"] = flags.Muon.usePhaseIIGeoSetup
257 the_tool = CompFactory.Muon.MmRdoToPrepDataToolMT(name, **kwargs)
258 result.setPrivateTools(the_tool)
263 acc = ComponentAccumulator()
267 from RegionSelector.RegSelToolConfig
import regSelTool_MM_Cfg
268 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_MM_Cfg(flags)))
269 kwargs.setdefault(
"useROBs",
False)
276 acc = ComponentAccumulator()
277 from MuonConfig.MuonCalibrationConfig
import MdtCalibrationToolCfg
282 tool_kwargs.setdefault(
'UseTwin',
True)
283 if flags.IOVDb.DatabaseInstance ==
'COMP200':
284 tool_kwargs[
'UseTwin'] =
False
287 from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg, MdtTwinTubeMapCondAlgCfg
288 acc.merge(MDTCablingConfigCfg(flags))
289 if tool_kwargs[
'UseTwin']:
290 acc.merge(MdtTwinTubeMapCondAlgCfg(flags))
292 tool_kwargs[
"CalibrationTool"] = acc.popToolsAndMerge(MdtCalibrationToolCfg(flags, TimeWindowSetting = 2,
293 DoPropagationCorrection =
False))
294 if RDOContainer: tool_kwargs[
"RDOContainer"] = RDOContainer
297 from RegionSelector.RegSelToolConfig
import regSelTool_MDT_Cfg
298 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_MDT_Cfg(flags)))
301 if flags.Muon.usePhaseIIGeoSetup:
302 kwargs[
"DecodingTool"] = CompFactory.MuonR4.MdtRdoToMdtPrepDataTool(name=
"MdtRdoToMdtPrepDataTool", **tool_kwargs)
304 suffix = name[name.find(
"_") :]
if name.find(
"_") != -1
else ""
305 from xAODMuonViewAlgs.ViewAlgsConfig
import MdtMeasViewAlgCfg
306 acc.merge(MdtMeasViewAlgCfg(flags, name=f
"MdtMeasViewAlg{suffix}"))
307 from xAODMuonTrkPrepDataCnv.MuonPrepDataCnvCfg
import xMdtToPrepDataCnvAlgCfg
308 acc.merge(xMdtToPrepDataCnvAlgCfg(flags, name=f
"xAODMdtToPrepDataCnvAlg{suffix}"))
311 kwargs.setdefault(
"DecodingTool", CompFactory.Muon.MdtRdoToPrepDataToolMT(name=
"MdtPrepDataProviderTool", **tool_kwargs))
318 acc = ComponentAccumulator()
321 from MuonConfig.MuonCablingConfig
import CSCCablingConfigCfg
322 acc.merge(CSCCablingConfigCfg(flags))
324 from MuonConfig.MuonCondAlgConfig
import CscCondDbAlgCfg
325 acc.merge(CscCondDbAlgCfg(flags))
329 kwargs.setdefault(
"useROBs",
False)
330 kwargs.setdefault(
"DecodingTool", CompFactory.Muon.CscRdoToCscPrepDataToolMT(name=
"CscPrepDataProviderTool"))
332 kwargs[
"DecodingTool"].RDOContainer = RDOContainer
334 from RegionSelector.RegSelToolConfig
import regSelTool_CSC_Cfg
335 kwargs.setdefault(
"RegSelector", acc.popToolsAndMerge(regSelTool_CSC_Cfg(flags)))
343 acc = ComponentAccumulator()
344 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
345 from MuonConfig.MuonSegmentFindingConfig
import CalibCscStripFitterCfg, QratCscClusterFitterCfg, CscAlignmentTool
346 from MuonConfig.MuonCalibrationConfig
import CscCalibToolCfg
350 MuonIdHelperSvc = acc.getPrimaryAndMerge( MuonIdHelperSvcCfg(flags) )
351 CalibCscStripFitter = acc.getPrimaryAndMerge( CalibCscStripFitterCfg(flags) )
352 QratCscClusterFitter = acc.getPrimaryAndMerge( QratCscClusterFitterCfg(flags) )
353 SimpleCscClusterFitter = CompFactory.SimpleCscClusterFitter(CscAlignmentTool =
CscAlignmentTool(flags) )
354 CscSplitClusterFitter = CompFactory.CscSplitClusterFitter( precision_fitter = QratCscClusterFitter,
355 default_fitter = SimpleCscClusterFitter )
356 CscCalibTool = acc.getPrimaryAndMerge( CscCalibToolCfg(flags) )
357 CscThresholdClusterBuilderTool=CompFactory.CscThresholdClusterBuilderTool
359 MuonIdHelperSvc = MuonIdHelperSvc,
360 strip_fitter = CalibCscStripFitter,
361 precision_fitter = QratCscClusterFitter,
362 default_fitter = SimpleCscClusterFitter,
363 split_fitter = CscSplitClusterFitter,
364 cscCalibTool = CscCalibTool)
367 CscThresholdClusterBuilder=CompFactory.CscThresholdClusterBuilder
369 cluster_builder = CscClusterBuilderTool,
370 MuonIdHelperSvc = MuonIdHelperSvc
372 acc.addEventAlgo(CscClusterBuilder)
378 from MuonConfig.MuonGeometryConfig
import MuonIdHelperSvcCfg
379 result = ComponentAccumulator()
380 result.merge(MuonIdHelperSvcCfg(flags))
382 if not flags.Detector.GeometryMDT: kwargs.setdefault(
"MdtPrdKey",
"")
383 if not flags.Detector.GeometryRPC: kwargs.setdefault(
"RpcPrdKey",
"")
384 if not flags.Detector.GeometryTGC: kwargs.setdefault(
"TgcPrdKey",
"")
385 if not flags.Detector.GeometryCSC: kwargs.setdefault(
"CscPrdKey",
"")
387 if not flags.Detector.GeometrysTGC: kwargs.setdefault(
"sTgcPrdKey",
"")
388 if not flags.Detector.GeometryMM: kwargs.setdefault(
"MmPrdKey",
"")
390 kwargs.setdefault(
"TgcPrdKey",
'TGC_MeasurementsAllBCs')
391 result.addEventAlgo(CompFactory.MuonPRD_MultiTruthMaker(name, **kwargs), primary =
True)
397 acc = ComponentAccumulator()
399 if flags.Detector.GeometryMDT:
402 if flags.Detector.GeometryRPC:
405 if flags.Detector.GeometryTGC:
408 if flags.Detector.GeometrysTGC:
411 if flags.Detector.GeometryMM:
415 if flags.Detector.GeometryCSC:
419 if flags.Muon.scheduleActsReco:
420 from MuonSpacePointFormation.SpacePointFormationConfig
import MuonSpacePointFormationCfg
421 acc.merge(MuonSpacePointFormationCfg(flags))
423 from AthenaConfiguration.Enums
import Format
424 if flags.Input.isMC
and flags.Input.Format!=Format.BS:
425 if not flags.Muon.usePhaseIIGeoSetup:
427 elif flags.Muon.setupTruthAlgorithms:
428 from MuonTruthAlgsR4.MuonTruthAlgsConfig
import MuonTruthAlgsCfg
429 acc.merge(MuonTruthAlgsCfg(flags))
435 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
436 from AthenaConfiguration.TestDefaults
import defaultConditionsTags, defaultGeometryTags, defaultTestFiles
437 flags = initConfigFlags()
438 flags.Input.Files = defaultTestFiles.RAW_RUN2
439 flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
440 flags.IOVDb.GlobalTag = defaultConditionsTags.RUN2_DATA
445 from AthenaCommon.Logging
import log
448 log.info(
'About to setup Raw data decoding')
450 from AthenaConfiguration.MainServicesConfig
import MainServicesCfg
451 cfg = MainServicesCfg(flags)
456 from MuonConfig.MuonBytestreamDecodeConfig
import MuonCacheCfg
457 cfg.merge( MuonCacheCfg(flags) )
459 if flags.Input.Format
is Format.BS:
460 from MuonConfig.MuonBytestreamDecodeConfig
import MuonByteStreamDecodersCfg
461 cfg.merge( MuonByteStreamDecodersCfg( flags) )
465 log.info(
'Print Config')
466 cfg.printConfig(withDetails=
True)
469 pklName =
'MuonRdoDecode_Cache.pkl'
471 pklName =
'MuonRdoDecode.pkl'
474 log.info(
'Save Config')
475 with open(pklName,
'wb')
as f:
483 from AthenaConfiguration.AllConfigFlags
import initConfigFlags
484 from AthenaConfiguration.TestDefaults
import defaultTestFiles
485 flags = initConfigFlags()
486 flags.Input.Files = defaultTestFiles.RDO_RUN3
491 from AthenaCommon.Logging
import log
494 log.info(
'About to setup Rpc RDO data decoding')
496 cfg=ComponentAccumulator()
499 from AthenaPoolCnvSvc.PoolReadConfig
import PoolReadCfg
500 cfg.merge(PoolReadCfg(flags))
505 log.info(
'Print Config')
506 cfg.printConfig(withDetails=
True)
509 log.info(
'Save Config')
510 with open(
'MuonRdoDecode.pkl',
'wb')
as f:
515if __name__==
"__main__":
Small class to hold the names for cache containers, should help to avoid copy / paste errors.
RpcRdoToPrepDataToolCfg(flags, suffix="", RDOContainer=None, **kwargs)
This configuration function sets up everything for decoding RPC RDO to PRD conversion.
MuonRDOtoPRDConvertorsCfg(flags)
MMRDODecodeCfg(flags, name="MuonMmRdoToPrdConv", **kwargs)
MdtRDODecodeCfg(flags, name="MuonMdtRdoToPrdConv", RDOContainer=None, **kwargs)
StgcRdoToPrepDataToolCfg(flags, name="STGC_PrepDataProviderTool", **kwargs)
MuonPrdCacheCfg(flags)
This configuration function creates the IdentifiableCaches for PRD.
MuonPRD_MultiTruthMakerCfg(flags, name="MuonPRD_MultiTruthMaker", **kwargs)
CscClusterBuildCfg(flags, name="CscThresholdClusterBuilder")
MMRdoToPrepDataToolCfg(flags, name="MmRdoToPrepDataTool", **kwargs)
CscRDODecodeCfg(flags, name="CscRdoToCscPrepData", RDOContainer=None, **kwargs)
TgcRDODecodeCfg(flags, name="MuonTgcRdoToPrdConv", RDOContainer=None, **kwargs)
RpcRDODecodeCfg(flags, name="MuonRpcRdoToPrdConv", RDOContainer=None, **kwargs)
muonRdoDecodeTestData(forTrigger=False)
MuonRdoToPrepDataAlgCfg(flags, name="MuonRdoToPrepDataAlg", **kwargs)
StgcRDODecodeCfg(flags, name="MuonStgcRdoToPrdConv", **kwargs)