File indexing completed on 2026-05-27 07:24:10
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 from ..impl import metadata
0014 from ..impl import Shape, Material, Accelerator, GridBin
0015
0016 import logging
0017
0018 """ Types that are typically needed for silicon tracker detectors """
0019
0020
0021 def add_silicon_tracker_defaults(
0022 metadata: metadata,
0023 use_mat_maps=False,
0024 use_homogeneous_mat=False,
0025 add_trapezoid=False,
0026 ):
0027
0028 if metadata in add_silicon_tracker_defaults.clients:
0029 return
0030
0031 add_silicon_tracker_defaults.clients.append(metadata)
0032
0033 logger = logging.getLogger(__name__)
0034 logger.info("Define silicon tracker types:")
0035
0036
0037 logger.info("-> adding portal types")
0038 metadata.add_portal(Shape.CONCENTRIC_CYLINDER, type_id=2)
0039 metadata.add_portal(Shape.RING, type_id=3)
0040
0041
0042 metadata.add_accel_struct(
0043 Accelerator.BRUTE_FORCE, "portal", is_default=True, type_id=0
0044 )
0045 metadata.add_accel_struct(Accelerator.BRUTE_FORCE, "passive", type_id=0)
0046
0047
0048 logger.info("-> adding barrel section types")
0049 metadata.add_sensitive(Shape.RECTANGLE, type_id=0)
0050 metadata.add_accel_struct(
0051 Accelerator.CONCENTRIC_CYLINDER_GRID2D, "sensitive", type_id=1
0052 )
0053 if use_mat_maps:
0054 metadata.add_material(Material.CONCENTIRC_CYLINDER_MAP2D, type_id=0)
0055
0056
0057 logger.info("-> adding endcap section types")
0058 if add_trapezoid:
0059 metadata.add_sensitive(Shape.TRAPEZOID, type_id=1)
0060 metadata.add_accel_struct(Accelerator.DISC_GRID2D, "sensitive", type_id=2)
0061 if use_mat_maps:
0062 metadata.add_material(Material.DISC_MAP2D, type_id=1)
0063
0064
0065 if use_homogeneous_mat:
0066 logger.info("-> requested homogeneous material types")
0067 metadata.add_material(Material.SLAB, type_id=3)
0068
0069
0070 logger.info("-> adding detector volume acceleration structure")
0071 metadata.add_accel_struct(
0072 Accelerator.CYLINDER_GRID3D, "volume", grid_bin=GridBin.SINGLE, is_default=True
0073 )
0074
0075 logger.info("Done")
0076
0077
0078 add_silicon_tracker_defaults.clients = []