1 """Define methods to construct configured MM Digitization tools and algorithms
3 Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
5 from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6 from AthenaConfiguration.ComponentFactory
import CompFactory
7 from AthenaConfiguration.Enums
import ProductionStep
8 from DigitizationConfig.PileUpMergeSvcConfig
import PileUpMergeSvcCfg, PileUpXingFolderCfg
9 from DigitizationConfig.PileUpToolsConfig
import PileUpToolsCfg
10 from DigitizationConfig.TruthDigitizationOutputConfig
import TruthDigitizationOutputCfg
11 from MagFieldServices.MagFieldServicesConfig
import AtlasFieldCacheCondAlgCfg
12 from MuonConfig.MuonByteStreamCnvTestConfig
import MM_DigitToRDOCfg
13 from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
14 from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
27 """Return a PileUpXingFolder tool configured for MM"""
30 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
31 if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.TypedCollections:
32 kwargs.setdefault(
"ItemList", [
"MMSimHitCollection#MicromegasSensitiveDetector"])
34 kwargs.setdefault(
"ItemList", [
"MMSimHitCollection#MM_Hits"])
39 """Return ComponentAccumulator with configured MM_DigitizationTool"""
40 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg, MMCalibSmearingToolCfg
42 kwargs.setdefault(
"CalibrationTool", result.popToolsAndMerge(
NSWCalibToolCfg(flags)))
45 if flags.Digitization.PileUp:
47 if flags.Digitization.DoXingByXingPileUp:
51 intervals += [result.popToolsAndMerge(
MM_RangeCfg(flags))]
52 kwargs.setdefault(
"MergeSvc", result.getPrimaryAndMerge(
PileUpMergeSvcCfg(flags, Intervals=intervals)).name)
54 kwargs.setdefault(
"MergeSvc",
'')
55 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
56 kwargs.setdefault(
"CheckSimHits",
True)
57 if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.TypedCollections:
58 kwargs.setdefault(
"InputObjectName",
"MicromegasSensitiveDetector")
60 kwargs.setdefault(
"InputObjectName",
"MM_Hits")
61 kwargs.setdefault(
"OutputObjectName",
"MM_DIGITS")
62 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
63 kwargs.setdefault(
"OutputSDOName", flags.Overlay.BkgPrefix +
"MM_SDO")
65 kwargs.setdefault(
"OutputSDOName",
"MM_SDO")
66 from RngComps.RngCompsConfig
import AthRNGSvcCfg
67 kwargs.setdefault(
"RndmSvc", result.getPrimaryAndMerge(
AthRNGSvcCfg(flags)).name)
68 result.setPrivateTools(CompFactory.MM_DigitizationTool(name, **kwargs))
73 """Return ComponentAccumulator with MM_DigitizationTool configured for Overlay"""
75 from MuonConfig.MuonCalibrationConfig
import NSWCalibToolCfg, MMCalibSmearingToolCfg
76 kwargs.setdefault(
"CalibrationTool", acc.popToolsAndMerge(
NSWCalibToolCfg(flags)))
79 kwargs.setdefault(
"MergeSvc",
'')
80 kwargs.setdefault(
"CheckSimHits",
True)
81 kwargs.setdefault(
"OnlyUseContainerName",
False)
82 if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.SecondaryTypedCollections:
83 kwargs.setdefault(
"InputObjectName",
"MicromegasSensitiveDetector")
85 kwargs.setdefault(
"InputObjectName",
"MM_Hits")
86 kwargs.setdefault(
"OutputObjectName", flags.Overlay.SigPrefix +
"MM_DIGITS")
87 kwargs.setdefault(
"OutputSDOName", flags.Overlay.SigPrefix +
"MM_SDO")
88 from RngComps.RngCompsConfig
import AthRNGSvcCfg
89 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)).name)
90 acc.setPrivateTools(CompFactory.MM_DigitizationTool(name, **kwargs))
95 """Return ComponentAccumulator with Output for MM. Not standalone."""
97 if flags.Output.doWriteRDO:
98 ItemList = [
"Muon::MM_RawDataContainer#*"]
99 if flags.Digitization.EnableTruth:
100 ItemList += [
"MuonSimDataCollection#*"]
107 """Return ComponentAccumulator for MM digitization"""
109 if "PileUpTools" not in kwargs:
111 kwargs[
"PileUpTools"] = PileUpTools
117 """Return ComponentAccumulator with MM Overlay digitization"""
119 if flags.Common.ProductionStep != ProductionStep.FastChain:
120 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
121 if 'MMSimHitCollection#MicromegasSensitiveDetector' in flags.Input.SecondaryTypedCollections:
122 acc.merge(
SGInputLoaderCfg(flags, [
"MMSimHitCollection#MicromegasSensitiveDetector"]))
128 if flags.Concurrency.NumThreads > 0:
129 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
132 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
134 acc.addEventAlgo(CompFactory.MuonDigitizer(name=
"MM_OverlayDigitizer", **kwargs))
140 """Return ComponentAccumulator for MM digitization and Output"""
147 """Return ComponentAccumulator with TGC digitization and Digit to TGCRDO"""