create_table.c

00001 /* 
00002 
00003 $Id: create_table.c,v 1.3 2007/03/01 12:38:26 jim Exp $
00004 
00005 */
00006 
00007 #include <stdio.h>
00008 #include <string.h>
00009 #include "imcore.h"
00010 
00011 static float *work = NULL;
00012 
00013 static void tidy(void);
00014 
00015 extern void tabinit(ap_t *ap) {
00016 
00017     switch (cattype) {
00018     case CAT_INTWFC:
00019         tabinit_1();
00020         break;
00021     case CAT_WFCAM:
00022         tabinit_2();
00023         break;
00024     case CAT_BASIC:
00025         tabinit_3();
00026         break;
00027     case CAT_OBJMASK:
00028         tabinit_4(ap);
00029         break;
00030     default:
00031         cpl_msg_error("tabinit","Option %d does not exist",cattype);
00032         tab = NULL;
00033         break;
00034     }
00035 }
00036 
00037 extern int do_seeing(ap_t *ap) {
00038     int status;
00039 
00040     switch (cattype) {
00041     case CAT_INTWFC:
00042         status = do_seeing_1(ap);
00043         break;
00044     case CAT_WFCAM:
00045         status = do_seeing_2(ap);
00046         break;
00047     case CAT_BASIC:
00048         status = do_seeing_3(ap);
00049         break;
00050     case CAT_OBJMASK:
00051         status = do_seeing_4(ap);
00052         break;
00053     default:
00054         status = VIR_FATAL;
00055         cpl_msg_error("do_seeing","Option %d does not exist",cattype);
00056         break;
00057     }
00058     return(status);
00059 }
00060 
00061 extern int process_results(ap_t *ap) {
00062     int status;
00063     
00064     switch (cattype) {
00065     case CAT_INTWFC:
00066         status = process_results_1(ap);
00067         break;
00068     case CAT_WFCAM:
00069         status = process_results_2(ap);
00070         break;
00071     case CAT_BASIC:
00072         status = process_results_3(ap);
00073         break;
00074     case CAT_OBJMASK:
00075         status = process_results_4(ap);
00076         break;
00077     default:
00078         status = VIR_FATAL;
00079         cpl_msg_error("process_result","Option %d does not exist",cattype);
00080         break;
00081     }
00082     return(status);
00083 }
00084 
00085 extern int tabclose(ap_t *ap) {
00086     int status;
00087 
00088     switch (cattype) {
00089     case CAT_OBJMASK:
00090         status = tabclose_4(ap);
00091         break;
00092     default:
00093         status = VIR_OK;
00094         break;
00095     }
00096     return(status);
00097 }
00098 
00099 extern void tabinit_gen(int ncols, const char *ttype[], const char *tunit[], 
00100                         cpl_type tform[]) {
00101     int i;
00102     const char *fctid = "tabinit_gen";
00103     
00104     /* First, create the table with a default number of rows. */
00105 
00106     if ((tab = cpl_table_new(0)) == NULL) {
00107         cpl_msg_error(fctid,"Unable to open cpl table!");
00108         return;
00109     }
00110 
00111     /* Now define all of the columns */
00112 
00113     for (i = 0; i < ncols; i++) {
00114         cpl_table_new_column(tab,ttype[i],tform[i]);
00115         cpl_table_set_column_unit(tab,ttype[i],tunit[i]);
00116     }
00117 
00118 }
00119 
00120 extern int do_seeing_gen(ap_t *ap, const char *col_ellipt, 
00121                          const char *col_pkht, char *col_areals[NAREAL]) {
00122     int i;
00123     float fwhm,*areal[NAREAL],*ellipt,*pkht;
00124 
00125     /* Get some space and read the relevant columns */
00126 
00127     if (nobjects >= 3) {
00128         ellipt = cpl_table_get_data_float(tab,col_ellipt);
00129         pkht = cpl_table_get_data_float(tab,col_pkht);
00130         work = cpl_malloc(nobjects*sizeof(*work));
00131         for (i = 0; i < NAREAL; i++)
00132             areal[i] = cpl_table_get_data_float(tab,col_areals[i]);
00133 
00134         /* Do the seeing calculation */
00135 
00136         seeing(ap,nobjects,ellipt,pkht,areal,work,&fwhm);
00137     } else 
00138         fwhm = 0.0;
00139     ap->fwhm = fwhm;
00140 
00141     /* Get out of here */
00142 
00143     tidy();
00144     return(VIR_OK);
00145 }
00146 
00147 static void tidy (void) {
00148 
00149     /* Free up workspace */
00150 
00151     freespace(work);
00152 }
00153 
00154 /*
00155 
00156 $Log: create_table.c,v $
00157 Revision 1.3  2007/03/01 12:38:26  jim
00158 Small modifications after a bit of code checking
00159 
00160 Revision 1.2  2006/11/10 09:25:39  jim
00161 Modifed tabinit to only start with a single row
00162 
00163 Revision 1.1  2005/09/13 13:25:27  jim
00164 Initial entry after modifications to make cpl compliant
00165 
00166 
00167 */

Generated on Wed Apr 10 04:01:54 2013 for VIRCAM Pipeline by  doxygen 1.5.1