FORS Pipeline Reference Manual 4.9.20
|
00001 #include <fors_data.h> 00002 #include <fors_pfits.h> 00003 #include <fors_dfs.h> 00004 00005 #include <cpl.h> 00006 00007 #include <stdio.h> 00008 #include <string.h> 00009 #include <errno.h> 00010 00011 #define HARDCODED 0 /* create same values as MIDAS? */ 00012 00013 #define DIE \ 00014 do { \ 00015 fprintf(stderr, "Error at %s:%d\n", __func__, __LINE__); \ 00016 if (errno) perror(NULL); \ 00017 cpl_end(); \ 00018 exit(EXIT_FAILURE); \ 00019 } while (0) 00020 00021 #define CHECK \ 00022 do { \ 00023 if (cpl_error_get_code()) { \ 00024 cpl_msg_error(cpl_func, "%s %s", cpl_error_get_where(), cpl_error_get_message()); \ 00025 DIE; \ 00026 } \ 00027 } while (0) 00028 00029 int main(int argc, char *argv[]) 00030 { 00031 cpl_init(CPL_INIT_DEFAULT); 00032 00033 errno = 0; 00034 00035 if (argc != 1) { 00036 fprintf(stderr, 00037 "Usage:\n %s\n", argv[0]); 00038 DIE; 00039 } 00040 00041 /* Numbers and code imported from MIDAS: fspil/pipe/proc/fors_zeropoint.prg */ 00042 00043 // FORS1 data 00044 // if (fors1upgraded == 0) { 00045 00046 /* Old fors1 */ 00047 double exti_old_u = 0.425; // Extinction in the U band 00048 double exti_old_b = 0.245; // Extinction in the B band 00049 double exti_old_v = 0.125; // Extinction in the V band 00050 double exti_old_r = 0.081; // Extinction in the R band 00051 double exti_old_i = 0.038; // Extinction in the I band 00052 00053 double colo_old_u = 0.067; // Color term in the U band 00054 double colo_old_b = -0.078; // Color term in the B band 00055 double colo_old_v = 0.035; // Color term in the V band 00056 double colo_old_r = 0.042; // Color term in the R band 00057 double colo_old_i = -0.038; // Color term in the I band 00058 00059 double exti_old_u_high = 0.000; // Extinction in the u band 00060 double exti_old_b_high = 0.000; // Extinction in the b band 00061 double exti_old_v_high = 0.000; // Extinction in the v band 00062 double exti_old_g_high = 0.000; // Extinction in the g band 00063 00064 double colo_old_u_high = 0.000; // Color term in the u band 00065 double colo_old_b_high = 0.000; // Color term in the b band 00066 double colo_old_v_high = 0.000; // Color term in the v band 00067 double colo_old_g_high = 0.000; // Color term in the g band 00068 00069 double zero_old_u = 99.99; // not available 00070 double zero_old_b = 99.99; 00071 double zero_old_v = 99.99; 00072 double zero_old_r = 99.99; 00073 double zero_old_i = 99.99; 00074 double zero_old_g = 99.99; 00075 00076 struct { 00077 const char *instrument; 00078 struct { 00079 const char *base_filename; 00080 const char *chip_id; 00081 struct { 00082 const char *filtername; 00083 enum filter filter; 00084 double exti, dexti; 00085 double colo, dcolo; 00086 double zero, dzero; 00087 } data[9]; 00088 } chips[2]; 00089 } 00090 dat[] = { 00091 /* Old FORS1 */ 00092 {"FORS1", 00093 { 00094 {"fors1_TK", "TK2048EB4-1", 00095 {{"U_BESS", FILTER_U, .exti = exti_old_u , .dexti = 0, .colo = colo_old_u , .dcolo = 0, .zero = zero_old_u, .dzero = 0}, 00096 {"u_HIGH", FILTER_U, .exti = exti_old_u_high, .dexti = 0, .colo = colo_old_u_high, .dcolo = 0, .zero = zero_old_u, .dzero = 0}, 00097 {"B_BESS", FILTER_B, .exti = exti_old_b , .dexti = 0, .colo = colo_old_b , .dcolo = 0, .zero = zero_old_b, .dzero = 0}, 00098 {"b_HIGH", FILTER_B, .exti = exti_old_b_high, .dexti = 0, .colo = colo_old_b_high, .dcolo = 0, .zero = zero_old_b, .dzero = 0}, 00099 {"g_HIGH", FILTER_G, .exti = exti_old_g_high, .dexti = 0, .colo = colo_old_g_high, .dcolo = 0, .zero = zero_old_g, .dzero = 0}, 00100 {"V_BESS", FILTER_V, .exti = exti_old_v , .dexti = 0, .colo = colo_old_v , .dcolo = 0, .zero = zero_old_v, .dzero = 0}, 00101 {"v_HIGH", FILTER_V, .exti = exti_old_v_high, .dexti = 0, .colo = colo_old_v_high, .dcolo = 0, .zero = zero_old_v, .dzero = 0}, 00102 {"R_BESS", FILTER_R, .exti = exti_old_r , .dexti = 0, .colo = colo_old_r , .dcolo = 0, .zero = zero_old_r, .dzero = 0}, 00103 {"I_BESS", FILTER_I, .exti = exti_old_i , .dexti = 0, .colo = colo_old_i , .dcolo = 0, .zero = zero_old_i, .dzero = 0}} 00104 }, 00105 {NULL, NULL, /* Not used */ 00106 {{"U_BESS", FILTER_U, .exti = exti_old_u , .dexti = 0, .colo = colo_old_u , .dcolo = 0, .zero = zero_old_u, .dzero = 0}, 00107 {"u_HIGH", FILTER_U, .exti = exti_old_u_high, .dexti = 0, .colo = colo_old_u_high, .dcolo = 0, .zero = zero_old_u, .dzero = 0}, 00108 {"B_BESS", FILTER_B, .exti = exti_old_b , .dexti = 0, .colo = colo_old_b , .dcolo = 0, .zero = zero_old_b, .dzero = 0}, 00109 {"b_HIGH", FILTER_B, .exti = exti_old_b_high, .dexti = 0, .colo = colo_old_b_high, .dcolo = 0, .zero = zero_old_b, .dzero = 0}, 00110 {"g_HIGH", FILTER_G, .exti = exti_old_g_high, .dexti = 0, .colo = colo_old_g_high, .dcolo = 0, .zero = zero_old_g, .dzero = 0}, 00111 {"V_BESS", FILTER_V, .exti = exti_old_v , .dexti = 0, .colo = colo_old_v , .dcolo = 0, .zero = zero_old_v, .dzero = 0}, 00112 {"v_HIGH", FILTER_V, .exti = exti_old_v_high, .dexti = 0, .colo = colo_old_v_high, .dcolo = 0, .zero = zero_old_v, .dzero = 0}, 00113 {"R_BESS", FILTER_R, .exti = exti_old_r , .dexti = 0, .colo = colo_old_r , .dcolo = 0, .zero = zero_old_r, .dzero = 0}, 00114 {"I_BESS", FILTER_I, .exti = exti_old_i , .dexti = 0, .colo = colo_old_i , .dcolo = 0, .zero = zero_old_i, .dzero = 0}} 00115 } 00116 } 00117 }, 00118 /* New FORS1 */ 00119 00120 #if HARDCODED 00121 /* Old values, hardcoded in MIDAS */ 00122 00123 {"FORS1", 00124 { 00125 {"fors1_Norma", "Norma III", 00126 {{"U_BESS", FILTER_U, .exti = 0.456, .dexti = 0, .colo = 0.091, .dcolo = 0, .zero = 26.080, .dzero = 0.031}, 00127 {"u_HIGH", FILTER_U, .exti = 0.440, .dexti = 0, .colo = 0.106, .dcolo = 0, .zero = 26.572, .dzero = 0.049}, 00128 {"B_BESS", FILTER_B, .exti = 0.255, .dexti = 0, .colo = -0.107, .dcolo = 0, .zero = 28.163, .dzero = 0.023}, 00129 {"b_HIGH", FILTER_B, .exti = 0.230, .dexti = 0, .colo = 0.069, .dcolo = 0, .zero = 28.539, .dzero = 0.031}, 00130 {"g_HIGH", FILTER_G, .exti = 0.182, .dexti = 0, .colo = 0.031, .dcolo = 0, .zero = 28.867, .dzero = 0.032}, 00131 {"V_BESS", FILTER_V, .exti = 0.132, .dexti = 0, .colo = 0.020, .dcolo = 0, .zero = 28.227, .dzero = 0.023}, 00132 {"v_HIGH", FILTER_V, .exti = 0.115, .dexti = 0, .colo = 0.049, .dcolo = 0, .zero = 28.410, .dzero = 0.029}, 00133 {"R_BESS", FILTER_R, .exti = 0.090, .dexti = 0, .colo = 0.000, .dcolo = 0, .zero = 28.024, .dzero = 0.025}, 00134 {"I_BESS", FILTER_I, .exti = 0.051, .dexti = 0, .colo = -0.060, .dcolo = 0, .zero = 27.023, .dzero = 0.034}} 00135 }, 00136 {"fors1_Marlene", "Marlene ", 00137 {{"U_BESS", FILTER_U, .exti = 0.456, .dexti = 0, .colo = 0.091, .dcolo = 0, .zero = 26.080, .dzero = 0.031}, 00138 {"u_HIGH", FILTER_U, .exti = 0.440, .dexti = 0, .colo = 0.106, .dcolo = 0, .zero = 26.572, .dzero = 0.049}, 00139 {"B_BESS", FILTER_B, .exti = 0.255, .dexti = 0, .colo = -0.107, .dcolo = 0, .zero = 28.163, .dzero = 0.023}, 00140 {"b_HIGH", FILTER_B, .exti = 0.230, .dexti = 0, .colo = 0.069, .dcolo = 0, .zero = 28.539, .dzero = 0.031}, 00141 {"g_HIGH", FILTER_G, .exti = 0.182, .dexti = 0, .colo = 0.031, .dcolo = 0, .zero = 28.867, .dzero = 0.032}, 00142 {"V_BESS", FILTER_V, .exti = 0.132, .dexti = 0, .colo = 0.020, .dcolo = 0, .zero = 28.227, .dzero = 0.023}, 00143 {"v_HIGH", FILTER_V, .exti = 0.115, .dexti = 0, .colo = 0.049, .dcolo = 0, .zero = 28.410, .dzero = 0.029}, 00144 {"R_BESS", FILTER_R, .exti = 0.090, .dexti = 0, .colo = 0.000, .dcolo = 0, .zero = 28.024, .dzero = 0.025}, 00145 {"I_BESS", FILTER_I, .exti = 0.051, .dexti = 0, .colo = -0.060, .dcolo = 0, .zero = 27.023, .dzero = 0.034}} 00146 }, 00147 } 00148 }, 00149 00150 {"FORS2", 00151 { 00152 {"fors2_1453", "CCID20-14-5-3", 00153 {{"U_SPECIAL", FILTER_U, .exti = 0.443, .dexti = 0, .colo = 0.076, .dcolo = 0, .zero = 24.365, .dzero = 0.045}, 00154 {"B_BESS" , FILTER_B, .exti = 0.217, .dexti = 0, .colo = -0.033, .dcolo = 0, .zero = 27.740, .dzero = 0.032}, 00155 {"V_BESS" , FILTER_V, .exti = 0.127, .dexti = 0, .colo = 0.022, .dcolo = 0, .zero = 28.186, .dzero = 0.025}, 00156 {"R_SPECIAL", FILTER_R, .exti = 0.098, .dexti = 0, .colo = -0.009, .dcolo = 0, .zero = 28.404, .dzero = 0.037}, 00157 {"I_BESS" , FILTER_I, .exti = 0.060, .dexti = 0, .colo = -0.017, .dcolo = 0, .zero = 27.773, .dzero = 0.034}, 00158 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00159 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00160 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00161 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}} 00162 }, 00163 00164 {"fors2_1456", "CCID20-14-5-6", 00165 {{"U_SPECIAL", FILTER_U, .exti = 0.443, .dexti = 0, .colo = 0.076, .dcolo = 0, .zero = 24.365, .dzero = 0.045}, 00166 {"B_BESS" , FILTER_B, .exti = 0.217, .dexti = 0, .colo = -0.033, .dcolo = 0, .zero = 27.740, .dzero = 0.032}, 00167 {"V_BESS" , FILTER_V, .exti = 0.127, .dexti = 0, .colo = 0.022, .dcolo = 0, .zero = 28.186, .dzero = 0.025}, 00168 {"R_SPECIAL", FILTER_R, .exti = 0.098, .dexti = 0, .colo = -0.009, .dcolo = 0, .zero = 28.404, .dzero = 0.037}, 00169 {"I_BESS" , FILTER_I, .exti = 0.060, .dexti = 0, .colo = -0.017, .dcolo = 0, .zero = 27.773, .dzero = 0.034}, 00170 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00171 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00172 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00173 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}} 00174 } 00175 } 00176 } 00177 00178 #else 00179 /* Numbers from P79 as provided by DFO */ 00180 00181 {"FORS1", 00182 { 00183 {"fors1_Norma", "Norma III", 00184 {{"U_BESS", FILTER_U, .exti = 0.447, .dexti = 0.018, .colo = 0.043, .dcolo = 0.008, .zero = 26.080, .dzero = 0.031}, 00185 {"u_HIGH", FILTER_U, .exti = 0.437, .dexti = 0.033, .colo = 0.066, .dcolo = 0.012, .zero = 26.572, .dzero = 0.049}, 00186 {"B_BESS", FILTER_B, .exti = 0.241, .dexti = 0.013, .colo = -0.128, .dcolo = 0.008, .zero = 28.163, .dzero = 0.023}, 00187 {"b_HIGH", FILTER_B, .exti = 0.222, .dexti = 0.020, .colo = 0.048, .dcolo = 0.009, .zero = 28.539, .dzero = 0.031}, 00188 {"g_HIGH", FILTER_G, .exti = 0.209, .dexti = 0.022, .colo = -0.096, .dcolo = 0.008, .zero = 28.867, .dzero = 0.032}, 00189 {"V_BESS", FILTER_V, .exti = 0.112, .dexti = 0.012, .colo = -0.015, .dcolo = 0.007, .zero = 28.227, .dzero = 0.023}, 00190 {"v_HIGH", FILTER_V, .exti = 0.139, .dexti = 0.018, .colo = 0.019, .dcolo = 0.008, .zero = 28.410, .dzero = 0.029}, 00191 {"R_BESS", FILTER_R, .exti = 0.087, .dexti = 0.014, .colo = -0.097, .dcolo = 0.015, .zero = 28.024, .dzero = 0.025}, 00192 {"I_BESS", FILTER_I, .exti = 0.027, .dexti = 0.021, .colo = -0.101, .dcolo = 0.011, .zero = 27.023, .dzero = 0.034}} 00193 }, 00194 {"fors1_Marlene", "Marlene ", 00195 {{"U_BESS", FILTER_U, .exti = 0.470, .dexti = 0.024, .colo = 0.039, .dcolo = 0.013, .zero = 26.069, .dzero = 0.041}, 00196 {"u_HIGH", FILTER_U, .exti = 0.445, .dexti = 0.051, .colo = 0.063, .dcolo = 0.018, .zero = 26.548, .dzero = 0.070}, 00197 {"B_BESS", FILTER_B, .exti = 0.316, .dexti = 0.019, .colo = -0.124, .dcolo = 0.012, .zero = 28.221, .dzero = 0.032}, 00198 {"b_HIGH", FILTER_B, .exti = 0.282, .dexti = 0.036, .colo = 0.059, .dcolo = 0.016, .zero = 28.563, .dzero = 0.052}, 00199 {"g_HIGH", FILTER_G, .exti = 0.287, .dexti = 0.063, .colo = -0.106, .dcolo = 0.019, .zero = 28.938, .dzero = 0.082}, 00200 {"V_BESS", FILTER_V, .exti = 0.158, .dexti = 0.018, .colo = -0.011, .dcolo = 0.012, .zero = 28.247, .dzero = 0.033}, 00201 {"v_HIGH", FILTER_V, .exti = 0.155, .dexti = 0.030, .colo = 0.019, .dcolo = 0.014, .zero = 28.388, .dzero = 0.046}, 00202 {"R_BESS", FILTER_R, .exti = 0.111, .dexti = 0.018, .colo = -0.047, .dcolo = 0.022, .zero = 28.009, .dzero = 0.033}, 00203 {"I_BESS", FILTER_I, .exti = 0.037, .dexti = 0.019, .colo = -0.100, .dcolo = 0.012, .zero = 27.038, .dzero = 0.035}} 00204 }, 00205 } 00206 }, 00207 00208 {"FORS2", 00209 { 00210 {"fors2_1453", "CCID20-14-5-3", 00211 {{"U_SPECIAL", FILTER_U, .exti = 0.531, .dexti = 0.025, .colo = 0.069, .dcolo = 0.009, .zero = 24.365, .dzero = 0.045}, 00212 {"B_BESS" , FILTER_B, .exti = 0.236, .dexti = 0.015, .colo = -0.026, .dcolo = 0.009, .zero = 27.740, .dzero = 0.032}, 00213 {"V_BESS" , FILTER_V, .exti = 0.117, .dexti = 0.012, .colo = -0.002, .dcolo = 0.006, .zero = 28.186, .dzero = 0.025}, 00214 {"R_SPECIAL", FILTER_R, .exti = 0.067, .dexti = 0.020, .colo = -0.039, .dcolo = 0.016, .zero = 28.404, .dzero = 0.037}, 00215 {"I_BESS" , FILTER_I, .exti = 0.049, .dexti = 0.016, .colo = -0.044, .dcolo = 0.007, .zero = 27.773, .dzero = 0.034}, 00216 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00217 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00218 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00219 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}} 00220 }, 00221 00222 {"fors2_1456", "CCID20-14-5-6", 00223 {{"U_SPECIAL", FILTER_U, .exti = 0.526, .dexti = 0.042, .colo = 0.067, .dcolo = 0.014, .zero = 24.476, .dzero = 0.066}, 00224 {"B_BESS" , FILTER_B, .exti = 0.272, .dexti = 0.023, .colo = -0.062, .dcolo = 0.011, .zero = 27.837, .dzero = 0.040}, 00225 {"V_BESS" , FILTER_V, .exti = 0.123, .dexti = 0.014, .colo = -0.008, .dcolo = 0.006, .zero = 28.207, .dzero = 0.028}, 00226 {"R_SPECIAL", FILTER_R, .exti = 0.065, .dexti = 0.022, .colo = -0.036, .dcolo = 0.013, .zero = 28.400, .dzero = 0.037}, 00227 {"I_BESS" , FILTER_I, .exti = 0.023, .dexti = 0.013, .colo = -0.080, .dcolo = 0.008, .zero = 27.777, .dzero = 0.039}, 00228 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00229 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00230 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}, 00231 {NULL , FILTER_I, 0, 0, 0, 0, 0, 0}} 00232 } 00233 } 00234 } 00235 #endif 00236 }; 00237 00238 CHECK; 00239 00240 #if 1 00241 00242 /* For each instrument */ 00243 unsigned i; 00244 for(i = 0; i < sizeof(dat) / sizeof(*dat); i++) { 00245 00246 /* For each chip */ 00247 unsigned chips; 00248 for(chips = 0; 00249 chips < sizeof(dat[i].chips) / sizeof(*dat[i].chips); 00250 chips++) { 00251 00252 if (dat[i].chips[chips].chip_id == NULL) break; 00253 00254 cpl_table *t = cpl_table_new(9999); 00255 int size = 0; 00256 00257 cpl_propertylist *header = cpl_propertylist_new(); 00258 00259 cpl_propertylist_update_string(header, FORS_PFITS_CHIP_ID, dat[i].chips[chips].chip_id); 00260 cpl_propertylist_update_string(header, "ESO PRO CATG", PHOT_TABLE); 00261 cpl_propertylist_update_string(header, FORS_PFITS_INSTRUME, dat[i].instrument); 00262 00263 00264 //cpl_table_new_column(t, "Instrument" , CPL_TYPE_STRING); 00265 //cpl_table_new_column(t, "Chip" , CPL_TYPE_STRING); 00266 cpl_table_new_column(t, FORS_DATA_PHOT_FILTER , CPL_TYPE_STRING); 00267 cpl_table_new_column(t, FORS_DATA_PHOT_EXTCOEFF , CPL_TYPE_DOUBLE); 00268 cpl_table_new_column(t, FORS_DATA_PHOT_DEXTCOEFF , CPL_TYPE_DOUBLE); 00269 cpl_table_new_column(t, FORS_DATA_PHOT_COLORTERM, CPL_TYPE_DOUBLE); 00270 cpl_table_new_column(t, FORS_DATA_PHOT_DCOLORTERM, CPL_TYPE_DOUBLE); 00271 cpl_table_new_column(t, FORS_DATA_PHOT_ZEROPOINT, CPL_TYPE_DOUBLE); 00272 cpl_table_new_column(t, FORS_DATA_PHOT_DZEROPOINT, CPL_TYPE_DOUBLE); 00273 00274 00275 /* For each filter */ 00276 unsigned j; 00277 for(j = 0; 00278 j < sizeof(dat[i].chips[chips].data) / sizeof(*dat[i].chips[chips].data); 00279 j++) 00280 { 00281 if (dat[i].chips[chips].data[j].filtername == NULL) break; 00282 00283 //cpl_table_set_string(t, "Instrument", size, dat[i].instrument); 00284 //cpl_table_set_string(t, "Chip", size, dat[i].chips[chips].chip_id); 00285 cpl_table_set_string(t, FORS_DATA_PHOT_FILTER, size, dat[i].chips[chips].data[j].filtername); 00286 cpl_table_set_double(t, FORS_DATA_PHOT_EXTCOEFF , size, 00287 dat[i].chips[chips].data[j].exti); 00288 cpl_table_set_double(t, FORS_DATA_PHOT_COLORTERM, size, 00289 dat[i].chips[chips].data[j].colo); 00290 cpl_table_set_double(t, FORS_DATA_PHOT_ZEROPOINT, size, 00291 dat[i].chips[chips].data[j].zero); 00292 cpl_table_set_double(t, FORS_DATA_PHOT_DEXTCOEFF , size, 00293 dat[i].chips[chips].data[j].dexti); 00294 cpl_table_set_double(t, FORS_DATA_PHOT_DCOLORTERM, size, 00295 dat[i].chips[chips].data[j].dcolo); 00296 cpl_table_set_double(t, FORS_DATA_PHOT_DZEROPOINT, size, 00297 dat[i].chips[chips].data[j].dzero); 00298 00299 size++; 00300 } 00301 00302 cpl_table_set_size(t, size); 00303 //cpl_table_dump(t, 0, size, stdout); 00304 00305 #if HARDCODED 00306 const char *full_filename = cpl_sprintf("%s_phot_old.fits", 00307 dat[i].chips[chips].base_filename); 00308 #else 00309 const char *full_filename = cpl_sprintf("%s_phot.fits", 00310 dat[i].chips[chips].base_filename); 00311 #endif 00312 00313 cpl_table_save(t, header, NULL, full_filename, CPL_IO_DEFAULT); 00314 00315 CHECK; 00316 fprintf(stdout, "Created %s\n", full_filename); 00317 00318 cpl_table_delete(t); t = NULL; 00319 cpl_propertylist_delete(header); header = NULL; 00320 cpl_free((void *)full_filename); 00321 } 00322 } 00323 00324 #else 00325 /* One big table */ 00326 00327 cpl_table *t = cpl_table_new(9999); 00328 int size = 0; 00329 00330 cpl_propertylist *header = cpl_propertylist_new(); 00331 00332 cpl_table_new_column(t, "Instrument" , CPL_TYPE_STRING); 00333 cpl_table_new_column(t, FORS_DATA_PHOT_FILTER , CPL_TYPE_STRING); 00334 cpl_table_new_column(t, "Chip" , CPL_TYPE_STRING); 00335 cpl_table_new_column(t, FORS_DATA_PHOT_EXTCOEFF , CPL_TYPE_DOUBLE); 00336 cpl_table_new_column(t, FORS_DATA_PHOT_COLORTERM, CPL_TYPE_DOUBLE); 00337 cpl_table_new_column(t, FORS_DATA_PHOT_ZEROPOINT, CPL_TYPE_DOUBLE); 00338 00339 unsigned i; 00340 for(i = 0; i < sizeof(dat) / sizeof(*dat); i++) { 00341 00342 unsigned j; 00343 for(j = 0; 00344 j < sizeof(dat[i].chips[chips].data) / sizeof(*dat[i].chips[chips].data); 00345 j++) { 00346 00347 if (dat[i].chips[chips].data[j].filtername == NULL) break; 00348 00349 00350 unsigned chips; 00351 for(chips = 0; 00352 chips < sizeof(dat[i].chip_id) / sizeof(*dat[i].chip_id); 00353 chips++) { 00354 00355 if (dat[i].chip_id[chips] == NULL) break; 00356 00357 cpl_table_set_string(t, "Instrument", size, dat[i].instrument); 00358 cpl_table_set_string(t, "Chip", size, dat[i].chip_id[chips]); 00359 cpl_table_set_string(t, FORS_DATA_PHOT_FILTER, size, dat[i].chips[chips].data[j].filtername); 00360 cpl_table_set_double(t, FORS_DATA_PHOT_EXTCOEFF , size, 00361 dat[i].chips[chips].data[j].exti); 00362 cpl_table_set_double(t, FORS_DATA_PHOT_COLORTERM, size, 00363 dat[i].chips[chips].data[j].colo); 00364 cpl_table_set_double(t, FORS_DATA_PHOT_ZEROPOINT, size, 00365 dat[i].chips[chips].data[j].zero); 00366 00367 size++; 00368 //cpl_table_dump(t, 0, size, stdout); 00369 } 00370 } 00371 } 00372 00373 cpl_table_set_size(t, size); 00374 00375 cpl_table_save(t, NULL, NULL, filename, CPL_IO_DEFAULT); 00376 00377 CHECK; 00378 fprintf(stdout, "Created %s\n", filename); 00379 00380 00381 #endif 00382 00383 00384 00385 00386 00387 00388 00389 #if 0 00390 00391 00392 00393 00394 00395 t = cpl_table_new(FORS_NUM_FILTER); 00396 00397 /* Here the order must match fors_data.h: enum filter */ 00398 double *exti[FORS_NUM_FILTER] = {&exti_u, 00399 &exti_b, 00400 NULL, // g 00401 &exti_v, 00402 &exti_r, 00403 &exti_i, 00404 NULL}; // z 00405 00406 double *colo[FORS_NUM_FILTER] = {&colo_u, 00407 &colo_b, 00408 NULL, // g 00409 &colo_v, 00410 &colo_r, 00411 &colo_i, 00412 NULL}; // z 00413 00414 double *zero[FORS_NUM_FILTER] = {&zero_u, 00415 &zero_b, 00416 NULL, 00417 &zero_v, 00418 &zero_r, 00419 &zero_i, 00420 NULL}; 00421 00422 cpl_table_new_column(t, FORS_DATA_PHOT_FILTER , CPL_TYPE_STRING); 00423 cpl_table_new_column(t, FORS_DATA_PHOT_EXTCOEFF , CPL_TYPE_DOUBLE); 00424 cpl_table_new_column(t, FORS_DATA_PHOT_COLORTERM, CPL_TYPE_DOUBLE); 00425 cpl_table_new_column(t, FORS_DATA_PHOT_ZEROPOINT, CPL_TYPE_DOUBLE); 00426 00427 int row = 0; 00428 { 00429 int i; 00430 for(i = 0; i < cpl_table_get_nrow(t); i++) { 00431 if (exti[i] != NULL && colo[i] != NULL && zero[i] != NULL) { 00432 cpl_table_set_string(t, FORS_DATA_PHOT_FILTER , row, FORS_DATA_STD_MAG[i]); 00433 cpl_table_set_double(t, FORS_DATA_PHOT_EXTCOEFF, row, *(exti[i])); 00434 cpl_table_set_double(t, FORS_DATA_PHOT_COLORTERM, row, *(colo[i])); 00435 cpl_table_set_double(t, FORS_DATA_PHOT_ZEROPOINT, row, *(zero[i])); 00436 row++; 00437 } 00438 } 00439 } 00440 00441 CHECK; 00442 00443 cpl_table_set_size(t, row); 00444 00445 cpl_table_save(t, NULL, NULL, filename, CPL_IO_DEFAULT); 00446 00447 CHECK; 00448 00449 fprintf(stdout, "Created %s\n", filename); 00450 cpl_table_delete(t); 00451 00452 #endif 00453 00454 return 0; 00455 }