IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 34405


Ignore:
Timestamp:
Sep 5, 2012, 4:25:56 PM (14 years ago)
Author:
eugene
Message:

merging change from eam_branches/ipp-20120805: adding psfQF, psfQFperf to both average and measure; deprecate average.Xp

Location:
trunk/Ohana
Files:
78 edited
5 copied

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/addstar/Makefile

    r34297 r34405  
    4747$(SRC)/SkyTableFromTychoIndex.$(ARCH).o \
    4848$(SRC)/addstar.$(ARCH).o \
     49$(SRC)/addstar_create_ID.$(ARCH).o \
    4950$(SRC)/airmass.$(ARCH).o \
    5051$(SRC)/args.$(ARCH).o \
  • trunk/Ohana/src/addstar/include/addstar.h

    r34260 r34405  
    5959typedef struct sockaddr_in SockAddress;
    6060
    61 enum {ADDSTAR_MODE_NONE, ADDSTAR_MODE_IMAGE, ADDSTAR_MODE_REFLIST, ADDSTAR_MODE_REFCAT, ADDSTAR_MODE_FAKEIMAGE, ADDSTAR_MODE_RESORT};
     61enum {ADDSTAR_MODE_NONE, ADDSTAR_MODE_IMAGE, ADDSTAR_MODE_REFLIST, ADDSTAR_MODE_REFCAT, ADDSTAR_MODE_FAKEIMAGE, ADDSTAR_MODE_RESORT, ADDSTAR_MODE_CREATE_ID};
    6262enum {NONE, SIMPLE_CMP, SIMPLE_CMF, SIMPLE_MEF, MOSAIC_CMP, MOSAIC_CMF, MOSAIC_MEF, MOSAIC_PHU, SDSS_OBJ};
    6363/* note: MEF implies CMF */
     
    269269int        NewReflist_Thread      PROTO((int BindSocket));
    270270
    271 Stars     *Convert_SMPDATA        PROTO((FTable *table, unsigned int *nstars));
    272 Stars     *Convert_PS1_DEV_0      PROTO((FTable *table, unsigned int *nstars));
    273 Stars     *Convert_PS1_DEV_1      PROTO((FTable *table, unsigned int *nstars));
    274 Stars     *Convert_PS1_V1         PROTO((FTable *table, unsigned int *nstars));
    275 Stars     *Convert_PS1_V1_Alt     PROTO((FTable *table, unsigned int *nstars));
    276 Stars     *Convert_PS1_V2         PROTO((FTable *table, unsigned int *nstars));
    277 Stars     *Convert_PS1_V3         PROTO((FTable *table, unsigned int *nstars));
    278 Stars     *Convert_PS1_SV1        PROTO((FTable *table, unsigned int *nstars));
    279 Stars     *Convert_PS1_SV1_Alt    PROTO((FTable *table, unsigned int *nstars));
    280 
    281271int        InitStar               PROTO((Stars *star));
    282272
     
    303293// this is a gnu extension?? caution!
    304294void *memrchr(const void *s, int c, size_t n);
     295int addstar_create_ID ();
    305296
    306297/**
  • trunk/Ohana/src/addstar/src/MatchHeaders.c

    r31160 r34405  
    5858    if (!strcmp (exttype, "PS1_V2")) goto keep;
    5959    if (!strcmp (exttype, "PS1_V3")) goto keep;
     60    if (!strcmp (exttype, "PS1_V4")) goto keep;
    6061    if (!strcmp (exttype, "PS1_SV1")) goto keep;
     62    if (!strcmp (exttype, "PS1_SV2")) goto keep;
    6163    continue;
    6264
  • trunk/Ohana/src/addstar/src/ReadStarsFITS.c

    r34260 r34405  
    11# include "addstar.h"
     2
     3// this is the complete list of FITS format input files the addstar knows
     4// (excluding SDSS data and reference database info, such as 2MASS)
     5// NOTE: these must also be listed in MatchHeaders.c (line ~ 62)
     6Stars     *Convert_SMPDATA        PROTO((FTable *table, unsigned int *nstars));
     7Stars     *Convert_PS1_DEV_0      PROTO((FTable *table, unsigned int *nstars));
     8Stars     *Convert_PS1_DEV_1      PROTO((FTable *table, unsigned int *nstars));
     9Stars     *Convert_PS1_V1         PROTO((FTable *table, unsigned int *nstars));
     10Stars     *Convert_PS1_V1_Alt     PROTO((FTable *table, unsigned int *nstars));
     11Stars     *Convert_PS1_V2         PROTO((FTable *table, unsigned int *nstars));
     12Stars     *Convert_PS1_V3         PROTO((FTable *table, unsigned int *nstars));
     13Stars     *Convert_PS1_V4         PROTO((FTable *table, unsigned int *nstars));
     14Stars     *Convert_PS1_SV1        PROTO((FTable *table, unsigned int *nstars));
     15Stars     *Convert_PS1_SV1_Alt    PROTO((FTable *table, unsigned int *nstars));
     16Stars     *Convert_PS1_SV2        PROTO((FTable *table, unsigned int *nstars));
    217
    318// given a file with the pointer at the start of the table block and the
     
    5469    stars = Convert_PS1_V3 (&table, &Nstars);
    5570  }
     71  if (!strcmp (type, "PS1_V4")) {
     72    stars = Convert_PS1_V4 (&table, &Nstars);
     73  }
    5674  if (!strcmp (type, "PS1_SV1")) {
    5775    stars = Convert_PS1_SV1 (&table, &Nstars);
     76  }
     77  if (!strcmp (type, "PS1_SV2")) {
     78    stars = Convert_PS1_SV2 (&table, &Nstars);
    5879  }
    5980  if (stars == NULL) {
     
    120141
    121142    stars[i].measure.psfChisq   = NAN;       // not provided by SMPDATA:
    122     stars[i].measure.psfQual    = NAN;       // not provided by SMPDATA:
     143    stars[i].measure.psfQF      = NAN;       // not provided by SMPDATA:
    123144    stars[i].measure.psfNdof    = NAN_S_INT; // not provided by SMPDATA:
    124145    stars[i].measure.psfNpix    = NAN_S_INT; // not provided by SMPDATA:
     
    189210
    190211    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    191     stars[i].measure.psfQual    = ps1data[i].psfQual;
     212    stars[i].measure.psfQF      = ps1data[i].psfQF;
    192213    stars[i].measure.psfNdof    = NAN_S_INT; // not provided by PS1_DEV_0:
    193214    stars[i].measure.psfNpix    = NAN_S_INT; // not provided by PS1_DEV_0:
     
    261282
    262283    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    263     stars[i].measure.psfQual    = ps1data[i].psfQual;
     284    stars[i].measure.psfQF      = ps1data[i].psfQF;
    264285    stars[i].measure.psfNdof    = NAN_S_INT; // not provided by PS1_DEV_1:
    265286    stars[i].measure.psfNpix    = NAN_S_INT; // not provided by PS1_DEV_1:
     
    345366                       
    346367    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    347     stars[i].measure.psfQual    = ps1data[i].psfQual;
     368    stars[i].measure.psfQF      = ps1data[i].psfQF;
    348369    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    349370    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     
    430451                       
    431452    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    432     stars[i].measure.psfQual    = ps1data[i].psfQual;
     453    stars[i].measure.psfQF      = ps1data[i].psfQF;
    433454    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    434455    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     
    507528                       
    508529    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    509     stars[i].measure.psfQual    = ps1data[i].psfQual;
     530    stars[i].measure.psfQF      = ps1data[i].psfQF;
    510531    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    511532    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     
    584605                       
    585606    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    586     stars[i].measure.psfQual    = ps1data[i].psfQual;
     607    stars[i].measure.psfQF      = ps1data[i].psfQF;
    587608    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    588609    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     
    616637}
    617638
    618 Stars *Convert_PS1_SV1 (FTable *table, unsigned int *nstars) {
     639Stars *Convert_PS1_V4 (FTable *table, unsigned int *nstars) {
    619640
    620641  off_t Nstars;
     
    622643  double ZeroPt;
    623644  Stars *stars;
    624   CMF_PS1_SV1 *ps1data;
    625 
    626   if (table[0].header[0].Naxis[0] == 196) {
    627     stars = Convert_PS1_SV1_Alt (table, nstars);
    628     return (stars);
    629   }
    630 
    631   ps1data = gfits_table_get_CMF_PS1_SV1 (table, &Nstars, NULL);
     645  CMF_PS1_V4 *ps1data;
     646
     647  ps1data = gfits_table_get_CMF_PS1_V4 (table, &Nstars, NULL);
    632648  if (!ps1data) {
    633649    fprintf (stderr, "skipping inconsistent entry\n");
     
    658674    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
    659675    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
    660 
     676                       
    661677    // these fluxes are converted from counts to counts/sec in FilterStars.c
    662678    stars[i].measure.FluxPSF    = ps1data[i].Flux;
     
    669685                       
    670686    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    671     stars[i].measure.psfQual    = ps1data[i].psfQual;
     687    stars[i].measure.psfQF      = ps1data[i].psfQF;
    672688    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    673689    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     
    689705
    690706    // the Average fields and the following Measure fields are set in FilterStars after
    691     // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID,
    692     // averef is set in find_matches, dbFlags is zero on ingest.
     707    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID.
     708
     709    // averef is set in find_matches
     710
     711    // dbFlags is zero on ingest.
    693712
    694713    // the following fields are currently not being set anywhere: t_msec
     
    698717}
    699718
    700 Stars *Convert_PS1_SV1_Alt (FTable *table, unsigned int *nstars) {
     719Stars *Convert_PS1_SV1 (FTable *table, unsigned int *nstars) {
    701720
    702721  off_t Nstars;
     
    706725  CMF_PS1_SV1 *ps1data;
    707726
    708   // some test output files were produced called CMF_PS1_SV1 but with mismatch byte boundaries
    709 
    710   ps1data = gfits_table_get_CMF_PS1_SV1_Alt (table, &Nstars, NULL);
     727  if (table[0].header[0].Naxis[0] == 196) {
     728    stars = Convert_PS1_SV1_Alt (table, nstars);
     729    return (stars);
     730  }
     731
     732  ps1data = gfits_table_get_CMF_PS1_SV1 (table, &Nstars, NULL);
    711733  if (!ps1data) {
    712734    fprintf (stderr, "skipping inconsistent entry\n");
     
    748770                       
    749771    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
    750     stars[i].measure.psfQual    = ps1data[i].psfQual;
     772    stars[i].measure.psfQF      = ps1data[i].psfQF;
    751773    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    752774    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     
    777799}
    778800
     801Stars *Convert_PS1_SV1_Alt (FTable *table, unsigned int *nstars) {
     802
     803  off_t Nstars;
     804  unsigned int i;
     805  double ZeroPt;
     806  Stars *stars;
     807  CMF_PS1_SV1 *ps1data;
     808
     809  // some test output files were produced called CMF_PS1_SV1 but with mismatch byte boundaries
     810
     811  ps1data = gfits_table_get_CMF_PS1_SV1_Alt (table, &Nstars, NULL);
     812  if (!ps1data) {
     813    fprintf (stderr, "skipping inconsistent entry\n");
     814    return (NULL);
     815  }
     816  ZeroPt = GetZeroPoint();
     817
     818  ALLOCATE (stars, Stars, Nstars);
     819  for (i = 0; i < Nstars; i++) {
     820    InitStar (&stars[i]);
     821    stars[i].measure.Xccd       = ps1data[i].X;
     822    stars[i].measure.Yccd       = ps1data[i].Y;
     823    stars[i].measure.dXccd      = ToShortPixels(ps1data[i].dX);
     824    stars[i].measure.dYccd      = ToShortPixels(ps1data[i].dY);
     825
     826    stars[i].measure.posangle   = ToShortDegrees(ps1data[i].posangle);
     827    stars[i].measure.pltscale   = ps1data[i].pltscale;
     828
     829    if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) {
     830      stars[i].measure.M      = NAN;
     831    } else {
     832      stars[i].measure.M      = ps1data[i].M + ZeroPt;
     833    }
     834    stars[i].measure.dM         = ps1data[i].dM;
     835    stars[i].measure.dMcal      = ps1data[i].dMcal;
     836    stars[i].measure.Map        = ps1data[i].Map + ZeroPt;
     837                       
     838    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
     839    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
     840
     841    // these fluxes are converted from counts to counts/sec in FilterStars.c
     842    stars[i].measure.FluxPSF    = ps1data[i].Flux;
     843    stars[i].measure.dFluxPSF   = ps1data[i].dFlux;
     844    stars[i].measure.FluxKron   = ps1data[i].kronFlux;
     845    stars[i].measure.dFluxKron  = ps1data[i].kronFluxErr;
     846
     847    stars[i].measure.Sky        = ps1data[i].sky;
     848    stars[i].measure.dSky       = ps1data[i].dSky;
     849                       
     850    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
     851    stars[i].measure.psfQF      = ps1data[i].psfQF;
     852    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
     853    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     854    stars[i].measure.crNsigma   = ps1data[i].crNsigma;
     855    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
     856
     857    stars[i].measure.FWx        = ToShortPixels(ps1data[i].fx);
     858    stars[i].measure.FWy        = ToShortPixels(ps1data[i].fy);
     859    stars[i].measure.theta      = ToShortDegrees(ps1data[i].df);
     860
     861    stars[i].measure.Mxx        = ToShortPixels(ps1data[i].Mxx);
     862    stars[i].measure.Mxy        = ToShortPixels(ps1data[i].Mxy);
     863    stars[i].measure.Myy        = ToShortPixels(ps1data[i].Myy);
     864                       
     865    stars[i].measure.photFlags  = ps1data[i].flags;
     866
     867    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     868    stars[i].measure.detID      = ps1data[i].detID;
     869
     870    // the Average fields and the following Measure fields are set in FilterStars after
     871    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID,
     872    // averef is set in find_matches, dbFlags is zero on ingest.
     873
     874    // the following fields are currently not being set anywhere: t_msec
     875  }   
     876  *nstars = Nstars;
     877  return (stars);
     878}
     879
     880Stars *Convert_PS1_SV2 (FTable *table, unsigned int *nstars) {
     881
     882  off_t Nstars;
     883  unsigned int i;
     884  double ZeroPt;
     885  Stars *stars;
     886  CMF_PS1_SV2 *ps1data;
     887
     888  ps1data = gfits_table_get_CMF_PS1_SV2 (table, &Nstars, NULL);
     889  if (!ps1data) {
     890    fprintf (stderr, "skipping inconsistent entry\n");
     891    return (NULL);
     892  }
     893  ZeroPt = GetZeroPoint();
     894
     895  ALLOCATE (stars, Stars, Nstars);
     896  for (i = 0; i < Nstars; i++) {
     897    InitStar (&stars[i]);
     898    stars[i].measure.Xccd       = ps1data[i].X;
     899    stars[i].measure.Yccd       = ps1data[i].Y;
     900    stars[i].measure.dXccd      = ToShortPixels(ps1data[i].dX);
     901    stars[i].measure.dYccd      = ToShortPixels(ps1data[i].dY);
     902
     903    stars[i].measure.posangle   = ToShortDegrees(ps1data[i].posangle);
     904    stars[i].measure.pltscale   = ps1data[i].pltscale;
     905
     906    if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) {
     907      stars[i].measure.M      = NAN;
     908    } else {
     909      stars[i].measure.M      = ps1data[i].M + ZeroPt;
     910    }
     911    stars[i].measure.dM         = ps1data[i].dM;
     912    stars[i].measure.dMcal      = ps1data[i].dMcal;
     913    stars[i].measure.Map        = ps1data[i].Map + ZeroPt;
     914                       
     915    stars[i].measure.Mkron      = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;
     916    stars[i].measure.dMkron     = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;
     917
     918    // these fluxes are converted from counts to counts/sec in FilterStars.c
     919    stars[i].measure.FluxPSF    = ps1data[i].Flux;
     920    stars[i].measure.dFluxPSF   = ps1data[i].dFlux;
     921    stars[i].measure.FluxKron   = ps1data[i].kronFlux;
     922    stars[i].measure.dFluxKron  = ps1data[i].kronFluxErr;
     923
     924    stars[i].measure.Sky        = ps1data[i].sky;
     925    stars[i].measure.dSky       = ps1data[i].dSky;
     926                       
     927    stars[i].measure.psfChisq   = ps1data[i].psfChisq;
     928    stars[i].measure.psfQF      = ps1data[i].psfQF;
     929    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
     930    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
     931    stars[i].measure.crNsigma   = ps1data[i].crNsigma;
     932    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
     933
     934    stars[i].measure.FWx        = ToShortPixels(ps1data[i].fx);
     935    stars[i].measure.FWy        = ToShortPixels(ps1data[i].fy);
     936    stars[i].measure.theta      = ToShortDegrees(ps1data[i].df);
     937
     938    stars[i].measure.Mxx        = ToShortPixels(ps1data[i].Mxx);
     939    stars[i].measure.Mxy        = ToShortPixels(ps1data[i].Mxy);
     940    stars[i].measure.Myy        = ToShortPixels(ps1data[i].Myy);
     941                       
     942    stars[i].measure.photFlags  = ps1data[i].flags;
     943
     944    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     945    stars[i].measure.detID      = ps1data[i].detID;
     946
     947    // the Average fields and the following Measure fields are set in FilterStars after
     948    // the image metadata is in hand:  dR, dD, Mcal, dt, airmass, az, t, imageID, extID,
     949    // averef is set in find_matches, dbFlags is zero on ingest.
     950
     951    // the following fields are currently not being set anywhere: t_msec
     952  }   
     953  *nstars = Nstars;
     954  return (stars);
     955}
     956
     957
  • trunk/Ohana/src/addstar/src/SEDfit.c

    r21508 r34405  
    147147    // construct an average object for this object
    148148    // XXX for now, the output objects will have limited astrometric interpretation...
     149    dvo_average_init (&outcat[0].average[Nave]);
    149150    outcat[0].average[Nave].R         = incat[0].average[i].R;
    150151    outcat[0].average[Nave].D         = incat[0].average[i].D;
    151     outcat[0].average[Nave].dR    = 0;
    152     outcat[0].average[Nave].dD    = 0;
    153     outcat[0].average[Nave].uR    = 0;
    154     outcat[0].average[Nave].uD    = 0;
    155     outcat[0].average[Nave].duR   = 0;
    156     outcat[0].average[Nave].duD   = 0;
    157     outcat[0].average[Nave].P     = 0;
    158     outcat[0].average[Nave].dP    = 0;
    159 
    160     // XXX for now, set the average mag data to NULL
    161     outcat[0].average[Nave].Nmeasure      = 0;
    162     outcat[0].average[Nave].Nmissing      = 0;
    163     outcat[0].average[Nave].Xp            = NAN_S_SHORT;
    164     outcat[0].average[Nave].measureOffset = Nmeas;
    165     outcat[0].average[Nave].missingOffset = -1;
    166     outcat[0].average[Nave].flags         = 0;
    167152
    168153    for (j = 0; j < Nsec; j++) {
    169       outcat[0].secfilt[Nave*Nsec+j].M  = NAN;
    170       outcat[0].secfilt[Nave*Nsec+j].dM = NAN;
    171       outcat[0].secfilt[Nave*Nsec+j].Xm = NAN_S_SHORT;
     154      dvo_secfilt_init (&outcat[0].secfilt[Nave*Nsec+j]);
    172155    }
    173156
     
    181164    for (j = 0; valid && (j < Nmodel); j++) {
    182165      n = modelRow[j];
     166      dvo_measure_init (&outcat[0].measure[Nmeas]);
    183167      outcat[0].measure[Nmeas].dR        = 0.0;
    184168      outcat[0].measure[Nmeas].dD        = 0.0;
  • trunk/Ohana/src/addstar/src/addstar.c

    r33963 r34405  
    2727  options = args (argc, argv, options);
    2828
     29  if (options.mode == ADDSTAR_MODE_CREATE_ID) {
     30    addstar_create_ID ();
     31    exit (0);
     32  }
     33
    2934  sky = SkyTableLoadOptimal (CATDIR, SKY_TABLE, GSCFILE, TRUE, SKY_DEPTH, VERBOSE);
    3035  if (sky == NULL) {
  • trunk/Ohana/src/addstar/src/args.c

    r33963 r34405  
    3232  if ((N = get_argument (argc, argv, "-resort"))) {
    3333    options.mode = ADDSTAR_MODE_RESORT;
     34    remove_argument (N, &argc, argv);
     35  }
     36  if ((N = get_argument (argc, argv, "-create-id"))) {
     37    options.mode = ADDSTAR_MODE_CREATE_ID;
    3438    remove_argument (N, &argc, argv);
    3539  }
     
    101105      if (options.mode == ADDSTAR_MODE_FAKEIMAGE) goto allow;
    102106      if (options.mode == ADDSTAR_MODE_REFLIST) goto allow;
     107      if (options.mode == ADDSTAR_MODE_CREATE_ID) goto allow;
    103108      if (options.mode == ADDSTAR_MODE_REFCAT) {
    104109          fprintf (stderr, "you have requested uploading from a catalog to the entire sky in one pass\n");
     
    364369  }
    365370
     371  if ((options.mode == ADDSTAR_MODE_CREATE_ID) && (argc == 1)) return (options);
    366372  if ((options.mode == ADDSTAR_MODE_RESORT) && (argc == 1)) return (options);
    367373  if (argc == 2) return (options);
     
    378384  fprintf (stderr, "USAGE: addstar -fakeimage (ra) (dec) (theta) (name)\n");
    379385  fprintf (stderr, "USAGE: addstar -resort (SkyRegion)\n");
     386  fprintf (stderr, "USAGE: addstar -add-id\n");
    380387  fprintf (stderr, "USAGE: addstar -ppm (filename)\n");
    381388  exit (2);
  • trunk/Ohana/src/addstar/src/load2mass_catalog.c

    r21508 r34405  
    3434    catalog[0].average[Nave].Nmeasure      = 0;
    3535    catalog[0].average[Nave].Nmissing      = 0;
    36     catalog[0].average[Nave].Xp            = NAN_S_SHORT;
     36    catalog[0].average[Nave].ChiSqAve      = NAN_S_SHORT;
    3737    catalog[0].average[Nave].measureOffset = Nmeas;
    3838    catalog[0].average[Nave].missingOffset = -1;
  • trunk/Ohana/src/addstar/src/mkcmf.c

    r34260 r34405  
    1414void gauss_init (int Nbin);
    1515double rnd_gauss (double mean, double sigma);
     16void writeStars_PS1_V4 (FTable *ftable, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
    1617void writeStars_PS1_V3 (FTable *ftable, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
    1718void writeStars_PS1_V2 (FTable *ftable, double *X, double *Y, double *M, unsigned int *Flag, int Nstars);
     
    283284    found = TRUE;
    284285  }
     286  if (!strcmp(type, "PS1_V4")) {
     287    writeStars_PS1_V4 (&ftable, X, Y, M, Flag, Nstars);
     288    found = TRUE;
     289  }
    285290  if (!found) {
    286291    fprintf (stderr, "ERROR: unknown CMF type %s\n", type);
     
    419424    stars[i].fy        = FY;
    420425    stars[i].df        = DF;
    421     stars[i].psfQual   = PSFQUAL;
     426    stars[i].psfQF   = PSFQUAL;
    422427    stars[i].nFrames   = 1;
    423428  }
     
    466471    stars[i].fy        = FY;
    467472    stars[i].df        = DF;
    468     stars[i].psfQual   = PSFQUAL;
     473    stars[i].psfQF   = PSFQUAL;
    469474    stars[i].nFrames   = 1;
    470475    stars[i].flags     = FLAGS;
     
    514519    stars[i].fy        = FY;
    515520    stars[i].df        = DF;
    516     stars[i].psfQual   = PSFQUAL;
     521    stars[i].psfQF   = PSFQUAL;
    517522    stars[i].nFrames   = 1;
    518523    stars[i].flags     = FLAGS;
     
    551556    // randomly give poor PSFQF values
    552557    if ((BAD_PSFQF_FRAC > 0.0) && (drand48() < BAD_PSFQF_FRAC)) {
    553       stars[i].psfQual   = 0.25;
     558      stars[i].psfQF   = 0.25;
    554559    } else {
    555       stars[i].psfQual   = PSFQUAL;
     560      stars[i].psfQF   = PSFQUAL;
    556561    }
    557562   
     
    606611    // randomly give poor PSFQF values
    607612    if ((BAD_PSFQF_FRAC > 0.0) && (drand48() < BAD_PSFQF_FRAC)) {
    608       stars[i].psfQual   = 0.25;
     613      stars[i].psfQF   = 0.25;
    609614    } else {
    610       stars[i].psfQual   = PSFQUAL;
     615      stars[i].psfQF   = PSFQUAL;
    611616    }
    612617   
     
    635640}
    636641
     642void writeStars_PS1_V4 (FTable *ftable, double *X, double *Y, double *M, unsigned int *Flag, int Nstars) {
     643
     644  int i;
     645  CMF_PS1_V4 *stars;
     646  float flux, fSN;
     647
     648  // XXX add gaussian-distributed noise based on counts
     649  // this needs to make different output 'stars' entries depending on the desired type
     650  ALLOCATE (stars, CMF_PS1_V4, Nstars);
     651  gauss_init (2048);
     652  for (i = 0; i < Nstars; i++) {
     653    stars[i].detID = i;
     654
     655    flux = pow (10.0, -0.4*M[i]);
     656    fSN = 1.0 / sqrt(flux);
     657
     658    stars[i].X = X[i];
     659    stars[i].Y = Y[i];
     660    stars[i].M = M[i];
     661    stars[i].Map = M[i] - 0.05;
     662
     663    if (ADDNOISE) {
     664      stars[i].X += FX * fSN * rnd_gauss(0.0, 1.0);
     665      stars[i].Y += FY * fSN * rnd_gauss(0.0, 1.0);
     666      stars[i].M += fSN*rnd_gauss(0.0, 1.0);
     667    }
     668
     669    // randomly give poor PSFQF values
     670    if ((BAD_PSFQF_FRAC > 0.0) && (drand48() < BAD_PSFQF_FRAC)) {
     671      stars[i].psfQF     = 0.25;
     672      stars[i].psfQFperf = 0.24;
     673    } else {
     674      stars[i].psfQF     = PSFQUAL;
     675      stars[i].psfQFperf = MAX(PSFQUAL - 0.01, 0.0);
     676    }
     677   
     678    stars[i].dX = FX * fSN;
     679    stars[i].dY = FY * fSN;
     680    stars[i].dM = fSN;
     681
     682    stars[i].Mpeak     = M[i] + 1.0;
     683    stars[i].sky       = SKY;
     684    stars[i].dSky      = DSKY;
     685    stars[i].psfChisq  = PSFCHI;
     686    stars[i].crNsigma  = CRN;
     687    stars[i].extNsigma = EXTN;
     688    stars[i].fx        = FX;
     689    stars[i].fy        = FY;
     690    stars[i].df        = DF;
     691    stars[i].nFrames   = 1;
     692    stars[i].flags     = Flag[i];
     693
     694    stars[i].kronFlux  = flux * 1.25;
     695    stars[i].kronFluxErr = fSN * flux * 1.25;
     696  }
     697
     698  gfits_table_set_CMF_PS1_V4 (ftable, stars, Nstars);
     699  gfits_modify (ftable->header, "EXTTYPE",   "%s", 1, "PS1_V4");
     700}
     701
  • trunk/Ohana/src/addstar/src/update_coords.c

    r27435 r34405  
    4747  dR2 = r2 / Npt - r*r;
    4848  dD2 = d2 / Npt - d*d;
    49   average[0].Xp = sqrt (dD2 + dR2 / SQ(cos(d*RAD_DEG)));
    50   /* Xp is scatter in position in hundredths of arcsec */
     49  average[0].ChiSqAve = sqrt (dD2 + dR2 / SQ(cos(d*RAD_DEG)));
     50  /* ChiSqAve is supposed to be a chisq */
    5151
    5252  return;
  • trunk/Ohana/src/addstar/test/simple.dvo

    r34260 r34405  
    44
    55macro test.all
     6  # test.fields (DVO schema) (CMF format)
    67  test.fields PS1_DEV_0 PS1_V1
    78  test.fields PS1_DEV_1 PS1_V1
     
    910  test.fields PS1_V2    PS1_V1
    1011  test.fields PS1_V3    PS1_V1
     12  test.fields PS1_V4    PS1_V1
    1113
    1214  test.fields PS1_DEV_0 PS1_V2
     
    1517  test.fields PS1_V2    PS1_V2
    1618  test.fields PS1_V3    PS1_V2
     19  test.fields PS1_V4    PS1_V4
    1720
    1821  test.fields PS1_DEV_0 PS1_V3
     
    2124  test.fields PS1_V2    PS1_V3
    2225  test.fields PS1_V3    PS1_V3
     26  test.fields PS1_V4    PS1_V4
    2327
    2428  test.fields PS1_DEV_0 PS1_V4
     
    2731  test.fields PS1_V2    PS1_V4
    2832  test.fields PS1_V3    PS1_V4
     33  test.fields PS1_V4    PS1_V4
    2934end 
    3035
     
    3641  end
    3742
    38   tapPLAN 51
     43  echo ""
     44  echo "testing --- CMF = $1, DVO = $2 ---"
    3945
    4046  exec rm -rf catdir.test
     
    4551  mkinput
    4652  exec mkcmf test.in.txt test.cmf -date 2008/1/1 -time 01:00:00 -radec $RA $DEC -type $1
    47   exec addstar -D CATDIR catdir.test -D CAMERA simtest test.cmf -D CATFORMAT $2 -quick-airmass
     53  if ($TAP_VERBOSE)
     54    exec addstar -D CATDIR catdir.test -D CAMERA simtest test.cmf -D CATFORMAT $2 -quick-airmass
     55  else
     56    exec addstar -D CATDIR catdir.test -D CAMERA simtest test.cmf -D CATFORMAT $2 -quick-airmass >& tmp.log
     57  end
    4858
    4959  list testfields -copy testfields_$1
     60
     61  # set the number of tests based on the testfields list
     62  tapPLAN {3 + 3*($testfields:n - 1)}
    5063
    5164  catdir catdir.test
     
    7790  for i 1 $testfields:n
    7891    list name -split $testfields:$i
    79     if ("$name:0" == "SKIP") continue
    80     if ("$name:2" == "SKIP") continue
     92    if ("$name:0" == "SKIP")
     93      tapSKIP 3
     94      continue
     95    end
     96    if ("$name:2" == "SKIP")
     97      tapSKIP 3
     98      continue
     99    end
    81100    # must be the same length
    82101    set v1 = $name:0
     
    106125    # THETA is stored to only (360/65536) deg accuracy
    107126    if ("$name:0" == "PSF_THETA")
    108       echo $MEAN
     127      # echo $MEAN
    109128      tapOK {abs($MEAN)  < 0.006} "$name:0 vs $name:2 (MEAN)"
    110129      tapOK {abs($SIGMA) < 0.001} "$name:0 vs $name:2 (SIGMA)"
     
    304323  N_FRAMES          : SKIP # not ingested into DVO
    305324end
     325
     326# this list is good for PS1_V4
     327list testfields_PS1_V4
     328  IPP_IDET          : detid     
     329  X_PSF             : xccd     
     330  Y_PSF             : yccd     
     331  X_PSF_SIG         : xccd:err # FAIL
     332  Y_PSF_SIG         : yccd:err # FAIL
     333  POSANGLE          : SKIP # astrometry is not calibrated in the cmf
     334  PLTSCALE          : SKIP # astrometry is not calibrated in the cmf
     335  PSF_INST_MAG      : mag:inst 
     336  PSF_INST_MAG_SIG  : mag:err   
     337  PSF_INST_FLUX     : SKIP # not ingested into DVO
     338  PSF_INST_FLUX_SIG : SKIP # not ingested into DVO
     339  AP_MAG_STANDARD   : mag:aperinst # FAIL
     340  AP_MAG_RAW        : SKIP # not ingested into DVO
     341  AP_MAG_RADIUS     : SKIP # not ingested into DVO
     342  CAL_PSF_MAG       : SKIP # photometry is not calibrated in the cmf
     343  CAL_PSF_MAG_SIG   : SKIP # photometry is not calibrated in the cmf
     344  RA_PSF            : SKIP # astrometry is not calibrated in the cmf
     345  DEC_PSF           : SKIP # astrometry is not calibrated in the cmf
     346  PEAK_FLUX_AS_MAG  : SKIP # not ingested into DVO
     347  SKY               : sky       
     348  SKY_SIG           : sky_err   
     349  PSF_CHISQ         : psf_chisq
     350  CR_NSIGMA         : cr_nsigma
     351  EXT_NSIGMA        : ext_nsigma
     352  PSF_MAJOR         : FWHM_MAJ 
     353  PSF_MINOR         : FWHM_MIN 
     354  PSF_THETA         : THETA # FAIL
     355  PSF_QF            : PSF_QF   
     356  PSF_QF_PERFECT    : SKIP # not ingested into DVO
     357  PSF_NDOF          : PSF_NDOF
     358  PSF_NPIX          : PSF_NPIX
     359  MOMENTS_XX        : MXX
     360  MOMENTS_XY        : MXY
     361  MOMENTS_YY        : MYY
     362  MOMENTS_M3C       : SKIP # not ingested into DVO
     363  MOMENTS_M3S       : SKIP # not ingested into DVO
     364  MOMENTS_M4C       : SKIP # not ingested into DVO
     365  MOMENTS_M4S       : SKIP # not ingested into DVO
     366  MOMENTS_R1        : SKIP # not ingested into DVO
     367  MOMENTS_RH        : SKIP # not ingested into DVO
     368  KRON_FLUX         : mag:kroninst
     369  KRON_FLUX_ERR     : mag:kronerr
     370  KRON_FLUX_INNER   : SKIP # not ingested into DVO
     371  KRON_FLUX_OUTER   : SKIP # not ingested into DVO
     372  FLAGS             : phot_flags
     373  N_FRAMES          : SKIP # not ingested into DVO
     374end
  • trunk/Ohana/src/addstar/test/tap.dvo

    r33653 r34405  
    22
    33if (not($?TAP_BREAK)) set TAP_BREAK = 0
     4if (not($?TAP_VERBOSE)) set TAP_VERBOSE = 0
    45
    56macro tapOK
     
    1011
    1112  if ($1)
    12     echo "ok : $2"
     13    if ($TAP_VERBOSE)
     14      echo "ok : $2"
     15    end
    1316    $TAP_LAST = 1
    1417  else
     
    4245  end
    4346
    44   $TAP_NSKIP ++
    45   $TAP_NDONE ++
     47  $TAP_NSKIP += $1
     48  $TAP_NDONE += $1
    4649end
    4750
  • trunk/Ohana/src/dvomerge/Makefile

    r34260 r34405  
    3333$(SRC)/dvomergeUpdate_catalogs.$(ARCH).o \
    3434$(SRC)/dvomergeUpdate_threaded.$(ARCH).o \
     35$(SRC)/dvomergeHistory.$(ARCH).o \
    3536$(SRC)/dvomergeFromList.$(ARCH).o \
    3637$(SRC)/dvomergeImageIDs.$(ARCH).o \
     
    5657$(SRC)/dvomerge_client.$(ARCH).o \
    5758$(SRC)/dvomergeUpdate_catalogs.$(ARCH).o \
     59$(SRC)/dvomergeHistory.$(ARCH).o \
    5860$(SRC)/dvomergeImageIDs.$(ARCH).o \
    5961$(SRC)/dvo_image_merge_dbs.$(ARCH).o \
  • trunk/Ohana/src/dvomerge/doc/failsafe.txt

    r33963 r34405  
     1
     220120809
     3
     4more on failsafe
     5
     6I need to improve the technique I'm using for failsafe ops / rerun.
     7
     8 * Image.dat PHU keywords:
     9   DVO_DB_ID : %s : hex string with 32 byte "unique" string for DB
     10   DM_NMERGE : %d : number of databases merged into this onea
     11   DM_nnnnnn : %s : DVO_DB_ID of merge (nnnnn)
     12
     13   Note: nnnnnn may be greater than NMERGE if entries are skipped
     14     (only a total of NMERGE nnnnnn values are allowed)
     15
     16 * region.cpt PHU keywords:
     17   DM_NMERGE : %d : number of databases merged into this one (needed?)
     18   MS_nnnnnn : %d : size of merged db entry nnnnnn
     19   MT_nnnnnn : %s : date/time of merged db entry nnnnnn
     20   
     21 Is there a reason for the image entries?  (additional record keeping)
     22
     23 
     24
     25
     26201206??
    127
    228we have a problem with dvomerge and flaky hosts.  the problem is that
  • trunk/Ohana/src/dvomerge/include/dvomerge.h

    r34277 r34405  
    4444  char *notFound;
    4545} IDmapType;
     46
     47// struct to describe a sequence of dvomerges (Image.dat header)
     48typedef struct {
     49  int Nmerge;
     50  char **IDs;
     51} dmhImage;
     52
     53// struct to describe a sequence of dvomerges (Object table : cpt header)
     54typedef struct {
     55  int   Nmerge;
     56  off_t  *size;
     57  time_t *time;
     58  char  **date;
     59} dmhObject;
     60
     61// data on a single table, populated when a new file is merged
     62typedef struct {
     63  off_t  size;
     64  time_t time;
     65  char  *date;
     66} dmhObjectStats;
     67
     68// struct to describe the current status of a single output file:
     69// is it on this machine (valid)? have we already merged or not (missed)?
     70// what is the collection of past merges (history)?  what is the real filename?
     71typedef struct {
     72  int valid;                  // is this object table on this machine?
     73  int missed;                 // did we fail to merge into this table yet?
     74  dmhObject *history;         // complete sequence of previous merges
     75  char *filename;             // true filename on disk
     76} OutputStatus;
    4677
    4778int        main                   PROTO((int argc, char **argv));
     
    130161IDmapType *IDmapLoad               PROTO((char *filename));
    131162int        create_IDmap_lookup     PROTO((IDmapType *IDmap));
     163
     164// dvomerge history functions
     165OutputStatus *OutputStatusInit (int N);
     166int OutputStatusFree (OutputStatus *outstat, int N);
     167
     168int dmhObjectAdd (dmhObject *history, Header *header, dmhObjectStats *inStats);
     169int dmhObjectCheck (dmhObject *history, dmhObjectStats *inStats);
     170dmhObject *dmhObjectRead (char *filename);
     171
     172void dmhObjectStatsFree (dmhObjectStats *stats);
     173dmhObjectStats *dmhObjectStatsRead (char *filename);
     174
     175int dmhImageAdd (FITS_DB *db, dmhImage *history, char *dbID);
     176dmhImage *dmhImageRead (FITS_DB *db) ;
     177int dmhImageCheck (dmhImage *history, char *dbID);
     178
     179char *dmhImageReadID (FITS_DB *db);
     180int dvoCreateID (char *catdir);
     181
  • trunk/Ohana/src/dvomerge/include/dvoverify.h

    r34260 r34405  
    3434int    NNotSorted;
    3535int    CHECK_TOPLEVEL;
     36int    CHECK_IMAGE_ID;
    3637int    LIST_MISSING;
    3738
     
    5253void AddFailures (char *filename);
    5354char **GetFailures (int *N);
     55
     56int LoadImageIDs (char *catdir);
     57int CheckImageID (Catalog *catalog);
  • trunk/Ohana/src/dvomerge/src/dvomergeImageIDs.c

    r33963 r34405  
    2121    return TRUE;
    2222  }
     23  // this operation reads the PHU header (inDB.header)
    2324  if (!dvo_image_load (&inDB, VERBOSE, TRUE)) {
    2425    Shutdown ("can't read input image catalog %s", inDB.filename);
    2526  }
     27  dvo_image_unlock (&inDB); // unlock input
     28
     29  // read the header for the database ID?
     30  char *indbID = dmhImageReadID (&inDB);
     31  if (!indbID) {
     32    Shutdown ("this database is missing a DVO database ID; please generate one before merging\n");
     33  }
    2634
    2735  /*** load output/Images.dat ***/
     
    4149  }
    4250
     51  dmhImage *history = dmhImageRead (&outDB);
     52  if (!history) {
     53    Shutdown ("error reading history for output database\n");
     54  }
     55
     56  // have we already merged this database?
     57  if (dmhImageCheck(history, indbID)) {
     58    // if so, then just match the image IDs
     59    if (VERBOSE) fprintf (stderr, "already merged image table\n");
     60    dvo_image_match_dbs(IDmap, &outDB, &inDB);
     61    dvo_image_unlock (&outDB); // unlock output
     62    return TRUE;
     63  }
     64
    4365  // convert database table to internal structure & add to output image db
    4466  dvo_image_merge_dbs(IDmap, &outDB, &inDB);
    45   dvo_image_unlock (&inDB); // unlock input
    4667
     68  // add the new image db to merge history
     69  // (updates header as well as history structure
     70  if (!dmhImageAdd (&outDB, history, indbID)) {
     71    Shutdown ("error reading history for output database\n");
     72  }
     73   
    4774  SetProtect (TRUE);
    4875  dvo_image_save (&outDB, VERBOSE);
  • trunk/Ohana/src/dvomerge/src/dvomergeUpdate_catalogs.c

    r34260 r34405  
    3131    outlist = SkyListByBounds (outsky, -1, inlist[0].regions[i][0].Rmin + dPos, inlist[0].regions[i][0].Rmax - dPos, inlist[0].regions[i][0].Dmin + dPos, inlist[0].regions[i][0].Dmax - dPos);
    3232
    33     // there may be more than one output region for a given input region.  are any of these output regions relevant to this machine?
     33    OutputStatus *outstat = OutputStatusInit (outlist->Nregions);
     34
     35    // there may be more than one output region for a given input region. 
     36    // are any of these output regions relevant to this machine?
    3437    int found = FALSE;
    35     for (j = 0; !found && (j < outlist[0].Nregions); j++) {
    36       found = (found || HostTableTestHost(outlist[0].regions[j], HOST_ID));
     38    for (j = 0; j < outlist[0].Nregions; j++) {
     39      outstat[j].valid = HostTableTestHost(outlist[0].regions[j], HOST_ID);
     40      found = (found || outstat[j].valid);
    3741    }
    3842
    3943    // skip this input table for if no output files are on this machine
    4044    if (!found) {
     45      OutputStatusFree (outstat, outlist->Nregions);
    4146      SkyListFree (outlist);
    4247      continue;
    4348    }
    4449
    45     // get the stats on this input file (for comparison with the output headers)
    46     struct stat instats;
    47     int stat_result = stat (inlist[0].filename[i], &instats);
    48     if (stat_result) {
    49       if (errno == ENOENT) continue;
    50       fprintf (stderr, "cannot read stats on input file %s\n", inlist[0].filename[i]);
    51       perror ("stats error message:");
    52       exit (2);
    53     }
    54 
    55     // instats.st_size & instats.st_mtime
    56 
    57     // check if any of the output files have NOT yet received data from this input file
    58 
     50    // get stats for history check, skip input catalog if file not found (NULL inStats)
     51    dmhObjectStats *inStats = dmhObjectStatsRead (inlist[0].filename[i]);
     52    if (!inStats) {
     53      if (VERBOSE) fprintf (stderr, "skipping %s, empty \n", inlist[0].filename[i]);
     54      OutputStatusFree (outstat, outlist->Nregions);
     55      SkyListFree (outlist);
     56      continue;
     57    }
     58
     59    // Check if any of the output files have NOT yet received data from this input file
     60    // If none have been missed, we can skip the input file completely
    5961    int missed = FALSE;
    60     for (j = 0; !missed && (j < outlist[0].Nregions); j++) {
    61       if (!HostTableTestHost(outlist[0].regions[j], HOST_ID)) continue;
     62    for (j = 0; j < outlist[0].Nregions; j++) {
     63      if (!outstat[j].valid) continue;
    6264
    6365      // set the parameters which guide catalog open/load/create
     
    6567      snprintf (hostfile, DVO_MAX_PATH, "%s/%s.cpt", HOSTDIR, outlist[0].regions[j]->name);
    6668      char *filename = HOST_ID ? hostfile : outlist[0].filename[j];
    67 
    68       // get the stats on this input file (for comparison with the output headers)
    69       struct stat outstats;
    70       stat_result = stat (filename, &outstats);
    71       if (stat_result) {
    72         if (errno == ENOENT) {
    73           missed = TRUE;
    74           break;
    75         }
    76         fprintf (stderr, "cannot read stats on output file %s\n", filename);
    77         perror ("stats error message:");
    78         exit (2);
    79       }
    80 
    81       FILE *fout = fopen (filename, "r");
    82       if (!fout) {
    83         fprintf (stderr, "problem opening output file to read header %s\n", filename);
    84         perror ("stats error message:");
    85         exit (2);
    86       }
    87 
    88       Header outheader;
    89       if (!gfits_fread_header (fout, &outheader)) {
    90         fprintf (stderr, "problem reading header for output file %s\n", filename);
    91         exit (2);
    92       }
    93      
    94       fclose (fout);
    95 
    96       // XXX note that we are hardwired to v 2
    97       // check the header of output catalog for an existing merge
    98       long long last_size;
    99       char last_moddate[80];
    100       gfits_scan (&outheader, "LMRG_SZ2", "%lld", 1, &last_size);     
    101       gfits_scan (&outheader, "LMRG_DT2", "%s", 1, last_moddate);     
    102 
    103       time_t last_mod = ohana_date_to_sec (last_moddate);
    104 
    105       if (last_size != instats.st_size) {
    106         missed = TRUE;
    107         break;
    108       }
    109      
    110       if (last_mod != instats.st_mtime) {
    111         missed = TRUE;
    112         break;
    113       }
     69      outstat[j].filename = strcreate (filename);
     70
     71      outstat[j].history = dmhObjectRead (outstat[j].filename);
     72
     73      // have we already merged this database?
     74      outstat[j].missed = !dmhObjectCheck (outstat[j].history, inStats);
     75      missed = (missed || outstat[j].missed);
    11476    }
    11577    if (!missed) {
    116       fprintf (stderr, "skipping %s, already merged\n", inlist[0].filename[i]);
     78      if (VERBOSE) fprintf (stderr, "skipping %s, empty or already merged\n", inlist[0].filename[i]);
     79      OutputStatusFree (outstat, outlist->Nregions);
     80      dmhObjectStatsFree (inStats);
     81      SkyListFree (outlist);
    11782      continue;
    11883    }
     
    12590        dvo_catalog_unlock (&incatalog);
    12691        dvo_catalog_free (&incatalog);
     92        OutputStatusFree (outstat, outlist->Nregions);
     93        dmhObjectStatsFree (inStats);
    12794        SkyListFree (outlist);
    12895        continue;
    12996    }
    130 
    131     char *moddate = ohana_sec_to_date (instats.st_mtime);
    13297
    13398    // merge input into the appropriate output tables
    13499    for (j = 0; j < outlist[0].Nregions; j++) {
    135100      // skip tables for which the output files are not on this machine
    136       if (!HostTableTestHost(outlist[0].regions[j], HOST_ID)) continue;
     101      if (!outstat[j].valid) continue;
     102
     103      // skip if we have already done the merge
     104      if (!outstat[j].missed) continue;
    137105
    138106      if (VERBOSE) fprintf (stderr, "output : %s\n", outlist[0].regions[j][0].name);
    139107
    140       // set the parameters which guide catalog open/load/create
    141       char hostfile[DVO_MAX_PATH];
    142       snprintf (hostfile, DVO_MAX_PATH, "%s/%s.cpt", HOSTDIR, outlist[0].regions[j]->name);
    143       outcatalog.filename  = HOST_ID ? hostfile : outlist[0].filename[j];
     108      // the real filename
     109      outcatalog.filename = outstat[j].filename;
    144110
    145111      // load input catalog
     
    151117      outcatalog.catflags = LOAD_AVES | LOAD_MEAS | LOAD_MISS | LOAD_SECF;
    152118
    153 # if (0)
    154       // get the LMRG data from the previous pass
    155       long long last_size;
    156       char last_moddate[80];
    157       int status_size = gfits_scan (&outcatalog.header, "LMRG_SZ", "%lld", 1, &last_size);     
    158       int status_date = gfits_scan (&outcatalog.header, "LMRG_DT", "%s", 1, last_moddate);     
    159 
    160       // save the LMRG data from the previous pass
    161       if (status_size && status_date) {
    162         gfits_modify (&outcatalog.header, "LMRG_SZ1", "%lld", 1, (long long) last_size);     
    163         gfits_modify (&outcatalog.header, "LMRG_DT1", "%s", 1, last_moddate);     
    164       }
    165 
    166       // update header of output catalog
    167       gfits_modify (&outcatalog.header, "LMRG_SZ", "%lld", 1, (long long) instats.st_size);     
    168       gfits_modify (&outcatalog.header, "LMRG_DT", "%s", 1, moddate);     
    169 # endif
    170 
    171       // update header of output catalog
    172       // XXX note that we are hardwired to v 2
    173       gfits_modify (&outcatalog.header, "LMRG_SZ2", "%lld", 1, (long long) instats.st_size);     
    174       gfits_modify (&outcatalog.header, "LMRG_DT2", "%s", 1, moddate);     
     119      dmhObjectAdd (outstat[j].history, &outcatalog.header, inStats);
    175120
    176121      if (!dvo_catalog_backup (&outcatalog, TRUE)) {
     
    196141      fprintf (stderr, "merged %s into %s\n", inlist[0].regions[i][0].name, outlist[0].regions[j][0].name);
    197142    }
     143
     144    OutputStatusFree (outstat, outlist->Nregions);
    198145    SkyListFree (outlist);
    199     free (moddate);
     146    dmhObjectStatsFree (inStats);
    200147
    201148    dvo_catalog_unlock (&incatalog);
  • trunk/Ohana/src/dvomerge/src/dvoverify.c

    r34260 r34405  
    4242  }
    4343
     44  if (CHECK_IMAGE_ID) {
     45    LoadImageIDs (CATDIR);
     46  }
     47
    4448  // load the sky table for the existing database
    4549  sky = SkyTableLoadOptimal (CATDIR, NULL, NULL, FALSE, SKY_DEPTH_HST, VERBOSE);
  • trunk/Ohana/src/dvomerge/src/dvoverify_args.c

    r34260 r34405  
    5353  if ((N = get_argument (*argc, argv, "-skip-toplevel"))) {
    5454    CHECK_TOPLEVEL = FALSE;
     55    remove_argument (N, argc, argv);
     56  }
     57
     58  CHECK_IMAGE_ID = TRUE;
     59  if ((N = get_argument (*argc, argv, "-skip-image-ids"))) {
     60    CHECK_IMAGE_ID = FALSE;
    5561    remove_argument (N, argc, argv);
    5662  }
  • trunk/Ohana/src/dvomerge/src/dvoverify_catalogs.c

    r34260 r34405  
    100100
    101101    char tmpline[DVO_MAX_PATH];
    102     if (VERBOSE)      { snprintf (tmpline, DVO_MAX_PATH, "%s -v", command); strcpy (command, tmpline); }
    103     if (CHECKSORTED)  { snprintf (tmpline, DVO_MAX_PATH, "%s -s", command); strcpy (command, tmpline); }
    104     if (LIST_MISSING) { snprintf (tmpline, DVO_MAX_PATH, "%s -list-missing", command); strcpy (command, tmpline); }
     102    if (VERBOSE)         { snprintf (tmpline, DVO_MAX_PATH, "%s -v", command); strcpy (command, tmpline); }
     103    if (CHECKSORTED)     { snprintf (tmpline, DVO_MAX_PATH, "%s -s", command); strcpy (command, tmpline); }
     104    if (!CHECK_IMAGE_ID) { snprintf (tmpline, DVO_MAX_PATH, "%s -skip-image-ids", command); strcpy (command, tmpline); }
     105    if (LIST_MISSING)    { snprintf (tmpline, DVO_MAX_PATH, "%s -list-missing", command); strcpy (command, tmpline); }
    105106
    106107    fprintf (stderr, "command: %s\n", command);
  • trunk/Ohana/src/dvomerge/src/dvoverify_client.c

    r34260 r34405  
    1919  skylist = SkyListByPatch (sky, -1, &UserPatch);
    2020 
     21  if (CHECK_IMAGE_ID) {
     22    // XXX in client mode, we should be reading a reduced table generated by the calling
     23    // serial program
     24    LoadImageIDs (CATDIR);
     25  }
     26
    2127  dvoverify_catalogs (skylist, &Nbad);
    2228
  • trunk/Ohana/src/dvomerge/src/dvoverify_utils.c

    r34260 r34405  
    4949
    5050// is this file a consistent FITS file?
     51// note that VerifyTableFile only has to read the headers,
     52// not the data blocks (it uses stat for sizes)
    5153int VerifyTableFile (char *filename) {
    5254
     
    194196  // \sum average[].Nmeasure = Nmeasure
    195197
    196   // if the table is NOT SORTED, we have a subset of checks we can make
     198  // if the table is NOT SORTED, do we have a subset of checks we can make?
    197199  if (!catalog.sorted) {
    198200    fprintf (stderr, "!");
     
    231233  }
    232234
     235  // if we have a problem with Nmeasure and/or measureOffset values, we
     236  // cannot do any further check -- we risk segfaults
    233237  if (!status) {
    234238    dvo_catalog_unlock (&catalog);
     
    263267  }
    264268
    265 //  for (i = 0; i < catalog.Naverage; i++) {
    266 //    m = catalog.average[i].measureOffset;
    267 //    for (j = 0; i < catalog.Nmeasure; i++) {
    268 //      objIDsOK &= (catalog.average[i].objID == catalog.measure[m+j].objID);
    269 //      catIDsOK &= (catalog.average[i].catID == catalog.measure[m+j].catID);
    270 //      averefOK &= (catalog.measure[m+j].averef = i);
    271 //    }
    272 //  }
     269  // check the image ID here?
     270  if (CHECK_IMAGE_ID) {
     271    int Nfail = CheckImageID (&catalog);
     272    if (Nfail > 0) {
     273      fprintf (stderr, "ERROR: catalog %s has invalid %d unmatched image IDs\n", catalog.filename, Nfail);
     274      status = FALSE;
     275    }
     276  }
    273277
    274278  dvo_catalog_unlock (&catalog);
     
    278282}
    279283
    280 // gfits_scan(&cpmHeaderTBL, "NAXIS1", "%d", 1, &NbytesPerRow);
    281 // gfits_scan(&cpmHeaderTBL, "NAXIS2", "%d", 1, &Nrows);
    282    
     284static int maxID = 0;
     285static int *IDlist = NULL;
     286
     287// check that every measure->imageID (if set) matches an existing
     288// image->ID.  return the number of failures.
     289int CheckImageID (Catalog *catalog) {
     290
     291  off_t i, j, m, id;
     292  int Nfail = 0;
     293
     294  for (i = 0; i < catalog[0].Naverage; i++) {
     295    m = catalog[0].average[i].measureOffset;
     296    for (j = 0; j < catalog[0].average[i].Nmeasure; j++) {
     297      id = catalog[0].measure[m+j].imageID;
     298      if (id > maxID) {
     299        Nfail ++;
     300        continue;
     301        // is this sufficient to catch IDs set without an image table?
     302      }
     303      if (IDlist) {
     304        if (IDlist[id] < 0) {
     305          Nfail ++;
     306          continue;
     307        }
     308      } else {
     309        if (id > 0) {
     310          Nfail ++;
     311          continue;
     312        }
     313      }
     314    }
     315  }
     316  return Nfail;
     317}
     318
     319int LoadImageIDs (char *catdir) {
     320
     321  int status;
     322  off_t Nimages, i;
     323  Image *images;
     324  FITS_DB inDB;
     325
     326  char ImageCat[DVO_MAX_PATH];
     327  snprintf (ImageCat, DVO_MAX_PATH, "%s/Images.dat", catdir);
     328
     329  // load the iage database table
     330  status = dvo_image_lock (&inDB, ImageCat, 3600.0, LCK_SOFT);  // shorter timeout?
     331  if (!status) {
     332    fprintf (stderr, "ERROR: failure to lock image catalog %s", inDB.filename);
     333    exit (3);
     334  }
     335
     336  // load the image table
     337  if (inDB.dbstate == LCK_EMPTY) {
     338    dvo_image_unlock (&inDB); // unlock input
     339    // this is not an error: we can have no image table for, eg, 2MASS only db
     340    return TRUE;
     341  }
     342  if (!dvo_image_load (&inDB, VERBOSE, TRUE)) {
     343    fprintf (stderr, "can't read input image catalog %s", inDB.filename);
     344    exit (4);
     345  }
     346
     347  images = gfits_table_get_Image (&inDB.ftable, &Nimages, &inDB.swapped);
     348  if (!images) {
     349    fprintf (stderr, "ERROR: failed to read images from src\n");
     350    exit (2);
     351  }
     352
     353  // generate a lookup table for the images
    283354 
     355  // first, find the max imageID
     356  for (i = 0; i < Nimages; i++) {
     357    maxID = MAX(maxID, images[i].imageID);
     358  }
     359
     360  ALLOCATE (IDlist, int, maxID + 1);
     361  for (i = 0; i < maxID + 1; i++) {
     362    IDlist[i] = -1;
     363  }
     364
     365  for (i = 0; i < Nimages; i++) {
     366    int id = images[i].imageID;
     367    IDlist[id] = i;
     368  }
     369
     370  // free image table here?
     371  // (in the future, I'll have to do the image table read in segments
     372  // it is just getting to be too large...)
     373  dvo_image_unlock (&inDB); // unlock input
     374
     375  return TRUE;
     376}
  • trunk/Ohana/src/dvomerge/src/merge_catalogs_old.c

    r33963 r34405  
    320320    output[0].average[Nave].dP             = 0;
    321321
    322     output[0].average[Nave].Xp             = 0;
     322    output[0].average[Nave].stargal        = 0;
    323323    output[0].average[Nave].ChiSqAve       = 0.0;
    324324    output[0].average[Nave].ChiSqPM        = 0.0;
  • trunk/Ohana/src/dvomerge/test/catdir.grizy/Images.dat

    r24745 r34405  
    1 SIMPLE  =                    T /                                                BITPIX  =                    8 /                                                NAXIS   =                    0 /                                                PCOUNT  =                    0 /                                                GCOUNT  =                    1 /                                                BSCALE  =         1.0000000000 /                                                BZERO   =         0.0000000000 /                                                EXTEND  =                    T /                                                NIMAGES =                    0 /                                                ZERO_PT =        25.0000000000 /                                                FORMAT  = 'ELIXIR            ' /                                                END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             XTENSION= 'BINTABLE          ' /                                                BITPIX  =                    8 /                                                NAXIS   =                    2 /                                                NAXIS1  =                  240 /                                                NAXIS2  =                    0 /                                                PCOUNT  =                    0 /                                                GCOUNT  =                    1 /                                                TFIELDS =                   50 /                                                EXTNAME = 'DVO_IMAGE_ELIXIR  ' /                                                TTYPE1  = 'CRVAL1            ' / coordinate at reference pixel                  TUNIT1  = '                  ' /                                                TFORM1  = 'D                 ' /                                                TSCAL1  =         1.0000000000 /                                                TZERO1  =         0.0000000000 /                                                TTYPE2  = 'CRVAL2            ' / coordinate at reference pixel                  TUNIT2  = '                  ' /                                                TFORM2  = 'D                 ' /                                                TSCAL2  =         1.0000000000 /                                                TZERO2  =         0.0000000000 /                                                TTYPE3  = 'CRPIX1            ' / coordinate of reference pixel                  TUNIT3  = '                  ' /                                                TFORM3  = 'E                 ' /                                                TSCAL3  =         1.0000000000 /                                                TZERO3  =         0.0000000000 /                                                TTYPE4  = 'CRPIX2            ' / coordinate of reference pixel                  TUNIT4  = '                  ' /                                                TFORM4  = 'E                 ' /                                                TSCAL4  =         1.0000000000 /                                                TZERO4  =         0.0000000000 /                                                TTYPE5  = 'CDELT1            ' / degrees per pixel                              TUNIT5  = '                  ' /                                                TFORM5  = 'E                 ' /                                                TSCAL5  =         1.0000000000 /                                                TZERO5  =         0.0000000000 /                                                TTYPE6  = 'CDELT2            ' / degrees per pixel                              TUNIT6  = '                  ' /                                                TFORM6  = 'E                 ' /                                                TSCAL6  =         1.0000000000 /                                                TZERO6  =         0.0000000000 /                                                TTYPE7  = 'PC1_1             ' / rotation matrix                                TUNIT7  = '                  ' /                                                TFORM7  = 'E                 ' /                                                TSCAL7  =         1.0000000000 /                                                TZERO7  =         0.0000000000 /                                                TTYPE8  = 'PC1_2             ' / rotation matrix                                TUNIT8  = '                  ' /                                                TFORM8  = 'E                 ' /                                                TSCAL8  =         1.0000000000 /                                                TZERO8  =         0.0000000000 /                                                TTYPE9  = 'PC2_1             ' / rotation matrix                                TUNIT9  = '                  ' /                                                TFORM9  = 'E                 ' /                                                TSCAL9  =         1.0000000000 /                                                TZERO9  =         0.0000000000 /                                                TTYPE10 = 'PC2_2             ' / rotation matrix                                TUNIT10 = '                  ' /                                                TFORM10 = 'E                 ' /                                                TSCAL10 =         1.0000000000 /                                                TZERO10 =         0.0000000000 /                                                TTYPE11 = 'POLYTERMS         ' / higher order warping terms                     TUNIT11 = '                  ' /                                                TFORM11 = '14E               ' /                                                TSCAL11 =         1.0000000000 /                                                TZERO11 =         0.0000000000 /                                                TTYPE12 = 'CTYPE             ' / coordinate type                                TUNIT12 = '                  ' /                                                TFORM12 = '15A               ' /                                                TSCAL12 =         1.0000000000 /                                                TZERO12 =         0.0000000000 /                                                TTYPE13 = 'NPOLYTERMS        ' / order of polynomial                            TUNIT13 = '                  ' /                                                TFORM13 = 'A                 ' /                                                TSCAL13 =         1.0000000000 /                                                TZERO13 =         0.0000000000 /                                                TTYPE14 = 'TZERO             ' / readout time (row 0)                           TUNIT14 = '                  ' /                                                TFORM14 = 'J                 ' /                                                TSCAL14 =         1.0000000000 /                                                TZERO14 =         0.0000000000 /                                                TTYPE15 = 'NSTAR             ' / number of stars on image                       TUNIT15 = '                  ' /                                                TFORM15 = 'J                 ' /                                                TSCAL15 =         1.0000000000 /                                                TZERO15 =         0.0000000000 /                                                TTYPE16 = 'SECZ              ' / airmass                                        TUNIT16 = 'milliairmass      ' /                                                TFORM16 = 'I                 ' /                                                TSCAL16 =         1.0000000000 /                                                TZERO16 =         0.0000000000 /                                                TTYPE17 = 'NX                ' / image width                                    TUNIT17 = '                  ' /                                                TFORM17 = 'I                 ' /                                                TSCAL17 =         1.0000000000 /                                                TZERO17 =         0.0000000000 /                                                TTYPE18 = 'NY                ' / image height                                   TUNIT18 = '                  ' /                                                TFORM18 = 'I                 ' /                                                TSCAL18 =         1.0000000000 /                                                TZERO18 =         0.0000000000 /                                                TTYPE19 = 'APMIFIT           ' / aperture correction                            TUNIT19 = 'millimag          ' /                                                TFORM19 = 'I                 ' /                                                TSCAL19 =         1.0000000000 /                                                TZERO19 =         0.0000000000 /                                                TTYPE20 = 'DAPMIFIT          ' / apmifit error                                  TUNIT20 = 'millimag          ' /                                                TFORM20 = 'I                 ' /                                                TSCAL20 =         1.0000000000 /                                                TZERO20 =         0.0000000000 /                                                TTYPE21 = 'SOURCE            ' / identifier for CCD,                            TUNIT21 = '                  ' /                                                TFORM21 = 'I                 ' /                                                TSCAL21 =         1.0000000000 /                                                TZERO21 =         0.0000000000 /                                                TTYPE22 = 'MCAL              ' / calibration mag                                TUNIT22 = 'millimag          ' /                                                TFORM22 = 'I                 ' /                                                TSCAL22 =         1.0000000000 /                                                TZERO22 =         0.0000000000 /                                                TTYPE23 = 'DMCAL             ' / error on Mcal                                  TUNIT23 = 'millimag          ' /                                                TFORM23 = 'I                 ' /                                                TSCAL23 =         1.0000000000 /                                                TZERO23 =         0.0000000000 /                                                TTYPE24 = 'XM                ' / image chisq                                    TUNIT24 = '10*log(value)     ' /                                                TFORM24 = 'I                 ' /                                                TSCAL24 =         1.0000000000 /                                                TZERO24 =         0.0000000000 /                                                TTYPE25 = 'NAME              ' / name of original image                         TUNIT25 = '                  ' /                                                TFORM25 = '32A               ' /                                                TSCAL25 =         1.0000000000 /                                                TZERO25 =         0.0000000000 /                                                TTYPE26 = 'DETECTION_LIMIT   ' / detection limit                                TUNIT26 = '10*mag            ' /                                                TFORM26 = 'B                 ' /                                                TSCAL26 =         1.0000000000 /                                                TZERO26 =         0.0000000000 /                                                TTYPE27 = 'SATURATION_LIMIT  ' / saturation limit                               TUNIT27 = '10*mag            ' /                                                TFORM27 = 'B                 ' /                                                TSCAL27 =         1.0000000000 /                                                TZERO27 =         0.0000000000 /                                                TTYPE28 = 'CERROR            ' / astrometric error                              TUNIT28 = '50*arcsec         ' /                                                TFORM28 = 'B                 ' /                                                TSCAL28 =         1.0000000000 /                                                TZERO28 =         0.0000000000 /                                                TTYPE29 = 'FWHM_X            ' / PSF x width                                    TUNIT29 = '25*arcsec         ' /                                                TFORM29 = 'B                 ' /                                                TSCAL29 =         1.0000000000 /                                                TZERO29 =         0.0000000000 /                                                TTYPE30 = 'FWHM_Y            ' / PSF y width                                    TUNIT30 = '25*arcsec         ' /                                                TFORM30 = 'B                 ' /                                                TSCAL30 =         1.0000000000 /                                                TZERO30 =         0.0000000000 /                                                TTYPE31 = 'TRATE             ' / scan rate                                      TUNIT31 = '100 usec/pixel    ' /                                                TFORM31 = 'B                 ' /                                                TSCAL31 =         1.0000000000 /                                                TZERO31 =         0.0000000000 /                                                TTYPE32 = 'EXPTIME           ' / exposure time                                  TUNIT32 = 'seconds           ' /                                                TFORM32 = 'E                 ' /                                                TSCAL32 =         1.0000000000 /                                                TZERO32 =         0.0000000000 /                                                TTYPE33 = 'CODE              ' / image quality flag                             TUNIT33 = '                  ' /                                                TFORM33 = 'A                 ' /                                                TSCAL33 =         1.0000000000 /                                                TZERO33 =         0.0000000000 /                                                TTYPE34 = 'CCDNUM            ' / CCD ID number                                  TUNIT34 = '                  ' /                                                TFORM34 = 'B                 ' /                                                TSCAL34 =         1.0000000000 /                                                TZERO34 =         0.0000000000 /                                                TTYPE35 = 'DUMMY             ' / unused                                         TUNIT35 = '                  ' /                                                TFORM35 = '20A               ' /                                                TSCAL35 =         1.0000000000 /                                                TZERO35 =         0.0000000000 /                                                TTYPE36 = 'ORDER             ' / Mrel 2D polynomical order                      TUNIT36 = '                  ' /                                                TFORM36 = 'I                 ' /                                                TSCAL36 =         1.0000000000 /                                                TZERO36 =         0.0000000000 /                                                TTYPE37 = 'MX                ' / Mrel polyterm                                  TUNIT37 = '                  ' /                                                TFORM37 = 'I                 ' /                                                TSCAL37 =         1.0000000000 /                                                TZERO37 =         0.0000000000 /                                                TTYPE38 = 'MY                ' / Mrel polyterm                                  TUNIT38 = '                  ' /                                                TFORM38 = 'I                 ' /                                                TSCAL38 =         1.0000000000 /                                                TZERO38 =         0.0000000000 /                                                TTYPE39 = 'MXX               ' / Mrel polyterm                                  TUNIT39 = '                  ' /                                                TFORM39 = 'I                 ' /                                                TSCAL39 =         1.0000000000 /                                                TZERO39 =         0.0000000000 /                                                TTYPE40 = 'MXY               ' / Mrel polyterm                                  TUNIT40 = '                  ' /                                                TFORM40 = 'I                 ' /                                                TSCAL40 =         1.0000000000 /                                                TZERO40 =         0.0000000000 /                                                TTYPE41 = 'MYY               ' / Mrel polyterm                                  TUNIT41 = '                  ' /                                                TFORM41 = 'I                 ' /                                                TSCAL41 =         1.0000000000 /                                                TZERO41 =         0.0000000000 /                                                TTYPE42 = 'MXXX              ' / Mrel polyterm                                  TUNIT42 = '                  ' /                                                TFORM42 = 'I                 ' /                                                TSCAL42 =         1.0000000000 /                                                TZERO42 =         0.0000000000 /                                                TTYPE43 = 'MXXY              ' / Mrel polyterm                                  TUNIT43 = '                  ' /                                                TFORM43 = 'I                 ' /                                                TSCAL43 =         1.0000000000 /                                                TZERO43 =         0.0000000000 /                                                TTYPE44 = 'MXYY              ' / Mrel polyterm                                  TUNIT44 = '                  ' /                                                TFORM44 = 'I                 ' /                                                TSCAL44 =         1.0000000000 /                                                TZERO44 =         0.0000000000 /                                                TTYPE45 = 'MYYY              ' / Mrel polyterm                                  TUNIT45 = '                  ' /                                                TFORM45 = 'I                 ' /                                                TSCAL45 =         1.0000000000 /                                                TZERO45 =         0.0000000000 /                                                TTYPE46 = 'MXXXX             ' / Mrel polyterm                                  TUNIT46 = '                  ' /                                                TFORM46 = 'I                 ' /                                                TSCAL46 =         1.0000000000 /                                                TZERO46 =         0.0000000000 /                                                TTYPE47 = 'MXXXY             ' / Mrel polyterm                                  TUNIT47 = '                  ' /                                                TFORM47 = 'I                 ' /                                                TSCAL47 =         1.0000000000 /                                                TZERO47 =         0.0000000000 /                                                TTYPE48 = 'MXXYY             ' / Mrel polyterm                                  TUNIT48 = '                  ' /                                                TFORM48 = 'I                 ' /                                                TSCAL48 =         1.0000000000 /                                                TZERO48 =         0.0000000000 /                                                TTYPE49 = 'MXYYY             ' / Mrel polyterm                                  TUNIT49 = '                  ' /                                                TFORM49 = 'I                 ' /                                                TSCAL49 =         1.0000000000 /                                                TZERO49 =         0.0000000000 /                                                TTYPE50 = 'MYYYY             ' / Mrel polyterm                                  TUNIT50 = '                  ' /                                                TFORM50 = 'I                 ' /                                                TSCAL50 =         1.0000000000 /                                                TZERO50 =         0.0000000000 /                                                END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
     1SIMPLE  =                    T /                                                BITPIX  =                    8 /                                                NAXIS   =                    0 /                                                PCOUNT  =                    0 /                                                GCOUNT  =                    1 /                                                BSCALE  =         1.0000000000 /                                                BZERO   =         0.0000000000 /                                                EXTEND  =                    T /                                                NIMAGES =                    0 /                                                ZERO_PT =        25.0000000000 /                                                FORMAT  = 'ELIXIR            ' /                                                DVO_DBID= 'c2fa2cdbac0df952ae954ed04381e219' /                                  END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             XTENSION= 'BINTABLE          ' /                                                BITPIX  =                    8 /                                                NAXIS   =                    2 /                                                NAXIS1  =                  240 /                                                NAXIS2  =                    0 /                                                PCOUNT  =                    0 /                                                GCOUNT  =                    1 /                                                TFIELDS =                   50 /                                                EXTNAME = 'DVO_IMAGE_ELIXIR  ' /                                                TTYPE1  = 'CRVAL1            ' / coordinate at reference pixel                  TUNIT1  = '                  ' /                                                TFORM1  = 'D                 ' /                                                TSCAL1  =         1.0000000000 /                                                TZERO1  =         0.0000000000 /                                                TTYPE2  = 'CRVAL2            ' / coordinate at reference pixel                  TUNIT2  = '                  ' /                                                TFORM2  = 'D                 ' /                                                TSCAL2  =         1.0000000000 /                                                TZERO2  =         0.0000000000 /                                                TTYPE3  = 'CRPIX1            ' / coordinate of reference pixel                  TUNIT3  = '                  ' /                                                TFORM3  = 'E                 ' /                                                TSCAL3  =         1.0000000000 /                                                TZERO3  =         0.0000000000 /                                                TTYPE4  = 'CRPIX2            ' / coordinate of reference pixel                  TUNIT4  = '                  ' /                                                TFORM4  = 'E                 ' /                                                TSCAL4  =         1.0000000000 /                                                TZERO4  =         0.0000000000 /                                                TTYPE5  = 'CDELT1            ' / degrees per pixel                              TUNIT5  = '                  ' /                                                TFORM5  = 'E                 ' /                                                TSCAL5  =         1.0000000000 /                                                TZERO5  =         0.0000000000 /                                                TTYPE6  = 'CDELT2            ' / degrees per pixel                              TUNIT6  = '                  ' /                                                TFORM6  = 'E                 ' /                                                TSCAL6  =         1.0000000000 /                                                TZERO6  =         0.0000000000 /                                                TTYPE7  = 'PC1_1             ' / rotation matrix                                TUNIT7  = '                  ' /                                                TFORM7  = 'E                 ' /                                                TSCAL7  =         1.0000000000 /                                                TZERO7  =         0.0000000000 /                                                TTYPE8  = 'PC1_2             ' / rotation matrix                                TUNIT8  = '                  ' /                                                TFORM8  = 'E                 ' /                                                TSCAL8  =         1.0000000000 /                                                TZERO8  =         0.0000000000 /                                                TTYPE9  = 'PC2_1             ' / rotation matrix                                TUNIT9  = '                  ' /                                                TFORM9  = 'E                 ' /                                                TSCAL9  =         1.0000000000 /                                                TZERO9  =         0.0000000000 /                                                TTYPE10 = 'PC2_2             ' / rotation matrix                                TUNIT10 = '                  ' /                                                TFORM10 = 'E                 ' /                                                TSCAL10 =         1.0000000000 /                                                TZERO10 =         0.0000000000 /                                                TTYPE11 = 'POLYTERMS         ' / higher order warping terms                     TUNIT11 = '                  ' /                                                TFORM11 = '14E               ' /                                                TSCAL11 =         1.0000000000 /                                                TZERO11 =         0.0000000000 /                                                TTYPE12 = 'CTYPE             ' / coordinate type                                TUNIT12 = '                  ' /                                                TFORM12 = '15A               ' /                                                TSCAL12 =         1.0000000000 /                                                TZERO12 =         0.0000000000 /                                                TTYPE13 = 'NPOLYTERMS        ' / order of polynomial                            TUNIT13 = '                  ' /                                                TFORM13 = 'A                 ' /                                                TSCAL13 =         1.0000000000 /                                                TZERO13 =         0.0000000000 /                                                TTYPE14 = 'TZERO             ' / readout time (row 0)                           TUNIT14 = '                  ' /                                                TFORM14 = 'J                 ' /                                                TSCAL14 =         1.0000000000 /                                                TZERO14 =         0.0000000000 /                                                TTYPE15 = 'NSTAR             ' / number of stars on image                       TUNIT15 = '                  ' /                                                TFORM15 = 'J                 ' /                                                TSCAL15 =         1.0000000000 /                                                TZERO15 =         0.0000000000 /                                                TTYPE16 = 'SECZ              ' / airmass                                        TUNIT16 = 'milliairmass      ' /                                                TFORM16 = 'I                 ' /                                                TSCAL16 =         1.0000000000 /                                                TZERO16 =         0.0000000000 /                                                TTYPE17 = 'NX                ' / image width                                    TUNIT17 = '                  ' /                                                TFORM17 = 'I                 ' /                                                TSCAL17 =         1.0000000000 /                                                TZERO17 =         0.0000000000 /                                                TTYPE18 = 'NY                ' / image height                                   TUNIT18 = '                  ' /                                                TFORM18 = 'I                 ' /                                                TSCAL18 =         1.0000000000 /                                                TZERO18 =         0.0000000000 /                                                TTYPE19 = 'APMIFIT           ' / aperture correction                            TUNIT19 = 'millimag          ' /                                                TFORM19 = 'I                 ' /                                                TSCAL19 =         1.0000000000 /                                                TZERO19 =         0.0000000000 /                                                TTYPE20 = 'DAPMIFIT          ' / apmifit error                                  TUNIT20 = 'millimag          ' /                                                TFORM20 = 'I                 ' /                                                TSCAL20 =         1.0000000000 /                                                TZERO20 =         0.0000000000 /                                                TTYPE21 = 'SOURCE            ' / identifier for CCD,                            TUNIT21 = '                  ' /                                                TFORM21 = 'I                 ' /                                                TSCAL21 =         1.0000000000 /                                                TZERO21 =         0.0000000000 /                                                TTYPE22 = 'MCAL              ' / calibration mag                                TUNIT22 = 'millimag          ' /                                                TFORM22 = 'I                 ' /                                                TSCAL22 =         1.0000000000 /                                                TZERO22 =         0.0000000000 /                                                TTYPE23 = 'DMCAL             ' / error on Mcal                                  TUNIT23 = 'millimag          ' /                                                TFORM23 = 'I                 ' /                                                TSCAL23 =         1.0000000000 /                                                TZERO23 =         0.0000000000 /                                                TTYPE24 = 'XM                ' / image chisq                                    TUNIT24 = '10*log(value)     ' /                                                TFORM24 = 'I                 ' /                                                TSCAL24 =         1.0000000000 /                                                TZERO24 =         0.0000000000 /                                                TTYPE25 = 'NAME              ' / name of original image                         TUNIT25 = '                  ' /                                                TFORM25 = '32A               ' /                                                TSCAL25 =         1.0000000000 /                                                TZERO25 =         0.0000000000 /                                                TTYPE26 = 'DETECTION_LIMIT   ' / detection limit                                TUNIT26 = '10*mag            ' /                                                TFORM26 = 'B                 ' /                                                TSCAL26 =         1.0000000000 /                                                TZERO26 =         0.0000000000 /                                                TTYPE27 = 'SATURATION_LIMIT  ' / saturation limit                               TUNIT27 = '10*mag            ' /                                                TFORM27 = 'B                 ' /                                                TSCAL27 =         1.0000000000 /                                                TZERO27 =         0.0000000000 /                                                TTYPE28 = 'CERROR            ' / astrometric error                              TUNIT28 = '50*arcsec         ' /                                                TFORM28 = 'B                 ' /                                                TSCAL28 =         1.0000000000 /                                                TZERO28 =         0.0000000000 /                                                TTYPE29 = 'FWHM_X            ' / PSF x width                                    TUNIT29 = '25*arcsec         ' /                                                TFORM29 = 'B                 ' /                                                TSCAL29 =         1.0000000000 /                                                TZERO29 =         0.0000000000 /                                                TTYPE30 = 'FWHM_Y            ' / PSF y width                                    TUNIT30 = '25*arcsec         ' /                                                TFORM30 = 'B                 ' /                                                TSCAL30 =         1.0000000000 /                                                TZERO30 =         0.0000000000 /                                                TTYPE31 = 'TRATE             ' / scan rate                                      TUNIT31 = '100 usec/pixel    ' /                                                TFORM31 = 'B                 ' /                                                TSCAL31 =         1.0000000000 /                                                TZERO31 =         0.0000000000 /                                                TTYPE32 = 'EXPTIME           ' / exposure time                                  TUNIT32 = 'seconds           ' /                                                TFORM32 = 'E                 ' /                                                TSCAL32 =         1.0000000000 /                                                TZERO32 =         0.0000000000 /                                                TTYPE33 = 'CODE              ' / image quality flag                             TUNIT33 = '                  ' /                                                TFORM33 = 'A                 ' /                                                TSCAL33 =         1.0000000000 /                                                TZERO33 =         0.0000000000 /                                                TTYPE34 = 'CCDNUM            ' / CCD ID number                                  TUNIT34 = '                  ' /                                                TFORM34 = 'B                 ' /                                                TSCAL34 =         1.0000000000 /                                                TZERO34 =         0.0000000000 /                                                TTYPE35 = 'DUMMY             ' / unused                                         TUNIT35 = '                  ' /                                                TFORM35 = '20A               ' /                                                TSCAL35 =         1.0000000000 /                                                TZERO35 =         0.0000000000 /                                                TTYPE36 = 'ORDER             ' / Mrel 2D polynomical order                      TUNIT36 = '                  ' /                                                TFORM36 = 'I                 ' /                                                TSCAL36 =         1.0000000000 /                                                TZERO36 =         0.0000000000 /                                                TTYPE37 = 'MX                ' / Mrel polyterm                                  TUNIT37 = '                  ' /                                                TFORM37 = 'I                 ' /                                                TSCAL37 =         1.0000000000 /                                                TZERO37 =         0.0000000000 /                                                TTYPE38 = 'MY                ' / Mrel polyterm                                  TUNIT38 = '                  ' /                                                TFORM38 = 'I                 ' /                                                TSCAL38 =         1.0000000000 /                                                TZERO38 =         0.0000000000 /                                                TTYPE39 = 'MXX               ' / Mrel polyterm                                  TUNIT39 = '                  ' /                                                TFORM39 = 'I                 ' /                                                TSCAL39 =         1.0000000000 /                                                TZERO39 =         0.0000000000 /                                                TTYPE40 = 'MXY               ' / Mrel polyterm                                  TUNIT40 = '                  ' /                                                TFORM40 = 'I                 ' /                                                TSCAL40 =         1.0000000000 /                                                TZERO40 =         0.0000000000 /                                                TTYPE41 = 'MYY               ' / Mrel polyterm                                  TUNIT41 = '                  ' /                                                TFORM41 = 'I                 ' /                                                TSCAL41 =         1.0000000000 /                                                TZERO41 =         0.0000000000 /                                                TTYPE42 = 'MXXX              ' / Mrel polyterm                                  TUNIT42 = '                  ' /                                                TFORM42 = 'I                 ' /                                                TSCAL42 =         1.0000000000 /                                                TZERO42 =         0.0000000000 /                                                TTYPE43 = 'MXXY              ' / Mrel polyterm                                  TUNIT43 = '                  ' /                                                TFORM43 = 'I                 ' /                                                TSCAL43 =         1.0000000000 /                                                TZERO43 =         0.0000000000 /                                                TTYPE44 = 'MXYY              ' / Mrel polyterm                                  TUNIT44 = '                  ' /                                                TFORM44 = 'I                 ' /                                                TSCAL44 =         1.0000000000 /                                                TZERO44 =         0.0000000000 /                                                TTYPE45 = 'MYYY              ' / Mrel polyterm                                  TUNIT45 = '                  ' /                                                TFORM45 = 'I                 ' /                                                TSCAL45 =         1.0000000000 /                                                TZERO45 =         0.0000000000 /                                                TTYPE46 = 'MXXXX             ' / Mrel polyterm                                  TUNIT46 = '                  ' /                                                TFORM46 = 'I                 ' /                                                TSCAL46 =         1.0000000000 /                                                TZERO46 =         0.0000000000 /                                                TTYPE47 = 'MXXXY             ' / Mrel polyterm                                  TUNIT47 = '                  ' /                                                TFORM47 = 'I                 ' /                                                TSCAL47 =         1.0000000000 /                                                TZERO47 =         0.0000000000 /                                                TTYPE48 = 'MXXYY             ' / Mrel polyterm                                  TUNIT48 = '                  ' /                                                TFORM48 = 'I                 ' /                                                TSCAL48 =         1.0000000000 /                                                TZERO48 =         0.0000000000 /                                                TTYPE49 = 'MXYYY             ' / Mrel polyterm                                  TUNIT49 = '                  ' /                                                TFORM49 = 'I                 ' /                                                TSCAL49 =         1.0000000000 /                                                TZERO49 =         0.0000000000 /                                                TTYPE50 = 'MYYYY             ' / Mrel polyterm                                  TUNIT50 = '                  ' /                                                TFORM50 = 'I                 ' /                                                TSCAL50 =         1.0000000000 /                                                TZERO50 =         0.0000000000 /                                                END                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             
  • trunk/Ohana/src/libautocode/Makefile.Targets

    r34260 r34405  
    7070$(ASRC)/cmf-ps1-v2.$(ARCH).o \
    7171$(ASRC)/cmf-ps1-v3.$(ARCH).o \
     72$(ASRC)/cmf-ps1-v4.$(ARCH).o \
    7273$(ASRC)/cmf-ps1-sv1.$(ARCH).o \
     74$(ASRC)/cmf-ps1-sv2.$(ARCH).o \
    7375$(ASRC)/cmf-smpdata.$(ARCH).o \
    7476$(ASRC)/getstar-ps1-dev-0.$(ARCH).o \
     
    154156$(AINC)/cmf-ps1-v2.h \
    155157$(AINC)/cmf-ps1-v3.h \
     158$(AINC)/cmf-ps1-v4.h \
    156159$(AINC)/cmf-ps1-sv1.h \
     160$(AINC)/cmf-ps1-sv2.h \
    157161$(AINC)/cmf-smpdata.h \
    158162$(AINC)/getstar-ps1-dev-0.h \
  • trunk/Ohana/src/libautocode/def/Stars.d

    r21508 r34405  
     1*** note that this file / structure has been deprecated
     2
     3
    14STRUCT  Stars
    25EXTNAME STARS
  • trunk/Ohana/src/libautocode/def/average-ps1-v4.d

    r34260 r34405  
    22EXTNAME      DVO_AVERAGE_PS1_V4
    33TYPE         BINTABLE
    4 SIZE         120
     4SIZE         128
    55DESCRIPTION  DVO Average Object Table
    66
     
    2525FIELD Trange,         TIME_RANGE,  int,             mean epoch (PM,PAR ref),       unix time seconds
    2626
    27 FIELD Xp,             SIGMA_POS,   float,           position scatter,             1/100 arcsec
     27FIELD psfQF,          PSF_QF,      float,           psf coverage (bad masks)
     28FIELD psfQFperf,      PSF_QF_PERF, float,           psf coverage (all masks)
     29
     30FIELD stargal,        STARGAL_SEP, float,           star / galaxy separator,       1/100 arcsec
    2831FIELD Npos,           NUMBER_POS,  unsigned short,  number of detections used for astrometry
    2932
  • trunk/Ohana/src/libautocode/def/average.d

    r33647 r34405  
    22EXTNAME      DVO_AVERAGE
    33TYPE         BINTABLE
    4 SIZE         120
     4SIZE         128
    55DESCRIPTION  DVO Average Object Table
    66
     
    2525FIELD Trange,         TIME_RANGE,  int,             mean epoch (PM,PAR ref),       unix time seconds
    2626
    27 FIELD Xp,             SIGMA_POS,   float,           position scatter,             1/100 arcsec
     27FIELD psfQF,          PSF_QF,      float,           psf coverage (bad masks)
     28FIELD psfQFperf,      PSF_QF_PERF, float,           psf coverage (all masks)
     29
     30FIELD stargal,        STARGAL_SEP, float,           star / galaxy separator,       1/100 arcsec
    2831FIELD Npos,           NUMBER_POS,  unsigned short,  number of detections used for astrometry
    2932
  • trunk/Ohana/src/libautocode/def/cmf-ps1-dev-0.d

    r21508 r34405  
    2020FIELD fy,       PSF_WIDTH_Y,      float,    semi-minor,           pixels
    2121FIELD df,       PSF_THETA,        float,    ellipse angle,        degrees
    22 FIELD psfQual,  PSF_QF,           float,    quality factor
     22FIELD psfQF,    PSF_QF,           float,    quality factor
    2323FIELD nFrames,  N_FRAMES,         short,    images overlapping peak
    2424FIELD dummy,    DUMMY,            short,    padding
  • trunk/Ohana/src/libautocode/def/cmf-ps1-dev-1.d

    r21508 r34405  
    2222FIELD fy,        PSF_WIDTH_Y,      float,    semi-minor,           pixels
    2323FIELD df,        PSF_THETA,        float,    ellipse angle,        degrees
    24 FIELD psfQual,   PSF_QF,           float,    quality factor
     24FIELD psfQF,     PSF_QF,           float,    quality factor
    2525FIELD nFrames,   N_FRAMES,         short,    images overlapping peak
    2626FIELD flags,     FLAGS,            short,    padding
  • trunk/Ohana/src/libautocode/def/cmf-ps1-sv1.d

    r34260 r34405  
    5151
    5252FIELD df,             PSF_THETA,         float,    ellipse angle,         degrees
    53 FIELD psfQual,        PSF_QF,            float,    quality factor
    54 FIELD psfQualPerfect, PSF_QF_PERFECT,    float,    quality factor perfect
     53FIELD psfQF,          PSF_QF,            float,    quality factor
     54FIELD psfQFperf,      PSF_QF_PERFECT,    float,    quality factor perfect
    5555FIELD psfNdof,        PSF_NDOF,          int,      psf degrees of freedom
    5656
     
    112112# FIELD fy,             PSF_MINOR,         PSF_MINOR          1E      float,    psf fit minor axis,    pixels
    113113# FIELD df,             PSF_THETA,         PSF_THETA          1E      float,    ellipse angle,         degrees
    114 # FIELD psfQual,        PSF_QF,            PSF_QF             1E      float,    quality factor
    115 # FIELD psfQualPerfect, PSF_QF_PERFECT,    PSF_QF_PERFECT     1E      float,    quality factor perfect
     114# FIELD psfQF,          PSF_QF,            PSF_QF             1E      float,    quality factor
     115# FIELD psfQFperf,      PSF_QF_PERFECT,    PSF_QF_PERFECT     1E      float,    quality factor perfect
    116116# FIELD psfNdof,        PSF_NDOF,          PSF_NDOF           1J      int,      psf degrees of freedom
    117117# FIELD psfNpix,        PSF_NPIX,          PSF_NPIX           1J      int,      psf number of pixels
  • trunk/Ohana/src/libautocode/def/cmf-ps1-v1.d

    r34260 r34405  
    3030FIELD fy,        PSF_MINOR,        float,    psf fit minor axis,    pixels
    3131FIELD df,        PSF_THETA,        float,    ellipse angle,         degrees
    32 FIELD psfQual,   PSF_QF,           float,    quality factor
     32FIELD psfQF,     PSF_QF,           float,    quality factor
    3333FIELD psfNdof,   PSF_NDOF,         int,      psf degrees of freedom
    3434FIELD psfNpix,   PSF_NPIX,         int,      psf number of pixels
  • trunk/Ohana/src/libautocode/def/cmf-ps1-v2.d

    r34260 r34405  
    3030FIELD fy,        PSF_MINOR,        float,    psf fit minor axis,    pixels
    3131FIELD df,        PSF_THETA,        float,    ellipse angle,         degrees
    32 FIELD psfQual,   PSF_QF,           float,    quality factor
     32FIELD psfQF,     PSF_QF,           float,    quality factor
    3333FIELD psfNdof,   PSF_NDOF,         int,      psf degrees of freedom
    3434FIELD psfNpix,   PSF_NPIX,         int,      psf number of pixels
  • trunk/Ohana/src/libautocode/def/cmf-ps1-v3.d

    r34260 r34405  
    3636FIELD fy,             PSF_MINOR,         float,    psf fit minor axis,    pixels
    3737FIELD df,             PSF_THETA,         float,    ellipse angle,         degrees
    38 FIELD psfQual,        PSF_QF,            float,    quality factor
    39 FIELD psfQualPerfect, PSF_QF_PERFECT,    float,    quality factor perfect
     38FIELD psfQF,          PSF_QF,            float,    quality factor
     39FIELD psfQFperf,      PSF_QF_PERFECT,    float,    quality factor perfect
    4040FIELD psfNdof,        PSF_NDOF,          int,      psf degrees of freedom
    4141FIELD psfNpix,        PSF_NPIX,          int,      psf number of pixels
     
    6868# FIELD dFlux,          PSF_INST_FLUX_SIG, float,    psf flux error,        counts     
    6969# FIELD MapRaw,         AP_MAG_RAW,        float,    raw aperture mag,      mags
    70 # FIELD psfQualPerfect, PSF_QF_PERFECT,    float,    quality factor perfect
     70# FIELD psfQFperf,      PSF_QF_PERFECT,    float,    quality factor perfect
    7171# FIELD M3c,            MOMENTS_M3C,       float,    third moment cos(t),   pixels^3
    7272# FIELD M3s,            MOMENTS_M3S,       float,    third moment sin(t),   pixels^3
  • trunk/Ohana/src/libautocode/def/measure-panstarrs-dev-0.d

    r21508 r34405  
    4646
    4747# do we need more resolution than a short? should this be a log?
    48 FIELD psfQual,        PSF_QF,       short,          psf coverage/quality factor
     48FIELD psfQF,          PSF_QF,       short,          psf coverage/quality factor
    4949
    5050FIELD dophot,         DOPHOT,       char,           dophot type
  • trunk/Ohana/src/libautocode/def/measure-panstarrs-dev-1.d

    r21508 r34405  
    4646
    4747# do we need more resolution than a short? should this be a log?
    48 FIELD psfQual,        PSF_QF,       short,          psf coverage/quality factor
     48FIELD psfQF,          PSF_QF,       short,          psf coverage/quality factor
    4949
    5050FIELD dophot,         DOPHOT,       char,           dophot type
  • trunk/Ohana/src/libautocode/def/measure-ps1-dev-1.d

    r21508 r34405  
    3333
    3434# do we need more resolution than a short? should this be a log?
    35 FIELD psfQual,        PSF_QF,       float,          psf coverage/quality factor
     35FIELD psfQF,          PSF_QF,       float,          psf coverage/quality factor
    3636FIELD psfChisq,       PSF_CHISQ,    float,          psf coverage/quality factor
    3737FIELD crNsigma,       CR_NSIGMA,    float,          psf coverage/quality factor
  • trunk/Ohana/src/libautocode/def/measure-ps1-dev-2.d

    r21508 r34405  
    3434
    3535# do we need more resolution than a short? should this be a log?
    36 FIELD psfQual,        PSF_QF,       float,          psf coverage/quality factor
     36FIELD psfQF,          PSF_QF,       float,          psf coverage/quality factor
    3737FIELD psfChisq,       PSF_CHISQ,    float,          psf fit chisq
    3838FIELD crNsigma,       CR_NSIGMA,    float,          Nsigma deviation towards CR
  • trunk/Ohana/src/libautocode/def/measure-ps1-v1.d

    r21508 r34405  
    3939
    4040# do we need more resolution than a short? should this be a log?
    41 FIELD psfQual,        PSF_QF,       float,          psf coverage/quality factor
     41FIELD psfQF,          PSF_QF,       float,          psf coverage/quality factor
    4242FIELD psfChisq,       PSF_CHISQ,    float,          psf fit chisq
    4343FIELD psfNdof,        PSF_NDOF,     int,            psf degrees of freedom
  • trunk/Ohana/src/libautocode/def/measure-ps1-v2.d

    r30604 r34405  
    3939
    4040# do we need more resolution than a short? should this be a log?
    41 FIELD psfQual,        PSF_QF,       float,          psf coverage/quality factor
     41FIELD psfQF,          PSF_QF,       float,          psf coverage/quality factor
    4242FIELD psfChisq,       PSF_CHISQ,    float,          psf fit chisq
    4343FIELD psfNdof,        PSF_NDOF,     int,            psf degrees of freedom
  • trunk/Ohana/src/libautocode/def/measure-ps1-v3.d

    r34260 r34405  
    3939
    4040# do we need more resolution than a short? should this be a log?
    41 FIELD psfQual,        PSF_QF,       float,          psf coverage/quality factor
     41FIELD psfQF,          PSF_QF,       float,          psf coverage/quality factor
    4242FIELD psfChisq,       PSF_CHISQ,    float,          psf fit chisq
    4343FIELD psfNdof,        PSF_NDOF,     int,            psf degrees of freedom
  • trunk/Ohana/src/libautocode/def/measure-ps1-v4.d

    r34260 r34405  
    4747
    4848# do we need more resolution than a short? should this be a log?
    49 FIELD psfQual,        PSF_QF,       float,          psf coverage/quality factor
    50 FIELD psfChisq,       PSF_CHISQ,    float,          psf fit chisq
    51 FIELD psfNdof,        PSF_NDOF,     int,            psf degrees of freedom
    52 FIELD psfNpix,        PSF_NPIX,     int,            psf number of pixels
    53 FIELD crNsigma,       CR_NSIGMA,    float,          Nsigma deviation towards CR
    54 FIELD extNsigma,      EXT_NSIGMA,   float,          Nsigma deviation towards EXT
     49FIELD psfQF,          PSF_QF,        float,          psf coverage/quality factor
     50FIELD psfQFperf,      PSF_QF_PEFECT, float,          psf coverage / quality factor (all mask bits)
     51FIELD psfChisq,       PSF_CHISQ,     float,          psf fit chisq
     52
     53FIELD psfNdof,        PSF_NDOF,      int,            psf degrees of freedom
     54FIELD psfNpix,        PSF_NPIX,      int,            psf number of pixels
     55FIELD crNsigma,       CR_NSIGMA,     float,          Nsigma deviation towards CR
     56FIELD extNsigma,      EXT_NSIGMA,    float,          Nsigma deviation towards EXT
    5557
    5658# model shape parameters
     
    7375FIELD dRsys,          POS_SYS_ERR,  short,          systematic error from astrom,   1/100 of pixels
    7476
    75 FIELD pad,            PAD,          char[4],        padding
    76 
    7777# local astrometry scales
    7878FIELD posangle,       POSANGLE,     short,          position angle sky to chip,     (0xffff/360) deg
  • trunk/Ohana/src/libautocode/def/measure.d

    r34260 r34405  
    22EXTNAME      DVO_MEASURE
    33TYPE         BINTABLE
    4 SIZE         172
     4SIZE         176
    55DESCRIPTION  DVO Detection Measurement Table
    66
     
    4747
    4848# do we need more resolution than a short? should this be a log?
    49 FIELD psfQual,        PSF_QF,       float,          psf coverage/quality factor
    50 FIELD psfChisq,       PSF_CHISQ,    float,          psf fit chisq
    51 FIELD psfNdof,        PSF_NDOF,     int,            psf degrees of freedom
    52 FIELD psfNpix,        PSF_NPIX,     int,            psf number of pixels
    53 FIELD crNsigma,       CR_NSIGMA,    float,          Nsigma deviation towards CR
    54 FIELD extNsigma,      EXT_NSIGMA,   float,          Nsigma deviation towards EXT
     49FIELD psfQF,          PSF_QF,        float,          psf coverage/quality factor
     50FIELD psfQFperf,      PSF_QF_PEFECT, float,          psf coverage / quality factor (all mask bits)
     51FIELD psfChisq,       PSF_CHISQ,     float,          psf fit chisq
     52
     53FIELD psfNdof,        PSF_NDOF,      int,            psf degrees of freedom
     54FIELD psfNpix,        PSF_NPIX,      int,            psf number of pixels
     55FIELD crNsigma,       CR_NSIGMA,     float,          Nsigma deviation towards CR
     56FIELD extNsigma,      EXT_NSIGMA,    float,          Nsigma deviation towards EXT
    5557
    5658# model shape parameters
  • trunk/Ohana/src/libdvo/include/dvo.h

    r34291 r34405  
    623623int dvo_image_save_raw (FITS_DB *db, int VERBOSE);
    624624int dvo_image_addrows (FITS_DB *db, Image *new, off_t Nnew);
     625int dvo_image_createID (Header *header);
    625626void dvo_image_create (FITS_DB *db, double ZeroPoint);
    626627
  • trunk/Ohana/src/libdvo/src/dbExtractAverages.c

    r34260 r34405  
    147147    case AVE_TRANGE:
    148148      value.Flt = TimeValue (average[0].Trange, 0, TimeFormat);
    149       break;
    150 
    151     case AVE_Xp:
    152       value.Flt = 0.01*average[0].Xp;
    153149      break;
    154150
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r34260 r34405  
    303303    case MEAS_SECFILT_FLAGS: /* OK */
    304304      equiv = GetPhotcodeEquivbyCode (measure[0].photcode);
     305      if (!equiv) break;
    305306      Nsec = GetPhotcodeNsec (equiv->code);
    306307      if (Nsec == -1) break;
     
    479480      break;
    480481    case MEAS_PSF_QF: /* OK */
    481       value.Flt = measure[0].psfQual;
     482      value.Flt = measure[0].psfQF;
    482483      break;
    483484    case MEAS_PSF_QF_PERFECT: /* OK */
  • trunk/Ohana/src/libdvo/src/dbFields.c

    r34260 r34405  
    335335  if (!strcasecmp (fieldName, "EXTID_LO"))  ESCAPE (AVE_EXTID_LO,  MAG_NONE, OPIHI_INT);
    336336
    337   // if (!strcasecmp (fieldName, "Xp"))      ESCAPE (AVE_Xp,        MAG_NONE, OPIHI_FLT);
    338   // if (!strcasecmp (fieldName, "TYPE"))    ESCAPE (AVE_TYPE,      MAG_NONE, OPIHI_INT);
    339   // for words that don't parse, try a photcode
    340 
    341337  // check for code:mode in photcode name
    342338  code = ParsePhotcodeField (fieldName, &mode, MAG_AVE);
  • trunk/Ohana/src/libdvo/src/dvo_catalog.c

    r34260 r34405  
    8989  average->Trange          = 0;
    9090
    91   average->Xp              = 0;
     91  average->stargal         = 0.0;
    9292  average->Npos            = 0;
    9393
     
    174174 measure->extID     = 0;
    175175
    176  measure->psfQual   = NAN;
     176 measure->psfQ   = NAN;
    177177 measure->psfChisq  = NAN;
    178178 measure->psfNdof   = 0;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c

    r34260 r34405  
    2727    out[i].detID      = in[i].detID;
    2828    out[i].imageID    = in[i].imageID;
    29     out[i].psfQual    = in[i].psfQual;
     29    out[i].psfQF      = in[i].psfQF;
    3030    out[i].psfChisq   = in[i].psfChisq;
    3131    out[i].crNsigma   = in[i].crNsigma;
     
    6565    out[i].FluxKron   = NAN;
    6666    out[i].dFluxKron  = NAN;
     67    out[i].psfQFperf  = NAN;
    6768  }
    6869  return (out);
     
    9394    out[i].detID      = in[i].detID;
    9495    out[i].imageID    = in[i].imageID;
    95     out[i].psfQual    = in[i].psfQual;
     96    out[i].psfQF      = in[i].psfQF;
    9697    out[i].psfChisq   = in[i].psfChisq;
    9798    out[i].crNsigma   = in[i].crNsigma;
     
    126127    out[i].R             = in[i].R;     
    127128    out[i].D             = in[i].D;     
    128     out[i].Xp            = in[i].Xp;     
    129129    out[i].dR            = in[i].dR;
    130130    out[i].dD            = in[i].dD;
     
    159159    out[i].photFlagsUpper = 0;
    160160    out[i].photFlagsLower = 0;
     161
     162    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     163    out[i].psfQF         = NAN;
     164    out[i].psfQFperf     = NAN;
     165    out[i].stargal       = NAN;
    161166  }
    162167  return (out);
     
    174179    out[i].R             = in[i].R;     
    175180    out[i].D             = in[i].D;     
    176     out[i].Xp            = in[i].Xp;     
    177181    out[i].dR            = in[i].dR;
    178182    out[i].dD            = in[i].dD;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c

    r34260 r34405  
    2929    out[i].detID      = in[i].detID;
    3030    out[i].imageID    = in[i].imageID;
    31     out[i].psfQual    = in[i].psfQual;
     31    out[i].psfQF      = in[i].psfQF;
    3232    out[i].psfChisq   = in[i].psfChisq;
    3333    out[i].crNsigma   = in[i].crNsigma;
     
    6262    out[i].FluxKron   = NAN;
    6363    out[i].dFluxKron  = NAN;
    64   }
     64    out[i].psfQFperf  = NAN;
     65 }
    6566  return (out);
    6667}
     
    9293    out[i].detID      = in[i].detID;
    9394    out[i].imageID    = in[i].imageID;
    94     out[i].psfQual    = in[i].psfQual;
     95    out[i].psfQF      = in[i].psfQF;
    9596    out[i].psfChisq   = in[i].psfChisq;
    9697    out[i].crNsigma   = in[i].crNsigma;
     
    130131    out[i].P             = in[i].P;
    131132    out[i].dP            = in[i].dP;
    132     out[i].Xp            = in[i].Xp;     
    133133    out[i].Nmeasure      = in[i].Nmeasure;     
    134134    out[i].Nmissing      = in[i].Nmissing;     
     
    153153    out[i].photFlagsUpper = 0;
    154154    out[i].photFlagsLower = 0;
     155
     156    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     157    out[i].psfQF         = NAN;
     158    out[i].psfQFperf     = NAN;
     159    out[i].stargal       = NAN;
    155160  }
    156161  return (out);
     
    176181    out[i].P             = in[i].P;
    177182    out[i].dP            = in[i].dP;
    178     out[i].Xp            = in[i].Xp;     
    179183    out[i].Nmeasure      = in[i].Nmeasure;     
    180184    out[i].Nmissing      = in[i].Nmissing;     
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c

    r34260 r34405  
    3333    out[i].catID      = in[i].catID;
    3434    out[i].extID      = 0;
    35     out[i].psfQual    = 1.0; // we do not save a value, but some operations (relphot/average) filter on this value..
     35    out[i].psfQ    = 1.0; // we do not save a value, but some operations (relphot/average) filter on this value..
    3636    out[i].psfChisq   = NAN;
    3737    out[i].psfNdof    = 0;
     
    6060    out[i].FluxKron   = NAN;
    6161    out[i].dFluxKron  = NAN;
     62    out[i].psfQFperf  = NAN;
    6263  }
    6364  return (out);
     
    105106    out[i].P             = NAN;
    106107    out[i].dP            = NAN;
    107     out[i].Xp            = NAN_S_SHORT;
    108108    out[i].ChiSqAve      = NAN;
    109109    out[i].ChiSqPM       = NAN;
     
    126126    out[i].photFlagsUpper = 0;
    127127    out[i].photFlagsLower = 0;
     128
     129    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     130    out[i].psfQF         = NAN;
     131    out[i].psfQFperf     = NAN;
     132    out[i].stargal       = NAN;
    128133  }
    129134  return (out);
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c

    r34260 r34405  
    3333    out[i].catID      = in[i].catID;
    3434    out[i].extID      = in[i].extID;
    35     out[i].psfQual    = in[i].psfQual;
     35    out[i].psfQF      = in[i].psfQF;
    3636    out[i].psfChisq   = in[i].psfChisq;
    3737    out[i].psfNdof    = in[i].psfNdof;
     
    6060    out[i].FluxKron   = NAN;
    6161    out[i].dFluxKron  = NAN;
     62    out[i].psfQFperf  = NAN;
    6263  }
    6364  return (out);
     
    9495    out[i].catID      = in[i].catID;
    9596    out[i].extID      = in[i].extID;
    96     out[i].psfQual    = in[i].psfQual;
     97    out[i].psfQF      = in[i].psfQF;
    9798    out[i].psfChisq   = in[i].psfChisq;
    9899    out[i].psfNdof    = in[i].psfNdof;
     
    137138    out[i].P             = in[i].P;
    138139    out[i].dP            = in[i].dP;
    139     out[i].Xp            = in[i].Xp;     
    140140    out[i].ChiSqAve      = in[i].ChiSq;     
    141141    out[i].ChiSqPM       = NAN;
     
    158158    out[i].photFlagsUpper = 0;
    159159    out[i].photFlagsLower = 0;
     160
     161    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     162    out[i].psfQF         = NAN;
     163    out[i].psfQFperf     = NAN;
     164    out[i].stargal       = NAN;
    160165  }
    161166  return (out);
     
    181186    out[i].P             = in[i].P;
    182187    out[i].dP            = in[i].dP;
    183     out[i].Xp            = in[i].Xp;     
    184188    out[i].ChiSq         = in[i].ChiSqAve;     
    185189    out[i].Npos          = in[i].Npos;     
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c

    r34260 r34405  
    3333    out[i].catID      = in[i].catID;
    3434    out[i].extID      = in[i].extID;
    35     out[i].psfQual    = in[i].psfQual;
     35    out[i].psfQF      = in[i].psfQF;
    3636    out[i].psfChisq   = in[i].psfChisq;
    3737    out[i].psfNdof    = in[i].psfNdof;
     
    6161    out[i].FluxKron   = NAN;
    6262    out[i].dFluxKron  = NAN;
     63    out[i].psfQFperf  = NAN;
    6364  }
    6465  return (out);
     
    9596    out[i].catID      = in[i].catID;
    9697    out[i].extID      = in[i].extID;
    97     out[i].psfQual    = in[i].psfQual;
     98    out[i].psfQF      = in[i].psfQF;
    9899    out[i].psfChisq   = in[i].psfChisq;
    99100    out[i].psfNdof    = in[i].psfNdof;
     
    138139    out[i].P             = in[i].P;
    139140    out[i].dP            = in[i].dP;
    140     out[i].Xp            = in[i].Xp;     
    141141    out[i].ChiSqAve      = in[i].ChiSqAve;     
    142142    out[i].ChiSqPM       = in[i].ChiSqPM;     
     
    159159    out[i].photFlagsUpper = 0;
    160160    out[i].photFlagsLower = 0;
     161
     162    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     163    out[i].psfQF         = NAN;
     164    out[i].psfQFperf     = NAN;
     165    out[i].stargal       = NAN;
    161166  }
    162167  return (out);
     
    182187    out[i].P             = in[i].P;
    183188    out[i].dP            = in[i].dP;
    184     out[i].Xp            = in[i].Xp;     
    185189    out[i].ChiSqAve      = in[i].ChiSqAve;     
    186190    out[i].ChiSqPM       = in[i].ChiSqPM;     
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c

    r34260 r34405  
    3333    out[i].catID      = in[i].catID;
    3434    out[i].extID      = in[i].extID;
    35     out[i].psfQual    = in[i].psfQual;
     35    out[i].psfQF      = in[i].psfQF;
    3636    out[i].psfChisq   = in[i].psfChisq;
    3737    out[i].psfNdof    = in[i].psfNdof;
     
    6161    out[i].FluxKron   = NAN;
    6262    out[i].dFluxKron  = NAN;
     63    out[i].psfQFperf  = NAN;
    6364  }
    6465  return (out);
     
    9596    out[i].catID      = in[i].catID;
    9697    out[i].extID      = in[i].extID;
    97     out[i].psfQual    = in[i].psfQual;
     98    out[i].psfQF      = in[i].psfQF;
    9899    out[i].psfChisq   = in[i].psfChisq;
    99100    out[i].psfNdof    = in[i].psfNdof;
     
    138139    out[i].P             = in[i].P;
    139140    out[i].dP            = in[i].dP;
    140     out[i].Xp            = in[i].Xp;     
    141141    out[i].ChiSqAve      = in[i].ChiSqAve;     
    142142    out[i].ChiSqPM       = in[i].ChiSqPM;     
     
    157157    out[i].catID         = in[i].catID;
    158158    out[i].extID         = in[i].extID;
     159
     160    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     161    out[i].psfQF         = NAN;
     162    out[i].psfQFperf     = NAN;
     163    out[i].stargal       = NAN;
    159164  }
    160165  return (out);
     
    180185    out[i].P             = in[i].P;
    181186    out[i].dP            = in[i].dP;
    182     out[i].Xp            = in[i].Xp;     
    183187    out[i].ChiSqAve      = in[i].ChiSqAve;     
    184188    out[i].ChiSqPM       = in[i].ChiSqPM;     
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c

    r34260 r34405  
    3939    out[i].catID      = in[i].catID;
    4040    out[i].extID      = in[i].extID;
    41     out[i].psfQual    = in[i].psfQual;
     41    out[i].psfQF      = in[i].psfQF;
     42    out[i].psfQFperf  = in[i].psfQFperf;
    4243    out[i].psfChisq   = in[i].psfChisq;
    4344    out[i].psfNdof    = in[i].psfNdof;
     
    99100    out[i].catID      = in[i].catID;
    100101    out[i].extID      = in[i].extID;
    101     out[i].psfQual    = in[i].psfQual;
     102    out[i].psfQF      = in[i].psfQF;
     103    out[i].psfQFperf  = in[i].psfQFperf;
    102104    out[i].psfChisq   = in[i].psfChisq;
    103105    out[i].psfNdof    = in[i].psfNdof;
     
    142144    out[i].P             = in[i].P;
    143145    out[i].dP            = in[i].dP;
    144     out[i].Xp            = in[i].Xp;     
     146    out[i].psfQF         = in[i].psfQF;
     147    out[i].psfQFperf     = in[i].psfQFperf;
     148    out[i].stargal       = in[i].stargal;     
    145149    out[i].ChiSqAve      = in[i].ChiSqAve;     
    146150    out[i].ChiSqPM       = in[i].ChiSqPM;     
     
    184188    out[i].P             = in[i].P;
    185189    out[i].dP            = in[i].dP;
    186     out[i].Xp            = in[i].Xp;     
     190    out[i].psfQF         = in[i].psfQF;
     191    out[i].psfQFperf     = in[i].psfQFperf;
     192    out[i].stargal       = in[i].stargal;     
    187193    out[i].ChiSqAve      = in[i].ChiSqAve;     
    188194    out[i].ChiSqPM       = in[i].ChiSqPM;     
  • trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c

    r34260 r34405  
    3535    out[i].Sky       = 0;
    3636    out[i].dSky      = 0;
    37     out[i].psfQual   = 0;
     37    out[i].psfQ   = 0;
    3838    out[i].psfChisq  = 0;
    3939    out[i].crNsigma  = 0;
     
    7272    out[i].FluxKron   = NAN;
    7373    out[i].dFluxKron  = NAN;
     74    out[i].psfQFperf  = NAN;
    7475  }
    7576  return (out);
     
    127128    out[i].R             = in[i].R;     
    128129    out[i].D             = in[i].D;     
    129     out[i].Xp            = in[i].Xp;     
    130130
    131131    // changed for PANSTARRS_DEV_0 (moved from Average to Measure)
     
    170170    out[i].photFlagsUpper = 0;
    171171    out[i].photFlagsLower = 0;
     172
     173    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     174    out[i].psfQF         = NAN;
     175    out[i].psfQFperf     = NAN;
     176    out[i].stargal       = NAN;
    172177  }
    173178  return (out);
     
    185190    out[i].R       = in[i].R;     
    186191    out[i].D       = in[i].D;     
    187     out[i].Xp      = in[i].Xp;     
    188192
    189193    // changed for PANSTARRS_DEV_0 (moved from Average to Measure)
  • trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c

    r34260 r34405  
    3939    out[i].Sky       = 0;
    4040    out[i].dSky      = 0;
    41     out[i].psfQual   = 0;
     41    out[i].psfQ   = 0;
    4242    out[i].psfChisq  = 0;
    4343    out[i].crNsigma  = 0;
     
    7474    out[i].FluxKron   = NAN;
    7575    out[i].dFluxKron  = NAN;
     76    out[i].psfQFperf  = NAN;
    7677  }
    7778  return (out);
     
    118119    out[i].R             = in[i].R;     
    119120    out[i].D             = in[i].D;     
    120     out[i].Xp            = in[i].Xp;     
    121121
    122122    // added for ELIXIR
     
    162162    out[i].photFlagsUpper = 0;
    163163    out[i].photFlagsLower = 0;
     164
     165    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     166    out[i].psfQF         = NAN;
     167    out[i].psfQFperf     = NAN;
     168    out[i].stargal       = NAN;
    164169  }
    165170  return (out);
     
    177182    out[i].R       = in[i].R;     
    178183    out[i].D       = in[i].D;     
    179     out[i].Xp      = in[i].Xp;     
    180184
    181185    // changed for PANSTARRS_DEV_0 (moved from Average to Measure)
  • trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c

    r34260 r34405  
    3636
    3737    // changed or added for PS1_DEV_1 (2008.02.26)
    38     out[i].psfQual    = (in[i].psfQual == NAN_S_SHORT) ? NAN : in[i].psfQual;
     38    out[i].psfQF      = (in[i].psfQF == NAN_S_SHORT) ? NAN : in[i].psfQF;
    3939    out[i].dbFlags    = in[i].flags;
    4040    out[i].detID      = in[i].detID_lo;
     
    6565    out[i].Mkron      = NAN;
    6666    out[i].dMkron     = NAN;
    67     out[i].FluxPSF     = NAN;
    68     out[i].dFluxPSF    = NAN;
    69     out[i].FluxKron    = NAN;
    70     out[i].dFluxKron   = NAN;
     67    out[i].FluxPSF    = NAN;
     68    out[i].dFluxPSF   = NAN;
     69    out[i].FluxKron   = NAN;
     70    out[i].dFluxKron  = NAN;
     71    out[i].psfQFperf  = NAN;
    7172  }
    7273  return (out);
     
    105106    // changed or added for PS1_DEV_1 (2008.02.26)
    106107    out[i].flags      = in[i].dbFlags;
    107     out[i].psfQual    = isnan(in[i].psfQual) ? NAN_S_SHORT : in[i].psfQual;
     108    out[i].psfQF      = isnan(in[i].psfQF) ? NAN_S_SHORT : in[i].psfQF;
    108109    out[i].detID_hi   = 0;
    109110    out[i].detID_lo   = in[i].detID;
     
    133134    out[i].R             = in[i].R;     
    134135    out[i].D             = in[i].D;     
    135     out[i].Xp            = in[i].Xp;     
    136136    out[i].dR            = in[i].dR;
    137137    out[i].dD            = in[i].dD;
     
    166166    out[i].photFlagsUpper = 0;
    167167    out[i].photFlagsLower = 0;
     168
     169    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     170    out[i].psfQF         = NAN;
     171    out[i].psfQFperf     = NAN;
     172    out[i].stargal       = NAN;
    168173  }
    169174  return (out);
     
    182187    out[i].R        = in[i].R;     
    183188    out[i].D        = in[i].D;     
    184     out[i].Xp       = in[i].Xp;     
    185189    out[i].dR       = in[i].dR;
    186190    out[i].dD       = in[i].dD;
  • trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c

    r34260 r34405  
    3636
    3737    // changed or added for PS1_DEV_1 (2008.02.26)
    38     out[i].psfQual    = (in[i].psfQual == NAN_S_SHORT) ? NAN : in[i].psfQual;
     38    out[i].psfQF      = (in[i].psfQF == NAN_S_SHORT) ? NAN : in[i].psfQF;
    3939    out[i].dbFlags    = in[i].flags;
    4040    out[i].detID      = in[i].detID_lo;
     
    6565    out[i].Mkron      = NAN;
    6666    out[i].dMkron     = NAN;
    67     out[i].FluxPSF     = NAN;
    68     out[i].dFluxPSF    = NAN;
    69     out[i].FluxKron    = NAN;
    70     out[i].dFluxKron   = NAN;
     67    out[i].FluxPSF    = NAN;
     68    out[i].dFluxPSF   = NAN;
     69    out[i].FluxKron   = NAN;
     70    out[i].dFluxKron  = NAN;
     71    out[i].psfQFperf  = NAN;
    7172  }
    7273  return (out);
     
    105106    // changed or added for PS1_DEV_1 (2008.02.26)
    106107    out[i].flags      = in[i].dbFlags;
    107     out[i].psfQual    = isnan(in[i].psfQual) ? NAN_S_SHORT : in[i].psfQual;
     108    out[i].psfQF      = isnan(in[i].psfQF) ? NAN_S_SHORT : in[i].psfQF;
    108109    out[i].detID_hi   = 0;
    109110    out[i].detID_lo   = in[i].detID;
     
    133134    out[i].R             = in[i].R;     
    134135    out[i].D             = in[i].D;     
    135     out[i].Xp            = in[i].Xp;     
    136136    out[i].dR            = in[i].dR;
    137137    out[i].dD            = in[i].dD;
     
    166166    out[i].photFlagsUpper = 0;
    167167    out[i].photFlagsLower = 0;
     168
     169    // added for PS1_V4 (Xp dropped in V4 onward, was not really used anyway)
     170    out[i].psfQF         = NAN;
     171    out[i].psfQFperf     = NAN;
     172    out[i].stargal       = NAN;
    168173  }
    169174  return (out);
     
    182187    out[i].R        = in[i].R;     
    183188    out[i].D        = in[i].D;     
    184     out[i].Xp       = in[i].Xp;     
    185189    out[i].dR       = in[i].dR;
    186190    out[i].dD       = in[i].dD;
  • trunk/Ohana/src/libdvo/src/dvo_image.c

    r34260 r34405  
    200200  gfits_modify (&db[0].header, "NIMAGES", "%d", 1, 0);
    201201  gfits_modify (&db[0].header, "ZERO_PT", "%lf", 1, ZeroPoint);
     202 
     203  dvo_image_createID (&db[0].header);
    202204
    203205  if (db[0].format == DVO_FORMAT_INTERNAL)        gfits_modify (&db[0].header, "FORMAT", "%s", 1, "INTERNAL");
     
    217219  return;
    218220}
     221
     222// given a dvo image db, add an ID to the header
     223int dvo_image_createID (Header *header) {
     224 
     225  char dbID[33];
     226
     227  if (!header->buffer) return FALSE;
     228
     229  int status = gfits_scan (header, "DVO_DBID", "%s", 1, dbID);     
     230  if (status) {
     231    // do not add a DVO_DBID to a table which already has one
     232    return TRUE;
     233  }
     234
     235  // I have a header, I want to add ONE line.  double check there is enough space
     236  char *p = gfits_header_field (header, "END", 1);
     237  if (p == NULL) {
     238    fprintf (stderr, "header is missing END\n");
     239    return FALSE;
     240  }
     241  if (p - header->buffer + 80 == header->datasize) {
     242    fprintf (stderr, "no free space in block, can't insert keyword\n");
     243    return FALSE;
     244  }
     245
     246  int start_size = header->datasize;
     247
     248  long A = time(NULL);
     249  srand48(A);
     250 
     251  int i;
     252  for (i = 0; i < 32; i++) {
     253    sprintf (&dbID[i], "%1x", (int)(16.0*drand48()));
     254  }
     255
     256  gfits_modify (header, "DVO_DBID", "%s", 1, dbID);     
     257  if (start_size != header->datasize) {
     258    fprintf (stderr, "error: header buffer grew? (%d to %d bytes)\n", (int) start_size, (int) header->datasize);
     259    return FALSE;
     260  }
     261  return TRUE;
     262}
     263
  • trunk/Ohana/src/libfits/header/F_scan.c

    r28246 r34405  
    8585
    8686  // XXX is this safe for 64bit off_t and 32bit off_t?
     87  // XXX the problem is that we read FITS files on many machine types: I need to ensure
     88  // that we are portable -- this sseems inconsistent
    8789  if (!strcmp (mode, "%jd"))  { *va_arg (argp, intmax_t *)           = value; return (TRUE); }
    8890
     
    220222  if ((*q == 'd') || (*q == 'D')) value *= pow (10.0, atof (q + 1));
    221223
    222   if (!strcmp (mode, "%d"))   { *va_arg (argp, int *)                = value; return (TRUE); }
    223   if (!strcmp (mode, "%ld"))  { *va_arg (argp, long *)               = value; return (TRUE); }
    224   if (!strcmp (mode, OFF_T_FMT)) { *va_arg (argp, long long *)       = value; return (TRUE); }
    225   if (!strcmp (mode, "%Ld"))  { *va_arg (argp, long long *)          = value; return (TRUE); }
    226   if (!strcmp (mode, "%u"))   { *va_arg (argp, unsigned *)           = value; return (TRUE); }
    227   if (!strcmp (mode, "%lu"))  { *va_arg (argp, unsigned long *)      = value; return (TRUE); }
    228   if (!strcmp (mode, "%llu")) { *va_arg (argp, unsigned long long *) = value; return (TRUE); }
    229   if (!strcmp (mode, "%Lu"))  { *va_arg (argp, unsigned long long *) = value; return (TRUE); }
    230   if (!strcmp (mode, "%hd"))  { *va_arg (argp, short *)              = value; return (TRUE); }
     224  if (!strcmp (mode, "%d"))      { *va_arg (argp, int *)                = value; return (TRUE); }
     225  if (!strcmp (mode, "%ld"))     { *va_arg (argp, long *)               = value; return (TRUE); }
     226  if (!strcmp (mode, OFF_T_FMT)) { *va_arg (argp, off_t *)              = value; return (TRUE); }
     227  if (!strcmp (mode, "%Ld"))     { *va_arg (argp, long long *)          = value; return (TRUE); }
     228  if (!strcmp (mode, "%u"))      { *va_arg (argp, unsigned *)           = value; return (TRUE); }
     229  if (!strcmp (mode, "%lu"))     { *va_arg (argp, unsigned long *)      = value; return (TRUE); }
     230  if (!strcmp (mode, "%llu"))    { *va_arg (argp, unsigned long long *) = value; return (TRUE); }
     231  if (!strcmp (mode, "%Lu"))     { *va_arg (argp, unsigned long long *) = value; return (TRUE); }
     232  if (!strcmp (mode, "%hd"))     { *va_arg (argp, short *)              = value; return (TRUE); }
     233  if (!strcmp (mode, "%jd"))     { *va_arg (argp, intmax_t *)           = value; return (TRUE); }
    231234
    232235  /* no valid mode found */
  • trunk/Ohana/src/opihi

  • trunk/Ohana/src/opihi/cmd.astro

  • trunk/Ohana/src/opihi/dvo/avextract.c

    r34088 r34405  
    325325    gprint (GP_ERR, "  <photcode>:nphot : number of measurements used for average magnitude in this photcode\n");
    326326
    327     // gprint (GP_ERR, "  Xp : NOT VALID\n");
    328327    // gprint (GP_ERR, "  type : dophot type (unused)\n");
    329328    // gprint (GP_ERR, "  typefrac : dophot type fraction (unused)\n");
  • trunk/Ohana/src/opihi/dvo/avmatch.c

    r33963 r34405  
    351351    gprint (GP_ERR, "  <photcode>:nphot : number of measurements used for average magnitude in this photcode\n");
    352352
    353     // gprint (GP_ERR, "  Xp : NOT VALID\n");
    354353    // gprint (GP_ERR, "  type : dophot type (unused)\n");
    355354    // gprint (GP_ERR, "  typefrac : dophot type fraction (unused)\n");
  • trunk/Ohana/src/opihi/dvo/gstar.c

    r33963 r34405  
    190190        gprint (GP_LOG, "%5.2f ",   3600.0*sqrt(r));
    191191        gprint (GP_LOG, "%3d   ",  catalog.average[k].Nmeasure);
    192         gprint (GP_LOG, "%4.1f ",  0.01*catalog.average[k].Xp);
     192        gprint (GP_LOG, "%4.1f ",  catalog.average[k].ChiSqAve);
    193193        gprint (GP_LOG, "%5x ",    catalog.average[k].flags);
    194194        gprint (GP_LOG, "%x ",     catalog.average[k].objID);
     
    205205            gprint (GP_LOG, "%f   ",     catalog.average[k].dP);
    206206
    207             gprint (GP_LOG, "%f   ",     catalog.average[k].ChiSqAve);
    208207            gprint (GP_LOG, "%f   ",     catalog.average[k].ChiSqPM);
    209208            gprint (GP_LOG, "%f   ",     catalog.average[k].ChiSqPar);
     
    292291                gprint (GP_LOG, "0x%08x ", catalog.measure[m].detID);
    293292                gprint (GP_LOG, "0x%08x ", catalog.measure[m].imageID);
    294                 gprint (GP_LOG, "%.3f ", catalog.measure[m].psfQual);
     293                gprint (GP_LOG, "%.3f ", catalog.measure[m].psfQF);
    295294                gprint (GP_LOG, "%.1f ", catalog.measure[m].psfChisq);
    296295                gprint (GP_LOG, "%.1f ", catalog.measure[m].crNsigma);
  • trunk/Ohana/src/opihi/dvo/photometry.c

    r31635 r34405  
    226226  if (!strcasecmp (parname, "Nmeas")) param = AVE_NMEAS;
    227227  if (!strcasecmp (parname, "Nmiss")) param = AVE_NMISS;
    228   if (!strcasecmp (parname, "Xp"))    param = AVE_Xp;
    229228  if (!strcasecmp (parname, "Xm"))    param = AVE_Xm;
    230229  if (!strcasecmp (parname, "flag"))  param = AVE_OBJ_FLAGS;
     
    294293void GetAverageParamHelp () {
    295294  gprint (GP_ERR, "value may be one of the following:\n");
    296   gprint (GP_ERR, " ra dec dmag Nmeas Nmiss Xm Xp Nphot Ncode flag type typefrac\n\n");
     295  gprint (GP_ERR, " ra dec dmag Nmeas Nmiss Xm Nphot Ncode flag type typefrac\n\n");
    297296  gprint (GP_ERR, "value may also be a valid photcode\n");
    298297  gprint (GP_ERR, "photcodes or 'mag' may have optional magnitude mode: mag,[Mave, Mref]\n");
     
    637636    case AVE_NMISS:
    638637      value = average[0].Nmissing;
    639       break;
    640     case AVE_Xp:
    641       value = 0.01*average[0].Xp;
    642638      break;
    643639    case AVE_OBJ_FLAGS:
  • trunk/Ohana/src/relastro/src/BrightCatalog.c

    r33652 r34405  
    154154    GET_COLUMN(Tmean,          "MEAN_EPOCH",  int);
    155155    GET_COLUMN(Trange,         "TIME_RANGE",  int);
    156     GET_COLUMN(Xp,             "SIGMA_POS",  float);
     156    GET_COLUMN(stargal,        "STARGAL_SEP", float);
    157157    GET_COLUMN(Npos,           "NUMBER_POS",  short);
    158158    GET_COLUMN(Nmeasure,       "NMEASURE",    short);
     
    189189      average[i].Tmean           = Tmean[i]           ;
    190190      average[i].Trange          = Trange[i]          ;
    191       average[i].Xp              = Xp[i]              ;
     191      average[i].stargal         = stargal[i]         ;
    192192      average[i].Npos            = Npos[i]            ;
    193193      average[i].Nmeasure        = Nmeasure[i]        ;
     
    221221    free (Tmean);
    222222    free (Trange);
    223     free (Xp);
     223    free (stargal);
    224224    free (Npos);
    225225    free (Nmeasure);
     
    487487    int      *Tmean         ; ALLOCATE (Tmean         , int     , catalog->Naverage);
    488488    int      *Trange        ; ALLOCATE (Trange        , int     , catalog->Naverage);
    489     float    *Xp            ; ALLOCATE (Xp            , float   , catalog->Naverage);
     489    float    *stargal       ; ALLOCATE (stargal       , float   , catalog->Naverage);
    490490    short    *Npos          ; ALLOCATE (Npos          , short   , catalog->Naverage);
    491491    short    *Nmeasure      ; ALLOCATE (Nmeasure      , short   , catalog->Naverage);
     
    520520      Tmean[i]           = average[i].Tmean           ;
    521521      Trange[i]          = average[i].Trange          ;
    522       Xp[i]              = average[i].Xp              ;
     522      stargal[i]         = average[i].stargal         ;
    523523      Npos[i]            = average[i].Npos            ;
    524524      Nmeasure[i]        = average[i].Nmeasure        ;
     
    552552    gfits_set_bintable_column (&theader, &ftable, "MEAN_EPOCH",  Tmean,           catalog->Naverage);
    553553    gfits_set_bintable_column (&theader, &ftable, "TIME_RANGE",  Trange,          catalog->Naverage);
    554     gfits_set_bintable_column (&theader, &ftable, "SIGMA_POS",   Xp,              catalog->Naverage);
     554    gfits_set_bintable_column (&theader, &ftable, "STARGAL_SEP", stargal,         catalog->Naverage);
    555555    gfits_set_bintable_column (&theader, &ftable, "NUMBER_POS",  Npos,            catalog->Naverage);
    556556    gfits_set_bintable_column (&theader, &ftable, "NMEASURE",    Nmeasure,        catalog->Naverage);
     
    582582    free (Tmean);
    583583    free (Trange);
    584     free (Xp);
     584    free (stargal);
    585585    free (Npos);
    586586    free (Nmeasure);
  • trunk/Ohana/src/relastro/src/UpdateObjectOffsets.c

    r33963 r34405  
    9595    // RESET (-reset)
    9696    // TimeSelect -time
    97     // (note that psfQual is applied rigidly at 0.85, as is the galaxy test)
     97    // (note that psfQF is applied rigidly at 0.85, as is the galaxy test)
    9898    // ImagSelect, ImagMin, ImagMax
    9999    // MaxDensityUse, MaxDensityValue
  • trunk/Ohana/src/relastro/src/UpdateObjects.c

    r33652 r34405  
    352352      catalog[i].average[j].dP  = fit.dp; // parallax error in arcsec
    353353
    354       // Xp is supposed to be the position scatter, not the chisq : fix this:
    355       // catalog[i].average[j].Xp  = (fit.Nfit > 1) ? 100.0*log10(fit.chisq) : NAN_S_SHORT;
    356354      catalog[i].average[j].ChiSqAve  = fitAve.chisq;
    357355      catalog[i].average[j].ChiSqPM   = fitPM.chisq;
    358356      catalog[i].average[j].ChiSqPar  = fitPAR.chisq;
    359       catalog[i].average[j].Xp        = 0.0;
    360357      catalog[i].average[j].Tmean = (Tmean * 86400 * 365.26) + T2000;
    361358      catalog[i].average[j].Trange = (Trange * 86400 * 365.26);
  • trunk/Ohana/src/relastro/src/load_catalogs.c

    r33963 r34405  
    137137    // RESET (-reset)
    138138    // TimeSelect -time
    139     // (note that psfQual is applied rigidly at 0.85, as is the galaxy test)
     139    // (note that psfQF is applied rigidly at 0.85, as is the galaxy test)
    140140    // ImagSelect, ImagMin, ImagMax
    141141    // MaxDensityUse, MaxDensityValue
  • trunk/Ohana/src/relastro/src/relastro_objects.c

    r34260 r34405  
    123123    // RESET (-reset)
    124124    // TimeSelect -time
    125     // (note that psfQual is applied rigidly at 0.85, as is the galaxy test)
     125    // (note that psfQF is applied rigidly at 0.85, as is the galaxy test)
    126126    // ImagSelect, ImagMin, ImagMax
    127127    // MaxDensityUse, MaxDensityValue
  • trunk/Ohana/src/relphot/src/bcatalog.c

    r33963 r34405  
    117117
    118118      // skip garbage measurements
    119       if (catalog[0].measure[offset].psfQual < 0.85) { Npsfqf ++; continue; }
     119      if (catalog[0].measure[offset].psfQF < 0.85) { Npsfqf ++; continue; }
    120120      if (isnan(catalog[0].measure[offset].M)) { Nnan ++; continue; }
    121121
  • trunk/Ohana/src/relphot/src/load_catalogs.c

    r33963 r34405  
    136136    // TimeSelect -time
    137137    // DophotSelect
    138     // (note that psfQual is applied rigidly at 0.85, as is the galaxy test)
     138    // (note that psfQF is applied rigidly at 0.85, as is the galaxy test)
    139139    // MAG_LIM
    140140    // SIGMA_LIM
  • trunk/Ohana/src/relphot/src/relphot_objects.c

    r33963 r34405  
    143143    // TimeSelect -time
    144144    // DophotSelect
    145     // (note that psfQual is applied rigidly at 0.85, as is the galaxy test)
     145    // (note that psfQF is applied rigidly at 0.85, as is the galaxy test)
    146146    // MAG_LIM
    147147    // SIGMA_LIM
  • trunk/Ohana/src/relphot/src/setMrelFinal.c

    r34088 r34405  
    237237          if (catalog[0].measure[m].photFlags & code->photomBadMask) goto skip;
    238238          if ((catalog[0].measure[m].photcode > 10000) && (catalog[0].measure[m].photcode < 10500)) {
    239             if (catalog[0].measure[m].psfQual < 0.85) goto skip;
     239            if (catalog[0].measure[m].psfQF < 0.85) goto skip;
    240240          }
    241241        }
Note: See TracChangeset for help on using the changeset viewer.