legend-pygeom-hades 0.1.0a0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. legend_pygeom_hades-0.1.0a0.dist-info/METADATA +62 -0
  2. legend_pygeom_hades-0.1.0a0.dist-info/RECORD +85 -0
  3. legend_pygeom_hades-0.1.0a0.dist-info/WHEEL +5 -0
  4. legend_pygeom_hades-0.1.0a0.dist-info/entry_points.txt +2 -0
  5. legend_pygeom_hades-0.1.0a0.dist-info/licenses/LICENSE +674 -0
  6. legend_pygeom_hades-0.1.0a0.dist-info/top_level.txt +1 -0
  7. pygeomhades/__init__.py +6 -0
  8. pygeomhades/_version.py +34 -0
  9. pygeomhades/cli.py +169 -0
  10. pygeomhades/configs/dummy_geom/B99000A.yaml +25 -0
  11. pygeomhades/configs/dummy_geom/C99000A.yaml +31 -0
  12. pygeomhades/configs/dummy_geom/P99000A.yaml +20 -0
  13. pygeomhades/configs/dummy_geom/V99000A.yaml +31 -0
  14. pygeomhades/configs/holder_wrap/B00000B.yaml +37 -0
  15. pygeomhades/configs/holder_wrap/B00000D.yaml +37 -0
  16. pygeomhades/configs/holder_wrap/B00002C.yaml +37 -0
  17. pygeomhades/configs/holder_wrap/B00032B.yaml +37 -0
  18. pygeomhades/configs/holder_wrap/B00035A.yaml +37 -0
  19. pygeomhades/configs/holder_wrap/B00035B.yaml +37 -0
  20. pygeomhades/configs/holder_wrap/B00061C.yaml +37 -0
  21. pygeomhades/configs/holder_wrap/B00076C.yaml +37 -0
  22. pygeomhades/configs/holder_wrap/B00091B.yaml +37 -0
  23. pygeomhades/configs/holder_wrap/V00048B.yaml +37 -0
  24. pygeomhades/configs/holder_wrap/V02160A.yaml +37 -0
  25. pygeomhades/configs/holder_wrap/V02160B.yaml +37 -0
  26. pygeomhades/configs/holder_wrap/V02162B.yaml +37 -0
  27. pygeomhades/configs/holder_wrap/V02166B.yaml +37 -0
  28. pygeomhades/configs/holder_wrap/V03421A.yaml +37 -0
  29. pygeomhades/configs/holder_wrap/V03422A.yaml +37 -0
  30. pygeomhades/configs/holder_wrap/V04199A.yaml +37 -0
  31. pygeomhades/configs/holder_wrap/V04545A.yaml +37 -0
  32. pygeomhades/configs/holder_wrap/V04549A.yaml +37 -0
  33. pygeomhades/configs/holder_wrap/V04549B.yaml +37 -0
  34. pygeomhades/configs/holder_wrap/V05261A.yaml +37 -0
  35. pygeomhades/configs/holder_wrap/V05261B.yaml +37 -0
  36. pygeomhades/configs/holder_wrap/V05266A.yaml +37 -0
  37. pygeomhades/configs/holder_wrap/V05266B.yaml +37 -0
  38. pygeomhades/configs/holder_wrap/V05267A.yaml +37 -0
  39. pygeomhades/configs/holder_wrap/V05267B.yaml +37 -0
  40. pygeomhades/configs/holder_wrap/V05268A.yaml +37 -0
  41. pygeomhades/configs/holder_wrap/V05268B.yaml +37 -0
  42. pygeomhades/configs/holder_wrap/V05612A.yaml +37 -0
  43. pygeomhades/configs/holder_wrap/V05612B.yaml +37 -0
  44. pygeomhades/configs/holder_wrap/V06643A.yaml +29 -0
  45. pygeomhades/configs/holder_wrap/V06649A.yaml +29 -0
  46. pygeomhades/configs/holder_wrap/V06659A.yaml +29 -0
  47. pygeomhades/configs/holder_wrap/V07298B.yaml +37 -0
  48. pygeomhades/configs/holder_wrap/V07302A.yaml +37 -0
  49. pygeomhades/configs/holder_wrap/V07302B.yaml +37 -0
  50. pygeomhades/configs/holder_wrap/V07646A.yaml +37 -0
  51. pygeomhades/configs/holder_wrap/V07647A.yaml +37 -0
  52. pygeomhades/configs/holder_wrap/V07647B.yaml +37 -0
  53. pygeomhades/configs/holder_wrap/V08682A.yaml +37 -0
  54. pygeomhades/configs/holder_wrap/V08682B.yaml +37 -0
  55. pygeomhades/configs/holder_wrap/V09372A.yaml +37 -0
  56. pygeomhades/configs/holder_wrap/V09374A.yaml +37 -0
  57. pygeomhades/configs/holder_wrap/V09724A.yaml +37 -0
  58. pygeomhades/configs/holder_wrap/V10437B.yaml +37 -0
  59. pygeomhades/configs/holder_wrap/V10447B.yaml +37 -0
  60. pygeomhades/configs/holder_wrap/V11924A.yaml +37 -0
  61. pygeomhades/configs/holder_wrap/V11925A.yaml +37 -0
  62. pygeomhades/configs/holder_wrap/V11947B.yaml +37 -0
  63. pygeomhades/configs/holder_wrap/V14673A.yaml +37 -0
  64. pygeomhades/configs/vis-scene.yaml +0 -0
  65. pygeomhades/core.py +275 -0
  66. pygeomhades/create_volumes.py +571 -0
  67. pygeomhades/dimensions.py +283 -0
  68. pygeomhades/metadata.py +28 -0
  69. pygeomhades/models/dummy/bottom_plate_dummy.gdml +44 -0
  70. pygeomhades/models/dummy/cryostat_dummy.gdml +57 -0
  71. pygeomhades/models/dummy/holder_bege_dummy.gdml +61 -0
  72. pygeomhades/models/dummy/holder_icpc_dummy.gdml +78 -0
  73. pygeomhades/models/dummy/lead_castle_table1_dummy.gdml +71 -0
  74. pygeomhades/models/dummy/lead_castle_table2_dummy.gdml +73 -0
  75. pygeomhades/models/dummy/source_am_collimated_dummy.gdml +97 -0
  76. pygeomhades/models/dummy/source_am_dummy.gdml +64 -0
  77. pygeomhades/models/dummy/source_ba_dummy.gdml +72 -0
  78. pygeomhades/models/dummy/source_co_dummy.gdml +71 -0
  79. pygeomhades/models/dummy/source_holder_am_dummy.gdml +73 -0
  80. pygeomhades/models/dummy/source_holder_dummy.gdml +61 -0
  81. pygeomhades/models/dummy/source_holder_th_lat_dummy.gdml +54 -0
  82. pygeomhades/models/dummy/source_th_dummy.gdml +134 -0
  83. pygeomhades/models/dummy/source_th_plates_dummy.gdml +36 -0
  84. pygeomhades/models/dummy/wrap_dummy.gdml +50 -0
  85. pygeomhades/utils.py +101 -0
@@ -0,0 +1,6 @@
1
+ from __future__ import annotations
2
+
3
+ from pygeomhades._version import version as __version__
4
+ from pygeomhades.core import construct
5
+
6
+ __all__ = ["__version__", "construct"]
@@ -0,0 +1,34 @@
1
+ # file generated by setuptools-scm
2
+ # don't change, don't track in version control
3
+
4
+ __all__ = [
5
+ "__version__",
6
+ "__version_tuple__",
7
+ "version",
8
+ "version_tuple",
9
+ "__commit_id__",
10
+ "commit_id",
11
+ ]
12
+
13
+ TYPE_CHECKING = False
14
+ if TYPE_CHECKING:
15
+ from typing import Tuple
16
+ from typing import Union
17
+
18
+ VERSION_TUPLE = Tuple[Union[int, str], ...]
19
+ COMMIT_ID = Union[str, None]
20
+ else:
21
+ VERSION_TUPLE = object
22
+ COMMIT_ID = object
23
+
24
+ version: str
25
+ __version__: str
26
+ __version_tuple__: VERSION_TUPLE
27
+ version_tuple: VERSION_TUPLE
28
+ commit_id: COMMIT_ID
29
+ __commit_id__: COMMIT_ID
30
+
31
+ __version__ = version = '0.1.0a0'
32
+ __version_tuple__ = version_tuple = (0, 1, 0, 'a0')
33
+
34
+ __commit_id__ = commit_id = None
pygeomhades/cli.py ADDED
@@ -0,0 +1,169 @@
1
+ from __future__ import annotations
2
+
3
+ import argparse
4
+ import logging
5
+
6
+ from dbetto import utils
7
+ from pyg4ometry import config as meshconfig
8
+ from pygeomtools import geometry, write_pygeom
9
+
10
+ from . import _version, core
11
+
12
+ log = logging.getLogger(__name__)
13
+
14
+
15
+ def dump_gdml_cli(argv: list[str] | None = None) -> None:
16
+ args, config = _parse_cli_args(argv)
17
+
18
+ logging.basicConfig()
19
+ if args.verbose:
20
+ logging.getLogger("pygeomhades").setLevel(logging.DEBUG)
21
+ if args.debug:
22
+ logging.root.setLevel(logging.DEBUG)
23
+
24
+ vis_scene = {}
25
+ if isinstance(args.visualize, str):
26
+ vis_scene = utils.load_dict(args.visualize)
27
+
28
+ if args.clip_geometry:
29
+ vis_scene["clipper"] = [{"origin": [0, 0, 0], "normal": [1, 0, 0], "close_cuts": False}]
30
+
31
+ if vis_scene.get("fine_mesh", False) or args.check_overlaps:
32
+ meshconfig.setGlobalMeshSliceAndStack(100)
33
+
34
+ registry = core.construct(
35
+ args.hpge_name,
36
+ args.measurement,
37
+ assemblies=args.assemblies,
38
+ config=config,
39
+ public_geometry=args.public_geom,
40
+ )
41
+
42
+ if args.print_volumes:
43
+ geometry.print_volumes(registry, args.print_volumes)
44
+
45
+ if args.check_overlaps:
46
+ msg = "checking for overlaps"
47
+ log.info(msg)
48
+ registry.worldVolume.checkOverlaps(recursive=True)
49
+
50
+ # commit auxvals, and write to GDML file if requested.
51
+ if args.filename is not None:
52
+ log.info("exporting GDML geometry to %s", args.filename)
53
+ write_pygeom(registry, args.filename)
54
+
55
+ if args.visualize:
56
+ log.info("visualizing...")
57
+ from pygeomtools import viewer
58
+
59
+ viewer.visualize(registry, vis_scene)
60
+
61
+
62
+ def _parse_cli_args(argv: list[str] | None = None) -> tuple[argparse.Namespace, dict]:
63
+ parser = argparse.ArgumentParser(
64
+ prog="legend-pygeom-hades",
65
+ description="%(prog)s command line interface",
66
+ )
67
+
68
+ # global options
69
+ parser.add_argument(
70
+ "--version",
71
+ action="version",
72
+ help="""Print %(prog)s version and exit""",
73
+ version=_version.__version__,
74
+ )
75
+ parser.add_argument(
76
+ "--verbose",
77
+ "-v",
78
+ action="store_true",
79
+ help="""Increase the program verbosity""",
80
+ )
81
+ parser.add_argument(
82
+ "--debug",
83
+ "-d",
84
+ action="store_true",
85
+ help="""Increase the program verbosity to maximum""",
86
+ )
87
+ parser.add_argument(
88
+ "--visualize",
89
+ "-V",
90
+ nargs="?",
91
+ const=True,
92
+ help="""Open a VTK visualization of the generated geometry (with optional scene file)""",
93
+ )
94
+ parser.add_argument(
95
+ "--clip-geometry",
96
+ action="store_true",
97
+ help="""Clip the geometry for visualization purposes""",
98
+ )
99
+ parser.add_argument(
100
+ "--check-overlaps",
101
+ action="store_true",
102
+ help="""Check for overlaps with pyg4ometry (note: this might not be accurate)""",
103
+ )
104
+ parser.add_argument(
105
+ "--print-volumes",
106
+ action="store",
107
+ choices=("logical", "physical", "detector"),
108
+ help="""Print a list of logical or physical volume names (from the pyg4ometry registry)""",
109
+ )
110
+
111
+ # options for geometry generation.
112
+ #
113
+ # geometry options can also be specified in the config file, so the "default" argument of the argparse
114
+ # options cannot be used - we need to distinguish between an unspecified option and an explicitly set
115
+ # default option.
116
+ geom_opts = parser.add_argument_group("geometry options")
117
+ geom_opts.add_argument(
118
+ "--public-geom",
119
+ action="store_true",
120
+ default=None,
121
+ help="""Create a geometry from public testdata only.""",
122
+ )
123
+ geom_opts.add_argument(
124
+ "-c",
125
+ "--config",
126
+ action="store",
127
+ help="""Select a config file to read geometry information from. """,
128
+ )
129
+ geom_opts.add_argument(
130
+ "--hpge-name",
131
+ action="store",
132
+ required=True,
133
+ help="""Name of the detector eg "V07302A".""",
134
+ )
135
+ geom_opts.add_argument(
136
+ "--assemblies",
137
+ action="store",
138
+ default=["hpge", "lead_castle"],
139
+ help=(
140
+ """Select the assemblies to generate in the output.
141
+ (default: hpge and lead_castle)"""
142
+ ),
143
+ )
144
+
145
+ geom_opts.add_argument(
146
+ "--measurement",
147
+ action="store",
148
+ required=True,
149
+ help="""Name of the measurement eg "am_HS1_top_dlt".""",
150
+ )
151
+
152
+ parser.add_argument(
153
+ "filename",
154
+ default=None,
155
+ nargs="?",
156
+ help="""File name for the output GDML geometry.""",
157
+ )
158
+
159
+ args = parser.parse_args(argv)
160
+
161
+ config = {}
162
+
163
+ if args.config is not None:
164
+ config = utils.load_dict(args.config)
165
+
166
+ if not args.visualize and args.filename == "":
167
+ parser.error("no output file and no visualization specified")
168
+
169
+ return args, config
@@ -0,0 +1,25 @@
1
+ name: B99000A
2
+ type: bege
3
+ production:
4
+ manufacturer: Test
5
+ enrichment:
6
+ val: 0.75
7
+ unc: 0.05
8
+ geometry:
9
+ height_in_mm: 40.0
10
+ radius_in_mm: 35.0
11
+ groove:
12
+ depth_in_mm: 2.0
13
+ radius_in_mm:
14
+ outer: 12.0
15
+ inner: 10.0
16
+ pp_contact:
17
+ radius_in_mm: 7.5
18
+ depth_in_mm: 0
19
+ taper:
20
+ top:
21
+ angle_in_deg: 0.0
22
+ height_in_mm: 0.0
23
+ bottom:
24
+ angle_in_deg: 0.0
25
+ height_in_mm: 0.0
@@ -0,0 +1,31 @@
1
+ name: C99000A
2
+ type: coax
3
+ production:
4
+ manufacturer: Test
5
+ enrichment:
6
+ val: 0.75
7
+ unc: 0.05
8
+ geometry:
9
+ height_in_mm: 80
10
+ radius_in_mm: 40
11
+ borehole:
12
+ radius_in_mm: 7
13
+ depth_in_mm: 70
14
+ groove:
15
+ depth_in_mm: 2
16
+ radius_in_mm:
17
+ outer: 20
18
+ inner: 17
19
+ pp_contact:
20
+ radius_in_mm: 17
21
+ depth_in_mm: 0
22
+ taper:
23
+ top:
24
+ angle_in_deg: 45
25
+ height_in_mm: 5
26
+ bottom:
27
+ angle_in_deg: 45
28
+ height_in_mm: 2
29
+ borehole:
30
+ angle_in_deg: 0
31
+ height_in_mm: 0
@@ -0,0 +1,20 @@
1
+ name: P99000A
2
+ type: ppc
3
+ production:
4
+ manufacturer: Test
5
+ enrichment:
6
+ val: 0.75
7
+ unc: 0.05
8
+ geometry:
9
+ height_in_mm: 40.0
10
+ radius_in_mm: 35.0
11
+ pp_contact:
12
+ radius_in_mm: 2
13
+ depth_in_mm: 2
14
+ taper:
15
+ top:
16
+ angle_in_deg: 0
17
+ height_in_mm: 0
18
+ bottom:
19
+ angle_in_deg: 30
20
+ height_in_mm: 10
@@ -0,0 +1,31 @@
1
+ name: V99000A
2
+ type: icpc
3
+ production:
4
+ manufacturer: Test
5
+ enrichment:
6
+ val: 0.75
7
+ unc: 0.05
8
+ geometry:
9
+ height_in_mm: 60
10
+ radius_in_mm: 35
11
+ borehole:
12
+ radius_in_mm: 5
13
+ depth_in_mm: 45
14
+ groove:
15
+ depth_in_mm: 1
16
+ radius_in_mm:
17
+ outer: 10
18
+ inner: 9
19
+ pp_contact:
20
+ radius_in_mm: 3
21
+ depth_in_mm: 2
22
+ taper:
23
+ top:
24
+ angle_in_deg: 10
25
+ height_in_mm: 10
26
+ bottom:
27
+ angle_in_deg: 0
28
+ height_in_mm: 0
29
+ borehole:
30
+ angle_in_deg: 0
31
+ height_in_mm: 0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00000B
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 41.0
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 39.5
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 41.5
28
+ position: 3.5
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 37.2
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 37.7
37
+ position: 3.5
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00000D
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 39.2
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 40.7
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 42.2
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 38.4
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 38.9
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00002C
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 38.4
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 39.9
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 41.4
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 37.6
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 38.1
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00032B
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 36.9
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 38.4
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 40.0
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 36.1
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 36.6
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00035A
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 37.8
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 39.3
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 40.8
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 37.0
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 37.5
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00035B
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 39.2
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 40.7
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 42.2
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 38.4
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 38.9
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00061C
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 38.3
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 39.8
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 41.3
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 37.5
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 38.0
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00076C
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 38.9
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 40.4
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 41.9
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 38.1
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 38.6
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: B00091B
3
+ position: 5.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 0
9
+ radius_in_mm: 0
10
+ outer:
11
+ height_in_mm: 0
12
+ radius_in_mm: 0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 62.5
16
+ radius_in_mm: 36.3
17
+ outer:
18
+ height_in_mm: 65.5
19
+ radius_in_mm: 37.8
20
+ edge:
21
+ height_in_mm: 0
22
+ radius_in_mm: 0
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 0
26
+ position_top_ring_in_mm: 14.7
27
+ radius_in_mm: 39.3
28
+ position: 4.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 49.0
33
+ radius_in_mm: 35.5
34
+ outer:
35
+ height_in_mm: 50.0
36
+ radius_in_mm: 36.0
37
+ position: 4.0
@@ -0,0 +1,37 @@
1
+ detector:
2
+ name: V00048B
3
+ position: 7.0
4
+ holder:
5
+ geometry:
6
+ bottom_cyl:
7
+ inner:
8
+ height_in_mm: 15.7
9
+ radius_in_mm: 8.0
10
+ outer:
11
+ height_in_mm: 25.4
12
+ radius_in_mm: 13.0
13
+ cylinder:
14
+ inner:
15
+ height_in_mm: 105.0
16
+ radius_in_mm: 37.5
17
+ outer:
18
+ height_in_mm: 108.1
19
+ radius_in_mm: 38.3
20
+ edge:
21
+ height_in_mm: 1.3
22
+ radius_in_mm: 40.5
23
+ rings:
24
+ height_in_mm: 8.6
25
+ position_bottom_ring_in_mm: 64.4
26
+ position_top_ring_in_mm: 14.0
27
+ radius_in_mm: 40.5
28
+ position: 6.0
29
+ wrap:
30
+ geometry:
31
+ inner:
32
+ height_in_mm: 92.9
33
+ radius_in_mm: 36.3
34
+ outer:
35
+ height_in_mm: 94.3
36
+ radius_in_mm: 36.8
37
+ position: 4.5