create_phot.c

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 }

Generated on Fri Mar 4 09:46:00 2011 for FORS Pipeline Reference Manual by  doxygen 1.4.7