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