Warning, /eic-opticks/ana/pmt/ncsgconverter.rst is written in an unsupported language. File is not indexed.
0001 NCSGTranslator Dev Notes
0002 ================================
0003
0004 Cathode is union of two spherical shells, using outerRadius/innerRadius to specify
0005 shell dimensions, can translate this into a union of two differences::
0006
0007 Union
0008 / \
0009 / \
0010 Diff Diff
0011 / \ / \
0012 s s s s
0013
0014
0015 Additionally the spheres are z-sliced in theta,
0016 handle this by using zsphere primitive which has z-range restriction.
0017
0018 * startThetaAngle (default is 0)
0019 * deltaThetaAngle (default is pi)
0020
0021
0022
0023 ::
0024
0025 120 <logvol name="lvPmtHemiCathode" material="Bialkali" sensdet="DsPmtSensDet">
0026 121 <union name="pmt-hemi-cathode">
0027 122 <sphere name="pmt-hemi-cathode-face"
0028 123 outerRadius="PmtHemiFaceROCvac"
0029 124 innerRadius="PmtHemiFaceROCvac-PmtHemiCathodeThickness"
0030 125 deltaThetaAngle="PmtHemiFaceCathodeAngle"/>
0031 126 <sphere name="pmt-hemi-cathode-belly"
0032 127 outerRadius="PmtHemiBellyROCvac"
0033 128 innerRadius="PmtHemiBellyROCvac-PmtHemiCathodeThickness"
0034 129 startThetaAngle="PmtHemiBellyCathodeAngleStart"
0035 130 deltaThetaAngle="PmtHemiBellyCathodeAngleDelta"/>
0036 131 <posXYZ z="PmtHemiFaceOff-PmtHemiBellyOff"/>
0037 132 </union>
0038 133 </logvol>
0039
0040
0041
0042
0043
0044 ::
0045
0046 In [1]: run ncsg.py
0047
0048 In [4]: n
0049 Out[4]: Node 0 : dig afa2 pig d41d : LV lvPmtHemi Pyrex None : None : None
0050
0051 In [5]: n.lv
0052 Out[5]: LV lvPmtHemi Pyrex None : None
0053
0054 In [6]: n.lv.comps()
0055 Out[6]:
0056 [Union pmt-hemi ,
0057 PV pvPmtHemiVacuum /dd/Geometry/PMT/lvPmtHemiVacuum ]
0058
0059 In [7]: n.lv.comps()[0]
0060 Out[7]: Union pmt-hemi
0061
0062 In [8]: n.lv.comps()[0].comps()
0063 Out[8]:
0064 [Intersection pmt-hemi-glass-bulb ,
0065 Tubs pmt-hemi-base : outerRadius PmtHemiGlassBaseRadius : 42.25 sizeZ PmtHemiGlassBaseLength : 169.0 : None ,
0066 PosXYZ -0.5*PmtHemiGlassBaseLength : -84.5 ]
0067
0068 In [9]: n.lv.comps()[0].comps()[0]
0069 Out[9]: Intersection pmt-hemi-glass-bulb
0070
0071 In [10]: n.lv.comps()[0].comps()[0].comps()
0072 Out[10]:
0073 [sphere pmt-hemi-face-glass : PmtHemiFaceROC : 131.0 : None ,
0074 sphere pmt-hemi-top-glass : PmtHemiBellyROC : 102.0 : None ,
0075 PosXYZ PmtHemiFaceOff-PmtHemiBellyOff : 43.0 ,
0076 sphere pmt-hemi-bot-glass : PmtHemiBellyROC : 102.0 : None ,
0077 PosXYZ PmtHemiFaceOff+PmtHemiBellyOff : 69.0 ]
0078
0079
0080
0081 ::
0082
0083 In [18]: tr.get(0).lv.geometry()
0084 Out[18]: [Union pmt-hemi ]
0085
0086 In [19]: tr.get(1).lv.geometry()
0087 Out[19]: [Union pmt-hemi-vac ]
0088
0089 In [20]: tr.get(2).lv.geometry()
0090 Out[20]: [Union pmt-hemi-cathode ]
0091
0092 In [21]: tr.get(3).lv.geometry()
0093 Out[21]: [sphere pmt-hemi-bot : PmtHemiBellyROCvac : 99.0 : None ]
0094
0095 In [22]: tr.get(4).lv.geometry()
0096 Out[22]: [Tubs pmt-hemi-dynode : outerRadius PmtHemiDynodeRadius : 27.5 sizeZ PmtHemiGlassBaseLength-PmtHemiGlassThickness : 166.0 : None ]
0097
0098
0099