Back to home page

EIC code displayed by LXR

 
 

    


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