ATLAS Offline Software
Loading...
Searching...
No Matches
ActsGeometryConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
3from AthenaConfiguration.ComponentFactory import CompFactory
4
5
7 name: str = "ActsTrackingGeometrySvc",
8 **kwargs) -> ComponentAccumulator:
9 acc = ComponentAccumulator()
10
11 from ROOT.ActsTrk import DetectorType
12 kwargs.setdefault("NotAlignDetectors", [DetectorType.Trt,
13 DetectorType.Hgtd])
14 kwargs.setdefault("UseBlueprint", flags.Acts.TrackingGeometry.UseBlueprint)
15 kwargs.setdefault("ObjDebugOutput", flags.Acts.TrackingGeometry.ObjDebugOutput)
16 kwargs.setdefault("KeepGoingOnMaterialMergeFailure", flags.Acts.TrackingGeometry.KeepGoingOnMaterialMergeFailure)
17
18 subDetectors = []
19 blueprintTools = []
20 refineTools = []
21
22 # This is a (hopefully) temporary workaround to the issue described in
23 # ATEAM-1134. Once Athena moves to using ROOT 6.38+, this should no longer
24 # be necessary.
25 import ROOT
26 from AthenaServices.ROOTMessageFilterSvcConfig import ROOTMessageFilterSvcCfg
27 acc.merge(ROOTMessageFilterSvcCfg(flags,
28 SuppressionRules=[('TCling::LoadPCM',
29 '.*libGeom_rdict.pcm.*',
30 ROOT.kError)]))
31
32 if flags.Detector.GeometryBpipe:
33 from BeamPipeGeoModel.BeamPipeGMConfig import BeamPipeGeometryCfg
34 acc.merge(BeamPipeGeometryCfg(flags))
35 kwargs.setdefault("BuildBeamPipe", True)
36
37 if flags.Detector.GeometryPixel:
38 subDetectors += ["Pixel"]
39 from PixelGeoModel.PixelGeoModelConfig import PixelReadoutGeometryCfg
40 acc.merge(PixelReadoutGeometryCfg(flags))
41
42
43 if flags.Detector.GeometrySCT:
44 subDetectors += ["SCT"]
45 from SCT_GeoModel.SCT_GeoModelConfig import SCT_ReadoutGeometryCfg
46 acc.merge(SCT_ReadoutGeometryCfg(flags))
47
48 if flags.Detector.GeometryTRT:
49 # Commented out because TRT is not production ready yet and we don't
50 # want to turn it on even if the global flag is set
51 # subDetectors += ["TRT"]
52 from TRT_GeoModel.TRT_GeoModelConfig import TRT_ReadoutGeometryCfg
53 acc.merge(TRT_ReadoutGeometryCfg(flags))
54
55 if flags.Detector.GeometryCalo:
56 #No non-blueprint mode exists for calo, so all we do here is
57 #to setup both the LAr and Tile geometry to enable access to the
58 #CaloDetDescrManager geometry information. This is needed
59 #for the Acts calo blueprint builder tool
60 #Note that in blueprint mode the calo geometry is built
61 #in initialize of the TrackingGeometrySvc and so we use
62 #a static calo geometry. To avoid errors the flag Lar.doAlign
63 #must be set to false (when flag values are set)
64 from LArGeoAlgsNV.LArGMConfig import LArGMCfg
65 acc.merge(LArGMCfg(flags))
66 from TileGeoModel.TileGMConfig import TileGMCfg
67 acc.merge(TileGMCfg(flags))
68
69 #first add the itk builder and then the muon system - this is the correct order
70 if flags.Acts.TrackingGeometry.UseBlueprint:
71 if False:
72 refineTools += [acc.popToolsAndMerge(ITkMaterialDecoratorToolCfg(flags))]
73 blueprintTools += [acc.popToolsAndMerge(BeamPipeBlueprintNodeBuilderCfg(flags))]
74 if flags.Detector.GeometryITkPixel or flags.Detector.GeometryITkStrip:
75 blueprintTools += [acc.popToolsAndMerge(ItkBlueprintNodeBuilderCfg(flags))]
76 if flags.Detector.GeometryHGTD:
77 blueprintTools += [acc.popToolsAndMerge(HgtdBlueprintNodeBuilderCfg(flags))]
78 if flags.Detector.GeometryCalo:
79 subDetectors += ["Calo"]
80 blueprintTools += [acc.popToolsAndMerge(caloBlueprintNodeBuilderCfg(flags))]
81 # Muon system is currently disabled for simulation. Enabling it for non-simulation use cases.
82 if flags.Muon.usePhaseIIGeoSetup and 'ACTS' not in flags.Sim.ISF.Simulator.value:
83 subDetectors += ["Muon"]
84 from MuonConfig.MuonGeometryConfig import MuonGeoModelCfg
85 acc.merge(MuonGeoModelCfg(flags))
86 from ActsMuonDetector.ActsMuonDetectorCfg import MuonBlueprintNodeBuilderCfg, MuonMaterialDecoratorToolCfg
87 blueprintTools += [acc.popToolsAndMerge(MuonBlueprintNodeBuilderCfg(flags))]
88
90 if flags.Muon.trackGeometryPassiveMaterial and \
91 len(flags.Muon.trackGeometryMaterialMap) > 0:
92 refineTools+= [acc.popToolsAndMerge(MuonMaterialDecoratorToolCfg(flags))]
93
94
95 if flags.Detector.GeometryITkPixel:
96 subDetectors += ["ITkPixel"]
97 from PixelGeoModelXml.ITkPixelGeoModelConfig import ITkPixelReadoutGeometryCfg
98 acc.merge(ITkPixelReadoutGeometryCfg(flags))
99
100 if flags.Detector.GeometryITkStrip:
101 subDetectors += ["ITkStrip"]
102 from StripGeoModelXml.ITkStripGeoModelConfig import ITkStripReadoutGeometryCfg
103 acc.merge(ITkStripReadoutGeometryCfg(flags))
104
105
106 if flags.Detector.GeometryHGTD:
107 subDetectors += ["HGTD"]
108 if flags.HGTD.Geometry.useGeoModelXml:
109 from HGTD_GeoModelXml.HGTD_GeoModelConfig import HGTD_ReadoutGeometryCfg
110 else:
111 from HGTD_GeoModel.HGTD_GeoModelConfig import HGTD_ReadoutGeometryCfg
112 acc.merge(HGTD_ReadoutGeometryCfg(flags))
113
114 actsTrackingGeometrySvc = CompFactory.ActsTrk.TrackingGeometrySvc(name,
115 BuildSubDetectors=subDetectors,
116 BlueprintNodeBuilders=blueprintTools,
117 RefinementTools=refineTools,
118 **kwargs)
119
120 if flags.Acts.TrackingGeometry.MaterialSource == "Default":
121 if flags.Detector.GeometryITk:
122 extension = "ITk"
123 if flags.Detector.GeometryHGTD:
124 extension += "-HGTD"
125 if flags.Acts.TrackingGeometry.InsertITkPassiveMaterialLayers:
126 extension += "-passiveLayers"
127 if flags.Acts.TrackingGeometry.MaterialFileExtension:
128 extension += "-"+flags.Acts.TrackingGeometry.MaterialFileExtension
129 actsTrackingGeometrySvc.UseMaterialMap = True
130 actsTrackingGeometrySvc.MaterialMapCalibFolder = flags.Acts.TrackingGeometry.MaterialCalibrationFolder
131 actsTrackingGeometrySvc.MaterialMapInputFile = \
132 "material-maps-" + flags.GeoModel.AtlasVersion + "-" + extension + ".json"
133
134 elif flags.Acts.TrackingGeometry.MaterialSource.find(".json") != -1:
135 actsTrackingGeometrySvc.UseMaterialMap = True
136 actsTrackingGeometrySvc.MaterialMapCalibFolder = flags.Acts.TrackingGeometry.MaterialCalibrationFolder
137 actsTrackingGeometrySvc.MaterialMapInputFile = flags.Acts.TrackingGeometry.MaterialSource
138
139 if flags.Acts.TrackingGeometry.InsertITkPassiveMaterialLayers:
140 actsTrackingGeometrySvc.PassiveITkInnerPixelBarrelLayerRadii = flags.Acts.TrackingGeometry.PassiveITkInnerPixelBarrelLayerRadii
141 actsTrackingGeometrySvc.PassiveITkInnerPixelBarrelLayerHalflengthZ = flags.Acts.TrackingGeometry.PassiveITkInnerPixelBarrelLayerHalflengthZ
142 actsTrackingGeometrySvc.PassiveITkInnerPixelBarrelLayerThickness = flags.Acts.TrackingGeometry.PassiveITkInnerPixelBarrelLayerThickness
143 actsTrackingGeometrySvc.PassiveITkOuterPixelBarrelLayerRadii = flags.Acts.TrackingGeometry.PassiveITkOuterPixelBarrelLayerRadii
144 actsTrackingGeometrySvc.PassiveITkOuterPixelBarrelLayerHalflengthZ = flags.Acts.TrackingGeometry.PassiveITkOuterPixelBarrelLayerHalflengthZ
145 actsTrackingGeometrySvc.PassiveITkOuterPixelBarrelLayerThickness = flags.Acts.TrackingGeometry.PassiveITkOuterPixelBarrelLayerThickness
146 actsTrackingGeometrySvc.PassiveITkStripBarrelLayerRadii = flags.Acts.TrackingGeometry.PassiveITkStripBarrelLayerRadii
147 actsTrackingGeometrySvc.PassiveITkStripBarrelLayerHalflengthZ = flags.Acts.TrackingGeometry.PassiveITkStripBarrelLayerHalflengthZ
148 actsTrackingGeometrySvc.PassiveITkStripBarrelLayerThickness = flags.Acts.TrackingGeometry.PassiveITkStripBarrelLayerThickness
149
150
151
152 acc.addService(actsTrackingGeometrySvc, primary = True)
153 return acc
154
155
156
157def ITkMaterialDecoratorToolCfg(flags, name="ITkMaterialDecorator", **kwargs) -> ComponentAccumulator:
158 result = ComponentAccumulator()
159 the_tool = CompFactory.ActsTrk.ITkMaterialDecoratorTool(name, **kwargs)
160 result.setPrivateTools(the_tool)
161 return result
162
164 name: str = "ActsExtrapolationTool",
165 **kwargs) -> ComponentAccumulator:
166 acc = ComponentAccumulator()
167 from MagFieldServices.MagFieldServicesConfig import AtlasFieldCacheCondAlgCfg
168 acc.merge(AtlasFieldCacheCondAlgCfg(flags))
169 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
170 acc.merge(ActsGeometryContextAlgCfg(flags))
171 acc.merge(ActsTrackingGeometrySvcCfg(flags))
172 acc.setPrivateTools(CompFactory.ActsTrk.ExtrapolationTool(name, **kwargs))
173 return acc
174
175
176def ActsGeometryRealmConvToolCfg(flags, name: str = "ActsGeometryRealmConvTool", **kwargs) -> ComponentAccumulator:
177 acc = ComponentAccumulator()
178 from ActsAlignmentAlgs.AlignmentAlgsConfig import ActsGeometryContextAlgCfg
179 acc.merge(ActsGeometryContextAlgCfg(flags))
180 acc.merge(ActsTrackingGeometrySvcCfg(flags))
181 kwargs.setdefault("ExtractMuonSurfaces", flags.Muon.usePhaseIIGeoSetup)
182 acc.addPublicTool(CompFactory.ActsTrk.GeometryRealmConvTool(name, **kwargs), primary = True)
183 return acc
184
186 name: str = "ActsObjWriterTool",
187 **kwargs) -> ComponentAccumulator:
188 acc = ComponentAccumulator()
189 acc.addPublicTool(CompFactory.ActsObjWriterTool(name, **kwargs), primary=True)
190 return acc
191
192
194 name: str = "ActsExtrapolationAlg",
195 **kwargs) -> ComponentAccumulator:
196 acc = ComponentAccumulator()
197
198 if "ExtrapolationTool" not in kwargs:
199 kwargs.setdefault("ExtrapolationTool", acc.popToolsAndMerge(ActsExtrapolationToolCfg(flags))) # PrivateToolHandle
200 from MuonConfig.MuonConfigUtils import setupHistSvcCfg
201 acc.merge(setupHistSvcCfg(flags, outFile="propsteps.root", outStream = "ActsExtrapolationRecord"))
202 acc.addEventAlgo(CompFactory.ActsTrk.ExtrapolationTestAlg(name, **kwargs))
203 return acc
204
206 name: str = "ActsWriteTrackingGeometry",
207 **kwargs) -> ComponentAccumulator:
208 acc = ComponentAccumulator()
209 acc.merge(ActsTrackingGeometrySvcCfg(flags))
210 acc.addEventAlgo(CompFactory.ActsTrk.WriteTrackingGeometry(name, **kwargs), primary = True)
211 return acc
212
214 name: str = "ActsWriteTrackingGeometryTransformsAlg",
215 **kwargs: dict) -> ComponentAccumulator:
216 acc = ComponentAccumulator()
217
218 acc.addEventAlgo(CompFactory.ActsWriteTrackingGeometryTransforms(name,**kwargs))
219 return acc
220
222 name: str = "ActsVolumeIdToDetectorCollectionMappingAlgCfg",
223 **kwargs) -> ComponentAccumulator:
224 acc = ComponentAccumulator()
225 kwargs.setdefault('ActsVolumeIdToDetectorElementCollectionMap', 'VolumeIdToDetectorElementCollectionMap')
226
227 def filterCollections(flags, pixel_det_el, strip_det_el) :
228 ret=[]
229 if flags.Detector.GeometryITkPixel:
230 ret += [ pixel_det_el ]
231 if flags.Detector.GeometryITkStrip:
232 ret += [ strip_det_el ]
233 return ret
234 kwargs.setdefault('DetectorElementsKeys', filterCollections( flags,
235 'ITkPixelDetectorElementCollection',
236 'ITkStripDetectorElementCollection'))
237
238 acc.addCondAlgo(CompFactory.ActsTrk.ActsVolumeIdToDetectorElementCollectionMappingAlg(name, **kwargs))
239 return acc
240
242 name: str = "ActsInDetVolumeIdToDetectorCollectionMappingAlgCfg",
243 **kwargs) -> ComponentAccumulator:
244 # Inner Detector version of ActsVolumeIdToDetectorCollectionMappingAlgCfg
245 acc = ComponentAccumulator()
246 kwargs.setdefault('ActsVolumeIdToDetectorElementCollectionMap', 'VolumeIdToDetectorElementCollectionMap')
247
248 def filterCollections(flags, pixel_det_el, strip_det_el) :
249 ret=[]
250 if flags.Detector.GeometryPixel:
251 ret += [ pixel_det_el ]
252 if flags.Detector.GeometrySCT:
253 ret += [ strip_det_el ]
254 return ret
255 kwargs.setdefault('DetectorElementsKeys', filterCollections( flags,
256 'PixelDetectorElementCollection',
257 'SCT_DetectorElementCollection'))
258
259 acc.addCondAlgo(CompFactory.ActsTrk.ActsVolumeIdToDetectorElementCollectionMappingAlg(name, **kwargs))
260 return acc
261
263 flags, name: str = "BeamPipeBlueprintNodeBuilder", **kwargs
264) -> ComponentAccumulator:
265 result = ComponentAccumulator()
266 kwargs.setdefault("loadFromDatabase", flags.Detector.GeometryBpipe)
267 result.setPrivateTools(
268 CompFactory.ActsTrk.BeamPipeBlueprintNodeBuilder(name, **kwargs)
269 )
270 return result
271
272
274 name: str = "ItkBlueprintNodeBuilder",
275 **kwargs) -> ComponentAccumulator:
276 result = ComponentAccumulator()
277 kwargs.setdefault("buildPixel", flags.Detector.GeometryITkPixel)
278 kwargs.setdefault("buildStrip", flags.Detector.GeometryITkStrip)
279 the_tool = CompFactory.ActsTrk.ItkBlueprintNodeBuilder(name, **kwargs)
280 result.setPrivateTools(the_tool)
281 return result
282
283
285 flags, name: str = "HgtdBlueprintNodeBuilder", **kwargs
286) -> ComponentAccumulator:
287 result = ComponentAccumulator()
288 the_tool = CompFactory.ActsTrk.HgtdBlueprintNodeBuilder(
289 name, **kwargs)
290 result.setPrivateTools(the_tool)
291 return result
292
293
295 name: str = "CaloBlueprintNodeBuilder",
296 **kwargs) -> ComponentAccumulator:
297 result = ComponentAccumulator()
298 the_tool = CompFactory.ActsTrk.CaloBlueprintNodeBuilder(name, **kwargs)
299 result.setPrivateTools(the_tool)
300 return result
ComponentAccumulator ActsGeometryRealmConvToolCfg(flags, str name="ActsGeometryRealmConvTool", **kwargs)
ComponentAccumulator ActsWriteTrackingGeometryCfg(flags, str name="ActsWriteTrackingGeometry", **kwargs)
ComponentAccumulator ActsInDetVolumeIdToDetectorCollectionMappingAlgCfg(flags, str name="ActsInDetVolumeIdToDetectorCollectionMappingAlgCfg", **kwargs)
ComponentAccumulator BeamPipeBlueprintNodeBuilderCfg(flags, str name="BeamPipeBlueprintNodeBuilder", **kwargs)
ComponentAccumulator ITkMaterialDecoratorToolCfg(flags, name="ITkMaterialDecorator", **kwargs)
ComponentAccumulator caloBlueprintNodeBuilderCfg(flags, str name="CaloBlueprintNodeBuilder", **kwargs)
ComponentAccumulator ActsVolumeIdToDetectorCollectionMappingAlgCfg(flags, str name="ActsVolumeIdToDetectorCollectionMappingAlgCfg", **kwargs)
ComponentAccumulator ActsTrackingGeometrySvcCfg(flags, str name="ActsTrackingGeometrySvc", **kwargs)
ComponentAccumulator ActsExtrapolationAlgCfg(flags, str name="ActsExtrapolationAlg", **kwargs)
ComponentAccumulator ItkBlueprintNodeBuilderCfg(flags, str name="ItkBlueprintNodeBuilder", **kwargs)
ComponentAccumulator HgtdBlueprintNodeBuilderCfg(flags, str name="HgtdBlueprintNodeBuilder", **kwargs)
ComponentAccumulator ActsExtrapolationToolCfg(flags, str name="ActsExtrapolationTool", **kwargs)
ComponentAccumulator ActsWriteTrackingGeometryTransformsAlgCfg(flags, str name="ActsWriteTrackingGeometryTransformsAlg", **dict kwargs)
ComponentAccumulator ActsObjWriterToolCfg(flags, str name="ActsObjWriterTool", **kwargs)