summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--chroma/detectors/__init__.py7
-rw-r--r--chroma/detectors/sno.py133
-rw-r--r--chroma/detectors/sno_av_ascii.stl.bz2bin10939133 -> 0 bytes
-rw-r--r--chroma/detectors/sno_pmt_info.hdf5bin128083 -> 0 bytes
-rw-r--r--chroma/optics.py144
-rw-r--r--chroma/solids/__init__.py13
-rw-r--r--chroma/solids/sno_cone.txt21
-rw-r--r--chroma/solids/sno_pmt.txt121
-rw-r--r--chroma/solids/sno_pmt_reduced.txt47
9 files changed, 7 insertions, 479 deletions
diff --git a/chroma/detectors/__init__.py b/chroma/detectors/__init__.py
index 90d69d0..ae6c9ab 100644
--- a/chroma/detectors/__init__.py
+++ b/chroma/detectors/__init__.py
@@ -1,11 +1,4 @@
-from sno import build_sno as build_sno_detector
from miniclean import build_miniclean as build_miniclean_detector
-def sno():
- return build_sno_detector()
-
-def cad_sno():
- return build_sno_detector(real_av=True)
-
def miniclean():
return build_miniclean_detector()
diff --git a/chroma/detectors/sno.py b/chroma/detectors/sno.py
deleted file mode 100644
index d5c9ce9..0000000
--- a/chroma/detectors/sno.py
+++ /dev/null
@@ -1,133 +0,0 @@
-import numpy as np
-import numpy.linalg
-import math
-from chroma.make import rotate_extrude
-from chroma.stl import mesh_from_stl
-from chroma.geometry import *
-from chroma.optics import *
-from chroma.solids import build_8inch_pmt_with_lc
-from chroma.transform import rotate, make_rotation_matrix
-import os
-
-def sno_vessel(sphere_radius, neck_radius, neck_top, nsteps=40):
- '''Compute the 2D coordinates of the profile of one side of a
- SNO-style acrylic vessel. The center of the sphere is at (0,0), with
- the neck extending along the positive y direction.
-
- sphere_radius: Radius of spherical part of profile
- neck_radius: Radius of neck part
- neck_top: y coordinate of top of neck
- nsteps: number of points around the circumference of the sphere
-
- Returns: Tuple of x and y coordinate numpy arrays.
- '''
- if neck_radius >= sphere_radius:
- raise ValueError('neck_radius must be less than sphere_radius')
-
- intersect_height = (sphere_radius**2 - neck_radius**2)**0.5
- max_angle = math.atan2(intersect_height, neck_radius)
-
- if neck_top < intersect_height:
- raise ValueError('neck_top must be greater than the y-value where the sphere and cylinder intersect')
-
- # Start with point at bottom
- angles = np.linspace(-math.pi/2, max_angle, nsteps)
- x = list(np.cos(angles) * sphere_radius)
- y = list(np.sin(angles) * sphere_radius)
- x[0] = 0.0 # Round-off error might make cos(-pi/2) not exactly zero
-
- # Neck intersection point
- x.append(neck_radius)
- y.append(intersect_height)
-
- # Top of neck
- x.append(neck_radius)
- y.append(neck_top)
-
- # Top of neck on axis
- x.append(0.0)
- y.append(neck_top)
-
- return x, y
-
-##### SNO Parts
-
-nsteps = 40
-av_outside_profile = sno_vessel(sphere_radius=6.0604, neck_radius=0.79375,
- neck_top=10.50, nsteps=nsteps)
-# For simplicity, cap the top of the AV with acrylic
-av_inside_profile = sno_vessel(sphere_radius=6.0053, neck_radius=0.72898,
- neck_top=10.00, nsteps=nsteps)
-
-av_outside_mesh = rotate_extrude(av_outside_profile[0], av_outside_profile[1],
- nsteps)
-av_outside_mesh.vertices = rotate(av_outside_mesh.vertices, np.pi/2, (-1,0,0))
-
-av_inside_mesh = rotate_extrude(av_inside_profile[0], av_inside_profile[1],
- nsteps)
-av_inside_mesh.vertices = rotate(av_inside_mesh.vertices, np.pi/2, (-1,0,0))
-
-dir = os.path.split(os.path.realpath(__file__))[0]
-
-def build_sno(real_av=False):
- import h5py
- pmtinfo = h5py.File(dir+'/sno_pmt_info.hdf5')
-
- pmt = build_8inch_pmt_with_lc()
-
-
- if real_av:
- geo = Geometry(water)
- real_av_mesh = mesh_from_stl(dir+'/sno_av_ascii.stl.bz2')
- real_av_mesh.vertices *= 0.0254 # inch -> meter
- geo.add_solid(Solid(real_av_mesh, glass, water, color=0xBBAAAAFF))
- else:
- geo = Geometry(water)
- geo.add_solid(Solid(av_outside_mesh, acrylic_sno, water,
- color=0xBBFFFFFF))
- geo.add_solid(Solid(av_inside_mesh, water, acrylic_sno,
- color=0xBB0000FF))
- geo.pmtids = []
-
- snoman_id_dict = {}
-
- pmt_offset = 122.0 - 2 * 0.01# max bucket height - 2 * facegap (mm)
-
- for position, direction, idnum, pmt_type in zip(pmtinfo['pos'], pmtinfo['dir'],
- pmtinfo['snoman_id'],
- pmtinfo['pmt_type']):
-
- # PMT type codes:
- # 1 = normal; 2 = OWL; 3 = Low Gain; 4 = BUTT; 5 = Neck
- # 6 = Calib channel; 10 = spare; 11 = invalid
- if pmt_type != 1: # All the other PMTs have nonsense directions
- continue
-
-
- # Flip and renormalize
- direction *= -1.0/numpy.linalg.norm(direction)
-
- # Orient PMT that starts facing Y axis
- y_axis = np.array((0.0,1.0,0.0))
- axis = np.cross(direction, y_axis)
- angle = np.arccos(np.dot(y_axis, direction))
- rotation = make_rotation_matrix(angle, axis)
-
- # Values in database are for front face of concentrator.
- # need to shift so position is for equator of PMT
- if pmt_type == 1:
- displacement = position - direction * pmt_offset
- displacement /= 1000.0 # mm -> m
- chroma_id = geo.add_solid(pmt, rotation, displacement)
- snoman_id_dict[chroma_id] = idnum
- geo.pmtids.append(chroma_id)
-
- # Convert dict to numpy array for fast array remapping later
- chroma_ids = np.array(snoman_id_dict.keys())
- snoman_ids = np.array(snoman_id_dict.values())
- snoman_id_map = np.zeros(max(chroma_ids)+1) - 1 # Fill with -1 everywhere
- snoman_id_map[chroma_ids] = snoman_ids
-
- geo.snoman_id_map = snoman_id_map
-
- return geo
diff --git a/chroma/detectors/sno_av_ascii.stl.bz2 b/chroma/detectors/sno_av_ascii.stl.bz2
deleted file mode 100644
index 1298a60..0000000
--- a/chroma/detectors/sno_av_ascii.stl.bz2
+++ /dev/null
Binary files differ
diff --git a/chroma/detectors/sno_pmt_info.hdf5 b/chroma/detectors/sno_pmt_info.hdf5
deleted file mode 100644
index 1358189..0000000
--- a/chroma/detectors/sno_pmt_info.hdf5
+++ /dev/null
Binary files differ
diff --git a/chroma/optics.py b/chroma/optics.py
index 6784324..53cf156 100644
--- a/chroma/optics.py
+++ b/chroma/optics.py
@@ -47,109 +47,6 @@ r7081hqe_photocathode.absorb = r7081hqe_photocathode.detect
# remaining photons are diffusely reflected
r7081hqe_photocathode.set('reflect_diffuse', 1.0 - r7081hqe_photocathode.detect[:,1] - r7081hqe_photocathode.absorb[:,1], wavelengths=r7081hqe_photocathode.detect[:,0])
-######################## SNO+ materials ##############################
-
-# water data comes from 'lightwater_sno' material in the SNO+ optics database
-water = Material('water')
-water.density = 1.0 # g/cm^3
-water.composition = { 'H' : 0.1119, 'O' : 0.8881 } # fraction by mass
-water.absorption_length = \
- np.array([[ 200. , 57.51539993],
- [ 220. , 64.22219849],
- [ 240. , 72.6996994 ],
- [ 260. , 83.75559998],
- [ 280. , 98.77729797],
- [ 300. , 120.36499786],
- [ 320. , 154.0269928 ],
- [ 340. , 213.82899475],
- [ 360. , 349.5369873 ],
- [ 380. , 105.87799835],
- [ 400. , 50.35989761],
- [ 420. , 32.56269836],
- [ 440. , 26.70409966],
- [ 460. , 22.63209915],
- [ 480. , 19.63769913],
- [ 500. , 17.34300041],
- [ 520. , 11.84370041],
- [ 540. , 8.99226952],
- [ 560. , 7.24743032],
- [ 580. , 6.06968021],
- [ 600. , 5.22121 ],
- [ 620. , 4.58085012],
- [ 640. , 4.08041 ],
- [ 660. , 3.67853999],
- [ 680. , 3.3487401 ],
- [ 700. , 3.07319999],
- [ 720. , 2.83956003],
- [ 740. , 2.63893986],
- [ 760. , 2.46479011],
- [ 780. , 2.31220984],
- [ 800. , 2.1774199 ]], dtype=np.float32)
-water.scattering_length = \
- np.array([[ 200. , 11.36030006],
- [ 220. , 16.63280106],
- [ 240. , 23.55719948],
- [ 260. , 32.44709778],
- [ 280. , 43.64310074],
- [ 300. , 57.51350021],
- [ 320. , 74.45359802],
- [ 340. , 94.88600159],
- [ 360. , 119.26100159],
- [ 380. , 148.05499268],
- [ 400. , 181.77200317],
- [ 420. , 220.94500732],
- [ 440. , 266.13299561],
- [ 460. , 317.92098999],
- [ 480. , 376.92300415],
- [ 500. , 443.78100586],
- [ 520. , 519.16101074],
- [ 540. , 603.75897217],
- [ 560. , 698.29797363],
- [ 580. , 803.52697754],
- [ 600. , 920.22399902],
- [ 620. , 1049.18994141],
- [ 640. , 1191.27001953],
- [ 660. , 1347.30004883],
- [ 680. , 1518.18005371],
- [ 700. , 1704.82995605],
- [ 720. , 1908.18005371],
- [ 740. , 2129.19995117],
- [ 760. , 2368.87988281],
- [ 780. , 2628.25 ],
- [ 800. , 2908.36010742]], dtype=np.float32)
-water.refractive_index = \
- np.array([[ 200. , 1.41614997],
- [ 220. , 1.39726996],
- [ 240. , 1.38395 ],
- [ 260. , 1.37414002],
- [ 280. , 1.36667001],
- [ 300. , 1.36082006],
- [ 320. , 1.35615003],
- [ 340. , 1.35232997],
- [ 360. , 1.34915996],
- [ 380. , 1.34650004],
- [ 400. , 1.34423006],
- [ 420. , 1.34227002],
- [ 440. , 1.34057999],
- [ 460. , 1.33908999],
- [ 480. , 1.33778 ],
- [ 500. , 1.33660996],
- [ 520. , 1.33556998],
- [ 540. , 1.33463001],
- [ 560. , 1.33378005],
- [ 580. , 1.33300996],
- [ 600. , 1.33230996],
- [ 620. , 1.33167005],
- [ 640. , 1.33107996],
- [ 660. , 1.33053994],
- [ 680. , 1.33003998],
- [ 700. , 1.32957006],
- [ 720. , 1.32913995],
- [ 740. , 1.32874 ],
- [ 760. , 1.32835996],
- [ 780. , 1.32800996],
- [ 800. , 1.32767999]], dtype=np.float32)
-
# glass data comes from 'glass_sno' material in SNO+ optics database
glass = Material('glass')
glass.set('refractive_index', 1.49)
@@ -157,24 +54,10 @@ glass.absorption_length = \
np.array([(200, 0.1e-6), (300, 0.1e-6), (330, 1.0), (500, 2.0), (600, 1.0), (770, 0.5), (800, 0.1e-6)])
glass.set('scattering_length', 1e6)
-# From SNO+ database
-acrylic_sno = Material('acrylic_sno')
-acrylic_sno.set('refractive_index', wavelengths=[ 200.0, 220.0, 240.0, 260.0, 280.0, 300.0, 320.0, 340.0, 360.0, 380.0, 400.0, 420.0, 440.0, 460.0, 480.0, 500.0, 520.0, 540.0, 560.0, 580.0, 600.0, 620.0, 640.0, 660.0, 680.0, 700.0, 720.0, 740.0, 760.0, 780.0, 800.0 ], value=[ 1.59816, 1.57399, 1.55692, 1.54436, 1.5348, 1.52732, 1.52133, 1.51644, 1.51238, 1.50897, 1.50607, 1.50357, 1.50139, 1.49949, 1.49781, 1.49632, 1.49498, 1.49378, 1.49269, 1.49171, 1.49081, 1.48999, 1.48924, 1.48854, 1.4879, 1.4873, 1.48675, 1.48624, 1.48576, 1.48531, 1.48488 ])
-acrylic_sno.set('absorption_length', wavelengths=[ 200.0, 220.0, 240.0, 260.0, 280.0, 300.0, 320.0, 340.0, 360.0, 380.0, 400.0, 420.0, 440.0, 460.0, 480.0, 500.0, 520.0, 540.0, 560.0, 580.0, 600.0, 620.0, 640.0, 660.0, 680.0, 700.0, 720.0, 740.0, 760.0, 780.0, 800.0 ], value=[ 0.0456452, 0.0512064, 0.0583106, 0.0677037, 0.080704, 0.0998834, 0.131021, 0.190364, 0.347969, 0.661751, 0.979776, 1.31804, 1.34242, 1.36771, 1.39397, 1.42126, 1.42019, 1.41911, 1.41804, 1.41697, 1.4159, 1.41483, 1.41376, 1.4127, 1.41163, 1.41057, 1.40951, 1.40845, 1.40739, 1.40634, 1.40528 ])
-acrylic_sno.set('scattering_length', wavelengths=[ 200.0, 220.0, 240.0, 260.0, 280.0, 300.0, 320.0, 340.0, 360.0, 380.0, 400.0, 420.0, 440.0, 460.0, 480.0, 500.0, 520.0, 540.0, 560.0, 580.0, 600.0, 620.0, 640.0, 660.0, 680.0, 700.0, 720.0, 740.0, 760.0, 780.0, 800.0 ], value=[ 4.60015, 6.73532, 9.53941, 13.1394, 17.6734, 23.2903, 30.1503, 38.4246, 48.2953, 59.9557, 73.61, 89.4735, 107.773, 128.745, 152.638, 179.713, 210.238, 244.497, 282.781, 325.395, 372.652, 424.879, 482.413, 545.601, 614.801, 690.385, 772.733, 862.236, 959.298, 1064.33, 1177.77 ])
-
-# From SNO+ database
-labppo_scintillator = Material('labppo_scintillator')
-labppo_scintillator.set('refractive_index', wavelengths=[ 200.0, 213.0, 215.0, 217.0, 219.0, 221.0, 223.0, 225.0, 227.0, 229.0, 231.0, 233.0, 235.0, 237.0, 239.0, 241.0, 243.0, 245.0, 247.0, 249.0, 251.0, 253.0, 255.0, 257.0, 259.0, 261.0, 263.0, 265.0, 267.0, 269.0, 271.0, 273.0, 275.0, 277.0, 279.0, 281.0, 283.0, 285.0, 287.0, 289.0, 291.0, 293.0, 295.0, 297.0, 299.0, 301.0, 303.0, 305.0, 307.0, 309.0, 311.0, 313.0, 315.0, 317.0, 319.0, 321.0, 323.0, 325.0, 327.0, 329.0, 331.0, 333.0, 335.0, 337.0, 339.0, 341.0, 343.0, 345.0, 347.0, 349.0, 351.0, 353.0, 355.0, 357.0, 359.0, 361.0, 363.0, 365.0, 367.0, 369.0, 371.0, 373.0, 375.0, 377.0, 379.0, 381.0, 383.0, 385.0, 387.0, 389.0, 391.0, 393.0, 395.0, 397.0, 399.0, 401.0, 403.0, 405.0, 407.0, 409.0, 411.0, 413.0, 415.0, 417.0, 419.0, 421.0, 423.0, 425.0, 427.0, 429.0, 431.0, 433.0, 435.0, 437.0, 439.0, 441.0, 443.0, 445.0, 447.0, 449.0, 451.0, 453.0, 455.0, 457.0, 459.0, 461.0, 463.0, 465.0, 467.0, 469.0, 471.0, 473.0, 475.0, 477.0, 479.0, 481.0, 483.0, 485.0, 487.0, 489.0, 491.0, 493.0, 495.0, 497.0, 499.0, 501.0, 503.0, 505.0, 507.0, 509.0, 511.0, 513.0, 515.0, 517.0, 519.0, 521.0, 523.0, 525.0, 527.0, 529.0, 531.0, 533.0, 535.0, 537.0, 539.0, 541.0, 543.0, 545.0, 547.0, 549.0, 551.0, 553.0, 555.0, 557.0, 559.0, 561.0, 563.0, 565.0, 567.0, 569.0, 571.0, 573.0, 575.0, 577.0, 579.0, 581.0, 583.0, 585.0, 587.0, 589.0, 591.0, 593.0, 595.0, 597.0, 599.0, 601.0, 603.0, 605.0, 607.0, 609.0, 611.0, 613.0, 615.0, 617.0, 619.0, 621.0, 623.0, 625.0, 627.0, 629.0, 631.0, 633.0, 635.0, 637.0, 639.0, 641.0, 643.0, 645.0, 647.0, 649.0, 651.0, 653.0, 655.0, 657.0, 659.0, 661.0, 663.0, 665.0, 667.0, 669.0, 671.0, 673.0, 675.0, 677.0, 679.0, 681.0, 683.0, 685.0, 687.0, 689.0, 691.0, 693.0, 695.0, 697.0, 699.0, 701.0, 703.0, 705.0, 707.0, 709.0, 711.0, 713.0, 715.0, 717.0, 719.0, 721.0, 723.0, 725.0, 727.0, 729.0, 731.0, 733.0, 735.0, 737.0, 739.0, 741.0, 743.0, 745.0, 747.0, 749.0, 751.0, 753.0, 755.0, 757.0, 759.0, 761.0, 763.0, 765.0, 767.0, 769.0, 771.0, 773.0, 775.0, 777.0, 779.0, 781.0, 783.0, 785.0, 787.0, 789.0, 791.0, 793.0, 795.0, 797.0, 799.0, 800.0 ], value=[ 1.75541, 1.75541, 1.75541, 1.7526, 1.74552, 1.73503, 1.72202, 1.70736, 1.69194, 1.67662, 1.66228, 1.65227, 1.64307, 1.63526, 1.62846, 1.62243, 1.61699, 1.61204, 1.60748, 1.60326, 1.59933, 1.59565, 1.59218, 1.58892, 1.58582, 1.58288, 1.58009, 1.57742, 1.57488, 1.57244, 1.57011, 1.56787, 1.56571, 1.56365, 1.56165, 1.55973, 1.55788, 1.55609, 1.55437, 1.5527, 1.55108, 1.54952, 1.548, 1.54654, 1.54511, 1.54373, 1.54239, 1.54109, 1.53982, 1.53859, 1.5374, 1.53623, 1.5351, 1.534, 1.53293, 1.53188, 1.53086, 1.52987, 1.5289, 1.52795, 1.52703, 1.52613, 1.52525, 1.52439, 1.52355, 1.52273, 1.52193, 1.52115, 1.52039, 1.51964, 1.51891, 1.51819, 1.51749, 1.5168, 1.51613, 1.51547, 1.51483, 1.5142, 1.51358, 1.51297, 1.51238, 1.5118, 1.51122, 1.51066, 1.51012, 1.50958, 1.50905, 1.50853, 1.50802, 1.50752, 1.50703, 1.50655, 1.50608, 1.50561, 1.50516, 1.50471, 1.50427, 1.50383, 1.50341, 1.50299, 1.50258, 1.50218, 1.50178, 1.50139, 1.501, 1.50063, 1.50025, 1.49989, 1.49953, 1.49918, 1.49883, 1.49848, 1.49815, 1.49781, 1.49749, 1.49717, 1.49685, 1.49654, 1.49623, 1.49593, 1.49563, 1.49533, 1.49504, 1.49476, 1.49448, 1.4942, 1.49392, 1.49366, 1.49339, 1.49313, 1.49287, 1.49261, 1.49236, 1.49212, 1.49187, 1.49163, 1.49139, 1.49116, 1.49093, 1.4907, 1.49047, 1.49025, 1.49003, 1.48982, 1.4896, 1.48939, 1.48918, 1.48898, 1.48877, 1.48857, 1.48838, 1.48818, 1.48799, 1.4878, 1.48761, 1.48742, 1.48724, 1.48706, 1.48688, 1.4867, 1.48653, 1.48635, 1.48618, 1.48601, 1.48585, 1.48568, 1.48552, 1.48536, 1.4852, 1.48504, 1.48488, 1.48473, 1.48458, 1.48443, 1.48428, 1.48413, 1.48398, 1.48384, 1.4837, 1.48356, 1.48342, 1.48328, 1.48314, 1.48301, 1.48287, 1.48274, 1.48261, 1.48248, 1.48235, 1.48223, 1.4821, 1.48198, 1.48185, 1.48173, 1.48161, 1.48149, 1.48137, 1.48126, 1.48114, 1.48103, 1.48091, 1.4808, 1.48069, 1.48058, 1.48047, 1.48036, 1.48025, 1.48015, 1.48004, 1.47994, 1.47984, 1.47973, 1.47963, 1.47953, 1.47943, 1.47933, 1.47924, 1.47914, 1.47904, 1.47895, 1.47885, 1.47876, 1.47867, 1.47858, 1.47849, 1.4784, 1.47831, 1.47822, 1.47813, 1.47804, 1.47796, 1.47787, 1.47779, 1.4777, 1.47762, 1.47754, 1.47745, 1.47737, 1.47729, 1.47721, 1.47713, 1.47705, 1.47698, 1.4769, 1.47682, 1.47675, 1.47667, 1.4766, 1.47652, 1.47645, 1.47637, 1.4763, 1.47623, 1.47616, 1.47609, 1.47602, 1.47595, 1.47588, 1.47581, 1.47574, 1.47567, 1.4756, 1.47554, 1.47547, 1.4754, 1.47534, 1.47527, 1.47521, 1.47515, 1.47508, 1.47502, 1.47496, 1.47489, 1.47483, 1.47477, 1.47471, 1.47465, 1.47459, 1.47453, 1.47447, 1.47441, 1.47435, 1.47429, 1.47424, 1.47418, 1.47412, 1.47407, 1.47401, 1.47395, 1.4739, 1.47384, 1.47379, 1.47373, 1.47368, 1.47363, 1.4736 ])
-labppo_scintillator.set('absorption_length', wavelengths=[ 200.0, 215.0, 225.0, 235.0, 245.0, 255.0, 265.0, 275.0, 285.0, 295.0, 305.0, 315.0, 325.0, 335.0, 345.0, 355.0, 365.0, 375.0, 385.0, 395.0, 405.0, 415.0, 425.0, 435.0, 445.0, 455.0, 465.0, 475.0, 485.0, 495.0, 505.0, 515.0, 525.0, 535.0, 545.0, 555.0, 565.0, 575.0, 585.0, 595.0, 800.0 ], value=[ 1.54944e-07, 2.99637e-07, 1.72048e-05, 3.41222e-05, 1.53692e-05, 7.92675e-06, 1.00564e-05, 0.000270688, 0.000949206, 0.00134987, 0.00322232, 0.011032, 0.0379538, 0.708042, 2.68045, 4.20713, 5.71163, 7.92686, 9.90035, 17.239, 28.2318, 41.8939, 67.3786, 120.517, 347.953, 412.636, 147.016, 80.7207, 54.7561, 45.1483, 39.4147, 39.1438, 42.199, 41.6337, 35.783, 47.614, 58.3934, 43.0845, 32.0874, 35.6067, 35.6067 ])
-labppo_scintillator.set('absorption_wls_length', wavelengths=[ 200.0, 215.0, 225.0, 235.0, 245.0, 255.0, 265.0, 275.0, 285.0, 295.0, 305.0, 315.0, 325.0, 335.0, 345.0, 355.0, 365.0, 375.0, 385.0, 395.0, 405.0, 415.0, 425.0, 435.0, 445.0, 455.0, 465.0, 475.0, 485.0, 495.0, 505.0, 515.0, 525.0, 535.0, 545.0, 555.0, 565.0, 575.0, 585.0, 595.0, 800.0 ], value=[ 0.00109808, 0.000693615, 0.000437277, 0.000276096, 0.000173933, 0.000103044, 6.03065e-05, 3.56199e-05, 2.25651e-05, 1.60844e-05, 1.62228e-05, 2.21832e-05, 3.03067e-05, 5.24247e-05, 0.000484492, 0.0127541, 0.294651, 4.15892, 15.6626, 25.4821, 36.1763, 50.723, 63.9962, 77.7386, 89.8611, 103.551, 115.859, 125.442, 146.664, 163.748, 194.986, 194.652, 202.262, 234.033, 262.861, 279.883, 323.991, 299.632, 287.367, 303.42, 303.42 ])
-labppo_scintillator.set('scattering_length', wavelengths=[ 200.0, 215.0, 225.0, 235.0, 245.0, 255.0, 265.0, 275.0, 285.0, 295.0, 305.0, 315.0, 325.0, 335.0, 345.0, 355.0, 365.0, 375.0, 385.0, 395.0, 405.0, 415.0, 425.0, 435.0, 445.0, 455.0, 465.0, 475.0, 485.0, 495.0, 505.0, 515.0, 525.0, 535.0, 545.0, 555.0, 565.0, 575.0, 585.0, 595.0, 800.0 ], value=[ 0.290404, 0.387993, 0.465472, 0.553999, 0.654579, 0.768259, 0.89613, 1.03933, 1.19903, 1.37645, 1.57287, 1.78958, 2.02794, 2.28936, 2.57527, 2.88715, 3.22652, 3.59497, 3.9941, 4.42558, 4.89108, 5.3924, 5.93129, 6.50958, 7.12918, 7.79198, 8.49995, 9.2551, 10.0595, 10.9152, 11.8243, 12.7892, 13.8118, 14.8947, 16.04, 17.25, 18.5273, 19.8742, 21.2933, 22.7871, 22.7871 ])
-
-################### WCSim materials #####################
-
-water_wcsim = Material('water_wcsim')
-water_wcsim.density = 1.0 # g/cm^3
-water_wcsim.composition = { 'H' : 0.1119, 'O' : 0.8881 } # fraction by mass
+# Water from WCSim
+water = Material('water')
+water.density = 1.0 # g/cm^3
+water.composition = { 'H' : 0.1119, 'O' : 0.8881 } # fraction by mass
hc_over_GeV = 1.2398424468024265e-06 # h_Planck * c_light / GeV / nanometer
wcsim_wavelengths = hc_over_GeV / np.array([ 1.56962e-09, 1.58974e-09, 1.61039e-09, 1.63157e-09,
1.65333e-09, 1.67567e-09, 1.69863e-09, 1.72222e-09,
@@ -192,7 +75,7 @@ wcsim_wavelengths = hc_over_GeV / np.array([ 1.56962e-09, 1.58974e-09, 1.61039e-
4.59258e-09, 4.76922e-09, 4.95999e-09, 5.16665e-09,
5.39129e-09, 5.63635e-09, 5.90475e-09, 6.19998e-09 ])[::-1] #reversed
-water_wcsim.set('refractive_index',
+water.set('refractive_index',
wavelengths=wcsim_wavelengths,
value=np.array([1.32885, 1.32906, 1.32927, 1.32948, 1.3297, 1.32992, 1.33014,
1.33037, 1.3306, 1.33084, 1.33109, 1.33134, 1.3316, 1.33186, 1.33213,
@@ -203,7 +86,7 @@ water_wcsim.set('refractive_index',
1.35498, 1.35707, 1.35943, 1.36211, 1.36518, 1.36872, 1.37287, 1.37776,
1.38362, 1.39074, 1.39956, 1.41075, 1.42535])[::-1] #reversed
)
-water_wcsim.set('absorption_length',
+water.set('absorption_length',
wavelengths=wcsim_wavelengths,
value=np.array([22.8154, 28.6144, 35.9923, 45.4086, 57.4650,
72.9526, 75, 81.2317, 120.901, 160.243,
@@ -219,7 +102,7 @@ water_wcsim.set('absorption_length',
1082.86, 876.434, 633.723, 389.87, 142.011])[::-1] / 100.0 # reversed, cm->m
)
-water_wcsim.set('scattering_length',
+water.set('scattering_length',
wavelengths=wcsim_wavelengths,
value=np.array([167024.4, 158726.7, 150742,
143062.5, 135680.2, 128587.4,
@@ -242,16 +125,3 @@ water_wcsim.set('scattering_length',
1675.064, 1422.710, 1200.004,
1004.528, 833.9666, 686.1063])[::-1] / 100.0 * 0.625 # reversed, cm -> m, * magic tuning constant
)
-
-###### MiniCLEAN materials ######
-
-liquid_argon = Material('liquid_argon')
-liquid_argon.set('refractive_index',
- wavelengths=[60.0,130.0,140.0,150.0,160.0,170.0,180.0,190.0,200.0,210.0,220.0,230.0,240.0,250.0,260.0,270.0,280.0,290.0,300.0,310.0,320.0,330.0,340.0,350.0,360.0,361.2,365,406.3,435.8,475.3,508.6,546.1,578,643.9,650,660,670,680,690,700,710,720,730,740,750,760,770,780,790,800],
- value=[1.35247,1.35247,1.32727,1.30942,1.2962,1.28607,1.2781,1.27169,1.26645,1.2621,1.25845,1.25534,1.25267,1.25037,1.24835,1.24659,1.24503,1.24365,1.24242,1.24131,1.24032,1.23942,1.2386,1.23786,1.23719,1.237,1.2367,1.2347,1.2336,1.2324,1.2316,1.2308,1.2303,1.2295,1.22939,1.22929,1.22919,1.2291,1.22901,1.22893,1.22885,1.22877,1.2287,1.22863,1.22856,1.2285,1.22843,1.22837,1.22832,1.22826])
-
-liquid_argon.set('absorption_length', 1e6)
-liquid_argon.set('scattering_length',
- wavelengths=[ 60.0, 70.0, 80.0, 90.0, 100.0, 110.0, 120.0, 130.0, 140.0, 150.0, 160.0, 170.0, 180.0, 190.0, 200.0, 210.0, 220.0, 230.0, 240.0, 250.0, 260.0, 270.0, 280.0, 290.0, 300.0, 310.0, 320.0, 330.0, 340.0, 350.0, 360.0, 370.0, 380.0, 390.0, 400.0, 410.0, 420.0, 430.0, 440.0, 450.0, 800.0 ],
- value=[ 43.5, 80.5, 137.3, 220.0, 335.3, 490.9, 695.2, 957.6, 1288.0, 1697.3, 2197.3, 2800.3, 3519.6, 4369.4, 5364.4, 6520.5, 7854.0, 9382.4, 11123.7, 13096.7, 15321.3, 17817.9, 20607.9, 23713.4, 27157.4, 30963.5, 35156.2, 39761.1, 44804.2, 50312.4, 56313.5, 62836.1, 69909.6, 77564.2, 85830.7, 94741.0, 104327.7, 114624.2, 125664.7, 137484.2, 1373291.0 ]
- )
diff --git a/chroma/solids/__init__.py b/chroma/solids/__init__.py
deleted file mode 100644
index 9654b19..0000000
--- a/chroma/solids/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-from chroma.pmt import build_pmt, build_light_collector, build_light_collector_from_file, build_pmt_shell
-from chroma.optics import *
-from os.path import dirname
-
-def build_8inch_pmt(outer_material=water, nsteps=24):
- return build_pmt(dirname(__file__) + '/sno_pmt.txt', 0.003,
- outer_material, nsteps)
-
-def build_8inch_pmt_with_lc(outer_material=water, nsteps=24):
- pmt = build_8inch_pmt(outer_material, nsteps)
- lc = build_light_collector_from_file(dirname(__file__) + '/sno_cone.txt',
- outer_material, nsteps)
- return pmt + lc
diff --git a/chroma/solids/sno_cone.txt b/chroma/solids/sno_cone.txt
deleted file mode 100644
index 5b56792..0000000
--- a/chroma/solids/sno_cone.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-#DataThief /Users/stan/Downloads/./sno_pmt.png Tuesday 26-Jul-2011 3:33:52 PM
--133.6402, 130.0879
--133.673, 123.0691
--133.7058, 116.0503
--133.0342, 109.7357
--132.3659, 102.7194
-#-131.6944, 96.4048
--130.3251, 89.3909
-#-128.2481, 83.7831
-#-126.8788, 76.7691
--124.8018, 71.1613
--122.7282, 64.8516
--119.9503, 59.2462
--117.1756, 52.9388
--114.3976, 47.3335
--111.6197, 41.7281
--108.1407, 36.1251
--104.6617, 30.5222
--100.4816, 24.9216
--97.5145, 22.2998
-
diff --git a/chroma/solids/sno_pmt.txt b/chroma/solids/sno_pmt.txt
deleted file mode 100644
index 9553505..0000000
--- a/chroma/solids/sno_pmt.txt
+++ /dev/null
@@ -1,121 +0,0 @@
-#DataThief /Users/stan/Downloads/./sno_pmt.png Tuesday 26-Jul-2011 3:31:47 PM
--1.2088, -183.8939
-5.8016, -183.8698
-12.812, -183.8456
-19.8225, -183.8215
-26.8329, -183.7974
-33.8433, -183.7732
-38.0659, -180.2494
-38.0889, -175.3362
-36.7163, -169.0241
-36.749, -162.0053
-36.7818, -154.9865
-36.8145, -147.9677
-36.8473, -140.9489
-36.8801, -133.9301
-37.6139, -126.9089
-38.3477, -119.8877
-36.975, -113.5756
-35.6025, -107.2635
-35.6352, -100.2447
-34.9668, -93.2283
-34.2953, -86.9138
-35.7269, -80.592
-39.2616, -74.263
-43.4908, -69.3354
-48.4178, -65.1072
-54.0359, -62.9823
-60.3584, -60.1531
-62.491, -53.8289
-67.418, -49.6008
-72.3449, -45.3726
-77.2719, -41.1444
-82.9032, -36.212
-89.9136, -36.1878
-91.3418, -30.568
-94.8667, -26.3446
-97.7004, -20.0181
-99.8296, -14.3958
-101.2646, -7.3721
-101.9984, -0.3509
-101.3203, 4.5598
-100.652, 11.5762
-98.5783, 17.8859
-96.5013, 23.4937
-93.7267, 29.801
-90.2477, 35.404
-86.0644, 40.3026
-81.18, 45.1989
-76.2924, 49.3933
-71.4015, 52.8858
-65.8094, 56.376
-60.2176, 59.866
-54.6223, 62.6543
-48.326, 65.4401
-42.7275, 67.5264
-36.428, 69.6104
-30.1252, 70.9924
-23.8223, 72.3745
-16.8185, 73.7541
-10.5124, 74.4343
-3.5051, 75.1121
--3.5051, 75.0879
--10.5156, 75.0638
--16.8316, 73.6383
--23.8453, 72.9123
--30.1612, 71.4868
--36.4804, 69.3595
--42.7995, 67.2322
--48.4178, 65.1072
--54.7403, 62.278
--60.3617, 59.4512
--65.983, 56.6244
--71.6111, 52.3938
--76.5348, 48.8675
--82.1628, 44.6369
--87.093, 39.7069
--90.6212, 34.7816
--94.1526, 29.1546
--97.5145, 22.2998
--99.1123, 17.9076
--101.2449, 11.5834
--101.9787, 4.5622
--102.0115, -2.4566
--101.3399, -8.7711
--100.6716, -15.7875
--98.5979, -22.0972
--95.8167, -27.0007
--93.0421, -33.308
--88.8587, -38.2067
--83.9744, -43.1029
--79.09, -47.9992
--74.1991, -51.4917
--69.3082, -54.9843
--63.7162, -58.4744
--58.1243, -61.9645
--52.5257, -64.0508
--46.9338, -67.5409
--42.0527, -73.1391
--39.2715, -78.0426
--36.4968, -84.3498
--35.8252, -90.6644
--37.2601, -97.688
--37.2894, -104.0049
--36.6213, -111.0213
--40.1527, -116.6484
--40.1822, -122.9654
--40.2149, -129.9842
--38.8423, -136.2963
--38.8751, -143.3151
--38.9078, -150.3338
--38.9405, -157.3527
--38.9734, -164.3715
--39.0061, -171.3902
--41.8365, -177.015
--41.1649, -183.3295
--34.8588, -184.0097
-#-27.8484, -183.9855
-#-20.838, -183.9614
-#-13.8276, -183.9373
-#-6.8171, -183.9132
-#-3.3119, -183.9011
diff --git a/chroma/solids/sno_pmt_reduced.txt b/chroma/solids/sno_pmt_reduced.txt
deleted file mode 100644
index eceaadf..0000000
--- a/chroma/solids/sno_pmt_reduced.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-#DataThief /Users/stan/Downloads/./sno_pmt.png Wednesday 27-Jul-2011 11:20:44 AM
-#-0.7993, -96.1588
-#13.2215, -96.1106
-#27.2424, -96.0623
-#34.2823, -89.7213
-#37.8465, -77.0754
-#46.3081, -66.5182
-#57.551, -60.8646
-65.305, -51.7136
-75.8632, -42.553
-87.1094, -36.1975
-92.7603, -27.0538
-99.1188, -16.5038
-101.2842, -3.1609
-100.6389, 8.7687
-97.1926, 21.3905
-91.64, 33.3031
-83.2766, 43.8024
-73.498, 51.4893
-62.3141, 58.4695
-51.1237, 64.046
-39.2288, 68.9181
-26.6265, 72.3841
-13.3165, 74.4439
--0.701, 75.0976
--14.7219, 75.0493
--27.3537, 72.1984
--39.9889, 68.6456
--51.9295, 63.6914
--63.8767, 57.3335
--75.1262, 50.2761
--84.9801, 41.8197
--93.4417, 31.2626
--99.0992, 20.7151
--101.9656, 7.3697
--101.3268, -5.9636
--99.2859, -19.2921
--94.431, -30.5053
--86.0677, -41.0045
--76.2957, -50.0952
--65.8128, -57.0778
--54.6256, -63.3562
-#-43.445, -71.0383
-#-37.8858, -81.5472
-#-35.8449, -94.8757
-#-22.5316, -96.2336
-#-8.5108, -96.1854