IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Dec 28, 2004, 8:40:04 PM (22 years ago)
Author:
eugene
Message:

fixes for -Wall -Werror (mostly get_argument lines)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/opihi/lib.data/starfuncs.c

    r2827 r2843  
    9292}
    9393
     94static double Raper  =  5;
     95static double Rinner = 10;
     96static double Router = 15;
     97static double *sky = NULL;
     98
     99int set_rough_radii (double Ra, double Ri, double Ro) {
     100
     101  Raper = Ra;
     102  Rinner = Ri;
     103  Router = Ro;
     104  if (sky == NULL) {
     105    ALLOCATE (sky, double, SQ(2*Router + 1));
     106  } else {
     107    REALLOCATE (sky, double, SQ(2*Router + 1));
     108  }
     109  return (TRUE);
     110}
     111
    94112/* use a circular aperture */
    95113int get_rough_star (float *data, int Nx, int Ny, int x, int y,
    96                        float *xc, float *yc,
    97                        float *sx, float *sy,
    98                        float *zs, float *zp) {
    99 
    100   double *sky;
    101   double Raper, Rinner, Router, Ra2, Ri2, Ro2, rad2;
     114                    float *xc, float *yc,
     115                    float *sx, float *sy, float *sxy,
     116                    float *zs, float *zp, float *sk) {
     117
     118  double Ra2, Ri2, Ro2, rad2;
    102119  int i, j, Npts, Nsky;
    103120  int Xs, Xe, Ys, Ye, off, Xc, Yc;
    104121  double peak, fsky, value;
    105   double Sx, Sy, Sx2, Sy2, Sum;
     122  double Sx, Sy, Sx2, Sy2, Sxy, Sum;
    106123 
    107124  /* define circular boundaries */
    108   Raper  = 15;  Ra2 = SQ(Raper);
    109   Rinner = 25;  Ri2 = SQ(Rinner);
    110   Router = 35;  Ro2 = SQ(Router);
     125  Ra2 = SQ(Raper);
     126  Ri2 = SQ(Rinner);
     127  Ro2 = SQ(Router);
    111128
    112129  /* measure the sky level */
    113   ALLOCATE (sky, double, SQ(2*Router + 1));
    114 
    115130  /* boundaries for the outer sky region */
    116131  Xs = MAX (x - Router, 0);
     
    119134  Ye = MIN (y + Router + 1, Ny);
    120135
     136/* this sample uses a circular aperture */
     137# if (0)
    121138  Nsky = 0; 
    122139  for (j = Ys; j < Ye; j++) {
     
    135152  }
    136153  fsky = fsky / Npts;
    137   free (sky);
     154# else
     155
     156/* this sample uses a square outer annulus, without loop if tests */
     157  Nsky = 0; 
     158  Xs = MAX (x - Router, 0);
     159  Xe = MIN (x - Rinner + 1, Nx);
     160  Ys = MAX (y - Rinner, 0);
     161  Ye = MIN (y + Rinner + 1, Ny);
     162  for (j = Ys; j < Ye; j++) {
     163    off = j*Nx;
     164    for (i = Xs; i < Xe; i++) {
     165      sky[Nsky] = data[i+off];
     166      Nsky ++;
     167    }
     168  }
     169  Xs = MAX (x + Rinner, 0);
     170  Xe = MIN (x + Router + 1, Nx);
     171  for (j = Ys; j < Ye; j++) {
     172    off = j*Nx;
     173    for (i = Xs; i < Xe; i++) {
     174      sky[Nsky] = data[i+off];
     175      Nsky ++;
     176    }
     177  }
     178  Xs = MAX (x - Rinner, 0);
     179  Xe = MIN (x - Rinner + 1, Nx);
     180  Ys = MAX (y - Router, 0);
     181  Ye = MIN (y - Rinner + 1, Ny);
     182  for (j = Ys; j < Ye; j++) {
     183    off = j*Nx;
     184    for (i = Xs; i < Xe; i++) {
     185      sky[Nsky] = data[i+off];
     186      Nsky ++;
     187    }
     188  }
     189  Ys = MAX (y + Rinner, 0);
     190  Ye = MIN (y + Router + 1, Ny);
     191  for (j = Ys; j < Ye; j++) {
     192    off = j*Nx;
     193    for (i = Xs; i < Xe; i++) {
     194      sky[Nsky] = data[i+off];
     195      Nsky ++;
     196    }
     197  }
     198  sort (sky, Nsky);
     199  for (Npts = fsky = 0, i = 0.25*Nsky; i < 0.75*Nsky; i++, Npts += 1.0) {
     200    fsky += sky[i];
     201  }
     202  fsky = fsky / Npts;
     203# endif
    138204
    139205  /* boundaries for the star region */
     
    145211  /** note that this will fail on negative flux objects */
    146212  peak = Npts = 0;
    147   Sx = Sy = Sx2 = Sy2 = Sum = 0;
     213  Sx = Sy = Sx2 = Sy2 = Sxy = Sum = 0;
    148214  for (j = Ys; j < Ye; j++) {
    149215    off = j*Nx;
     
    158224      Sx2 += Xc*Xc*value;
    159225      Sy2 += Yc*Yc*value;
     226      Sxy += Xc*Yc*value;
    160227      Sum += value;
    161228      Npts ++;
     
    168235  *sx = sqrt (fabs (Sx2 / Sum - SQ(*xc)));
    169236  *sy = sqrt (fabs (Sy2 / Sum - SQ(*yc)));
     237  *sxy = Sxy / Sum;
    170238  *xc += x;
    171239  *yc += y;
    172240  *zs = Sum;
    173241  *zp = peak;
     242  *sk = fsky;
    174243  /* note sigma is rough: round-off errors can introduce errors */
    175244  /* using values relative to x,y should minimize this effect */
Note: See TracChangeset for help on using the changeset viewer.