42const float kStd1[][5] = {
43 { 3737.84, -0.27, 0.007, 0.774, 0.008 },
44 { 3770.84, -0.265, 0.007, 0.732, 0.007 },
45 { 3803.84, -0.268, 0.007, 0.702, 0.007 },
46 { 3836.84, -0.255, 0.006, 0.665, 0.007 },
47 { 3869.84, -0.25, 0.006, 0.644, 0.006 },
48 { 3902.84, -0.248, 0.006, 0.613, 0.006 },
49 { 3935.84, -0.236, 0.006, 0.589, 0.006 },
50 { 3968.84, -0.244, 0.006, 0.569, 0.006 },
51 { 4001.84, -0.23, 0.005, 0.543, 0.005 },
52 { 4034.84, -0.19, 0.005, 0.517, 0.005 },
53 { 4067.84, -0.2, 0.005, 0.507, 0.005 },
54 { 4100.84, -0.207, 0.005, 0.493, 0.005 },
57 { 4199.84, -0.186, 0.005, 0.444, 0.005 },
58 { 4232.84, -0.162, 0.005, 0.417, 0.005 },
59 { 4265.84, -0.166, 0.005, 0.405, 0.005 },
60 { 4298.84, -0.17, 0.005, 0.39, 0.005 },
61 { 4331.84, -0.163, 0.005, 0.368, 0.005 },
62 { 4364.84, -0.112, 0.005, 0.346, 0.005 },
63 { 4397.84, -0.148, 0.005, 0.34, 0.005 },
64 { 4430.84, -0.145, 0.005, 0.325, 0.005 },
65 { 4463.84, -0.131, 0.005, 0.308, 0.005 },
66 { 4496.84, -0.104, 0.005, 0.285, 0.005 },
67 { 4529.84, -0.118, 0.005, 0.276, 0.005 },
68 { 4562.84, -0.093, 0.005, 0.253, 0.005 },
70 { 4628.84, -0.085, 0.005, 0.236, 0.005 },
71 { 4661.84, -0.072, 0.005, 0.219, 0.005 },
72 { 4694.84, -0.1, 0.005, 0.213, 0.005 },
73 { 4727.84, -0.072, 0.005, 0.191, 0.005 },
74 { 4760.84, -0.082, 0.005, 0.183, 0.005 },
75 { 4793.84, -0.074, 0.005, 0.171, 0.005 },
76 { 4826.84, -0.061, 0.005, 0.16, 0.005 },
77 { 4859.84, -0.057, 0.005, 0.145, 0.005 },
79 { 4925.84, -0.033, 0.005, 0.117, 0.005 },
80 { 4958.84, -0.029, 0.005, 0.099, 0.005 },
81 { 4991.84, -0.028, 0.005, 0.091, 0.005 },
82 { 5024.84, -0.031, 0.005, 0.08, 0.005 },
83 { 5057.84, -0.029, 0.005, 0.07, 0.005 },
84 { 5090.84, -0.021, 0.005, 0.055, 0.005 },
85 { 5123.84, -0.021, 0.005, 0.054, 0.005 },
86 { 5156.84, -0.017, 0.005, 0.036, 0.005 },
87 { 5189.84, -0.012, 0.005, 0.028, 0.005 },
88 { 5222.84, -0.009, 0.005, 0.018, 0.005 },
89 { 5255.84, -0.004, 0.005, 0.008, 0.005 },
90 { 5288.84, 0.002, 0.005, -0.008, 0.005 },
91 { 5321.84, 0.003, 0.005, -0.009, 0.005 },
92 { 5354.84, 0.011, 0.005, -0.025, 0.005 },
93 { 5387.84, 0.011, 0.005, -0.033, 0.005 },
95 { 5453.84, 0.031, 0.005, -0.057, 0.005 },
96 { 5486.84, 0.021, 0.005, -0.068, 0.005 },
97 { 5519.84, 0.028, 0.005, -0.077, 0.005 },
98 { 5552.84, 0.035, 0.005, -0.088, 0.005 },
99 { 5585.84, 0.035, 0.005, -0.092, 0.005 },
100 { 5618.84, 0.048, 0.005, -0.106, 0.005 },
101 { 5651.84, 0.054, 0.005, -0.113, 0.005 },
102 { 5684.84, 0.06, 0.005, -0.118, 0.005 },
103 { 5717.84, 0.066, 0.005, -0.13, 0.005 },
104 { 5750.84, 0.063, 0.005, -0.131, 0.005 },
105 { 5783.84, 0.067, 0.005, -0.136, 0.005 },
106 { 5816.84, 0.063, 0.005, -0.148, 0.005 },
107 { 5849.84, 0.064, 0.005, -0.153, 0.005 },
108 { 5882.84, 0.062, 0.005, -0.162, 0.005 },
109 { 5915.84, 0.081, 0.005, -0.174, 0.005 },
111 { 5981.84, 0.091, 0.006, -0.187, 0.006 },
112 { 6014.84, 0.095, 0.006, -0.193, 0.006 },
113 { 6047.84, 0.094, 0.006, -0.193, 0.006 },
114 { 6080.84, 0.087, 0.006, -0.201, 0.006 },
115 { 6113.84, 0.089, 0.006, -0.21, 0.006 },
116 { 6146.84, 0.103, 0.006, -0.222, 0.006 },
117 { 6179.84, 0.114, 0.006, -0.225, 0.006 },
118 { 6212.84, 0.114, 0.006, -0.23, 0.006 },
119 { 6245.84, 0.101, 0.006, -0.235, 0.006 },
120 { 6278.84, 0.093, 0.006, -0.239, 0.006 },
121 { 6311.84, 0.11, 0.006, -0.247, 0.006 },
122 { 6344.84, 0.119, 0.006, -0.253, 0.006 },
123 { 6377.84, 0.119, 0.006, -0.253, 0.006 },
124 { 6410.84, 0.107, 0.006, -0.257, 0.006 },
125 { 6443.84, 0.113, 0.006, -0.267, 0.006 },
126 { 6476.84, 0.124, 0.006, -0.276, 0.006 },
127 { 6509.84, 0.125, 0.007, -0.277, 0.006 },
128 { 6542.84, 0.111, 0.007, -0.28, 0.007 },
130 { 6608.84, 0.132, 0.007, -0.294, 0.007 },
131 { 6641.84, 0.13, 0.007, -0.295, 0.007 },
132 { 6674.84, 0.118, 0.007, -0.299, 0.007 },
133 { 6707.84, 0.129, 0.007, -0.311, 0.007 },
134 { 6740.84, 0.138, 0.007, -0.316, 0.007 },
135 { 6773.84, 0.134, 0.007, -0.316, 0.007 },
136 { 6806.84, 0.126, 0.007, -0.325, 0.007 },
137 { 6839.84, 0.138, 0.007, -0.325, 0.007 },
139 { 6905.84, 0.15, 0.008, -0.333, 0.008 },
140 { 6938.84, 0.142, 0.007, -0.332, 0.008 },
141 { 0.0, 0.0, 0.0, 0.0, 0.0 }
145const float kStd2[][5] = {
150 { 3868.2, 0.184, 0.008, -0.093, 0.009 },
151 { 3901.2, 0.193, 0.008, -0.089, 0.009 },
152 { 3934.2, 0.182, 0.008, -0.088, 0.009 },
154 { 4000.2, 0.154, 0.007, -0.075, 0.008 },
156 { 4066.2, 0.138, 0.007, -0.061, 0.008 },
160 { 4198.2, 0.131, 0.007, -0.059, 0.007 },
161 { 4231.2, 0.112, 0.007, -0.055, 0.008 },
162 { 4264.2, 0.102, 0.007, -0.049, 0.007 },
163 { 4297.2, 0.101, 0.007, -0.054, 0.007 },
164 { 4330.2, 0.097, 0.007, -0.052, 0.007 },
167 { 4429.2, 0.089, 0.007, -0.046, 0.007 },
168 { 4462.2, 0.088, 0.006, -0.045, 0.007 },
169 { 4495.2, 0.098, 0.006, -0.042, 0.007 },
170 { 4528.2, 0.07, 0.006, -0.037, 0.007 },
171 { 4561.2, 0.062, 0.006, -0.034, 0.007 },
172 { 4594.2, 0.073, 0.006, -0.044, 0.007 },
173 { 4627.2, 0.067, 0.006, -0.04, 0.007 },
174 { 4660.2, 0.055, 0.006, -0.037, 0.007 },
175 { 4693.2, 0.054, 0.006, -0.027, 0.007 },
176 { 4726.2, 0.036, 0.006, -0.024, 0.007 },
177 { 4759.2, 0.044, 0.006, -0.026, 0.007 },
178 { 4792.2, 0.045, 0.006, -0.024, 0.007 },
179 { 4825.2, 0.038, 0.006, -0.027, 0.007 },
180 { 4858.2, 0.04, 0.006, -0.023, 0.007 },
182 { 4924.2, 0.031, 0.006, -0.013, 0.007 },
183 { 4957.2, 0.029, 0.006, -0.013, 0.007 },
184 { 4990.2, 0.021, 0.006, -0.012, 0.007 },
185 { 5023.2, 0.01, 0.006, -0.002, 0.007 },
186 { 5056.2, 0.017, 0.006, -0.003, 0.007 },
187 { 5089.2, 0.019, 0.006, -0.003, 0.007 },
188 { 5122.2, 0.015, 0.006, -0.006, 0.007 },
189 { 5155.2, 0.016, 0.006, -0.004, 0.007 },
190 { 5188.2, 0.007, 0.006, -0.004, 0.007 },
191 { 5221.2, 0.008, 0.006, -0.002, 0.007 },
192 { 5254.2, 0.005, 0.006, 0, 0.007 },
193 { 5287.2, 0.001, 0.006, 0.001, 0.007 },
194 { 5320.2, -0.002, 0.006, 0.006, 0.007 },
195 { 5353.2, -0.002, 0.006, 0.005, 0.007 },
196 { 5386.2, -0.008, 0.006, 0.007, 0.007 },
197 { 5419.2, -0.013, 0.006, 0.007, 0.007 },
198 { 5452.2, -0.014, 0.006, 0.006, 0.007 },
199 { 5485.2, -0.019, 0.006, 0.011, 0.007 },
200 { 5518.2, -0.017, 0.006, 0.007, 0.007 },
201 { 5551.2, -0.02, 0.007, 0.013, 0.007 },
202 { 5584.2, -0.03, 0.007, 0.013, 0.007 },
203 { 5617.2, -0.028, 0.007, 0.012, 0.007 },
204 { 5650.2, -0.034, 0.007, 0.01, 0.007 },
205 { 5683.2, -0.034, 0.007, 0.009, 0.007 },
206 { 5716.2, -0.031, 0.007, 0.011, 0.007 },
208 { 5782.2, -0.031, 0.007, 0.016, 0.007 },
209 { 5815.2, -0.03, 0.007, 0.02, 0.007 },
210 { 5848.2, -0.03, 0.007, 0.005, 0.007 },
211 { 5881.2, -0.044, 0.007, 0.022, 0.007 },
212 { 5914.2, -0.029, 0.007, 0.023, 0.007 },
213 { 5947.2, -0.04, 0.007, 0.01, 0.007 },
214 { 5980.2, -0.037, 0.007, 0.019, 0.007 },
215 { 6013.2, -0.035, 0.007, 0.015, 0.008 },
216 { 6046.2, -0.034, 0.007, 0.019, 0.008 },
217 { 6079.2, -0.037, 0.007, 0.014, 0.008 },
218 { 6112.2, -0.041, 0.007, 0.024, 0.008 },
219 { 6145.2, -0.043, 0.007, 0.02, 0.008 },
220 { 6178.2, -0.044, 0.007, 0.02, 0.008 },
221 { 6211.2, -0.043, 0.007, 0.021, 0.008 },
222 { 6244.2, -0.046, 0.007, 0.025, 0.008 },
223 { 6277.2, -0.055, 0.007, 0.025, 0.008 },
224 { 6310.2, -0.049, 0.008, 0.027, 0.008 },
225 { 6343.2, -0.052, 0.008, 0.02, 0.008 },
226 { 6376.2, -0.048, 0.008, 0.022, 0.008 },
227 { 6409.2, -0.054, 0.008, 0.025, 0.008 },
228 { 6442.2, -0.064, 0.008, 0.028, 0.008 },
229 { 6475.2, -0.068, 0.008, 0.027, 0.009 },
230 { 6508.2, -0.058, 0.008, 0.022, 0.009 },
231 { 6541.2, -0.057, 0.008, 0.029, 0.009 },
233 { 6607.2, -0.068, 0.008, 0.034, 0.009 },
234 { 6640.2, -0.066, 0.008, 0.025, 0.009 },
236 { 6706.2, -0.069, 0.009, 0.028, 0.009 },
237 { 6739.2, -0.07, 0.009, 0.03, 0.009 },
238 { 6772.2, -0.065, 0.009, 0.034, 0.009 },
239 { 6805.2, -0.075, 0.009, 0.034, 0.009 },
240 { 6838.2, -0.079, 0.009, 0.026, 0.009 },
242 { 6904.2, -0.057, 0.009, 0.032, 0.010 },
243 { 6937.2, -0.075, 0.009, 0.034, 0.010 },
244 { 0.0, 0.0, 0.0, 0.0, 0.0 }
248const float kMuse1[][5] = {
249 { 4651.657, -6.732, 0.499, -1.614, 0.500 },
250 { 4701.657, -6.337, 0.477, -1.624, 0.463 },
251 { 4714.157, -6.311, 0.470, -1.569, 0.460 },
252 { 4726.657, -6.309, 0.465, -1.566, 0.465 },
253 { 4739.157, -6.124, 0.475, -1.560, 0.469 },
254 { 4751.657, -6.108, 0.471, -1.503, 0.466 },
255 { 4764.157, -6.118, 0.474, -1.500, 0.472 },
256 { 4776.657, -5.966, 0.468, -1.499, 0.467 },
257 { 4789.157, -5.958, 0.492, -1.481, 0.486 },
258 { 4801.657, -5.961, 0.465, -1.490, 0.463 },
259 { 4814.157, -5.854, 0.460, -1.566, 0.448 },
260 { 4826.657, -5.801, 0.461, -1.491, 0.462 },
261 { 4839.157, -5.807, 0.460, -1.435, 0.462 },
262 { 4851.657, -5.788, 0.450, -1.527, 0.461 },
263 { 4864.157, -5.619, 0.464, -1.503, 0.457 },
264 { 4876.657, -5.591, 0.467, -1.379, 0.470 },
265 { 4889.157, -5.624, 0.475, -1.426, 0.475 },
266 { 4901.657, -5.432, 0.450, -1.418, 0.452 },
267 { 4914.157, -5.390, 0.452, -1.420, 0.459 },
268 { 4926.657, -5.361, 0.462, -1.262, 0.463 },
269 { 4939.157, -5.375, 0.466, -1.313, 0.439 },
270 { 4951.657, -5.170, 0.443, -1.384, 0.448 },
271 { 4964.157, -5.165, 0.451, -1.295, 0.452 },
272 { 4976.657, -5.172, 0.456, -1.295, 0.463 },
273 { 4989.157, -5.153, 0.469, -1.317, 0.469 },
274 { 5001.657, -4.976, 0.464, -1.261, 0.460 },
275 { 5014.157, -4.978, 0.486, -1.335, 0.487 },
276 { 5026.657, -4.967, 0.476, -1.231, 0.476 },
277 { 5039.157, -4.959, 0.487, -1.268, 0.497 },
278 { 5051.657, -4.818, 0.475, -1.274, 0.496 },
279 { 5064.157, -4.807, 0.485, -1.209, 0.483 },
280 { 5076.657, -4.815, 0.487, -1.274, 0.488 },
281 { 5089.157, -4.743, 0.497, -1.251, 0.487 },
282 { 5101.657, -4.609, 0.501, -1.177, 0.505 },
283 { 5114.157, -4.612, 0.512, -1.184, 0.510 },
284 { 5126.657, -4.612, 0.521, -1.105, 0.530 },
285 { 5139.157, -4.569, 0.500, -1.070, 0.505 },
286 { 5151.657, -4.415, 0.539, -1.065, 0.546 },
287 { 5164.157, -4.438, 0.494, -1.103, 0.517 },
288 { 5176.657, -4.376, 0.597, -1.017, 0.605 },
289 { 5189.157, -4.401, 0.536, -1.085, 0.543 },
290 { 5201.657, -4.233, 0.505, -1.093, 0.503 },
291 { 5214.157, -4.222, 0.492, -1.137, 0.481 },
292 { 5226.657, -4.233, 0.470, -1.220, 0.497 },
293 { 5251.657, -4.020, 0.456, -1.030, 0.440 },
294 { 5264.157, -4.027, 0.477, -1.009, 0.447 },
295 { 5289.157, -4.002, 0.439, -0.993, 0.440 },
296 { 5301.657, -4.005, 0.455, -1.096, 0.462 },
297 { 5314.157, -3.823, 0.423, -1.055, 0.460 },
298 { 5326.657, -3.859, 0.472, -1.126, 0.441 },
299 { 5339.157, -3.803, 0.439, -0.994, 0.446 },
300 { 5351.657, -3.786, 0.441, -0.922, 0.455 },
301 { 5364.157, -3.585, 0.432, -0.843, 0.440 },
302 { 5376.657, -3.569, 0.450, -0.809, 0.449 },
303 { 5389.157, -3.584, 0.435, -0.862, 0.444 },
304 { 5401.657, -3.567, 0.456, -0.829, 0.452 },
305 { 5414.157, -3.573, 0.451, -0.847, 0.464 },
306 { 5426.657, -3.427, 0.437, -0.884, 0.450 },
307 { 5439.157, -3.412, 0.444, -0.896, 0.453 },
308 { 5451.657, -3.383, 0.444, -0.833, 0.445 },
309 { 5464.157, -3.381, 0.438, -0.829, 0.448 },
310 { 5476.657, -3.393, 0.441, -0.862, 0.450 },
311 { 5489.157, -3.205, 0.441, -0.778, 0.443 },
312 { 5501.657, -3.196, 0.444, -0.766, 0.454 },
313 { 5514.157, -3.175, 0.450, -0.753, 0.454 },
314 { 5526.657, -3.184, 0.439, -0.755, 0.443 },
315 { 5539.157, -3.206, 0.436, -0.837, 0.433 },
316 { 5551.657, -3.009, 0.432, -0.815, 0.438 },
317 { 5564.157, -3.027, 0.436, -0.771, 0.494 },
318 { 5589.157, -3.008, 0.456, -0.748, 0.457 },
319 { 5601.657, -3.003, 0.443, -0.855, 0.453 },
320 { 5614.157, -2.964, 0.427, -0.743, 0.435 },
321 { 5626.657, -2.805, 0.433, -0.815, 0.455 },
322 { 5639.157, -2.767, 0.429, -0.525, 0.444 },
323 { 5651.657, -2.765, 0.429, -0.644, 0.436 },
324 { 5664.157, -2.775, 0.436, -0.585, 0.466 },
325 { 5676.657, -2.757, 0.429, -0.639, 0.438 },
326 { 5689.157, -2.561, 0.435, -0.667, 0.440 },
327 { 5701.657, -2.561, 0.434, -0.625, 0.443 },
328 { 5714.157, -2.563, 0.440, -0.687, 0.446 },
329 { 5726.657, -2.570, 0.430, -0.683, 0.435 },
330 { 5739.157, -2.567, 0.429, -0.671, 0.435 },
331 { 5751.657, -2.572, 0.425, -0.672, 0.431 },
332 { 5764.157, -2.395, 0.424, -0.587, 0.435 },
333 { 5776.657, -2.386, 0.420, -0.560, 0.435 },
334 { 5789.157, -2.412, 0.428, -0.573, 0.440 },
335 { 5801.657, -2.419, 0.421, -0.577, 0.435 },
336 { 5814.157, -2.431, 0.424, -0.556, 0.438 },
337 { 5826.657, -2.412, 0.420, -0.582, 0.430 },
338 { 5839.157, -2.207, 0.422, -0.567, 0.432 },
339 { 5851.657, -2.201, 0.423, -0.583, 0.430 },
340 { 5876.657, -2.221, 0.424, -0.601, 0.432 },
341 { 5889.157, -2.586, 0.527, -0.440, 0.536 },
342 { 5926.657, -1.979, 0.429, -0.421, 0.425 },
343 { 5939.157, -1.985, 0.421, -0.436, 0.438 },
344 { 5951.657, -2.039, 0.410, -0.523, 0.426 },
345 { 5964.157, -2.010, 0.422, -0.459, 0.436 },
346 { 5989.157, -2.006, 0.422, -0.445, 0.431 },
347 { 6001.657, -1.809, 0.428, -0.420, 0.425 },
348 { 6014.157, -1.850, 0.425, -0.506, 0.435 },
349 { 6026.657, -1.828, 0.430, -0.498, 0.433 },
350 { 6039.157, -1.823, 0.418, -0.457, 0.432 },
351 { 6051.657, -1.852, 0.418, -0.483, 0.430 },
352 { 6064.157, -1.846, 0.419, -0.466, 0.430 },
353 { 6076.657, -1.791, 0.416, -0.488, 0.430 },
354 { 6089.157, -1.657, 0.421, -0.480, 0.437 },
355 { 6101.657, -1.676, 0.421, -0.451, 0.447 },
356 { 6114.157, -1.667, 0.420, -0.370, 0.431 },
357 { 6126.657, -1.677, 0.431, -0.399, 0.444 },
358 { 6139.157, -1.685, 0.431, -0.329, 0.453 },
359 { 6151.657, -1.647, 0.413, -0.345, 0.444 },
360 { 6164.157, -1.685, 0.452, -0.413, 0.464 },
361 { 6176.657, -1.455, 0.423, -0.353, 0.455 },
362 { 6189.157, -1.447, 0.412, -0.396, 0.436 },
363 { 6201.657, -1.527, 0.411, -0.336, 0.489 },
364 { 6214.157, -1.424, 0.425, -0.327, 0.408 },
365 { 6226.657, -1.486, 0.416, -0.397, 0.438 },
366 { 6239.157, -1.464, 0.414, -0.487, 0.460 },
367 { 6251.657, -1.485, 0.418, -0.398, 0.441 },
368 { 6264.157, -1.210, 0.427, -0.405, 0.401 },
369 { 6276.657, -1.233, 0.425, -0.428, 0.413 },
370 { 6314.157, -1.271, 0.414, -0.253, 0.434 },
371 { 6326.657, -1.217, 0.419, -0.284, 0.404 },
372 { 6339.157, -1.262, 0.419, -0.244, 0.437 },
373 { 6351.657, -1.240, 0.410, -0.348, 0.422 },
374 { 6376.657, -1.082, 0.412, -0.238, 0.427 },
375 { 6389.157, -1.060, 0.415, -0.274, 0.423 },
376 { 6401.657, -1.076, 0.420, -0.238, 0.427 },
377 { 6414.157, -1.049, 0.414, -0.276, 0.406 },
378 { 6426.657, -1.060, 0.415, -0.241, 0.431 },
379 { 6439.157, -1.086, 0.415, -0.302, 0.425 },
380 { 6451.657, -1.054, 0.412, -0.266, 0.426 },
381 { 6464.157, -0.887, 0.427, -0.457, 0.388 },
382 { 6476.657, -0.868, 0.414, -0.334, 0.399 },
383 { 6489.157, -0.915, 0.414, -0.307, 0.425 },
384 { 6514.157, -0.901, 0.412, -0.020, 0.443 },
385 { 6526.657, -0.910, 0.408, -0.226, 0.420 },
386 { 6539.157, -0.910, 0.412, -0.088, 0.421 },
387 { 6589.157, -0.713, 0.406, -0.224, 0.425 },
388 { 6614.157, -0.729, 0.411, -0.213, 0.425 },
389 { 6626.657, -0.748, 0.410, -0.268, 0.425 },
390 { 6639.157, -0.711, 0.405, -0.239, 0.423 },
391 { 6651.657, -0.715, 0.408, -0.204, 0.418 },
392 { 6664.157, -0.740, 0.409, -0.204, 0.416 },
393 { 6676.657, -0.708, 0.406, -0.185, 0.419 },
394 { 6689.157, -0.531, 0.406, -0.276, 0.421 },
395 { 6701.657, -0.528, 0.407, -0.163, 0.422 },
396 { 6714.157, -0.544, 0.405, -0.261, 0.425 },
397 { 6726.657, -0.532, 0.408, -0.208, 0.418 },
398 { 6739.157, -0.561, 0.400, -0.265, 0.419 },
399 { 6751.657, -0.496, 0.403, -0.108, 0.420 },
400 { 6764.157, -0.512, 0.403, -0.159, 0.420 },
401 { 6776.657, -0.522, 0.404, -0.127, 0.421 },
402 { 6789.157, -0.521, 0.406, -0.047, 0.412 },
403 { 6801.657, -0.417, 0.401, -0.103, 0.417 },
404 { 6814.157, -0.316, 0.396, -0.105, 0.414 },
405 { 6826.657, -0.346, 0.400, -0.218, 0.446 },
406 { 6839.157, -0.329, 0.396, -0.110, 0.422 },
407 { 6851.657, -0.318, 0.404, -0.106, 0.406 },
408 { 6876.657, -0.339, 0.436, -0.111, 0.467 },
409 { 6889.157, -0.287, 0.407, 0.134, 0.403 },
410 { 6901.657, -0.296, 0.422, 0.090, 0.383 },
411 { 6914.157, -0.428, 0.408, 0.104, 0.441 },
412 { 6926.657, -0.344, 0.396, -0.160, 0.426 },
413 { 6939.157, -0.129, 0.408, 0.002, 0.384 },
414 { 6951.657, -0.144, 0.401, -0.225, 0.445 },
415 { 6964.157, -0.136, 0.396, -0.167, 0.414 },
416 { 6989.157, -0.171, 0.397, -0.116, 0.418 },
417 { 7001.657, -0.192, 0.395, -0.285, 0.431 },
418 { 7014.157, -0.158, 0.396, -0.017, 0.418 },
419 { 7026.657, -0.147, 0.400, -0.007, 0.412 },
420 { 7039.157, -0.110, 0.397, -0.222, 0.420 },
421 { 7051.657, -0.161, 0.397, 0.015, 0.416 },
422 { 7064.157, 0.017, 0.403, -0.030, 0.426 },
423 { 7076.657, 0.020, 0.402, -0.184, 0.409 },
424 { 7089.157, 0.000, 0.407, 0.197, 0.409 },
425 { 7101.657, -0.000, 0.400, -0.000, 0.418 },
426 { 7114.157, 0.009, 0.398, -0.043, 0.420 },
427 { 7126.657, 0.001, 0.400, -0.128, 0.391 },
428 { 7139.157, 0.016, 0.402, -0.158, 0.409 },
429 { 7151.657, 0.037, 0.405, 0.096, 0.419 },
430 { 7164.157, 0.007, 0.403, -0.173, 0.411 },
431 { 7176.657, 0.031, 0.413, 0.118, 0.419 },
432 { 7189.157, 0.048, 0.418, 0.088, 0.425 },
433 { 7201.657, 0.044, 0.406, 0.134, 0.415 },
434 { 7214.157, 0.230, 0.401, -0.061, 0.413 },
435 { 7226.657, 0.233, 0.403, -0.050, 0.428 },
436 { 7264.157, 0.236, 0.400, 0.022, 0.413 },
437 { 7351.657, 0.180, 0.398, 0.112, 0.406 },
438 { 7364.157, 0.351, 0.397, -0.049, 0.411 },
439 { 7376.657, 0.378, 0.394, 0.044, 0.407 },
440 { 7389.157, 0.438, 0.398, 0.112, 0.403 },
441 { 7414.157, 0.437, 0.392, 0.068, 0.416 },
442 { 7426.657, 0.431, 0.398, 0.101, 0.390 },
443 { 7451.657, 0.382, 0.392, 0.048, 0.411 },
444 { 7464.157, 0.467, 0.390, 0.189, 0.420 },
445 { 7476.657, 0.435, 0.391, 0.058, 0.405 },
446 { 7489.157, 0.390, 0.391, 0.067, 0.416 },
447 { 7501.657, 0.399, 0.392, 0.033, 0.408 },
448 { 7514.157, 0.398, 0.391, 0.048, 0.414 },
449 { 7526.657, 0.541, 0.387, -0.125, 0.423 },
450 { 7539.157, 0.604, 0.394, 0.064, 0.400 },
451 { 7551.657, 0.576, 0.389, 0.042, 0.407 },
452 { 7564.157, 0.595, 0.390, 0.095, 0.405 },
453 { 7576.657, 0.600, 0.392, 0.037, 0.410 },
454 { 7589.157, 0.580, 0.394, 0.087, 0.413 },
455 { 7601.657, 0.578, 0.613, 0.136, 0.693 },
456 { 7626.657, 0.518, 0.515, 0.096, 0.794 },
457 { 7639.157, 0.581, 0.427, 0.104, 0.405 },
458 { 7664.157, 0.564, 0.404, 0.054, 0.358 },
459 { 7676.657, 0.586, 0.406, 0.148, 0.416 },
460 { 7689.157, 0.578, 0.405, 0.115, 0.376 },
461 { 7701.657, 0.787, 0.404, -0.034, 0.395 },
462 { 7764.157, 0.743, 0.393, 0.126, 0.406 },
463 { 7776.657, 0.747, 0.395, -0.004, 0.408 },
464 { 7801.657, 0.714, 0.396, -0.083, 0.399 },
465 { 7814.157, 0.722, 0.401, -0.079, 0.396 },
466 { 7826.657, 0.764, 0.396, -0.054, 0.420 },
467 { 7864.157, 0.770, 0.393, 0.222, 0.406 },
468 { 7889.157, 0.926, 0.399, -0.081, 0.457 },
469 { 7939.157, 0.953, 0.401, 0.137, 0.408 },
470 { 7951.657, 0.910, 0.401, -0.054, 0.399 },
471 { 7989.157, 0.921, 0.404, 0.021, 0.394 },
472 { 8001.657, 0.978, 0.400, 0.180, 0.410 },
473 { 8039.157, 0.932, 0.401, 0.067, 0.399 },
474 { 8051.657, 0.912, 0.407, 0.223, 0.451 },
475 { 8076.657, 0.981, 0.400, 0.305, 0.402 },
476 { 8089.157, 1.162, 0.403, 0.280, 0.413 },
477 { 8101.657, 1.236, 0.408, 0.405, 0.375 },
478 { 8114.157, 1.177, 0.407, 0.304, 0.411 },
479 { 8126.657, 1.150, 0.407, 0.217, 0.406 },
480 { 8139.157, 1.179, 0.398, 0.336, 0.410 },
481 { 8151.657, 1.178, 0.411, 0.281, 0.426 },
482 { 8164.157, 1.138, 0.429, 0.261, 0.427 },
483 { 8176.657, 1.188, 0.415, 0.255, 0.423 },
484 { 8189.157, 1.176, 0.410, 0.028, 0.451 },
485 { 8201.657, 1.173, 0.426, 0.267, 0.424 },
486 { 8214.157, 1.153, 0.415, 0.329, 0.419 },
487 { 8226.657, 1.172, 0.410, 0.223, 0.442 },
488 { 8239.157, 1.205, 0.404, 0.125, 0.420 },
489 { 8251.657, 1.181, 0.406, 0.243, 0.414 },
490 { 8264.157, 1.167, 0.406, 0.276, 0.412 },
491 { 8301.657, 1.332, 0.402, 0.311, 0.409 },
492 { 8314.157, 1.367, 0.404, 0.247, 0.414 },
493 { 8326.657, 1.366, 0.404, 0.238, 0.417 },
494 { 8339.157, 1.356, 0.405, 0.033, 0.429 },
495 { 8376.657, 1.348, 0.401, 0.386, 0.421 },
496 { 8389.157, 1.347, 0.410, 0.055, 0.427 },
497 { 8439.157, 1.367, 0.412, 0.248, 0.423 },
498 { 8476.657, 1.389, 0.401, 0.152, 0.417 },
499 { 8489.157, 1.375, 0.402, 0.216, 0.409 },
500 { 8514.157, 1.380, 0.401, 0.250, 0.413 },
501 { 8526.657, 1.363, 0.403, 0.343, 0.415 },
502 { 8551.657, 1.576, 0.412, 0.306, 0.425 },
503 { 8564.157, 1.571, 0.398, 0.346, 0.412 },
504 { 8576.657, 1.550, 0.401, 0.322, 0.411 },
505 { 8589.157, 1.605, 0.408, 0.393, 0.402 },
506 { 8601.657, 1.579, 0.400, 0.307, 0.409 },
507 { 8614.157, 1.605, 0.402, 0.323, 0.406 },
508 { 8639.157, 1.577, 0.409, 0.369, 0.397 },
509 { 8689.157, 1.603, 0.411, 0.226, 0.392 },
510 { 8701.657, 1.618, 0.412, 0.125, 0.394 },
511 { 8714.157, 1.601, 0.401, 0.315, 0.409 },
512 { 8726.657, 1.590, 0.396, 0.467, 0.426 },
513 { 8739.157, 1.608, 0.407, 0.358, 0.407 },
514 { 8751.657, 1.596, 0.394, 0.370, 0.426 },
515 { 8776.657, 1.320, 0.351, 0.323, 0.388 },
516 { 8801.657, 1.820, 0.402, 0.389, 0.424 },
517 { 8814.157, 1.832, 0.404, 0.373, 0.418 },
518 { 8876.657, 1.861, 0.404, 0.378, 0.417 },
519 { 8889.157, 1.855, 0.403, 0.247, 0.418 },
520 { 8914.157, 1.873, 0.403, 0.334, 0.409 },
521 { 8926.657, 1.855, 0.412, 0.313, 0.383 },
522 { 8939.157, 1.894, 0.404, 0.218, 0.423 },
523 { 8951.657, 1.868, 0.412, 0.404, 0.425 },
524 { 8964.157, 1.876, 0.431, 0.237, 0.432 },
525 { 8976.657, 1.888, 0.407, 0.547, 0.421 },
526 { 9014.157, 1.889, 0.422, 0.361, 0.429 },
527 { 9026.657, 1.845, 0.425, 0.307, 0.437 },
528 { 9076.657, 2.072, 0.417, 0.343, 0.427 },
529 { 9101.657, 1.878, 0.459, 0.380, 0.345 },
530 { 9114.157, 2.075, 0.412, 0.462, 0.424 },
531 { 9126.657, 2.076, 0.412, 0.462, 0.425 },
532 { 9139.157, 2.064, 0.418, 0.530, 0.431 },
533 { 9164.157, 2.058, 0.414, 0.460, 0.421 },
534 { 9176.657, 2.057, 0.421, 0.489, 0.440 },
535 { 9189.157, 2.048, 0.412, 0.464, 0.426 },
536 { 9201.657, 2.038, 0.408, 0.469, 0.422 },
537 { 9214.157, 2.038, 0.418, 0.482, 0.433 },
538 { 9226.657, 2.022, 0.410, 0.460, 0.423 },
539 { 9239.157, 2.007, 0.414, 0.445, 0.426 },
540 { 9251.657, 2.011, 0.413, 0.467, 0.426 },
541 { 9264.157, 2.007, 0.419, 0.464, 0.433 },
542 { 9276.657, 2.004, 0.415, 0.487, 0.428 },
543 { 9289.157, 1.975, 0.412, 0.464, 0.424 },
544 { 9301.657, 1.950, 0.435, 0.311, 0.455 },
545 { 0.0, 0.0, 0.0, 0.0, 0.0 }
549const float kStd1Ref = 5275.644,
554hdrl_airmass_approx typeAirmassAprox = HDRL_AIRMASS_APPROX_HARDIE;
563static cpl_error_code hdrl_test_dar_correct(
void)
571 cpl_propertylist *header1 = cpl_propertylist_new();
572 cpl_propertylist_append_double(header1,
"RA", 122.994945);
573 cpl_propertylist_append_double(header1,
"DEC", 74.95304);
574 cpl_propertylist_append_double(header1,
"LST", 25407.072748);
575 cpl_propertylist_append_double(header1,
"EXPTIME", 120.);
576 cpl_propertylist_append_double(header1,
"ESO TEL GEOLAT", 37.2236);
577 cpl_propertylist_append_double(header1,
"ESO TEL AIRM START", 1.2784545043);
578 cpl_propertylist_append_double(header1,
"ESO TEL AIRM END", 1.2776009017);
580 cpl_propertylist *header2 = cpl_propertylist_new();
581 cpl_propertylist_append_double(header2,
"RA", 238.071555);
582 cpl_propertylist_append_double(header2,
"DEC", 32.92533);
583 cpl_propertylist_append_double(header2,
"LST", 60515.584209);
584 cpl_propertylist_append_double(header2,
"EXPTIME", 300.);
585 cpl_propertylist_append_double(header2,
"ESO TEL GEOLAT", 37.2236);
586 cpl_propertylist_append_double(header2,
"ESO TEL AIRM START", 1.0233752603);
587 cpl_propertylist_append_double(header2,
"ESO TEL AIRM END", 1.02725831881);
589 cpl_propertylist *header3 = cpl_propertylist_new();
590 cpl_propertylist_append_double(header3,
"RA", 0.125);
591 cpl_propertylist_append_double(header3,
"DEC", -30.);
592 cpl_propertylist_append_double(header3,
"LST", 69446.2765265328);
593 cpl_propertylist_append_double(header3,
"EXPTIME", 3600.);
594 cpl_propertylist_append_double(header3,
"ESO TEL GEOLAT", -24.625278);
595 cpl_propertylist_append_double(header3,
"ESO TEL AIRM START", 2.14734965358319);
596 cpl_propertylist_append_double(header3,
"ESO TEL AIRM END", 1.5383756343353);
601 cpl_propertylist *plWCS = cpl_propertylist_new();
602 cpl_propertylist_append_string( plWCS,
"CTYPE1",
"RA---TAN" );
603 cpl_propertylist_append_string( plWCS,
"CTYPE2",
"DEC--TAN" );
604 cpl_propertylist_append_double( plWCS,
"CRVAL1", 30.0 );
605 cpl_propertylist_append_double( plWCS,
"CRVAL2", 12.0 );
606 cpl_propertylist_append_double( plWCS,
"CRPIX1", 8. );
607 cpl_propertylist_append_double( plWCS,
"CRPIX2", 8. );
608 cpl_propertylist_append_double( plWCS,
"CD1_1", -0.2 /3600. );
609 cpl_propertylist_append_double( plWCS,
"CD1_2", 0. );
610 cpl_propertylist_append_double( plWCS,
"CD2_2", 0.2 /3600. );
611 cpl_propertylist_append_double( plWCS,
"CD2_1", 0. );
612 cpl_propertylist_append_string( plWCS,
"CUNIT1",
"deg" );
613 cpl_propertylist_append_string( plWCS,
"CUNIT2",
"deg" );
614 cpl_propertylist_append_int( plWCS,
"WCSAXES", 2 );
615 cpl_wcs *wcs = cpl_wcs_new_from_propertylist(plWCS);
623 while (kStd1[ind][0] > 1000. && ind - 1 < NMAX) {
626 cpl_vector *lambdaIn1 = cpl_vector_new(ind);
627 cpl_vector *xShift1 = cpl_vector_new(ind);
628 cpl_vector *yShift1 = cpl_vector_new(ind);
629 cpl_vector *xShift1Err = cpl_vector_new(ind);
630 cpl_vector *yShift1Err = cpl_vector_new(ind);
631 cpl_vector *xCorrect1 = cpl_vector_new(ind);
632 cpl_vector *yCorrect1 = cpl_vector_new(ind);
634 while (kStd1[ind][0] > 1000. && ind - 1 < NMAX) {
635 cpl_vector_set(lambdaIn1, ind, kStd1[ind][0]);
642 while (kStd2[ind][0] > 1000. && ind - 1 < NMAX) {
645 cpl_vector *lambdaIn2 = cpl_vector_new(ind);
646 cpl_vector *xShift2 = cpl_vector_new(ind);
647 cpl_vector *yShift2 = cpl_vector_new(ind);
648 cpl_vector *xShift2Err = cpl_vector_new(ind);
649 cpl_vector *yShift2Err = cpl_vector_new(ind);
650 cpl_vector *xCorrect2 = cpl_vector_new(ind);
651 cpl_vector *yCorrect2 = cpl_vector_new(ind);
653 cpl_vector *xShift4 = cpl_vector_new(ind);
654 cpl_vector *xShift5 = cpl_vector_new(ind);
655 cpl_vector *xShift6 = cpl_vector_new(ind);
656 cpl_vector *xShift7 = cpl_vector_new(ind);
657 cpl_vector *xShift8 = cpl_vector_new(ind);
659 cpl_vector *yShift4 = cpl_vector_new(ind);
660 cpl_vector *yShift5 = cpl_vector_new(ind);
661 cpl_vector *yShift6 = cpl_vector_new(ind);
662 cpl_vector *yShift7 = cpl_vector_new(ind);
663 cpl_vector *yShift8 = cpl_vector_new(ind);
665 cpl_vector *xShift4Err = cpl_vector_new(ind);
666 cpl_vector *xShift5Err = cpl_vector_new(ind);
667 cpl_vector *xShift6Err = cpl_vector_new(ind);
668 cpl_vector *xShift7Err = cpl_vector_new(ind);
669 cpl_vector *xShift8Err = cpl_vector_new(ind);
671 cpl_vector *yShift4Err = cpl_vector_new(ind);
672 cpl_vector *yShift5Err = cpl_vector_new(ind);
673 cpl_vector *yShift6Err = cpl_vector_new(ind);
674 cpl_vector *yShift7Err = cpl_vector_new(ind);
675 cpl_vector *yShift8Err = cpl_vector_new(ind);
678 while (kStd2[ind][0] > 1000. && ind - 1 < NMAX) {
679 cpl_vector_set(lambdaIn2, ind, kStd2[ind][0]);
686 while (kMuse1[ind][0] > 1000. && ind - 1 < NMAX) {
689 cpl_vector *lambdaIn3 = cpl_vector_new(ind);
690 cpl_vector *xShift3 = cpl_vector_new(ind);
691 cpl_vector *yShift3 = cpl_vector_new(ind);
692 cpl_vector *xShift3Err = cpl_vector_new(ind);
693 cpl_vector *yShift3Err = cpl_vector_new(ind);
694 cpl_vector *xCorrect3 = cpl_vector_new(ind);
695 cpl_vector *yCorrect3 = cpl_vector_new(ind);
697 while (kMuse1[ind][0] > 1000. && ind - 1 < NMAX) {
698 cpl_vector_set(lambdaIn3, ind, kMuse1[ind][0]);
706 double deltaAirmass = 1e-4;
708 double lambdaRefErr = delta;
709 double parangErr = delta;
710 double posangErr = delta;
711 double tempErr = delta;
712 double rhumErr = delta;
713 double presErr = delta;
716 cpl_errorstate prestate;
719 hdrl_value ra1 = {cpl_propertylist_get_double(header1,
"RA" ), 0.};
720 hdrl_value dec1 = {cpl_propertylist_get_double(header1,
"DEC" ), 0.};
721 hdrl_value lst1 = {cpl_propertylist_get_double(header1,
"LST" ), 0.};
722 hdrl_value exptime1 = {cpl_propertylist_get_double(header1,
"EXPTIME" ), 0.};
723 hdrl_value geolat1 = {cpl_propertylist_get_double(header1,
"ESO TEL GEOLAT" ), 0.};
725 ra1.error = deltaAirmass * fabs(ra1.data);
726 dec1.error = deltaAirmass * fabs(dec1.data);
727 lst1.error = deltaAirmass * fabs(lst1.data);
728 exptime1.error = deltaAirmass * fabs(exptime1.data);
729 geolat1.error = deltaAirmass * fabs(geolat1.data);
731 hdrl_value airmass1 =
hdrl_utils_airmass(ra1, dec1, lst1, exptime1, geolat1, typeAirmassAprox);
734 (hdrl_value){ airmass1.data, airmass1.error},
735 (hdrl_value){ -157.90507882793, parangErr * fabs(-157.90507882793)},
736 (hdrl_value){ 0., posangErr * fabs(0.) +posangErr},
737 (hdrl_value){ -6.2, tempErr * fabs(-6.2)},
738 (hdrl_value){ 65., rhumErr * fabs(65.)},
739 (hdrl_value){ 768.4, presErr * fabs(768.4)},
743 hdrl_value ra2 = {cpl_propertylist_get_double(header2,
"RA" ), 0.};
744 hdrl_value dec2 = {cpl_propertylist_get_double(header2,
"DEC" ), 0.};
745 hdrl_value lst2 = {cpl_propertylist_get_double(header2,
"LST" ), 0.};
746 hdrl_value exptime2 = {cpl_propertylist_get_double(header2,
"EXPTIME" ), 0.};
747 hdrl_value geolat2 = {cpl_propertylist_get_double(header2,
"ESO TEL GEOLAT" ), 0.};
749 ra2.error = deltaAirmass * fabs(ra2.data);
750 dec2.error = deltaAirmass * fabs(dec2.data);
751 lst2.error = deltaAirmass * fabs(lst2.data);
752 exptime2.error = deltaAirmass * fabs(exptime2.data);
753 geolat2.error = deltaAirmass * fabs(geolat2.data);
755 hdrl_value airmass2 =
hdrl_utils_airmass(ra2, dec2, lst2, exptime2, geolat2, typeAirmassAprox);
758 (hdrl_value){ airmass2.data, airmass2.error},
759 (hdrl_value){ 65.577407, parangErr * fabs(65.577407)},
760 (hdrl_value){ 0., posangErr * fabs(0.) + posangErr},
761 (hdrl_value){ -5.7, tempErr * fabs(-5.7)},
762 (hdrl_value){ 81., rhumErr * fabs(81.)},
763 (hdrl_value){ 768.4, presErr * fabs(768.4)},
768 hdrl_value ra3 = {cpl_propertylist_get_double(header3,
"RA" ), 0.};
769 hdrl_value dec3 = {cpl_propertylist_get_double(header3,
"DEC" ), 0.};
770 hdrl_value lst3 = {cpl_propertylist_get_double(header3,
"LST" ), 0.};
771 hdrl_value exptime3 = {cpl_propertylist_get_double(header3,
"EXPTIME" ), 0.};
772 hdrl_value geolat3 = {cpl_propertylist_get_double(header3,
"ESO TEL GEOLAT" ), 0.};
774 ra3.error = deltaAirmass * fabs(ra3.data);
775 dec3.error = deltaAirmass * fabs(dec3.data);
776 lst3.error = deltaAirmass * fabs(lst3.data);
777 exptime3.error = deltaAirmass * fabs(exptime3.data);
778 geolat3.error = deltaAirmass * fabs(geolat3.data);
780 hdrl_value airmass3 =
hdrl_utils_airmass(ra3, dec3, lst3, exptime3, geolat3, typeAirmassAprox);
783 (hdrl_value){ airmass3.data, airmass3.error},
784 (hdrl_value){ -100.978115969, parangErr * fabs(-100.978115969)},
785 (hdrl_value){ 0., posangErr * fabs(0.) + posangErr},
786 (hdrl_value){ 10., tempErr * fabs(10.)},
787 (hdrl_value){ 10., rhumErr * fabs(10.)},
788 (hdrl_value){ 775., presErr * fabs(775.)},
794 cpl_propertylist *header = cpl_propertylist_new();
796 const char *skeys[2] = {
"CTYPE1",
"CTYPE2"};
797 const char *svals[2] = {
"RA---ZPN",
"DEC--ZPN"};
798 for (
int i = 0; i < 2; i++) {
799 cpl_propertylist_append_string(header,skeys[i],svals[i]);
802 const char *dkeys[13] = {
"CRVAL1",
"CRVAL2",
"CRPIX1",
"CRPIX2",
803 "CD1_1",
"CD1_2",
"CD2_1",
"CD2_2",
"PV2_1",
804 "PV2_2",
"PV2_3",
"PV2_4",
"PV2_5"};
805 const double dvals[13] = {5.57368333333, -72.0576388889, 5401.6, 6860.8,
806 5.81347849634012E-21, 9.49444444444444E-05,
807 -9.49444444444444E-05, -5.81347849634012E-21,
808 1.0, 0.0, 42.0, 0.0, 0.0};
809 for (
int i = 0; i < 13; i++) {
810 cpl_propertylist_append_double(header,dkeys[i],dvals[i]);
813 const char *ikeys[3] = {
"NAXIS",
"NAXIS1",
"NAXIS2"};
814 const int ivals[3] = {2, 2048, 2048};
815 for (
int i = 0; i < 3; i++) {
816 cpl_propertylist_append_int(header,ikeys[i],ivals[i]);
820 cpl_wcs *wcsFake = cpl_wcs_new_from_propertylist(header);
823 double xscale, yscale;
824 cpl_test(hdrl_dar_wcs_get_scales(wcsFake, &xscale, &yscale) == CPL_ERROR_NONE);
826 cpl_propertylist_delete(header);
827 cpl_wcs_delete(wcsFake);
834 (hdrl_value){-1.,0.},
835 (hdrl_value){-1.,0.},
836 (hdrl_value){-1.,0.},
837 (hdrl_value){-1.,0.},
838 (hdrl_value){-1.,0.},
843 (hdrl_value){kStd1Ref, lambdaRefErr * kStd1Ref},
846 xShift1Err, yShift1Err);
847 cpl_test_error(CPL_ERROR_NULL_INPUT);
851 (hdrl_value){kStd1Ref, lambdaRefErr * kStd1Ref},
854 xShift1Err, yShift1Err);
855 cpl_test_error(CPL_ERROR_NULL_INPUT);
859 (hdrl_value){kStd1Ref, lambdaRefErr * kStd1Ref},
863 cpl_test_error(CPL_ERROR_NULL_INPUT);
869 cpl_vector *lambdaIn = cpl_vector_new(1);
870 cpl_vector_set(lambdaIn, 0, NAN);
872 (hdrl_value){kStd1Ref, lambdaRefErr * kStd1Ref},
875 xShift1Err, yShift1Err);
877 cpl_vector_delete(lambdaIn);
882 prestate = cpl_errorstate_get();
884 (hdrl_value){kStd1Ref, lambdaRefErr * kStd1Ref},
887 xShift1Err, yShift1Err)
889 cpl_test(cpl_errorstate_is_equal(prestate) == CPL_TRUE);
891 prestate = cpl_errorstate_get();
893 (hdrl_value){kStd2Ref, lambdaRefErr * kStd2Ref},
896 xShift2Err, yShift2Err)
898 cpl_test(cpl_errorstate_is_equal(prestate) == CPL_TRUE);
900 prestate = cpl_errorstate_get();
902 (hdrl_value){kMuse1Ref, lambdaRefErr * kMuse1Ref},
905 xShift3Err, yShift3Err)
907 cpl_test(cpl_errorstate_is_equal(prestate) == CPL_TRUE);
913 double size1 = cpl_vector_get_size(lambdaIn1);
914 cpl_vector_set_size(xCorrect1, size1);
915 cpl_vector_set_size(yCorrect1, size1);
916 for (cpl_size i = 0; i < cpl_vector_get_size(lambdaIn1); i++) {
917 cpl_vector_set(xCorrect1, i, -kStd1[i][1] / 0.2 + cpl_vector_get(xShift1, i));
918 cpl_vector_set(yCorrect1, i, -kStd1[i][3] / 0.2 + cpl_vector_get(yShift1, i));
921 double size2 = cpl_vector_get_size(lambdaIn2);
922 cpl_vector_set_size(xCorrect2, size2);
923 cpl_vector_set_size(yCorrect2, size2);
924 for (cpl_size i = 0; i < cpl_vector_get_size(lambdaIn2); i++) {
925 cpl_vector_set(xCorrect2, i, -kStd2[i][1] / 0.2 + cpl_vector_get(xShift2, i));
926 cpl_vector_set(yCorrect2, i, -kStd2[i][3] / 0.2 + cpl_vector_get(yShift2, i));
929 double size3 = cpl_vector_get_size(lambdaIn3);
930 cpl_vector_set_size(xCorrect3, size3);
931 cpl_vector_set_size(yCorrect3, size3);
932 for (cpl_size i = 0; i < cpl_vector_get_size(lambdaIn3); i++) {
933 cpl_vector_set(xCorrect3, i, -kMuse1[i][1] + cpl_vector_get(xShift3, i));
934 cpl_vector_set(yCorrect3, i, kMuse1[i][3] + cpl_vector_get(yShift3, i));
938 double x1mean = cpl_vector_get_mean( xCorrect1),
939 x1med = cpl_vector_get_median( xCorrect1),
940 x1std = cpl_vector_get_stdev( xCorrect1),
941 y1mean = cpl_vector_get_mean( yCorrect1),
942 y1med = cpl_vector_get_median( yCorrect1),
943 y1std = cpl_vector_get_stdev( yCorrect1);
945 double x2mean = cpl_vector_get_mean( xCorrect2),
946 x2med = cpl_vector_get_median( xCorrect2),
947 x2std = cpl_vector_get_stdev( xCorrect2),
948 y2mean = cpl_vector_get_mean( yCorrect2),
949 y2med = cpl_vector_get_median( yCorrect2),
950 y2std = cpl_vector_get_stdev( yCorrect2);
952 double x3mean = cpl_vector_get_mean( xCorrect3),
953 x3med = cpl_vector_get_median( xCorrect3),
954 x3std = cpl_vector_get_stdev( xCorrect3),
955 y3mean = cpl_vector_get_mean( yCorrect3),
956 y3med = cpl_vector_get_median( yCorrect3),
957 y3std = cpl_vector_get_stdev( yCorrect3);
963 cpl_msg_info(cpl_func,
"Std1: x %f(%f)+/-%f y %f(%f)+/-%f",
964 x1mean, x1med, x1std, y1mean, y1med, y1std);
965 cpl_test(fabs(x1mean) < 0.045 );
966 cpl_test(fabs(x1med ) < 0.045 );
967 cpl_test(fabs(x1std ) < 0.068 );
969 cpl_test(fabs(y1mean) < 0.0472);
970 cpl_test(fabs(y1med ) < 0.0632);
971 cpl_test(fabs(y1std ) < 0.0867);
973 cpl_test(fabs(x1mean) < x1std );
974 cpl_test(fabs(x1med ) < x1std );
976 cpl_test(fabs(y1mean) < y1std );
977 cpl_test(fabs(y1med ) < y1std );
979 cpl_msg_info(cpl_func,
"Std2: x %f(%f)+/-%f y %f(%f)+/-%f",
980 x2mean, x2med, x2std, y2mean, y2med, y2std);
981 cpl_test(fabs(x2mean) < 0.020 );
982 cpl_test(fabs(x2med ) < 0.0171);
983 cpl_test(fabs(x2std ) < 0.039 );
985 cpl_test(fabs(y2mean) < 0.015 );
986 cpl_test(fabs(y2med ) < 0.014 );
987 cpl_test(fabs(y2std ) < 0.024 );
989 cpl_test(fabs(x2mean) < x2std );
990 cpl_test(fabs(x2med ) < x2std );
992 cpl_test(fabs(y2mean) < y2std );
993 cpl_test(fabs(y2med ) < y2std );
996 cpl_msg_info(cpl_func,
"Muse1 x %f(%f)+/-%f y %f(%f)+/-%f",
997 x3mean, x3med, x3std, y3mean, y3med, y3std);
998 cpl_test(fabs(x3mean) < 0.27 );
999 cpl_test(fabs(x3med ) < 0.13 );
1000 cpl_test(fabs(x3std ) < 0.58 );
1002 cpl_test(fabs(y3mean) < 0.15 );
1003 cpl_test(fabs(y3med ) < 0.12 );
1004 cpl_test(fabs(y3std ) < 0.24 );
1006 cpl_test(fabs(x3mean) < x3std );
1007 cpl_test(fabs(x3med ) < x3std );
1009 cpl_test(fabs(y3mean) < y3std );
1010 cpl_test(fabs(y3med ) < y3std );
1015 prestate = cpl_errorstate_get();
1017 (hdrl_value){2000., lambdaRefErr * 2000.},
1020 xShift4Err, yShift4Err)
1022 cpl_test(cpl_errorstate_is_equal(prestate));
1024 prestate = cpl_errorstate_get();
1026 (hdrl_value){7000., lambdaRefErr * 7000.},
1029 xShift5Err, yShift5Err)
1031 cpl_test(cpl_errorstate_is_equal(prestate));
1033 prestate = cpl_errorstate_get();
1035 (hdrl_value){30000., lambdaRefErr * 30000.},
1038 xShift6Err, yShift6Err)
1040 cpl_test(cpl_errorstate_is_equal(prestate));
1045 prestate = cpl_errorstate_get();
1047 (hdrl_value){19500., lambdaRefErr * 19500.},
1050 xShift7Err, yShift7Err)
1052 cpl_test(cpl_errorstate_is_equal(prestate));
1054 prestate = cpl_errorstate_get();
1056 (hdrl_value){19500., 0.},
1059 xShift8Err, yShift8Err)
1061 cpl_test(cpl_errorstate_is_equal(prestate));
1066 cpl_propertylist_delete(header1); header1 = NULL;
1067 cpl_propertylist_delete(header2); header2 = NULL;
1068 cpl_propertylist_delete(header3); header3 = NULL;
1070 cpl_propertylist_delete(plWCS); plWCS = NULL;
1072 cpl_wcs_delete(wcs);
1074 cpl_vector_delete(lambdaIn1);
1075 cpl_vector_delete(lambdaIn2);
1076 cpl_vector_delete(lambdaIn3);
1078 cpl_vector_delete(xShift1); cpl_vector_delete(yShift1);
1079 cpl_vector_delete(xShift2); cpl_vector_delete(yShift2);
1080 cpl_vector_delete(xShift3); cpl_vector_delete(yShift3);
1081 cpl_vector_delete(xShift4); cpl_vector_delete(yShift4);
1082 cpl_vector_delete(xShift5); cpl_vector_delete(yShift5);
1083 cpl_vector_delete(xShift6); cpl_vector_delete(yShift6);
1084 cpl_vector_delete(xShift7); cpl_vector_delete(yShift7);
1085 cpl_vector_delete(xShift8); cpl_vector_delete(yShift8);
1087 cpl_vector_delete(xShift1Err); cpl_vector_delete(yShift1Err);
1088 cpl_vector_delete(xShift2Err); cpl_vector_delete(yShift2Err);
1089 cpl_vector_delete(xShift3Err); cpl_vector_delete(yShift3Err);
1090 cpl_vector_delete(xShift4Err); cpl_vector_delete(yShift4Err);
1091 cpl_vector_delete(xShift5Err); cpl_vector_delete(yShift5Err);
1092 cpl_vector_delete(xShift6Err); cpl_vector_delete(yShift6Err);
1093 cpl_vector_delete(xShift7Err); cpl_vector_delete(yShift7Err);
1094 cpl_vector_delete(xShift8Err); cpl_vector_delete(yShift8Err);
1096 cpl_vector_delete(xCorrect1); cpl_vector_delete(yCorrect1);
1097 cpl_vector_delete(xCorrect2); cpl_vector_delete(yCorrect2);
1098 cpl_vector_delete(xCorrect3); cpl_vector_delete(yCorrect3);
1105 return cpl_error_get_code();
1116 cpl_test_init(PACKAGE_BUGREPORT, CPL_MSG_WARNING);
1118 hdrl_test_dar_correct();
1119 cpl_test_error(CPL_ERROR_NONE);
1121 return cpl_test_end(0);
cpl_error_code hdrl_dar_compute(const hdrl_parameter *params, const hdrl_value lambdaRef, const cpl_vector *lambdaIn, cpl_vector *xShift, cpl_vector *yShift, cpl_vector *xShiftErr, cpl_vector *yShiftErr)
Correct the pixel coordinates of all pixels of a given pixel table for differential atmospheric refra...
hdrl_parameter * hdrl_dar_parameter_create(hdrl_value airmass, hdrl_value parang, hdrl_value posang, hdrl_value temp, hdrl_value rhum, hdrl_value pres, cpl_wcs *wcs)
Creates DAR parameters object with the values in the header.
void hdrl_parameter_delete(hdrl_parameter *obj)
shallow delete of a parameter
hdrl_value hdrl_utils_airmass(hdrl_value aRA, hdrl_value aDEC, hdrl_value aLST, hdrl_value aExptime, hdrl_value aLatitude, hdrl_airmass_approx type)
Compute the effective airmass of an observation. Takes in count the error propagation if you enter th...