1"""Define methods to construct configured MDT Digitization tools and algorithms
3Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
5from AthenaConfiguration.ComponentAccumulator
import ComponentAccumulator
6from AthenaConfiguration.ComponentFactory
import CompFactory
7from AthenaConfiguration.Enums
import BeamType, ProductionStep
8from OutputStreamAthenaPool.OutputStreamConfig
import OutputStreamCfg
9from MuonConfig.MuonGeometryConfig
import MuonGeoModelCfg
10from MuonConfig.MuonByteStreamCnvTestConfig
import MdtDigitToMdtRDOCfg
11from MuonConfig.MuonCablingConfig
import MDTCablingConfigCfg
12from DigitizationConfig.TruthDigitizationOutputConfig
import TruthDigitizationOutputCfg
13from DigitizationConfig.PileUpToolsConfig
import PileUpToolsCfg
14from DigitizationConfig.PileUpMergeSvcConfig
import PileUpMergeSvcCfg, PileUpXingFolderCfg
29 """Return a PileUpXingFolder tool configured for MDT"""
32 kwargs.setdefault(
"CacheRefreshFrequency", 1.0)
33 if flags.Muon.usePhaseIIGeoSetup:
34 kwargs.setdefault(
"ItemList", [
"xAOD::MuonSimHitContainer#xMdtSimHits",
35 "xAOD::MuonSimHitAuxContainer#xMdtSimHitsAux."])
37 kwargs.setdefault(
"ItemList", [
"MDTSimHitCollection#MDT_Hits"])
38 return PileUpXingFolderCfg(flags, name, **kwargs)
42 """Return an RT_Relation_DB_DigiTool"""
43 acc = ComponentAccumulator()
44 acc.setPrivateTools(CompFactory.RT_Relation_DB_DigiTool(name, **kwargs))
49 """Return a configured MDT_Response_DigiTool"""
50 acc = ComponentAccumulator()
51 kwargs.setdefault(
"DoQballGamma", (flags.Input.SpecialConfiguration.get(
"MDT_QballConfig",
"False") ==
"True"))
52 MDT_Response_DigiTool = CompFactory.MDT_Response_DigiTool
58 """Return ComponentAccumulator with common MdtDigitizationTool config"""
59 from MuonConfig.MuonCondAlgConfig
import MdtCondDbAlgCfg
60 from MuonConfig.MuonCalibrationConfig
import MdtCalibDbAlgCfg
62 acc = ComponentAccumulator()
63 acc.merge(MdtCondDbAlgCfg(flags))
64 acc.merge(MdtCalibDbAlgCfg(flags))
67 if not flags.Muon.usePhaseIIGeoSetup:
68 kwargs.setdefault(
"DiscardEarlyHits",
True)
69 kwargs.setdefault(
"UseTof", flags.Beam.Type
is not BeamType.Cosmics)
70 kwargs.setdefault(
"DoQballCharge", (flags.Input.SpecialConfiguration.get(
"MDT_QballConfig",
"False") ==
"True"))
74 from ActsAlignmentAlgs.AlignmentAlgsConfig
import ActsGeometryContextAlgCfg
75 acc.merge(ActsGeometryContextAlgCfg(flags))
76 kwargs.setdefault(
"useTwinTubes",
True)
77 if kwargs[
"useTwinTubes"]:
78 from MuonConfig.MuonCablingConfig
import MdtTwinTubeMapCondAlgCfg
79 acc.merge(MdtTwinTubeMapCondAlgCfg(flags))
81 kwargs.setdefault(
"SimHitKey",
"xMdtSimHits")
82 kwargs.setdefault(
"StreamName",
"MdtDigitForklifting")
84 if flags.Digitization.DoXingByXingPileUp:
87 from RngComps.RngCompsConfig
import AthRNGSvcCfg
88 kwargs.setdefault(
"RndmSvc", acc.getPrimaryAndMerge(AthRNGSvcCfg(flags)))
89 if not flags.Muon.usePhaseIIGeoSetup:
90 acc.setPrivateTools(CompFactory.MdtDigitizationTool(name, **kwargs))
92 acc.setPrivateTools(CompFactory.MuonR4.MdtDigitizationTool(name, **kwargs))
97 """Return ComponentAccumulator with configured MdtDigitizationTool"""
98 acc = ComponentAccumulator()
99 if flags.Digitization.PileUp:
101 if not flags.Digitization.DoXingByXingPileUp:
102 intervals += [acc.popToolsAndMerge(
MDT_RangeCfg(flags))]
103 kwargs.setdefault(
"PileUpMergeSvc", acc.getPrimaryAndMerge(PileUpMergeSvcCfg(flags, Intervals=intervals)))
105 kwargs.setdefault(
"PileUpMergeSvc",
'')
106 kwargs.setdefault(
"OnlyUseContainerName", flags.Digitization.PileUp)
107 kwargs.setdefault(
"OutputObjectName",
"MDT_DIGITS")
108 if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
109 kwargs.setdefault(
"OutputSDOName", flags.Overlay.BkgPrefix +
"MDT_SDO")
111 kwargs.setdefault(
"OutputSDOName",
"MDT_SDO")
113 acc.setPrivateTools(tool)
118 """Return ComponentAccumulator with MdtDigitizationTool configured for Overlay"""
119 kwargs.setdefault(
"OnlyUseContainerName",
False)
120 kwargs.setdefault(
"OutputObjectName", flags.Overlay.SigPrefix +
"MDT_DIGITS")
121 kwargs.setdefault(
"OutputSDOName", flags.Overlay.SigPrefix +
"MDT_SDO")
122 kwargs.setdefault(
"PileUpMergeSvc",
'')
127 """Return ComponentAccumulator with Output for MDT. Not standalone."""
128 acc = ComponentAccumulator()
129 if flags.Output.doWriteRDO:
130 ItemList = [
"MdtCsmContainer#*"]
131 if flags.Digitization.EnableTruth:
132 for pref
in [flags.Overlay.SigPrefix, flags.Overlay.BkgPrefix,
""]:
134 ItemList += [f
"MuonSimDataCollection#{pref}MDT_SDO"]
136 ItemList += [f
"xAOD::MuonSimHitContainer#{pref}MDT_SDO", f
"xAOD::MuonSimHitAuxContainer#{pref}MDT_SDOAux."]
137 acc.merge(TruthDigitizationOutputCfg(flags))
138 acc.merge(OutputStreamCfg(flags,
"RDO", ItemList))
143 """Return ComponentAccumulator for MDT digitization"""
144 acc = MuonGeoModelCfg(flags)
145 if "PileUpTools" not in kwargs:
147 kwargs[
"PileUpTools"] = PileUpTools
148 acc.merge(PileUpToolsCfg(flags, **kwargs))
153 """Return ComponentAccumulator with MDT Overlay digitization"""
154 acc = MuonGeoModelCfg(flags)
155 from MuonConfig.MuonCalibrationConfig
import MdtCalibDbAlgCfg
156 acc.merge(MdtCalibDbAlgCfg(flags))
158 if flags.Common.ProductionStep != ProductionStep.FastChain:
159 from SGComps.SGInputLoaderConfig
import SGInputLoaderCfg
160 if flags.Muon.usePhaseIIGeoSetup:
161 acc.merge(SGInputLoaderCfg(flags, [
"xAOD::MuonSimHitContainer#xMdtSimHits",
162 "xAOD::MuonSimHitAuxContainer#xMdtSimHitsAux."]))
164 acc.merge(SGInputLoaderCfg(flags, [
"MDTSimHitCollection#MDT_Hits"]))
168 if flags.Concurrency.NumThreads > 0:
169 kwargs.setdefault(
"Cardinality", flags.Concurrency.NumThreads)
172 kwargs.setdefault(
"ExtraInputs", flags.Overlay.ExtraInputs)
174 acc.addEventAlgo(CompFactory.MuonDigitizer(name=
"MDT_OverlayDigitizer", **kwargs))
180 """Return ComponentAccumulator for MDT digitization and Output"""
187 """Return ComponentAccumulator with MDT digitization and Digit to MDTCSM RDO"""
189 acc.merge(MDTCablingConfigCfg(flags))
190 acc.merge(MdtDigitToMdtRDOCfg(flags))
RT_Relation_DB_DigiToolCfg(flags, name="RT_Relation_DB_DigiTool", **kwargs)
MDT_OverlayDigitizationBasicCfg(flags, **kwargs)
MDT_DigitizationCfg(flags, **kwargs)
MDT_RangeCfg(flags, name="MDT_Range", **kwargs)
MDT_DigitizationToolCfg(flags, name="MdtDigitizationTool", **kwargs)
MDT_DigitizationToolCommonCfg(flags, name="MdtDigitizationTool", **kwargs)
MDT_OverlayDigitizationToolCfg(flags, name="Mdt_OverlayDigitizationTool", **kwargs)
MDT_Response_DigiToolCfg(flags, name="MDT_Response_DigiTool", **kwargs)
MDT_DigitizationDigitToRDOCfg(flags)
MDT_DigitizationBasicCfg(flags, **kwargs)