1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
|
import os
import sys
import numpy as np
from ratdb import load
dir = os.path.split(os.path.realpath(__file__))[0]
sys.path.append(dir + '/..')
from geometry import Material, Surface
from pmt_optics import *
vacuum = Material('vacuum')
vacuum.set('refractive_index', 1)
vacuum.set('absorption_length', np.finfo(np.float32).max)
vacuum.set('scattering_length', np.finfo(np.float32).max)
lambertian_surface = Surface('lambertian_surface')
lambertian_surface.set('detect', 0)
lambertian_surface.set('absorb', 0)
lambertian_surface.set('reflect_specular', 0)
lambertian_surface.set('reflect_diffuse', 1)
black_surface = Surface('black_surface')
black_surface.set('detect', 0)
black_surface.set('absorb', 1)
black_surface.set('reflect_specular', 0)
black_surface.set('reflect_diffuse', 0)
shiny_surface = Surface('shiny_surface')
shiny_surface.set('detect', 0)
shiny_surface.set('absorb', 0)
shiny_surface.set('reflect_specular', 1)
shiny_surface.set('reflect_diffuse', 0)
glossy_surface = Surface('glossy_surface')
glossy_surface.set('detect', 0)
glossy_surface.set('absorb', 0)
glossy_surface.set('reflect_specular', 0.5)
glossy_surface.set('reflect_diffuse', 0.5)
db = load(open(dir + '/OPTICS.ratdb'))['OPTICS']
glass = Material('pmt_glass')
glass.set('refractive_index', db['glass']['RINDEX_value2'], db['glass']['RINDEX_value1'])
glass.set('absorption_length', db['glass']['ABSLENGTH_value2'], db['glass']['ABSLENGTH_value1'])
# convert mm -> m
glass.absorption_length[:,1] /= 1000.0
# scattering length for glass?
glass.set('scattering_length', np.finfo(np.float32).max)
lightwater_sno = Material('lightwater_sno')
lightwater_sno.set('refractive_index', db['lightwater_sno']['RINDEX_value2'], db['lightwater_sno']['RINDEX_value1'])
lightwater_sno.set('absorption_length', db['lightwater_sno']['ABSLENGTH_value2'], db['lightwater_sno']['ABSLENGTH_value1'])
# convert mm -> m
lightwater_sno.absorption_length[:,1] /= 1000.0
lightwater_sno.set('scattering_length', db['lightwater_sno']['RSLENGTH_value2'], db['lightwater_sno']['RSLENGTH_value1'])
# convert mm -> m
lightwater_sno.scattering_length[:,1] /= 1000.0
acrylic_sno = Material('acrylic_sno')
acrylic_sno.set('refractive_index', db['acrylic_sno']['RINDEX_value2'], db['lightwater_sno']['RINDEX_value1'])
acrylic_sno.set('absorption_length', db['acrylic_sno']['ABSLENGTH_value2'], db['acrylic_sno']['ABSLENGTH_value1'])
# convert mm -> m
acrylic_sno.absorption_length[:,1] /= 1000.0
acrylic_sno.set('scattering_length', db['acrylic_sno']['RSLENGTH_value2'], db['acrylic_sno']['RSLENGTH_value1'])
# convert mm -> m
acrylic_sno.scattering_length[:,1] /= 1000.0
|