Garfield++ v2r0
A toolkit for the detailed simulation of particle detectors based on ionisation measurement in gases and semiconductors
Loading...
Searching...
No Matches
OpticalData.cc
Go to the documentation of this file.
1#include <iostream>
2#include <iomanip>
3#include <cmath>
4
5#include "OpticalData.hh"
7
8namespace Garfield {
9
10bool OpticalData::IsAvailable(const std::string material) const {
11
12 if (material == "Ne") return true;
13 if (material == "Ar") return true;
14
15 if (material == "CO2") return true;
16
17 if (material == "CH4") return true;
18 if (material == "C2H6") return true;
19 if (material == "nC4H10") return true;
20
21 if (material == "C2H2") return true;
22
23 if (material == "CF4") return true;
24
25 if (material == "N2") return true;
26
27 return false;
28}
29
30bool OpticalData::GetPhotoabsorptionCrossSection(const std::string material,
31 const double e, double& cs,
32 double& eta) {
33
34 if (material == "Ne") return PhotoAbsorptionCsNeon(e, cs, eta);
35 if (material == "Ar") return PhotoAbsorptionCsArgon(e, cs, eta);
36
37 if (material == "CO2") return PhotoAbsorptionCsCO2(e, cs, eta);
38
39 if (material == "CH4") return PhotoAbsorptionCsMethane(e, cs, eta);
40 if (material == "C2H6") return PhotoAbsorptionCsEthane(e, cs, eta);
41 if (material == "nC4H10") return PhotoAbsorptionCsButane(e, cs, eta);
42 if (material == "C2H2") return PhotoAbsorptionCsAcetylene(e, cs, eta);
43
44 if (material == "CF4") return PhotoAbsorptionCsCF4(e, cs, eta);
45
46 if (material == "N2") return PhotoAbsorptionCsNitrogen(e, cs, eta);
47
48 return false;
49}
50
51bool OpticalData::PhotoAbsorptionCsNeon(const double e, double& cs,
52 double& eta) {
53
54 // Sources:
55 // J. Berkowitz, Atomic and Molecular Photoabsorption (2002)
56 // N. Sakamoto et al., NIFS-DATA 109
57
58 const double ip12 = 21.6613;
59
60 if (e < ip12) {
61 cs = eta = 0.;
62 return true;
63 }
64
65 double a, b, c, d;
66 if (e < 48.475) {
67 a = 16.13668;
68 b = -38.9941;
69 c = 35.96058;
70 d = -12.319;
71 } else if (e < 250.0) {
72 a = 5.806197;
73 b = 73.98605;
74 c = -328.517;
75 d = 353.6014;
76 } else if (e < 280.0) {
77 a = -2071.35;
78 b = 76715.55;
79 c = -942469.;
80 d = 3857740.;
81 } else if (e < 870.25) {
82 a = 0.766927;
83 b = 170.951;
84 c = -971.918;
85 d = 2191.973;
86 } else if (e < 2984.3) {
87 a = 3.401404;
88 b = 4655.156;
89 c = -92346.7;
90 d = 683347.;
91 } else {
92 a = -2.13904;
93 b = 5956.894;
94 c = -185028.;
95 d = 2306776.;
96 }
97
98 const double y = ip12 / e;
99 const double f =
100 a * pow(y, 2) + b * pow(y, 3) + c * pow(y, 4) + d * pow(y, 5);
101 // Convert from oscillator strength (per Rydberg) to photoabsorption cs
102 cs = 8.067283e-18 * f;
103 eta = 1.;
104 return true;
105}
106
107bool OpticalData::PhotoAbsorptionCsArgon(const double e, double& cs,
108 double& eta) {
109
110 // Sources:
111 // J. Berkowitz, Atomic and Molecular Photoabsorption (2002)
112 // N. Sakamoto et al., NIFS-DATA 109
113
114 const double ip32 = 15.7596103;
115 const double ip12 = 15.9371039;
116
117 if (e < ip32) {
118 cs = eta = 0.;
119 return true;
120 } else if (e < ip12) {
121 // Continuum contribution between IP 3/2 and IP 1/2
122 cs = 20.75e-18;
123 eta = 1.;
124 return true;
125 }
126
127 if (e >= 243. && e <= 336.) {
128 // L23 edge
129 const int nEntries = 130;
130 const double xAr[nEntries] = {
131 2.4300e02, 2.4400e02, 2.4450e02, 2.4500e02, 2.4550e02, 2.4600e02,
132 2.4650e02, 2.4700e02, 2.4750e02, 2.4800e02, 2.4850e02, 2.4900e02,
133 2.4950e02, 2.5000e02, 2.5050e02, 2.5100e02, 2.5150e02, 2.5200e02,
134 2.5250e02, 2.5300e02, 2.5350e02, 2.5400e02, 2.5450e02, 2.5500e02,
135 2.5550e02, 2.5600e02, 2.5650e02, 2.5700e02, 2.5750e02, 2.5800e02,
136 2.5850e02, 2.5900e02, 2.5950e02, 2.6000e02, 2.6050e02, 2.6100e02,
137 2.6150e02, 2.6200e02, 2.6250e02, 2.6300e02, 2.6350e02, 2.6400e02,
138 2.6450e02, 2.6500e02, 2.6550e02, 2.6600e02, 2.6650e02, 2.6700e02,
139 2.6750e02, 2.6800e02, 2.6850e02, 2.6900e02, 2.6950e02, 2.7000e02,
140 2.7050e02, 2.7100e02, 2.7150e02, 2.7200e02, 2.7250e02, 2.7300e02,
141 2.7350e02, 2.7400e02, 2.7450e02, 2.7500e02, 2.7550e02, 2.7600e02,
142 2.7650e02, 2.7700e02, 2.7750e02, 2.7800e02, 2.7850e02, 2.7900e02,
143 2.7950e02, 2.8000e02, 2.8100e02, 2.8200e02, 2.8300e02, 2.8400e02,
144 2.8500e02, 2.8600e02, 2.8700e02, 2.8800e02, 2.8900e02, 2.9000e02,
145 2.9100e02, 2.9200e02, 2.9300e02, 2.9400e02, 2.9500e02, 2.9600e02,
146 2.9700e02, 2.9800e02, 2.9900e02, 3.0000e02, 3.0100e02, 3.0200e02,
147 3.0300e02, 3.0400e02, 3.0500e02, 3.0600e02, 3.0700e02, 3.0800e02,
148 3.0900e02, 3.1000e02, 3.1100e02, 3.1200e02, 3.1300e02, 3.1400e02,
149 3.1500e02, 3.1600e02, 3.1700e02, 3.1800e02, 3.1900e02, 3.2000e02,
150 3.2100e02, 3.2200e02, 3.2300e02, 3.2400e02, 3.2500e02, 3.2600e02,
151 3.2700e02, 3.2800e02, 3.2900e02, 3.3000e02, 3.3100e02, 3.3200e02,
152 3.3300e02, 3.3400e02, 3.3500e02, 3.3600e02};
153
154 const double yAr[nEntries] = {
155 4.1053e-01, 5.7040e-01, 8.3784e-01, 7.6382e-01, 5.8520e-01, 6.0099e-01,
156 1.0352, 1.5938, 1.8138, 1.9737, 2.2698, 2.6546,
157 3.0888, 3.3750, 3.5428, 3.7204, 3.8092, 3.8882,
158 3.8882, 3.9178, 4.3657, 4.3323, 4.3212, 4.2324,
159 4.1990, 4.1768, 4.0991, 4.0546, 4.0324, 3.9769,
160 3.9658, 3.9435, 3.8658, 3.8769, 3.8102, 3.7769,
161 3.8213, 3.7658, 3.7547, 3.7325, 3.7214, 2.7106,
162 2.6945, 2.7106, 2.6945, 2.6945, 2.7026, 2.7026,
163 2.7106, 2.6945, 2.6864, 2.6380, 2.5977, 2.5735,
164 2.5332, 3.3806, 3.3697, 3.3697, 3.3367, 3.3258,
165 3.3148, 3.3148, 3.3038, 3.2819, 3.2489, 3.2599,
166 3.2489, 3.2489, 3.1940, 3.2050, 3.1940, 3.1831,
167 3.2050, 3.1721, 3.1611, 3.1501, 3.1282, 3.1501,
168 3.1172, 3.1282, 3.1062, 3.1062, 3.1062, 3.0843,
169 3.0623, 3.0623, 3.0404, 3.0294, 3.0075, 3.0294,
170 3.0184, 3.0075, 2.9745, 2.9745, 2.9965, 2.9635,
171 2.9306, 2.9306, 2.9306, 2.9196, 2.9306, 2.8977,
172 2.8757, 2.8867, 2.8867, 2.8757, 2.8757, 2.8867,
173 2.8428, 2.8209, 2.8428, 2.8428, 2.8209, 2.8428,
174 2.8428, 2.8538, 2.9196, 2.9635, 3.0075, 3.0075,
175 2.9635, 3.0075, 2.9526, 2.9526, 2.9087, 2.8648,
176 2.8977, 2.8757, 2.8648, 2.8318};
177
178 int iLow = 0;
179 int iUp = nEntries - 1;
180 int iM;
181 while (iUp - iLow > 1) {
182 iM = (iUp + iLow) >> 1;
183 if (e >= xAr[iM]) {
184 iLow = iM;
185 } else {
186 iUp = iM;
187 }
188 }
189
190 // Linear interpolation.
191 cs = yAr[iLow] +
192 (e - xAr[iLow]) * (yAr[iUp] - yAr[iLow]) / (xAr[iUp] - xAr[iLow]);
193 // Convert from Mbarn to cm2.
194 cs *= 1.e-18;
195 eta = 1.;
196 return true;
197 }
198
199 double a, b, c, d;
200 if (e < 29.2395) {
201 a = -25.4281;
202 b = 170.7881;
203 c = -247.886;
204 d = 106.5586;
205 } else if (e < 48.) {
206 a = 76.97689;
207 b = -573.622;
208 c = 1358.922;
209 d = -976.888;
210 } else if (e < 79.3) {
211 a = 14.43074;
212 b = -40.8325;
213 c = -115.985;
214 d = 347.5945;
215 } else if (e < 243.) {
216 a = 5.617571;
217 b = 128.2189;
218 c = -1203.47;
219 d = 2660.151;
220 } else if (e < 500.) {
221 a = -11.8768;
222 b = 8371.694;
223 c = -109963.;
224 d = 0.;
225 } else if (e < 929.7) {
226 a = 35.65584;
227 b = 4922.702;
228 c = 8315.576;
229 d = -1757750.;
230 } else if (e < 3206.) {
231 a = 20.59692;
232 b = 6151.107;
233 c = -2513.47;
234 d = -2337467.;
235 } else if (e < 6199.3) {
236 a = -1004.53;
237 b = 954912.7;
238 c = -220652027.;
239 d = 17883565552.;
240 } else {
241 a = 12.26308;
242 b = 132886.9;
243 c = -5911229.;
244 d = -624237063.;
245 }
246
247 const double y = ip12 / e;
248 const double f =
249 a * pow(y, 2) + b * pow(y, 3) + c * pow(y, 4) + d * pow(y, 5);
250 // Convert from oscillator strength (per Rydberg) to photoabsorption cs
251 cs = 8.067283e-18 * f;
252 eta = 1.;
253 return true;
254}
255
256bool OpticalData::PhotoAbsorptionCsCO2(const double e, double& cs,
257 double& eta) {
258
259 // Sources:
260 // Photoabsorption cross-section:
261 // J. Berkowitz, Atomic and Molecular Photoabsorption (2002)
262 // N. Sakamoto et al., NIFS-DATA 109
263 // Photoionization yield:
264 // Nakata et al., Science of Light 14 (1965), 14
265 // Barrus et al., Phys. Rev. A 20 (1979), 1045
266 // Ukai et al., J. Chem. Phys. 97 (1992), 2835
267
268 if (e < 7.) {
269 cs = eta = 0.;
270 return true;
271 }
272
273 const double ip = 13.7763;
274
275 if (e < 107.) {
276
277 // Photoabsorption cross-section
278 const int nPacsEntries = 1072;
279
280 const double xCO2[nPacsEntries] = {
281 7.0000, 7.3120, 7.5360, 7.7130, 7.8620, 8.0170, 8.1810,
282 8.3290, 8.5750, 8.7380, 8.8800, 9.0360, 9.2060, 9.3480,
283 9.4850, 9.5720, 9.6760, 9.8120, 9.9500, 1.0080e1, 1.0170e1,
284 1.0330e1, 1.0660e1, 1.0715e1, 1.0727e1, 1.0794e1, 1.0842e1, 1.0875e1,
285 1.0923e1, 1.0978e1, 1.0990e1, 1.1045e1, 1.1071e1, 1.1112e1, 1.1133e1,
286 1.1167e1, 1.1193e1, 1.1241e1, 1.1262e1, 1.1322e1, 1.1336e1, 1.1377e1,
287 1.1403e1, 1.1418e1, 1.1470e1, 1.1492e1, 1.1525e1, 1.1544e1, 1.1585e1,
288 1.1621e1, 1.1666e1, 1.1714e1, 1.1735e1, 1.1769e1, 1.1817e1, 1.1843e1,
289 1.1876e1, 1.1917e1, 1.1924e1, 1.1965e1, 1.2017e1, 1.2053e1, 1.2087e1,
290 1.2139e1, 1.2180e1, 1.2221e1, 1.2254e1, 1.2295e1, 1.2357e1, 1.2405e1,
291 1.2438e1, 1.2471e1, 1.2526e1, 1.2565e1, 1.2601e1, 1.2634e1, 1.2675e1,
292 1.2701e1, 1.2742e1, 1.2801e1, 1.2823e1, 1.2842e1, 1.2918e1, 1.2937e1,
293 1.2971e1, 1.3033e1, 1.3093e1, 1.3160e1, 1.3167e1, 1.3196e1, 1.3229e1,
294 1.3262e1, 1.3296e1, 1.3344e1, 1.3411e1, 1.3432e1, 1.3458e1, 1.3485e1,
295 1.3518e1, 1.3559e1, 1.3592e1, 1.3621e1, 1.3647e1, 1.3681e1, 1.3729e1,
296 1.3755e1, 1.3776e1, 1.3780e1, 1.3783e1, 1.3786e1, 1.3790e1, 1.3794e1,
297 1.3796e1, 1.3799e1, 1.3803e1, 1.3806e1, 1.3814e1, 1.3818e1, 1.3821e1,
298 1.3825e1, 1.3827e1, 1.3831e1, 1.3835e1, 1.3839e1, 1.3843e1, 1.3846e1,
299 1.3849e1, 1.3853e1, 1.3857e1, 1.3863e1, 1.3868e1, 1.3872e1, 1.3874e1,
300 1.3878e1, 1.3881e1, 1.3884e1, 1.3887e1, 1.3891e1, 1.3894e1, 1.3902e1,
301 1.3908e1, 1.3914e1, 1.3916e1, 1.3921e1, 1.3925e1, 1.3933e1, 1.3937e1,
302 1.3938e1, 1.3942e1, 1.3947e1, 1.3950e1, 1.3953e1, 1.3959e1, 1.3962e1,
303 1.3965e1, 1.3972e1, 1.3982e1, 1.3984e1, 1.3988e1, 1.3995e1, 1.3999e1,
304 1.4002e1, 1.4008e1, 1.4012e1, 1.4014e1, 1.4019e1, 1.4026e1, 1.4030e1,
305 1.4035e1, 1.4038e1, 1.4041e1, 1.4047e1, 1.4050e1, 1.4059e1, 1.4065e1,
306 1.4072e1, 1.4077e1, 1.4083e1, 1.4087e1, 1.4093e1, 1.4104e1, 1.4112e1,
307 1.4130e1, 1.4137e1, 1.4142e1, 1.4153e1, 1.4189e1, 1.4194e1, 1.4200e1,
308 1.4206e1, 1.4215e1, 1.4223e1, 1.4246e1, 1.4254e1, 1.4290e1, 1.4296e1,
309 1.4308e1, 1.4318e1, 1.4349e1, 1.4356e1, 1.4403e1, 1.4456e1, 1.4465e1,
310 1.4504e1, 1.4513e1, 1.4542e1, 1.4611e1, 1.4663e1, 1.4671e1, 1.4680e1,
311 1.4710e1, 1.4752e1, 1.4805e1, 1.4836e1, 1.4847e1, 1.4862e1, 1.4878e1,
312 1.4898e1, 1.4921e1, 1.4938e1, 1.4943e1, 1.4961e1, 1.4977e1, 1.4985e1,
313 1.5007e1, 1.5023e1, 1.5043e1, 1.5062e1, 1.5081e1, 1.5086e1, 1.5097e1,
314 1.5106e1, 1.5114e1, 1.5124e1, 1.5134e1, 1.5139e1, 1.5144e1, 1.5159e1,
315 1.5178e1, 1.5187e1, 1.5194e1, 1.5208e1, 1.5225e1, 1.5239e1, 1.5252e1,
316 1.5256e1, 1.5268e1, 1.5282e1, 1.5289e1, 1.5323e1, 1.5328e1, 1.5342e1,
317 1.5348e1, 1.5363e1, 1.5366e1, 1.5371e1, 1.5384e1, 1.5394e1, 1.5401e1,
318 1.5413e1, 1.5425e1, 1.5437e1, 1.5448e1, 1.5463e1, 1.5480e1, 1.5486e1,
319 1.5495e1, 1.5511e1, 1.5529e1, 1.5542e1, 1.5545e1, 1.5550e1, 1.5563e1,
320 1.5567e1, 1.5581e1, 1.5584e1, 1.5590e1, 1.5604e1, 1.5612e1, 1.5615e1,
321 1.5633e1, 1.5640e1, 1.5655e1, 1.5668e1, 1.5680e1, 1.5685e1, 1.5707e1,
322 1.5712e1, 1.5716e1, 1.5723e1, 1.5725e1, 1.5731e1, 1.5735e1, 1.5738e1,
323 1.5744e1, 1.5749e1, 1.5753e1, 1.5763e1, 1.5774e1, 1.5784e1, 1.5790e1,
324 1.5795e1, 1.5806e1, 1.5812e1, 1.5820e1, 1.5843e1, 1.5853e1, 1.5863e1,
325 1.5871e1, 1.5878e1, 1.5886e1, 1.5894e1, 1.5897e1, 1.5905e1, 1.5908e1,
326 1.5914e1, 1.5921e1, 1.5924e1, 1.5932e1, 1.5937e1, 1.5944e1, 1.5946e1,
327 1.5951e1, 1.5956e1, 1.5962e1, 1.5976e1, 1.5985e1, 1.5992e1, 1.5997e1,
328 1.6004e1, 1.6010e1, 1.6014e1, 1.6021e1, 1.6029e1, 1.6033e1, 1.6036e1,
329 1.6042e1, 1.6047e1, 1.6054e1, 1.6063e1, 1.6070e1, 1.6077e1, 1.6078e1,
330 1.6087e1, 1.6091e1, 1.6096e1, 1.6101e1, 1.6109e1, 1.6114e1, 1.6120e1,
331 1.6122e1, 1.6127e1, 1.6131e1, 1.6139e1, 1.6148e1, 1.6156e1, 1.6164e1,
332 1.6173e1, 1.6182e1, 1.6190e1, 1.6200e1, 1.6214e1, 1.6222e1, 1.6228e1,
333 1.6235e1, 1.6240e1, 1.6243e1, 1.6249e1, 1.6257e1, 1.6272e1, 1.6284e1,
334 1.6291e1, 1.6293e1, 1.6297e1, 1.6305e1, 1.6311e1, 1.6315e1, 1.6324e1,
335 1.6331e1, 1.6337e1, 1.6342e1, 1.6349e1, 1.6355e1, 1.6360e1, 1.6371e1,
336 1.6386e1, 1.6395e1, 1.6413e1, 1.6430e1, 1.6434e1, 1.6437e1, 1.6441e1,
337 1.6444e1, 1.6447e1, 1.6451e1, 1.6456e1, 1.6461e1, 1.6465e1, 1.6469e1,
338 1.6474e1, 1.6479e1, 1.6483e1, 1.6487e1, 1.6491e1, 1.6493e1, 1.6498e1,
339 1.6501e1, 1.6506e1, 1.6523e1, 1.6535e1, 1.6547e1, 1.6556e1, 1.6563e1,
340 1.6569e1, 1.6575e1, 1.6581e1, 1.6586e1, 1.6591e1, 1.6598e1, 1.6609e1,
341 1.6619e1, 1.6624e1, 1.6627e1, 1.6631e1, 1.6639e1, 1.6646e1, 1.6664e1,
342 1.6669e1, 1.6681e1, 1.6692e1, 1.6696e1, 1.6701e1, 1.6708e1, 1.6713e1,
343 1.6719e1, 1.6723e1, 1.6725e1, 1.6728e1, 1.6734e1, 1.6739e1, 1.6745e1,
344 1.6750e1, 1.6753e1, 1.6757e1, 1.6760e1, 1.6768e1, 1.6787e1, 1.6798e1,
345 1.6801e1, 1.6820e1, 1.6824e1, 1.6827e1, 1.6833e1, 1.6836e1, 1.6841e1,
346 1.6848e1, 1.6856e1, 1.6862e1, 1.6864e1, 1.6870e1, 1.6878e1, 1.6881e1,
347 1.6885e1, 1.6889e1, 1.6892e1, 1.6897e1, 1.6899e1, 1.6902e1, 1.6905e1,
348 1.6909e1, 1.6913e1, 1.6916e1, 1.6922e1, 1.6933e1, 1.6936e1, 1.6944e1,
349 1.6952e1, 1.6964e1, 1.6969e1, 1.6976e1, 1.6981e1, 1.6986e1, 1.6989e1,
350 1.6993e1, 1.6996e1, 1.6998e1, 1.7003e1, 1.7009e1, 1.7021e1, 1.7024e1,
351 1.7028e1, 1.7031e1, 1.7035e1, 1.7038e1, 1.7041e1, 1.7044e1, 1.7050e1,
352 1.7054e1, 1.7056e1, 1.7059e1, 1.7063e1, 1.7066e1, 1.7071e1, 1.7073e1,
353 1.7076e1, 1.7079e1, 1.7083e1, 1.7103e1, 1.7108e1, 1.7112e1, 1.7118e1,
354 1.7124e1, 1.7133e1, 1.7143e1, 1.7152e1, 1.7156e1, 1.7161e1, 1.7165e1,
355 1.7170e1, 1.7175e1, 1.7177e1, 1.7180e1, 1.7184e1, 1.7188e1, 1.7192e1,
356 1.7198e1, 1.7201e1, 1.7206e1, 1.7211e1, 1.7214e1, 1.7225e1, 1.7226e1,
357 1.7240e1, 1.7242e1, 1.7244e1, 1.7245e1, 1.7248e1, 1.7251e1, 1.7257e1,
358 1.7259e1, 1.7262e1, 1.7264e1, 1.7270e1, 1.7275e1, 1.7281e1, 1.7284e1,
359 1.7292e1, 1.7298e1, 1.7302e1, 1.7307e1, 1.7311e1, 1.7317e1, 1.7320e1,
360 1.7323e1, 1.7327e1, 1.7330e1, 1.7334e1, 1.7341e1, 1.7347e1, 1.7350e1,
361 1.7355e1, 1.7357e1, 1.7360e1, 1.7362e1, 1.7366e1, 1.7371e1, 1.7376e1,
362 1.7383e1, 1.7387e1, 1.7390e1, 1.7391e1, 1.7393e1, 1.7397e1, 1.7402e1,
363 1.7406e1, 1.7414e1, 1.7420e1, 1.7424e1, 1.7427e1, 1.7430e1, 1.7433e1,
364 1.7439e1, 1.7443e1, 1.7445e1, 1.7449e1, 1.7455e1, 1.7459e1, 1.7463e1,
365 1.7469e1, 1.7475e1, 1.7482e1, 1.7485e1, 1.7492e1, 1.7494e1, 1.7497e1,
366 1.7503e1, 1.7508e1, 1.7512e1, 1.7515e1, 1.7518e1, 1.7524e1, 1.7527e1,
367 1.7531e1, 1.7535e1, 1.7538e1, 1.7540e1, 1.7543e1, 1.7548e1, 1.7552e1,
368 1.7555e1, 1.7556e1, 1.7559e1, 1.7566e1, 1.7571e1, 1.7576e1, 1.7582e1,
369 1.7586e1, 1.7591e1, 1.7593e1, 1.7599e1, 1.7605e1, 1.7610e1, 1.7615e1,
370 1.7617e1, 1.7627e1, 1.7631e1, 1.7633e1, 1.7638e1, 1.7643e1, 1.7648e1,
371 1.7655e1, 1.7664e1, 1.7671e1, 1.7674e1, 1.7678e1, 1.7686e1, 1.7694e1,
372 1.7697e1, 1.7701e1, 1.7707e1, 1.7712e1, 1.7713e1, 1.7716e1, 1.7721e1,
373 1.7727e1, 1.7731e1, 1.7733e1, 1.7736e1, 1.7740e1, 1.7745e1, 1.7754e1,
374 1.7763e1, 1.7768e1, 1.7772e1, 1.7774e1, 1.7778e1, 1.7781e1, 1.7784e1,
375 1.7789e1, 1.7792e1, 1.7795e1, 1.7798e1, 1.7802e1, 1.7808e1, 1.7813e1,
376 1.7817e1, 1.7820e1, 1.7828e1, 1.7832e1, 1.7838e1, 1.7842e1, 1.7846e1,
377 1.7847e1, 1.7851e1, 1.7853e1, 1.7856e1, 1.7858e1, 1.7861e1, 1.7864e1,
378 1.7867e1, 1.7871e1, 1.7874e1, 1.7875e1, 1.7881e1, 1.7888e1, 1.7892e1,
379 1.7895e1, 1.7897e1, 1.7901e1, 1.7906e1, 1.7908e1, 1.7911e1, 1.7914e1,
380 1.7919e1, 1.7926e1, 1.7931e1, 1.7935e1, 1.7940e1, 1.7942e1, 1.7945e1,
381 1.7948e1, 1.7950e1, 1.7956e1, 1.7959e1, 1.7962e1, 1.7965e1, 1.7968e1,
382 1.7972e1, 1.7978e1, 1.7981e1, 1.7983e1, 1.7986e1, 1.7989e1, 1.7994e1,
383 1.7996e1, 1.7998e1, 1.8002e1, 1.8006e1, 1.8010e1, 1.8012e1, 1.8014e1,
384 1.8022e1, 1.8025e1, 1.8028e1, 1.8034e1, 1.8044e1, 1.8047e1, 1.8057e1,
385 1.8062e1, 1.8068e1, 1.8072e1, 1.8078e1, 1.8082e1, 1.8091e1, 1.8096e1,
386 1.8101e1, 1.8106e1, 1.8119e1, 1.8125e1, 1.8129e1, 1.8138e1, 1.8146e1,
387 1.8150e1, 1.8152e1, 1.8156e1, 1.8164e1, 1.8168e1, 1.8172e1, 1.8179e1,
388 1.8186e1, 1.8199e1, 1.8220e1, 1.8239e1, 1.8241e1, 1.8245e1, 1.8253e1,
389 1.8260e1, 1.8274e1, 1.8277e1, 1.8288e1, 1.8293e1, 1.8294e1, 1.8299e1,
390 1.8307e1, 1.8311e1, 1.8324e1, 1.8332e1, 1.8339e1, 1.8342e1, 1.8353e1,
391 1.8363e1, 1.8370e1, 1.8379e1, 1.8393e1, 1.8412e1, 1.8419e1, 1.8422e1,
392 1.8432e1, 1.8439e1, 1.8444e1, 1.8451e1, 1.8458e1, 1.8459e1, 1.8465e1,
393 1.8469e1, 1.8476e1, 1.8489e1, 1.8498e1, 1.8503e1, 1.8513e1, 1.8518e1,
394 1.8524e1, 1.8526e1, 1.8530e1, 1.8534e1, 1.8545e1, 1.8551e1, 1.8558e1,
395 1.8588e1, 1.8624e1, 1.8629e1, 1.8633e1, 1.8644e1, 1.8649e1, 1.8661e1,
396 1.8674e1, 1.8686e1, 1.8697e1, 1.8705e1, 1.8718e1, 1.8730e1, 1.8740e1,
397 1.8751e1, 1.8764e1, 1.8771e1, 1.8796e1, 1.8799e1, 1.8806e1, 1.8809e1,
398 1.8820e1, 1.8823e1, 1.8831e1, 1.8840e1, 1.8851e1, 1.8855e1, 1.8858e1,
399 1.8867e1, 1.8875e1, 1.8890e1, 1.8903e1, 1.8908e1, 1.8919e1, 1.8929e1,
400 1.8936e1, 1.8941e1, 1.8949e1, 1.8956e1, 1.8963e1, 1.8969e1, 1.8980e1,
401 1.8982e1, 1.8996e1, 1.9006e1, 1.9011e1, 1.9018e1, 1.9024e1, 1.9025e1,
402 1.9034e1, 1.9040e1, 1.9047e1, 1.9056e1, 1.9068e1, 1.9073e1, 1.9078e1,
403 1.9082e1, 1.9090e1, 1.9097e1, 1.9104e1, 1.9115e1, 1.9121e1, 1.9130e1,
404 1.9135e1, 1.9144e1, 1.9155e1, 1.9160e1, 1.9168e1, 1.9173e1, 1.9176e1,
405 1.9180e1, 1.9192e1, 1.9198e1, 1.9211e1, 1.9218e1, 1.9224e1, 1.9230e1,
406 1.9235e1, 1.9237e1, 1.9242e1, 1.9250e1, 1.9259e1, 1.9261e1, 1.9263e1,
407 1.9267e1, 1.9280e1, 1.9285e1, 1.9294e1, 1.9303e1, 1.9308e1, 1.9315e1,
408 1.9322e1, 1.9328e1, 1.9339e1, 1.9344e1, 1.9350e1, 1.9357e1, 1.9365e1,
409 1.9370e1, 1.9376e1, 1.9387e1, 1.9394e1, 1.9398e1, 1.9403e1, 1.9410e1,
410 1.9418e1, 1.9427e1, 1.9431e1, 1.9441e1, 1.9447e1, 1.9459e1, 1.9472e1,
411 1.9486e1, 1.9496e1, 1.9510e1, 1.9523e1, 1.9528e1, 1.9539e1, 1.9550e1,
412 1.9551e1, 1.9556e1, 1.9574e1, 1.9579e1, 1.9586e1, 1.9589e1, 1.9594e1,
413 1.9599e1, 1.9600e1, 1.9612e1, 1.9621e1, 1.9634e1, 1.9636e1, 1.9642e1,
414 1.9651e1, 1.9659e1, 1.9665e1, 1.9670e1, 1.9673e1, 1.9679e1, 1.9684e1,
415 1.9703e1, 1.9712e1, 1.9718e1, 1.9736e1, 1.9748e1, 1.9771e1, 1.9785e1,
416 1.9790e1, 1.9798e1, 1.9806e1, 1.9815e1, 1.9838e1, 1.9863e1, 1.9950e1,
417 1.9980e1, 1.9996e1, 2.0005e1, 2.0029e1, 2.0379e1, 2.0696e1, 2.0897e1,
418 2.1041e1, 2.1196e1, 2.1455e1, 2.1641e1, 2.2001e1, 2.2248e1, 2.2537e1,
419 2.2851e1, 2.3122e1, 2.3521e1, 2.3767e1, 2.3964e1, 2.4344e1, 2.4724e1,
420 2.4997e1, 2.5406e1, 2.5708e1, 2.5934e1, 2.6105e1, 2.6530e1, 2.6962e1,
421 2.7216e1, 2.7515e1, 2.7862e1, 2.8167e1, 2.8394e1, 2.8659e1, 2.8807e1,
422 2.9010e1, 2.9207e1, 2.9644e1, 2.9876e1, 3.0161e1, 3.0601e1, 3.1011e1,
423 3.1328e1, 3.1745e1, 3.1979e1, 3.2331e1, 3.2677e1, 3.3097e1, 3.3598e1,
424 3.3850e1, 3.4046e1, 3.4328e1, 3.4934e1, 3.5155e1, 3.5376e1, 3.5546e1,
425 3.5643e1, 3.5930e1, 3.6160e1, 3.6670e1, 3.7190e1, 3.7700e1, 3.8210e1,
426 3.8720e1, 3.9230e1, 3.9740e1, 4.0030e1, 4.1070e1, 4.2100e1, 4.3130e1,
427 4.4170e1, 4.5200e1, 4.6230e1, 4.7270e1, 4.8300e1, 4.9330e1, 5.0370e1,
428 5.1400e1, 5.2430e1, 5.3470e1, 5.4500e1, 5.5530e1, 5.6570e1, 5.7600e1,
429 5.8630e1, 5.9670e1, 6.0700e1, 6.1730e1, 6.2770e1, 6.3800e1, 6.4830e1,
430 6.5870e1, 6.6900e1, 6.7930e1, 6.8970e1, 7.0000e1, 7.1030e1, 7.2070e1,
431 7.3100e1, 7.4130e1, 7.5170e1, 7.6200e1, 7.7230e1, 7.8270e1, 7.9300e1,
432 8.0050e1, 8.2100e1, 8.4150e1, 8.6200e1, 8.8250e1, 9.0300e1, 9.2340e1,
433 9.4390e1, 9.6440e1, 9.8490e1, 1.0054e2, 1.0259e2, 1.0464e2, 1.0669e2,
434 1.0708e2};
435
436 const double yCO2[nPacsEntries] = {
437 6.7469e-3, 3.4926e-2, 8.8547e-2, 1.7432e-1, 2.7115e-1, 3.6920e-1,
438 4.5146e-1, 4.9826e-1, 5.0214e-1, 5.1128e-1, 5.5255e-1, 6.2484e-1,
439 7.1291e-1, 7.4200e-1, 7.0101e-1, 6.4783e-1, 5.5338e-1, 4.1268e-1,
440 2.7063e-1, 1.7081e-1, 1.0541e-1, 4.8968e-2, 1.6916, 3.2380,
441 2.6515, 5.7460, 1.4952e1, 1.5913e1, 3.6168e1, 8.2791e1,
442 7.9483e1, 1.1133e2, 6.7176e1, 3.8379e1, 3.4611e1, 1.8162e1,
443 1.5189e1, 1.2592e1, 1.0080e1, 2.1587e1, 3.4728e1, 8.6792e1,
444 3.1293e1, 2.4304e1, 1.5763e1, 2.0032e1, 2.8903e1, 2.2374e1,
445 2.3460e1, 1.6469e1, 2.5926e1, 1.8600e1, 1.9771e1, 1.8012e1,
446 2.8306e1, 1.8217e1, 1.7295e1, 1.9177e1, 2.1898e1, 4.2363e1,
447 2.1434e1, 2.4488e1, 2.7583e1, 5.4703e1, 3.0300e1, 2.8875e1,
448 3.3018e1, 5.3733e1, 3.8119e1, 4.0838e1, 4.9458e1, 7.2686e1,
449 4.5436e1, 3.5139e1, 4.5308e1, 6.1881e1, 4.0451e1, 3.8106e1,
450 3.0863e1, 3.7724e1, 3.5130e1, 3.7262e1, 5.8689e1, 5.5256e1,
451 5.5589e1, 7.1575e1, 5.0729e1, 5.8303e1, 6.2948e1, 6.4704e1,
452 7.1442e1, 6.5162e1, 7.2275e1, 6.7545e1, 7.1308e1, 7.0722e1,
453 7.6162e1, 7.1933e1, 7.5574e1, 7.6409e1, 7.3687e1, 7.9252e1,
454 8.2683e1, 8.1635e1, 8.9543e1, 8.8497e1, 9.0588e1, 8.5500e1,
455 8.8018e1, 8.7001e1, 9.2849e1, 8.6631e1, 8.9718e1, 8.5005e1,
456 7.4685e1, 8.4108e1, 7.7564e1, 8.0772e1, 8.7758e1, 7.8697e1,
457 8.0320e1, 7.5687e1, 7.6945e1, 7.4221e1, 8.0395e1, 8.0962e1,
458 8.2951e1, 7.8318e1, 8.0754e1, 7.0513e1, 7.9367e1, 8.2331e1,
459 8.0502e1, 7.4285e1, 7.2333e1, 6.7173e1, 6.6359e1, 6.7292e1,
460 6.9362e1, 6.2128e1, 7.4962e1, 6.6713e1, 6.5087e1, 6.7725e1,
461 6.3011e1, 6.1871e1, 6.3250e1, 6.5768e1, 6.2801e1, 6.0930e1,
462 6.1295e1, 5.9465e1, 6.0600e1, 5.8852e1, 5.9460e1, 5.5069e1,
463 5.6690e1, 5.5877e1, 5.5874e1, 5.3678e1, 5.1604e1, 5.2659e1,
464 5.2535e1, 5.0909e1, 5.1963e1, 5.2408e1, 4.9765e1, 5.0210e1,
465 4.9191e1, 4.5738e1, 4.9757e1, 4.7683e1, 4.7804e1, 4.4592e1,
466 4.6050e1, 4.2839e1, 4.2268e1, 4.0194e1, 4.1248e1, 4.1935e1,
467 3.9290e1, 3.9734e1, 3.6963e1, 3.6717e1, 3.7203e1, 3.4557e1,
468 3.1535e1, 3.1777e1, 3.0596e1, 3.1082e1, 3.0021e1, 3.0018e1,
469 2.7043e1, 2.7161e1, 2.4708e1, 2.4828e1, 2.3888e1, 2.3884e1,
470 2.1800e1, 2.2040e1, 1.9949e1, 1.8220e1, 1.8420e1, 1.7064e1,
471 1.7263e1, 1.6357e1, 1.5395e1, 1.4440e1, 1.4111e1, 1.4433e1,
472 1.3853e1, 1.3388e1, 1.2921e1, 1.2665e1, 1.3351e1, 1.2899e1,
473 1.2893e1, 1.3575e1, 1.2266e1, 1.2260e1, 1.2223e1, 1.2605e1,
474 1.5201e1, 1.5500e1, 1.3243e1, 1.2894e1, 1.5167e1, 1.3234e1,
475 1.4773e1, 1.5498e1, 1.5474e1, 1.7243e1, 1.7439e1, 1.6051e1,
476 1.5187e1, 1.4232e1, 1.4957e1, 1.4505e1, 1.7831e1, 1.8761e1,
477 1.7799e1, 1.6823e1, 1.8052e1, 1.8338e1, 1.7997e1, 1.7357e1,
478 1.7123e1, 1.7620e1, 1.8659e1, 2.0588e1, 1.9736e1, 1.9288e1,
479 1.9591e1, 2.1559e1, 2.1132e1, 2.1123e1, 1.9097e1, 1.8553e1,
480 1.8749e1, 2.0197e1, 2.1540e1, 2.0886e1, 2.0759e1, 2.2307e1,
481 2.5008e1, 2.4997e1, 2.2875e1, 2.0214e1, 2.0390e1, 2.1836e1,
482 2.1411e1, 2.1714e1, 2.4951e1, 2.3784e1, 2.6073e1, 2.5752e1,
483 2.6687e1, 2.4134e1, 2.3489e1, 2.2535e1, 2.1553e1, 2.1857e1,
484 2.0776e1, 2.0960e1, 2.2831e1, 2.2926e1, 2.6881e1, 2.8660e1,
485 2.7705e1, 2.9691e1, 2.9685e1, 3.1146e1, 3.2507e1, 3.8706e1,
486 4.5216e1, 3.6583e1, 2.9212e1, 2.2882e1, 2.0652e1, 2.2422e1,
487 2.5565e1, 2.5766e1, 2.2590e1, 2.2789e1, 2.3721e1, 2.8621e1,
488 2.9654e1, 3.2055e1, 3.2776e1, 4.3281e1, 5.8097e1, 4.7248e1,
489 4.3140e1, 2.8504e1, 2.7657e1, 2.7331e1, 2.8896e1, 3.1939e1,
490 3.8761e1, 3.5808e1, 2.7695e1, 2.6745e1, 2.6210e1, 2.6832e1,
491 2.7136e1, 3.0371e1, 3.0354e1, 3.1392e1, 3.4751e1, 3.6525e1,
492 4.0196e1, 5.0180e1, 6.1001e1, 4.9101e1, 4.7832e1, 3.9201e1,
493 2.9197e1, 2.7610e1, 2.8964e1, 3.6943e1, 4.4608e1, 3.8074e1,
494 3.3759e1, 3.0061e1, 3.0265e1, 2.8362e1, 2.6355e1, 2.8443e1,
495 2.8013e1, 2.9159e1, 3.0315e1, 3.0726e1, 3.5135e1, 4.4902e1,
496 4.7622e1, 6.6750e1, 5.8742e1, 5.3361e1, 5.8814e1, 7.3735e1,
497 8.6971e1, 6.6541e1, 5.2115e1, 4.3165e1, 3.9049e1, 4.3037e1,
498 4.7134e1, 4.6283e1, 4.9635e1, 4.3507e1, 4.7588e1, 4.5471e1,
499 4.6414e1, 5.1351e1, 4.5131e1, 3.4285e1, 3.2107e1, 3.2069e1,
500 3.4440e1, 3.7501e1, 3.7824e1, 2.9555e1, 2.5413e1, 2.2986e1,
501 2.2596e1, 2.6306e1, 3.0040e1, 3.5798e1, 4.2928e1, 4.9089e1,
502 5.9371e1, 7.6168e1, 6.3801e1, 5.4179e1, 5.4850e1, 6.4091e1,
503 8.1573e1, 1.1450e2, 1.7968e2, 2.6407e2, 3.4813e2, 2.7329e2,
504 1.0788e2, 5.0215e1, 3.1675e1, 2.2733e1, 1.8601e1, 1.6866e1,
505 1.4391e1, 1.6738e1, 1.9778e1, 2.8318e1, 2.8973e1, 3.3409e1,
506 4.5397e1, 6.0122e1, 2.1669e1, 1.9249e1, 2.0934e1, 2.1570e1,
507 3.0111e1, 2.9403e1, 3.2132e1, 3.0744e1, 1.7327e1, 1.3868e1,
508 1.3789e1, 1.5830e1, 1.7494e1, 2.4997e1, 2.6351e1, 2.4616e1,
509 3.0078e1, 3.9664e1, 6.4691e1, 2.8642e1, 2.1771e1, 1.8671e1,
510 2.0703e1, 1.7940e1, 1.5852e1, 1.6520e1, 2.0622e1, 2.6785e1,
511 1.8193e1, 1.4725e1, 1.3963e1, 1.3232e1, 1.4249e1, 1.6570e1,
512 1.8958e1, 1.8943e1, 2.2009e1, 2.2339e1, 2.1287e1, 2.8121e1,
513 4.8335e1, 3.2526e1, 3.4578e1, 6.3379e1, 2.8000e1, 2.5582e1,
514 2.1106e1, 2.3836e1, 3.3430e1, 5.1600e1, 2.9972e1, 2.3098e1,
515 2.1025e1, 1.5520e1, 1.5848e1, 1.8576e1, 1.7182e1, 1.9536e1,
516 1.5064e1, 1.5033e1, 1.8089e1, 1.8039e1, 1.9046e1, 2.3480e1,
517 2.2089e1, 2.4813e1, 3.3380e1, 4.2629e1, 3.4037e1, 2.3393e1,
518 1.8912e1, 2.0944e1, 2.8103e1, 2.6374e1, 3.2192e1, 4.4533e1,
519 6.4763e1, 4.4161e1, 3.6258e1, 3.8989e1, 4.2397e1, 5.3707e1,
520 6.9825e1, 8.4571e1, 8.9357e1, 8.3170e1, 6.6336e1, 6.3925e1,
521 4.5725e1, 4.0224e1, 4.3980e1, 3.4085e1, 2.7239e1, 2.8480e1,
522 2.0656e1, 2.3869e1, 2.0471e1, 2.8110e1, 1.8336e1, 1.8108e1,
523 2.1561e1, 2.1819e1, 2.5272e1, 2.5536e1, 2.4318e1, 2.6048e1,
524 3.8321e1, 5.4762e1, 2.3884e1, 1.9494e1, 2.1468e1, 2.2960e1,
525 3.0086e1, 2.7647e1, 4.1665e1, 3.9464e1, 2.8484e1, 2.7508e1,
526 2.8498e1, 3.0218e1, 2.7534e1, 3.1224e1, 4.2523e1, 3.9344e1,
527 2.9793e1, 2.6616e1, 2.9335e1, 3.0578e1, 3.7959e1, 3.9438e1,
528 5.8593e1, 3.5569e1, 3.1418e1, 2.5553e1, 2.7285e1, 2.6083e1,
529 2.4375e1, 2.6591e1, 4.0341e1, 4.3538e1, 2.0506e1, 1.8324e1,
530 2.0799e1, 2.2284e1, 1.8869e1, 1.9122e1, 2.4529e1, 2.7232e1,
531 2.8963e1, 1.5987e1, 1.6496e1, 2.0446e1, 1.9235e1, 1.7530e1,
532 1.8759e1, 1.9751e1, 2.3442e1, 1.7330e1, 1.9061e1, 1.8845e1,
533 2.0095e1, 2.2070e1, 2.2818e1, 2.5528e1, 3.0196e1, 2.3354e1,
534 2.7291e1, 3.1958e1, 3.2461e1, 4.2784e1, 5.2359e1, 5.8993e1,
535 7.7159e1, 5.1195e1, 3.2587e1, 3.2597e1, 2.5512e1, 2.1842e1,
536 2.2345e1, 2.8005e1, 1.9933e1, 1.8231e1, 1.8487e1, 2.0951e1,
537 2.2445e1, 2.0497e1, 2.2718e1, 3.2294e1, 3.3773e1, 1.7530e1,
538 1.8759e1, 1.9751e1, 2.3442e1, 1.7330e1, 1.9061e1, 1.8845e1,
539 2.0095e1, 2.2070e1, 2.2818e1, 2.5528e1, 3.0196e1, 2.3354e1,
540 2.7291e1, 3.1958e1, 3.2461e1, 4.2784e1, 5.2359e1, 5.8993e1,
541 7.7159e1, 5.1195e1, 3.2587e1, 3.2597e1, 2.5512e1, 2.1842e1,
542 2.2345e1, 2.8005e1, 1.9933e1, 1.8231e1, 1.8487e1, 2.0951e1,
543 2.2445e1, 2.0497e1, 2.2718e1, 3.2294e1, 3.3773e1, 6.2859e1,
544 2.8297e1, 2.1696e1, 2.1964e1, 2.0260e1, 2.1252e1, 2.1752e1,
545 2.3238e1, 2.0067e1, 2.1080e1, 2.4547e1, 2.9712e1, 3.7820e1,
546 4.3466e1, 4.6420e1, 4.1772e1, 3.0259e1, 2.5620e1, 2.5630e1,
547 2.7357e1, 2.8352e1, 3.2043e1, 8.0364e1, 2.5950e1, 2.4494e1,
548 2.2300e1, 2.0856e1, 2.2096e1, 2.4572e1, 2.6791e1, 3.4406e1,
549 4.0786e1, 4.4722e1, 4.1543e1, 3.4196e1, 3.2245e1, 3.3234e1,
550 4.0111e1, 4.5761e1, 6.0730e1, 2.7643e1, 2.3724e1, 2.0558e1,
551 2.2051e1, 2.4273e1, 3.1148e1, 3.6059e1, 4.0241e1, 2.8000e1,
552 3.0215e1, 3.2433e1, 5.0586e1, 2.2654e1, 2.3415e1, 3.0542e1,
553 4.0609e1, 3.3025e1, 3.3277e1, 4.6282e1, 2.5208e1, 2.2763e1,
554 2.9649e1, 3.4073e1, 4.3400e1, 3.4340e1, 4.1214e1, 2.4559e1,
555 3.2670e1, 3.7092e1, 3.3913e1, 3.3923e1, 2.6331e1, 3.2479e1,
556 3.5918e1, 3.4702e1, 2.9567e1, 3.6201e1, 3.2536e1, 3.2662e1,
557 3.3942e1, 3.3987e1, 3.6718e1, 3.3283e1, 3.2516e1, 3.2873e1,
558 3.2779e1, 3.4525e1, 3.3712e1, 3.5600e1, 3.2992e1, 3.2647e1,
559 3.2928e1, 3.4830e1, 3.4906e1, 3.5967e1, 3.3796e1, 3.6040e1,
560 3.5633e1, 3.4680e1, 3.7785e1, 3.7127e1, 3.7938e1, 3.8110e1,
561 3.9372e1, 3.8029e1, 3.8433e1, 3.6841e1, 3.4029e1, 3.2685e1,
562 3.2386e1, 3.2069e1, 3.0691e1, 2.9925e1, 2.9800e1, 2.8018e1,
563 2.8173e1, 3.0215e1, 3.0386e1, 3.2069e1, 3.2255e1, 3.2583e1,
564 3.2847e1, 3.3204e1, 3.3265e1, 3.3669e1, 3.3448e1, 3.3446e1,
565 3.3291e1, 3.3460e1, 3.3410e1, 3.3752e1, 3.3501e1, 3.3419e1,
566 3.3181e1, 3.3008e1, 3.3304e1, 3.3020e1, 3.3457e1, 3.2987e1,
567 3.3391e1, 3.3530e1, 3.3748e1, 3.3919e1, 3.3715e1, 3.4119e1,
568 3.4132e1, 3.3740e1, 3.4098e1, 3.4439e1, 3.4391e1, 3.4609e1,
569 3.4436e1, 3.4607e1, 3.4825e1, 3.3604e1, 3.3229e1, 3.3477e1,
570 3.3751e1, 3.4352e1, 3.4679e1, 3.4569e1, 3.4988e1, 3.4909e1,
571 3.5781e1, 3.9134e1, 3.3215e1, 3.3010e1, 3.2477e1, 2.9759e1,
572 3.2269e1, 3.3422e1, 3.3763e1, 3.3839e1, 3.4118e1, 3.4362e1,
573 3.4206e1, 3.4767e1, 3.4906e1, 3.5139e1, 3.5372e1, 3.5698e1,
574 3.6898e1, 3.4320e1, 3.3305e1, 3.3803e1, 3.4223e1, 3.4346e1,
575 3.4468e1, 3.5261e1, 3.5822e1, 3.8208e1, 3.3211e1, 3.2008e1,
576 3.0445e1, 3.2629e1, 3.3643e1, 3.4358e1, 3.4545e1, 3.4762e1,
577 3.4932e1, 3.5039e1, 3.5755e1, 3.5598e1, 3.3661e1, 3.3832e1,
578 3.4050e1, 3.4251e1, 3.4686e1, 3.4888e1, 3.7102e1, 3.1387e1,
579 3.3165e1, 3.4117e1, 3.4506e1, 3.4583e1, 3.5237e1, 3.5735e1,
580 3.4546e1, 3.4608e1, 3.4996e1, 3.6337e1, 3.1793e1, 3.4553e1,
581 3.5177e1, 3.5831e1, 3.5408e1, 3.4923e1, 3.4564e1, 3.6061e1,
582 3.2953e1, 3.6072e1, 3.5228e1, 3.4898e1, 3.5381e1, 3.4334e1,
583 3.3273e1, 3.4396e1, 3.4956e1, 3.4720e1, 3.4439e1, 3.3938e1,
584 3.4671e1, 3.5043e1, 3.4278e1, 3.4994e1, 3.4228e1, 3.4991e1,
585 3.4474e1, 3.5082e1, 3.4831e1, 3.4829e1, 3.5000e1, 3.4748e1,
586 3.4935e1, 3.5121e1, 3.4900e1, 3.5212e1, 3.4788e1, 3.4708e1,
587 3.4380e1, 3.4644e1, 3.4721e1, 3.5094e1, 3.4873e1, 3.5044e1,
588 3.5121e1, 3.5026e1, 3.5023e1, 3.5442e1, 3.4909e1, 3.4939e1,
589 3.5170e1, 3.5058e1, 3.5307e1, 3.5429e1, 3.5271e1, 3.5131e1,
590 3.5207e1, 3.5266e1, 3.5468e1, 3.5295e1, 3.5170e1, 3.5465e1,
591 3.5152e1, 3.5308e1, 3.5462e1, 3.5303e1, 3.5270e1, 3.5410e1,
592 3.5299e1, 3.5501e1, 3.5344e1, 3.5467e1, 3.5466e1, 3.5544e1,
593 3.5371e1, 3.5432e1, 3.5413e1, 3.5208e1, 3.5472e1, 3.5469e1,
594 3.5592e1, 3.5494e1, 3.5616e1, 3.5709e1, 3.5692e1, 3.5534e1,
595 3.5625e1, 3.5606e1, 3.5695e1, 3.5756e1, 3.5907e1, 3.5763e1,
596 3.5949e1, 3.6191e1, 3.6527e1, 3.6718e1, 3.6835e1, 3.6766e1,
597 3.6808e1, 3.6551e1, 3.6448e1, 3.5802e1, 3.5369e1, 3.4774e1,
598 3.4137e1, 3.3475e1, 3.2583e1, 3.1921e1, 3.1590e1, 3.0961e1,
599 3.0553e1, 3.0280e1, 3.0091e1, 2.9903e1, 2.9996e1, 2.9918e1,
600 3.0145e1, 3.0421e1, 3.0251e1, 2.9826e1, 2.9385e1, 2.9171e1,
601 2.8874e1, 2.8653e1, 2.8711e1, 2.8575e1, 2.8651e1, 2.8377e1,
602 2.8123e1, 2.7910e1, 2.8035e1, 2.7974e1, 2.7803e1, 2.7311e1,
603 2.7158e1, 2.7478e1, 2.7468e1, 2.7069e1, 2.6542e1, 2.6389e1,
604 2.6601e1, 2.6278e1, 2.6098e1, 2.6165e1, 2.5834e1, 2.5504e1,
605 2.5986e1, 2.5393e1, 2.4404e1, 2.4324e1, 2.4053e1, 2.4018e1,
606 2.3543e1, 2.3169e1, 2.2050e1, 2.1980e1, 2.1330e1, 2.0138e1,
607 1.9736e1, 1.8710e1, 1.7774e1, 1.7188e1, 1.6509e1, 1.6092e1,
608 1.5639e1, 1.5287e1, 1.5027e1, 1.4982e1, 1.4584e1, 1.4550e1,
609 1.4208e1, 1.3968e1, 1.3637e1, 1.3304e1, 1.3304e1, 1.2592e1,
610 1.2326e1, 1.1842e1, 1.1426e1, 1.1079e1, 1.0592e1, 1.0070e1,
611 9.8707, 9.4744, 9.1585, 8.9229, 8.6291, 8.3000,
612 8.1328, 7.8260, 7.6232, 7.3619, 7.3330, 6.9313,
613 6.8787, 6.6611, 6.3447, 6.0507, 5.8142, 5.5418,
614 5.3038, 5.0295, 4.8488, 4.6202, 4.4264, 4.2438,
615 4.0606, 3.8530, 3.7162, 3.6875};
616
617 // Photoionization yield
618 /*
619 const int nYieldEntries = 11;
620 const double xIon[nYieldEntries] = {
621 12.65, 12.87, 13.02, 13.24, 13.88,
622 14.66, 15.01, 15.44, 15.67, 15.87,
623 16.22};
624
625 const double yIon[nYieldEntries] = {
626 0., 0.01226, 0.02900, 0.08853, 0.3693,
627 0.7024, 0.8190, 0.9262, 0.9715, 0.9883,
628 1.};
629 //*/
630
631 const int nYieldEntries = 405;
632 const double xIon[nYieldEntries] = {
633 13.6926361811117, 13.715317754199855, 13.744304479209204,
634 13.763071315347828, 13.769719353658544, 13.7850365564675,
635 13.798269318989469, 13.804269586746194, 13.808694970264064,
636 13.816955562862878, 13.8212884738047, 13.831848790626944,
637 13.835934738154664, 13.844799801836533, 13.855052054429185,
638 13.8595526681464, 13.867831582521367, 13.876406771550556,
639 13.888980843356499, 13.899961542200646, 13.9101375916142,
640 13.920963901562597, 13.940345759722771, 13.95133595914033,
641 13.959841076442459, 13.9706718790712, 13.985592295043665,
642 14.003003612403177, 14.020194360285029, 14.033324173840148,
643 14.0440634913440, 14.052814278658353, 14.063568782625623,
644 14.081174116971813, 14.096347169051427, 14.1030392906901,
645 14.1116853027492, 14.127162124690432, 14.146809499131525,
646 14.164549875168559, 14.1776814839775, 14.204425032592868,
647 14.22203833858442, 14.242223403408707, 14.262207444361881,
648 14.3114976043571, 14.336354545664648, 14.370324777846296,
649 14.402088253874295, 14.424916068977673, 14.4455879628798,
650 14.459261593089842, 14.482223621392002, 14.486952919954708,
651 14.500706026036182, 14.5261306957798, 14.540225865717755,
652 14.55167593261424, 14.579675899274896, 14.598328114122056,
653 14.6217975979017, 14.649988008640532, 14.668949973983407,
654 14.68543186918539, 14.704581675247962, 14.7115409666837,
655 14.72583717007484, 14.732865794260709, 14.742723142987813,
656 14.756851709531364, 14.7654306908545, 14.784392635740517,
657 14.803402461824746, 14.825188204182082, 14.852510498743328,
658 14.8799338658639, 14.907458508938598, 14.926787234711002,
659 14.951710912274615, 14.97671886513848, 14.9962266406587,
660 15.021382942869986, 15.052245178882915, 15.080411593273755,
661 15.086058448195018, 15.1058522900559, 15.13137804560613,
662 15.139905996793697, 15.15129217973719, 15.165548180153339,
663 15.1798308472062, 15.21134846614213, 15.237232118158476,
664 15.257426038074007, 15.292167356428761, 15.3212398888427,
665 15.350422983597124, 15.379717463370714, 15.397348455279328,
666 15.420918846520996, 15.4653081279398, 15.492065192480576,
667 15.506969993254085, 15.566876709368936, 15.597003977621084,
668 15.6302796380464, 15.648489930834549, 15.694200952661875,
669 15.712560781595407, 15.734033950003656, 15.7555658902412,
670 15.777158249290967, 15.832951722369646, 15.864118716875518,
671 15.882878287973838, 15.9016812588367, 15.933119695983626,
672 15.964683923587197, 15.986852428274682, 16.012263694198257,
673 16.0441413442444, 16.060127917879381, 16.085772848771978,
674 16.108279153159383, 16.124393652112783, 16.1437744174517,
675 16.169687394214922, 16.192429294057543, 16.205454317863843,
676 16.254482043806203, 16.2708907514474, 16.287332621358544,
677 16.303807539780127, 16.315258834593077, 16.336731639023082,
678 16.3515521858660, 16.358101759845479, 16.366462948094021,
679 16.377990558446815, 16.401341034343169, 16.4263878538541,
680 16.441480606508204, 16.446461694187914, 16.454920028913499,
681 16.488579820014948, 16.5018712548574, 16.510207069598721,
682 16.525350792108942, 16.538910304310718, 16.549124978357099,
683 16.5593710768857, 16.574552430482015, 16.583195854842472,
684 16.589697937605283, 16.59989678448029, 16.6170759075614,
685 16.623891673652899, 16.63250208278615, 16.642555936157301,
686 16.649499048833651, 16.6545414460324, 16.666536166194199,
687 16.677007621494056, 16.685720088052197, 16.694294651031189,
688 16.7028643051852, 16.71151709423151, 16.72214440164722,
689 16.726912709204488, 16.735623420268325, 16.7406326848921,
690 16.756388867163764, 16.763165979189449, 16.768523988157806,
691 16.775397853052805, 16.7840525866527, 16.79626923621699,
692 16.806843340599176, 16.822564226874647, 16.833111369418571,
693 16.8417710943501, 16.856150452556832, 16.863090856364984,
694 16.870379005209315, 16.878793800563464, 16.8822826164003,
695 16.900106097952754, 16.901668333264944, 16.908630828884668,
696 16.914035866835025, 16.9227113987917, 16.929835266035678,
697 16.937079430584298, 16.942326026551164, 16.947738268400819,
698 16.9600981718265, 16.972585316979409, 16.976215059284918,
699 16.983308911603206, 16.99248626983157, 16.9975610223128,
700 17.006390819013841, 17.013489840173118, 17.022377564427835,
701 17.037045572946376, 17.0439771482640, 17.05862796908082,
702 17.072896330056992, 17.07996040663712, 17.087161263055631,
703 17.0960987995421, 17.108774339166423, 17.109921325176312,
704 17.116887762599134, 17.122003762767974, 17.1306947067649,
705 17.139291886939795, 17.149805689502621, 17.149840560978209,
706 17.170771924499299, 17.1863410555122, 17.190001558809126,
707 17.195222653072335, 17.209252575134954, 17.221481499655745,
708 17.2250710772106, 17.244393331080449, 17.253101919045502,
709 17.269030517088712, 17.286683255823412, 17.2938325195936,
710 17.31153602691003, 17.325638323826517, 17.331082417868089,
711 17.343525193183435, 17.3507084485495, 17.359529393428549,
712 17.363169218091368, 17.381044524564135, 17.395325993369461,
713 17.4078837058457, 17.42219709193596, 17.434850524623741,
714 17.445634443710716, 17.460005576934108, 17.4673201150134,
715 17.476381749154598, 17.4817782834958, 17.487250172437648,
716 17.49623300058105, 17.5071713755285, 17.51805239832078,
717 17.527076074953754, 17.534380470084969, 17.544972583620215,
718 17.5507586350134, 17.558088754575344, 17.569068284746468,
719 17.578182490082916, 17.591010438322844, 17.5982765578418,
720 17.602037191094372, 17.614872213380817, 17.618577101404959,
721 17.631388876773816, 17.6406645052905, 17.642460300152862,
722 17.657229846818353, 17.668290450846513, 17.668319657477721,
723 17.6831156531875, 17.692305681783655, 17.703171157414861,
724 17.704869975135313, 17.707140124676567, 17.7164941299739,
725 17.731347879301854, 17.746278882303425, 17.757502739233423,
726 17.764901226305451, 17.7799168619820, 17.794849101393172,
727 17.796551510833392, 17.802053810070653, 17.804256909769734,
728 17.8155573196525, 17.83247317248081, 17.849378779102384,
729 17.858731420683647, 17.864251650597762, 17.8701781210926,
730 17.879679950698399, 17.896668766429517, 17.904213688458377,
731 17.909719647821234, 17.9118972061763, 17.92141367425744,
732 17.930889432760015, 17.934655561735916, 17.940221537906154,
733 17.9442325932283, 17.957490809737994, 17.965048847188484,
734 17.996431596525216, 18.009856559203229, 18.0234870647004,
735 18.030175678630584, 18.043750312681148, 18.060636813330966,
736 18.073792596638107, 18.0875216722023, 18.107797009254504,
737 18.10794696102213, 18.138676710166688, 18.169523716198462,
738 18.2038765497646, 18.207221333083496, 18.234787137527469,
739 18.248740764761383, 18.283413767908357, 18.2937572951645,
740 18.304304126360453, 18.339117453498947, 18.360264789676901,
741 18.377735854631954, 18.3882447714001, 18.402395823445683,
742 18.42685476474664, 18.448107600411063, 18.451849751240893,
743 18.4659611173178, 18.494284563491945, 18.501484056913529,
744 18.529896170031929, 18.551419973762375, 18.5728102112595,
745 18.597997113167047, 18.616068554852362, 18.637627272675577,
746 18.670323273006566, 18.6847385286699, 18.706590746348422,
747 18.743032545641412, 18.753937415004341, 18.761328316806427,
748 18.7796251381450, 18.797922911201226, 18.820101965749092,
749 18.838471869249318, 18.845787766087263, 18.8642899589054,
750 18.882795444814064, 18.908918372131144, 18.927435570696847,
751 18.949921476340204, 18.9722199075076, 18.987305937776732,
752 19.002296862380263, 19.009705021449719, 19.032379930397511,
753 19.0435671513016, 19.055067704685875, 19.077641427979369,
754 19.104146784358008, 19.123098952545011, 19.1269990033299,
755 19.145967883241649, 19.168905801975601, 19.207172650806701,
756 19.218750171154536, 19.2340194170205, 19.257075909461317,
757 19.261018237761306, 19.292003573712663, 19.295740094261259,
758 19.3152011802390, 19.334523066428019, 19.354005400928973,
759 19.365775184256258, 19.385191162600915, 19.4048128455129,
760 19.420405455491156, 19.43614014335493, 19.471627716250396,
761 19.479378562200313, 19.5071063895351, 19.546701405484413,
762 19.598562895316689, 19.626403888478372, 19.646524645276187,
763 19.7029013943660, 19.706871463391909, 19.747341872030784,
764 19.763520917003543, 19.783991501058271, 19.8001706011875,
765 19.861503694771521, 19.898480975465262, 19.919154152807984,
766 19.939735002832577, 19.9853971171303, 20.018636744916986,
767 20.043637577493911, 20.068786367947979, 20.089685885252269};
768
769 const double yIon[nYieldEntries] = {
770 0.02808, 0.03070, 0.03609, 0.05291, 0.13500, 0.28217, 0.42368, 0.36980,
771 0.41792, 0.39518, 0.42347, 0.43754, 0.41483, 0.50541, 0.45149, 0.5081,
772 0.47687, 0.50228, 0.47951, 0.55589, 0.47082, 0.51038, 0.55269, 0.61491,
773 0.60634, 0.63174, 0.61461, 0.65694, 0.64829, 0.68217, 0.66791, 0.68483,
774 0.66773, 0.71007, 0.69577, 0.72404, 0.70697, 0.73799, 0.72082, 0.74899,
775 0.73188, 0.77414, 0.75132, 0.78514, 0.77081, 0.77322, 0.79000, 0.80104,
776 0.79511, 0.80058, 0.81740, 0.80312, 0.80010, 0.82272, 0.80844, 0.80823,
777 0.84210, 0.81368, 0.82478, 0.81896, 0.82727, 0.82420, 0.84104, 0.82958,
778 0.86342, 0.83503, 0.84058, 0.82070, 0.87727, 0.84316, 0.86416, 0.86705,
779 0.86994, 0.86127, 0.88439, 0.86705, 0.87283, 0.86416, 0.86705, 0.81214,
780 0.84971, 0.85838, 0.83237, 0.76879, 0.80058, 0.74855, 0.79480, 0.77168,
781 0.79191, 0.76012, 0.77746, 0.70520, 0.70231, 0.72543, 0.70520, 0.72832,
782 0.66763, 0.71387, 0.72832, 0.68497, 0.67341, 0.73410, 0.75434, 0.66474,
783 0.73699, 0.74855, 0.76879, 0.70231, 0.74855, 0.80347, 0.79191, 0.80925,
784 0.71387, 0.77457, 0.81214, 0.78902, 0.81214, 0.76590, 0.79769, 0.77746,
785 0.86127, 0.84104, 0.87572, 0.88728, 0.86416, 0.86705, 0.97977, 0.93353,
786 0.94220, 0.93642, 0.88439, 0.90462, 0.95087, 0.94947, 0.92132, 0.94030,
787 0.97179, 0.92783, 0.96251, 0.90921, 0.87480, 0.84032, 0.85608, 0.80897,
788 0.74946, 0.82818, 0.86912, 0.88495, 0.86303, 0.83166, 0.79085, 0.83184,
789 0.75957, 0.90427, 0.91064, 0.84786, 0.85420, 0.82282, 0.92352, 0.87954,
790 0.92675, 0.93312, 0.85457, 0.80118, 0.81696, 0.83903, 0.82651, 0.70080,
791 0.89895, 0.87071, 0.95879, 0.88658, 0.96524, 0.89609, 0.93388, 0.95595,
792 0.9466, 0.89636, 0.89961, 0.87767, 0.92490, 0.76462, 0.80555, 0.68610,
793 0.86541, 0.88115, 0.79322, 0.88758, 0.93479, 0.88766, 0.96634, 0.94752,
794 0.87524, 0.90987, 0.86902, 0.90370, 0.88806, 0.85664, 0.87241, 0.75297,
795 0.88194, 0.92917, 0.95437, 0.98273, 0.83189, 0.94514, 0.81945, 0.87930,
796 0.94538, 0.95172, 0.99266, 0.98331, 0.97803, 1.00955, 0.92121, 0.93064,
797 0.83913, 0.91165, 0.94635, 0.9589, 0.80743, 0.96830, 0.93989, 0.95562,
798 0.9051, 0.98080, 0.96181, 0.86714, 0.92072, 0.90173, 0.97111, 0.95213,
799 0.85429, 0.96153, 0.94887, 1.00563, 0.91411, 0.98350, 0.99291, 0.95816,
800 0.96759, 0.92022, 0.98327, 0.96431, 0.91379, 1.0021, 1.02730, 0.99889,
801 1.03989, 0.97046, 1.02720, 1.01455, 0.95459, 0.9798, 0.66431, 0.96397,
802 0.99550, 1.01754, 0.99228, 1.00486, 0.94490, 1.03321, 1.02055, 1.04893,
803 0.99211, 1.05833, 1.01416, 1.02988, 1.01092, 1.03931, 1.03927, 0.97299,
804 0.73321, 0.58809, 0.97295, 1.03601, 1.01388, 1.04223, 1.07058, 1.00431,
805 1.05789, 1.01053, 0.85279, 0.73921, 1.03889, 1.0704, 1.06089, 1.01352,
806 0.93778, 0.80527, 1.03869, 1.07967, 1.02599, 0.98811, 0.81775, 1.07011,
807 1.0827, 1.05112, 1.01326, 0.88075, 1.06054, 0.97533, 0.90275, 0.89778,
808 0.90746, 0.88489, 0.89672, 0.88920, 0.89889, 0.97094, 0.94837, 0.97526,
809 0.94945, 0.95055, 0.94949, 0.95596, 0.97317, 0.98179, 0.96244, 0.96568,
810 0.98074, 0.96355, 0.97862, 0.95498, 0.96681, 0.97220, 0.95930, 0.99587,
811 0.98836, 0.95503, 0.96471, 0.97871, 0.96473, 0.98195, 0.96906, 0.98628,
812 0.97876, 0.96695, 0.98094, 0.95945, 0.97451, 0.967, 0.96917, 0.97885,
813 0.96703, 0.97026, 0.97887, 0.96168, 0.97137, 0.98212, 0.97891, 0.98107,
814 0.95958, 0.97357, 0.95637, 0.97682, 0.96069, 0.96285, 0.97899, 0.96287,
815 0.98115, 0.95320, 0.96934, 0.97258, 0.97905, 0.96399, 0.97476, 0.96832,
816 0.97049, 0.96082, 0.97695, 0.98449, 0.97159, 0.95978, 0.98021, 0.96732,
817 0.98130, 0.97701, 0.96519, 0.98026, 0.97059, 0.98242, 0.97706, 0.96632,
818 0.98675, 0.97602, 0.98356, 0.97176, 0.99435, 0.98361, 0.97934, 0.98902,
819 0.98796, 0.99550, 0.97508, 0.99121, 0.99124, 0.99234, 0.98267, 0.99236,
820 0.98055, 0.98594, 0.99026, 0.98274, 0.99135};
821
822 // Locate the requested energy in the tables.
823 // First the photoabsorption cross-section.
824 int iLow = 0;
825 int iUp = nPacsEntries - 1;
826 int iM;
827 while (iUp - iLow > 1) {
828 iM = (iUp + iLow) >> 1;
829 if (e >= xCO2[iM]) {
830 iLow = iM;
831 } else {
832 iUp = iM;
833 }
834 }
835
836 // Linear interpolation.
837 cs = yCO2[iLow] +
838 (e - xCO2[iLow]) * (yCO2[iUp] - yCO2[iLow]) / (xCO2[iUp] - xCO2[iLow]);
839 // Convert from Mbarn to cm2.
840 cs *= 1.e-18;
841
842 if (e < xIon[0]) {
843 eta = 0.;
844 } else if (e >= xIon[nYieldEntries - 1]) {
845 eta = 1.;
846 } else {
847 // Linear interpolation.
848 // Same procedure as for photoabsorption cross-section.
849 iLow = 0;
850 iUp = nYieldEntries - 1;
851 while (iUp - iLow > 1) {
852 iM = (iUp + iLow) >> 1;
853 if (e >= xIon[iM]) {
854 iLow = iM;
855 } else {
856 iUp = iM;
857 }
858 }
859 eta = yIon[iLow] + (e - xIon[iLow]) * (yIon[iUp] - yIon[iLow]) /
860 (xIon[iUp] - xIon[iLow]);
861 }
862
863 return true;
864 }
865
866 if (e >= 290.06 && e <= 341.3) {
867 // Carbon K edge
868
869 const int nEntries = 46;
870
871 const double xCO2[nEntries] = {
872 2.8967e2, 2.9006e2, 2.9036e2, 2.9071e2, 2.9105e2, 2.9132e2, 2.9175e2,
873 2.9194e2, 2.9213e2, 2.9217e2, 2.9247e2, 2.9286e2, 2.9336e2, 2.9366e2,
874 2.9397e2, 2.9466e2, 2.9547e2, 2.9601e2, 2.9631e2, 2.9697e2, 2.9793e2,
875 2.9904e2, 3.0031e2, 3.0153e2, 3.0284e2, 3.0384e2, 3.0453e2, 3.0560e2,
876 3.0698e2, 3.0852e2, 3.1002e2, 3.1128e2, 3.1224e2, 3.1328e2, 3.1424e2,
877 3.1539e2, 3.1650e2, 3.1785e2, 3.1996e2, 3.2245e2, 3.2545e2, 3.2875e2,
878 3.3193e2, 3.3593e2, 3.3904e2, 3.4134e2};
879
880 const double yCO2[nEntries] = {
881 1.4893, 2.8017, 4.1009, 1.0011e1, 1.1982e1, 1.0011e1,
882 4.1395, 2.7813, 1.4556, 1.1096, 9.7879e-1, 1.0178,
883 1.2919, 1.0045, 8.9979e-1, 8.3420e-1, 1.0755, 8.2710e-1,
884 8.2697e-1, 9.1158e-1, 8.7852e-1, 9.9558e-1, 1.0146, 1.1904,
885 1.2225, 1.4115, 1.4308, 1.3454, 1.3840, 1.5465,
886 1.7548, 1.9437, 2.0021, 1.9298, 1.9294, 1.8048,
887 1.6476, 1.5034, 1.3458, 1.2077, 1.0823, 9.7640e-1,
888 9.0974e-1, 8.6233e-1, 8.5447e-1, 8.4696e-1};
889
890 // Linear interpolation.
891 int iLow = 0;
892 int iUp = nEntries - 1;
893 int iM;
894 while (iUp - iLow > 1) {
895 iM = (iUp + iLow) >> 1;
896 if (e >= xCO2[iM]) {
897 iLow = iM;
898 } else {
899 iUp = iM;
900 }
901 }
902
903 cs = yCO2[iLow] +
904 (e - xCO2[iLow]) * (yCO2[iUp] - yCO2[iLow]) / (xCO2[iUp] - xCO2[iLow]);
905 // Convert from Mbarn to cm2.
906 cs *= 1.e-18;
907 eta = 1.;
908 return true;
909 }
910
911 if (e >= 524.9 && e <= 572.8) {
912 // Oxygen K edge
913
914 const int nEntries = 44;
915
916 const double xCO2[nEntries] = {
917 5.2490e2, 5.2490e2, 5.2954e2, 5.3096e2, 5.3214e2, 5.3282e2, 5.3319e2,
918 5.3373e2, 5.3448e2, 5.3503e2, 5.3526e2, 5.3561e2, 5.3604e2, 5.3642e2,
919 5.3691e2, 5.3717e2, 5.3743e2, 5.3774e2, 5.3812e2, 5.3851e2, 5.3904e2,
920 5.3996e2, 5.4084e2, 5.4226e2, 5.4403e2, 5.4568e2, 5.4725e2, 5.4855e2,
921 5.4920e2, 5.5054e2, 5.5245e2, 5.5360e2, 5.5567e2, 5.5693e2, 5.5781e2,
922 5.5835e2, 5.5938e2, 5.6007e2, 5.6080e2, 5.6292e2, 5.6495e2, 5.6760e2,
923 5.7009e2, 5.7280e2};
924
925 const double yCO2[nEntries] = {
926 3.0446e-1, 3.4889e-1, 3.7017e-1, 4.1350e-1, 5.2302e-1, 7.3175e-1,
927 2.5744, 4.7866, 2.9776, 1.2349, 1.0929, 1.0079,
928 9.5595e-1, 9.8459e-1, 1.2643, 1.4918, 1.5629, 1.5630,
929 1.5253, 1.5350, 1.6016, 1.6494, 1.6072, 1.4753,
930 1.3815, 1.3633, 1.4162, 1.3931, 1.4124, 1.5268,
931 1.7456, 1.7982, 1.7992, 1.8709, 1.9045, 1.8858,
932 1.8059, 1.7493, 1.6787, 1.5471, 1.4581, 1.3978,
933 1.3659, 1.3389};
934
935 // Linear interpolation.
936 int iLow = 0;
937 int iUp = nEntries - 1;
938 int iM;
939 while (iUp - iLow > 1) {
940 iM = (iUp + iLow) >> 1;
941 if (e >= xCO2[iM]) {
942 iLow = iM;
943 } else {
944 iUp = iM;
945 }
946 }
947
948 cs = yCO2[iLow] +
949 (e - xCO2[iLow]) * (yCO2[iUp] - yCO2[iLow]) / (xCO2[iUp] - xCO2[iLow]);
950 // Convert from Mbarn to cm2.
951 cs *= 1.e-18;
952 eta = 1.;
953 return true;
954 }
955
956 double a, b, c, d;
957 if (e < 290) {
958 a = -20.1699;
959 b = 1244.259;
960 c = -11489.;
961 d = 36074.58;
962 } else if (e < 524.9) {
963 a = 37.50509;
964 b = -429.43;
965 c = 65138.77;
966 d = -902421.;
967 } else if (e < 2293.2) {
968 a = 0.731716;
969 b = 19329.84;
970 c = -472016.;
971 d = 4458877.;
972 } else {
973 a = -4.33101;
974 b = 19022.22;
975 c = 161688.6;
976 d = -71331572.;
977 }
978
979 const double y = ip / e;
980 const double f =
981 a * pow(y, 2) + b * pow(y, 3) + c * pow(y, 4) + d * pow(y, 5);
982 // Convert from oscillator strength (per Rydberg) to photoabsorption cs
983 cs = 8.067283e-18 * f;
984 eta = 1.;
985 return true;
986}
987
988bool OpticalData::PhotoAbsorptionCsMethane(const double e, double& cs,
989 double& eta) {
990
991 // Sources:
992 // Photoabsorption cross-section:
993 // J. Berkowitz, Atomic and Molecular Photoabsorption (2002)
994 // N. Sakamoto et al., NIFS-DATA 109
995 // Photoionization yield:
996 // K. Kameta et al., J. El. Spectr. Rel. Phen. 123 (2002), 225-238
997
998 if (e < 8.61) {
999 cs = eta = 0.;
1000 return true;
1001 }
1002
1003 if (e < 150.) {
1004
1005 // Photoabsorption cross-section
1006 const int nPacsEntries = 134;
1007
1008 const double xCH4[nPacsEntries] = {
1009 8.6100, 9.0000, 9.2130, 9.5000, 9.6900, 1.0050e01,
1010 1.0425e01, 1.0700e01, 1.0913e01, 1.1270e01, 1.1500e01, 1.1713e01,
1011 1.1900e01, 1.2125e01, 1.2375e01, 1.2610e01, 1.3000e01, 1.3325e01,
1012 1.3620e01, 1.4000e01, 1.4500e01, 1.5000e01, 1.5500e01, 1.6000e01,
1013 1.6500e01, 1.7000e01, 1.7500e01, 1.8000e01, 1.8500e01, 1.9000e01,
1014 1.9500e01, 2.0000e01, 2.0500e01, 2.1000e01, 2.1500e01, 2.2000e01,
1015 2.2500e01, 2.3000e01, 2.3500e01, 2.4000e01, 2.4500e01, 2.5000e01,
1016 2.5500e01, 2.6000e01, 2.6500e01, 2.7000e01, 2.7500e01, 2.8000e01,
1017 2.8500e01, 2.9000e01, 2.9500e01, 3.0000e01, 3.0500e01, 3.1000e01,
1018 3.1500e01, 3.2000e01, 3.2500e01, 3.3000e01, 3.3500e01, 3.4000e01,
1019 3.4500e01, 3.5000e01, 3.5500e01, 3.6000e01, 3.6500e01, 3.7000e01,
1020 3.7500e01, 3.8000e01, 3.8500e01, 3.9000e01, 3.9500e01, 4.0000e01,
1021 4.1000e01, 4.2000e01, 4.3000e01, 4.4000e01, 4.5000e01, 4.6000e01,
1022 4.7000e01, 4.8000e01, 4.9000e01, 5.0000e01, 5.1000e01, 5.2000e01,
1023 5.3000e01, 5.4000e01, 5.5000e01, 5.6000e01, 5.7000e01, 5.8000e01,
1024 5.9000e01, 6.0000e01, 6.1000e01, 6.2000e01, 6.3000e01, 6.4000e01,
1025 6.5000e01, 6.6000e01, 6.7000e01, 6.8000e01, 6.9000e01, 7.0000e01,
1026 7.1000e01, 7.2000e01, 7.3000e01, 7.4000e01, 7.5000e01, 7.6000e01,
1027 7.7000e01, 7.8000e01, 7.9000e01, 8.0000e01, 8.2000e01, 8.4000e01,
1028 8.6000e01, 8.8000e01, 9.0000e01, 9.2000e01, 9.4000e01, 9.6000e01,
1029 9.8000e01, 1.0000e02, 1.0200e02, 1.0400e02, 1.0600e02, 1.0800e02,
1030 1.1000e02, 1.1200e02, 1.1270e02, 1.1900e02, 1.2500e02, 1.3291e02,
1031 1.4286e02, 1.5000e02};
1032
1033 const double yCH4[nPacsEntries] = {
1034 0., 3.9896, 9.2248, 1.6727e01, 1.8644e01, 1.7399e01,
1035 1.9316e01, 1.8119e01, 1.6679e01, 2.0792e01, 2.8706e01, 3.0086e01,
1036 2.9689e01, 3.1516e01, 3.3929e01, 3.9598e01, 4.5208e01, 4.8369e01,
1037 4.9053e01, 4.9090e01, 4.8742e01, 4.8255e01, 4.7111e01, 4.5877e01,
1038 4.4643e01, 4.3260e01, 4.1429e01, 3.9947e01, 3.8415e01, 3.6982e01,
1039 3.5649e01, 3.4355e01, 3.2674e01, 3.1480e01, 3.0296e01, 2.9152e01,
1040 2.7719e01, 2.6535e01, 2.5441e01, 2.4306e01, 2.3001e01, 2.1999e01,
1041 2.1576e01, 2.0181e01, 1.9134e01, 1.8481e01, 1.7642e01, 1.6825e01,
1042 1.5854e01, 1.5364e01, 1.4885e01, 1.4252e01, 1.3609e01, 1.3217e01,
1043 1.2200e01, 1.1381e01, 1.0879e01, 1.0716e01, 1.0269e01, 1.0040e01,
1044 9.5267, 9.0567, 8.8718, 8.4345, 8.1288, 7.9107,
1045 7.6596, 7.4084, 6.9486, 6.9827, 6.6434, 6.4139,
1046 6.0315, 5.6927, 5.2109, 4.9047, 4.6753, 4.3687,
1047 4.1610, 3.9201, 3.8223, 3.5040, 3.3288, 3.1755,
1048 3.0000, 2.8907, 2.6709, 2.4951, 2.4076, 2.3200,
1049 2.1771, 2.0452, 2.0237, 1.9248, 1.8701, 1.7600,
1050 1.6499, 1.6283, 1.5623, 1.4520, 1.4303, 1.3975,
1051 1.3868, 1.2652, 1.2101, 1.1772, 1.1220, 1.0890,
1052 1.0449, 1.0230, 9.8999e-1, 9.4580e-1, 9.0188e-1, 8.2448e-1,
1053 7.8041e-1, 7.3630e-1, 6.9212e-1, 6.4789e-1, 6.2595e-1, 5.8161e-1,
1054 5.5961e-1, 5.2637e-1, 5.1550e-1, 4.8219e-1, 4.7128e-1, 4.4913e-1,
1055 4.2695e-1, 4.0474e-1, 3.8734e-1, 3.4841e-1, 3.0851e-1, 2.7834e-1,
1056 2.3357e-1, 2.0263e-1};
1057
1058 // Photoionization yield
1059 const int nYieldEntries = 51;
1060
1061 const double xIon[nYieldEntries] = {
1062 12.05, 12.5833, 12.7333, 12.8167, 12.9167, 13.0167, 13.0833, 13.1833,
1063 13.2833, 13.3833, 13.4667, 13.6, 13.6833, 13.75, 13.8167, 13.9333,
1064 14.0167, 14.1, 14.2167, 14.2667, 14.3667, 14.5, 14.65, 14.7833,
1065 14.8667, 14.9833, 15.1667, 15.3167, 15.4333, 15.6833, 16.05, 16.0833,
1066 16.2167, 16.4167, 16.7333, 16.95, 18.35, 19.7833, 20.1833, 20.35,
1067 20.4667, 20.6, 21.1833, 21.4, 21.5167, 21.65, 22.1167, 22.8667,
1068 23.35, 23.75, 24.1333};
1069
1070 const double yIon[nYieldEntries] = {
1071 0., 0., 0.0017271, 0.0069085, 0.01209, 0.022453, 0.039724,
1072 0.063903, 0.10708, 0.15717, 0.18653, 0.23661, 0.27288, 0.30225,
1073 0.33333, 0.37478, 0.39896, 0.43005, 0.4715, 0.49223, 0.55095,
1074 0.59931, 0.66839, 0.72539, 0.75648, 0.7962, 0.84629, 0.88428,
1075 0.90846, 0.95164, 0.99309, 1., 1., 1., 1.,
1076 1., 1., 0.99482, 0.97927, 0.98446, 0.97755, 0.98446,
1077 0.97927, 0.98964, 0.97927, 0.98618, 0.97927, 0.981, 0.98791,
1078 1., 1.};
1079
1080 // Locate the requested energy in the tables.
1081 // First the photoabsorption cross-section.
1082 int iLow = 0;
1083 int iUp = nPacsEntries - 1;
1084 int iM;
1085 while (iUp - iLow > 1) {
1086 iM = (iUp + iLow) >> 1;
1087 if (e >= xCH4[iM]) {
1088 iLow = iM;
1089 } else {
1090 iUp = iM;
1091 }
1092 }
1093
1094 // Linear interpolation.
1095 cs = yCH4[iLow] +
1096 (e - xCH4[iLow]) * (yCH4[iUp] - yCH4[iLow]) / (xCH4[iUp] - xCH4[iLow]);
1097 // Convert from Mbarn to cm2.
1098 cs *= 1.e-18;
1099
1100 if (e < xIon[0]) {
1101 eta = 0.;
1102 } else if (e >= xIon[nYieldEntries - 1]) {
1103 eta = 1.;
1104 } else {
1105 // Linear interpolation.
1106 // Same procedure as for photoabsorption cross-section.
1107 iLow = 0;
1108 iUp = nYieldEntries - 1;
1109 while (iUp - iLow > 1) {
1110 iM = (iUp + iLow) >> 1;
1111 if (e >= xIon[iM]) {
1112 iLow = iM;
1113 } else {
1114 iUp = iM;
1115 }
1116 }
1117 eta = yIon[iLow] + (e - xIon[iLow]) * (yIon[iUp] - yIon[iLow]) /
1118 (xIon[iUp] - xIon[iLow]);
1119 }
1120
1121 return true;
1122 }
1123
1124 if (e >= 285. && e <= 340.) {
1125 // Carbon K edge
1126
1127 const int nEntries = 106;
1128
1129 const double xCH4[nEntries] = {
1130 2.8500e02, 2.8591e02, 2.8640e02, 2.8671e02, 2.8695e02, 2.8701e02,
1131 2.8704e02, 2.8708e02, 2.8712e02, 2.8716e02, 2.8725e02, 2.8734e02,
1132 2.8739e02, 2.8759e02, 2.8768e02, 2.8776e02, 2.8781e02, 2.8786e02,
1133 2.8790e02, 2.8793e02, 2.8795e02, 2.8798e02, 2.8801e02, 2.8803e02,
1134 2.8805e02, 2.8808e02, 2.8810e02, 2.8812e02, 2.8815e02, 2.8817e02,
1135 2.8823e02, 2.8827e02, 2.8832e02, 2.8836e02, 2.8839e02, 2.8843e02,
1136 2.8849e02, 2.8853e02, 2.8855e02, 2.8860e02, 2.8865e02, 2.8868e02,
1137 2.8876e02, 2.8881e02, 2.8883e02, 2.8888e02, 2.8894e02, 2.8901e02,
1138 2.8908e02, 2.8912e02, 2.8920e02, 2.8926e02, 2.8933e02, 2.8936e02,
1139 2.8941e02, 2.8944e02, 2.8949e02, 2.8952e02, 2.8956e02, 2.8958e02,
1140 2.8964e02, 2.8968e02, 2.8971e02, 2.8975e02, 2.8979e02, 2.8984e02,
1141 2.8989e02, 2.8993e02, 2.8996e02, 2.9003e02, 2.9011e02, 2.9015e02,
1142 2.9018e02, 2.9022e02, 2.9026e02, 2.9029e02, 2.9034e02, 2.9037e02,
1143 2.9048e02, 2.9054e02, 2.9063e02, 2.9071e02, 2.9076e02, 2.9085e02,
1144 2.9103e02, 2.9126e02, 2.9150e02, 2.9223e02, 2.9366e02, 2.9590e02,
1145 2.9776e02, 3.0025e02, 3.0224e02, 3.0342e02, 3.0479e02, 3.0628e02,
1146 3.0821e02, 3.0908e02, 3.1120e02, 3.1275e02, 3.1580e02, 3.1934e02,
1147 3.2451e02, 3.2961e02, 3.3495e02, 3.4000e02};
1148
1149 const double yCH4[nEntries] = {
1150 4.1692e-02, 8.4191e-02, 1.5756e-01, 3.8643e-01, 5.0083e-01, 1.0526,
1151 1.2561, 1.0539, 7.0664e-01, 4.1755e-01, 3.3202e-01, 3.6272e-01,
1152 4.7949e-01, 4.5392e-01, 5.7151e-01, 7.7579e-01, 1.1537, 1.8502,
1153 3.1844, 6.1130, 1.0201e01, 1.4028e01, 1.2318e01, 9.9124,
1154 7.4197, 5.5937, 4.4055, 4.1161, 4.4645, 4.5808,
1155 4.2918, 4.3506, 4.2065, 4.4100, 4.6715, 3.9185,
1156 2.6439, 2.1228, 2.0652, 2.3849, 3.3134, 3.6909,
1157 2.8225, 2.3885, 2.2150, 1.7230, 1.2312, 1.0585,
1158 1.2047, 1.3214, 1.1487, 1.0338, 1.1799, 1.5574,
1159 2.9208, 3.4142, 2.5164, 1.7921, 1.5609, 1.7352,
1160 2.2580, 1.9689, 1.5056, 1.3613, 1.5649, 2.0586,
1161 2.0595, 2.4080, 2.5825, 1.9750, 1.3964, 1.2813,
1162 1.3977, 1.8333, 1.8629, 1.8054, 2.0963, 2.1838,
1163 1.6639, 1.5200, 1.7824, 1.7258, 1.8138, 1.6993,
1164 1.7025, 1.6774, 1.6526, 1.5320, 1.4318, 1.3409,
1165 1.2958, 1.2874, 1.2789, 1.2609, 1.1881, 1.1245,
1166 1.1068, 1.0796, 1.0711, 1.0258, 9.9013e-01, 9.4546e-01,
1167 8.6468e-01, 8.0217e-01, 7.3974e-01, 6.9461e-01};
1168
1169 // Linear interpolation.
1170 int iLow = 0;
1171 int iUp = nEntries - 1;
1172 int iM;
1173 while (iUp - iLow > 1) {
1174 iM = (iUp + iLow) >> 1;
1175 if (e >= xCH4[iM]) {
1176 iLow = iM;
1177 } else {
1178 iUp = iM;
1179 }
1180 }
1181
1182 cs = yCH4[iLow] +
1183 (e - xCH4[iLow]) * (yCH4[iUp] - yCH4[iLow]) / (xCH4[iUp] - xCH4[iLow]);
1184 // Convert from Mbarn to cm2.
1185 cs *= 1.e-18;
1186 eta = 1.;
1187 return true;
1188 }
1189
1190 double a, b, c, d;
1191 if (e < 285.) {
1192 a = -4.03133;
1193 b = 261.0982;
1194 c = -3005.43;
1195 d = 11572.96;
1196 } else if (e < 1740.) {
1197 a = -13.0225;
1198 b = 4303.263;
1199 c = -77622.4;
1200 d = 446724.9;
1201 } else {
1202 a = -1.11677;
1203 b = 3478.699;
1204 c = -48076.5;
1205 d = -364234.;
1206 }
1207
1208 const double y = 12.61 / e;
1209 const double f =
1210 a * pow(y, 2) + b * pow(y, 3) + c * pow(y, 4) + d * pow(y, 5);
1211 // Convert from oscillator strength (per Rydberg) to photoabsorption cs
1212 cs = 8.067283e-18 * f;
1213 eta = 1.;
1214 return true;
1215}
1216
1217bool OpticalData::PhotoAbsorptionCsEthane(const double e, double& cs,
1218 double& eta) {
1219
1220 // Sources:
1221 // Photoabsorption cross-section:
1222 // J. Berkowitz, Atomic and Molecular Photoabsorption (2002)
1223 // N. Sakamoto et al., NIFS-DATA 109
1224 // Photoionization yield:
1225 // K. Kameta et al., J. El. Spectr. Rel. Phen. 123 (2002), 225-238
1226
1227 if (e < 8.13) {
1228 cs = eta = 0.;
1229 return true;
1230 }
1231
1232 if (e < 150.) {
1233
1234 // Photoabsorption cross-section
1235 const int nPacsEntries = 147;
1236
1237 const double xC2H6[nPacsEntries] = {
1238 8.1300, 8.2800, 8.5200, 8.6400, 8.7500, 8.8500,
1239 8.9100, 9.0000, 9.0500, 9.1300, 9.2000, 9.2700,
1240 9.3400, 9.4200, 9.4900, 9.5600, 9.6500, 9.7200,
1241 9.8000, 9.8800, 9.9400, 9.9900, 1.0310e01, 1.0580e01,
1242 1.0670e01, 1.0740e01, 1.0810e01, 1.0880e01, 1.0950e01, 1.1030e01,
1243 1.1100e01, 1.1180e01, 1.1240e01, 1.1330e01, 1.1410e01, 1.1520e01,
1244 1.1949e01, 1.2208e01, 1.2621e01, 1.2819e01, 1.3056e01, 1.3258e01,
1245 1.3655e01, 1.3900e01, 1.4179e01, 1.4511e01, 1.5083e01, 1.5792e01,
1246 1.6441e01, 1.7052e01, 1.8016e01, 1.8619e01, 1.9550e01, 2.0664e01,
1247 2.1500e01, 2.2000e01, 2.2500e01, 2.3000e01, 2.3500e01, 2.4000e01,
1248 2.4500e01, 2.5000e01, 2.5500e01, 2.6000e01, 2.6500e01, 2.7000e01,
1249 2.7500e01, 2.8000e01, 2.8500e01, 2.9000e01, 2.9500e01, 3.0000e01,
1250 3.1000e01, 3.2000e01, 3.3000e01, 3.4000e01, 3.5000e01, 3.6000e01,
1251 3.7000e01, 3.8000e01, 3.9000e01, 4.0000e01, 4.1000e01, 4.2000e01,
1252 4.3000e01, 4.4000e01, 4.5000e01, 4.6000e01, 4.7000e01, 4.8000e01,
1253 4.9000e01, 5.0000e01, 5.1000e01, 5.2000e01, 5.3000e01, 5.4000e01,
1254 5.5000e01, 5.6000e01, 5.7000e01, 5.8000e01, 5.9000e01, 6.0000e01,
1255 6.2000e01, 6.4000e01, 6.6000e01, 6.8000e01, 7.0000e01, 7.2000e01,
1256 7.4000e01, 7.6000e01, 7.8000e01, 8.0000e01, 8.2000e01, 8.4000e01,
1257 8.6000e01, 8.8000e01, 9.0000e01, 9.2000e01, 9.4000e01, 9.6000e01,
1258 9.8000e01, 1.0000e02, 1.0200e02, 1.0400e02, 1.0600e02, 1.0800e02,
1259 1.1000e02, 1.1200e02, 1.1400e02, 1.1600e02, 1.1800e02, 1.2000e02,
1260 1.2200e02, 1.2400e02, 1.2600e02, 1.2800e02, 1.3000e02, 1.3200e02,
1261 1.3400e02, 1.3600e02, 1.3800e02, 1.4000e02, 1.4200e02, 1.4400e02,
1262 1.4600e02, 1.4800e02, 1.5000e02};
1263
1264 const double yC2H6[nPacsEntries] = {
1265 4.1354e-01, 1.3158, 2.8697, 3.5213, 5.0001, 9.9124,
1266 9.0853, 1.7030e01, 1.6379e01, 2.6128e01, 2.4161e01, 3.3334e01,
1267 2.9524e01, 3.5213e01, 3.0589e01, 3.4073e01, 2.8998e01, 3.1291e01,
1268 2.7519e01, 2.9324e01, 2.7607e01, 2.8334e01, 2.9299e01, 3.2582e01,
1269 3.5301e01, 3.4800e01, 3.7594e01, 3.5414e01, 3.8008e01, 3.5464e01,
1270 3.8584e01, 3.7507e01, 4.3008e01, 4.3747e01, 4.8434e01, 5.0890e01,
1271 5.3070e01, 5.6766e01, 5.5640e01, 5.7274e01, 6.7318e01, 7.3556e01,
1272 7.5569e01, 8.0471e01, 8.1976e01, 8.0471e01, 8.1597e01, 8.1099e01,
1273 7.9465e01, 7.5061e01, 7.1733e01, 7.0915e01, 6.5385e01, 5.9467e01,
1274 5.2518e01, 5.1042e01, 4.8168e01, 4.6086e01, 4.4358e01, 4.2783e01,
1275 4.0261e01, 3.8807e01, 3.6891e01, 3.6561e01, 3.3973e01, 3.1969e01,
1276 3.1451e01, 2.9403e01, 2.8742e01, 2.6969e01, 2.6066e01, 2.4370e01,
1277 2.2080e01, 2.1133e01, 1.9018e01, 1.7829e01, 1.6463e01, 1.5351e01,
1278 1.4415e01, 1.3677e01, 1.2576e01, 1.1926e01, 1.1012e01, 1.0219e01,
1279 9.6578, 9.1732, 8.6116, 8.4024, 7.8518, 7.4223,
1280 6.8717, 6.6184, 6.1779, 5.9356, 5.7154, 5.4511,
1281 4.9665, 4.8014, 4.5811, 4.4159, 4.0635, 3.8763,
1282 3.5570, 3.2927, 3.0504, 2.7861, 2.5879, 2.4227,
1283 2.2135, 2.0593, 1.9051, 1.7950, 1.6739, 1.5197,
1284 1.4646, 1.3875, 1.2995, 1.2114, 1.1673, 1.1233,
1285 1.0572, 1.0021, 9.8009e-01, 9.2503e-01, 8.9200e-01, 8.5896e-01,
1286 8.3693e-01, 7.8187e-01, 7.5985e-01, 7.3782e-01, 7.2681e-01, 6.9377e-01,
1287 6.6074e-01, 6.4973e-01, 6.1669e-01, 5.9466e-01, 5.7264e-01, 5.8365e-01,
1288 5.6163e-01, 5.1758e-01, 5.1758e-01, 4.9555e-01, 4.8454e-01, 4.6252e-01,
1289 4.6252e-01, 4.5150e-01, 4.4049e-01};
1290
1291 const int nYieldEntries = 67;
1292
1293 const double xIon[nYieldEntries] = {
1294 11.52, 11.6667, 11.8167, 12., 12.1833, 12.2667, 12.4333, 12.65,
1295 12.8, 13.05, 13.25, 13.45, 13.5833, 13.6833, 13.7667, 13.95,
1296 14.2333, 14.4, 14.55, 14.7333, 14.8667, 15., 15.15, 15.2833,
1297 15.45, 15.7333, 16.0167, 16.2833, 16.3333, 16.8167, 17.2, 17.4833,
1298 17.7333, 18.0167, 18.25, 18.3667, 18.5333, 18.7, 18.7833, 18.8667,
1299 18.9333, 19., 19.1667, 19.2667, 19.3333, 19.4, 19.4667, 19.5667,
1300 19.6, 19.7, 19.7833, 19.9333, 20., 20.0833, 20.2, 20.6,
1301 20.9333, 21.1333, 21.3167, 21.6167, 21.9833, 22.2333, 22.6, 22.9667,
1302 23.1667, 23.3833, 23.5667};
1303
1304 const double yIon[nYieldEntries] = {
1305 0., 0.0034433, 0.055093, 0.12396, 0.21349, 0.25825, 0.33745,
1306 0.42697, 0.50789, 0.62324, 0.71966, 0.79197, 0.82984, 0.84706,
1307 0.8505, 0.84362, 0.83156, 0.82296, 0.81263, 0.80918, 0.81607,
1308 0.83329, 0.85395, 0.87461, 0.89871, 0.93314, 0.96069, 0.98135,
1309 0.98307, 0.99168, 0.99512, 0.98996, 0.98479, 0.98824, 0.99168,
1310 0.98824, 0.98824, 0.98135, 0.97618, 0.97963, 0.97618, 0.98135,
1311 0.98135, 0.97791, 0.97791, 0.98135, 0.97618, 0.97618, 0.97446,
1312 0.98135, 0.97446, 0.97102, 0.97274, 0.96758, 0.96758, 0.97446,
1313 0.97791, 0.97791, 0.97618, 0.97618, 0.97791, 0.97791, 0.97618,
1314 0.97791, 0.97446, 0.97446, 0.97446};
1315
1316 // Branching ratio (%) for dissociation to C2H5+ + H-
1317 const int nBranchEntries = 50;
1318
1319 const double xBranch[nBranchEntries] = {
1320 11., 11.5, 12., 12.5, 13., 13.5, 14., 14.5, 15., 15.5,
1321 16., 16.5, 17., 17.5, 18., 18.5, 19., 19.5, 20., 20.5,
1322 21., 21.5, 22., 22.5, 23., 23.5, 24., 24.5, 25., 25.5,
1323 26., 26.5, 27., 27.5, 28., 28.5, 29., 29.5, 30., 31.,
1324 32., 33., 34., 35., 36., 37., 38., 39., 40., 41.};
1325
1326 const double yBranch[nBranchEntries] = {
1327 0., 0., 2.8, 4.56, 8.98, 11.87, 13.21, 14.71, 14.6, 14.18,
1328 13.27, 13.28, 13.12, 12.78, 13.04, 13.16, 13.04, 13.11, 12.76, 12.62,
1329 12.27, 12.17, 12.28, 12.04, 11.94, 11.76, 11.73, 11.56, 11.24, 11.49,
1330 11.17, 11., 11.04, 10.83, 10.8, 10.59, 10.65, 10.53, 10.27, 10.45,
1331 10.3, 10.24, 9.89, 9.28, 9.24, 9.4, 9.13, 9.41, 8.78, 9.54};
1332
1333 // Locate the requested energy in the tables.
1334 // First the photoabsorption cross-section.
1335 int iLow = 0;
1336 int iUp = nPacsEntries - 1;
1337 int iM;
1338 while (iUp - iLow > 1) {
1339 iM = (iUp + iLow) >> 1;
1340 if (e >= xC2H6[iM]) {
1341 iLow = iM;
1342 } else {
1343 iUp = iM;
1344 }
1345 }
1346
1347 // Linear interpolation.
1348 cs = yC2H6[iLow] + (e - xC2H6[iLow]) * (yC2H6[iUp] - yC2H6[iLow]) /
1349 (xC2H6[iUp] - xC2H6[iLow]);
1350 // Convert from Mbarn to cm2.
1351 cs *= 1.e-18;
1352
1353 if (e < xIon[0]) {
1354 eta = 0.;
1355 } else if (e >= xIon[nYieldEntries - 1]) {
1356 eta = 1.;
1357 } else {
1358 // Linear interpolation.
1359 // Same procedure as for photoabsorption cross-section.
1360 iLow = 0;
1361 iUp = nYieldEntries - 1;
1362 while (iUp - iLow > 1) {
1363 iM = (iUp + iLow) >> 1;
1364 if (e >= xIon[iM]) {
1365 iLow = iM;
1366 } else {
1367 iUp = iM;
1368 }
1369 }
1370 eta = yIon[iLow] + (e - xIon[iLow]) * (yIon[iUp] - yIon[iLow]) /
1371 (xIon[iUp] - xIon[iLow]);
1372 }
1373
1374 const bool useBranching = true;
1375 if (useBranching) {
1376 double br = 0.;
1377 if (e < xBranch[0]) {
1378 br = 0.;
1379 } else if (e >= xBranch[nBranchEntries - 1]) {
1380 br = yBranch[nBranchEntries - 1];
1381 } else {
1382 // Linear interpolation.
1383 iLow = 0;
1384 iUp = nYieldEntries - 1;
1385 while (iUp - iLow > 1) {
1386 iM = (iUp + iLow) >> 1;
1387 if (e >= xBranch[iM]) {
1388 iLow = iM;
1389 } else {
1390 iUp = iM;
1391 }
1392 }
1393 br = yBranch[iLow] + (e - xBranch[iLow]) *
1394 (yBranch[iUp] - yBranch[iLow]) /
1395 (xBranch[iUp] - xBranch[iLow]);
1396 }
1397 eta *= (1. - 0.01 * br);
1398 }
1399 return true;
1400 }
1401
1402 if (e >= 280. && e <= 320.) {
1403 // Carbon K edge
1404
1405 const int nEntries = 63;
1406
1407 const double xC2H6[nEntries] = {
1408 2.8000e02, 2.8618e02, 2.8638e02, 2.8670e02, 2.8698e02, 2.8723e02,
1409 2.8739e02, 2.8763e02, 2.8771e02, 2.8775e02, 2.8799e02, 2.8811e02,
1410 2.8819e02, 2.8827e02, 2.8847e02, 2.8860e02, 2.8872e02, 2.8892e02,
1411 2.8912e02, 2.8940e02, 2.8960e02, 2.8984e02, 2.9017e02, 2.9057e02,
1412 2.9089e02, 2.9129e02, 2.9158e02, 2.9182e02, 2.9206e02, 2.9238e02,
1413 2.9246e02, 2.9295e02, 2.9339e02, 2.9411e02, 2.9472e02, 2.9552e02,
1414 2.9657e02, 2.9770e02, 2.9883e02, 3.0012e02, 3.0060e02, 3.0132e02,
1415 3.0257e02, 3.0330e02, 3.0390e02, 3.0451e02, 3.0547e02, 3.0608e02,
1416 3.0692e02, 3.0757e02, 3.0829e02, 3.0914e02, 3.1015e02, 3.1127e02,
1417 3.1196e02, 3.1280e02, 3.1421e02, 3.1538e02, 3.1607e02, 3.1728e02,
1418 3.1820e02, 3.1909e02, 3.2000e02};
1419
1420 const double yC2H6[nEntries] = {
1421 7.1950e-04, 1.0941e-03, 2.2763e-03, 9.7735e-03, 1.6678e-02, 1.7366e-02,
1422 1.8253e-02, 3.3250e-02, 4.8744e-02, 5.6341e-02, 5.9398e-02, 5.3673e-02,
1423 5.2686e-02, 4.9922e-02, 3.7782e-02, 3.2748e-02, 2.8108e-02, 2.7515e-02,
1424 2.8598e-02, 3.1950e-02, 3.7558, 3.9938, 4.2210, 4.3830,
1425 4.4259, 4.4363, 4.3602, 4.1867, 4.0239, 3.9370,
1426 3.8394, 3.6655, 3.4917, 3.3284, 3.2303, 3.0887,
1427 2.9251, 2.7830, 2.7276, 2.6288, 2.5741, 2.5408,
1428 2.4203, 2.3437, 2.3105, 2.3099, 2.1897, 2.1023,
1429 2.0581, 2.0358, 1.9809, 1.9691, 1.8814, 1.7935,
1430 1.7819, 1.7269, 1.6712, 1.6374, 1.5609, 1.5703,
1431 1.4935, 1.5034, 1.4807};
1432
1433 // Linear interpolation.
1434 int iLow = 0;
1435 int iUp = nEntries - 1;
1436 int iM;
1437 while (iUp - iLow > 1) {
1438 iM = (iUp + iLow) >> 1;
1439 if (e >= xC2H6[iM]) {
1440 iLow = iM;
1441 } else {
1442 iUp = iM;
1443 }
1444 }
1445
1446 cs = yC2H6[iLow] + (e - xC2H6[iLow]) * (yC2H6[iUp] - yC2H6[iLow]) /
1447 (xC2H6[iUp] - xC2H6[iLow]);
1448 // Convert from Mbarn to cm2.
1449 cs *= 1.e-18;
1450 eta = 1.;
1451 return true;
1452 }
1453
1454 double a, b, c, d;
1455 if (e < 280.) {
1456 a = -12.4308;
1457 b = 746.5164;
1458 c = -8913.93;
1459 d = 37174.85;
1460 } else if (e < 1740.) {
1461 a = 9.028358;
1462 b = 7916.428;
1463 c = -136533.;
1464 d = 745811.8;
1465 } else {
1466 a = -2.57845;
1467 b = 9040.533;
1468 c = -114924.;
1469 d = -2946480.;
1470 }
1471
1472 const double y = 11.52 / e;
1473 const double f =
1474 a * pow(y, 2) + b * pow(y, 3) + c * pow(y, 4) + d * pow(y, 5);
1475 // Convert from oscillator strength (per Rydberg) to photoabsorption cs
1476 cs = 8.067283e-18 * f;
1477 eta = 1.;
1478 return true;
1479}
1480
1481bool OpticalData::PhotoAbsorptionCsAcetylene(const double e, double& cs,
1482 double& eta) {
1483
1484 // Sources:
1485
1486 // Photoabsorption cross-section:
1487 // J. Berkowitz, Atomic and Molecular Photoabsorption (2002)
1488 // N. Sakamoto et al., NIFS-DATA 109
1489 // Sub-ionization region:
1490 // G. Cooper at al., J. El. Spectr. Rel. Phen. (1995), 139-148
1491 // Photoionization yield:
1492 // M. Ukai et al., J. Chem. Phys. 95 (1991), 4142-4153
1493
1494 if (e < 6.) {
1495 cs = eta = 0.;
1496 return true;
1497 }
1498
1499 if (e < 62.) {
1500
1501 // Photoabsorption cross-section
1502 const int nPacsEntries = 196;
1503
1504 const double xC2H2[nPacsEntries] = {
1505 6., 6.5, 7., 7.5, 8., 8.5,
1506 9., 9.5, 10., 10.5, 11., 1.1401e01,
1507 1.1407e01, 1.1409e01, 1.1413e01, 1.1416e01, 1.1418e01, 1.1423e01,
1508 1.1424e01, 1.1428e01, 1.1431e01, 1.1433e01, 1.1437e01, 1.1440e01,
1509 1.1444e01, 1.1447e01, 1.1448e01, 1.1451e01, 1.1452e01, 1.1455e01,
1510 1.1457e01, 1.1460e01, 1.1462e01, 1.1474e01, 1.1478e01, 1.1481e01,
1511 1.1482e01, 1.1483e01, 1.1485e01, 1.1489e01, 1.1493e01, 1.1495e01,
1512 1.1496e01, 1.1500e01, 1.1503e01, 1.1507e01, 1.1509e01, 1.1511e01,
1513 1.1512e01, 1.1516e01, 1.1517e01, 1.1518e01, 1.1521e01, 1.1528e01,
1514 1.1529e01, 1.1530e01, 1.1533e01, 1.1534e01, 1.1538e01, 1.1543e01,
1515 1.1546e01, 1.1548e01, 1.1556e01, 1.1564e01, 1.1566e01, 1.1570e01,
1516 1.1573e01, 1.1576e01, 1.1578e01, 1.1580e01, 1.1582e01, 1.1583e01,
1517 1.1585e01, 1.1591e01, 1.1595e01, 1.1597e01, 1.1602e01, 1.1610e01,
1518 1.1616e01, 1.1617e01, 1.1619e01, 1.1621e01, 1.1623e01, 1.1625e01,
1519 1.1630e01, 1.1636e01, 1.1642e01, 1.1646e01, 1.1648e01, 1.1650e01,
1520 1.1660e01, 1.1669e01, 1.1670e01, 1.1672e01, 1.1676e01, 1.1680e01,
1521 1.1690e01, 1.1698e01, 1.1700e01, 1.1808e01, 1.2096e01, 1.2398e01,
1522 1.2716e01, 1.3051e01, 1.3260e01, 1.3335e01, 1.3458e01, 1.3643e01,
1523 1.3776e01, 1.3986e01, 1.4124e01, 1.4253e01, 1.4373e01, 1.4457e01,
1524 1.4641e01, 1.4723e01, 1.4831e01, 1.4967e01, 1.5041e01, 1.5127e01,
1525 1.5226e01, 1.5297e01, 1.5419e01, 1.5543e01, 1.5692e01, 1.5849e01,
1526 1.5967e01, 1.6068e01, 1.6177e01, 1.6314e01, 1.6531e01, 1.6761e01,
1527 1.6961e01, 1.7075e01, 1.7297e01, 1.7712e01, 1.7852e01, 1.7997e01,
1528 1.8134e01, 1.8268e01, 1.8530e01, 1.8791e01, 1.9074e01, 1.9762e01,
1529 2.0660e01, 2.1000e01, 2.1500e01, 2.2000e01, 2.2500e01, 2.3000e01,
1530 2.3500e01, 2.4000e01, 2.4500e01, 2.5000e01, 2.5500e01, 2.6000e01,
1531 2.6500e01, 2.7000e01, 2.7500e01, 2.8000e01, 2.8500e01, 2.9000e01,
1532 2.9500e01, 3.0000e01, 3.1000e01, 3.2000e01, 3.3000e01, 3.4000e01,
1533 3.5000e01, 3.6000e01, 3.7000e01, 3.8000e01, 3.9000e01, 4.0000e01,
1534 4.1000e01, 4.2000e01, 4.3000e01, 4.4000e01, 4.5000e01, 4.6000e01,
1535 4.7000e01, 4.8000e01, 4.9000e01, 5.0000e01, 5.1000e01, 5.2000e01,
1536 5.3000e01, 5.4000e01, 5.5000e01, 5.6000e01, 5.7000e01, 5.8000e01,
1537 5.9000e01, 6.0000e01, 6.1000e01, 6.2000e01};
1538
1539 const double yC2H2[nPacsEntries] = {
1540 0.1537, 0.5049, 1.0976, 3.4794, 18.3081, 18.0776,
1541 33.4881, 48.9534, 39.3164, 37.8895, 33.7295, 2.6374e01,
1542 2.7607e01, 2.9974e01, 3.4365e01, 3.6190e01, 3.7176e01, 3.3769e01,
1543 3.0216e01, 2.5872e01, 2.3750e01, 2.3009e01, 2.2564e01, 2.3500e01,
1544 2.7298e01, 3.0899e01, 3.2330e01, 3.1392e01, 2.8678e01, 2.7295e01,
1545 2.6801e01, 2.6751e01, 2.7293e01, 2.4378e01, 2.5068e01, 2.6843e01,
1546 2.8669e01, 2.9507e01, 2.9802e01, 2.7926e01, 2.6987e01, 2.6296e01,
1547 2.6789e01, 2.5209e01, 2.3136e01, 2.2443e01, 2.2690e01, 2.4761e01,
1548 2.5353e01, 2.6042e01, 2.6487e01, 2.6782e01, 2.6041e01, 2.4855e01,
1549 2.5151e01, 2.6482e01, 2.7863e01, 2.9541e01, 3.0379e01, 2.8995e01,
1550 2.8599e01, 2.8648e01, 2.6474e01, 2.6472e01, 2.5731e01, 2.6026e01,
1551 2.6618e01, 2.6765e01, 2.7504e01, 2.7011e01, 2.8095e01, 2.7305e01,
1552 2.7107e01, 2.5428e01, 2.5328e01, 2.4784e01, 2.4783e01, 2.6211e01,
1553 2.7690e01, 2.7689e01, 2.8330e01, 2.7590e01, 2.7441e01, 2.7440e01,
1554 2.7636e01, 2.9066e01, 2.8866e01, 2.7730e01, 2.7729e01, 2.6544e01,
1555 2.5406e01, 2.7427e01, 2.8068e01, 2.8413e01, 2.7722e01, 2.7177e01,
1556 2.6928e01, 2.6333e01, 2.6185e01, 2.7955e01, 3.0723e01, 3.3612e01,
1557 3.6669e01, 4.1290e01, 4.5064e01, 4.6347e01, 4.6877e01, 4.5347e01,
1558 3.9997e01, 3.6467e01, 4.2647e01, 3.3408e01, 3.8117e01, 3.6117e01,
1559 3.7757e01, 4.1527e01, 4.4467e01, 5.5346e01, 5.4646e01, 5.8816e01,
1560 5.8816e01, 5.9936e01, 5.5756e01, 6.0936e01, 5.6056e01, 5.5526e01,
1561 5.6646e01, 5.2056e01, 5.3706e01, 5.1526e01, 4.9756e01, 4.6287e01,
1562 4.4177e01, 4.4177e01, 4.2937e01, 4.2407e01, 4.1467e01, 4.1937e01,
1563 4.1057e01, 4.1407e01, 4.0647e01, 3.9997e01, 3.9057e01, 3.6757e01,
1564 3.3782e01, 3.3080e01, 3.2443e01, 3.0874e01, 2.9809e01, 2.8514e01,
1565 2.7241e01, 2.5803e01, 2.4728e01, 2.4420e01, 2.2983e01, 2.2061e01,
1566 2.1413e01, 2.0711e01, 1.9975e01, 1.9163e01, 1.8592e01, 1.7956e01,
1567 1.7330e01, 1.6727e01, 1.5519e01, 1.4608e01, 1.3994e01, 1.3061e01,
1568 1.2413e01, 1.1875e01, 1.1272e01, 1.0624e01, 1.0229e01, 9.7572,
1569 9.2962, 8.8682, 8.3743, 8.0669, 7.7157, 7.3206,
1570 6.9036, 6.6621, 6.3767, 6.0145, 5.7182, 5.4987,
1571 5.2243, 4.9170, 4.7414, 4.3792, 4.2475, 3.9841,
1572 3.8414, 3.6658, 3.5341, 3.3146};
1573
1574 // Photoionization yield
1575 const int nYieldEntries = 44;
1576 double xIon[nYieldEntries] = {
1577 11., 11.08, 11.55, 11.99, 12.53, 12.87, 13.21, 13.58, 13.65,
1578 13.92, 14.16, 14.29, 14.49, 14.56, 14.63, 15.03, 15.24, 15.41,
1579 15.47, 15.71, 15.74, 15.95, 16.08, 16.25, 16.49, 16.66, 16.76,
1580 17.03, 17.13, 17.47, 17.84, 18.38, 18.75, 18.95, 19.39, 19.76,
1581 20.00, 20.30, 20.54, 20.81, 21.69, 21.89, 22.33, 23.41};
1582
1583 double yIon[nYieldEntries] = {
1584 0.16, 0.49, 0.70, 0.79, 0.7, 0.79, 0.78, 0.72, 0.69, 0.66, 0.63,
1585 0.66, 0.70, 0.73, 0.76, 0.82, 0.81, 0.81, 0.79, 0.80, 0.78, 0.77,
1586 0.77, 0.75, 0.76, 0.78, 0.81, 0.85, 0.89, 0.91, 0.94, 0.94, 0.95,
1587 0.97, 0.98, 0.98, 0.99, 0.98, 0.97, 0.98, 0.98, 0.97, 0.97, 0.97};
1588
1589 // Locate the requested energy in the tables.
1590 // First the photoabsorption cross-section.
1591 int iLow = 0;
1592 int iUp = nPacsEntries - 1;
1593 int iM;
1594 while (iUp - iLow > 1) {
1595 iM = (iUp + iLow) >> 1;
1596 if (e >= xC2H2[iM]) {
1597 iLow = iM;
1598 } else {
1599 iUp = iM;
1600 }
1601 }
1602
1603 // Linear interpolation.
1604 cs = yC2H2[iLow] + (e - xC2H2[iLow]) * (yC2H2[iUp] - yC2H2[iLow]) /
1605 (xC2H2[iUp] - xC2H2[iLow]);
1606 // Convert from Mbarn to cm2.
1607 cs *= 1.e-18;
1608
1609 if (e < xIon[0]) {
1610 eta = 0.;
1611 } else if (e >= xIon[nYieldEntries - 1]) {
1612 eta = 1.;
1613 } else {
1614 // Linear interpolation.
1615 // Same procedure as for photoabsorption cross-section.
1616 iLow = 0;
1617 iUp = nYieldEntries - 1;
1618 while (iUp - iLow > 1) {
1619 iM = (iUp + iLow) >> 1;
1620 if (e >= xIon[iM]) {
1621 iLow = iM;
1622 } else {
1623 iUp = iM;
1624 }
1625 }
1626 eta = yIon[iLow] + (e - xIon[iLow]) * (yIon[iUp] - yIon[iLow]) /
1627 (xIon[iUp] - xIon[iLow]);
1628 }
1629
1630 return true;
1631 }
1632
1633 if (e > 285. && e <= 360.) {
1634 // Carbon K edge
1635
1636 const int nEntries = 175;
1637
1638 const double xC2H2[nEntries] = {
1639 2.8481e02, 2.8506e02, 2.8535e02, 2.8553e02, 2.8561e02, 2.8579e02,
1640 2.8597e02, 2.8611e02, 2.8629e02, 2.8651e02, 2.8673e02, 2.8684e02,
1641 2.8702e02, 2.8730e02, 2.8733e02, 2.8735e02, 2.8736e02, 2.8739e02,
1642 2.8743e02, 2.8746e02, 2.8747e02, 2.8750e02, 2.8752e02, 2.8754e02,
1643 2.8755e02, 2.8756e02, 2.8759e02, 2.8763e02, 2.8766e02, 2.8774e02,
1644 2.8777e02, 2.8781e02, 2.8785e02, 2.8789e02, 2.8791e02, 2.8798e02,
1645 2.8801e02, 2.8808e02, 2.8814e02, 2.8818e02, 2.8821e02, 2.8827e02,
1646 2.8830e02, 2.8837e02, 2.8842e02, 2.8849e02, 2.8857e02, 2.8863e02,
1647 2.8867e02, 2.8871e02, 2.8874e02, 2.8876e02, 2.8879e02, 2.8881e02,
1648 2.8884e02, 2.8889e02, 2.8891e02, 2.8894e02, 2.8896e02, 2.8898e02,
1649 2.8900e02, 2.8904e02, 2.8906e02, 2.8909e02, 2.8914e02, 2.8917e02,
1650 2.8924e02, 2.8927e02, 2.8930e02, 2.8932e02, 2.8937e02, 2.8943e02,
1651 2.8948e02, 2.8952e02, 2.8955e02, 2.8959e02, 2.8961e02, 2.8964e02,
1652 2.8966e02, 2.8967e02, 2.8971e02, 2.8975e02, 2.8976e02, 2.8980e02,
1653 2.8982e02, 2.8985e02, 2.8988e02, 2.8991e02, 2.8993e02, 2.8996e02,
1654 2.9000e02, 2.9004e02, 2.9009e02, 2.9014e02, 2.9017e02, 2.9019e02,
1655 2.9023e02, 2.9025e02, 2.9028e02, 2.9030e02, 2.9033e02, 2.9037e02,
1656 2.9039e02, 2.9040e02, 2.9044e02, 2.9046e02, 2.9050e02, 2.9057e02,
1657 2.9060e02, 2.9063e02, 2.9066e02, 2.9068e02, 2.9070e02, 2.9073e02,
1658 2.9075e02, 2.9080e02, 2.9083e02, 2.9085e02, 2.9086e02, 2.9090e02,
1659 2.9094e02, 2.9097e02, 2.9099e02, 2.9102e02, 2.9104e02, 2.9107e02,
1660 2.9111e02, 2.9118e02, 2.9121e02, 2.9125e02, 2.9132e02, 2.9136e02,
1661 2.9138e02, 2.9140e02, 2.9142e02, 2.9146e02, 2.9150e02, 2.9190e02,
1662 2.9298e02, 2.9385e02, 2.9476e02, 2.9552e02, 2.9588e02, 2.9649e02,
1663 2.9703e02, 2.9761e02, 2.9852e02, 2.9949e02, 2.9996e02, 3.0034e02,
1664 3.0077e02, 3.0124e02, 3.0184e02, 3.0334e02, 3.0467e02, 3.0622e02,
1665 3.0777e02, 3.0910e02, 3.1030e02, 3.1197e02, 3.1425e02, 3.1675e02,
1666 3.2018e02, 3.2341e02, 3.2702e02, 3.3003e02, 3.3342e02, 3.3656e02,
1667 3.4000e02, 3.4335e02, 3.4683e02, 3.5013e02, 3.5344e02, 3.5731e02,
1668 3.6000e02};
1669
1670 const double yC2H2[nEntries] = {
1671 1.1447, 4.0960, 8.2636, 1.2449e01, 1.4649e01, 1.5865e01,
1672 1.4505e01, 1.1662e01, 7.4408, 4.1139, 1.6456, 1.0374,
1673 6.0814e-1, 2.9716e-1, 3.5206e-1, 3.4023e-1, 4.3127e-1, 3.7713e-1,
1674 4.5638e-1, 3.5374e-1, 4.3878e-1, 4.5737e-1, 3.7275e-1, 4.3971e-1,
1675 5.3069e-1, 4.6422e-1, 4.9481e-1, 7.9837e-1, 8.4119e-1, 1.7211,
1676 1.8306, 1.6857, 1.6801, 1.7714, 1.8021, 2.0091,
1677 2.0094, 1.5558, 1.2111, 1.1693, 1.1757, 1.3038,
1678 1.3284, 1.1657, 1.0754, 1.0519, 1.1258, 1.3205,
1679 1.7575, 2.7459, 3.9887, 4.6132, 4.7893, 4.6867,
1680 4.4506, 3.6390, 3.0393, 2.5792, 2.4340, 2.4403,
1681 2.5799, 2.9743, 3.0898, 2.9750, 2.5756, 2.0670,
1682 1.6921, 1.5470, 1.4747, 1.4567, 1.3301, 1.1066,
1683 1.0527, 1.1078, 1.2416, 1.6360, 2.3454, 3.2185,
1684 3.4369, 3.3281, 2.5163, 1.7835, 1.6686, 1.4691,
1685 1.4754, 1.5910, 1.8277, 2.3978, 2.7313, 2.9197,
1686 2.8232, 2.4965, 1.8122, 1.5219, 1.5223, 1.6075,
1687 1.9595, 2.0446, 2.5480, 2.6635, 2.4760, 1.8946,
1688 1.8039, 1.7678, 1.7742, 1.9079, 2.0054, 2.3941,
1689 2.2855, 1.9888, 1.8015, 1.7895, 1.8625, 2.0083,
1690 2.1481, 2.1003, 2.1248, 2.1069, 2.1253, 2.0590,
1691 1.9626, 2.0055, 2.0118, 2.0970, 2.0973, 2.0492,
1692 2.0800, 2.0567, 2.0389, 2.0819, 2.1010, 2.0711,
1693 2.0897, 2.0778, 2.0962, 2.0544, 2.0729, 2.1464,
1694 2.2537, 2.1285, 2.2001, 2.4862, 2.5756, 2.3968,
1695 2.1643, 2.0391, 2.0211, 2.0391, 2.0927, 2.0805,
1696 2.1235, 2.0752, 2.0672, 2.1183, 2.1855, 2.2206,
1697 2.2475, 2.2718, 2.2692, 2.2640, 2.1756, 2.0712,
1698 1.9159, 1.7846, 1.6669, 1.5921, 1.5226, 1.4665,
1699 1.4132, 1.3679, 1.3306, 1.2879, 1.2507, 1.2188,
1700 1.2169};
1701
1702 // Linear interpolation.
1703 int iLow = 0;
1704 int iUp = nEntries - 1;
1705 int iM;
1706 while (iUp - iLow > 1) {
1707 iM = (iUp + iLow) >> 1;
1708 if (e >= xC2H2[iM]) {
1709 iLow = iM;
1710 } else {
1711 iUp = iM;
1712 }
1713 }
1714
1715 cs = yC2H2[iLow] + (e - xC2H2[iLow]) * (yC2H2[iUp] - yC2H2[iLow]) /
1716 (xC2H2[iUp] - xC2H2[iLow]);
1717 // Convert from Mbarn to cm2.
1718 cs *= 1.e-18;
1719 eta = 1.;
1720 return true;
1721 }
1722
1723 double a, b, c, d;
1724 if (e < 285.) {
1725 a = -4.09582;
1726 b = 371.7201;
1727 c = -3488.22;
1728 d = 11226.67;
1729 } else if (e < 1740.) {
1730 a = 14.12306;
1731 b = 7389.95;
1732 c = -105703.;
1733 d = 259751.7;
1734 } else {
1735 a = -2.73231;
1736 b = 9413.515;
1737 c = -143892.;
1738 d = -1205737.;
1739 }
1740
1741 const double y = 11.4011 / e;
1742 const double f =
1743 a * pow(y, 2) + b * pow(y, 3) + c * pow(y, 4) + d * pow(y, 5);
1744 // Convert from oscillator strength (per Rydberg) to photoabsorption cs
1745 cs = 8.067283e-18 * f;
1746 eta = 1.;
1747 return true;
1748}
1749
1750bool OpticalData::PhotoAbsorptionCsCF4(const double e, double& cs,
1751 double& eta) {
1752
1753 // Sources:
1754 // Photoabsorption cross-section:
1755 // J. W. Au et al., Chem. Phys. 221 (1997), 151-168
1756 // Photoionisation yield:
1757 // Zhang et al., Chemical Physics 137 (1989), 391-405
1758
1759 if (e < 10.) {
1760 cs = eta = 0.;
1761 return true;
1762 }
1763
1764 if (e < 200.) {
1765
1766 // Differential oscillator strength
1767 const int nPacsEntries = 255;
1768
1769 const double xCF4[nPacsEntries] = {
1770 10.0, 10.5, 11.0, 11.5,
1771 // High resolution data (from plot)
1772 11.66, 11.88, 12.06, 12.14, 12.26, 12.42, 12.58, 12.81, 12.95, 13.11,
1773 13.17, 13.21, 13.25, 13.27, 13.29, 13.31, 13.35, 13.37, 13.39, 13.43,
1774 13.45, 13.47, 13.49, 13.51, 13.53, 13.61, 13.67, 13.73, 13.85, 13.97,
1775 14.03, 14.09, 14.13, 14.15, 14.17, 14.21, 14.23, 14.28, 14.32, 14.34,
1776 14.36, 14.40, 14.42, 14.54, 14.62, 14.72, 14.82, 14.88, 14.98, 15.08,
1777 15.20, 15.26, 15.36, 15.40, 15.48, 15.50, 15.52, 15.56, 15.60, 15.64,
1778 15.68, 15.72, 15.75, 15.79, 15.83, 15.89, 15.95, 15.99, 16.03, 16.05,
1779 16.11, 16.15, 16.19, 16.37, 16.47, 16.63, 16.75, 16.93, 17.11, 17.25,
1780 17.48, 17.72, 18.00, 18.18, 18.38, 18.58, 18.81, 18.93, 19.03, 19.13,
1781 19.17, 19.27, 19.43, 19.61, 19.78, 19.93,
1782 // 12.0, 12.5, 13.0, 13.5, 14.0, 14.5,
1783 // 15.0, 15.5, 16.0, 16.5, 17.0, 17.5, 18.0, 18.5, 19.0, 19.5,
1784 20.0, 20.5, 21.0, 21.5, 22.0, 22.5, 23.0, 23.5, 24.0, 24.5,
1785 25.0, 25.5, 26.0, 26.5, 27.0, 27.5, 28.0, 28.5, 29.0, 29.5,
1786 30.0, 30.5, 31.0, 31.5, 32.0, 32.5, 33.0, 33.5, 34.0, 34.5,
1787 35.0, 35.5, 36.0, 36.5, 37.0, 37.5, 38.0, 38.5, 39.0, 39.5,
1788 40.0, 40.5, 41.0, 41.5, 42.0, 42.5, 43.0, 43.5, 44.0, 44.5,
1789 45.0, 45.5, 46.0, 47.0, 48.0, 49.0, 50.0, 51.0, 52.0, 53.0,
1790 54.0, 55.0, 56.0, 57.0, 58.0, 59.0, 60.0, 61.0, 62.0, 63.0,
1791 64.0, 65.0, 66.0, 67.0, 68.0, 69.0, 70.0, 71.0, 72.0, 73.0,
1792 74.0, 75.0, 76.0, 77.0, 78.0, 79.0, 80.0, 81.0, 82.0, 83.0,
1793 84.0, 85.0, 86.0, 87.0, 88.0, 89.0, 90.0, 91.0, 92.0, 93.0,
1794 94.0, 95.0, 96.0, 98.0, 100.0, 102.0, 104.0, 106.0, 108.0, 110.0,
1795 112.0, 114.0, 116.0, 118.0, 120.0, 122.0, 124.0, 126.0, 128.0, 130.0,
1796 132.0, 134.0, 136.0, 138.0, 140.0, 142.0, 144.0, 146.0, 148.0, 150.0,
1797 152.0, 154.0, 156.0, 158.0, 160.0, 162.0, 164.0, 166.0, 168.0, 170.0,
1798 172.0, 174.0, 176.0, 178.0, 180.0, 182.0, 184.0, 186.0, 188.0, 190.0,
1799 192.0, 194.0, 196.0, 198.0, 200.0};
1800
1801 const double yCF4[nPacsEntries] = {
1802 0.05, 0.06, 0.10, 0.27,
1803 // High resolution data (from plot)
1804 0.29, 0.29, 0.44, 1.47, 1.91, 3.08, 3.67, 3.67, 3.23, 3.37,
1805 4.11, 6.09, 8.80, 10.56, 12.32, 14.23, 18.92, 23.03, 28.53, 34.62,
1806 38.88, 40.78, 42.54, 43.86, 46.65, 47.68, 46.50, 44.74, 41.96, 42.10,
1807 40.49, 37.48, 34.99, 33.30, 31.69, 30.04, 28.31, 25.53, 24.21, 22.30,
1808 20.83, 19.36, 18.34, 15.26, 13.20, 11.30, 9.68, 8.36, 7.63, 8.95,
1809 11.00, 12.76, 15.55, 17.75, 20.39, 23.62, 25.53, 28.61, 31.69, 35.50,
1810 41.00, 44.30, 47.53, 49.29, 51.05, 48.85, 44.89, 42.25, 39.32, 37.56,
1811 34.47, 31.83, 29.63, 32.57, 34.03, 36.38, 38.44, 39.76, 39.46, 39.61,
1812 41.81, 43.57, 45.77, 46.94, 47.82, 47.24, 46.36, 46.21, 47.53, 49.00,
1813 50.46, 52.37, 54.43, 51.64, 49.58, 48.41,
1814 // 1.32, 3.51, 11.97, 29.62, 31.67, 19.92,
1815 // 16.82, 28.76, 35.24, 35.92, 39.14, 41.84, 44.86, 46.84, 48.48, 49.98,
1816 51.66, 55.96, 58.65, 60.84, 62.47, 62.01, 60.63, 59.36, 57.26, 54.58,
1817 52.55, 50.40, 48.52, 47.15, 45.89, 45.11, 44.67, 44.49, 44.27, 44.27,
1818 44.35, 44.61, 44.67, 44.30, 44.56, 44.15, 44.20, 44.42, 44.23, 43.65,
1819 43.44, 43.23, 42.79, 42.69, 42.52, 42.77, 42.65, 42.56, 42.98, 42.57,
1820 42.33, 41.93, 41.10, 40.51, 39.84, 38.82, 37.73, 36.62, 35.71, 35.18,
1821 34.05, 33.21, 32.14, 30.72, 29.45, 28.25, 27.56, 26.71, 26.11, 25.50,
1822 24.91, 24.40, 23.91, 23.60, 23.14, 22.60, 22.35, 21.92, 21.40, 21.06,
1823 20.52, 20.17, 19.92, 19.55, 19.00, 18.84, 18.39, 18.05, 17.81, 17.31,
1824 17.06, 16.62, 16.43, 16.02, 15.74, 15.43, 15.12, 14.64, 14.57, 14.05,
1825 13.87, 13.62, 13.51, 13.24, 12.74, 12.66, 12.47, 12.18, 11.84, 11.73,
1826 11.50, 11.23, 11.01, 10.61, 10.33, 9.98, 9.65, 9.31, 9.02, 8.65,
1827 8.43, 8.13, 7.86, 7.64, 7.35, 7.15, 6.94, 6.71, 6.45, 6.27,
1828 6.09, 5.91, 5.69, 5.56, 5.30, 5.18, 5.03, 4.87, 4.74, 4.52,
1829 4.42, 4.27, 4.15, 4.13, 3.94, 3.89, 3.80, 3.75, 3.58, 3.46,
1830 3.35, 3.26, 3.17, 3.10, 3.13, 2.99, 2.91, 2.79, 2.67, 2.68,
1831 2.72, 2.55, 2.52, 2.45, 2.42};
1832
1833 // Photoionization yield
1834 const int nYieldEntries = 10;
1835 double xIon[nYieldEntries] = {15.5, 16.0, 16.5, 17.0, 17.5,
1836 18.0, 18.5, 19.0, 19.5, 20.0};
1837
1838 double yIon[nYieldEntries] = {0.03, 0.14, 0.28, 0.50, 0.68,
1839 0.84, 0.93, 0.95, 0.97, 1.0};
1840
1841 // Locate the requested energy in the tables.
1842 // First the photoabsorption cross-section.
1843 int iLow = 0;
1844 int iUp = nPacsEntries - 1;
1845 int iM;
1846 while (iUp - iLow > 1) {
1847 iM = (iUp + iLow) >> 1;
1848 if (e >= xCF4[iM]) {
1849 iLow = iM;
1850 } else {
1851 iUp = iM;
1852 }
1853 }
1854
1855 // Linear interpolation.
1856 cs = yCF4[iLow] +
1857 (e - xCF4[iLow]) * (yCF4[iUp] - yCF4[iLow]) / (xCF4[iUp] - xCF4[iLow]);
1858 // Data in the table are given in 0.01 eV-1.
1859 cs *= 0.01;
1860 // Convert from oscillator strength to photoabsorption cs.
1861 cs *= 109.75e-18;
1862
1863 if (e < xIon[0]) {
1864 eta = 0.;
1865 } else if (e >= xIon[nYieldEntries - 1]) {
1866 eta = 1.;
1867 } else {
1868 // Linear interpolation.
1869 // Same procedure as for photoabsorption cross-section.
1870 iLow = 0;
1871 iUp = nYieldEntries - 1;
1872 while (iUp - iLow > 1) {
1873 iM = (iUp + iLow) >> 1;
1874 if (e >= xIon[iM]) {
1875 iLow = iM;
1876 } else {
1877 iUp = iM;
1878 }
1879 }
1880 eta = yIon[iLow] + (e - xIon[iLow]) * (yIon[iUp] - yIon[iLow]) /
1881 (xIon[iUp] - xIon[iLow]);
1882 }
1883
1884 return true;
1885 }
1886
1887 cs = eta = 0.;
1888 return true;
1889}
1890
1891bool OpticalData::PhotoAbsorptionCsButane(const double e, double& cs,
1892 double& eta) {
1893
1894 // Sources:
1895 // Photoabsorption cross-section:
1896 // J. W. Au et al., Chem. Phys. 173 (1993), 209-239
1897 // Photoionisation yield:
1898 // J. W. Au, G. Cooper and C. E. Brion, Chem. Phys. 173 (1993), 241-265
1899
1900 if (e < 7.62) {
1901 cs = eta = 0.;
1902 return true;
1903 }
1904
1905 if (e < 25.04) {
1906
1907 // Differential oscillator strength
1908 const int nPacsEntries = 40;
1909
1910 const double xC4H10[nPacsEntries] = {
1911 7.61194, 8.0597, 8.29851, 8.38806, 8.50746, 8.65672, 9.01493, 9.19403,
1912 9.49254, 9.85075, 10.0299, 10.2985, 10.5672, 10.6567, 11.0324, 11.5044,
1913 12.0059, 12.5369, 12.8319, 13.1268, 13.2153, 13.5693, 13.9233, 14.2478,
1914 14.7198, 15.2802, 16.1062, 16.7552, 17.2861, 17.7581, 18.2301, 18.8791,
1915 19.6755, 20.354, 21.1504, 21.9469, 22.6254, 23.5693, 24.2773, 25.0442};
1916
1917 const double yC4H10[nPacsEntries] = {
1918 0., 1.80412, 9.02062, 15.8763, 24.5361, 31.3918, 32.1134, 37.5258,
1919 42.2165, 39.6907, 41.134, 47.9897, 53.4021, 55.2062, 61.8598, 70.7547,
1920 80.4582, 90.566, 101.482, 110.377, 118.868, 123.315, 131.402, 139.892,
1921 144.34, 148.787, 150.809, 146.766, 143.531, 137.062, 131.402, 126.55,
1922 119.272, 112.803, 103.1, 95.0135, 88.5445, 81.2668, 74.3935, 68.3288};
1923
1924 // Photoionization yield
1925 const int nYieldEntries = 9;
1926 double xIon[nYieldEntries] = {10., 10.5, 11.0, 11.5, 12.0,
1927 12.5, 13.0, 13.5, 14.0};
1928
1929 double yIon[nYieldEntries] = {0.04, 0.148, 0.319, 0.501, 0.717,
1930 0.832, 0.880, 0.943, 1.};
1931
1932 // Locate the requested energy in the tables.
1933 // First the photoabsorption cross-section.
1934 int iLow = 0;
1935 int iUp = nPacsEntries - 1;
1936 int iM;
1937 while (iUp - iLow > 1) {
1938 iM = (iUp + iLow) >> 1;
1939 if (e >= xC4H10[iM]) {
1940 iLow = iM;
1941 } else {
1942 iUp = iM;
1943 }
1944 }
1945
1946 // Linear interpolation.
1947 cs = yC4H10[iLow] + (e - xC4H10[iLow]) * (yC4H10[iUp] - yC4H10[iLow]) /
1948 (xC4H10[iUp] - xC4H10[iLow]);
1949 // Convert from Mbarn to cm2.
1950 cs *= 1.e-18;
1951
1952 if (e < xIon[0]) {
1953 eta = 0.;
1954 } else if (e >= xIon[nYieldEntries - 1]) {
1955 eta = 1.;
1956 } else {
1957 // Linear interpolation.
1958 // Same procedure as for photoabsorption cross-section.
1959 iLow = 0;
1960 iUp = nYieldEntries - 1;
1961 while (iUp - iLow > 1) {
1962 iM = (iUp + iLow) >> 1;
1963 if (e >= xIon[iM]) {
1964 iLow = iM;
1965 } else {
1966 iUp = iM;
1967 }
1968 }
1969 eta = yIon[iLow] + (e - xIon[iLow]) * (yIon[iUp] - yIon[iLow]) /
1970 (xIon[iUp] - xIon[iLow]);
1971 }
1972
1973 return true;
1974 }
1975
1976 cs = eta = 0.;
1977 return true;
1978}
1979
1980bool OpticalData::PhotoAbsorptionCsNitrogen(const double e, double& cs,
1981 double& eta) {
1982
1983 // Sources:
1984 // Photoabsorption cross-section:
1985 // J. Berkowitz, Atomic and Molecular Photoabsorption (2002)
1986 // N. Sakamoto et al., NIFS-DATA 109
1987 // Photoionization yield:
1988
1989 if (e < 14.92) {
1990 cs = eta = 0.;
1991 return true;
1992 }
1993
1994 if (e < 150.) {
1995
1996 // Photoabsorption cross-section
1997 const int nPacsEntries = 198;
1998
1999 const double xN2[nPacsEntries] = {
2000 1.4920e01, 1.4949e01, 1.4974e01, 1.4996e01, 1.5005e01, 1.5014e01,
2001 1.5057e01, 1.5104e01, 1.5115e01, 1.5188e01, 1.5197e01, 1.5230e01,
2002 1.5242e01, 1.5271e01, 1.5295e01, 1.5321e01, 1.5368e01, 1.5373e01,
2003 1.5404e01, 1.5419e01, 1.5458e01, 1.5477e01, 1.5511e01, 1.5514e01,
2004 1.5540e01, 1.5580e01, 1.5601e01, 1.5611e01, 1.5640e01, 1.5661e01,
2005 1.5686e01, 1.5709e01, 1.5732e01, 1.5766e01, 1.5787e01, 1.5806e01,
2006 1.5821e01, 1.5827e01, 1.5851e01, 1.5862e01, 1.5872e01, 1.5879e01,
2007 1.5891e01, 1.5915e01, 1.5924e01, 1.5942e01, 1.5964e01, 1.5973e01,
2008 1.5989e01, 1.6006e01, 1.6024e01, 1.6034e01, 1.6055e01, 1.6072e01,
2009 1.6091e01, 1.6101e01, 1.6113e01, 1.6127e01, 1.6161e01, 1.6180e01,
2010 1.6212e01, 1.6232e01, 1.6255e01, 1.6291e01, 1.6327e01, 1.6352e01,
2011 1.6385e01, 1.6400e01, 1.6425e01, 1.6435e01, 1.6476e01, 1.6493e01,
2012 1.6507e01, 1.6536e01, 1.6558e01, 1.6587e01, 1.6613e01, 1.6654e01,
2013 1.6673e01, 1.6703e01, 1.6731e01, 1.6764e01, 1.6808e01, 1.6844e01,
2014 1.6889e01, 1.6906e01, 1.6942e01, 1.7000e01, 1.7031e01, 1.7063e01,
2015 1.7075e01, 1.7104e01, 1.7142e01, 1.7169e01, 1.7198e01, 1.7239e01,
2016 1.7269e01, 1.7308e01, 1.7335e01, 1.7364e01, 1.7386e01, 1.7425e01,
2017 1.7461e01, 1.7533e01, 1.7579e01, 1.7596e01, 1.7625e01, 1.7704e01,
2018 1.7731e01, 1.7745e01, 1.7772e01, 1.7803e01, 1.7837e01, 1.7849e01,
2019 1.7866e01, 1.7897e01, 1.7922e01, 1.7958e01, 1.8000e01, 1.8118e01,
2020 1.8151e01, 1.8176e01, 1.8233e01, 1.8280e01, 1.8312e01, 1.8352e01,
2021 1.8408e01, 1.8424e01, 1.8462e01, 1.8480e01, 1.8504e01, 1.8616e01,
2022 1.8786e01, 2.0000e01, 2.2500e01, 2.5000e01, 2.7500e01, 3.0000e01,
2023 3.5000e01, 4.0000e01, 4.5000e01, 5.0000e01, 6.0000e01, 7.0000e01,
2024 8.0000e01, 9.0000e01, 1.0000e02, 1.2500e02, 1.5000e02, 1.7500e02,
2025 2.0000e02, 2.2500e02, 2.5000e02, 2.7500e02, 3.0000e02, 3.5000e02,
2026 4.0000e02, 4.0740e02, 4.0777e02, 4.0794e02, 4.0799e02, 4.0819e02,
2027 4.0859e02, 4.0915e02, 4.0964e02, 4.1000e02, 4.1009e02, 4.1169e02,
2028 4.1194e02, 4.1230e02, 4.1259e02, 4.1319e02, 4.1375e02, 4.1418e02,
2029 4.1442e02, 4.1485e02, 4.1532e02, 4.1583e02, 4.1625e02, 4.1677e02,
2030 4.1715e02, 4.1766e02, 4.1809e02, 4.1862e02, 4.1902e02, 4.1947e02,
2031 4.2000e02, 4.2060e02, 4.2132e02, 4.2217e02, 4.2306e02, 4.2411e02,
2032 4.2520e02, 4.2619e02, 4.2722e02, 4.2809e02, 4.2896e02, 4.3000e02};
2033
2034 const double yN2[nPacsEntries] = {
2035 2.6696, 3.5876, 7.0085, 1.4017e01, 1.8550e01, 2.2525e01,
2036 8.8070, 2.3226e01, 3.4138e01, 9.8988, 1.2080e01, 3.3358e01,
2037 3.6631e01, 1.5900e01, 8.5734, 1.3016e01, 3.8269e01, 4.0996e01,
2038 1.9563e01, 1.5665e01, 3.0240e01, 3.3825e01, 1.5821e01, 1.3172e01,
2039 1.0833e01, 1.8924e01, 3.0576e01, 3.1046e01, 4.3518e01, 5.1143e01,
2040 4.0351e01, 2.8074e01, 1.7673e01, 2.5493e01, 3.7458e01, 6.1543e01,
2041 6.9207e01, 6.5218e01, 4.4418e01, 4.0116e01, 3.8866e01, 3.5425e01,
2042 2.9090e01, 2.3929e01, 2.3069e01, 2.4945e01, 3.9257e01, 4.7936e01,
2043 5.0674e01, 3.5425e01, 2.9404e01, 3.3117e01, 4.5669e01, 4.7545e01,
2044 3.3626e01, 2.8230e01, 2.5727e01, 2.6744e01, 2.4711e01, 3.0771e01,
2045 4.0899e01, 3.2883e01, 2.8074e01, 3.2296e01, 2.5572e01, 2.9168e01,
2046 2.8660e01, 2.6901e01, 3.3313e01, 3.6285e01, 2.2600e01, 2.2130e01,
2047 2.2757e01, 2.9404e01, 2.7174e01, 2.7096e01, 2.6002e01, 2.9638e01,
2048 2.7135e01, 2.0957e01, 2.2366e01, 2.6041e01, 2.5806e01, 2.3694e01,
2049 2.3929e01, 2.1114e01, 2.2052e01, 2.5181e01, 2.7369e01, 3.2180e01,
2050 3.2687e01, 4.1367e01, 4.8093e01, 3.7770e01, 3.0420e01, 2.8699e01,
2051 2.5572e01, 2.1036e01, 2.0410e01, 2.5181e01, 2.6901e01, 2.7605e01,
2052 2.6041e01, 2.5806e01, 2.6118e01, 2.5884e01, 2.4515e01, 2.4554e01,
2053 2.3694e01, 2.4633e01, 2.4633e01, 2.7369e01, 3.6832e01, 3.9022e01,
2054 3.8474e01, 2.8465e01, 2.7135e01, 2.2678e01, 2.5181e01, 2.6588e01,
2055 3.1671e01, 3.3782e01, 2.4750e01, 2.5024e01, 2.6353e01, 3.1123e01,
2056 2.5024e01, 2.5884e01, 2.8934e01, 2.7135e01, 2.6744e01, 2.6509e01,
2057 2.7135e01, 2.3597e01, 2.4160e01, 2.3413e01, 2.1919e01, 2.0116e01,
2058 1.6487e01, 1.3377e01, 1.0896e01, 8.9532, 6.2399, 4.5290,
2059 3.4047, 2.6360, 2.0917, 1.2460, 8.2418e-01, 5.6986e-01,
2060 4.0682e-01, 3.0251e-01, 2.3146e-01, 1.8009e-01, 1.4169e-01, 8.9704E-02,
2061 5.7876E-02, 2.2214e-01, 3.4866e-01, 6.1463e-01, 8.4375e-01, 8.9953e-01,
2062 9.1348e-01, 8.4973e-01, 9.6329e-01, 1.0151, 1.0021, 1.0460,
2063 1.1486, 1.2452, 1.3279, 1.5411, 1.7463, 1.8867,
2064 1.9286, 1.9594, 1.9236, 1.8509, 1.8150, 1.9067,
2065 1.9923, 2.1228, 2.2224, 2.2414, 2.2105, 2.1139,
2066 2.0202, 1.9316, 1.8489, 1.7821, 1.7214, 1.6606,
2067 1.5968, 1.5550, 1.5052, 1.4753, 1.4444, 1.4116};
2068
2069 // Locate the requested energy in the tables.
2070 // First the photoabsorption cross-section.
2071 int iLow = 0;
2072 int iUp = nPacsEntries - 1;
2073 int iM;
2074 while (iUp - iLow > 1) {
2075 iM = (iUp + iLow) >> 1;
2076 if (e >= xN2[iM]) {
2077 iLow = iM;
2078 } else {
2079 iUp = iM;
2080 }
2081 }
2082
2083 // Linear interpolation.
2084 cs = yN2[iLow] +
2085 (e - xN2[iLow]) * (yN2[iUp] - yN2[iLow]) / (xN2[iUp] - xN2[iLow]);
2086 // Convert from Mbarn to cm2.
2087 cs *= 1.e-18;
2088 eta = 0.;
2089
2090 return true;
2091 }
2092
2093 double a, b, c, d;
2094 if (e < 285.) {
2095 a = -4.03133;
2096 b = 261.0982;
2097 c = -3005.43;
2098 d = 11572.96;
2099 } else if (e < 1740.) {
2100 a = -13.0225;
2101 b = 4303.263;
2102 c = -77622.4;
2103 d = 446724.9;
2104 } else {
2105 a = -1.11677;
2106 b = 3478.699;
2107 c = -48076.5;
2108 d = -364234.;
2109 }
2110
2111 const double y = 12.61 / e;
2112 const double f =
2113 a * pow(y, 2) + b * pow(y, 3) + c * pow(y, 4) + d * pow(y, 5);
2114 // Convert from oscillator strength (per Rydberg) to photoabsorption cs
2115 cs = 8.067283e-18 * f;
2116 eta = 1.;
2117 return true;
2118}
2119}
bool GetPhotoabsorptionCrossSection(const std::string material, const double e, double &cs, double &eta)
Definition: OpticalData.cc:30
bool IsAvailable(const std::string material) const
Definition: OpticalData.cc:10
DoubleAc pow(const DoubleAc &f, double p)
Definition: DoubleAc.cpp:337