diff options
Diffstat (limited to 'detectors')
-rw-r--r-- | detectors/lbne.py | 72 |
1 files changed, 11 insertions, 61 deletions
diff --git a/detectors/lbne.py b/detectors/lbne.py index a439682..7f1bb41 100644 --- a/detectors/lbne.py +++ b/detectors/lbne.py @@ -6,13 +6,12 @@ dir = os.path.split(os.path.realpath(__file__))[0] sys.path.append(dir + '/..') import models -from mesh import mesh_from_stl -from solid import Solid -from geometry import Geometry +from geometry import * +from materials import * +from solids import * from transform import rotate, make_rotation_matrix from itertools import product -from materials import * -from make import cylinder +import make endcap_spacing = .485 @@ -27,46 +26,19 @@ class LBNE(Geometry): super(LBNE, self).__init__() # outer cylinder - cylinder_solid = Solid(0, cylinder(radius, height+height/(pmts_per_string-1)), material1=lightwater_sno, material2=vacuum, surface=black_surface, color=0x0000ff) + cylinder_mesh = \ + make.cylinder(radius, height+height/(pmts_per_string-1)) + cylinder_solid = Solid(cylinder_mesh, lightwater_sno, vacuum, black_surface, 0x0000ff) self.add_solid(cylinder_solid) - pmt_inner_mesh = \ - mesh_from_stl(models.dir + '/hamamatsu_12inch_inner.stl') - pmt_outer_mesh = \ - mesh_from_stl(models.dir + '/hamamatsu_12inch_outer.stl') - - photocathode_triangles = np.mean(pmt_inner_mesh[:], axis=1)[:,1] > 0 - - inner_color = np.empty(len(pmt_inner_mesh.triangles), np.uint32) - inner_color[photocathode_triangles] = 0xff0000 - inner_color[~photocathode_triangles] = 0x00ff00 - - outer_color = np.empty(len(pmt_outer_mesh.triangles), np.uint32) - outer_color[:] = 0xffffff - - inner_surface = np.empty(len(pmt_inner_mesh.triangles), np.object) - inner_surface[photocathode_triangles] = black_surface - inner_surface[~photocathode_triangles] = shiny_surface - - self.pmtids = [1] + self.pmtids = [] # construct the barrel for i in range(pmts_per_string): for j in range(nstrings): rotation = make_rotation_matrix(j*2*np.pi/nstrings, (0,0,1)) displacement = rotate((0,-radius,-height/2+i*height/(pmts_per_string-1)), j*2*np.pi/nstrings, (0,0,1)) - self.add_solid(Solid(self.pmtids[-1], pmt_inner_mesh, - rotation, displacement, - material1=vacuum, - material2=glass, - surface=inner_surface, - color=inner_color)) - self.add_solid(Solid(self.pmtids[-1], pmt_outer_mesh, - rotation, displacement, - material1=glass, - material2=lightwater_sno, - color=outer_color)) - self.pmtids += [self.pmtids[-1]+1] + self.pmtids.append(self.add_solid(r7081, rotation, displacement)) # construct the top endcap for x, y in np.array(tuple(product(\ @@ -75,18 +47,7 @@ class LBNE(Geometry): if np.sqrt(x**2 + y**2) <= radius: rotation = make_rotation_matrix(+np.pi/2, (1,0,0)) displacement = (x,y,+height/2+height/(pmts_per_string-1)/2) - self.add_solid(Solid(self.pmtids[-1], pmt_inner_mesh, - rotation, displacement, - material1=vacuum, - material2=glass, - surface=inner_surface, - color=inner_color)) - self.add_solid(Solid(self.pmtids[-1], pmt_outer_mesh, - rotation, displacement, - material1=glass, - material2=lightwater_sno, - color=outer_color)) - self.pmtids += [self.pmtids[-1]+1] + self.pmtids.append(self.add_solid(r7081, rotation, displacement)) # construct the bottom endcap for x, y in np.array(tuple(product(\ @@ -95,15 +56,4 @@ class LBNE(Geometry): if np.sqrt(x**2 + y**2) <= radius: rotation = make_rotation_matrix(-np.pi/2, (1,0,0)) displacement = (x,y,-height/2-height/(pmts_per_string-1)/2) - self.add_solid(Solid(self.pmtids[-1], pmt_inner_mesh, - rotation, displacement, - material1=vacuum, - material2=glass, - surface=inner_surface, - color=inner_color)) - self.add_solid(Solid(self.pmtids[-1], pmt_outer_mesh, - rotation, displacement, - material1=glass, - material2=lightwater_sno, - color=outer_color)) - self.pmtids += [self.pmtids[-1]+1] + self.pmtids.append(self.add_solid(r7081, rotation, displacement)) |