32 #include "floatmath.h"
40 #define COL_PEAKHEIGHT 5
59 static const char *ttype[NCOLS]={
"No.",
"X_coordinate",
"Y_coordinate",
60 "Isophotal_flux",
"Peak_height",
"Ellipticity",
61 "Gaussian_sigma",
"Position_angle",
62 "Areal_1_profile",
"Areal_2_profile",
"Areal_3_profile",
63 "Areal_4_profile",
"Areal_5_profile",
"Areal_6_profile",
64 "Areal_7_profile",
"Areal_8_profile",
65 "Blank17",
"Blank18",
"Blank19",
"Blank20",
66 "Blank21",
"Blank22",
"Blank23",
"Blank24",
67 "Blank25",
"Blank26",
"Blank27",
"Blank28",
68 "Blank29",
"Blank30",
"Blank31",
"Blank32"};
69 static const char *tunit[NCOLS]={
" ",
"Pixels",
"Pixels",
"Counts",
"Counts",
" ",
70 "Pixels",
"Degrees",
"Pixels",
"Pixels",
"Pixels",
71 "Pixels",
"Pixels",
"Pixels",
"Pixels",
"Pixels",
72 "Blank",
"Blank",
"Blank",
"Blank",
"Blank",
"Blank",
73 "Blank",
"Blank",
"Blank",
"Blank",
"Blank",
"Blank",
74 "Blank",
"Blank",
"Blank",
"Blank"};
76 static cpl_type tform[NCOLS]={CPL_TYPE_INT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
77 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
78 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
79 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
80 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
81 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
82 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
83 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
84 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
85 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,CPL_TYPE_FLOAT,
86 CPL_TYPE_FLOAT,CPL_TYPE_FLOAT};
88 static int areal_cols[NAREAL] = {COL_AREAL1,COL_AREAL2,COL_AREAL3,COL_AREAL4,
89 COL_AREAL5,COL_AREAL6,COL_AREAL7,COL_AREAL8};
157 char *areal_colnames[NAREAL];
161 for (i = 0; i < NAREAL; i++)
162 areal_colnames[i] = (
char *)ttype[areal_cols[i]-1];
166 retval =
do_seeing_gen(ap,ttype[COL_ELLIPT-1],ttype[COL_PEAKHEIGHT-1],
205 float momresults[8],parmall[NPAR];
206 float sxx,syy,srr,sxy,ecc,temp,xx,theta,radeg,ell;
207 float yy,sigma,peak,areal1,iso_flux;
208 float areal2,areal3,areal4,areal5,areal6,areal7,areal8;
209 int iareal[NAREAL],i,nr;
215 if (momresults[0] < 0)
222 if (iareal[0] < ap->ipnop || momresults[3] < ap->xintmin)
227 parmall[0] = momresults[3];
228 parmall[1] = momresults[1];
229 parmall[2] = momresults[2];
230 parmall[3] = ap->thresh;
231 for (i = 4; i < 8; i++)
232 parmall[i] = momresults[i];
233 for (i = 0; i < NAREAL; i++)
234 parmall[i+8] = (
float)iareal[i];
238 radeg = 180.0/CPL_MATH_PI;
243 sxy = MAX(1.0e-4,MIN(sxy,sqrtf(sxx*syy)));
245 sxy = MIN(-1.0e-4,MAX(sxy,-sqrtf(sxx*syy)));
247 srr = MAX(0.5,sxx+syy);
248 ecc = sqrtf((syy-sxx)*(syy-sxx)+4.0*sxy*sxy)/srr;
249 temp = MAX((1.0-ecc)/(1.0+ecc),0.0);
250 ell = 1.0 - sqrtf(temp);
251 ell = MIN(0.99,MAX(0.0,ell));
252 xx = 0.5*(1.0+ecc)*srr-sxx;
256 theta = 90.0-radeg*atanf(sxy/xx);
260 nrows = cpl_table_get_nrow(tab);
262 if (nobjects > nrows)
263 (void)cpl_table_set_size(tab,nrows+INITROWS);
265 iso_flux = parmall[0];
272 areal3 = parmall[10];
273 areal4 = parmall[11];
274 areal5 = parmall[12];
275 areal6 = parmall[13];
276 areal7 = parmall[14];
277 areal8 = parmall[15];
281 cpl_table_set_int(tab,ttype[COL_NUMBER-1],nr,nr);
282 cpl_table_set_float(tab,ttype[COL_X-1],nr,xx);
283 cpl_table_set_float(tab,ttype[COL_Y-1],nr,yy);
284 cpl_table_set_float(tab,ttype[COL_FLUXISO-1],nr,iso_flux);
285 cpl_table_set_float(tab,ttype[COL_PEAKHEIGHT-1],nr,peak);
286 cpl_table_set_float(tab,ttype[COL_ELLIPT-1],nr,ell);
287 cpl_table_set_float(tab,ttype[COL_SIGMA-1],nr,sigma);
288 cpl_table_set_float(tab,ttype[COL_PA-1],nr,theta);
289 cpl_table_set_float(tab,ttype[COL_AREAL1-1],nr,areal1);
290 cpl_table_set_float(tab,ttype[COL_AREAL2-1],nr,areal2);
291 cpl_table_set_float(tab,ttype[COL_AREAL3-1],nr,areal3);
292 cpl_table_set_float(tab,ttype[COL_AREAL4-1],nr,areal4);
293 cpl_table_set_float(tab,ttype[COL_AREAL5-1],nr,areal5);
294 cpl_table_set_float(tab,ttype[COL_AREAL6-1],nr,areal6);
295 cpl_table_set_float(tab,ttype[COL_AREAL7-1],nr,areal7);
296 cpl_table_set_float(tab,ttype[COL_AREAL8-1],nr,areal8);
int do_seeing_gen(ap_t *ap, const char *col_ellipt, const char *col_pkht, char *col_areals[NAREAL])
Do seeing estimate (generic)
void areals(ap_t *ap, int iareal[NAREAL])
Work out the areal profiles for an object.
void moments(ap_t *ap, float results[])
Do moments analysis on an object.
void tabinit_gen(int ncols, const char *ttype[], const char *tunit[], cpl_type tform[])
Initialise tables (generic)
int process_results_3(ap_t *ap)
Process results for type 3 catalogue.
int do_seeing_3(ap_t *ap)
Do seeing estimate for type 3 catalogue.
void tabinit_3(void)
Initialise type 1 catalogue.