summaryrefslogtreecommitdiff
path: root/optics.py
blob: c31d20906e2f8837e1cab77dd7ee372569a6d2b5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
import numpy as np
from geometry import Material, Surface

vacuum = Material('vacuum')
vacuum.set('refractive_index', 1.0)
vacuum.set('absorption_length', 1e6)
vacuum.set('scattering_length', 1e6)

lambertian_surface = Surface('lambertian_surface')
lambertian_surface.set('reflect_diffuse', 1)

black_surface = Surface('black_surface')
black_surface.set('absorb', 1)

shiny_surface = Surface('shiny_surface')
shiny_surface.set('reflect_specular', 1)

glossy_surface = Surface('glossy_surface')
glossy_surface.set('reflect_diffuse', 0.5)
glossy_surface.set('reflect_specular', 0.5)

red_absorb_surface = Surface('red_absorb')
red_absorb_surface.set('absorb', [0.0, 0.0, 1.0], [465, 545, 685])
red_absorb_surface.set('reflect_diffuse', [1.0, 1.0, 0.0], [465, 545, 685])

# r7081hqe photocathode material surface
# source: hamamatsu supplied datasheet for r7081hqe pmt serial number zd0062
r7081hqe_photocathode = Surface('r7081hqe_photocathode')
r7081hqe_photocathode.detect = \
    np.array([(260.0,  0.00),
              (270.0,  0.04), (280.0,  0.07), (290.0,  0.77), (300.0,  4.57),
              (310.0, 11.80), (320.0, 17.70), (330.0, 23.50), (340.0, 27.54),
              (350.0, 30.52), (360.0, 31.60), (370.0, 31.90), (380.0, 32.20),
              (390.0, 32.00), (400.0, 31.80), (410.0, 30.80), (420.0, 30.16),
              (430.0, 29.24), (440.0, 28.31), (450.0, 27.41), (460.0, 26.25),
              (470.0, 24.90), (480.0, 23.05), (490.0, 21.58), (500.0, 19.94),
              (510.0, 18.48), (520.0, 17.01), (530.0, 15.34), (540.0, 12.93),
              (550.0, 10.17), (560.0,  7.86), (570.0,  6.23), (580.0,  5.07),
              (590.0,  4.03), (600.0,  3.18), (610.0,  2.38), (620.0,  1.72),
              (630.0,  0.95), (640.0,  0.71), (650.0,  0.44), (660.0,  0.25),
              (670.0,  0.14), (680.0,  0.07), (690.0,  0.03), (700.0,  0.02),
              (710.0,  0.00)])
# convert percent -> fraction
r7081hqe_photocathode.detect[:,1] /= 100.0
# roughly the same amount of detected photons are absorbed without detection
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)
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')
water_wcsim.density = 1.0 # g/cm^3
water_wcsim.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, 
       1.74647e-09, 1.77142e-09,1.7971e-09, 1.82352e-09, 
       1.85074e-09, 1.87878e-09, 1.90769e-09, 1.93749e-09, 
       1.96825e-09, 1.99999e-09, 2.03278e-09, 2.06666e-09,
       2.10169e-09, 2.13793e-09, 2.17543e-09, 2.21428e-09, 
       2.25454e-09, 2.29629e-09, 2.33962e-09, 2.38461e-09, 
       2.43137e-09, 2.47999e-09, 2.53061e-09, 2.58333e-09, 
       2.63829e-09, 2.69565e-09, 2.75555e-09, 2.81817e-09, 
       2.88371e-09, 2.95237e-09, 3.02438e-09, 3.09999e-09,
       3.17948e-09, 3.26315e-09, 3.35134e-09, 3.44444e-09, 
       3.54285e-09, 3.64705e-09, 3.75757e-09, 3.87499e-09, 
       3.99999e-09, 4.13332e-09, 4.27585e-09, 4.42856e-09, 
       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', 
                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,
                          1.33241, 1.3327, 1.33299, 1.33329, 1.33361, 1.33393, 1.33427, 1.33462,
                          1.33498, 1.33536, 1.33576, 1.33617, 1.3366, 1.33705, 1.33753, 1.33803,
                          1.33855, 1.33911, 1.3397, 1.34033, 1.341, 1.34172, 1.34248, 1.34331,
                          1.34419, 1.34515, 1.3462, 1.34733, 1.34858, 1.34994, 1.35145, 1.35312,
                          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',
                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,
                 193.797, 215.045, 227.786, 243.893, 294.113,
                 321.735, 342.931, 362.967, 378.212, 449.602,
                 740.143, 1116.06, 1438.78, 1615.48, 1769.86,
                 2109.67, 2304.13, 2444.97, 3076.83, 4901.5,
                 6666.57, 7873.95, 9433.81, 10214.5, 10845.8,
                 15746.9, 20201.8, 22025.8, 21142.2, 15083.9,
                 11751,   8795.34, 8741.23, 7102.37, 6060.68,
                 4498.56, 3039.56, 2232.2,  1938,    1811.58,
                 1610.32, 1338.7,  1095.3,  977.525, 965.258,
                 1082.86, 876.434, 633.723, 389.87,  142.011])[::-1] / 100.0 # reversed, cm->m
                )
      
water_wcsim.set('scattering_length',
                wavelengths=wcsim_wavelengths,
                value=np.array([167024.4, 158726.7, 150742,
                          143062.5, 135680.2, 128587.4,
                          121776.3, 115239.5, 108969.5,
                          102958.8, 97200.35, 91686.86,
                          86411.33, 81366.79, 76546.42,
                          71943.46, 67551.29, 63363.36,
                          59373.25, 55574.61, 51961.24,
                          48527.00, 45265.87, 42171.94,
                          39239.39, 36462.50, 33835.68,
                          31353.41, 29010.30, 26801.03,
                          24720.42, 22763.36, 20924.88,
                          19200.07, 17584.16, 16072.45,
                          14660.38, 13343.46, 12117.33,
                          10977.70, 9920.416, 8941.407,
                          8036.711, 7202.470, 6434.927,
                          5730.429, 5085.425, 4496.467,
                          3960.210, 3473.413, 3032.937,
                          2635.746, 2278.907, 1959.588,
                          1675.064, 1422.710, 1200.004,
                          1004.528, 833.9666, 686.1063])[::-1] / 100.0 * 0.625 # reversed, cm -> m, * magic tuning constant
                )