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.
- legend_pygeom_hades-0.1.0a0.dist-info/METADATA +62 -0
- legend_pygeom_hades-0.1.0a0.dist-info/RECORD +85 -0
- legend_pygeom_hades-0.1.0a0.dist-info/WHEEL +5 -0
- legend_pygeom_hades-0.1.0a0.dist-info/entry_points.txt +2 -0
- legend_pygeom_hades-0.1.0a0.dist-info/licenses/LICENSE +674 -0
- legend_pygeom_hades-0.1.0a0.dist-info/top_level.txt +1 -0
- pygeomhades/__init__.py +6 -0
- pygeomhades/_version.py +34 -0
- pygeomhades/cli.py +169 -0
- pygeomhades/configs/dummy_geom/B99000A.yaml +25 -0
- pygeomhades/configs/dummy_geom/C99000A.yaml +31 -0
- pygeomhades/configs/dummy_geom/P99000A.yaml +20 -0
- pygeomhades/configs/dummy_geom/V99000A.yaml +31 -0
- pygeomhades/configs/holder_wrap/B00000B.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00000D.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00002C.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00032B.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00035A.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00035B.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00061C.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00076C.yaml +37 -0
- pygeomhades/configs/holder_wrap/B00091B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V00048B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V02160A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V02160B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V02162B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V02166B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V03421A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V03422A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V04199A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V04545A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V04549A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V04549B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05261A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05261B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05266A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05266B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05267A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05267B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05268A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05268B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05612A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V05612B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V06643A.yaml +29 -0
- pygeomhades/configs/holder_wrap/V06649A.yaml +29 -0
- pygeomhades/configs/holder_wrap/V06659A.yaml +29 -0
- pygeomhades/configs/holder_wrap/V07298B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V07302A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V07302B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V07646A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V07647A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V07647B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V08682A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V08682B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V09372A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V09374A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V09724A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V10437B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V10447B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V11924A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V11925A.yaml +37 -0
- pygeomhades/configs/holder_wrap/V11947B.yaml +37 -0
- pygeomhades/configs/holder_wrap/V14673A.yaml +37 -0
- pygeomhades/configs/vis-scene.yaml +0 -0
- pygeomhades/core.py +275 -0
- pygeomhades/create_volumes.py +571 -0
- pygeomhades/dimensions.py +283 -0
- pygeomhades/metadata.py +28 -0
- pygeomhades/models/dummy/bottom_plate_dummy.gdml +44 -0
- pygeomhades/models/dummy/cryostat_dummy.gdml +57 -0
- pygeomhades/models/dummy/holder_bege_dummy.gdml +61 -0
- pygeomhades/models/dummy/holder_icpc_dummy.gdml +78 -0
- pygeomhades/models/dummy/lead_castle_table1_dummy.gdml +71 -0
- pygeomhades/models/dummy/lead_castle_table2_dummy.gdml +73 -0
- pygeomhades/models/dummy/source_am_collimated_dummy.gdml +97 -0
- pygeomhades/models/dummy/source_am_dummy.gdml +64 -0
- pygeomhades/models/dummy/source_ba_dummy.gdml +72 -0
- pygeomhades/models/dummy/source_co_dummy.gdml +71 -0
- pygeomhades/models/dummy/source_holder_am_dummy.gdml +73 -0
- pygeomhades/models/dummy/source_holder_dummy.gdml +61 -0
- pygeomhades/models/dummy/source_holder_th_lat_dummy.gdml +54 -0
- pygeomhades/models/dummy/source_th_dummy.gdml +134 -0
- pygeomhades/models/dummy/source_th_plates_dummy.gdml +36 -0
- pygeomhades/models/dummy/wrap_dummy.gdml +50 -0
- pygeomhades/utils.py +101 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dbetto import AttrsDict
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def get_bottom_plate_metadata() -> AttrsDict:
|
|
7
|
+
"""Extract the metadata describing the bottom plate."""
|
|
8
|
+
|
|
9
|
+
return AttrsDict(
|
|
10
|
+
{
|
|
11
|
+
"width": 750,
|
|
12
|
+
"depth": 750,
|
|
13
|
+
"height": 15,
|
|
14
|
+
"cavity": {
|
|
15
|
+
"width": 120,
|
|
16
|
+
"depth": 940, # <!--475*2-->
|
|
17
|
+
"height": 20,
|
|
18
|
+
},
|
|
19
|
+
}
|
|
20
|
+
)
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def get_cryostat_metadata(det_type: str, order: int, xtal_slice: str) -> AttrsDict:
|
|
24
|
+
"""Extract the metadata corresponding to the cryostat
|
|
25
|
+
|
|
26
|
+
In future this will be moved into external metadata.
|
|
27
|
+
|
|
28
|
+
Parameters
|
|
29
|
+
----------
|
|
30
|
+
det_type
|
|
31
|
+
The detector type (should be icpc or bege).
|
|
32
|
+
order
|
|
33
|
+
The order number.
|
|
34
|
+
xtal_slice
|
|
35
|
+
The slice of the crystal (typically A or B).
|
|
36
|
+
"""
|
|
37
|
+
cryostat = {
|
|
38
|
+
"width": 101.6,
|
|
39
|
+
"height": 122.2,
|
|
40
|
+
"thickness": 1.5,
|
|
41
|
+
"position_cavity_from_top": 1.5,
|
|
42
|
+
"position_cavity_from_bottom": 0.8,
|
|
43
|
+
"position_from_bottom": 250.0,
|
|
44
|
+
}
|
|
45
|
+
xl_orders = [3, 8, 9, 10]
|
|
46
|
+
|
|
47
|
+
if det_type == "bege":
|
|
48
|
+
cryostat["height"] = 122.2
|
|
49
|
+
cryostat["width"] = 101.6
|
|
50
|
+
elif (det_type == "icpc") and (order in xl_orders):
|
|
51
|
+
cryostat["width"] = 114.3
|
|
52
|
+
cryostat["height"] = 171.0
|
|
53
|
+
elif det_type == "icpc":
|
|
54
|
+
cryostat["width"] = 101.6
|
|
55
|
+
cryostat["height"] = 171.0
|
|
56
|
+
else:
|
|
57
|
+
msg = "Only detector type icpc or bege are supported."
|
|
58
|
+
raise ValueError(msg)
|
|
59
|
+
|
|
60
|
+
# override batch 9
|
|
61
|
+
if order == 9 and xtal_slice == "B":
|
|
62
|
+
cryostat["width"] = 107.95
|
|
63
|
+
|
|
64
|
+
return AttrsDict(cryostat)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def get_castle_dimensions(table_num: int) -> AttrsDict:
|
|
68
|
+
"""Extract the lead castle dimensions for a given table.
|
|
69
|
+
|
|
70
|
+
Parameters
|
|
71
|
+
----------
|
|
72
|
+
table_num
|
|
73
|
+
The number of the table to use, can be 1 or 2.
|
|
74
|
+
"""
|
|
75
|
+
|
|
76
|
+
if table_num == 1:
|
|
77
|
+
lead_castle = {
|
|
78
|
+
"base": {
|
|
79
|
+
"width": 480,
|
|
80
|
+
"depth": 450,
|
|
81
|
+
"height": 500,
|
|
82
|
+
},
|
|
83
|
+
"inner_cavity": {
|
|
84
|
+
"width": 300,
|
|
85
|
+
"depth": 250,
|
|
86
|
+
"height": 500,
|
|
87
|
+
},
|
|
88
|
+
"cavity": {
|
|
89
|
+
"width": 120,
|
|
90
|
+
"depth": 100,
|
|
91
|
+
"height": 400,
|
|
92
|
+
},
|
|
93
|
+
"top": {
|
|
94
|
+
"width": 300,
|
|
95
|
+
"depth": 300,
|
|
96
|
+
"height": 90,
|
|
97
|
+
},
|
|
98
|
+
"front": {
|
|
99
|
+
"width": 160,
|
|
100
|
+
"depth": 100,
|
|
101
|
+
"height": 400,
|
|
102
|
+
},
|
|
103
|
+
}
|
|
104
|
+
elif table_num == 2:
|
|
105
|
+
lead_castle = {
|
|
106
|
+
"base": {
|
|
107
|
+
"width": 350,
|
|
108
|
+
"depth": 350,
|
|
109
|
+
"height": 400,
|
|
110
|
+
},
|
|
111
|
+
"inner_cavity": {
|
|
112
|
+
"width": 250,
|
|
113
|
+
"depth": 250,
|
|
114
|
+
"height": 400,
|
|
115
|
+
},
|
|
116
|
+
"top": {
|
|
117
|
+
"width": 200,
|
|
118
|
+
"depth": 200,
|
|
119
|
+
"height": 50,
|
|
120
|
+
},
|
|
121
|
+
"copper_plate": {
|
|
122
|
+
"width": 350,
|
|
123
|
+
"depth": 350,
|
|
124
|
+
"height": 10,
|
|
125
|
+
},
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
else:
|
|
129
|
+
msg = "Table number must be 1 or 2"
|
|
130
|
+
raise ValueError(msg)
|
|
131
|
+
|
|
132
|
+
return AttrsDict(lead_castle)
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def get_source_metadata(source_type: str, meas_type: str = "") -> AttrsDict:
|
|
136
|
+
"""Get the dimensions of the source and collimator.
|
|
137
|
+
|
|
138
|
+
Parameters
|
|
139
|
+
----------
|
|
140
|
+
source_type
|
|
141
|
+
The type of source (am_collimated, am, ba, co or th)
|
|
142
|
+
meas_type
|
|
143
|
+
The measurement (for th only) either lat or top.
|
|
144
|
+
"""
|
|
145
|
+
if source_type == "am_collimated":
|
|
146
|
+
source = {
|
|
147
|
+
"height": 2.0,
|
|
148
|
+
"width": 1.0,
|
|
149
|
+
"capsule": {
|
|
150
|
+
"width": 20,
|
|
151
|
+
"depth": None,
|
|
152
|
+
"height": 10,
|
|
153
|
+
},
|
|
154
|
+
"collimator": {
|
|
155
|
+
"width": 30,
|
|
156
|
+
"depth": 30,
|
|
157
|
+
"height": 65,
|
|
158
|
+
"beam_height": 25.6,
|
|
159
|
+
"beam_width": 1.0,
|
|
160
|
+
"window": 0.2,
|
|
161
|
+
},
|
|
162
|
+
}
|
|
163
|
+
elif source_type == "am":
|
|
164
|
+
source = {
|
|
165
|
+
"height": 0.1,
|
|
166
|
+
"width": 1.0,
|
|
167
|
+
"capsule": {
|
|
168
|
+
"width": 11.08,
|
|
169
|
+
"depth": 23.08,
|
|
170
|
+
"height": 2.02,
|
|
171
|
+
},
|
|
172
|
+
}
|
|
173
|
+
elif source_type == "co":
|
|
174
|
+
source = {
|
|
175
|
+
"height": 0.1,
|
|
176
|
+
"width": 5.0,
|
|
177
|
+
"foil": {"width": 20, "height": 0.5},
|
|
178
|
+
"al_ring": {"height": 3.0, "width_max": 30, "width_min": 20},
|
|
179
|
+
}
|
|
180
|
+
elif source_type == "ba":
|
|
181
|
+
source = {
|
|
182
|
+
"height": 0.1,
|
|
183
|
+
"width": 5.0,
|
|
184
|
+
"foil": {
|
|
185
|
+
"width": 26.0,
|
|
186
|
+
"height": 0.5,
|
|
187
|
+
},
|
|
188
|
+
"al_ring": {"height": 3.0, "width_max": 30, "width_min": 26},
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
elif source_type == "th":
|
|
192
|
+
source = {
|
|
193
|
+
"height": 1.0,
|
|
194
|
+
"width": 1.0,
|
|
195
|
+
"capsule": {
|
|
196
|
+
"height": 7.0,
|
|
197
|
+
"width": 2.0,
|
|
198
|
+
},
|
|
199
|
+
"epoxy": {"height": 2.2, "width": 1.6},
|
|
200
|
+
"plates": {"height": 2.0, "width": 8.0, "cavity_width": 2.0},
|
|
201
|
+
"collimator": {
|
|
202
|
+
"height": 30.0,
|
|
203
|
+
"depth": 30.0,
|
|
204
|
+
"width": 30.0,
|
|
205
|
+
"beam_height": 15.0,
|
|
206
|
+
"beam_width": 1.0,
|
|
207
|
+
},
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
if meas_type == "top":
|
|
211
|
+
source["offset_height"] = 0.0
|
|
212
|
+
elif meas_type == "lat":
|
|
213
|
+
source["offset_height"] = 18.0
|
|
214
|
+
else:
|
|
215
|
+
msg = "can only have top or lat measurements"
|
|
216
|
+
raise RuntimeError(msg)
|
|
217
|
+
else:
|
|
218
|
+
msg = f"source type can only be am_collimated, ba, co, am or th not {source_type}"
|
|
219
|
+
raise RuntimeError(msg)
|
|
220
|
+
|
|
221
|
+
return AttrsDict(source)
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
def get_source_holder_metadata(source_type: str, meas_type: str = "lat") -> AttrsDict:
|
|
225
|
+
"""Get the dimensions of the source holder.
|
|
226
|
+
|
|
227
|
+
Parameters
|
|
228
|
+
----------
|
|
229
|
+
source_type
|
|
230
|
+
The type of source (am_collimated, am, ba, co or th)
|
|
231
|
+
meas_type
|
|
232
|
+
The measurement (for th only) either lat or top.
|
|
233
|
+
"""
|
|
234
|
+
|
|
235
|
+
if source_type in ["co", "ba", "am_collimated"]:
|
|
236
|
+
source_holder = {
|
|
237
|
+
"source": {
|
|
238
|
+
"top_plate_height": 3.0,
|
|
239
|
+
"top_plate_width": 30.0,
|
|
240
|
+
"top_height": 10.0,
|
|
241
|
+
"top_inner_width": 20.0,
|
|
242
|
+
"top_bottom_height": 6.1,
|
|
243
|
+
"bottom_inner_width": 102.0,
|
|
244
|
+
},
|
|
245
|
+
"outer_width": 108.0,
|
|
246
|
+
"inner_width": 87.0,
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
elif source_type == "am":
|
|
250
|
+
source_holder = {
|
|
251
|
+
"source": {
|
|
252
|
+
"top_height": 10.0,
|
|
253
|
+
"top_inner_width": 7.39,
|
|
254
|
+
"top_inner_depth": 15.39,
|
|
255
|
+
"bottom_inner_width": 102.0,
|
|
256
|
+
"top_bottom_height": 5.6,
|
|
257
|
+
"top_plate_width": 11.08,
|
|
258
|
+
"top_plate_depth": 23.08,
|
|
259
|
+
"top_plate_height": 2.0,
|
|
260
|
+
},
|
|
261
|
+
"outer_width": 108.0,
|
|
262
|
+
"inner_width": 87.0,
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
elif source_type == "th":
|
|
266
|
+
source_holder = {
|
|
267
|
+
"source": {
|
|
268
|
+
"height": 30.0,
|
|
269
|
+
"cavity_width": 3.0,
|
|
270
|
+
"bottom_height": 3.0,
|
|
271
|
+
"bottom_width": 50.0,
|
|
272
|
+
},
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
if meas_type == "lat":
|
|
276
|
+
source_holder["outer_width"] = 181.6
|
|
277
|
+
source_holder["inner_width"] = 101.6
|
|
278
|
+
source_holder["lat"] = {"height": 65.0, "cavity_height": 60.0, "cavity_width": 50.0}
|
|
279
|
+
else:
|
|
280
|
+
msg = f"Source must be co, ba, am_collimated, am or th not {source_type}"
|
|
281
|
+
raise RuntimeError(msg)
|
|
282
|
+
|
|
283
|
+
return AttrsDict(source_holder)
|
pygeomhades/metadata.py
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import copy
|
|
4
|
+
from importlib import resources
|
|
5
|
+
|
|
6
|
+
from dbetto import AttrsDict, TextDB
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class PublicMetadataProxy:
|
|
10
|
+
"""Provides proxies to transparently replace legend hardware metadata with sample data."""
|
|
11
|
+
|
|
12
|
+
def __init__(self):
|
|
13
|
+
dummy = TextDB(resources.files("pygeomhades") / "configs" / "dummy_geom")
|
|
14
|
+
|
|
15
|
+
self.hardware = AttrsDict({"detectors": {"germanium": {"diodes": _DiodeProxy(dummy)}}})
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class _DiodeProxy:
|
|
19
|
+
def __init__(self, dummy_detectors: TextDB):
|
|
20
|
+
self.dummy_detectors = dummy_detectors
|
|
21
|
+
|
|
22
|
+
def __getitem__(self, det_name: str) -> AttrsDict:
|
|
23
|
+
det = self.dummy_detectors[det_name[0] + "99000A"]
|
|
24
|
+
m = copy.copy(det)
|
|
25
|
+
m.name = det_name
|
|
26
|
+
m.production.order = 0
|
|
27
|
+
m.production.slice = "A"
|
|
28
|
+
return m
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd">
|
|
3
|
+
|
|
4
|
+
<define>
|
|
5
|
+
<quantity name="bottom_plate_x" type="length" value="bottom_plate_width" unit="mm"/>
|
|
6
|
+
<quantity name="bottom_plate_y" type="length" value="bottom_plate_depth" unit="mm"/>
|
|
7
|
+
<quantity name="bottom_plate_z" type="length" value="bottom_plate_height" unit="mm"/>
|
|
8
|
+
<quantity name="cavity_bottom_plate_x" type="length" value="bottom_cavity_plate_width" unit="mm"/>
|
|
9
|
+
<quantity name="cavity_bottom_plate_y" type="length" value="bottom_cavity_plate_depth" unit="mm"/>
|
|
10
|
+
<quantity name="cavity_bottom_plate_z" type="length" value="bottom_cavity_plate_height" unit="mm"/>
|
|
11
|
+
<position name="pos_cavity_bottom_plate" y="(bottom_plate_y)/2"/>
|
|
12
|
+
</define>
|
|
13
|
+
|
|
14
|
+
<materials>
|
|
15
|
+
<element Z="13" formula="Al" name="Aluminium" >
|
|
16
|
+
<atom value="26.98" />
|
|
17
|
+
</element>
|
|
18
|
+
<material name="Al" formula="Al" >
|
|
19
|
+
<D value="2.7" unit="g/cm3" />
|
|
20
|
+
<fraction n="1" ref="Aluminium"/>
|
|
21
|
+
</material>
|
|
22
|
+
</materials>
|
|
23
|
+
|
|
24
|
+
<solids>
|
|
25
|
+
<box name="bottom_plate" x="bottom_plate_x" y="bottom_plate_y" z="bottom_plate_z"/>
|
|
26
|
+
<box name="cavity_bottom_plate" x="cavity_bottom_plate_x" y="cavity_bottom_plate_y" z="cavity_bottom_plate_z"/>
|
|
27
|
+
<subtraction name="final_bottom_plate" >
|
|
28
|
+
<first ref="bottom_plate"/> <second ref="cavity_bottom_plate"/>
|
|
29
|
+
<positionref ref="pos_cavity_bottom_plate" />
|
|
30
|
+
</subtraction>
|
|
31
|
+
</solids>
|
|
32
|
+
|
|
33
|
+
<structure>
|
|
34
|
+
<volume name="Bottom_plate">
|
|
35
|
+
<materialref ref="Al"/>
|
|
36
|
+
<solidref ref="final_bottom_plate"/>
|
|
37
|
+
</volume>
|
|
38
|
+
</structure>
|
|
39
|
+
|
|
40
|
+
<setup name="Default" version="1.0">
|
|
41
|
+
<world ref="Bottom_plate"/>
|
|
42
|
+
</setup>
|
|
43
|
+
|
|
44
|
+
</gdml>
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd">
|
|
3
|
+
|
|
4
|
+
<define>
|
|
5
|
+
<constant name="TWOPI" value="2.*pi"/>
|
|
6
|
+
<quantity name="cryostat_z" type="length" value="cryostat_height" unit="mm"/>
|
|
7
|
+
<quantity name="cryostat_radius" type="length" value="cryostat_width/2" unit="mm"/>
|
|
8
|
+
<quantity name="cryostat_cavity_radius" type="length" value="(cryostat_width-2*cryostat_thickness)/2" unit="mm"/>
|
|
9
|
+
<quantity name="start_cavity_z" type="length" value="position_cryostat_cavity_fromTop" unit="mm"/>
|
|
10
|
+
<quantity name="end_cavity_z" type="length" value="(cryostat_height-position_cryostat_cavity_fromBottom)" unit="mm"/>
|
|
11
|
+
</define>
|
|
12
|
+
|
|
13
|
+
<materials>
|
|
14
|
+
<element Z="13" formula="Al" name="Aluminium" >
|
|
15
|
+
<atom value="26.98" />
|
|
16
|
+
</element>
|
|
17
|
+
<element Z="29" formula="Cu" name="Copper" >
|
|
18
|
+
<atom value="63.546" />
|
|
19
|
+
</element>
|
|
20
|
+
<element Z="82" formula="Pb" name="Lead" >
|
|
21
|
+
<atom value="207.2" />
|
|
22
|
+
</element>
|
|
23
|
+
<element Z="83" formula="Bi" name="Bismuth" >
|
|
24
|
+
<atom value="208.98" />
|
|
25
|
+
</element>
|
|
26
|
+
<material name="EN_AW-2011T8" formula="Al_Cu6BiPb" >
|
|
27
|
+
<D value="2.84" unit="g/cm3" />
|
|
28
|
+
<fraction n="0.06" ref="Copper" />
|
|
29
|
+
<fraction n="0.004" ref="Lead" />
|
|
30
|
+
<fraction n="0.004" ref="Bismuth" />
|
|
31
|
+
<fraction n="0.932" ref="Aluminium" />
|
|
32
|
+
</material>
|
|
33
|
+
</materials>
|
|
34
|
+
|
|
35
|
+
<solids>
|
|
36
|
+
<polycone name="cryostat" startphi="0" deltaphi="TWOPI" aunit="rad">
|
|
37
|
+
<zplane rmin="0" rmax="cryostat_radius" z="0" />
|
|
38
|
+
<zplane rmin="0" rmax="cryostat_radius" z="start_cavity_z" />
|
|
39
|
+
<zplane rmin="cryostat_cavity_radius" rmax="cryostat_radius" z="start_cavity_z" />
|
|
40
|
+
<zplane rmin="cryostat_cavity_radius" rmax="cryostat_radius" z="end_cavity_z" />
|
|
41
|
+
<zplane rmin="0" rmax="cryostat_radius" z="end_cavity_z" />
|
|
42
|
+
<zplane rmin="0" rmax="cryostat_radius" z="cryostat_z" />
|
|
43
|
+
</polycone>
|
|
44
|
+
</solids>
|
|
45
|
+
|
|
46
|
+
<structure>
|
|
47
|
+
<volume name="Cryostat">
|
|
48
|
+
<materialref ref="EN_AW-2011T8"/>
|
|
49
|
+
<solidref ref="cryostat"/>
|
|
50
|
+
</volume>
|
|
51
|
+
</structure>
|
|
52
|
+
|
|
53
|
+
<setup name="Default" version="1.0">
|
|
54
|
+
<world ref="Cryostat"/>
|
|
55
|
+
</setup>
|
|
56
|
+
|
|
57
|
+
</gdml>
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd">
|
|
3
|
+
|
|
4
|
+
<define>
|
|
5
|
+
<constant name="TWOPI" value="2.*pi"/>
|
|
6
|
+
<quantity name="max_radius" type="length" value="max_radius_in_mm" unit="mm"/>
|
|
7
|
+
<quantity name="outer_height" type="length" value="outer_height_in_mm" unit="mm"/>
|
|
8
|
+
<quantity name="inner_height" type="length" value="inner_height_in_mm" unit="mm"/>
|
|
9
|
+
<quantity name="outer_radius" type="length" value="outer_radius_in_mm" unit="mm"/>
|
|
10
|
+
<quantity name="inner_radius" type="length" value="inner_radius_in_mm" unit="mm"/>
|
|
11
|
+
<quantity name="pos_top_ring_z" type="length" value="position_top_ring_in_mm" unit="mm"/>
|
|
12
|
+
<quantity name="end_top_ring_z" type="length" value="end_top_ring_in_mm" unit="mm"/>
|
|
13
|
+
</define>
|
|
14
|
+
|
|
15
|
+
<materials>
|
|
16
|
+
<element Z="29" formula="Cu" name="Copper" >
|
|
17
|
+
<atom value="63.546" />
|
|
18
|
+
</element>
|
|
19
|
+
<element Z="82" formula="Pb" name="Lead" >
|
|
20
|
+
<atom value="207.2" />
|
|
21
|
+
</element>
|
|
22
|
+
<element Z="83" formula="Bi" name="Bismuth" >
|
|
23
|
+
<atom value="208.98" />
|
|
24
|
+
</element>
|
|
25
|
+
<element Z="13" formula="Al" name="Aluminium" >
|
|
26
|
+
<atom value="26.98" />
|
|
27
|
+
</element>
|
|
28
|
+
<material name="EN_AW-2011T8" formula="Al_Cu6BiPb" >
|
|
29
|
+
<D value="2.84" unit="g/cm3" />
|
|
30
|
+
<fraction n="0.06" ref="Copper" />
|
|
31
|
+
<fraction n="0.004" ref="Lead" />
|
|
32
|
+
<fraction n="0.004" ref="Bismuth" />
|
|
33
|
+
<fraction n="0.932" ref="Aluminium" />
|
|
34
|
+
</material>
|
|
35
|
+
</materials>
|
|
36
|
+
|
|
37
|
+
<solids>
|
|
38
|
+
<polycone name="holder" startphi="0" deltaphi="TWOPI" aunit="rad">
|
|
39
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="0" />
|
|
40
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="pos_top_ring_z" />
|
|
41
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="pos_top_ring_z" />
|
|
42
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="end_top_ring_z" />
|
|
43
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z=" end_top_ring_z" />
|
|
44
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="inner_height" />
|
|
45
|
+
<zplane rmin="0" rmax="outer_radius" z="inner_height" />
|
|
46
|
+
<zplane rmin="0" rmax="outer_radius" z="outer_height" />
|
|
47
|
+
</polycone>
|
|
48
|
+
</solids>
|
|
49
|
+
|
|
50
|
+
<structure>
|
|
51
|
+
<volume name="Holder">
|
|
52
|
+
<materialref ref="EN_AW-2011T8"/>
|
|
53
|
+
<solidref ref="holder"/>
|
|
54
|
+
</volume>
|
|
55
|
+
</structure>
|
|
56
|
+
|
|
57
|
+
<setup name="Default" version="1.0">
|
|
58
|
+
<world ref="Holder"/>
|
|
59
|
+
</setup>
|
|
60
|
+
|
|
61
|
+
</gdml>
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd">
|
|
3
|
+
|
|
4
|
+
<define>
|
|
5
|
+
<constant name="TWOPI" value="2.*pi"/>
|
|
6
|
+
<quantity name="max_radius" type="length" value="max_radius_in_mm" unit="mm"/>
|
|
7
|
+
<quantity name="outer_height" type="length" value="outer_height_in_mm" unit="mm"/>
|
|
8
|
+
<quantity name="inner_height" type="length" value="inner_height_in_mm" unit="mm"/>
|
|
9
|
+
<quantity name="outer_radius" type="length" value="outer_radius_in_mm" unit="mm"/>
|
|
10
|
+
<quantity name="inner_radius" type="length" value="inner_radius_in_mm" unit="mm"/>
|
|
11
|
+
<quantity name="bottom_cyl_inner_radius" type="length" value="inner_bottom_cyl_radius_in_mm" unit="mm"/>
|
|
12
|
+
<quantity name="bottom_cyl_outer_radius" type="length" value="outer_bottom_cyl_radius_in_mm" unit="mm"/>
|
|
13
|
+
<quantity name="edge_height" type="length" value="edge_height_in_mm" unit="mm"/>
|
|
14
|
+
<quantity name="pos_bottom_ring_z" type="length" value="pos_bottom_ring_in_mm" unit="mm"/>
|
|
15
|
+
<quantity name="pos_top_ring_z" type="length" value="pos_top_ring_in_mm" unit="mm"/>
|
|
16
|
+
<quantity name="end_top_ring_z" type="length" value="end_top_ring_in_mm" unit="mm"/>
|
|
17
|
+
<quantity name="end_bottom_ring_z" type="length" value="end_bottom_ring_in_mm" unit="mm"/>
|
|
18
|
+
<quantity name="end_bottom_cyl_outer_z" type="length" value="end_bottom_cyl_outer_in_mm" unit="mm" />
|
|
19
|
+
<quantity name="end_bottom_cyl_inner_z" type="length" value="end_bottom_cyl_inner_in_mm" unit="mm" />
|
|
20
|
+
</define>
|
|
21
|
+
|
|
22
|
+
<materials>
|
|
23
|
+
<element Z="13" formula="Al" name="Aluminium" >
|
|
24
|
+
<atom value="26.98" />
|
|
25
|
+
</element>
|
|
26
|
+
<element Z="29" formula="Cu" name="Copper" >
|
|
27
|
+
<atom value="63.546" />
|
|
28
|
+
</element>
|
|
29
|
+
<element Z="82" formula="Pb" name="Lead" >
|
|
30
|
+
<atom value="207.2" />
|
|
31
|
+
</element>
|
|
32
|
+
<element Z="83" formula="Bi" name="Bismuth" >
|
|
33
|
+
<atom value="208.98" />
|
|
34
|
+
</element>
|
|
35
|
+
<material name="EN_AW-2011T8" formula="Al_Cu6BiPb" >
|
|
36
|
+
<D value="2.84" unit="g/cm3" />
|
|
37
|
+
<fraction n="0.06" ref="Copper" />
|
|
38
|
+
<fraction n="0.004" ref="Lead" />
|
|
39
|
+
<fraction n="0.004" ref="Bismuth" />
|
|
40
|
+
<fraction n="0.932" ref="Aluminium" />
|
|
41
|
+
</material>
|
|
42
|
+
</materials>
|
|
43
|
+
|
|
44
|
+
<solids>
|
|
45
|
+
<polycone name="holder" startphi="0" deltaphi="TWOPI" aunit="rad">
|
|
46
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="0" />
|
|
47
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="edge_height" />
|
|
48
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="edge_height" />
|
|
49
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="pos_top_ring_z" />
|
|
50
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="pos_top_ring_z" />
|
|
51
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="end_top_ring_z" />
|
|
52
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z=" end_top_ring_z" />
|
|
53
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="pos_bottom_ring_z" />
|
|
54
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="pos_bottom_ring_z" />
|
|
55
|
+
<zplane rmin="inner_radius" rmax="max_radius" z="end_bottom_ring_z" />
|
|
56
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="end_bottom_ring_z" />
|
|
57
|
+
<zplane rmin="inner_radius" rmax="outer_radius" z="inner_height" />
|
|
58
|
+
<zplane rmin="bottom_cyl_inner_radius" rmax="outer_radius" z="inner_height" />
|
|
59
|
+
<zplane rmin="bottom_cyl_inner_radius" rmax="outer_radius" z="outer_height" />
|
|
60
|
+
<zplane rmin="bottom_cyl_inner_radius" rmax="bottom_cyl_outer_radius" z="outer_height" />
|
|
61
|
+
<zplane rmin="bottom_cyl_inner_radius" rmax="bottom_cyl_outer_radius" z="end_bottom_cyl_inner_z" />
|
|
62
|
+
<zplane rmin="0" rmax="bottom_cyl_outer_radius" z="end_bottom_cyl_inner_z" />
|
|
63
|
+
<zplane rmin="0" rmax="bottom_cyl_outer_radius" z="end_bottom_cyl_outer_z" />
|
|
64
|
+
</polycone>
|
|
65
|
+
</solids>
|
|
66
|
+
|
|
67
|
+
<structure>
|
|
68
|
+
<volume name="Holder">
|
|
69
|
+
<materialref ref="EN_AW-2011T8"/>
|
|
70
|
+
<solidref ref="holder"/>
|
|
71
|
+
</volume>
|
|
72
|
+
</structure>
|
|
73
|
+
|
|
74
|
+
<setup name="Default" version="1.0">
|
|
75
|
+
<world ref="Holder"/>
|
|
76
|
+
</setup>
|
|
77
|
+
|
|
78
|
+
</gdml>
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
<?xml version="1.0" ?>
|
|
2
|
+
<gdml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://service-spi.web.cern.ch/service-spi/app/releases/GDML/schema/gdml.xsd">
|
|
3
|
+
|
|
4
|
+
<define>
|
|
5
|
+
<quantity name="base_x_1" type="length" value="base_width_1" unit="mm" />
|
|
6
|
+
<quantity name="base_y_1" type="length" value="base_depth_1" unit="mm"/>
|
|
7
|
+
<quantity name="base_z_1" type="length" value="base_height_1" unit="mm"/>
|
|
8
|
+
<quantity name="inner_cavity_x_1" type="length" value="inner_cavity_width_1" unit="mm"/>
|
|
9
|
+
<quantity name="inner_cavity_y_1" type="length" value="inner_cavity_depth_1" unit="mm"/>
|
|
10
|
+
<quantity name="inner_cavity_z_1" type="length" value="inner_cavity_height_1" unit="mm"/>
|
|
11
|
+
<quantity name="cavity_x_1" type="length" value="cavity_width_1" unit="mm"/>
|
|
12
|
+
<quantity name="cavity_y_1" type="length" value="cavity_depth_1" unit="mm"/>
|
|
13
|
+
<quantity name="cavity_z_1" type="length" value="cavity_height_1" unit="mm"/>
|
|
14
|
+
<quantity name="top_x_1" type="length" value="top_width_1" unit="mm"/>
|
|
15
|
+
<quantity name="top_y_1" type="length" value="top_depth_1" unit="mm"/>
|
|
16
|
+
<quantity name="top_z_1" type="length" value="top_height_1" unit="mm"/>
|
|
17
|
+
<quantity name="front_x_1" type="length" value="front_width_1" unit="mm"/>
|
|
18
|
+
<quantity name="front_y_1" type="length" value="front_depth_1" unit="mm"/>
|
|
19
|
+
<quantity name="front_z_1" type="length" value="front_height_1" unit="mm"/>
|
|
20
|
+
<position name="pos_cavity_base_1" y="(inner_cavity_y_1/2+(base_y_1-inner_cavity_y_1)/4)" z="(inner_cavity_z_1-cavity_z_1)/2" />
|
|
21
|
+
<position name="pos_top_1" z="-(base_z_1+top_z_1)/2 - 0.01" />
|
|
22
|
+
<position name="pos_front_1" y="(base_y_1+front_y_1)/2 - 0.01" z="(base_z_1-front_z_1)/2" />
|
|
23
|
+
<position name="center" x="0" y="0" z="0" />
|
|
24
|
+
</define>
|
|
25
|
+
|
|
26
|
+
<materials>
|
|
27
|
+
<element Z="82" formula="Pb" name="Lead" >
|
|
28
|
+
<atom value="207.2" />
|
|
29
|
+
</element>
|
|
30
|
+
<material name="Pb" formula="Pb" >
|
|
31
|
+
<D value="2.84" unit="g/cm3" />
|
|
32
|
+
<fraction n="1" ref="Lead"/>
|
|
33
|
+
</material>
|
|
34
|
+
</materials>
|
|
35
|
+
|
|
36
|
+
<solids>
|
|
37
|
+
<box name="base_lead_castle_1" x="base_x_1" y="base_y_1" z="base_z_1"/>
|
|
38
|
+
<box name="inner_cavity_base_1" x="inner_cavity_x_1" y="inner_cavity_y_1" z="inner_cavity_z_1"/>
|
|
39
|
+
<box name="cavity_base_1" x="cavity_x_1" y="cavity_y_1" z="cavity_z_1"/>
|
|
40
|
+
<box name="top_lead_castle_1" x="top_x_1" y="top_y_1" z="top_z_1"/>
|
|
41
|
+
<box name="front_1" x="front_x_1" y="front_y_1" z="front_z_1"/>
|
|
42
|
+
<union name="total_cavity_1" >
|
|
43
|
+
<first ref="inner_cavity_base_1"/> <second ref="cavity_base_1"/>
|
|
44
|
+
<positionref ref="pos_cavity_base_1" />
|
|
45
|
+
</union>
|
|
46
|
+
<subtraction name="base_cavity_1" >
|
|
47
|
+
<first ref="base_lead_castle_1"/> <second ref="total_cavity_1"/>
|
|
48
|
+
<positionref ref="center" />
|
|
49
|
+
</subtraction>
|
|
50
|
+
<union name="top_base_1" >
|
|
51
|
+
<first ref="base_cavity_1"/> <second ref="top_lead_castle_1"/>
|
|
52
|
+
<positionref ref="pos_top_1" />
|
|
53
|
+
</union>
|
|
54
|
+
<union name="final_lead_castle_1" >
|
|
55
|
+
<first ref="top_base_1"/> <second ref="front_1"/>
|
|
56
|
+
<positionref ref="pos_front_1" />
|
|
57
|
+
</union>
|
|
58
|
+
</solids>
|
|
59
|
+
|
|
60
|
+
<structure>
|
|
61
|
+
<volume name="Lead_castle">
|
|
62
|
+
<materialref ref="G4_Pb"/>
|
|
63
|
+
<solidref ref="final_lead_castle_1"/>
|
|
64
|
+
</volume>
|
|
65
|
+
</structure>
|
|
66
|
+
|
|
67
|
+
<setup name="Default" version="1.0">
|
|
68
|
+
<world ref="Lead_castle"/>
|
|
69
|
+
</setup>
|
|
70
|
+
|
|
71
|
+
</gdml>
|