2 #include <fors_pfits.h>
15 fprintf(stderr, "Error at %s:%d\n", __func__, __LINE__); \
16 if (errno) perror(NULL); \
23 if (cpl_error_get_code()) { \
24 cpl_msg_error(cpl_func, "%s %s", cpl_error_get_where(), cpl_error_get_message()); \
29 int main(
int argc,
char *argv[])
31 cpl_init(CPL_INIT_DEFAULT);
37 "Usage:\n %s\n", argv[0]);
47 double exti_old_u = 0.425;
48 double exti_old_b = 0.245;
49 double exti_old_v = 0.125;
50 double exti_old_r = 0.081;
51 double exti_old_i = 0.038;
53 double colo_old_u = 0.067;
54 double colo_old_b = -0.078;
55 double colo_old_v = 0.035;
56 double colo_old_r = 0.042;
57 double colo_old_i = -0.038;
59 double exti_old_u_high = 0.000;
60 double exti_old_b_high = 0.000;
61 double exti_old_v_high = 0.000;
62 double exti_old_g_high = 0.000;
64 double colo_old_u_high = 0.000;
65 double colo_old_b_high = 0.000;
66 double colo_old_v_high = 0.000;
67 double colo_old_g_high = 0.000;
69 double zero_old_u = 99.99;
70 double zero_old_b = 99.99;
71 double zero_old_v = 99.99;
72 double zero_old_r = 99.99;
73 double zero_old_i = 99.99;
74 double zero_old_g = 99.99;
77 const char *instrument;
79 const char *base_filename;
82 const char *filtername;
94 {
"fors1_TK",
"TK2048EB4-1",
95 {{
"U_BESS", FILTER_U, .exti = exti_old_u , .dexti = 0, .colo = colo_old_u , .dcolo = 0, .zero = zero_old_u, .dzero = 0},
96 {
"u_HIGH", FILTER_U, .exti = exti_old_u_high, .dexti = 0, .colo = colo_old_u_high, .dcolo = 0, .zero = zero_old_u, .dzero = 0},
97 {
"B_BESS", FILTER_B, .exti = exti_old_b , .dexti = 0, .colo = colo_old_b , .dcolo = 0, .zero = zero_old_b, .dzero = 0},
98 {
"b_HIGH", FILTER_B, .exti = exti_old_b_high, .dexti = 0, .colo = colo_old_b_high, .dcolo = 0, .zero = zero_old_b, .dzero = 0},
99 {
"g_HIGH", FILTER_G, .exti = exti_old_g_high, .dexti = 0, .colo = colo_old_g_high, .dcolo = 0, .zero = zero_old_g, .dzero = 0},
100 {
"V_BESS", FILTER_V, .exti = exti_old_v , .dexti = 0, .colo = colo_old_v , .dcolo = 0, .zero = zero_old_v, .dzero = 0},
101 {
"v_HIGH", FILTER_V, .exti = exti_old_v_high, .dexti = 0, .colo = colo_old_v_high, .dcolo = 0, .zero = zero_old_v, .dzero = 0},
102 {
"R_BESS", FILTER_R, .exti = exti_old_r , .dexti = 0, .colo = colo_old_r , .dcolo = 0, .zero = zero_old_r, .dzero = 0},
103 {
"I_BESS", FILTER_I, .exti = exti_old_i , .dexti = 0, .colo = colo_old_i , .dcolo = 0, .zero = zero_old_i, .dzero = 0}}
106 {{
"U_BESS", FILTER_U, .exti = exti_old_u , .dexti = 0, .colo = colo_old_u , .dcolo = 0, .zero = zero_old_u, .dzero = 0},
107 {
"u_HIGH", FILTER_U, .exti = exti_old_u_high, .dexti = 0, .colo = colo_old_u_high, .dcolo = 0, .zero = zero_old_u, .dzero = 0},
108 {
"B_BESS", FILTER_B, .exti = exti_old_b , .dexti = 0, .colo = colo_old_b , .dcolo = 0, .zero = zero_old_b, .dzero = 0},
109 {
"b_HIGH", FILTER_B, .exti = exti_old_b_high, .dexti = 0, .colo = colo_old_b_high, .dcolo = 0, .zero = zero_old_b, .dzero = 0},
110 {
"g_HIGH", FILTER_G, .exti = exti_old_g_high, .dexti = 0, .colo = colo_old_g_high, .dcolo = 0, .zero = zero_old_g, .dzero = 0},
111 {
"V_BESS", FILTER_V, .exti = exti_old_v , .dexti = 0, .colo = colo_old_v , .dcolo = 0, .zero = zero_old_v, .dzero = 0},
112 {
"v_HIGH", FILTER_V, .exti = exti_old_v_high, .dexti = 0, .colo = colo_old_v_high, .dcolo = 0, .zero = zero_old_v, .dzero = 0},
113 {
"R_BESS", FILTER_R, .exti = exti_old_r , .dexti = 0, .colo = colo_old_r , .dcolo = 0, .zero = zero_old_r, .dzero = 0},
114 {
"I_BESS", FILTER_I, .exti = exti_old_i , .dexti = 0, .colo = colo_old_i , .dcolo = 0, .zero = zero_old_i, .dzero = 0}}
125 {
"fors1_Norma",
"Norma III",
126 {{
"U_BESS", FILTER_U, .exti = 0.456, .dexti = 0, .colo = 0.091, .dcolo = 0, .zero = 26.080, .dzero = 0.031},
127 {
"u_HIGH", FILTER_U, .exti = 0.440, .dexti = 0, .colo = 0.106, .dcolo = 0, .zero = 26.572, .dzero = 0.049},
128 {
"B_BESS", FILTER_B, .exti = 0.255, .dexti = 0, .colo = -0.107, .dcolo = 0, .zero = 28.163, .dzero = 0.023},
129 {
"b_HIGH", FILTER_B, .exti = 0.230, .dexti = 0, .colo = 0.069, .dcolo = 0, .zero = 28.539, .dzero = 0.031},
130 {
"g_HIGH", FILTER_G, .exti = 0.182, .dexti = 0, .colo = 0.031, .dcolo = 0, .zero = 28.867, .dzero = 0.032},
131 {
"V_BESS", FILTER_V, .exti = 0.132, .dexti = 0, .colo = 0.020, .dcolo = 0, .zero = 28.227, .dzero = 0.023},
132 {
"v_HIGH", FILTER_V, .exti = 0.115, .dexti = 0, .colo = 0.049, .dcolo = 0, .zero = 28.410, .dzero = 0.029},
133 {
"R_BESS", FILTER_R, .exti = 0.090, .dexti = 0, .colo = 0.000, .dcolo = 0, .zero = 28.024, .dzero = 0.025},
134 {
"I_BESS", FILTER_I, .exti = 0.051, .dexti = 0, .colo = -0.060, .dcolo = 0, .zero = 27.023, .dzero = 0.034}}
136 {
"fors1_Marlene",
"Marlene ",
137 {{
"U_BESS", FILTER_U, .exti = 0.456, .dexti = 0, .colo = 0.091, .dcolo = 0, .zero = 26.080, .dzero = 0.031},
138 {
"u_HIGH", FILTER_U, .exti = 0.440, .dexti = 0, .colo = 0.106, .dcolo = 0, .zero = 26.572, .dzero = 0.049},
139 {
"B_BESS", FILTER_B, .exti = 0.255, .dexti = 0, .colo = -0.107, .dcolo = 0, .zero = 28.163, .dzero = 0.023},
140 {
"b_HIGH", FILTER_B, .exti = 0.230, .dexti = 0, .colo = 0.069, .dcolo = 0, .zero = 28.539, .dzero = 0.031},
141 {
"g_HIGH", FILTER_G, .exti = 0.182, .dexti = 0, .colo = 0.031, .dcolo = 0, .zero = 28.867, .dzero = 0.032},
142 {
"V_BESS", FILTER_V, .exti = 0.132, .dexti = 0, .colo = 0.020, .dcolo = 0, .zero = 28.227, .dzero = 0.023},
143 {
"v_HIGH", FILTER_V, .exti = 0.115, .dexti = 0, .colo = 0.049, .dcolo = 0, .zero = 28.410, .dzero = 0.029},
144 {
"R_BESS", FILTER_R, .exti = 0.090, .dexti = 0, .colo = 0.000, .dcolo = 0, .zero = 28.024, .dzero = 0.025},
145 {
"I_BESS", FILTER_I, .exti = 0.051, .dexti = 0, .colo = -0.060, .dcolo = 0, .zero = 27.023, .dzero = 0.034}}
152 {
"fors2_1453",
"CCID20-14-5-3",
153 {{
"U_SPECIAL", FILTER_U, .exti = 0.443, .dexti = 0, .colo = 0.076, .dcolo = 0, .zero = 24.365, .dzero = 0.045},
154 {
"B_BESS" , FILTER_B, .exti = 0.217, .dexti = 0, .colo = -0.033, .dcolo = 0, .zero = 27.740, .dzero = 0.032},
155 {
"V_BESS" , FILTER_V, .exti = 0.127, .dexti = 0, .colo = 0.022, .dcolo = 0, .zero = 28.186, .dzero = 0.025},
156 {
"R_SPECIAL", FILTER_R, .exti = 0.098, .dexti = 0, .colo = -0.009, .dcolo = 0, .zero = 28.404, .dzero = 0.037},
157 {
"I_BESS" , FILTER_I, .exti = 0.060, .dexti = 0, .colo = -0.017, .dcolo = 0, .zero = 27.773, .dzero = 0.034},
158 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
159 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
160 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
161 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}}
164 {
"fors2_1456",
"CCID20-14-5-6",
165 {{
"U_SPECIAL", FILTER_U, .exti = 0.443, .dexti = 0, .colo = 0.076, .dcolo = 0, .zero = 24.365, .dzero = 0.045},
166 {
"B_BESS" , FILTER_B, .exti = 0.217, .dexti = 0, .colo = -0.033, .dcolo = 0, .zero = 27.740, .dzero = 0.032},
167 {
"V_BESS" , FILTER_V, .exti = 0.127, .dexti = 0, .colo = 0.022, .dcolo = 0, .zero = 28.186, .dzero = 0.025},
168 {
"R_SPECIAL", FILTER_R, .exti = 0.098, .dexti = 0, .colo = -0.009, .dcolo = 0, .zero = 28.404, .dzero = 0.037},
169 {
"I_BESS" , FILTER_I, .exti = 0.060, .dexti = 0, .colo = -0.017, .dcolo = 0, .zero = 27.773, .dzero = 0.034},
170 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
171 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
172 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
173 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}}
183 {
"fors1_Norma",
"Norma III",
184 {{
"U_BESS", FILTER_U, .exti = 0.447, .dexti = 0.018, .colo = 0.043, .dcolo = 0.008, .zero = 26.080, .dzero = 0.031},
185 {
"u_HIGH", FILTER_U, .exti = 0.437, .dexti = 0.033, .colo = 0.066, .dcolo = 0.012, .zero = 26.572, .dzero = 0.049},
186 {
"B_BESS", FILTER_B, .exti = 0.241, .dexti = 0.013, .colo = -0.128, .dcolo = 0.008, .zero = 28.163, .dzero = 0.023},
187 {
"b_HIGH", FILTER_B, .exti = 0.222, .dexti = 0.020, .colo = 0.048, .dcolo = 0.009, .zero = 28.539, .dzero = 0.031},
188 {
"g_HIGH", FILTER_G, .exti = 0.209, .dexti = 0.022, .colo = -0.096, .dcolo = 0.008, .zero = 28.867, .dzero = 0.032},
189 {
"V_BESS", FILTER_V, .exti = 0.112, .dexti = 0.012, .colo = -0.015, .dcolo = 0.007, .zero = 28.227, .dzero = 0.023},
190 {
"v_HIGH", FILTER_V, .exti = 0.139, .dexti = 0.018, .colo = 0.019, .dcolo = 0.008, .zero = 28.410, .dzero = 0.029},
191 {
"R_BESS", FILTER_R, .exti = 0.087, .dexti = 0.014, .colo = -0.097, .dcolo = 0.015, .zero = 28.024, .dzero = 0.025},
192 {
"I_BESS", FILTER_I, .exti = 0.027, .dexti = 0.021, .colo = -0.101, .dcolo = 0.011, .zero = 27.023, .dzero = 0.034}}
194 {
"fors1_Marlene",
"Marlene ",
195 {{
"U_BESS", FILTER_U, .exti = 0.470, .dexti = 0.024, .colo = 0.039, .dcolo = 0.013, .zero = 26.069, .dzero = 0.041},
196 {
"u_HIGH", FILTER_U, .exti = 0.445, .dexti = 0.051, .colo = 0.063, .dcolo = 0.018, .zero = 26.548, .dzero = 0.070},
197 {
"B_BESS", FILTER_B, .exti = 0.316, .dexti = 0.019, .colo = -0.124, .dcolo = 0.012, .zero = 28.221, .dzero = 0.032},
198 {
"b_HIGH", FILTER_B, .exti = 0.282, .dexti = 0.036, .colo = 0.059, .dcolo = 0.016, .zero = 28.563, .dzero = 0.052},
199 {
"g_HIGH", FILTER_G, .exti = 0.287, .dexti = 0.063, .colo = -0.106, .dcolo = 0.019, .zero = 28.938, .dzero = 0.082},
200 {
"V_BESS", FILTER_V, .exti = 0.158, .dexti = 0.018, .colo = -0.011, .dcolo = 0.012, .zero = 28.247, .dzero = 0.033},
201 {
"v_HIGH", FILTER_V, .exti = 0.155, .dexti = 0.030, .colo = 0.019, .dcolo = 0.014, .zero = 28.388, .dzero = 0.046},
202 {
"R_BESS", FILTER_R, .exti = 0.111, .dexti = 0.018, .colo = -0.047, .dcolo = 0.022, .zero = 28.009, .dzero = 0.033},
203 {
"I_BESS", FILTER_I, .exti = 0.037, .dexti = 0.019, .colo = -0.100, .dcolo = 0.012, .zero = 27.038, .dzero = 0.035}}
210 {
"fors2_1453",
"CCID20-14-5-3",
211 {{
"U_SPECIAL", FILTER_U, .exti = 0.531, .dexti = 0.025, .colo = 0.069, .dcolo = 0.009, .zero = 24.365, .dzero = 0.045},
212 {
"B_BESS" , FILTER_B, .exti = 0.236, .dexti = 0.015, .colo = -0.026, .dcolo = 0.009, .zero = 27.740, .dzero = 0.032},
213 {
"V_BESS" , FILTER_V, .exti = 0.117, .dexti = 0.012, .colo = -0.002, .dcolo = 0.006, .zero = 28.186, .dzero = 0.025},
214 {
"R_SPECIAL", FILTER_R, .exti = 0.067, .dexti = 0.020, .colo = -0.039, .dcolo = 0.016, .zero = 28.404, .dzero = 0.037},
215 {
"I_BESS" , FILTER_I, .exti = 0.049, .dexti = 0.016, .colo = -0.044, .dcolo = 0.007, .zero = 27.773, .dzero = 0.034},
216 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
217 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
218 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
219 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}}
222 {
"fors2_1456",
"CCID20-14-5-6",
223 {{
"U_SPECIAL", FILTER_U, .exti = 0.526, .dexti = 0.042, .colo = 0.067, .dcolo = 0.014, .zero = 24.476, .dzero = 0.066},
224 {
"B_BESS" , FILTER_B, .exti = 0.272, .dexti = 0.023, .colo = -0.062, .dcolo = 0.011, .zero = 27.837, .dzero = 0.040},
225 {
"V_BESS" , FILTER_V, .exti = 0.123, .dexti = 0.014, .colo = -0.008, .dcolo = 0.006, .zero = 28.207, .dzero = 0.028},
226 {
"R_SPECIAL", FILTER_R, .exti = 0.065, .dexti = 0.022, .colo = -0.036, .dcolo = 0.013, .zero = 28.400, .dzero = 0.037},
227 {
"I_BESS" , FILTER_I, .exti = 0.023, .dexti = 0.013, .colo = -0.080, .dcolo = 0.008, .zero = 27.777, .dzero = 0.039},
228 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
229 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
230 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0},
231 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}}
244 for(i = 0; i <
sizeof(dat) /
sizeof(*dat); i++) {
249 chips <
sizeof(dat[i].chips) /
sizeof(*dat[i].chips);
252 if (dat[i].chips[chips].chip_id == NULL)
break;
254 cpl_table *t = cpl_table_new(9999);
257 cpl_propertylist *header = cpl_propertylist_new();
259 cpl_propertylist_update_string(header, FORS_PFITS_CHIP_ID, dat[i].chips[chips].chip_id);
260 cpl_propertylist_update_string(header,
"ESO PRO CATG", PHOT_TABLE);
261 cpl_propertylist_update_string(header, FORS_PFITS_INSTRUME, dat[i].instrument);
266 cpl_table_new_column(t, FORS_DATA_PHOT_FILTER , CPL_TYPE_STRING);
267 cpl_table_new_column(t, FORS_DATA_PHOT_EXTCOEFF , CPL_TYPE_DOUBLE);
268 cpl_table_new_column(t, FORS_DATA_PHOT_DEXTCOEFF , CPL_TYPE_DOUBLE);
269 cpl_table_new_column(t, FORS_DATA_PHOT_COLORTERM, CPL_TYPE_DOUBLE);
270 cpl_table_new_column(t, FORS_DATA_PHOT_DCOLORTERM, CPL_TYPE_DOUBLE);
271 cpl_table_new_column(t, FORS_DATA_PHOT_ZEROPOINT, CPL_TYPE_DOUBLE);
272 cpl_table_new_column(t, FORS_DATA_PHOT_DZEROPOINT, CPL_TYPE_DOUBLE);
278 j <
sizeof(dat[i].chips[chips].data) /
sizeof(*dat[i].chips[chips].data);
281 if (dat[i].chips[chips].data[j].filtername == NULL)
break;
285 cpl_table_set_string(t, FORS_DATA_PHOT_FILTER, size, dat[i].chips[chips].data[j].filtername);
286 cpl_table_set_double(t, FORS_DATA_PHOT_EXTCOEFF , size,
287 dat[i].chips[chips].data[j].exti);
288 cpl_table_set_double(t, FORS_DATA_PHOT_COLORTERM, size,
289 dat[i].chips[chips].data[j].colo);
290 cpl_table_set_double(t, FORS_DATA_PHOT_ZEROPOINT, size,
291 dat[i].chips[chips].data[j].zero);
292 cpl_table_set_double(t, FORS_DATA_PHOT_DEXTCOEFF , size,
293 dat[i].chips[chips].data[j].dexti);
294 cpl_table_set_double(t, FORS_DATA_PHOT_DCOLORTERM, size,
295 dat[i].chips[chips].data[j].dcolo);
296 cpl_table_set_double(t, FORS_DATA_PHOT_DZEROPOINT, size,
297 dat[i].chips[chips].data[j].dzero);
302 cpl_table_set_size(t, size);
306 const char *full_filename = cpl_sprintf(
"%s_phot_old.fits",
307 dat[i].chips[chips].base_filename);
309 const char *full_filename = cpl_sprintf(
"%s_phot.fits",
310 dat[i].chips[chips].base_filename);
313 cpl_table_save(t, header, NULL, full_filename, CPL_IO_DEFAULT);
316 fprintf(stdout,
"Created %s\n", full_filename);
318 cpl_table_delete(t); t = NULL;
319 cpl_propertylist_delete(header); header = NULL;
320 cpl_free((
void *)full_filename);
327 cpl_table *t = cpl_table_new(9999);
330 cpl_propertylist *header = cpl_propertylist_new();
332 cpl_table_new_column(t,
"Instrument" , CPL_TYPE_STRING);
333 cpl_table_new_column(t, FORS_DATA_PHOT_FILTER , CPL_TYPE_STRING);
334 cpl_table_new_column(t,
"Chip" , CPL_TYPE_STRING);
335 cpl_table_new_column(t, FORS_DATA_PHOT_EXTCOEFF , CPL_TYPE_DOUBLE);
336 cpl_table_new_column(t, FORS_DATA_PHOT_COLORTERM, CPL_TYPE_DOUBLE);
337 cpl_table_new_column(t, FORS_DATA_PHOT_ZEROPOINT, CPL_TYPE_DOUBLE);
340 for(i = 0; i <
sizeof(dat) /
sizeof(*dat); i++) {
344 j <
sizeof(dat[i].chips[chips].data) /
sizeof(*dat[i].chips[chips].data);
347 if (dat[i].chips[chips].data[j].filtername == NULL)
break;
352 chips <
sizeof(dat[i].chip_id) /
sizeof(*dat[i].chip_id);
355 if (dat[i].chip_id[chips] == NULL)
break;
357 cpl_table_set_string(t,
"Instrument", size, dat[i].instrument);
358 cpl_table_set_string(t,
"Chip", size, dat[i].chip_id[chips]);
359 cpl_table_set_string(t, FORS_DATA_PHOT_FILTER, size, dat[i].chips[chips].data[j].filtername);
360 cpl_table_set_double(t, FORS_DATA_PHOT_EXTCOEFF , size,
361 dat[i].chips[chips].data[j].exti);
362 cpl_table_set_double(t, FORS_DATA_PHOT_COLORTERM, size,
363 dat[i].chips[chips].data[j].colo);
364 cpl_table_set_double(t, FORS_DATA_PHOT_ZEROPOINT, size,
365 dat[i].chips[chips].data[j].zero);
373 cpl_table_set_size(t, size);
375 cpl_table_save(t, NULL, NULL, filename, CPL_IO_DEFAULT);
378 fprintf(stdout,
"Created %s\n", filename);
395 t = cpl_table_new(FORS_NUM_FILTER);
398 double *exti[FORS_NUM_FILTER] = {&exti_u,
406 double *colo[FORS_NUM_FILTER] = {&colo_u,
414 double *zero[FORS_NUM_FILTER] = {&zero_u,
422 cpl_table_new_column(t, FORS_DATA_PHOT_FILTER , CPL_TYPE_STRING);
423 cpl_table_new_column(t, FORS_DATA_PHOT_EXTCOEFF , CPL_TYPE_DOUBLE);
424 cpl_table_new_column(t, FORS_DATA_PHOT_COLORTERM, CPL_TYPE_DOUBLE);
425 cpl_table_new_column(t, FORS_DATA_PHOT_ZEROPOINT, CPL_TYPE_DOUBLE);
430 for(i = 0; i < cpl_table_get_nrow(t); i++) {
431 if (exti[i] != NULL && colo[i] != NULL && zero[i] != NULL) {
432 cpl_table_set_string(t, FORS_DATA_PHOT_FILTER , row, FORS_DATA_STD_MAG[i]);
433 cpl_table_set_double(t, FORS_DATA_PHOT_EXTCOEFF, row, *(exti[i]));
434 cpl_table_set_double(t, FORS_DATA_PHOT_COLORTERM, row, *(colo[i]));
435 cpl_table_set_double(t, FORS_DATA_PHOT_ZEROPOINT, row, *(zero[i]));
443 cpl_table_set_size(t, row);
445 cpl_table_save(t, NULL, NULL, filename, CPL_IO_DEFAULT);
449 fprintf(stdout,
"Created %s\n", filename);
int main(void)
Generic library tests.