00001
00002
00003
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
00105
00106 if ((tab = cpl_table_new(0)) == NULL) {
00107 cpl_msg_error(fctid,"Unable to open cpl table!");
00108 return;
00109 }
00110
00111
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
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
00135
00136 seeing(ap,nobjects,ellipt,pkht,areal,work,&fwhm);
00137 } else
00138 fwhm = 0.0;
00139 ap->fwhm = fwhm;
00140
00141
00142
00143 tidy();
00144 return(VIR_OK);
00145 }
00146
00147 static void tidy (void) {
00148
00149
00150
00151 freespace(work);
00152 }
00153
00154
00155
00156
00157
00158
00159
00160
00161
00162
00163
00164
00165
00166
00167