00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #include <stdio.h>
00029 #include <string.h>
00030 #include "imcore.h"
00031
00032 static float *work = NULL;
00033
00034 static void tidy(void);
00035
00038
00063
00064
00065 extern void tabinit(ap_t *ap) {
00066
00067 switch (cattype) {
00068 case CAT_INTWFC:
00069 tabinit_1();
00070 break;
00071 case CAT_WFCAM:
00072 tabinit_2();
00073 break;
00074 case CAT_BASIC:
00075 tabinit_3();
00076 break;
00077 case CAT_OBJMASK:
00078 tabinit_4(ap);
00079 break;
00080 default:
00081 cpl_msg_error("tabinit","Option %d does not exist",cattype);
00082 tab = NULL;
00083 break;
00084 }
00085 }
00086
00087
00114
00115
00116 extern int do_seeing(ap_t *ap) {
00117 int status;
00118
00119 switch (cattype) {
00120 case CAT_INTWFC:
00121 status = do_seeing_1(ap);
00122 break;
00123 case CAT_WFCAM:
00124 status = do_seeing_2(ap);
00125 break;
00126 case CAT_BASIC:
00127 status = do_seeing_3(ap);
00128 break;
00129 case CAT_OBJMASK:
00130 status = do_seeing_4(ap);
00131 break;
00132 default:
00133 status = VIR_FATAL;
00134 cpl_msg_error("do_seeing","Option %d does not exist",cattype);
00135 break;
00136 }
00137 return(status);
00138 }
00139
00140
00167
00168
00169 extern int process_results(ap_t *ap) {
00170 int status;
00171
00172 switch (cattype) {
00173 case CAT_INTWFC:
00174 status = process_results_1(ap);
00175 break;
00176 case CAT_WFCAM:
00177 status = process_results_2(ap);
00178 break;
00179 case CAT_BASIC:
00180 status = process_results_3(ap);
00181 break;
00182 case CAT_OBJMASK:
00183 status = process_results_4(ap);
00184 break;
00185 default:
00186 status = VIR_FATAL;
00187 cpl_msg_error("process_result","Option %d does not exist",cattype);
00188 break;
00189 }
00190 return(status);
00191 }
00192
00193
00220
00221
00222 extern int tabclose(ap_t *ap) {
00223 int status;
00224
00225 switch (cattype) {
00226 case CAT_OBJMASK:
00227 status = tabclose_4(ap);
00228 break;
00229 default:
00230 status = VIR_OK;
00231 break;
00232 }
00233 return(status);
00234 }
00235
00236
00267
00268
00269 extern void tabinit_gen(int ncols, const char *ttype[], const char *tunit[],
00270 cpl_type tform[]) {
00271 int i;
00272 const char *fctid = "tabinit_gen";
00273
00274
00275
00276 if ((tab = cpl_table_new(0)) == NULL) {
00277 cpl_msg_error(fctid,"Unable to open cpl table!");
00278 return;
00279 }
00280
00281
00282
00283 for (i = 0; i < ncols; i++) {
00284 cpl_table_new_column(tab,ttype[i],tform[i]);
00285 cpl_table_set_column_unit(tab,ttype[i],tunit[i]);
00286 }
00287
00288 }
00289
00290
00320
00321
00322 extern int do_seeing_gen(ap_t *ap, const char *col_ellipt,
00323 const char *col_pkht, char *col_areals[NAREAL]) {
00324 int i;
00325 float fwhm,*areal[NAREAL],*ellipt,*pkht;
00326
00327
00328
00329 if (nobjects >= 3) {
00330 ellipt = cpl_table_get_data_float(tab,col_ellipt);
00331 pkht = cpl_table_get_data_float(tab,col_pkht);
00332 work = cpl_malloc(nobjects*sizeof(*work));
00333 for (i = 0; i < NAREAL; i++)
00334 areal[i] = cpl_table_get_data_float(tab,col_areals[i]);
00335
00336
00337
00338 seeing(ap,nobjects,ellipt,pkht,areal,work,&fwhm);
00339 } else
00340 fwhm = 0.0;
00341 ap->fwhm = fwhm;
00342
00343
00344
00345 tidy();
00346 return(VIR_OK);
00347 }
00348
00349 static void tidy (void) {
00350
00351
00352
00353 freespace(work);
00354 }
00355
00358
00359
00360
00361
00362
00363
00364
00365
00366
00367
00368
00369
00370
00371
00372
00373
00374