ATLAS Offline Software
Loading...
Searching...
No Matches
AtlasTrackingGeometryCondAlgConfig.py
Go to the documentation of this file.
1# Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
2
3from AthenaConfiguration.AccumulatorCache import AccumulatorCache
4from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator
5from AthenaConfiguration.ComponentFactory import CompFactory
6from AthenaConfiguration.Enums import LHCPeriod
7
8def _setupCondDB(flags, CoolDataBaseFolder, quiet=True):
9
10 result = ComponentAccumulator()
11
12 # the tag names
13 materialTagBase = 'AtlasLayerMat_v'
14 version = 21
15 sub_version = ''
16
17 # Tag an input tag of form TagInfo{Major|Minor}/<tag> or TagInfo(Major|Minor}/<prefix>/<tag>
18 # The tag information string defines how to handle the GeoAtlas in the TagInfo manager
19 # TagInfo : uses the geometry tag as is
20 # TagInfoMajor : only uses the major version of the geometry tag
21 # TagInfoMinor : uses both major and minor version of the geometry tag
22
23 atlasMaterialTag = materialTagBase + str(version) + sub_version
24 cfolder = CoolDataBaseFolder + '<tag>TagInfoMajor/' + \
25 atlasMaterialTag + '_/GeoAtlas</tag>'
26
27 if flags.GeoModel.Run < LHCPeriod.Run4:
28 # load the right folders
29 from IOVDbSvc.IOVDbSvcConfig import addFoldersSplitOnline
30 result.merge(addFoldersSplitOnline(
31 flags, 'GLOBAL', [cfolder], [cfolder],
32 splitMC=True, className='Trk::LayerMaterialMap'))
33
34 #redefine tag and folder for ITk, as we use a different schema
35 else:
36 atlasMaterialTag = flags.ITk.trackingGeometry.materialTag + \
37 str(flags.ITk.trackingGeometry.version)
38 if flags.ITk.trackingGeometry.loadLocalDbForMaterialMaps:
39 DataBaseName = flags.ITk.trackingGeometry.localDatabaseName
40 from IOVDbSvc.IOVDbSvcConfig import addFolders
41 result.merge(addFolders(flags,
42 "/GLOBAL/TrackingGeo/LayerMaterialITK",
43 detDb=DataBaseName,
44 tag=atlasMaterialTag,
45 className='Trk::LayerMaterialMap'))
46 else:
47 atlasVersion = flags.ITk.trackingGeometry.geometryTagForMaterialMaps
48
49 materialFileTag = atlasMaterialTag + '_'+ \
50 atlasVersion
51 print ("Requesting material map for tracking geometry from tag = ", materialFileTag)
52 from IOVDbSvc.IOVDbSvcConfig import addFolders
53 result.merge(addFolders(flags,
54 "/GLOBAL/TrackingGeo/LayerMaterialITK",
55 "GLOBAL_OFL",
56 tag=materialFileTag,
57 db="OFLP200",
58 className="Trk::LayerMaterialMap"))
59 return result
60
61def GeometryBuilderCfg(flags, name='AtlasGeometryBuilder',
62 useCond=True,
63 **kwargs):
64 result = ComponentAccumulator()
65
66 kwargs.setdefault("WorldDimension", [])
67 kwargs.setdefault("WorldMaterialProperties", [])
68
69 if "TrackingVolumeArrayCreator" not in kwargs:
70 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
71 TrackingVolumeArrayCreatorCfg)
72 kwargs.setdefault("TrackingVolumeArrayCreator", result.popToolsAndMerge(
73 TrackingVolumeArrayCreatorCfg(flags)))
74
75 if "TrackingVolumeHelper" not in kwargs:
76 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
77 TrackingVolumeHelperCfg)
78 kwargs.setdefault("TrackingVolumeHelper", result.popToolsAndMerge(
79 TrackingVolumeHelperCfg(flags)))
80
81 # Depending on the job configuration, setup the various detector builders,
82 # and add to atlas_geometry_builder
83 if flags.Detector.GeometryID:
84 from TrackingGeometryCondAlg.InDetTrackingGeometryConfig import (
85 InDetTrackingGeometryBuilderCfg)
86 kwargs.setdefault(
87 "InDetTrackingGeometryBuilder", result.popToolsAndMerge(
88 InDetTrackingGeometryBuilderCfg(flags, useCond=useCond)))
89
90 elif flags.Detector.GeometryITk:
91 from TrackingGeometryCondAlg.InDetTrackingGeometryConfig import (
92 ITkTrackingGeometryBuilderCfg)
93 kwargs.setdefault(
94 "InDetTrackingGeometryBuilder", result.popToolsAndMerge(
95 ITkTrackingGeometryBuilderCfg(flags, useCond=useCond)))
96
97
98 if flags.Detector.GeometryHGTD and useCond:
99 from TrackingGeometryCondAlg.HGTD_TrackingGeometryConfig import (
100 HGTD_TrackingGeometryBuilderCfg)
101 kwargs.setdefault(
102 "HGTD_TrackingGeometryBuilder", result.popToolsAndMerge(
103 HGTD_TrackingGeometryBuilderCfg(flags)))
104
105 if flags.Detector.GeometryCalo:
106 from TrackingGeometryCondAlg.CaloTrackingGeometryConfig import (
107 CaloTrackingGeometryBuilderCfg)
108 kwargs.setdefault(
109 "CaloTrackingGeometryBuilder", result.popToolsAndMerge(
110 CaloTrackingGeometryBuilderCfg(flags, useCond=useCond)))
111
112 if flags.Detector.GeometryMuon:
113 from TrackingGeometryCondAlg.MuonTrackingGeometryConfig import (
114 MuonTrackingGeometryBuilderCfg)
115 kwargs.setdefault(
116 "MuonTrackingGeometryBuilder", result.popToolsAndMerge(
117 MuonTrackingGeometryBuilderCfg(flags, useCond=useCond)))
118
119 geometryBuilder = CompFactory.Trk.GeometryBuilderCond(name, **kwargs) \
120 if useCond else \
121 CompFactory.Trk.GeometryBuilder(name, **kwargs)
122 result.setPrivateTools(geometryBuilder)
123 return result
124
125@AccumulatorCache
126def TrackingGeometryCondAlgCfg(flags, name='AtlasTrackingGeometryCondAlg',
127 doMaterialValidation=False,
128 **kwargs):
129 """
130 Sets up the Tracking Geometry Conditions Algorithm
131 """
132 result = ComponentAccumulator()
133
134 kwargs.setdefault("GeometryBuilder", result.popToolsAndMerge(
135 GeometryBuilderCfg(flags)))
136
137 # Now set up processors
138 atlas_geometry_processors = []
139
140 if flags.TrackingGeometry.MaterialSource == 'COOL':
141 if flags.GeoModel.Run < LHCPeriod.Run4:
142 CoolDataBaseFolder = '/GLOBAL/TrackingGeo/LayerMaterialV2'
143 else:
144 CoolDataBaseFolder = '/GLOBAL/TrackingGeo/LayerMaterialITK'
145
146 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
147 LayerMaterialProviderCfg)
148 atlas_geometry_processors += [ result.popToolsAndMerge(
149 LayerMaterialProviderCfg(flags,
150 LayerMaterialMapName = CoolDataBaseFolder,
151 LayerMaterialMapKey = CoolDataBaseFolder)) ]
152
153 # Setup DBs
154 result.merge(_setupCondDB(flags, CoolDataBaseFolder))
155
156 elif flags.TrackingGeometry.MaterialSource == 'Input':
157 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
158 InputLayerMaterialProviderCfg)
159 atlas_geometry_processors += [ result.popToolsAndMerge(
160 InputLayerMaterialProviderCfg(flags)) ]
161
162 if doMaterialValidation:
163 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
164 LayerMaterialInspectorCfg)
165 atlas_geometry_processors += [ result.popToolsAndMerge(
166 LayerMaterialInspectorCfg(flags)) ]
167
168 from GaudiKernel.GaudiHandles import PrivateToolHandleArray
169 kwargs.setdefault("GeometryProcessors", PrivateToolHandleArray(
170 atlas_geometry_processors))
171 kwargs.setdefault("TrackingGeometryWriteKey", 'AtlasTrackingGeometry')
172
173 result.addCondAlgo(CompFactory.Trk.TrackingGeometryCondAlg(name, **kwargs),
174 primary=True)
175
176 return result
177
178
179if __name__ == '__main__':
180 from AthenaConfiguration.AllConfigFlags import initConfigFlags
181 from AthenaConfiguration.TestDefaults import defaultTestFiles
182 flags = initConfigFlags()
183 flags.Input.Files = defaultTestFiles.RAW_RUN2
184 flags.lock()
185
187
188 f = open('TrackingGeometryCondAlgCfg.pkl', 'wb')
189 acc.store(f)
190 f.close()
GeometryBuilderCfg(flags, name='AtlasGeometryBuilder', useCond=True, **kwargs)
TrackingGeometryCondAlgCfg(flags, name='AtlasTrackingGeometryCondAlg', doMaterialValidation=False, **kwargs)
_setupCondDB(flags, CoolDataBaseFolder, quiet=True)