summaryrefslogtreecommitdiff
path: root/detectors
diff options
context:
space:
mode:
Diffstat (limited to 'detectors')
-rw-r--r--detectors/lbne.py72
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))