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