222 **kwargs):
223 result = ComponentAccumulator()
224
225
226 beamPipeBuilder = result.popToolsAndMerge(
227 BeamPipeBuilderCfg(flags, useCond = useCond))
228 result.addPublicTool(beamPipeBuilder)
229
230 layerbuilders = []
231 binnings = []
232 colors = []
233
234
235 if (useCond and flags.Detector.GeometryID):
236 from InDetServMatGeoModel.InDetServMatGeoModelConfig import (
237 InDetServiceMaterialCfg)
238 result.merge(InDetServiceMaterialCfg(flags))
239
240
241 if flags.Detector.GeometryPixel:
242 pixelLayerBuilder = result.popToolsAndMerge(
243 PixelLayerBuilderCfg(flags, useCond = useCond))
244 result.addPublicTool(pixelLayerBuilder)
245
246
247 pixelLayerBinning = 2
248
249
250 layerbuilders += [pixelLayerBuilder]
251 binnings += [pixelLayerBinning]
252 colors += [3]
253
254 if flags.Detector.GeometrySCT:
255
256 SCT_LayerBuilder = result.popToolsAndMerge(
257 SCT_LayerBuilderCfg(flags, useCond = useCond))
258 result.addPublicTool(SCT_LayerBuilder)
259
260
261 SCT_LayerBinning = 2
262
263
264 layerbuilders += [SCT_LayerBuilder]
265 binnings += [SCT_LayerBinning]
266 colors += [4]
267
268 if flags.Detector.GeometryTRT:
269 TRT_LayerBuilder = result.popToolsAndMerge(
270 TRT_LayerBuilderCfg(flags, useCond = useCond))
271
272
273
274 result.addPublicTool(TRT_LayerBuilder)
275
276
277
278 TRT_LayerBinning = 1
279 useFatras = flags.Common.ProductionStep in \
280 [ProductionStep.Simulation, ProductionStep.FastChain] \
281 and flags.Sim.ISF.Simulator.usesFatras()
282 if (flags.Beam.Type is BeamType.Cosmics or useFatras):
283 TRT_LayerBinning = 2
284
285
286 layerbuilders += [TRT_LayerBuilder]
287 binnings += [TRT_LayerBinning]
288 colors += [5]
289
290
291
292
293
294 nameSuffix = 'Cond' if useCond else ''
295
296
297 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
298 LayerArrayCreatorCfg)
299 layerArrayCreator = result.popToolsAndMerge(
300 LayerArrayCreatorCfg(flags, name='InDetLayerArrayCreator' + nameSuffix))
301 result.addPublicTool(layerArrayCreator)
302
303
304 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
305 InDetTrackingVolumeHelperCfg)
306 trackingVolumeHelper = result.popToolsAndMerge(
307 InDetTrackingVolumeHelperCfg(flags, name='InDetTrackingVolumeHelper' + \
308 nameSuffix))
309 result.addPublicTool(trackingVolumeHelper)
310
311
312 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
313 TrackingVolumeArrayCreatorCfg)
314 trackingVolumeArrayCreator = result.popToolsAndMerge(
315 TrackingVolumeArrayCreatorCfg(flags,
316 name='InDetTrackingVolumeArrayCreator' + \
317 nameSuffix))
318 result.addPublicTool(trackingVolumeArrayCreator)
319
320
321 from TrackingGeometryCondAlg.TrkDetDescrToolsConfig import (
322 InDetCylinderVolumeCreatorCfg)
323 inDetCylinderVolumeCreator = result.popToolsAndMerge(
324 InDetCylinderVolumeCreatorCfg(flags, name='InDetCylinderVolumeCreator' \
325 + nameSuffix,
326 LayerArrayCreator = layerArrayCreator,
327 TrackingVolumeHelper = trackingVolumeHelper,
328 TrackingVolumeArrayCreator = trackingVolumeArrayCreator))
329 result.addPublicTool(inDetCylinderVolumeCreator)
330
331 from SubDetectorEnvelopes.SubDetectorEnvelopesConfig import (
332 EnvelopeDefSvcCfg)
333 envelopeDefinitionSvc = result.getPrimaryAndMerge(EnvelopeDefSvcCfg(flags))
334
335 kwargs.setdefault("BeamPipeBuilder", beamPipeBuilder)
336 kwargs.setdefault("LayerBuilders", layerbuilders)
337 kwargs.setdefault("LayerBinningType", binnings)
338 kwargs.setdefault("ColorCodes", colors)
339 kwargs.setdefault("EnvelopeDefinitionSvc", envelopeDefinitionSvc)
340 kwargs.setdefault("VolumeEnclosureDiscPositions", [3000., 3450.])
341 kwargs.setdefault("TrackingVolumeCreator", inDetCylinderVolumeCreator)
342 kwargs.setdefault("LayerArrayCreator", layerArrayCreator)
343 kwargs.setdefault("ReplaceAllJointBoundaries", True)
344 kwargs.setdefault("VolumeEnclosureCylinderRadii", [])
345 kwargs.setdefault("BuildBoundaryLayers", True)
346 kwargs.setdefault("ExitVolumeName", 'InDet::Containers::InnerDetector')
347
348
349 if useCond:
350 name = name + 'Cond'
351 geometryBuilder = CompFactory.InDet.RobustTrackingGeometryBuilderCond(name, **kwargs) if useCond else \
352 CompFactory.InDet.RobustTrackingGeometryBuilder(name, **kwargs)
353 result.setPrivateTools(geometryBuilder)
354 return result
355