File indexing completed on 2026-04-09 07:48:51
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021 """
0022
0023 http://lxml.de/tutorial.html#the-e-factory
0024
0025 """
0026
0027 import os, re, logging, math, collections
0028
0029 log = logging.getLogger(__name__)
0030
0031 from opticks.ana.base import opticks_main
0032
0033 import numpy as np
0034 import lxml.etree as ET
0035 import lxml.html as HT
0036 from lxml.builder import E
0037
0038
0039 tostring_ = lambda _:ET.tostring(_,pretty_print=True)
0040 exists_ = lambda _:os.path.exists(os.path.expandvars(_))
0041 parse_ = lambda _:ET.parse(os.path.expandvars(_)).getroot()
0042 fparse_ = lambda _:HT.fragments_fromstring(file(os.path.expandvars(_)).read())
0043 pp_ = lambda d:"\n".join([" %30s : %f " % (k,d[k]) for k in sorted(d.keys())])
0044
0045
0046 materials=ET.fromstring(r"""
0047 <materials>
0048 <material name="/dd/Materials/Pyrex0xc1005e0" state="solid">
0049 </material>
0050 <material name="/dd/Materials/MineralOil0xbf5c830" state="solid">
0051 </material>
0052 <material name="/dd/Materials/UnstStainlessSteel0xc5c11e8" state="solid">
0053 </material>
0054 </materials>
0055 """)
0056
0057
0058 solids=ET.fromstring(r"""
0059 <solids>
0060
0061 <sphere aunit="deg" deltaphi="360" deltatheta="180" lunit="mm" name="pmt-hemi-face-glass0xc0fde80" rmax="131" rmin="0" startphi="0" starttheta="0"/>
0062 <sphere aunit="deg" deltaphi="360" deltatheta="180" lunit="mm" name="pmt-hemi-top-glass0xc0fdef0" rmax="102" rmin="0" startphi="0" starttheta="0"/>
0063 <intersection name="pmt-hemi-face-glass*ChildForpmt-hemi-glass-bulb0xbf1f8d0">
0064 <first ref="pmt-hemi-face-glass0xc0fde80"/>
0065 <second ref="pmt-hemi-top-glass0xc0fdef0"/>
0066 <position name="pmt-hemi-face-glass*ChildForpmt-hemi-glass-bulb0xbf1f8d0_pos" unit="mm" x="0" y="0" z="43"/>
0067 </intersection>
0068
0069 <sphere aunit="deg" deltaphi="360" deltatheta="180" lunit="mm" name="pmt-hemi-bot-glass0xc0feac8" rmax="102" rmin="0" startphi="0" starttheta="0"/>
0070
0071 <intersection name="pmt-hemi-glass-bulb0xc0feb98">
0072 <first ref="pmt-hemi-face-glass*ChildForpmt-hemi-glass-bulb0xbf1f8d0"/>
0073 <second ref="pmt-hemi-bot-glass0xc0feac8"/>
0074 <position name="pmt-hemi-glass-bulb0xc0feb98_pos" unit="mm" x="0" y="0" z="69"/>
0075 </intersection>
0076
0077 <tube aunit="deg" deltaphi="360" lunit="mm" name="pmt-hemi-base0xc0fecb0" rmax="42.25" rmin="0" startphi="0" z="169"/>
0078
0079 <union name="pmt-hemi0xc0fed90">
0080 <first ref="pmt-hemi-glass-bulb0xc0feb98"/>
0081 <second ref="pmt-hemi-base0xc0fecb0"/>
0082 <position name="pmt-hemi0xc0fed90_pos" unit="mm" x="0" y="0" z="-84.5"/>
0083 </union>
0084
0085 <tube aunit="deg" deltaphi="360" lunit="mm" name="AdPmtCollar0xc2c5260" rmax="106" rmin="105" startphi="0" z="12.7"/>
0086
0087 <tube aunit="deg" deltaphi="360" lunit="mm" name="oil0xbf5ed48" rmax="2488" rmin="0" startphi="0" z="4955"/>
0088
0089
0090 </solids>
0091 """)
0092
0093
0094 """
0095 <physvol name="/dd/Geometry/AD/lvOIL#pvOAV0xbf8f638">
0096 <volumeref ref="/dd/Geometry/AD/lvOAV0xbf1c760"/>
0097 <position name="/dd/Geometry/AD/lvOIL#pvOAV0xbf8f638_pos" unit="mm" x="0" y="0" z="-49"/>
0098 <rotation name="/dd/Geometry/AD/lvOIL#pvOAV0xbf8f638_rot" unit="deg" x="0" y="0" z="-180"/>
0099 </physvol>
0100
0101
0102 """
0103
0104 structure={}
0105
0106 structure["collar"]=ET.fromstring(r"""
0107
0108 <structure>
0109
0110 <volume name="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0">
0111 <materialref ref="/dd/Materials/UnstStainlessSteel0xc5c11e8"/>
0112 <solidref ref="AdPmtCollar0xc2c5260"/>
0113 </volume>
0114
0115 <volume name="/dd/Geometry/AD/lvOIL0xbf5e0b8">
0116 <materialref ref="/dd/Materials/MineralOil0xbf5c830"/>
0117 <solidref ref="oil0xbf5ed48"/>
0118
0119 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920">
0120 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0121 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_pos" unit="mm" x="-2249.09266802649" y="-296.098667051187" z="-1750"/>
0122 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_rot" unit="deg" x="90" y="-82.5" z="90"/>
0123 </physvol>
0124
0125
0126 </volume>
0127 </structure>
0128 """)
0129
0130
0131 structure["collar2"]=ET.fromstring(r"""
0132
0133 <structure>
0134
0135 <volume name="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0">
0136 <materialref ref="/dd/Materials/UnstStainlessSteel0xc5c11e8"/>
0137 <solidref ref="AdPmtCollar0xc2c5260"/>
0138 </volume>
0139
0140 <volume name="/dd/Geometry/AD/lvOIL0xbf5e0b8">
0141 <materialref ref="/dd/Materials/MineralOil0xbf5c830"/>
0142 <solidref ref="oil0xbf5ed48"/>
0143
0144 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920">
0145 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0146 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_pos" unit="mm" x="-2249.09266802649" y="-296.098667051187" z="-1750"/>
0147 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_rot" unit="deg" x="90" y="-82.5" z="90"/>
0148 </physvol>
0149
0150
0151 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmtCollar0xc25dce8">
0152 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0153 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmtCollar0xc25dce8_pos" unit="mm" x="-2095.82071950185" y="-868.117366320206" z="-1750"/>
0154 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmtCollar0xc25dce8_rot" unit="deg" x="90" y="-67.5" z="90"/>
0155 </physvol>
0156
0157
0158
0159
0160 </volume>
0161 </structure>
0162 """)
0163
0164
0165
0166
0167
0168
0169
0170 structure["pmt1"]=ET.fromstring(r"""
0171 <structure>
0172 <volume name="/dd/Geometry/PMT/lvPmtHemi0xc133740">
0173 <materialref ref="/dd/Materials/Pyrex0xc1005e0"/>
0174 <solidref ref="pmt-hemi0xc0fed90"/>
0175 </volume>
0176
0177 <volume name="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0">
0178 <materialref ref="/dd/Materials/UnstStainlessSteel0xc5c11e8"/>
0179 <solidref ref="AdPmtCollar0xc2c5260"/>
0180 </volume>
0181
0182 <volume name="/dd/Geometry/AD/lvOIL0xbf5e0b8">
0183 <materialref ref="/dd/Materials/MineralOil0xbf5c830"/>
0184 <solidref ref="oil0xbf5ed48"/>
0185
0186 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40">
0187 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0188 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40_pos" unit="mm" x="-2304.61358026342" y="-303.40813381551" z="-1750"/>
0189 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40_rot" unit="deg" x="90" y="-82.5" z="90"/>
0190 </physvol>
0191
0192 </volume>
0193 </structure>
0194 """)
0195
0196 r"""
0197 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40_rot" unit="deg" x="90" y="0" z="90"/>
0198
0199 """
0200
0201
0202
0203
0204
0205 structure["pmt2"]=ET.fromstring(r"""
0206 <structure>
0207 <volume name="/dd/Geometry/PMT/lvPmtHemi0xc133740">
0208 <materialref ref="/dd/Materials/Pyrex0xc1005e0"/>
0209 <solidref ref="pmt-hemi0xc0fed90"/>
0210 </volume>
0211
0212 <volume name="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0">
0213 <materialref ref="/dd/Materials/UnstStainlessSteel0xc5c11e8"/>
0214 <solidref ref="AdPmtCollar0xc2c5260"/>
0215 </volume>
0216
0217 <volume name="/dd/Geometry/AD/lvOIL0xbf5e0b8">
0218 <materialref ref="/dd/Materials/MineralOil0xbf5c830"/>
0219 <solidref ref="oil0xbf5ed48"/>
0220
0221 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40">
0222 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0223 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40_pos" unit="mm" x="-2304.61358026342" y="-303.40813381551" z="-1750"/>
0224 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40_rot" unit="deg" x="90" y="-82.5" z="90"/>
0225 </physvol>
0226
0227 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920">
0228 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0229 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_pos" unit="mm" x="-2249.09266802649" y="-296.098667051187" z="-1750"/>
0230 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_rot" unit="deg" x="90" y="-82.5" z="90"/>
0231 </physvol>
0232
0233 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmt0xc25dc28">
0234 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0235 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmt0xc25dc28_pos" unit="mm" x="-2147.55797332249" y="-889.547638532651" z="-1750"/>
0236 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmt0xc25dc28_rot" unit="deg" x="90" y="-67.5" z="90"/>
0237 </physvol>
0238
0239 </volume>
0240 </structure>
0241 """)
0242
0243
0244
0245 structure["pmt5"]=ET.fromstring(r"""
0246 <structure>
0247 <volume name="/dd/Geometry/PMT/lvPmtHemi0xc133740">
0248 <materialref ref="/dd/Materials/Pyrex0xc1005e0"/>
0249 <solidref ref="pmt-hemi0xc0fed90"/>
0250 </volume>
0251
0252 <volume name="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0">
0253 <materialref ref="/dd/Materials/UnstStainlessSteel0xc5c11e8"/>
0254 <solidref ref="AdPmtCollar0xc2c5260"/>
0255 </volume>
0256
0257
0258 <volume name="/dd/Geometry/AD/lvOIL0xbf5e0b8">
0259 <materialref ref="/dd/Materials/MineralOil0xbf5c830"/>
0260 <solidref ref="oil0xbf5ed48"/>
0261
0262
0263 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40">
0264 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0265 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40_pos" unit="mm" x="-2304.61358026342" y="-303.40813381551" z="-1750"/>
0266 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmt0xc2a6b40_rot" unit="deg" x="90" y="-82.5" z="90"/>
0267 </physvol>
0268
0269 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920">
0270 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0271 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_pos" unit="mm" x="-2249.09266802649" y="-296.098667051187" z="-1750"/>
0272 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:1#pvAdPmtUnit#pvAdPmtCollar0xc569920_rot" unit="deg" x="90" y="-82.5" z="90"/>
0273 </physvol>
0274
0275 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmt0xc25dc28">
0276 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0277 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmt0xc25dc28_pos" unit="mm" x="-2147.55797332249" y="-889.547638532651" z="-1750"/>
0278 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmt0xc25dc28_rot" unit="deg" x="90" y="-67.5" z="90"/>
0279 </physvol>
0280
0281 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmtCollar0xc25dce8">
0282 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0283 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmtCollar0xc25dce8_pos" unit="mm" x="-2095.82071950185" y="-868.117366320206" z="-1750"/>
0284 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:2#pvAdPmtUnit#pvAdPmtCollar0xc25dce8_rot" unit="deg" x="90" y="-67.5" z="90"/>
0285 </physvol>
0286
0287 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:3#pvAdPmtUnit#pvAdPmt0xc25dda0">
0288 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0289 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:3#pvAdPmtUnit#pvAdPmt0xc25dda0_pos" unit="mm" x="-1844.14983950698" y="-1415.06594173077" z="-1750"/>
0290 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:3#pvAdPmtUnit#pvAdPmt0xc25dda0_rot" unit="deg" x="90" y="-52.5" z="90"/>
0291 </physvol>
0292
0293 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:3#pvAdPmtUnit#pvAdPmtCollar0xc25de60">
0294 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0295 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:3#pvAdPmtUnit#pvAdPmtCollar0xc25de60_pos" unit="mm" x="-1799.72205245067" y="-1380.97530170628" z="-1750"/>
0296 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:3#pvAdPmtUnit#pvAdPmtCollar0xc25de60_rot" unit="deg" x="90" y="-52.5" z="90"/>
0297 </physvol>
0298
0299 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:4#pvAdPmtUnit#pvAdPmt0xc25df68">
0300 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0301 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:4#pvAdPmtUnit#pvAdPmt0xc25df68_pos" unit="mm" x="-1415.06594173077" y="-1844.14983950698" z="-1750"/>
0302 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:4#pvAdPmtUnit#pvAdPmt0xc25df68_rot" unit="deg" x="90" y="-37.5" z="90"/>
0303 </physvol>
0304
0305 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:4#pvAdPmtUnit#pvAdPmtCollar0xc25e078">
0306 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0307 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:4#pvAdPmtUnit#pvAdPmtCollar0xc25e078_pos" unit="mm" x="-1380.97530170628" y="-1799.72205245067" z="-1750"/>
0308 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:4#pvAdPmtUnit#pvAdPmtCollar0xc25e078_rot" unit="deg" x="90" y="-37.5" z="90"/>
0309 </physvol>
0310
0311 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:5#pvAdPmtUnit#pvAdPmt0xc25e180">
0312 <volumeref ref="/dd/Geometry/PMT/lvPmtHemi0xc133740"/>
0313 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:5#pvAdPmtUnit#pvAdPmt0xc25e180_pos" unit="mm" x="-889.547638532652" y="-2147.55797332249" z="-1750"/>
0314 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:5#pvAdPmtUnit#pvAdPmt0xc25e180_rot" unit="deg" x="90" y="-22.5" z="90"/>
0315 </physvol>
0316
0317
0318 <physvol name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:5#pvAdPmtUnit#pvAdPmtCollar0xc25e290">
0319 <volumeref ref="/dd/Geometry/PMT/lvAdPmtCollar0xbf21fb0"/>
0320 <position name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:5#pvAdPmtUnit#pvAdPmtCollar0xc25e290_pos" unit="mm" x="-868.117366320207" y="-2095.82071950185" z="-1750"/>
0321 <rotation name="/dd/Geometry/AD/lvOIL#pvAdPmtArray#pvAdPmtArrayRotated#pvAdPmtRingInCyl:1#pvAdPmtInRing:5#pvAdPmtUnit#pvAdPmtCollar0xc25e290_rot" unit="deg" x="90" y="-22.5" z="90"/>
0322 </physvol>
0323
0324 </volume>
0325 </structure>
0326 """)
0327
0328
0329 def make_gdml(worldref="/dd/Geometry/PMT/lvPmtHemi0xc133740", structure_key="pmt5"):
0330 doc = E.gdml(
0331 materials,
0332 solids,
0333 structure.get(structure_key),
0334 E.setup(E.world(ref=worldref), name="Default", version="1.0")
0335 )
0336 return doc
0337
0338
0339
0340
0341
0342 if __name__ == '__main__':
0343 gg = make_gdml()
0344 print tostring_(gg)
0345
0346