diff options
-rw-r--r-- | chroma/detectors/__init__.py | 7 | ||||
-rw-r--r-- | chroma/detectors/sno.py | 133 | ||||
-rw-r--r-- | chroma/detectors/sno_av_ascii.stl.bz2 | bin | 10939133 -> 0 bytes | |||
-rw-r--r-- | chroma/detectors/sno_pmt_info.hdf5 | bin | 128083 -> 0 bytes | |||
-rw-r--r-- | chroma/optics.py | 144 | ||||
-rw-r--r-- | chroma/solids/__init__.py | 13 | ||||
-rw-r--r-- | chroma/solids/sno_cone.txt | 21 | ||||
-rw-r--r-- | chroma/solids/sno_pmt.txt | 121 | ||||
-rw-r--r-- | chroma/solids/sno_pmt_reduced.txt | 47 |
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 Binary files differdeleted file mode 100644 index 1298a60..0000000 --- a/chroma/detectors/sno_av_ascii.stl.bz2 +++ /dev/null diff --git a/chroma/detectors/sno_pmt_info.hdf5 b/chroma/detectors/sno_pmt_info.hdf5 Binary files differdeleted file mode 100644 index 1358189..0000000 --- a/chroma/detectors/sno_pmt_info.hdf5 +++ /dev/null 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 |