IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 38983


Ignore:
Timestamp:
Oct 27, 2015, 4:19:52 PM (11 years ago)
Author:
eugene
Message:

merge changes from trunk (mostly updates to dvopsps and loadgalphot)

Location:
branches/eam_branches/ipp-20150625/Ohana
Files:
44 edited
3 copied

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20150625/Ohana

  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/Makefile

    r38711 r38983  
    3939# programs in 'SERVER' use the client-server concept and are out of date
    4040
    41 INSTALL = addstar sedstar loadstarpar loadstarpar_client loadICRF loadICRF_client load2mass loadwise loadtycho loadsupercos skycells mkcmf dumpskycells findskycell
     41INSTALL = addstar sedstar loadgalphot loadstarpar loadstarpar_client loadICRF loadICRF_client skycells mkcmf dumpskycells findskycell load2mass loadwise loadtycho loadsupercos
    4242SERVER  = addstar_client addstarc addstard addstart
    4343
     
    259259$(SRC)/loadgalphot_join.$(ARCH).o \
    260260$(SRC)/loadgalphot_table.$(ARCH).o \
     261$(SRC)/resort_catalog.$(ARCH).o \
    261262$(SRC)/strhash.$(ARCH).o \
    262263$(SRC)/sortIDs.$(ARCH).o \
     
    284285$(SRC)/loadstarpar_table.$(ARCH).o \
    285286$(SRC)/loadstarpar_extras.$(ARCH).o \
     287$(SRC)/resort_catalog.$(ARCH).o \
    286288$(SRC)/psps_ids.$(ARCH).o
    287289
     
    302304$(SRC)/loadstarpar_table.$(ARCH).o \
    303305$(SRC)/loadstarpar_extras.$(ARCH).o \
    304 $(SRC)/psps_ids.$(ARCH).o
     306$(SRC)/resort_catalog.$(ARCH).o \
     307$(SRC)/psps_ids.$(ARCH).o
     308
     309# drop resort_catalog?
    305310
    306311LOAD-ICRF = \
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/addstar.h

    r38593 r38983  
    333333Catalog *addstar_catalog_init (int Nstars);
    334334
     335void resort_catalog_measure (Catalog *catalog);
     336void resort_catalog_lensing (Catalog *catalog);
     337void resort_catalog_starpar (Catalog *catalog);
     338void resort_catalog_galphot (Catalog *catalog);
     339
    335340/**
    336341    there is an inconsistency to be resolved: fixed structures (like Image)
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/include/loadgalphot.h

    r38553 r38983  
    3636} GalPhotIDset;
    3737
    38 AddstarClientOptions args_loadgalphot (int argc, char **argv, AddstarClientOptions options);
     38AddstarClientOptions args_loadgalphot (int *argc, char **argv, AddstarClientOptions options);
    3939
    4040int loadgalphot_table (SkyList *skylistInput, HostTable *hosts, char *filename, AddstarClientOptions *options);
    4141
    42 GalPhot_Stars *loadgalphot_readstars (char *filename, int *nstars);
     42GalPhot_Stars *loadgalphot_readstars (char *filename, int *nstars, AddstarClientOptions *options);
    4343
    4444int loadgalphot_sortStars (GalPhot_Stars *stars, int Nstars);
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/ReadXradFITS.c

    r38576 r38983  
    1414  /* load the table data */
    1515  if (!gfits_fread_ftable_data (f, &table, FALSE)) {
    16     fprintf (stderr, "ERROR: can't read table header\n");
    17     exit (1);
     16    fprintf (stderr, "WARNING: no xrad data, skipping\n");
     17    return TRUE;
     18  }
     19
     20  if (theader[0].Naxis[1] == 0) {
     21    fprintf (stderr, "WARNING: no xrad data, skipping\n");
     22    return TRUE;
    1823  }
    1924
     
    6570  for (i = 0; i < catalog->Nmeasure; i++) {
    6671    if (catalog->measure[i].detID < RadID[Nap]) {
    67       Nap ++;
    6872      continue;
     73      // this is a psf measurement which does not have a radial aperture
    6974    }
    7075    if (catalog->measure[i].detID > RadID[Nap]) {
    7176      myAbort("radial apertures out of order?  seems like a bug\n");
     77      // this would be a radial aperture which does not have a radial aperture
    7278    }
    7379
     
    95101    Nap ++;
    96102  }
    97   catalog->Nlensing = Nap;
     103  myAssert (Nap == Nrow, "did we go too far???");
    98104
    99105  gfits_free_table (&table);
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/args_loadgalphot.c

    r38553 r38983  
    44static void help (void);
    55
    6 AddstarClientOptions args_loadgalphot (int argc, char **argv, AddstarClientOptions options) {
     6AddstarClientOptions args_loadgalphot (int *argc, char **argv, AddstarClientOptions options) {
    77 
    88  int N;
    99
    1010  /* check for help request */
    11   if (get_argument (argc, argv, "-help") ||
    12       get_argument (argc, argv, "-h")) {
     11  if (get_argument (*argc, argv, "-help") ||
     12      get_argument (*argc, argv, "-h")) {
    1313    help ();
    1414  }
     
    2727  HOST_ID = 0;
    2828  PARALLEL = FALSE;
    29   if ((N = get_argument (argc, argv, "-parallel"))) {
     29  if ((N = get_argument (*argc, argv, "-parallel"))) {
    3030    PARALLEL = TRUE;
    31     remove_argument (N, &argc, argv);
     31    remove_argument (N, argc, argv);
    3232  }
    3333  // this is a test mode : rather than launching the remote jobs and waiting for completion,
    3434  // relphot will simply list the remote command and wait for the user to signal completion
    3535  PARALLEL_MANUAL = FALSE;
    36   if ((N = get_argument (argc, argv, "-parallel-manual"))) {
     36  if ((N = get_argument (*argc, argv, "-parallel-manual"))) {
    3737    PARALLEL = TRUE; // -parallel-manual implies -parallel
    3838    PARALLEL_MANUAL = TRUE;
    39     remove_argument (N, &argc, argv);
     39    remove_argument (N, argc, argv);
    4040  }
    4141  // this is a test mode : rather than launching the relphot_client jobs remotely, they are
    4242  // run in serial via 'system'
    4343  PARALLEL_SERIAL = FALSE;
    44   if ((N = get_argument (argc, argv, "-parallel-serial"))) {
     44  if ((N = get_argument (*argc, argv, "-parallel-serial"))) {
    4545    if (PARALLEL_MANUAL) {
    4646      fprintf (stderr, "ERROR: cannot mix -parallel-manual and -parallel-serial\n");
     
    4949    PARALLEL = TRUE; // -parallel-serial implies -parallel
    5050    PARALLEL_SERIAL = TRUE;
    51     remove_argument (N, &argc, argv);
     51    remove_argument (N, argc, argv);
    5252  }
    5353
    5454  /* only add to existing regions */
    5555  options.existing_regions = FALSE;
    56   if ((N = get_argument (argc, argv, "-existing-regions"))) {
     56  if ((N = get_argument (*argc, argv, "-existing-regions"))) {
    5757    options.existing_regions = TRUE;
    58     remove_argument (N, &argc, argv);
     58    remove_argument (N, argc, argv);
    5959  }
    6060  /* only add to existing objects */
    6161  options.only_match = FALSE;
    62   if ((N = get_argument (argc, argv, "-only-match"))) {
     62  if ((N = get_argument (*argc, argv, "-only-match"))) {
    6363    options.only_match = TRUE;
    64     remove_argument (N, &argc, argv);
     64    remove_argument (N, argc, argv);
    6565  }
    6666  /* replace measurement, don't duplicate (ref/cat only) */
    6767  options.replace = FALSE;
    68   if ((N = get_argument (argc, argv, "-replace"))) {
     68  if ((N = get_argument (*argc, argv, "-replace"))) {
    6969    options.replace = TRUE;
    70     remove_argument (N, &argc, argv);
     70    remove_argument (N, argc, argv);
     71  }
     72  /* override any header PHOTCODE values */
     73  options.photcode = 0;
     74  if ((N = get_argument (*argc, argv, "-p"))) {
     75    remove_argument (N, argc, argv);
     76    options.photcode = GetPhotcodeCodebyName (argv[N]);
     77    remove_argument (N, argc, argv);
     78  }
     79  if ((N = get_argument (*argc, argv, "-photcode"))) {
     80    remove_argument (N, argc, argv);
     81    options.photcode = GetPhotcodeCodebyName (argv[N]);
     82    remove_argument (N, argc, argv);
    7183  }
    7284
    7385  /* extra error messages */
    7486  VERBOSE = FALSE;
    75   if ((N = get_argument (argc, argv, "-v"))) {
     87  if ((N = get_argument (*argc, argv, "-v"))) {
    7688    VERBOSE = TRUE;
    77     remove_argument (N, &argc, argv);
     89    remove_argument (N, argc, argv);
    7890  }
    7991
    8092  /* other addstar options which cannot be used in loadgalphot */
    81   options.photcode = 0;
    8293  options.timeref = 0;
    8394  options.mosaic = FALSE;
     
    95106  DUMP = NULL;
    96107
    97   if (argc < 2) {
     108  if (*argc < 2) {
    98109    fprintf (stderr, "USAGE: loadgalphot [options] (fitsfile) [..more files]\n");
    99110    exit (2);
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/find_matches_galphot.c

    r38553 r38983  
    199199  REALLOCATE (catalog[0].galphot, GalPhot, Ngalphot);
    200200 
    201   catalog[0].sorted = FALSE;
    202 
    203201  /* check if the catalog has changed?  if no change, no need to write */
    204202  catalog[0].objID     = objID; // new max value, save on catalog close
     
    206204  catalog[0].Ngalphot  = Ngalphot;
    207205  catalog[0].Nsecfilt_mem = Nave*Nsecfilt;
     206
     207  // we need to for
     208  catalog[0].sorted = FALSE;
     209  resort_catalog_galphot (catalog);
     210  catalog[0].sorted = TRUE;
     211
    208212  if (VERBOSE) fprintf (stderr, "Nstars, Nave, Ngalphot: %d "OFF_T_FMT" "OFF_T_FMT" ("OFF_T_FMT" matches)\n",  Nstars, Nave, Ngalphot, Nmatch);
    209213
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/find_matches_starpar.c

    r38711 r38983  
    200200  REALLOCATE (catalog[0].starpar, StarPar, Nstarpar);
    201201 
    202   catalog[0].sorted = FALSE;
     202  resort_catalog_starpar (catalog);
     203  catalog[0].sorted = TRUE;
    203204
    204205  /* check if the catalog has changed?  if no change, no need to write */
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadgalphot.c

    r38618 r38983  
    1515  SetSignals ();
    1616  options = ConfigInit (&argc, argv);
    17   options = args_loadgalphot (argc, argv, options);
     17  options = args_loadgalphot (&argc, argv, options);
    1818
    1919  // load the full sky description table (dvodb must exist)
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadgalphot_fit2d.c

    r38553 r38983  
    8686  int N, i, j, nx, ny, K, k, n, Npt, status;
    8787
    88   double mean, sigma, maxsigma;
     88  double mean = 0.0;
     89  double sigma = 0.0;
     90  double maxsigma = 0.0;
    8991
    9092  float *x, *y, *z, *zf;
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadgalphot_readstars.c

    r38616 r38983  
    1717static float ZeroPt = 0;
    1818
    19 GalPhot_Stars *loadgalphot_readstars (char *filename, int *nstars) {
     19GalPhot_Stars *loadgalphot_readstars (char *filename, int *nstars, AddstarClientOptions *options) {
    2020
    2121  // read in the full FITS files ('cause I don't have a partial read option)
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/loadgalphot_table.c

    r38553 r38983  
    66  int i, Nstars;
    77
    8   GalPhot_Stars *stars = loadgalphot_readstars (filename, &Nstars);
     8  GalPhot_Stars *stars = loadgalphot_readstars (filename, &Nstars, options);
    99
    1010  // sort the stars by RA
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/mkcmf.c

    r38441 r38983  
    2525void writeStars_PS1_DEV_0 (FTable *ftable, double *X, double *Y, double *M, int Nstars);
    2626
     27int WriteXSRCtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars, float zeroPt, float exptime);
     28int WriteXFITtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
     29int WriteXRADtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars, int Nrad);
     30int WriteDETFtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
     31
    2732int ADDNOISE = TRUE;
    2833float BAD_PSFQF_FRAC = 0.0;
     
    5459  }
    5560
     61  int isStack = FALSE;
     62  int isForcedWarp = FALSE;
     63  int WriteXSRC = FALSE;
     64  int WriteXFIT = FALSE;
     65  int WriteXRAD = FALSE;
     66  int WriteDETF = FALSE;
     67  if ((N = get_argument (argc, argv, "-stack"))) {
     68    remove_argument (N, &argc, argv);
     69    WriteXSRC = WriteXFIT = WriteXRAD = WriteDETF = TRUE;
     70    isStack = TRUE;
     71  }
     72  if ((N = get_argument (argc, argv, "-forcedwarp"))) {
     73    remove_argument (N, &argc, argv);
     74    WriteXSRC = WriteXFIT = WriteXRAD = WriteDETF = TRUE;
     75    isForcedWarp = TRUE;
     76  }
     77
    5678  static char *photcode = "SIMTEST.r.Chip";
    5779  if ((N = get_argument (argc, argv, "-photcode"))) {
     
    7698  }
    7799
     100  static char *tess_id = "RINGS.V3";
     101  if ((N = get_argument (argc, argv, "-tess_id"))) {
     102    remove_argument (N, &argc, argv);
     103    tess_id = strcreate (argv[N]);
     104    remove_argument (N, &argc, argv);
     105  }
     106
     107  static char *skycell = "skycell.1133.081";
     108  if ((N = get_argument (argc, argv, "-skycell"))) {
     109    remove_argument (N, &argc, argv);
     110    skycell = strcreate (argv[N]);
     111    remove_argument (N, &argc, argv);
     112  }
     113
    78114  static char *time = "00:00:00";
    79115  if ((N = get_argument (argc, argv, "-time"))) {
     
    83119  }
    84120
    85   char extname[80], exthead[80];
     121  char extname[80], exthead[80], extroot[80];
     122  strcpy (extroot, "Chip");
    86123  strcpy (extname, "Chip.psf");
    87124  strcpy (exthead, "Chip.hdr");
    88   if ((N = get_argument (argc, argv, "-extname"))) {
    89     remove_argument (N, &argc, argv);
     125  if ((N = get_argument (argc, argv, "-extroot"))) {
     126    remove_argument (N, &argc, argv);
     127    snprintf (extroot, 80, "%s", argv[N]);
    90128    snprintf (extname, 80, "%s.psf", argv[N]);
    91129    snprintf (exthead, 80, "%s.hdr", argv[N]);
     
    206244  coords.crpix2 = CRPIX2;
    207245 
    208   coords.cdelt1 = 0.25/3600.0;
    209   coords.cdelt2 = 0.25/3600.0;
     246  if (isStack || isForcedWarp) {
     247    coords.cdelt1 = 0.25/3600.0;
     248    coords.cdelt2 = 0.25/3600.0;
     249  } else {
     250    coords.cdelt1 = 0.257/3600.0;
     251    coords.cdelt2 = 0.257/3600.0;
     252  }
    210253
    211254  // load stars and generate complete output fields
     
    280323  gfits_print (&header, "IMNAXIS1", "%d", 1, (int)(Xmax));
    281324  gfits_print (&header, "IMNAXIS2", "%d", 1, (int)(Ymax));
     325  gfits_print (&header, "NAXIS1",   "%d", 1, (int)(Xmax));
     326  gfits_print (&header, "NAXIS2",   "%d", 1, (int)(Ymax));
    282327
    283328  gfits_modify (&header, "NSTARS",   "%d", 1, Nstars);
     
    289334    gfits_modify (&header, "UTC-OBS",  "%s", 1, time);
    290335  }
    291   gfits_modify (&header, "ZERO_PT", "%lf", 1, ZERO_POINT);
     336  gfits_modify (&header, "ZERO_PT", "%lf", 1, ZERO_POINT); // this is now not used
    292337  gfits_modify (&header, "EXPTIME", "%lf", 1, exptime);
    293338  gfits_modify (&header, "AIRMASS", "%lf", 1, airmass);
     
    301346  PutCoords (&coords, &header);
    302347  gfits_modify (&header, "EXTNAME",   "%s", 1, exthead);
     348
     349  // various other fields needed to ipptopsps
     350  gfits_modify (&header, "FWHM_MAJ",          "%f", 1, FX*2.8);
     351  gfits_modify (&header, "FWHM_MIN",          "%f", 1, FY*2.8);
     352  gfits_modify (&header, "MSKY_MN",           "%f", 1, SKY);
     353  gfits_modify (&header, "MSKY_SIG",          "%f", 1, DSKY);
     354  gfits_modify (&header, "ZPT_ERR",           "%f", 1, 0.03);
     355  gfits_modify (&header, "ANGLE",             "%f", 1, 0.1);
     356  gfits_modify (&header, "IQ_FW1",            "%f", 1, FX*2.8);
     357  gfits_modify (&header, "IQ_FW2",            "%f", 1, FX*2.8);
     358  gfits_modify (&header, "IQ_M2C",            "%f", 1, FX*2.8);
     359  gfits_modify (&header, "IQ_M2S",            "%f", 1, FX*2.8);
     360  gfits_modify (&header, "IQ_M3",             "%f", 1, FX*2.8);
     361  gfits_modify (&header, "IQ_M4",             "%f", 1, FX*2.8);
     362  gfits_modify (&header, "APMIFIT",           "%f", 1, 0.1);
     363  gfits_modify (&header, "DAPMIFIT",          "%f", 1, 0.03);
     364  gfits_modify (&header, "DETECTOR",          "%s", 1, "CCID58-1-02a2");
     365
     366  gfits_modify (&header, "HIERARCH DETEFF.MAGREF", "%f", 1, -5.0);
     367
     368  gfits_modify (&header, "PSFMODEL",          "%s", 1, "PS_MODEL_PS1_V1");
     369  gfits_modify (&header, "AST_CDX",           "%f", 1, 0.05);
     370  gfits_modify (&header, "AST_CDY",           "%f", 1, 0.04);
     371
     372  float zeroPt = 25.0 + 0.3*(drand48() - 0.5);
     373
     374  if (!isStack && !isForcedWarp) {
     375    gfits_modify (&header, "HIERARCH DETREND.MASK",      "%s", 1, "detref615.XY33.fits");
     376    gfits_modify (&header, "HIERARCH DETREND.DARK",      "%s", 1, "GPC1.DARKTEST.norm.856.0.XY33.fits");
     377    gfits_modify (&header, "HIERARCH DETREND.FLAT",      "%s", 1, "GPC1.FLATTEST.300.XY33.co.fits");
     378    gfits_modify (&header, "HIERARCH DETREND.NOISEMAP",  "%s", 1, "GPC1.noisemap.norm.965.0.XY33.fits");
     379    gfits_modify (&header, "HIERARCH DETREND.NONLIN",    "%s", 1, "linearity_data.XY33.fits");
     380    gfits_modify (&header, "HIERARCH DETREND.VIDEODARK", "%s", 1, "GPC1.VIDEODARK.979.0.XY33.fits");
     381    gfits_modify (&header, "ZPT_OBS",                    "%f", 1, zeroPt);
     382  }
     383
     384  if (isStack) {
     385    gfits_modify (&header, "HIERARCH FPA.ZP", "%f", 1, zeroPt);
     386    gfits_modify (&header, "TESS_ID",         "%s", 1, tess_id);
     387    gfits_modify (&header, "SKYCELL",         "%s", 1, skycell);
     388    gfits_modify (&header, "ZPT_OBS",         "%f", 1, zeroPt);
     389  }
     390  if (isForcedWarp) {
     391    gfits_modify (&header, "HIERARCH FPA.FILTERID", "%s", 1, "r.00000"); // does this affect anything? I don't actually think so...
     392    gfits_modify (&header, "HIERARCH FPA.ZP", "%f", 1, zeroPt);
     393    gfits_modify (&header, "TESS_ID",         "%s", 1, tess_id);
     394    gfits_modify (&header, "SKYCELL",         "%s", 1, skycell);
     395    gfits_modify (&header, "PHOT_V",                "%s", 1, "38100");
     396  }
    303397
    304398  int i;
     
    380474  gfits_fwrite_Theader (fits, ftable.header);
    381475  gfits_fwrite_table   (fits, &ftable);
     476
     477  if (WriteXSRC) WriteXSRCtable (fits, extroot, X, Y, M, Flag, Nstars, zeroPt, exptime);
     478  if (WriteXFIT) WriteXFITtable (fits, extroot, X, Y, M, Flag, Nstars);
     479
     480  if (WriteXRAD && isStack) WriteXRADtable (fits, extroot, X, Y, M, Flag, Nstars, 3);
     481  if (WriteXRAD && isForcedWarp) WriteXRADtable (fits, extroot, X, Y, M, Flag, Nstars, 1);
     482
     483  if (WriteDETF) WriteDETFtable (fits, extroot, X, Y, M, Flag, Nstars);
     484
    382485  fclose (fits);
    383486
     
    475578    fSN = 1.0 / sqrt(flux);
    476579
     580    if (ADDNOISE) {
     581      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     582      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     583      M[i] += fSN*rnd_gauss(0.0, 1.0);
     584      flux = pow (10.0, -0.4*M[i]);
     585      fSN = 1.0 / sqrt(flux);
     586    }
     587
    477588    stars[i].X = X[i];
    478589    stars[i].Y = Y[i];
    479590    stars[i].M = M[i];
    480 
    481     if (ADDNOISE) {
    482       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    483       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    484       stars[i].M += fSN*rnd_gauss(0.0, 1.0);
    485     }
    486591
    487592    stars[i].dX = FX * fSN;
     
    519624    fSN = 1.0 / sqrt(flux);
    520625
     626    if (ADDNOISE) {
     627      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     628      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     629      M[i] += fSN*rnd_gauss(0.0, 1.0);
     630      flux = pow (10.0, -0.4*M[i]);
     631      fSN = 1.0 / sqrt(flux);
     632    }
     633
    521634    stars[i].X = X[i];
    522635    stars[i].Y = Y[i];
    523636    stars[i].M = M[i];
    524 
    525     if (ADDNOISE) {
    526       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    527       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    528       stars[i].M += fSN*rnd_gauss(0.0, 1.0);
    529     }
    530637
    531638    stars[i].dX = FX * fSN;
     
    566673    fSN = 1.0 / sqrt(flux);
    567674
     675    if (ADDNOISE) {
     676      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     677      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     678      M[i] += fSN*rnd_gauss(0.0, 1.0);
     679      flux = pow (10.0, -0.4*M[i]);
     680      fSN = 1.0 / sqrt(flux);
     681    }
     682
    568683    stars[i].X = X[i];
    569684    stars[i].Y = Y[i];
    570685    stars[i].M = M[i];
    571 
    572     if (ADDNOISE) {
    573       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    574       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    575       stars[i].M += fSN*rnd_gauss(0.0, 1.0);
    576     }
    577686
    578687    stars[i].dX = FX * fSN;
     
    615724    fSN = 1.0 / sqrt(flux);
    616725
     726    if (ADDNOISE) {
     727      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     728      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     729      M[i] += fSN*rnd_gauss(0.0, 1.0);
     730      flux = pow (10.0, -0.4*M[i]);
     731      fSN = 1.0 / sqrt(flux);
     732    }
     733
    617734    stars[i].X = X[i];
    618735    stars[i].Y = Y[i];
    619736    stars[i].M = M[i];
    620 
    621     if (ADDNOISE) {
    622       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    623       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    624       stars[i].M += fSN*rnd_gauss(0.0, 1.0);
    625     }
    626737
    627738    // randomly give poor PSFQF values
     
    670781    fSN = 1.0 / sqrt(flux);
    671782
     783    if (ADDNOISE) {
     784      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     785      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     786      M[i] += fSN*rnd_gauss(0.0, 1.0);
     787      flux = pow (10.0, -0.4*M[i]);
     788      fSN = 1.0 / sqrt(flux);
     789    }
     790
    672791    stars[i].X = X[i];
    673792    stars[i].Y = Y[i];
    674793    stars[i].M = M[i];
    675794    stars[i].Map = M[i] - 0.05;
    676 
    677     if (ADDNOISE) {
    678       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    679       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    680       stars[i].M += fSN*rnd_gauss(0.0, 1.0);
    681     }
    682795
    683796    // randomly give poor PSFQF values
     
    729842    fSN = 1.0 / sqrt(flux);
    730843
     844    if (ADDNOISE) {
     845      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     846      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     847      M[i] += fSN*rnd_gauss(0.0, 1.0);
     848      flux = pow (10.0, -0.4*M[i]);
     849      fSN = 1.0 / sqrt(flux);
     850    }
     851
    731852    stars[i].X = X[i];
    732853    stars[i].Y = Y[i];
     
    740861    stars[i].apFlux = pow(10.0, -0.4*stars[i].Map);
    741862    stars[i].apFluxErr = stars[i].apFlux * fSN;
    742 
    743     if (ADDNOISE) {
    744       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    745       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    746       stars[i].M += fSN*rnd_gauss(0.0, 1.0);
    747     }
    748863
    749864    // randomly give poor PSFQF values
     
    796911    fSN = 1.0 / sqrt(flux);
    797912
     913    if (ADDNOISE) {
     914      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     915      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     916      M[i] += fSN*rnd_gauss(0.0, 1.0);
     917      flux = pow (10.0, -0.4*M[i]);
     918      fSN = 1.0 / sqrt(flux);
     919    }
     920
    798921    stars[i].detID = i;
    799922    stars[i].X = X[i];
     
    803926
    804927    stars[i].posangle = 10.0;
    805     stars[i].pltscale = 0.25;
     928    stars[i].pltscale = coords.cdelt1;
    806929
    807930    stars[i].M = M[i];
     
    875998
    876999    stars[i].nFrames   = 1;
    877 
    878     if (ADDNOISE) {
    879       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    880       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    881       float Moff = fSN*rnd_gauss(0.0, 1.0);
    882       stars[i].M += Moff;
    883       stars[i].Map += Moff;
    884       stars[i].MapRaw += Moff;
    885       stars[i].Mcalib += Moff;
    886     }
    8871000  }
    8881001
     
    9041017    flux = pow (10.0, -0.4*M[i]);
    9051018    fSN = 1.0 / sqrt(flux);
     1019
     1020    if (ADDNOISE) {
     1021      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     1022      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     1023      M[i] += fSN*rnd_gauss(0.0, 1.0);
     1024      flux = pow (10.0, -0.4*M[i]);
     1025      fSN = 1.0 / sqrt(flux);
     1026    }
    9061027
    9071028    stars[i].detID = i;
     
    9841105
    9851106    stars[i].nFrames   = 1;
    986 
    987     if (ADDNOISE) {
    988       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    989       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    990       float Moff = fSN*rnd_gauss(0.0, 1.0);
    991       stars[i].M += Moff;
    992       stars[i].Map += Moff;
    993       stars[i].MapRaw += Moff;
    994       stars[i].Mcalib += Moff;
    995     }
    9961107  }
    9971108
     
    10051116  CMF_PS1_V5_R2_Lensing *stars;
    10061117  float flux, fSN;
     1118
     1119  // We want some fraction of the stars to have zero psfqfperfect so that we can test the
     1120  // ForcedWarpMasked table construction, but we don't want things to be random so we
     1121  // change every Nstars / modulo to zero
     1122  int modulo = 0;
     1123  if (BAD_PSFQF_FRAC > 0) {
     1124    modulo = (int) (1.0 / BAD_PSFQF_FRAC);
     1125  }
    10071126
    10081127  // XXX add gaussian-distributed noise based on counts
     
    10131132    flux = pow (10.0, -0.4*M[i]);
    10141133    fSN = 1.0 / sqrt(flux);
     1134
     1135    if (ADDNOISE) {
     1136      X[i] += FX * fSN * rnd_gauss(0.0, 1.0);
     1137      Y[i] += FY * fSN * rnd_gauss(0.0, 1.0);
     1138      M[i] += fSN*rnd_gauss(0.0, 1.0);
     1139      flux = pow (10.0, -0.4*M[i]);
     1140      fSN = 1.0 / sqrt(flux);
     1141    }
    10151142
    10161143    stars[i].detID = i;
     
    10571184    stars[i].fwhmMin   = FY*2.8;
    10581185
    1059     // randomly give poor PSFQF values
    1060     if ((BAD_PSFQF_FRAC > 0.0) && (drand48() < BAD_PSFQF_FRAC)) {
    1061       stars[i].psfQF     = 0.25;
    1062       stars[i].psfQFperf = 0.24;
     1186    if (modulo && ((i+1) % modulo == 0)) {
     1187      stars[i].psfQF     = 0.0;
     1188      stars[i].psfQFperf = 0.0;
    10631189    } else {
    10641190      stars[i].psfQF     = PSFQUAL;
     
    11031229    stars[i].E2_sh_psf  = FX;
    11041230
     1231    stars[i].srcChipNum = 23;
     1232    stars[i].srcChipX   = X[i] + 10.0;
     1233    stars[i].srcChipY   = Y[i] + 10.0;
     1234
    11051235    stars[i].kronFlux  = flux * 1.25;
    11061236    stars[i].kronFluxErr = fSN * flux * 1.25;
     
    11171247
    11181248    stars[i].nFrames   = 1;
    1119 
    1120     if (ADDNOISE) {
    1121       stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
    1122       stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
    1123       float Moff = fSN*rnd_gauss(0.0, 1.0);
    1124       stars[i].M += Moff;
    1125       stars[i].Map += Moff;
    1126       stars[i].MapRaw += Moff;
    1127       stars[i].Mcalib += Moff;
    1128     }
    11291249  }
    11301250
     
    11331253}
    11341254
     1255int WriteXSRCtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars, float zeroPt, float exptime) {
     1256
     1257  int i, j;
     1258  Header header;
     1259  FTable ftable;
     1260
     1261  char extdata[80];
     1262  snprintf (extdata, 80, "%s.xsrc", extroot);
     1263
     1264  /* Example Code to create a bintable */
     1265  {
     1266    gfits_create_table_header (&header, "BINTABLE", extdata);
     1267
     1268    gfits_define_bintable_column (&header, "1J", "IPP_IDET"           , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1269    gfits_define_bintable_column (&header, "1E", "X_EXT"              , "no comment", NULL, 1.0, 0.0);
     1270    gfits_define_bintable_column (&header, "1E", "Y_EXT"              , "no comment", NULL, 1.0, 0.0);
     1271    gfits_define_bintable_column (&header, "1E", "X_EXT_SIG"          , "no comment", NULL, 1.0, 0.0);
     1272    gfits_define_bintable_column (&header, "1E", "Y_EXT_SIG"          , "no comment", NULL, 1.0, 0.0);
     1273    gfits_define_bintable_column (&header, "1E", "F25_ARATIO"         , "no comment", NULL, 1.0, 0.0);
     1274    gfits_define_bintable_column (&header, "1E", "F25_THETA"          , "no comment", NULL, 1.0, 0.0);
     1275    gfits_define_bintable_column (&header, "1E", "PETRO_MAG"          , "no comment", NULL, 1.0, 0.0);
     1276    gfits_define_bintable_column (&header, "1E", "PETRO_MAG_ERR"      , "no comment", NULL, 1.0, 0.0);
     1277    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS"       , "no comment", NULL, 1.0, 0.0);
     1278    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_ERR"   , "no comment", NULL, 1.0, 0.0);
     1279    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_50"    , "no comment", NULL, 1.0, 0.0);
     1280    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_50_ERR", "no comment", NULL, 1.0, 0.0);
     1281    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_90"    , "no comment", NULL, 1.0, 0.0);
     1282    gfits_define_bintable_column (&header, "1E", "PETRO_RADIUS_90_ERR", "no comment", NULL, 1.0, 0.0);
     1283    gfits_define_bintable_column (&header, "1E", "PETRO_FILL"         , "no comment", NULL, 1.0, 0.0);
     1284    gfits_define_bintable_column (&header, "1E", "HALF_LIGHT_RADIUS"  , "no comment", NULL, 1.0, 0.0);
     1285    gfits_define_bintable_column (&header, "1E", "G_RT"               , "no comment", NULL, 1.0, 0.0);
     1286    gfits_define_bintable_column (&header, "1E", "G_RA"               , "no comment", NULL, 1.0, 0.0);
     1287    gfits_define_bintable_column (&header, "1E", "G_S2"               , "no comment", NULL, 1.0, 0.0);
     1288    gfits_define_bintable_column (&header, "1E", "G_A"                , "no comment", NULL, 1.0, 0.0);
     1289    gfits_define_bintable_column (&header, "1E", "G_BUMPY"            , "no comment", NULL, 1.0, 0.0);
     1290    gfits_define_bintable_column (&header, "9E", "PROF_SB"            , "no comment", NULL, 1.0, 0.0);
     1291    gfits_define_bintable_column (&header, "9E", "PROF_FLUX"          , "no comment", NULL, 1.0, 0.0);
     1292    gfits_define_bintable_column (&header, "9E", "PROF_FILL"          , "no comment", NULL, 1.0, 0.0);
     1293
     1294    // generate the output array that carries the data
     1295    gfits_create_table (&header, &ftable);
     1296
     1297    // create intermediate storage arrays
     1298    int    *IPP_IDET            ; ALLOCATE (IPP_IDET            ,  int   , Nstars);
     1299    float  *X_EXT               ; ALLOCATE (X_EXT               ,  float , Nstars);
     1300    float  *Y_EXT               ; ALLOCATE (Y_EXT               ,  float , Nstars);
     1301    float  *X_EXT_SIG           ; ALLOCATE (X_EXT_SIG           ,  float , Nstars);
     1302    float  *Y_EXT_SIG           ; ALLOCATE (Y_EXT_SIG           ,  float , Nstars);
     1303    float  *F25_ARATIO          ; ALLOCATE (F25_ARATIO          ,  float , Nstars);
     1304    float  *F25_THETA           ; ALLOCATE (F25_THETA           ,  float , Nstars);
     1305    float  *PETRO_MAG           ; ALLOCATE (PETRO_MAG           ,  float , Nstars);
     1306    float  *PETRO_MAG_ERR       ; ALLOCATE (PETRO_MAG_ERR       ,  float , Nstars);
     1307    float  *PETRO_RADIUS        ; ALLOCATE (PETRO_RADIUS        ,  float , Nstars);
     1308    float  *PETRO_RADIUS_ERR    ; ALLOCATE (PETRO_RADIUS_ERR    ,  float , Nstars);
     1309    float  *PETRO_RADIUS_50     ; ALLOCATE (PETRO_RADIUS_50     ,  float , Nstars);
     1310    float  *PETRO_RADIUS_50_ERR ; ALLOCATE (PETRO_RADIUS_50_ERR ,  float , Nstars);
     1311    float  *PETRO_RADIUS_90     ; ALLOCATE (PETRO_RADIUS_90     ,  float , Nstars);
     1312    float  *PETRO_RADIUS_90_ERR ; ALLOCATE (PETRO_RADIUS_90_ERR ,  float , Nstars);
     1313    float  *PETRO_FILL          ; ALLOCATE (PETRO_FILL          ,  float , Nstars);
     1314    float  *HALF_LIGHT_RADIUS   ; ALLOCATE (HALF_LIGHT_RADIUS   ,  float , Nstars);
     1315    float  *G_RT                ; ALLOCATE (G_RT                ,  float , Nstars);
     1316    float  *G_RA                ; ALLOCATE (G_RA                ,  float , Nstars);
     1317    float  *G_S2                ; ALLOCATE (G_S2                ,  float , Nstars);
     1318    float  *G_A                 ; ALLOCATE (G_A                 ,  float , Nstars);
     1319    float  *G_BUMPY             ; ALLOCATE (G_BUMPY             ,  float , Nstars);
     1320    float  *PROF_SB             ; ALLOCATE (PROF_SB             ,  float , 9*Nstars);
     1321    float  *PROF_FLUX           ; ALLOCATE (PROF_FLUX           ,  float , 9*Nstars);
     1322    float  *PROF_FILL           ; ALLOCATE (PROF_FILL           ,  float , 9*Nstars);
     1323
     1324    float magtime = 2.5*log10(exptime);
     1325
     1326    // assign the storage arrays
     1327    for (i = 0; i < Nstars; i++) {
     1328      float flux = pow (10.0, -0.4*M[i]);
     1329      float fSN = 1.0 / sqrt(flux);
     1330
     1331      IPP_IDET            [i] = i;
     1332      X_EXT               [i] = X[i];
     1333      Y_EXT               [i] = Y[i];
     1334      X_EXT_SIG           [i] = FX * fSN;
     1335      Y_EXT_SIG           [i] = FY * fSN;
     1336      F25_ARATIO          [i] = 0.9;
     1337      F25_THETA           [i] = 10.0; // seems to be in degrees in the cmfs
     1338      PETRO_MAG           [i] = M[i] + zeroPt + magtime;
     1339      PETRO_MAG_ERR       [i] = 1.0 / fSN; // note that the real cmfs have PETRO_MAG_ERR inverted
     1340      PETRO_RADIUS        [i] = 8.0;
     1341      if (i == 2) {
     1342        // This case is here to exercise a case for ipp2psps.
     1343        PETRO_RADIUS_ERR    [i] = NAN;
     1344      }
     1345      else {
     1346        PETRO_RADIUS_ERR    [i] = 0.1;
     1347      }
     1348      PETRO_RADIUS_50     [i] = 4.0;
     1349      PETRO_RADIUS_50_ERR [i] = 0.1;
     1350      PETRO_RADIUS_90     [i] = 12.0;
     1351      PETRO_RADIUS_90_ERR [i] = 0.1;
     1352      PETRO_FILL          [i] = 0.95;
     1353      HALF_LIGHT_RADIUS   [i] = 6.0;
     1354      G_RT                [i] = 1.0;
     1355      G_RA                [i] = 1.0;
     1356      G_S2                [i] = 1.0;
     1357      G_A                 [i] = 1.0;
     1358      G_BUMPY             [i] = 1.0;
     1359      for (j = 0; j < 9; j++) {
     1360        PROF_SB             [j + 9*i] = flux / 10.0;
     1361        PROF_FLUX           [j + 9*i] = flux;
     1362        PROF_FILL           [j + 9*i] = 0.9;
     1363      }
     1364    }
     1365
     1366    // set the table data
     1367    gfits_set_bintable_column (&header, &ftable, "IPP_IDET"           , IPP_IDET            , Nstars);
     1368    gfits_set_bintable_column (&header, &ftable, "X_EXT"              , X_EXT               , Nstars);
     1369    gfits_set_bintable_column (&header, &ftable, "Y_EXT"              , Y_EXT               , Nstars);
     1370    gfits_set_bintable_column (&header, &ftable, "X_EXT_SIG"          , X_EXT_SIG           , Nstars);
     1371    gfits_set_bintable_column (&header, &ftable, "Y_EXT_SIG"          , Y_EXT_SIG           , Nstars);
     1372    gfits_set_bintable_column (&header, &ftable, "F25_ARATIO"         , F25_ARATIO          , Nstars);
     1373    gfits_set_bintable_column (&header, &ftable, "F25_THETA"          , F25_THETA           , Nstars);
     1374    gfits_set_bintable_column (&header, &ftable, "PETRO_MAG"          , PETRO_MAG           , Nstars);
     1375    gfits_set_bintable_column (&header, &ftable, "PETRO_MAG_ERR"      , PETRO_MAG_ERR       , Nstars);
     1376    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS"       , PETRO_RADIUS        , Nstars);
     1377    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_ERR"   , PETRO_RADIUS_ERR    , Nstars);
     1378    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_50"    , PETRO_RADIUS_50     , Nstars);
     1379    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_50_ERR", PETRO_RADIUS_50_ERR , Nstars);
     1380    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_90"    , PETRO_RADIUS_90     , Nstars);
     1381    gfits_set_bintable_column (&header, &ftable, "PETRO_RADIUS_90_ERR", PETRO_RADIUS_90_ERR , Nstars);
     1382    gfits_set_bintable_column (&header, &ftable, "PETRO_FILL"         , PETRO_FILL          , Nstars);
     1383    gfits_set_bintable_column (&header, &ftable, "HALF_LIGHT_RADIUS"  , HALF_LIGHT_RADIUS   , Nstars);
     1384    gfits_set_bintable_column (&header, &ftable, "G_RT"               , G_RT                , Nstars);
     1385    gfits_set_bintable_column (&header, &ftable, "G_RA"               , G_RA                , Nstars);
     1386    gfits_set_bintable_column (&header, &ftable, "G_S2"               , G_S2                , Nstars);
     1387    gfits_set_bintable_column (&header, &ftable, "G_A"                , G_A                 , Nstars);
     1388    gfits_set_bintable_column (&header, &ftable, "G_BUMPY"            , G_BUMPY             , Nstars);
     1389    gfits_set_bintable_column (&header, &ftable, "PROF_SB"            , PROF_SB             , Nstars);
     1390    gfits_set_bintable_column (&header, &ftable, "PROF_FLUX"          , PROF_FLUX           , Nstars);
     1391    gfits_set_bintable_column (&header, &ftable, "PROF_FILL"          , PROF_FILL           , Nstars);
     1392  }
     1393
     1394  gfits_fwrite_Theader (fits, &header);
     1395  gfits_fwrite_table  (fits, &ftable);
     1396  gfits_free_header (&header);
     1397  gfits_free_table (&ftable);
     1398
     1399  return TRUE;
     1400}
     1401
     1402int WriteXFITtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
     1403
     1404  int i;
     1405  Header header;
     1406  FTable ftable;
     1407
     1408  char extdata[80];
     1409  snprintf (extdata, 80, "%s.xfit", extroot);
     1410
     1411  /* Example Code to create a bintable */
     1412  {
     1413    gfits_create_table_header (&header, "BINTABLE", extdata);
     1414
     1415    // define the table layout
     1416    gfits_define_bintable_column (&header, "J",   "IPP_IDET"         , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1417    gfits_define_bintable_column (&header, "E",   "X_EXT"            , "no comment", NULL, 1.0, 0.0);
     1418    gfits_define_bintable_column (&header, "E",   "Y_EXT"            , "no comment", NULL, 1.0, 0.0);
     1419    gfits_define_bintable_column (&header, "E",   "X_EXT_SIG"        , "no comment", NULL, 1.0, 0.0);
     1420    gfits_define_bintable_column (&header, "E",   "Y_EXT_SIG"        , "no comment", NULL, 1.0, 0.0);
     1421    gfits_define_bintable_column (&header, "E",   "SKY_EXT"          , "no comment", NULL, 1.0, 0.0);
     1422    gfits_define_bintable_column (&header, "E",   "RA_EXT"           , "no comment", NULL, 1.0, 0.0);
     1423    gfits_define_bintable_column (&header, "E",   "DEC_EXT"          , "no comment", NULL, 1.0, 0.0);
     1424    gfits_define_bintable_column (&header, "E",   "EXT_INST_MAG"     , "no comment", NULL, 1.0, 0.0);
     1425    gfits_define_bintable_column (&header, "E",   "EXT_INST_MAG_SIG" , "no comment", NULL, 1.0, 0.0);
     1426    gfits_define_bintable_column (&header, "E",   "EXT_CHISQ"        , "no comment", NULL, 1.0, 0.0);
     1427    gfits_define_bintable_column (&header, "J",   "EXT_NDOF"         , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1428    gfits_define_bintable_column (&header, "J",   "EXT_MODEL_TYPE"   , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1429    gfits_define_bintable_column (&header, "I",   "EXT_FLAGS"        , "no comment", NULL, 1.0, FT_BZERO_INT16); // unsigned
     1430    gfits_define_bintable_column (&header, "E",   "PSF_INST_MAG"     , "no comment", NULL, 1.0, 0.0);
     1431    gfits_define_bintable_column (&header, "E",   "AP_MAG"           , "no comment", NULL, 1.0, 0.0);
     1432    gfits_define_bintable_column (&header, "E",   "KRON_MAG"         , "no comment", NULL, 1.0, 0.0);
     1433    gfits_define_bintable_column (&header, "J",   "NPARAMS"          , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1434    gfits_define_bintable_column (&header, "15A", "MODEL_TYPE"       , "no comment", NULL, 1.0, 0.0);
     1435    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MAJ"    , "no comment", NULL, 1.0, 0.0);
     1436    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MIN"    , "no comment", NULL, 1.0, 0.0);
     1437    gfits_define_bintable_column (&header, "E",   "EXT_THETA"        , "no comment", NULL, 1.0, 0.0);
     1438    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MAJ_ERR", "no comment", NULL, 1.0, 0.0);
     1439    gfits_define_bintable_column (&header, "E",   "EXT_WIDTH_MIN_ERR", "no comment", NULL, 1.0, 0.0);
     1440    gfits_define_bintable_column (&header, "E",   "EXT_THETA_ERR"    , "no comment", NULL, 1.0, 0.0);
     1441    gfits_define_bintable_column (&header, "E",   "EXT_PAR_07"       , "no comment", NULL, 1.0, 0.0);
     1442
     1443    // generate the output array that carries the data
     1444    gfits_create_table (&header, &ftable);
     1445
     1446    // create intermediate storage arrays
     1447    int    *IPP_IDET           ; ALLOCATE (IPP_IDET         ,  int   , Nstars);
     1448    float  *X_EXT              ; ALLOCATE (X_EXT            ,  float , Nstars);
     1449    float  *Y_EXT              ; ALLOCATE (Y_EXT            ,  float , Nstars);
     1450    float  *X_EXT_SIG          ; ALLOCATE (X_EXT_SIG        ,  float , Nstars);
     1451    float  *Y_EXT_SIG          ; ALLOCATE (Y_EXT_SIG        ,  float , Nstars);
     1452    float  *SKY_EXT            ; ALLOCATE (SKY_EXT          ,  float , Nstars);
     1453    float  *RA_EXT             ; ALLOCATE (RA_EXT           ,  float , Nstars);
     1454    float  *DEC_EXT            ; ALLOCATE (DEC_EXT          ,  float , Nstars);
     1455    float  *EXT_INST_MAG       ; ALLOCATE (EXT_INST_MAG     ,  float , Nstars);
     1456    float  *EXT_INST_MAG_SIG   ; ALLOCATE (EXT_INST_MAG_SIG ,  float , Nstars);
     1457    float  *EXT_CHISQ          ; ALLOCATE (EXT_CHISQ        ,  float , Nstars);
     1458    int    *EXT_NDOF           ; ALLOCATE (EXT_NDOF         ,  int   , Nstars);
     1459    int    *EXT_MODEL_TYPE     ; ALLOCATE (EXT_MODEL_TYPE   ,  int   , Nstars);
     1460    short  *EXT_FLAGS          ; ALLOCATE (EXT_FLAGS        ,  short , Nstars);
     1461    float  *PSF_INST_MAG       ; ALLOCATE (PSF_INST_MAG     ,  float , Nstars);
     1462    float  *AP_MAG             ; ALLOCATE (AP_MAG           ,  float , Nstars);
     1463    float  *KRON_MAG           ; ALLOCATE (KRON_MAG         ,  float , Nstars);
     1464    int    *NPARAMS            ; ALLOCATE (NPARAMS          ,  int   , Nstars);
     1465    char   *MODEL_TYPE         ; ALLOCATE (MODEL_TYPE       ,  char  , Nstars*15);
     1466    float  *EXT_WIDTH_MAJ      ; ALLOCATE (EXT_WIDTH_MAJ    ,  float , Nstars);
     1467    float  *EXT_WIDTH_MIN      ; ALLOCATE (EXT_WIDTH_MIN    ,  float , Nstars);
     1468    float  *EXT_THETA          ; ALLOCATE (EXT_THETA        ,  float , Nstars);
     1469    float  *EXT_WIDTH_MAJ_ERR  ; ALLOCATE (EXT_WIDTH_MAJ_ERR,  float , Nstars);
     1470    float  *EXT_WIDTH_MIN_ERR  ; ALLOCATE (EXT_WIDTH_MIN_ERR,  float , Nstars);
     1471    float  *EXT_THETA_ERR      ; ALLOCATE (EXT_THETA_ERR    ,  float , Nstars);
     1472    float  *EXT_PAR_07         ; ALLOCATE (EXT_PAR_07       ,  float , Nstars);
     1473
     1474    // assign the storage arrays
     1475    for (i = 0; i < Nstars; i++) {
     1476      float flux = pow (10.0, -0.4*M[i]);
     1477      float fSN = 1.0 / sqrt(flux);
     1478
     1479      double ra, dec;
     1480      XY_to_RD (&ra, &dec, X[i], Y[i], &coords);
     1481
     1482      IPP_IDET         [i] = i;
     1483      X_EXT            [i] = X[i];
     1484      Y_EXT            [i] = Y[i];
     1485      X_EXT_SIG        [i] = FX * fSN;
     1486      Y_EXT_SIG        [i] = FY * fSN;
     1487      SKY_EXT          [i] = 0.1;
     1488      RA_EXT           [i] = ra;
     1489      DEC_EXT          [i] = dec;
     1490      EXT_INST_MAG     [i] = M[i];
     1491      EXT_INST_MAG_SIG [i] = fSN;
     1492      EXT_CHISQ        [i] = 1.0;
     1493      EXT_NDOF         [i] = 10;
     1494      EXT_MODEL_TYPE   [i] = -1;
     1495      EXT_FLAGS        [i] = 0x0010;
     1496      PSF_INST_MAG     [i] = M[i];
     1497      AP_MAG           [i] = M[i];
     1498      KRON_MAG         [i] = M[i];
     1499      NPARAMS          [i] = 7;
     1500      EXT_WIDTH_MAJ    [i] = FX*2.8;
     1501      EXT_WIDTH_MIN    [i] = FY*2.8;
     1502      EXT_THETA        [i] = 0.57;
     1503      EXT_WIDTH_MAJ_ERR[i] = FX*0.28;
     1504      EXT_WIDTH_MIN_ERR[i] = FY*0.28;
     1505      EXT_THETA_ERR    [i] = 0.0057;
     1506      EXT_PAR_07       [i] = NAN;
     1507
     1508      strcpy (&MODEL_TYPE[15*i], "PS_MODEL_DEV");
     1509    }
     1510
     1511    // set the table data
     1512    gfits_set_bintable_column (&header, &ftable, "IPP_IDET"         , IPP_IDET         , Nstars);
     1513    gfits_set_bintable_column (&header, &ftable, "X_EXT"            , X_EXT            , Nstars);
     1514    gfits_set_bintable_column (&header, &ftable, "Y_EXT"            , Y_EXT            , Nstars);
     1515    gfits_set_bintable_column (&header, &ftable, "X_EXT_SIG"        , X_EXT_SIG        , Nstars);
     1516    gfits_set_bintable_column (&header, &ftable, "Y_EXT_SIG"        , Y_EXT_SIG        , Nstars);
     1517    gfits_set_bintable_column (&header, &ftable, "SKY_EXT"          , SKY_EXT          , Nstars);
     1518    gfits_set_bintable_column (&header, &ftable, "RA_EXT"           , RA_EXT           , Nstars);
     1519    gfits_set_bintable_column (&header, &ftable, "DEC_EXT"          , DEC_EXT          , Nstars);
     1520    gfits_set_bintable_column (&header, &ftable, "EXT_INST_MAG"     , EXT_INST_MAG     , Nstars);
     1521    gfits_set_bintable_column (&header, &ftable, "EXT_INST_MAG_SIG" , EXT_INST_MAG_SIG , Nstars);
     1522    gfits_set_bintable_column (&header, &ftable, "EXT_CHISQ"        , EXT_CHISQ        , Nstars);
     1523    gfits_set_bintable_column (&header, &ftable, "EXT_NDOF"         , EXT_NDOF         , Nstars);
     1524    gfits_set_bintable_column (&header, &ftable, "EXT_MODEL_TYPE"   , EXT_MODEL_TYPE   , Nstars);
     1525    gfits_set_bintable_column (&header, &ftable, "EXT_FLAGS"        , EXT_FLAGS        , Nstars);
     1526    gfits_set_bintable_column (&header, &ftable, "PSF_INST_MAG"     , PSF_INST_MAG     , Nstars);
     1527    gfits_set_bintable_column (&header, &ftable, "AP_MAG"           , AP_MAG           , Nstars);
     1528    gfits_set_bintable_column (&header, &ftable, "KRON_MAG"         , KRON_MAG         , Nstars);
     1529    gfits_set_bintable_column (&header, &ftable, "NPARAMS"          , NPARAMS          , Nstars);
     1530    gfits_set_bintable_column (&header, &ftable, "MODEL_TYPE"       , MODEL_TYPE       , Nstars);
     1531    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MAJ"    , EXT_WIDTH_MAJ    , Nstars);
     1532    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MIN"    , EXT_WIDTH_MIN    , Nstars);
     1533    gfits_set_bintable_column (&header, &ftable, "EXT_THETA"        , EXT_THETA        , Nstars);
     1534    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MAJ_ERR", EXT_WIDTH_MAJ_ERR, Nstars);
     1535    gfits_set_bintable_column (&header, &ftable, "EXT_WIDTH_MIN_ERR", EXT_WIDTH_MIN_ERR, Nstars);
     1536    gfits_set_bintable_column (&header, &ftable, "EXT_THETA_ERR"    , EXT_THETA_ERR    , Nstars);
     1537    gfits_set_bintable_column (&header, &ftable, "EXT_PAR_07"       , EXT_PAR_07       , Nstars);
     1538  }
     1539  /**/
     1540
     1541  gfits_fwrite_Theader (fits, &header);
     1542  gfits_fwrite_table  (fits, &ftable);
     1543  gfits_free_header (&header);
     1544  gfits_free_table (&ftable);
     1545
     1546  return TRUE;
     1547}
     1548
     1549static float psfFWHM[3] = {4.8, 6.0, 8.0};
     1550
     1551int WriteXRADtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars, int Nrad) {
     1552
     1553  int i, j, k;
     1554  Header header;
     1555  FTable ftable;
     1556
     1557  char extdata[80];
     1558  snprintf (extdata, 80, "%s.xrad", extroot);
     1559
     1560  /* Example Code to create a bintable */
     1561  {
     1562    gfits_create_table_header (&header, "BINTABLE", extdata);
     1563
     1564    // define the table layout
     1565    gfits_define_bintable_column (&header, "J",   "IPP_IDET"         , "no comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1566    gfits_define_bintable_column (&header, "E",   "X_APER"           , "no comment", NULL, 1.0, 0.0);
     1567    gfits_define_bintable_column (&header, "E",   "Y_APER"           , "no comment", NULL, 1.0, 0.0);
     1568    gfits_define_bintable_column (&header, "E",   "PSF_FWHM"         , "no comment", NULL, 1.0, 0.0);
     1569    gfits_define_bintable_column (&header, "9E",  "APER_FLUX"        , "no comment", NULL, 1.0, 0.0);
     1570    gfits_define_bintable_column (&header, "9E",  "APER_FLUX_ERR"    , "no comment", NULL, 1.0, 0.0);
     1571    gfits_define_bintable_column (&header, "9E",  "APER_FLUX_STDEV"  , "no comment", NULL, 1.0, 0.0);
     1572    gfits_define_bintable_column (&header, "9E",  "APER_FILL"        , "no comment", NULL, 1.0, 0.0);
     1573
     1574    // generate the output array that carries the data
     1575    gfits_create_table (&header, &ftable);
     1576
     1577    // create intermediate storage arrays
     1578    int    *IPP_IDET           ; ALLOCATE (IPP_IDET         ,  int   , Nrad*Nstars);
     1579    float  *X_APER             ; ALLOCATE (X_APER           ,  float , Nrad*Nstars);
     1580    float  *Y_APER             ; ALLOCATE (Y_APER           ,  float , Nrad*Nstars);
     1581    float  *PSF_FWHM           ; ALLOCATE (PSF_FWHM         ,  float , Nrad*Nstars);
     1582    float  *APER_FLUX          ; ALLOCATE (APER_FLUX        ,  float , Nrad*Nstars*9);
     1583    float  *APER_FLUX_ERR      ; ALLOCATE (APER_FLUX_ERR    ,  float , Nrad*Nstars*9);
     1584    float  *APER_FLUX_STDEV    ; ALLOCATE (APER_FLUX_STDEV  ,  float , Nrad*Nstars*9);
     1585    float  *APER_FILL          ; ALLOCATE (APER_FILL        ,  float , Nrad*Nstars*9);
     1586
     1587    // assign the storage arrays
     1588    for (i = 0; i < Nstars; i++) {
     1589      float flux = pow (10.0, -0.4*M[i]);
     1590      // float fSN = 1.0 / sqrt(flux);
     1591
     1592      for (k = 0; k < Nrad; k++) {
     1593        int N = Nrad*i + k;
     1594        IPP_IDET         [N] = i;
     1595        X_APER           [N] = X[i];
     1596        Y_APER           [N] = Y[i];
     1597        PSF_FWHM         [N] = psfFWHM[k];
     1598        for (j = 0; j < 9; j ++) {
     1599          float Flux = flux*(1.0 + 0.02*j - 0.2);
     1600          APER_FLUX      [j + 9*N] = Flux;
     1601          APER_FLUX_ERR  [j + 9*N] = sqrt(Flux);
     1602          APER_FLUX_STDEV[j + 9*N] = sqrt(Flux*1.1);
     1603          APER_FILL      [j + 9*N] = 0.9;
     1604        }
     1605      }
     1606    }
     1607
     1608    // set the table data
     1609    gfits_set_bintable_column (&header, &ftable, "IPP_IDET"         , IPP_IDET         , Nrad*Nstars);
     1610    gfits_set_bintable_column (&header, &ftable, "X_APER"           , X_APER           , Nrad*Nstars);
     1611    gfits_set_bintable_column (&header, &ftable, "Y_APER"           , Y_APER           , Nrad*Nstars);
     1612    gfits_set_bintable_column (&header, &ftable, "PSF_FWHM"         , PSF_FWHM         , Nrad*Nstars);
     1613    gfits_set_bintable_column (&header, &ftable, "APER_FLUX"        , APER_FLUX        , Nrad*Nstars);
     1614    gfits_set_bintable_column (&header, &ftable, "APER_FLUX_ERR"    , APER_FLUX_ERR    , Nrad*Nstars);
     1615    gfits_set_bintable_column (&header, &ftable, "APER_FLUX_STDEV"  , APER_FLUX_STDEV  , Nrad*Nstars);
     1616    gfits_set_bintable_column (&header, &ftable, "APER_FILL"        , APER_FILL        , Nrad*Nstars);
     1617  }
     1618  /**/
     1619
     1620  gfits_fwrite_Theader (fits, &header);
     1621  gfits_fwrite_table  (fits, &ftable);
     1622  gfits_free_header (&header);
     1623  gfits_free_table (&ftable);
     1624
     1625  return TRUE;
     1626}
     1627
     1628int WriteDETFtable (FILE *fits, char *extroot, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
     1629  return TRUE;
     1630}
     1631
     1632int WriteDummyTable (FILE *fits) {
     1633
     1634  Header header;
     1635  FTable ftable;
     1636
     1637  /* Example Code to create a bintable
     1638  {
     1639    gfits_create_table_header (&header, "BINTABLE", extroot);
     1640
     1641    // define the table layout
     1642    gfits_define_bintable_column (&header, "D", "NAME", "comment", NULL, 1.0, 0.0);
     1643    gfits_define_bintable_column (&header, "E", "NAME", "comment", NULL, 1.0, 0.0);
     1644    gfits_define_bintable_column (&header, "J", "NAME", "comment", NULL, 1.0, FT_BZERO_INT32); // unsigned
     1645    gfits_define_bintable_column (&header, "I", "NAME", "comment", NULL, 1.0, FT_BZERO_INT16); // unsigned
     1646
     1647    // generate the output array that carries the data
     1648    gfits_create_table (&header, &ftable);
     1649
     1650    // create intermediate storage arrays
     1651    double *R; ALLOCATE (R,  double, Nvalue);
     1652    float  *M; ALLOCATE (M,  float , Nvalue);
     1653    int    *I; ALLOCATE (I,  int   , Nvalue);
     1654    short  *P; ALLOCATE (P,  short , Nvalue);
     1655
     1656    // assign the storage arrays
     1657    for (i = 0; Nvalue; i++) {
     1658      R[i] = value;
     1659      M[i] = value;
     1660      I[i] = value;
     1661      P[i] = value;
     1662    }
     1663
     1664    // set the table data
     1665    gfits_set_bintable_column (&header, &ftable, "NAME", R, catalog->Nmeasure);
     1666    gfits_set_bintable_column (&header, &ftable, "NAME", M, catalog->Nmeasure);
     1667    gfits_set_bintable_column (&header, &ftable, "NAME", I, catalog->Nmeasure);
     1668    gfits_set_bintable_column (&header, &ftable, "NAME", P, catalog->Nmeasure);
     1669  }
     1670  */
     1671
     1672  gfits_fwrite_Theader (fits, &header);
     1673  gfits_fwrite_table  (fits, &ftable);
     1674  gfits_free_header (&header);
     1675  gfits_free_table (&ftable);
     1676 
     1677  return TRUE;
     1678}
     1679
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/resort_catalog.c

    r38744 r38983  
    22
    33void SortAveMatch (off_t *MEAS, off_t *AVE, off_t N);
    4 void resort_catalog_measure (Catalog *catalog);
    5 void resort_catalog_lensing (Catalog *catalog);
    6 void resort_catalog_starpar (Catalog *catalog);
    7 
    8 void resort_catalog_old (Catalog *catalog) {
    9 
    10   off_t *next_meas, *next_lens;
    11   off_t Naves, Nmeas, Nlens;
    12 
    13   if (catalog[0].sorted == TRUE) return;
    14 
    15   INITTIME;
    16 
    17   /* internal counters */
    18   Nmeas = catalog[0].Nmeasure;
    19   Nlens = catalog[0].Nlensing;
    20   Naves = catalog[0].Naverage;
    21  
    22   /* set up pointers for linked list of measure, missing */
    23   next_meas = build_measure_links (catalog[0].average, Naves, catalog[0].measure, Nmeas);
    24   next_lens = build_lensing_links (catalog[0].average, Naves, catalog[0].lensing, Nlens);
    25 
    26   catalog[0].sorted = TRUE;
    27   catalog[0].measure = sort_measure (catalog[0].average, Naves, catalog[0].measure, Nmeas, next_meas);
    28   catalog[0].lensing = sort_lensing (catalog[0].average, Naves, catalog[0].lensing, Nlens, next_lens);
    29 
    30   MARKTIME ("  match time %9.4f sec for %7lld measures, %6lld average\n", dtime, (long long) Nmeas, (long long) Naves);
    31 
    32   return;
    33 }
    344
    355void resort_catalog (Catalog *catalog) {
     
    4010  resort_catalog_lensing (catalog);
    4111  resort_catalog_starpar (catalog);
     12  resort_catalog_galphot (catalog);
     13  catalog[0].sorted = TRUE;
    4214}
    4315
     
    8355      // earlier formats did not carry the objID or catID, so they are not available (we could assign on load, but we don't)
    8456      myAssert(average[averageSeq[i]].catID == measure[measureSeq[i]].catID, "object / detection mismatch");
     57      myAssert (average[averageSeq[i]].objID == measure[measureSeq[i]].objID, "object ID mismatch?");
     58# if (0)
    8559      // myAssert(average[averageSeq[i]].objID == measure[measureSeq[i]].objID, "object / detection mismatch");
    8660
     
    10781        }
    10882      }
     83# endif
    10984# if (0)
    11085      // for reasons I do not understand, the mini dvodbs generated on stsci1X had a handful of detections with an inconsistency between averef and objID. 
     
    193168  // MARKTIME("  match time %9.4f sec for %7lld measures, %6lld average\n", dtime, (long long) Nmeasure, (long long) Naverage);
    194169
    195   catalog[0].sorted = TRUE;
    196 
    197170  FREE (measureSeq);
    198171  FREE (averageSeq);
     
    246219  }
    247220 
    248   // check that averageSeq is now in order
    249   // for (i = 1; i < Nlensing; i++) {
    250   //   if (averageSeq[i] < averageSeq[i-1]) {
    251   //     fprintf (stderr, "%d ", (int) i);
    252   //   }
    253   // }
    254   // fprintf (stderr, "\n");
    255 
    256221  SortAveMatch(lensingSeq, averageSeq, Nlensing);
    257   // MARKTIME("sort : %f sec\n", dtime);
    258 
    259   // check that averageSeq is now in order
    260   // for (i = 1; i < Nlensing; i++) {
    261   //   if (averageSeq[i] < averageSeq[i-1]) {
    262   //     fprintf (stderr, "%d ", (int) i);
    263   //   }
    264   // }
    265   // fprintf (stderr, "\n");
    266222
    267223  // copy the lensing entries in the sorted order
     
    271227    lensingTMP[i] = lensing[j];
    272228  }
    273   // MARKTIME("assign lensing : %f sec\n", dtime);
    274229
    275230  // update the values of average.lensingOffset and average.Nlensing
     
    290245    N++;
    291246  }
    292   // N++;
    293247  average[currentAve].Nlensing = N;
    294   // MARKTIME("update Nlensing : %f sec\n", dtime);
    295248
    296249  int NlensingTotal = 0;
     
    318271    fprintf (stderr, "ERROR: catalog %s has an invalid Nlensing\n", catalog[0].filename);
    319272  }
    320 
    321   // MARKTIME("  match time %9.4f sec for %7lld lensings, %6lld average\n", dtime, (long long) Nlensing, (long long) Naverage);
    322 
    323   catalog[0].sorted = TRUE;
    324273
    325274  FREE (lensingSeq);
     
    374323  }
    375324 
    376   // check that averageSeq is now in order
    377   // for (i = 1; i < Nstarpar; i++) {
    378   //   if (averageSeq[i] < averageSeq[i-1]) {
    379   //     fprintf (stderr, "%d ", (int) i);
    380   //   }
    381   // }
    382   // fprintf (stderr, "\n");
    383 
    384325  SortAveMatch(starparSeq, averageSeq, Nstarpar);
    385   // MARKTIME("sort : %f sec\n", dtime);
    386 
    387   // check that averageSeq is now in order
    388   // for (i = 1; i < Nstarpar; i++) {
    389   //   if (averageSeq[i] < averageSeq[i-1]) {
    390   //     fprintf (stderr, "%d ", (int) i);
    391   //   }
    392   // }
    393   // fprintf (stderr, "\n");
    394326
    395327  // copy the starpar entries in the sorted order
     
    399331    starparTMP[i] = starpar[j];
    400332  }
    401   // MARKTIME("assign starpar : %f sec\n", dtime);
    402333
    403334  // update the values of average.starparOffset and average.Nstarpar
     
    418349    N++;
    419350  }
    420   // N++;
    421351  average[currentAve].Nstarpar = N;
    422   // MARKTIME("update Nstarpar : %f sec\n", dtime);
    423352
    424353  int NstarparTotal = 0;
     
    447376  }
    448377
    449   // MARKTIME("  match time %9.4f sec for %7lld starpars, %6lld average\n", dtime, (long long) Nstarpar, (long long) Naverage);
    450 
    451   catalog[0].sorted = TRUE;
    452 
    453378  FREE (starparSeq);
     379  FREE (averageSeq);
     380
     381  return;
     382}
     383
     384void resort_catalog_galphot (Catalog *catalog) {
     385
     386  off_t Naverage, Ngalphot;
     387  GalPhot *galphot;
     388  Average *average;
     389  off_t i, j, N, currentAve;
     390
     391  off_t *galphotSeq = NULL;
     392  off_t *averageSeq = NULL;
     393  GalPhot *galphotTMP = NULL;
     394
     395  // struct timeval start, stop;
     396  // gettimeofday (&start, NULL);
     397
     398  /* internal counters */
     399  Ngalphot = catalog[0].Ngalphot;
     400  Naverage = catalog[0].Naverage;
     401
     402  if (!Ngalphot) return;
     403
     404  galphot = catalog[0].galphot;
     405  average = catalog[0].average;
     406 
     407  // we have a table of average objects and an unsorted table of measurements.  each measurement
     408  // has a reference to the average object sequence (as well as an ID)
     409  // galphot[i].averef -> average[averef]
     410  // galphot[i].objID = average[averef].objID
     411  // galphot[i].catID = average[averef].catID
     412
     413  // we want a sorted galphot array with all averef entries in sequence
     414
     415  ALLOCATE (galphotSeq, off_t,   Ngalphot);
     416  ALLOCATE (averageSeq, off_t,   Ngalphot);
     417
     418  for (i = 0; i < Ngalphot; i++) {
     419    galphotSeq[i] = i;
     420    averageSeq[i] = galphot[i].averef;
     421   
     422    if (catalog[0].catformat >= DVO_FORMAT_PS1_V1) {
     423      // earlier formats did not carry the objID or catID, so they are not available (we could assign on load, but we don't)
     424      myAssert(average[averageSeq[i]].catID == galphot[galphotSeq[i]].catID, "object / detection mismatch");
     425      myAssert(average[averageSeq[i]].objID == galphot[galphotSeq[i]].objID, "object / detection mismatch");
     426    }
     427  }
     428 
     429  SortAveMatch(galphotSeq, averageSeq, Ngalphot);
     430
     431  // copy the galphot entries in the sorted order
     432  ALLOCATE (galphotTMP, GalPhot, Ngalphot);
     433  for (i = 0; i < Ngalphot; i++) {
     434    j = galphotSeq[i];
     435    galphotTMP[i] = galphot[j];
     436  }
     437
     438  // update the values of average.galphotOffset and average.Ngalphot
     439  FREE(galphot);
     440  catalog[0].galphot = galphotTMP;
     441
     442  N = 0;
     443  currentAve = averageSeq[0];
     444  average[currentAve].galphotOffset = 0;
     445  for (i = 0; i < Ngalphot; i++) {
     446    if (averageSeq[i] != currentAve) {
     447      // we have hit the next entry in the list
     448      average[currentAve].Ngalphot = N;
     449      N = 0;
     450      currentAve = averageSeq[i];
     451      average[currentAve].galphotOffset = i;
     452    }
     453    N++;
     454  }
     455  average[currentAve].Ngalphot = N;
     456
     457  int NgalphotTotal = 0;
     458  int galphotOffsetOK = TRUE;
     459  for (i = 0; i < Naverage; i++) {
     460    NgalphotTotal += catalog[0].average[i].Ngalphot;
     461    if (VERBOSE && !(NgalphotTotal <= catalog[0].Ngalphot)) {
     462      fprintf (stderr, "too few galphot: %d %d %d\n", (int) i, NgalphotTotal, (int) catalog[0].Ngalphot);
     463    }
     464    galphotOffsetOK &= (catalog[0].average[i].galphotOffset < catalog[0].Ngalphot);
     465    if (VERBOSE && !(catalog[0].average[i].galphotOffset < catalog[0].Ngalphot)) {
     466      fprintf (stderr, "offset too large: %d %d %d\n", (int) i, catalog[0].average[i].Ngalphot, (int) catalog[0].Ngalphot);
     467    }
     468    galphotOffsetOK &= (catalog[0].average[i].galphotOffset + catalog[0].average[i].Ngalphot <= catalog[0].Ngalphot);
     469    if (VERBOSE && !(catalog[0].average[i].galphotOffset + catalog[0].average[i].Ngalphot <= catalog[0].Ngalphot)) {
     470      fprintf (stderr, "orrset + Ngalphot too large: %d + %d > %d %d\n", (int) i, catalog[0].average[i].galphotOffset, catalog[0].average[i].Ngalphot, (int) catalog[0].Ngalphot);
     471    }
     472  }
     473
     474  if (!galphotOffsetOK) {
     475    fprintf (stderr, "ERROR: catalog %s has an invalid galphotOffset\n", catalog[0].filename);
     476  }
     477
     478  if (NgalphotTotal != catalog[0].Ngalphot) {
     479    fprintf (stderr, "ERROR: catalog %s has an invalid Ngalphot\n", catalog[0].filename);
     480  }
     481
     482  FREE (galphotSeq);
    454483  FREE (averageSeq);
    455484
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/resort_threaded.c

    r38618 r38983  
    7272    // this is an overloaded value to mean 'force sort'
    7373    if (threadData->forcesort) catalog.sorted = FALSE;
    74 
    75     if (OLD_RESORT) {
    76       resort_catalog_old (&catalog);
    77     } else {
    78       resort_catalog (&catalog);
    79     }
     74    resort_catalog (&catalog);
    8075
    8176    /* report total updated values */
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/src/resort_unthreaded.c

    r38618 r38983  
    4242    }
    4343
    44     // this is an overloaded value to mean 'force sort'
     44    // to force the sort, we need to set sorted 'false'
    4545    if (ForceSort) catalog.sorted = FALSE;
    46 
    47     if (OLD_RESORT) {
    48       resort_catalog_old (&catalog);
    49     } else {
    50       resort_catalog (&catalog);
    51     }
     46    resort_catalog (&catalog);
    5247
    5348    // report total updated values
  • branches/eam_branches/ipp-20150625/Ohana/src/addstar/test

  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/Makefile

    r37923 r38983  
    3232$(SRC)/insert_FWobjects_dvopsps.$(ARCH).o \
    3333$(SRC)/insert_FWobjects_dvopsps_catalog.$(ARCH).o \
     34$(SRC)/insert_FGshape_dvopsps.$(ARCH).o \
     35$(SRC)/insert_FGshape_dvopsps_catalog.$(ARCH).o \
    3436$(SRC)/insert_diffobj_dvopsps.$(ARCH).o \
    3537$(SRC)/insert_diffobj_dvopsps_catalog.$(ARCH).o \
     
    5254$(SRC)/insert_FWobjects_dvopsps.$(ARCH).o \
    5355$(SRC)/insert_FWobjects_dvopsps_catalog.$(ARCH).o \
     56$(SRC)/insert_FGshape_dvopsps.$(ARCH).o \
     57$(SRC)/insert_FGshape_dvopsps_catalog.$(ARCH).o \
    5458$(SRC)/insert_diffobj_dvopsps.$(ARCH).o \
    5559$(SRC)/insert_diffobj_dvopsps_catalog.$(ARCH).o \
  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/include/dvopsps.h

    r38592 r38983  
    2020  float decErr;
    2121  float zp;
     22  float zpFactor;
    2223  float telluricExt;
    2324  float airmass;
     
    115116int    insert_FWobjects_mysql_commit        PROTO((IOBuffer *ave_buffer, IOBuffer *sec_buffer, IOBuffer *cpy_buffer, MYSQL *mysql));
    116117
     118int    insert_FGshape_dvopsps               PROTO((void));
     119int    insert_FGshape_dvopsps_parallel      PROTO((SkyList *sky));
     120int    insert_FGshape_dvopsps_catalog       PROTO((Catalog *catalog, char *basename, MYSQL *mysql));
     121                                         
     122int    insert_FGshape_mysql_create_tables   PROTO((char *basename, MYSQL *mysql));
     123int    insert_FGshape_mysql_init            PROTO((IOBuffer *ave_buffer, IOBuffer *cpy_buffer, char *basename));
     124int    insert_FGshape_mysql_value           PROTO((IOBuffer *ave_buffer, IOBuffer *cpy_buffer, Average *average, GalPhot *galphot, int Ngalphot));
     125int    insert_FGshape_mysql_commit          PROTO((IOBuffer *ave_buffer, IOBuffer *cpy_buffer, MYSQL *mysql));
     126
    117127int    insert_skytable                    PROTO((void));
    118128
  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/src/dvopsps.c

    r37923 r38983  
    2121    status = insert_FWobjects_dvopsps ();
    2222  }
     23  if (!strcasecmp (argv[1], "forced_galaxy_shape")) {
     24    status = insert_FGshape_dvopsps ();
     25  }
    2326  if (!strcasecmp (argv[1], "skytable")) {
    2427    status = insert_skytable ();
     
    3033  }
    3134
    32   if (!status) exit (1);
     35  if (!status) {
     36    fprintf (stdout, "ERROR running dvopsps!\n");
     37    exit (1);
     38  }
     39  fprintf (stdout, "SUCCESS!\n");
    3340  exit (0);
    3441}
  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/src/dvopsps_client.c

    r37923 r38983  
    2828    status = insert_FWobjects_dvopsps ();
    2929  }
     30  if (!strcasecmp (argv[1], "forced_galaxy_shape")) {
     31    status = insert_FGshape_dvopsps ();
     32  }
    3033  if (status == -1) {
    3134    fprintf (stderr, "invalid mode, should be : detections, skytable\n");
  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/src/initialize_dvopsps.c

    r37672 r38983  
    2121  fprintf (stderr, "\n");
    2222
    23   fprintf (stderr, " (mode) is one of detections, objects, forced_warp_objects, skytable\n");
     23  fprintf (stderr, " (mode) is one of detections, objects, forced_warp_objects, forced_galaxy_shaoe, skytable\n");
    2424
    2525  fprintf (stderr, "\n");
  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c

    r38643 r38983  
    183183
    184184  PrintIOBuffer (buffer, "INSERT INTO dvoDetectionFull (objID, detectID, ippObjID, ippDetectID, imageID, catID, ");
    185   PrintIOBuffer (buffer, "ra, dec_, raErr, decErr, zp, telluricExt, airmass, expTime, ");
     185  PrintIOBuffer (buffer, "ra, dec_, raErr, decErr, zp, zpFactor, telluricExt, airmass, expTime, ");
    186186  PrintIOBuffer (buffer, "Mpsf, dMpsf, Mkron, dMkron, Map, dMap, flags) VALUES \n");
    187187
     
    253253  PRINT_FLOAT(buffer, detection->decErr,      "%.6f, ");
    254254  PRINT_FLOAT(buffer, detection->zp,          "%.6f, ");
     255  PRINT_FLOAT(buffer, detection->zpFactor,    "%.6e, ");
    255256  PRINT_FLOAT(buffer, detection->telluricExt, "%.6f, ");
    256257  PRINT_FLOAT(buffer, detection->airmass,     "%.6f, ");
     
    307308  float nominalZP   = code->C * 0.001 + code->K * (measure->airmass - 1);
    308309  float zp          = nominalZP - measure->Mcal;
     310  float zpFactor    = pow(10.0, -0.4*zp + 3.56);
    309311  float telluricExt = - measure->Mcal;
    310312  float expTime     = pow(10.0, 0.4 * measure->dt);
     
    324326
    325327  detection->zp           = zp;
     328  detection->zpFactor     = zpFactor;
    326329  detection->telluricExt  = telluricExt;
    327330  detection->airmass      = airmass;
  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c

    r37807 r38983  
    4343    // fprintf (stderr, "%f : %d %d %d\n", average[i].ChiSqPM, isinf(average[i].ChiSqPM), isnan(average[i].ChiSqPM), isfinite(average[i].ChiSqPM));
    4444
    45     // Average is a bigger table, but Nsecfilt*secfilt might be bigger, so check both
     45    // Average is a big table, but Nsecfilt*secfilt might be bigger, so check both
    4646    if ((ave_buffer.Nbuffer > MAX_BUFFER) || (sec_buffer.Nbuffer > MAX_BUFFER)) {
    4747      insert_objects_mysql_commit (&ave_buffer, &sec_buffer, mysql);
    4848      if (DEBUG) fprintf (stderr, "inserted %d rows\n", Ninsert);
    4949      Ninsert = 0;
    50       if (0) {
    51         FlushIOBuffer (&ave_buffer);
    52         FlushIOBuffer (&sec_buffer);
    53       } else {
    54         ave_buffer.Nbuffer = 0;
    55         bzero (ave_buffer.buffer, ave_buffer.Nalloc);
    56         sec_buffer.Nbuffer = 0;
    57         bzero (sec_buffer.buffer, sec_buffer.Nalloc);
    58       }
     50      ave_buffer.Nbuffer = 0;
     51      bzero (ave_buffer.buffer, ave_buffer.Nalloc);
     52      sec_buffer.Nbuffer = 0;
     53      bzero (sec_buffer.buffer, sec_buffer.Nalloc);
    5954      insert_objects_mysql_init (&ave_buffer, &sec_buffer, cleanname);
    6055    }
  • branches/eam_branches/ipp-20150625/Ohana/src/dvopsps/src/insert_skytable.c

    r37048 r38983  
    6464  }
    6565
    66   PrintIOBuffer (buffer, "INSERT INTO dvoSkyTable (R_MIN, R_MAX, D_MIN, D_MAX, INDEX_, NAME) VALUES \n");
     66  PrintIOBuffer (buffer, "INSERT INTO dvoSkyTable (R_MIN, R_MAX, D_MIN, D_MAX, REGION_ID, NAME) VALUES \n");
    6767
    6868  return TRUE;
  • branches/eam_branches/ipp-20150625/Ohana/src/getstar/src/MatchImages.c

    r38597 r38983  
    2424  /* for mosaic astrometry, the grid should be w.r.t. the tangent-plane, not chip coords */
    2525
    26   InitCoords (&tcoords, "DEC--ARC");
     26  InitCoords (&tcoords, "DEC--TAN");
    2727  tcoords.cdelt1 = tcoords.cdelt2 = 1.0 / 3600.0;
    2828
    2929  tcoords.crval1 = image[0].coords.crval1;
    3030  tcoords.crval2 = image[0].coords.crval2;
     31
    3132  if (!strcmp (&image[0].coords.ctype[4], "-WRP")) {
    3233    myAssert (image[0].coords.mosaic, "should already have tested this");
  • branches/eam_branches/ipp-20150625/Ohana/src/libautocode/def/average.d

    r38712 r38983  
    4141FIELD Nlensing,       NLENSING,    unsigned short,  number of lensing measurements
    4242FIELD Nlensobj,       NLENSOBJ,    unsigned short,  number of lensing measurements
    43 FIELD Ngalphot,      NGALPHOT,   unsigned short,  number of galphot measurements
     43FIELD Ngalphot,       NGALPHOT,    unsigned short,  number of galphot measurements
    4444
    4545FIELD measureOffset,  OFF_MEASURE,  int,             offset to first psf measurement
  • branches/eam_branches/ipp-20150625/Ohana/src/libautocode/def/cmf-ps1-v5-lensing-alt.d

    r37729 r38983  
    5757FIELD M4s,            MOMENTS_M4S,       float,    fourth moment sin(t),  pixels^4
    5858
    59 FIELD X11_sm_obj,     X11_SM_OBJ,        float,    lensing smear
    60 FIELD X12_sm_obj,     X12_SM_OBJ,        float,    lensing smear
    61 FIELD X22_sm_obj,     X22_SM_OBJ,        float,    lensing smear
    62 FIELD E1_sm_obj,      E1_SM_OBJ,         float,    lensing smear
    63 FIELD E2_sm_obj,      E2_SM_OBJ,         float,    lensing smear
    64 
    65 FIELD X11_sh_obj,     X11_SH_OBJ,        float,    lensing shear
    66 FIELD X12_sh_obj,     X12_SH_OBJ,        float,    lensing shear
    67 FIELD X22_sh_obj,     X22_SH_OBJ,        float,    lensing shear
    68 FIELD E1_sh_obj,      E1_SH_OBJ,         float,    lensing shear
    69 FIELD E2_sh_obj,      E2_SH_OBJ,         float,    lensing shear
    70 
    71 FIELD X11_sm_psf,     X11_SM_PSF,        float,    lensing smear
    72 FIELD X12_sm_psf,     X12_SM_PSF,        float,    lensing smear
    73 FIELD X22_sm_psf,     X22_SM_PSF,        float,    lensing smear
    74 FIELD E1_sm_psf,      E1_SM_PSF,         float,    lensing smear
    75 FIELD E2_sm_psf,      E2_SM_PSF,         float,    lensing smear
    76 
    77 FIELD X11_sh_psf,     X11_SH_PSF,        float,    lensing shear
    78 FIELD X12_sh_psf,     X12_SH_PSF,        float,    lensing shear
    79 FIELD X22_sh_psf,     X22_SH_PSF,        float,    lensing shear
    80 FIELD E1_sh_psf,      E1_SH_PSF,         float,    lensing shear
    81 FIELD E2_sh_psf,      E2_SH_PSF,         float,    lensing shear
     59FIELD X11_sm_obj,     LENS_X11_SM_OBJ,   float,    lensing smear
     60FIELD X12_sm_obj,     LENS_X12_SM_OBJ,   float,    lensing smear
     61FIELD X22_sm_obj,     LENS_X22_SM_OBJ,   float,    lensing smear
     62FIELD E1_sm_obj,      LENS_E1_SM_OBJ,    float,    lensing smear
     63FIELD E2_sm_obj,      LENS_E2_SM_OBJ,    float,    lensing smear
     64FIELD X11_sh_obj,     LENS_X11_SH_OBJ,   float,    lensing shear
     65FIELD X12_sh_obj,     LENS_X12_SH_OBJ,   float,    lensing shear
     66FIELD X22_sh_obj,     LENS_X22_SH_OBJ,   float,    lensing shear
     67FIELD E1_sh_obj,      LENS_E1_SH_OBJ,    float,    lensing shear
     68FIELD E2_sh_obj,      LENS_E2_SH_OBJ,    float,    lensing shear
     69FIELD X11_sm_psf,     LENS_X11_SM_PSF,   float,    lensing smear
     70FIELD X12_sm_psf,     LENS_X12_SM_PSF,   float,    lensing smear
     71FIELD X22_sm_psf,     LENS_X22_SM_PSF,   float,    lensing smear
     72FIELD E1_sm_psf,      LENS_E1_SM_PSF,    float,    lensing smear
     73FIELD E2_sm_psf,      LENS_E2_SM_PSF,    float,    lensing smear
     74FIELD X11_sh_psf,     LENS_X11_SH_PSF,   float,    lensing shear
     75FIELD X12_sh_psf,     LENS_X12_SH_PSF,   float,    lensing shear
     76FIELD X22_sh_psf,     LENS_X22_SH_PSF,   float,    lensing shear
     77FIELD E1_sh_psf,      LENS_E1_SH_PSF,    float,    lensing shear
     78FIELD E2_sh_psf,      LENS_E2_SH_PSF,    float,    lensing shear
    8279
    8380FIELD Mr1,            MOMENTS_R1,        float,    first radial moment,   pixels
  • branches/eam_branches/ipp-20150625/Ohana/src/libautocode/def/cmf-ps1-v5-lensing.d

    r37729 r38983  
    5757FIELD M4s,            MOMENTS_M4S,       float,    fourth moment sin(t),  pixels^4
    5858
    59 FIELD X11_sm_obj,     X11_SM_OBJ,        float,    lensing smear
    60 FIELD X12_sm_obj,     X12_SM_OBJ,        float,    lensing smear
    61 FIELD X22_sm_obj,     X22_SM_OBJ,        float,    lensing smear
    62 FIELD E1_sm_obj,      E1_SM_OBJ,         float,    lensing smear
    63 FIELD E2_sm_obj,      E2_SM_OBJ,         float,    lensing smear
    64 
    65 FIELD X11_sh_obj,     X11_SH_OBJ,        float,    lensing shear
    66 FIELD X12_sh_obj,     X12_SH_OBJ,        float,    lensing shear
    67 FIELD X22_sh_obj,     X22_SH_OBJ,        float,    lensing shear
    68 FIELD E1_sh_obj,      E1_SH_OBJ,         float,    lensing shear
    69 FIELD E2_sh_obj,      E2_SH_OBJ,         float,    lensing shear
    70 
    71 FIELD X11_sm_psf,     X11_SM_PSF,        float,    lensing smear
    72 FIELD X12_sm_psf,     X12_SM_PSF,        float,    lensing smear
    73 FIELD X22_sm_psf,     X22_SM_PSF,        float,    lensing smear
    74 FIELD E1_sm_psf,      E1_SM_PSF,         float,    lensing smear
    75 FIELD E2_sm_psf,      E2_SM_PSF,         float,    lensing smear
    76 
    77 FIELD X11_sh_psf,     X11_SH_PSF,        float,    lensing shear
    78 FIELD X12_sh_psf,     X12_SH_PSF,        float,    lensing shear
    79 FIELD X22_sh_psf,     X22_SH_PSF,        float,    lensing shear
    80 FIELD E1_sh_psf,      E1_SH_PSF,         float,    lensing shear
    81 FIELD E2_sh_psf,      E2_SH_PSF,         float,    lensing shear
     59FIELD X11_sm_obj,     LENS_X11_SM_OBJ,   float,    lensing smear
     60FIELD X12_sm_obj,     LENS_X12_SM_OBJ,   float,    lensing smear
     61FIELD X22_sm_obj,     LENS_X22_SM_OBJ,   float,    lensing smear
     62FIELD E1_sm_obj,      LENS_E1_SM_OBJ,    float,    lensing smear
     63FIELD E2_sm_obj,      LENS_E2_SM_OBJ,    float,    lensing smear
     64FIELD X11_sh_obj,     LENS_X11_SH_OBJ,   float,    lensing shear
     65FIELD X12_sh_obj,     LENS_X12_SH_OBJ,   float,    lensing shear
     66FIELD X22_sh_obj,     LENS_X22_SH_OBJ,   float,    lensing shear
     67FIELD E1_sh_obj,      LENS_E1_SH_OBJ,    float,    lensing shear
     68FIELD E2_sh_obj,      LENS_E2_SH_OBJ,    float,    lensing shear
     69FIELD X11_sm_psf,     LENS_X11_SM_PSF,   float,    lensing smear
     70FIELD X12_sm_psf,     LENS_X12_SM_PSF,   float,    lensing smear
     71FIELD X22_sm_psf,     LENS_X22_SM_PSF,   float,    lensing smear
     72FIELD E1_sm_psf,      LENS_E1_SM_PSF,    float,    lensing smear
     73FIELD E2_sm_psf,      LENS_E2_SM_PSF,    float,    lensing smear
     74FIELD X11_sh_psf,     LENS_X11_SH_PSF,   float,    lensing shear
     75FIELD X12_sh_psf,     LENS_X12_SH_PSF,   float,    lensing shear
     76FIELD X22_sh_psf,     LENS_X22_SH_PSF,   float,    lensing shear
     77FIELD E1_sh_psf,      LENS_E1_SH_PSF,    float,    lensing shear
     78FIELD E2_sh_psf,      LENS_E2_SH_PSF,    float,    lensing shear
    8279
    8380FIELD srcChipNum,     SRC_CHIP_NUM,      short,    source chip in warp
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/include/dvo.h

    r38752 r38983  
    12171217# undef LENSFIELD
    12181218
     1219# define GALPHOT_FIELD(NAME, VALUE) float GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot)
     1220
     1221GALPHOT_FIELD(GAL_MAG,         mag);           
     1222GALPHOT_FIELD(GAL_MAG_ERR,     magErr);   
     1223GALPHOT_FIELD(GAL_MAJ,         majorAxis);             
     1224GALPHOT_FIELD(GAL_MAJ_ERR,     majorAxisErr);
     1225GALPHOT_FIELD(GAL_MIN,         minorAxis);             
     1226GALPHOT_FIELD(GAL_MIN_ERR,     minorAxisErr);   
     1227GALPHOT_FIELD(GAL_THETA,       theta);     
     1228GALPHOT_FIELD(GAL_THETA_ERR,   thetaErr); 
     1229GALPHOT_FIELD(GAL_INDEX,       index);     
     1230GALPHOT_FIELD(GAL_CHISQ,       chisq);     
     1231GALPHOT_FIELD(GAL_NPIX,        Npix);       
     1232GALPHOT_FIELD(GAL_TYPE,        modelType);       
     1233
     1234# undef GALPHOT_FIELD
     1235
    12191236# endif // DVO_H
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/include/dvodb.h

    r38581 r38983  
    9797  MAG_OPTION_E1,
    9898  MAG_OPTION_E2,
     99
     100  MAG_OPTION_GAL_MAG,
     101  MAG_OPTION_GAL_MAG_ERR,
     102  MAG_OPTION_GAL_MAJ,
     103  MAG_OPTION_GAL_MAJ_ERR,
     104  MAG_OPTION_GAL_MIN,
     105  MAG_OPTION_GAL_MIN_ERR,
     106  MAG_OPTION_GAL_THETA,
     107  MAG_OPTION_GAL_THETA_ERR,
     108  MAG_OPTION_GAL_INDEX,
     109  MAG_OPTION_GAL_CHISQ,
     110  MAG_OPTION_GAL_NPIX,
     111  MAG_OPTION_GAL_TYPE,       
    99112} dvoMagOptionType;
    100113
     
    107120  MAG_CLASS_KRON,
    108121  MAG_CLASS_APER,
     122  MAG_CLASS_DEV, // DeVaucouleur Model (only for galphot)
     123  MAG_CLASS_EXP, // Exponential Model (only for galphot)
     124  MAG_CLASS_SER, // Sersic Model (only for galphot)
    109125} dvoMagClassType;
    110126
     
    484500int          ParseImageField        PROTO((dbField *field, char *fieldName));
    485501
    486 dbValue      dbExtractAverages      PROTO((Average *average, SecFilt *secfilt, Measure *measure, Lensobj *lensobj, StarPar *starpar, dbField *field));
     502dbValue      dbExtractAverages      PROTO((Average *average, SecFilt *secfilt, Measure *measure, Lensobj *lensobj, StarPar *starpar, GalPhot *galphot, dbField *field));
    487503dbValue      dbExtractMeasures      PROTO((Average *average, SecFilt *secfilt, Measure *measure, Lensing *lensing, StarPar *starpar, dbField *field));
    488504dbValue      dbExtractImages        PROTO((Image *image, off_t Nimage, off_t N, dbField *field));
     
    497513int dbFieldNeedLensing (dbField *fields, int Nfields);
    498514int dbFieldNeedStarpar (dbField *fields, int Nfields, int isAverage);
     515int dbFieldNeedGalphot (dbField *fields, int Nfields);
    499516
    500517void FreeImageSelection (void);
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/cmf-ps1-v5-r0-lensing.c

    r37992 r38983  
    269269  gfits_define_bintable_column (header, "E",    "MOMENTS_M4C",      "fourth moment cos(t)",            "pixels^4",          1.0, 0.0);
    270270  gfits_define_bintable_column (header, "E",    "MOMENTS_M4S",      "fourth moment sin(t)",            "pixels^4",          1.0, 0.0);
    271   gfits_define_bintable_column (header, "E",    "X11_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    272   gfits_define_bintable_column (header, "E",    "X12_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    273   gfits_define_bintable_column (header, "E",    "X22_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    274   gfits_define_bintable_column (header, "E",    "E1_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    275   gfits_define_bintable_column (header, "E",    "E2_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    276   gfits_define_bintable_column (header, "E",    "X11_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    277   gfits_define_bintable_column (header, "E",    "X12_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    278   gfits_define_bintable_column (header, "E",    "X22_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    279   gfits_define_bintable_column (header, "E",    "E1_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    280   gfits_define_bintable_column (header, "E",    "E2_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    281   gfits_define_bintable_column (header, "E",    "X11_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    282   gfits_define_bintable_column (header, "E",    "X12_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    283   gfits_define_bintable_column (header, "E",    "X22_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    284   gfits_define_bintable_column (header, "E",    "E1_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    285   gfits_define_bintable_column (header, "E",    "E2_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    286   gfits_define_bintable_column (header, "E",    "X11_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    287   gfits_define_bintable_column (header, "E",    "X12_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    288   gfits_define_bintable_column (header, "E",    "X22_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    289   gfits_define_bintable_column (header, "E",    "E1_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    290   gfits_define_bintable_column (header, "E",    "E2_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
     271  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     272  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     273  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     274  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     275  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     276  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     277  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     278  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     279  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     280  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     281  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     282  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     283  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     284  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     285  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     286  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     287  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     288  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     289  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     290  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
    291291  gfits_define_bintable_column (header, "E",    "MOMENTS_R1",       "first radial moment",             "pixels",            1.0, 0.0);
    292292  gfits_define_bintable_column (header, "E",    "MOMENTS_RH",       "half radial moment",              "pixels^1/2",        1.0, 0.0);
     
    365365  gfits_define_bintable_column (header, "E",    "MOMENTS_M4C",      "fourth moment cos(t)",            "pixels^4",          1.0, 0.0);
    366366  gfits_define_bintable_column (header, "E",    "MOMENTS_M4S",      "fourth moment sin(t)",            "pixels^4",          1.0, 0.0);
    367   gfits_define_bintable_column (header, "E",    "X11_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    368   gfits_define_bintable_column (header, "E",    "X12_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    369   gfits_define_bintable_column (header, "E",    "X22_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    370   gfits_define_bintable_column (header, "E",    "E1_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    371   gfits_define_bintable_column (header, "E",    "E2_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    372   gfits_define_bintable_column (header, "E",    "X11_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    373   gfits_define_bintable_column (header, "E",    "X12_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    374   gfits_define_bintable_column (header, "E",    "X22_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    375   gfits_define_bintable_column (header, "E",    "E1_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    376   gfits_define_bintable_column (header, "E",    "E2_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    377   gfits_define_bintable_column (header, "E",    "X11_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    378   gfits_define_bintable_column (header, "E",    "X12_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    379   gfits_define_bintable_column (header, "E",    "X22_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    380   gfits_define_bintable_column (header, "E",    "E1_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    381   gfits_define_bintable_column (header, "E",    "E2_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    382   gfits_define_bintable_column (header, "E",    "X11_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    383   gfits_define_bintable_column (header, "E",    "X12_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    384   gfits_define_bintable_column (header, "E",    "X22_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    385   gfits_define_bintable_column (header, "E",    "E1_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    386   gfits_define_bintable_column (header, "E",    "E2_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
     367  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     368  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     369  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     370  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     371  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     372  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     373  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     374  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     375  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     376  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     377  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     378  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     379  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     380  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     381  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     382  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     383  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     384  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     385  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     386  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
    387387  gfits_define_bintable_column (header, "E",    "MOMENTS_R1",       "first radial moment",             "pixels",            1.0, 0.0);
    388388  gfits_define_bintable_column (header, "E",    "MOMENTS_RH",       "half radial moment",              "pixels^1/2",        1.0, 0.0);
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/cmf-ps1-v5-r1-lensing.c

    r37994 r38983  
    275275  gfits_define_bintable_column (header, "E",    "MOMENTS_M4C",      "fourth moment cos(t)",            "pixels^4",          1.0, 0.0);
    276276  gfits_define_bintable_column (header, "E",    "MOMENTS_M4S",      "fourth moment sin(t)",            "pixels^4",          1.0, 0.0);
    277   gfits_define_bintable_column (header, "E",    "X11_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    278   gfits_define_bintable_column (header, "E",    "X12_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    279   gfits_define_bintable_column (header, "E",    "X22_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    280   gfits_define_bintable_column (header, "E",    "E1_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    281   gfits_define_bintable_column (header, "E",    "E2_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    282   gfits_define_bintable_column (header, "E",    "X11_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    283   gfits_define_bintable_column (header, "E",    "X12_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    284   gfits_define_bintable_column (header, "E",    "X22_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    285   gfits_define_bintable_column (header, "E",    "E1_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    286   gfits_define_bintable_column (header, "E",    "E2_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    287   gfits_define_bintable_column (header, "E",    "X11_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    288   gfits_define_bintable_column (header, "E",    "X12_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    289   gfits_define_bintable_column (header, "E",    "X22_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    290   gfits_define_bintable_column (header, "E",    "E1_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    291   gfits_define_bintable_column (header, "E",    "E2_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    292   gfits_define_bintable_column (header, "E",    "X11_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    293   gfits_define_bintable_column (header, "E",    "X12_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    294   gfits_define_bintable_column (header, "E",    "X22_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    295   gfits_define_bintable_column (header, "E",    "E1_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    296   gfits_define_bintable_column (header, "E",    "E2_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
     277  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     278  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     279  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     280  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     281  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     282  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     283  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     284  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     285  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     286  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     287  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     288  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     289  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     290  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     291  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     292  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     293  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     294  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     295  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     296  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
    297297
    298298  gfits_define_bintable_column (header, "I",    "SRC_CHIP_NUM",     "number of source chip for warp",  "",                  1.0, 0.0);
     
    377377  gfits_define_bintable_column (header, "E",    "MOMENTS_M4C",      "fourth moment cos(t)",            "pixels^4",          1.0, 0.0);
    378378  gfits_define_bintable_column (header, "E",    "MOMENTS_M4S",      "fourth moment sin(t)",            "pixels^4",          1.0, 0.0);
    379   gfits_define_bintable_column (header, "E",    "X11_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    380   gfits_define_bintable_column (header, "E",    "X12_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    381   gfits_define_bintable_column (header, "E",    "X22_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    382   gfits_define_bintable_column (header, "E",    "E1_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    383   gfits_define_bintable_column (header, "E",    "E2_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    384   gfits_define_bintable_column (header, "E",    "X11_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    385   gfits_define_bintable_column (header, "E",    "X12_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    386   gfits_define_bintable_column (header, "E",    "X22_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    387   gfits_define_bintable_column (header, "E",    "E1_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    388   gfits_define_bintable_column (header, "E",    "E2_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    389   gfits_define_bintable_column (header, "E",    "X11_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    390   gfits_define_bintable_column (header, "E",    "X12_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    391   gfits_define_bintable_column (header, "E",    "X22_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    392   gfits_define_bintable_column (header, "E",    "E1_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    393   gfits_define_bintable_column (header, "E",    "E2_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    394   gfits_define_bintable_column (header, "E",    "X11_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    395   gfits_define_bintable_column (header, "E",    "X12_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    396   gfits_define_bintable_column (header, "E",    "X22_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    397   gfits_define_bintable_column (header, "E",    "E1_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    398   gfits_define_bintable_column (header, "E",    "E2_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
     379  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     380  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     381  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     382  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     383  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     384  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     385  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     386  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     387  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     388  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     389  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     390  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     391  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     392  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     393  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     394  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     395  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     396  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     397  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     398  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
    399399
    400400  gfits_define_bintable_column (header, "I",    "SRC_CHIP_NUM",     "number of source chip for warp",  "",                  1.0, 0.0);
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/cmf-ps1-v5-r2-lensing.c

    r38553 r38983  
    278278  gfits_define_bintable_column (header, "E",    "MOMENTS_M4C",      "fourth moment cos(t)",            "pixels^4",          1.0, 0.0);
    279279  gfits_define_bintable_column (header, "E",    "MOMENTS_M4S",      "fourth moment sin(t)",            "pixels^4",          1.0, 0.0);
    280   gfits_define_bintable_column (header, "E",    "X11_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    281   gfits_define_bintable_column (header, "E",    "X12_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    282   gfits_define_bintable_column (header, "E",    "X22_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    283   gfits_define_bintable_column (header, "E",    "E1_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    284   gfits_define_bintable_column (header, "E",    "E2_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    285   gfits_define_bintable_column (header, "E",    "X11_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    286   gfits_define_bintable_column (header, "E",    "X12_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    287   gfits_define_bintable_column (header, "E",    "X22_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    288   gfits_define_bintable_column (header, "E",    "E1_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    289   gfits_define_bintable_column (header, "E",    "E2_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    290   gfits_define_bintable_column (header, "E",    "X11_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    291   gfits_define_bintable_column (header, "E",    "X12_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    292   gfits_define_bintable_column (header, "E",    "X22_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    293   gfits_define_bintable_column (header, "E",    "E1_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    294   gfits_define_bintable_column (header, "E",    "E2_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    295   gfits_define_bintable_column (header, "E",    "X11_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    296   gfits_define_bintable_column (header, "E",    "X12_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    297   gfits_define_bintable_column (header, "E",    "X22_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    298   gfits_define_bintable_column (header, "E",    "E1_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    299   gfits_define_bintable_column (header, "E",    "E2_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    300   gfits_define_bintable_column (header, "E",    "E1_PSF",           "psf polarization",                "",                  1.0, 0.0);
    301   gfits_define_bintable_column (header, "E",    "E2_PSF",           "psf polarization",                "",                  1.0, 0.0);
     280  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     281  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     282  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     283  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     284  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     285  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     286  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     287  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     288  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     289  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     290  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     291  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     292  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     293  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     294  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     295  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     296  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     297  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     298  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     299  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     300  gfits_define_bintable_column (header, "E",    "LENS_E1_PSF",      "psf polarization",                "",                  1.0, 0.0);
     301  gfits_define_bintable_column (header, "E",    "LENS_E2_PSF",      "psf polarization",                "",                  1.0, 0.0);
    302302
    303303  gfits_define_bintable_column (header, "I",    "SRC_CHIP_NUM",     "number of source chip for warp",  "",                  1.0, 0.0);
     
    382382  gfits_define_bintable_column (header, "E",    "MOMENTS_M4C",      "fourth moment cos(t)",            "pixels^4",          1.0, 0.0);
    383383  gfits_define_bintable_column (header, "E",    "MOMENTS_M4S",      "fourth moment sin(t)",            "pixels^4",          1.0, 0.0);
    384   gfits_define_bintable_column (header, "E",    "X11_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    385   gfits_define_bintable_column (header, "E",    "X12_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    386   gfits_define_bintable_column (header, "E",    "X22_SM_OBJ",       "lensing smear",                   "",                  1.0, 0.0);
    387   gfits_define_bintable_column (header, "E",    "E1_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    388   gfits_define_bintable_column (header, "E",    "E2_SM_OBJ",        "lensing smear",                   "",                  1.0, 0.0);
    389   gfits_define_bintable_column (header, "E",    "X11_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    390   gfits_define_bintable_column (header, "E",    "X12_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    391   gfits_define_bintable_column (header, "E",    "X22_SH_OBJ",       "lensing shear",                   "",                  1.0, 0.0);
    392   gfits_define_bintable_column (header, "E",    "E1_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    393   gfits_define_bintable_column (header, "E",    "E2_SH_OBJ",        "lensing shear",                   "",                  1.0, 0.0);
    394   gfits_define_bintable_column (header, "E",    "X11_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    395   gfits_define_bintable_column (header, "E",    "X12_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    396   gfits_define_bintable_column (header, "E",    "X22_SM_PSF",       "lensing smear",                   "",                  1.0, 0.0);
    397   gfits_define_bintable_column (header, "E",    "E1_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    398   gfits_define_bintable_column (header, "E",    "E2_SM_PSF",        "lensing smear",                   "",                  1.0, 0.0);
    399   gfits_define_bintable_column (header, "E",    "X11_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    400   gfits_define_bintable_column (header, "E",    "X12_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    401   gfits_define_bintable_column (header, "E",    "X22_SH_PSF",       "lensing shear",                   "",                  1.0, 0.0);
    402   gfits_define_bintable_column (header, "E",    "E1_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    403   gfits_define_bintable_column (header, "E",    "E2_SH_PSF",        "lensing shear",                   "",                  1.0, 0.0);
    404   gfits_define_bintable_column (header, "E",    "E1_PSF",           "psf polarization",                "",                  1.0, 0.0);
    405   gfits_define_bintable_column (header, "E",    "E2_PSF",           "psf polarization",                "",                  1.0, 0.0);
     384  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     385  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     386  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_OBJ",  "lensing smear",                   "",                  1.0, 0.0);
     387  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     388  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_OBJ",   "lensing smear",                   "",                  1.0, 0.0);
     389  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     390  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     391  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_OBJ",  "lensing shear",                   "",                  1.0, 0.0);
     392  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     393  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_OBJ",   "lensing shear",                   "",                  1.0, 0.0);
     394  gfits_define_bintable_column (header, "E",    "LENS_X11_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     395  gfits_define_bintable_column (header, "E",    "LENS_X12_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     396  gfits_define_bintable_column (header, "E",    "LENS_X22_SM_PSF",  "lensing smear",                   "",                  1.0, 0.0);
     397  gfits_define_bintable_column (header, "E",    "LENS_E1_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     398  gfits_define_bintable_column (header, "E",    "LENS_E2_SM_PSF",   "lensing smear",                   "",                  1.0, 0.0);
     399  gfits_define_bintable_column (header, "E",    "LENS_X11_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     400  gfits_define_bintable_column (header, "E",    "LENS_X12_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     401  gfits_define_bintable_column (header, "E",    "LENS_X22_SH_PSF",  "lensing shear",                   "",                  1.0, 0.0);
     402  gfits_define_bintable_column (header, "E",    "LENS_E1_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     403  gfits_define_bintable_column (header, "E",    "LENS_E2_SH_PSF",   "lensing shear",                   "",                  1.0, 0.0);
     404  gfits_define_bintable_column (header, "E",    "LENS_E1_PSF",      "psf polarization",                "",                  1.0, 0.0);
     405  gfits_define_bintable_column (header, "E",    "LENS_E2_PSF",      "psf polarization",                "",                  1.0, 0.0);
    406406
    407407  gfits_define_bintable_column (header, "I",    "SRC_CHIP_NUM",     "number of source chip for warp",  "",                  1.0, 0.0);
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/dbExtractAverages.c

    r38153 r38983  
    5050
    5151/* return average.field based on the selection */
    52 dbValue dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, Lensobj *lensobj, StarPar *starpar, dbField *field) {
     52dbValue dbExtractAverages (Average *average, SecFilt *secfilt, Measure *measure, Lensobj *lensobj, StarPar *starpar, GalPhot *galphot, dbField *field) {
    5353
    5454  // off_t i;
     
    408408          break;
    409409
     410        case MAG_OPTION_GAL_MAG:       { value.Flt = GalphotValue_GAL_MAG      (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     411        case MAG_OPTION_GAL_MAG_ERR:   { value.Flt = GalphotValue_GAL_MAG_ERR  (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     412        case MAG_OPTION_GAL_MAJ:       { value.Flt = GalphotValue_GAL_MAJ      (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     413        case MAG_OPTION_GAL_MAJ_ERR:   { value.Flt = GalphotValue_GAL_MAJ_ERR  (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     414        case MAG_OPTION_GAL_MIN:       { value.Flt = GalphotValue_GAL_MIN      (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     415        case MAG_OPTION_GAL_MIN_ERR:   { value.Flt = GalphotValue_GAL_MIN_ERR  (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     416        case MAG_OPTION_GAL_THETA:     { value.Flt = GalphotValue_GAL_THETA    (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     417        case MAG_OPTION_GAL_THETA_ERR: { value.Flt = GalphotValue_GAL_THETA_ERR(field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     418        case MAG_OPTION_GAL_INDEX:     { value.Flt = GalphotValue_GAL_INDEX    (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     419        case MAG_OPTION_GAL_CHISQ:     { value.Flt = GalphotValue_GAL_CHISQ    (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     420        case MAG_OPTION_GAL_NPIX:      { value.Flt = GalphotValue_GAL_NPIX     (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     421        case MAG_OPTION_GAL_TYPE:      { value.Flt = GalphotValue_GAL_TYPE     (field->photcode, field->magClass, galphot, average->Ngalphot); break; }
     422
    410423        default:
    411424          break;
     
    413426      break;
    414427
     428      // this section assumes a 1-to-1 match between average and starpar
    415429    case AVE_E_BV:             { value.Flt = starpar->Ebv;      break; }
    416430    case AVE_E_BV_ERR:         { value.Flt = starpar->dEbv;     break; }
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/dbExtractMeasures.c

    r38667 r38983  
    287287        case MAG_OPTION_E2:
    288288
     289        case MAG_OPTION_GAL_MAG:       
     290        case MAG_OPTION_GAL_MAG_ERR:   
     291        case MAG_OPTION_GAL_MAJ:       
     292        case MAG_OPTION_GAL_MAJ_ERR:   
     293        case MAG_OPTION_GAL_MIN:       
     294        case MAG_OPTION_GAL_MIN_ERR:   
     295        case MAG_OPTION_GAL_THETA:     
     296        case MAG_OPTION_GAL_THETA_ERR:
     297        case MAG_OPTION_GAL_INDEX:     
     298        case MAG_OPTION_GAL_CHISQ:     
     299        case MAG_OPTION_GAL_NPIX:     
     300        case MAG_OPTION_GAL_TYPE:     
     301
    289302        case MAG_OPTION_NONE:
    290303          break;
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/dbFields.c

    r38667 r38983  
    161161}
    162162
     163int dbFieldNeedGalphot (dbField *fields, int Nfields) {
     164  int i;
     165  for (i = 0; i < Nfields; i++) {
     166    if (fields[i].magOption == MAG_OPTION_NONE) continue; // non-measure fields do not have a photcode
     167
     168    if (fields[i].magOption == MAG_OPTION_GAL_MAG         ) return TRUE;
     169    if (fields[i].magOption == MAG_OPTION_GAL_MAG_ERR     ) return TRUE;
     170    if (fields[i].magOption == MAG_OPTION_GAL_MAJ         ) return TRUE;
     171    if (fields[i].magOption == MAG_OPTION_GAL_MAJ_ERR     ) return TRUE;
     172    if (fields[i].magOption == MAG_OPTION_GAL_MIN         ) return TRUE;
     173    if (fields[i].magOption == MAG_OPTION_GAL_MIN_ERR     ) return TRUE;
     174    if (fields[i].magOption == MAG_OPTION_GAL_THETA       ) return TRUE;
     175    if (fields[i].magOption == MAG_OPTION_GAL_THETA_ERR   ) return TRUE;
     176    if (fields[i].magOption == MAG_OPTION_GAL_INDEX       ) return TRUE;
     177    if (fields[i].magOption == MAG_OPTION_GAL_CHISQ       ) return TRUE;
     178    if (fields[i].magOption == MAG_OPTION_GAL_NPIX        ) return TRUE;
     179    if (fields[i].magOption == MAG_OPTION_GAL_TYPE        ) return TRUE;
     180  }
     181  return FALSE;
     182}
     183
    163184dvoMagSourceType GetMagSource (char *string) {
    164185
     
    193214  if (!strcasecmp (string, "aper"))  return (MAG_CLASS_APER);
    194215  if (!strcasecmp (string, "ap"))    return (MAG_CLASS_APER);
     216
     217  // these model classes are only valid for galphot mag options
     218  if (!strcasecmp (string, "dev"))    return (MAG_CLASS_DEV);
     219  if (!strcasecmp (string, "exp"))    return (MAG_CLASS_EXP);
     220  if (!strcasecmp (string, "ser"))    return (MAG_CLASS_SER);
     221
    195222
    196223  return MAG_CLASS_NONE;
     
    247274  if (!strcasecmp (string, "E2"))            return MAG_OPTION_E2;
    248275
     276  if (!strcasecmp (string, "GAL_MAG"    ))   return MAG_OPTION_GAL_MAG       ;
     277  if (!strcasecmp (string, "GAL_MAG_ERR"))   return MAG_OPTION_GAL_MAG_ERR   ;
     278  if (!strcasecmp (string, "GAL_MAJ"    ))   return MAG_OPTION_GAL_MAJ       ;
     279  if (!strcasecmp (string, "GAL_MAJ_ERR"))   return MAG_OPTION_GAL_MAJ_ERR   ;
     280  if (!strcasecmp (string, "GAL_MIN"    ))   return MAG_OPTION_GAL_MIN       ;
     281  if (!strcasecmp (string, "GAL_MIN_ERR"))   return MAG_OPTION_GAL_MIN_ERR   ;
     282  if (!strcasecmp (string, "GAL_THETA"  ))   return MAG_OPTION_GAL_THETA     ;
     283  if (!strcasecmp (string, "GAL_THETA_ERR")) return MAG_OPTION_GAL_THETA_ERR ;
     284  if (!strcasecmp (string, "GAL_INDEX"  ))   return MAG_OPTION_GAL_INDEX     ;
     285  if (!strcasecmp (string, "GAL_CHISQ"  ))   return MAG_OPTION_GAL_CHISQ     ;
     286  if (!strcasecmp (string, "GAL_NPIX"   ))   return MAG_OPTION_GAL_NPIX      ;
     287  if (!strcasecmp (string, "GAL_TYPE"   ))   return MAG_OPTION_GAL_TYPE      ;
     288
    249289  return MAG_OPTION_NONE;
    250290}
     
    373413    free (word);
    374414    return FALSE;
     415  }
     416
     417  if (dbFieldNeedGalphot (field, 1)) {
     418    field->magClass = MAG_CLASS_SER; // for galphot, we need to set a default model class (SERSIC)
    375419  }
    376420
  • branches/eam_branches/ipp-20150625/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r38756 r38983  
    10091009  // mag_AB = -2.5 log (flux_cgs) - 48.6 (by definition) [~Vega flux in V-band]
    10101010  // flux_Jy = flux_cgs * 10^23
     1011
    10111012  // -2.5 log (flux_cgs) = -2.5 log (flux_Jy * 10^-23) = -2.5 log (flux_Jy) + 2.5*23
     1013  // -2.5 log (flux_cgs) = -2.5 log (flux_Jy) + 57.5
    10121014
    10131015  // from these we get:
     
    10171019  // mag_AB = mag_inst + ZP
    10181020
    1019   // log(flux_Jy) = -0.4*mag_inst -0.4*ZP + 3.56
     1021  // log(flux_Jy) = -0.4*mag_inst - 0.4*ZP + 3.56
    10201022  // mag_inst = -2.5 log (flux_Jy) - ZP + 8.9
    10211023
     
    10231025
    10241026  // -2.5 log (flux_inst) = -2.5 log (flux_Jy) - ZP + 8.9
     1027
    10251028  // log (flux_inst) = log (flux_Jy) + 0.4 ZP - 3.56
     1029
    10261030  // flux_inst = flux_Jy * 10^(0.4*ZP - 3.56)
     1031
    10271032  // flux_Jy = flux_inst * 10^(3.56 - 0.4*ZP) = flux_inst * zpFactor
     1033
     1034  // flux_Jy = flux_inst * 10^(-0.4*(ZP - 8.9)) = flux_inst * zpFactor
     1035
    10281036  // flux_Jy = flux_inst * 3630.8 * 10^(-0.4*ZP)
    10291037
     
    11861194      switch (class) {
    11871195        case MAG_CLASS_PSF:
    1188           Fave = MagToFlux(secfilt[Ns].M);
     1196          Fave = MagToFlux(secfilt[Ns].M - 8.9);
    11891197          break;
    11901198        case MAG_CLASS_KRON:
    1191           Fave = MagToFlux(secfilt[Ns].Mkron);
     1199          Fave = MagToFlux(secfilt[Ns].Mkron - 8.9);
    11921200          break;
    11931201        case MAG_CLASS_APER:
    1194           Fave = MagToFlux(secfilt[Ns].Map);
     1202          Fave = MagToFlux(secfilt[Ns].Map - 8.9);
    11951203          break;
    11961204        default:
     
    12011209      switch (class) {
    12021210        case MAG_CLASS_PSF:
    1203           Fave = isnan (secfilt[Ns].FpsfWrp)  ? MagToFlux(secfilt[Ns].MpsfWrp)  : secfilt[Ns].FpsfWrp;
     1211          Fave = isnan (secfilt[Ns].FpsfWrp)  ? MagToFlux(secfilt[Ns].MpsfWrp - 8.9)  : secfilt[Ns].FpsfWrp;
    12041212          break;
    12051213        case MAG_CLASS_KRON:
    1206           Fave = isnan (secfilt[Ns].FkronWrp) ? MagToFlux(secfilt[Ns].MkronWrp) : secfilt[Ns].FkronWrp;
     1214          Fave = isnan (secfilt[Ns].FkronWrp) ? MagToFlux(secfilt[Ns].MkronWrp - 8.9) : secfilt[Ns].FkronWrp;
    12071215          break;
    12081216        case MAG_CLASS_APER:
    1209           Fave = isnan (secfilt[Ns].FapWrp)   ? MagToFlux(secfilt[Ns].MapWrp)   : secfilt[Ns].FapWrp;
     1217          Fave = isnan (secfilt[Ns].FapWrp)   ? MagToFlux(secfilt[Ns].MapWrp - 8.9)   : secfilt[Ns].FapWrp;
    12101218          break;
    12111219        default:
     
    12161224      switch (class) {
    12171225        case MAG_CLASS_PSF:
    1218           Fave = isnan (secfilt[Ns].FpsfStk)  ? MagToFlux(secfilt[Ns].MpsfStk)  : secfilt[Ns].FpsfStk;
     1226          Fave = isnan (secfilt[Ns].FpsfStk)  ? MagToFlux(secfilt[Ns].MpsfStk - 8.9)  : secfilt[Ns].FpsfStk;
    12191227          break;
    12201228        case MAG_CLASS_KRON:
    1221           Fave = isnan (secfilt[Ns].FkronStk) ? MagToFlux(secfilt[Ns].MkronStk) : secfilt[Ns].FkronStk;
     1229          Fave = isnan (secfilt[Ns].FkronStk) ? MagToFlux(secfilt[Ns].MkronStk - 8.9) : secfilt[Ns].FkronStk;
    12221230          break;
    12231231        case MAG_CLASS_APER:
    1224           Fave = isnan (secfilt[Ns].FapStk)   ? MagToFlux(secfilt[Ns].MapStk)   : secfilt[Ns].FapStk;
     1232          Fave = isnan (secfilt[Ns].FapStk)   ? MagToFlux(secfilt[Ns].MapStk - 8.9)   : secfilt[Ns].FapStk;
    12251233          break;
    12261234        default:
     
    12461254      switch (class) {
    12471255        case MAG_CLASS_PSF:
    1248           dFave = secfilt[Ns].dM * MagToFlux(secfilt[Ns].M);
     1256          dFave = secfilt[Ns].dM * MagToFlux(secfilt[Ns].M - 8.9);
    12491257          break;
    12501258        case MAG_CLASS_KRON:
    1251           dFave = secfilt[Ns].dMkron * MagToFlux(secfilt[Ns].Mkron);
     1259          dFave = secfilt[Ns].dMkron * MagToFlux(secfilt[Ns].Mkron - 8.9);
    12521260          break;
    12531261        case MAG_CLASS_APER:
    1254           dFave = secfilt[Ns].dMap * MagToFlux(secfilt[Ns].Map);
     1262          dFave = secfilt[Ns].dMap * MagToFlux(secfilt[Ns].Map - 8.9);
    12551263          break;
    12561264        default:
     
    18801888LENSFIELD(E1);
    18811889LENSFIELD(E2);
     1890
     1891# if (0)
     1892float GalphotValue_GAL_MAG (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot) {
     1893  int n;                                                                 
     1894  if (code == NULL) return NAN;                                 
     1895  for (n = 0; n < Ngalphot; n++) {                                       
     1896    short equivCode = GetPhotcodeEquivCodebyCode (galphot[n].photcode);
     1897    if (!equivCode) continue;                                           
     1898    if (equivCode != code->code) continue;                             
     1899    switch (class) {                                                   
     1900      case MAG_CLASS_SER:                                               
     1901        if (galphot[n].modelType != 5) continue;                       
     1902        break;                                                 
     1903      case MAG_CLASS_EXP:                                               
     1904        if (galphot[n].modelType != 6) continue;                       
     1905        break;                                                 
     1906      case MAG_CLASS_DEV:                                               
     1907        if (galphot[n].modelType != 7) continue;                       
     1908        break;                                                 
     1909      default:                                                 
     1910        return NAN;                                                     
     1911    }                                                                   
     1912    float value = galphot[n].mag;                                       
     1913    return (value);                                                     
     1914  }                                                                     
     1915  return NAN;                                                           
     1916}
     1917# endif
     1918
     1919# define GALPHOT_FIELD(NAME, VALUE)                                     \
     1920  float GalphotValue_##NAME (PhotCode *code, dvoMagClassType class, GalPhot *galphot, int Ngalphot) { \
     1921    int n;                                                              \
     1922    if (code == NULL) return NAN;                                       \
     1923    for (n = 0; n < Ngalphot; n++) {                                    \
     1924      short equivCode = GetPhotcodeEquivCodebyCode (galphot[n].photcode); \
     1925      if (!equivCode) continue;                                         \
     1926      if (equivCode != code->code) continue;                            \
     1927      switch (class) {                                                  \
     1928        case MAG_CLASS_SER:                                             \
     1929          if (galphot[n].modelType != 5) continue;                      \
     1930          break;                                                        \
     1931        case MAG_CLASS_EXP:                                             \
     1932          if (galphot[n].modelType != 6) continue;                      \
     1933          break;                                                        \
     1934        case MAG_CLASS_DEV:                                             \
     1935          if (galphot[n].modelType != 7) continue;                      \
     1936          break;                                                        \
     1937        default:                                                        \
     1938          return NAN;                                                   \
     1939      }                                                                 \
     1940      float value = galphot[n].VALUE;                                   \
     1941      return (value);                                                   \
     1942    }                                                                   \
     1943    return NAN;                                                         \
     1944  }
     1945
     1946GALPHOT_FIELD(GAL_MAG,         mag)           
     1947GALPHOT_FIELD(GAL_MAG_ERR,     magErr)   
     1948GALPHOT_FIELD(GAL_MAJ,         majorAxis)             
     1949GALPHOT_FIELD(GAL_MAJ_ERR,     majorAxisErr)
     1950GALPHOT_FIELD(GAL_MIN,         minorAxis)             
     1951GALPHOT_FIELD(GAL_MIN_ERR,     minorAxisErr)   
     1952GALPHOT_FIELD(GAL_THETA,       theta)     
     1953GALPHOT_FIELD(GAL_THETA_ERR,   thetaErr) 
     1954GALPHOT_FIELD(GAL_INDEX,       index)     
     1955GALPHOT_FIELD(GAL_CHISQ,       chisq)     
     1956GALPHOT_FIELD(GAL_NPIX,        Npix)       
     1957GALPHOT_FIELD(GAL_TYPE,        modelType)       
  • branches/eam_branches/ipp-20150625/Ohana/src/opihi

  • branches/eam_branches/ipp-20150625/Ohana/src/opihi/cmd.basic/list.c

    r37049 r38983  
    11# include "basic.h"
     2# include <glob.h>
    23# define D_NLINES 100
    34static char prompt[] = ">> ";
    45
     6int SplitByCharToList (int argc, char **argv, int EXCEL_STYLE);
     7int GlobToList (char *listname, char *Glob, int EXCEL_STYLE);
     8int CommandToList (char *listname, char *Command, int EXCEL_STYLE);
     9
    510int list (int argc, char **argv) {
    611
    712  int ThisList, depth, i, done, found;
    813  char *input, line[1024];
    9   int N, Nbytes, NBYTES, Nread, status;
    10   int RunCommand;
    11   char *A, *B, *val, *Cmd;
    12   FILE *f;
    13 
    14   Cmd = NULL;
    15   RunCommand = FALSE;
     14  int N;
     15
     16  char *Command = NULL;
    1617  if ((N = get_argument (argc, argv, "-x"))) {
    1718    remove_argument (N, &argc, argv);
    18     Cmd = strcreate (argv[N]);
    19     remove_argument (N, &argc, argv);
    20     RunCommand = TRUE;
     19    Command = strcreate (argv[N]);
     20    remove_argument (N, &argc, argv);
     21  }
     22  if ((N = get_argument (argc, argv, "-exec"))) {
     23    remove_argument (N, &argc, argv);
     24    Command = strcreate (argv[N]);
     25    remove_argument (N, &argc, argv);
     26  }
     27
     28  char *Glob = NULL;
     29  if ((N = get_argument (argc, argv, "-glob"))) {
     30    remove_argument (N, &argc, argv);
     31    Glob = strcreate (argv[N]);
     32    remove_argument (N, &argc, argv);
    2133  }
    2234
     
    3749      return (FALSE);
    3850    }
    39     ListVectorsToList (argv[1]);
     51    ListVectorsToList (argv[1]); // <-- generate the list
    4052    return TRUE;
    4153  }
     
    4759      return (FALSE);
    4860    }
    49     ListBuffersToList (argv[1]);
     61    ListBuffersToList (argv[1]); // <-- generate the list
    5062    return TRUE;
     63  }
     64
     65  if (Command) {
     66    if (argc != 2) {
     67      gprint (GP_ERR, "USAGE: list (root) -exec (command)\n");
     68      gprint (GP_ERR, "   OR: list (root) -x (command)\n");
     69      return (FALSE);
     70    }
     71    int status = CommandToList (argv[1], Command, EXCEL_STYLE); // <-- generate the list
     72    return status;
     73  }
     74
     75  if (Glob) {
     76    if (argc != 2) {
     77      gprint (GP_ERR, "USAGE: list (root) -glob (fileglob)\n");
     78      return (FALSE);
     79    }
     80    int status = GlobToList (argv[1], Glob, EXCEL_STYLE); // <-- generate the list
     81    return status;
    5182  }
    5283
     
    74105      return (FALSE);
    75106    }
    76    
    77     int j, nWords;
    78     char splitter;
    79     char *new, *word, *ptr;
    80 
    81     nWords = 0;
    82     splitter = argv[3][0];
    83 
    84     for (i = 0; i < argc - 3; i++) {
    85       new = strcreate (argv[i+3]);
    86       for (j = 0; new[j]; j++) {
    87         if (new[j] == splitter) new[j] = ' ';
    88       }
    89 
    90       ptr = new;
    91       while (ptr) {
    92         word = thisword (ptr);
    93         if (!word) break;
    94        
    95         // sprintf (line, "%s:%d", argv[1], nWords);
    96         set_list_varname (line, argv[1], nWords, EXCEL_STYLE);
    97 
    98         set_str_variable (line, word);
    99         FREE (word);
    100         ptr = nextword (ptr);
    101         nWords ++;
    102       }
    103       FREE (new);
    104     }
    105     sprintf (line, "%s:n", argv[1]);
    106     set_int_variable (line, nWords);
    107 
    108     return (TRUE);
     107    int status = SplitByCharToList (argc, argv, EXCEL_STYLE); // <-- generate the list
     108    return status;
    109109  }
    110110
     
    200200    gprint (GP_ERR, "USAGE: list (root)                                        : supply list data, terminate with 'END'\n");
    201201    gprint (GP_ERR, "USAGE: list (root) -x (command)                           : create list from shell output\n");
     202    gprint (GP_ERR, "USAGE: list (root) -exec (command)                        : create list from shell output\n");
    202203    gprint (GP_ERR, "USAGE: list (root) -vectors                               : create list from vector names\n");
    203204    gprint (GP_ERR, "USAGE: list (root) -buffers                               : create list from buffer names\n");
     
    208209    gprint (GP_ERR, "USAGE: list (root) -del (word)                            : delete the entry by value\n");
    209210    return (FALSE);
    210   }
    211 
    212   if (RunCommand) {
    213    
    214     /* val will hold the result */
    215     NBYTES = 1024;
    216     ALLOCATE (val, char, NBYTES);
    217    
    218     /* need to loop until command produces no more output,
    219        REALLOCATING as needed. */
    220     f = popen (Cmd, "r");
    221     done = FALSE;
    222     Nbytes = 0;
    223     while (!done) {
    224       Nread = fread (&val[Nbytes], 1, 1023, f);
    225       if (Nread < 0) {
    226         gprint (GP_ERR, "error reading from command\n");
    227         done = TRUE;
    228       }
    229       if (Nread > 0) {
    230         Nbytes += Nread;
    231         NBYTES = 1024 + Nbytes;
    232         REALLOCATE (val, char, NBYTES);
    233       }
    234       if (Nread == 0) {
    235         done = TRUE;
    236       }
    237      
    238     }
    239     val[Nbytes] = 0;
    240     status = pclose (f);
    241     free (Cmd);
    242    
    243     if (status) {
    244       gprint (GP_ERR, "warning: exit status of command %d\n", status);
    245     }
    246      
    247     A = B = val;
    248     for (i = 0; B != (char *) NULL;) {
    249       while (isspace (*A) && (*A != 0)) A++;
    250       B = strchr (A, '\n');
    251       if (B != (char *) NULL) { *B = 0; }
    252       if (*A != 0) {
    253         // sprintf (line, "%s:%d", argv[1], i);
    254         set_list_varname (line, argv[1], i, EXCEL_STYLE);
    255         set_str_variable (line, A);
    256         A = B + 1;
    257         i++;
    258       }
    259     }     
    260     free (val);
    261    
    262     sprintf (line, "%s:n", argv[1]);
    263     set_int_variable (line, i);
    264     return (TRUE);
    265211  }
    266212
     
    309255  return (TRUE);
    310256}
     257
     258int CommandToList (char *listname, char *Command, int EXCEL_STYLE) {
     259
     260  char line[1024];
     261
     262  /* val will hold the result */
     263  int NBYTES = 1024;
     264  char *val;
     265  ALLOCATE (val, char, NBYTES);
     266   
     267  /* need to loop until command produces no more output,
     268     REALLOCATING as needed. */
     269  FILE *f = popen (Command, "r");
     270
     271  int done = FALSE;
     272  int Nbytes = 0;
     273  while (!done) {
     274    int Nread = fread (&val[Nbytes], 1, 1023, f);
     275    if (Nread < 0) {
     276      gprint (GP_ERR, "error reading from command\n");
     277      done = TRUE;
     278    }
     279    if (Nread > 0) {
     280      Nbytes += Nread;
     281      NBYTES = 1024 + Nbytes;
     282      REALLOCATE (val, char, NBYTES);
     283    }
     284    if (Nread == 0) {
     285      done = TRUE;
     286    }
     287  }
     288  val[Nbytes] = 0;
     289  int status = pclose (f);
     290  free (Command);
     291   
     292  if (status) {
     293    gprint (GP_ERR, "warning: exit status of command %d\n", status);
     294  }
     295     
     296  int i;
     297  char *A = val;
     298  char *B = val;
     299  for (i = 0; B != (char *) NULL;) {
     300    while (isspace (*A) && (*A != 0)) A++;
     301    B = strchr (A, '\n');
     302    if (B != (char *) NULL) { *B = 0; }
     303    if (*A != 0) {
     304      set_list_varname (line, listname, i, EXCEL_STYLE);
     305      set_str_variable (line, A);
     306      A = B + 1;
     307      i++;
     308    }
     309  }     
     310  free (val);
     311   
     312  sprintf (line, "%s:n", listname);
     313  set_int_variable (line, i);
     314  return (TRUE);
     315}
     316
     317int GlobToList (char *listname, char *Glob, int EXCEL_STYLE) {
     318
     319  int i;
     320  char line[1024];
     321  glob_t globList;
     322
     323  // parse the filename as a glob
     324  globList.gl_offs = 0;
     325  glob (Glob, 0, NULL, &globList);
     326
     327  // if the glob does not match, save the literal word:
     328  // otherwise save all glob matches
     329  if (globList.gl_pathc == 0) {
     330    sprintf (line, "%s:n", listname);
     331    set_int_variable (line, 0);
     332    return TRUE;
     333  }
     334
     335  int Nfile = globList.gl_pathc;
     336  for (i = 0; i < Nfile; i++) {
     337    set_list_varname (line, listname, i, EXCEL_STYLE);
     338    set_str_variable (line, globList.gl_pathv[i]);
     339  }
     340  sprintf (line, "%s:n", listname);
     341  set_int_variable (line, Nfile);
     342  return (TRUE);
     343}
     344
     345int SplitByCharToList (int argc, char **argv, int EXCEL_STYLE) {
     346
     347  int i, j;
     348  char line[1024];
     349
     350  int nWords = 0;
     351  char splitter = argv[3][0];
     352
     353  for (i = 0; i < argc - 3; i++) {
     354    char *new = strcreate (argv[i+3]);
     355    for (j = 0; new[j]; j++) {
     356      if (new[j] == splitter) new[j] = ' ';
     357    }
     358
     359    char *ptr = new;
     360    while (ptr) {
     361      char *word = thisword (ptr);
     362      if (!word) break;
     363       
     364      set_list_varname (line, argv[1], nWords, EXCEL_STYLE);
     365
     366      set_str_variable (line, word);
     367      FREE (word);
     368      ptr = nextword (ptr);
     369      nWords ++;
     370    }
     371    FREE (new);
     372  }
     373  sprintf (line, "%s:n", argv[1]);
     374  set_int_variable (line, nWords);
     375
     376  return (TRUE);
     377}
  • branches/eam_branches/ipp-20150625/Ohana/src/opihi/dvo/avextract.c

    r38471 r38983  
    167167  int needLensobj = dbFieldNeedLensobj (fields, Nfields);
    168168  int needStarpar = dbFieldNeedStarpar (fields, Nfields, TRUE);
     169  int needGalphot = dbFieldNeedGalphot (fields, Nfields);
    169170
    170171  // grab data from all selected sky regions
     
    191192    catalog.catflags |= needLensobj ? DVO_LOAD_LENSOBJ : DVO_SKIP_LENSOBJ;
    192193    catalog.catflags |= needStarpar ? DVO_LOAD_STARPAR : DVO_SKIP_STARPAR;
     194    catalog.catflags |= needGalphot ? DVO_LOAD_GALPHOT : DVO_SKIP_GALPHOT;
    193195    catalog.Nsecfilt = 0;
    194196
     
    219221      StarPar *starpar = needStarpar ? &catalog.starpar[m] : NULL;
    220222
     223      m = average->galphotOffset;
     224      GalPhot *galphot = needGalphot ? &catalog.galphot[m] : NULL;
     225
    221226      m = j*Nsecfilt;
    222227      SecFilt *secfilt = &catalog.secfilt[m];
     
    224229      for (n = 0; n < Nfields; n++) {
    225230        // we are passing in the *first* measure, but average->Nmeasure gives the count
    226         values[n] = dbExtractAverages (average, secfilt, measure, lensobj, starpar, &fields[n]);
     231        values[n] = dbExtractAverages (average, secfilt, measure, lensobj, starpar, galphot, &fields[n]);
    227232      }
    228233
  • branches/eam_branches/ipp-20150625/Ohana/src/opihi/dvo/avmatch.c

    r38471 r38983  
    238238      dbExtractAveragesInitAve ();
    239239      for (n = 0; n < Nfields; n++) {
    240         values[n] = dbExtractAverages (average, secfilt, measure, lensobj, starpar, &fields[n]);
     240        values[n] = dbExtractAverages (average, secfilt, measure, lensobj, starpar, NULL, &fields[n]);
    241241      }
    242242
  • branches/eam_branches/ipp-20150625/Ohana/src/relastro/src/high_speed_utils.c

    r37807 r38983  
    141141    off_t n;
    142142    for (n = 0; n < NfieldsA; n++) {
    143       valuesA[n] = dbExtractAverages (&catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt], &catalog[0].measure[m], NULL, NULL, &fieldsA[n]);
     143      valuesA[n] = dbExtractAverages (&catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt], &catalog[0].measure[m], NULL, NULL, NULL, &fieldsA[n]);
    144144    }
    145145    return dbBooleanCond(stackA, NstackA, valuesA);
     
    155155    off_t n;
    156156    for (n = 0; n < NfieldsB; n++) {
    157         valuesB[n] = dbExtractAverages (&catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt], &catalog[0].measure[m], NULL, NULL, &fieldsB[n]);
     157      valuesB[n] = dbExtractAverages (&catalog[0].average[i], &catalog[0].secfilt[i*Nsecfilt], &catalog[0].measure[m], NULL, NULL, NULL, &fieldsB[n]);
    158158    }
    159159    return dbBooleanCond(stackB, NstackB, valuesB);
  • branches/eam_branches/ipp-20150625/Ohana/src/relphot/src/setMrelCatalog.c

    r38639 r38983  
    1414# define CHECK_VALID_MAG(MAG,D_MAG) (isfinite(MAG) && isfinite(D_MAG) && (MAG > -5.0) && (MAG < 30.0))
    1515# define CHECK_VALID_FLUX(FLUX,D_FLUX) (isfinite(FLUX) && isfinite(D_FLUX))
     16
     17// set A to B if B > A or if A is NAN, as long as B is not NAN
     18# define MAX_NOT_NAN(A,B) { if (isfinite(B) && (!isfinite(A) || (B > A))) A = B; }
    1619
    1720static float MagToFlux (float Mag) {
     
    162165    // various steps only relevant to the final pass
    163166    if (isSetMrelFinal) {
    164       if (isfinite(measure[k].psfQF)     && (measure[k].psfQF     > results->psfQfMax[Nsec]))     results->psfQfMax[Nsec]     = measure[k].psfQF;
    165       if (isfinite(measure[k].psfQFperf) && (measure[k].psfQFperf > results->psfQfPerfMax[Nsec])) results->psfQfPerfMax[Nsec] = measure[k].psfQFperf;
     167      MAX_NOT_NAN (results->psfQfMax[Nsec],     measure[k].psfQF);
     168      MAX_NOT_NAN (results->psfQfPerfMax[Nsec], measure[k].psfQFperf);
    166169
    167170      // are we a PS1 exposure photcode? (hard-wired photcodes)
     
    219222    if (isSetMrelFinal) {
    220223      Map = PhotCat (&measure[k], MAG_CLASS_APER);
    221       dMap = MAX (hypot(measure[k].dMap,   code->photomErrSys), MIN_ERROR);
     224
     225      // NOTE: for PV3, apFluxErr is broken (see pmSourcePhotometry.c:245).  we are going to
     226      // use PSF flux error instead here:
     227      // dMap = MAX (hypot(measure[k].dMap,   code->photomErrSys), MIN_ERROR);
     228      dMap = MAX (hypot(measure[k].dM,   code->photomErrSys), MIN_ERROR);
     229
    222230      if (CHECK_VALID_MAG(Map, dMap)) {
    223231        int Nap = results->aperData[Nsec].Nlist;
     
    367375      secfilt[Nsec].psfQfPerfMax = results->psfQfPerfMax[Nsec];
    368376
    369       if (isfinite(secfilt[Nsec].psfQfMax)     && (secfilt[Nsec].psfQfMax     > psfQfMax))     psfQfMax     = secfilt[Nsec].psfQfMax;
    370       if (isfinite(secfilt[Nsec].psfQfPerfMax) && (secfilt[Nsec].psfQfPerfMax > psfQfPerfMax)) psfQfPerfMax = secfilt[Nsec].psfQfPerfMax;
     377      MAX_NOT_NAN (psfQfMax,     secfilt[Nsec].psfQfMax);
     378      MAX_NOT_NAN (psfQfPerfMax, secfilt[Nsec].psfQfPerfMax);
    371379
    372380      StatType *apstats = &results->apstats;
     
    640648    secfilt[Nsec].dFkronStk = zpFactor * measure[k].dFluxKron;
    641649    secfilt[Nsec].FapStk    = zpFactor * measure[k].FluxAp;
    642     secfilt[Nsec].dFapStk   = zpFactor * measure[k].dFluxAp;
     650
     651    // NOTE: for PV3, apFluxErr is broken (see pmSourcePhotometry.c:245).  we are going to
     652    // use PSF flux error instead here:
     653    // secfilt[Nsec].dFapStk   = zpFactor * measure[k].dFluxAp;
     654    secfilt[Nsec].dFapStk   = zpFactor * measure[k].dFluxPSF;
    643655
    644656    // Jy to AB mags
     
    742754    if (IS_DIFF_DB) {
    743755      measure[k].dbFlags |= ID_MEAS_STACK_PRIMARY;
    744       if (measure[k].psfQF     > results->psfQfMax[Nsec])     results->psfQfMax[Nsec]     = measure[k].psfQF;
    745       if (measure[k].psfQFperf > results->psfQfPerfMax[Nsec]) results->psfQfPerfMax[Nsec] = measure[k].psfQFperf;
     756      MAX_NOT_NAN (results->psfQfMax[Nsec],     measure[k].psfQF);
     757      MAX_NOT_NAN (results->psfQfPerfMax[Nsec], measure[k].psfQFperf);
    746758    }
    747759
     
    775787
    776788    float Fap = PhotFluxCat (&measure[k], MAG_CLASS_APER);
    777     float dFap = PhotFluxCatErr (&measure[k], MAG_CLASS_APER);
     789
     790    // NOTE: for PV3, apFluxErr is broken (see pmSourcePhotometry.c:245).  we are going to
     791    // use PSF flux error instead here:
     792    // float dFap = PhotFluxCatErr (&measure[k], MAG_CLASS_APER);
     793    float dFap = PhotFluxCatErr (&measure[k], MAG_CLASS_PSF);
     794
    778795    if (CHECK_VALID_FLUX(Fap, dFap)) {
    779796      dFap = MAX (hypot(dFap, code->photomErrSys*Fap), MIN_ERROR*Fap); // bump up the error by a systematic floor
     
    814831      secfilt[Nsec].psfQfPerfMax = results->psfQfPerfMax[Nsec];
    815832
    816       if (isfinite(secfilt[Nsec].psfQfMax)     && (secfilt[Nsec].psfQfMax     > psfQfMax))     psfQfMax     = secfilt[Nsec].psfQfMax;
    817       if (isfinite(secfilt[Nsec].psfQfPerfMax) && (secfilt[Nsec].psfQfPerfMax > psfQfPerfMax)) psfQfPerfMax = secfilt[Nsec].psfQfPerfMax;
     833      MAX_NOT_NAN (psfQfMax,     secfilt[Nsec].psfQfMax);
     834      MAX_NOT_NAN (psfQfPerfMax, secfilt[Nsec].psfQfPerfMax);
    818835    }
    819836
Note: See TracChangeset for help on using the changeset viewer.