summaryrefslogtreecommitdiff
path: root/materials/__init__.py
blob: d2644ad3961798a182df98b7e31eb6f99e3ba7a8 (plain)
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
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

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('absorption', 0)
lambertian_surface.set('reflection_specular', 0)
lambertian_surface.set('reflection_diffuse', 1)

black_surface = Surface('black_surface')
black_surface.set('absorption', 1)
black_surface.set('reflection_specular', 0)
black_surface.set('reflection_diffuse', 0)

shiny_surface = Surface('shiny_surface')
shiny_surface.set('absorption', 0)
shiny_surface.set('reflection_specular', 1)
shiny_surface.set('reflection_diffuse', 0)

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