99def MuonAlignStoreCfg(flags):
100 result = ComponentAccumulator()
101 if not flags.Muon.usePhaseIIGeoSetup:
102 return result
103 from AthenaConfiguration.Enums import ProductionStep
104 if flags.Common.ProductionStep == ProductionStep.Simulation:
105 from MuonG4TrfCache.MuonTrfCacheConfig import MuonTransformCacheCfg
106 result.merge(MuonTransformCacheCfg(flags))
107 return result
108
109 from MuonCondAlgR4.ConditionsConfig import MuonGeoAlignCondAlgCfg
110 result.merge(MuonGeoAlignCondAlgCfg(flags))
111 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsAlignStoreProviderAlgCfg
112
113
114
115 setCondDep = flags.Muon.enableAlignment or flags.Sim.ReleaseGeoModel
116 from MuonConfig.MuonConfigFlags import GeoTrfCacheMode
117 from ROOT.ActsTrk import DetectorType
118 if flags.Detector.GeometryMDT:
119 result.merge(ActsAlignStoreProviderAlgCfg(flags,
120 name="MuonAlignStoreProviderMdt",
121 CondAlignStore="MdtActsAlignContainer" if setCondDep else "",
122 EventAlignStore="MdtActsAlignContainer",
123 SplitPhysVolCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
124 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SlopyCache,
125 SplitActsTrfCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
126 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.ActsSplitALineCond,
127 FillAlignCache = False,
128 DetectorType=DetectorType.Mdt))
129 if flags.Detector.GeometryRPC:
130 result.merge(ActsAlignStoreProviderAlgCfg(flags,
131 name="MuonAlignStoreProviderRpc",
132 CondAlignStore="RpcActsAlignContainer" if setCondDep else "",
133 EventAlignStore="RpcActsAlignContainer",
134 SplitPhysVolCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
135 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SlopyCache,
136 SplitActsTrfCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
137 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.ActsSplitALineCond,
138 FillAlignCache = False,
139 DetectorType=DetectorType.Rpc))
140 if flags.Detector.GeometryTGC:
141 result.merge(ActsAlignStoreProviderAlgCfg(flags,
142 name="MuonAlignStoreProviderTgc",
143 CondAlignStore="TgcActsAlignContainer" if setCondDep else "",
144 EventAlignStore="TgcActsAlignContainer",
145 SplitPhysVolCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
146 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SlopyCache,
147 SplitActsTrfCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
148 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.ActsSplitALineCond,
149 FillAlignCache = False,
150 DetectorType=DetectorType.Tgc))
151 if flags.Detector.GeometrysTGC:
152 result.merge(ActsAlignStoreProviderAlgCfg(flags,
153 name="MuonAlignStoreProviderSTGC",
154 CondAlignStore="sTgcActsAlignContainer" if setCondDep else "",
155 EventAlignStore="sTgcActsAlignContainer",
156 SplitPhysVolCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
157 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SlopyCache,
158 SplitActsTrfCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
159 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.ActsSplitALineCond,
160 FillAlignCache = False,
161 DetectorType=DetectorType.sTgc))
162
163 if flags.Detector.GeometryMM:
164 result.merge(ActsAlignStoreProviderAlgCfg(flags,
165 name="MuonAlignStoreProviderMM",
166 CondAlignStore="MmActsAlignContainer" if setCondDep or \
167 flags.Muon.applyMMPassivation else "",
168 EventAlignStore="MmActsAlignContainer",
169 SplitPhysVolCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
170 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SlopyCache,
171 SplitActsTrfCache = flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.SplitCache or
172 flags.Muon.AlignedGeoTrfCacheMode == GeoTrfCacheMode.ActsSplitALineCond,
173 FillAlignCache = False,
174 DetectorType=DetectorType.Mm))
175
176
177 return result
178