IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 36533


Ignore:
Timestamp:
Feb 18, 2014, 2:50:41 PM (12 years ago)
Author:
eugene
Message:

merge from trunk

Location:
branches/eam_branches/ipp-20140206/Ohana/src/libdvo
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140206/Ohana/src/libdvo/include/dvo.h

    r36520 r36533  
    445445} MeasureTiny;
    446446
     447/** STRUCT DEFINITION **/
     448typedef struct {
     449  double           R;                    // RA (decimal degrees )
     450  double           D;                    // DEC (decimal degrees )
     451  float            dR;                   // RA error (arcsec)
     452  float            dD;                   // DEC error (arcsec)
     453  float            uR;                   // RA*cos(D) proper-motion (arcsec/year)
     454  float            uD;                   // DEC proper-motion (arcsec/year)
     455  float            duR;                  // RA*cos(D) p-m error (arcsec/year)
     456  float            duD;                  // DEC p-m error (arcsec/year)
     457  float            P;                    // parallax (arcsec)
     458  float            dP;                   // parallax error (arcsec)
     459  float            ChiSqAve;             // astrometry analysis chisq
     460  float            ChiSqPM;              // astrometry analysis chisq
     461  float            ChiSqPar;             // astrometry analysis chisq
     462  int              Tmean;                // mean epoch (PM,PAR ref) (unix time seconds)
     463  int              Trange;               // mean epoch (PM,PAR ref) (unix time seconds)
     464  float            Xp;                   // unused
     465  unsigned short   Npos;                 // number of detections used for astrometry
     466  unsigned short   Nmeasure;             // number of psf measurements
     467  unsigned short   Nmissing;             // number of missings
     468  unsigned short   Nextend;              // number of extended measurements
     469  uint32_t         measureOffset;        // offset to first psf measurement
     470  uint32_t         missingOffset;        // offset to first missing obs
     471  uint32_t         extendOffset;         // offset to first extended measurement
     472  uint32_t         flags;                // average object flags (star; ghost; etc)
     473  uint32_t         photFlagsUpper;       // upper bit of 2 bit summary of per-measure photflags
     474  uint32_t         photFlagsLower;       // lower bit of 2 bit summary of per-measure photflags
     475  unsigned int     objID;                // unique ID for object in table
     476  unsigned int     catID;                // unique ID for table in which object was first realized
     477  uint64_t         extID;                // external ID for object (eg PSPS objID)
     478} Average_PS1_V4alt;
     479
     480Average_PS1_V4alt *gfits_table_get_Average_PS1_V4alt (FTable *table, off_t *Ndata, char *swapped);
     481Average *Average_PS1_V4alt_ToInternal (Average_PS1_V4alt *in, off_t Nvalues);
    447482
    448483/** STRUCT DEFINITION **/
     
    625660
    626661float PhotAperInst (Measure *measure);
     662float PhotAperAve (PhotCode *code, Average *average, SecFilt *secfilt);
    627663float PhotKronInst (Measure *measure);
    628664float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt);
  • branches/eam_branches/ipp-20140206/Ohana/src/libdvo/src/dbExtractAverages.c

    r36084 r36533  
    243243          break;
    244244
     245        case MAG_APER:
     246          value.Flt = PhotAperAve (field->photcode, average, secfilt);
     247          break;
     248
    245249        case MAG_KRON:
    246250          value.Flt = PhotKronAve (field->photcode, average, secfilt);
  • branches/eam_branches/ipp-20140206/Ohana/src/libdvo/src/dvo_convert.c

    r36490 r36533  
    6363    fprintf (stderr, "EXTNAME missing for average table\n");
    6464    return (FALSE);
     65  }
     66
     67  // block to convert broken tables (PS1_V4 made before the Xfix addition)
     68  if (!strcmp (extname, "DVO_AVERAGE_PS1_V4") && (ftable[0].header[0].Naxis[0] == 120)) {
     69    Average_PS1_V4alt *tmpAverage;
     70    tmpAverage = gfits_table_get_Average_PS1_V4alt (ftable, Naverage, NULL);
     71    if (!tmpAverage) {
     72      fprintf (stderr, "ERROR: failed to read averages\n");
     73      exit (2);
     74    }
     75    average = Average_PS1_V4alt_ToInternal (tmpAverage, *Naverage);
     76    free (tmpAverage);
     77    *format = DVO_FORMAT_PS1_V4;
     78    return (average);
    6579  }
    6680
  • branches/eam_branches/ipp-20140206/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c

    r36490 r36533  
    647647}
    648648
     649// 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
     650Average *Average_PS1_V4alt_ToInternal (Average_PS1_V4alt *in, off_t Nvalues) {
     651
     652  off_t i;
     653  Average *out;
     654
     655  ALLOCATE_ZERO (out, Average, Nvalues);
     656
     657  for (i = 0; i < Nvalues; i++) {
     658    dvo_average_init (&out[i]);
     659
     660    out[i].R             = in[i].R;     
     661    out[i].D             = in[i].D;     
     662    out[i].dR            = in[i].dR;
     663    out[i].dD            = in[i].dD;
     664    out[i].uR            = in[i].uR;
     665    out[i].uD            = in[i].uD;
     666    out[i].duR           = in[i].duR;
     667    out[i].duD           = in[i].duD;
     668    out[i].P             = in[i].P;
     669    out[i].dP            = in[i].dP;
     670    out[i].ChiSqAve      = in[i].ChiSqAve;     
     671    out[i].ChiSqPM       = in[i].ChiSqPM;     
     672    out[i].ChiSqPar      = in[i].ChiSqPar;     
     673    out[i].Tmean         = in[i].Tmean;     
     674    out[i].Trange        = in[i].Trange;     
     675    out[i].Npos          = in[i].Npos;     
     676    out[i].Nmeasure      = in[i].Nmeasure;     
     677    out[i].Nmissing      = in[i].Nmissing;     
     678    out[i].Nextend       = in[i].Nextend;     
     679    out[i].measureOffset = in[i].measureOffset;
     680    out[i].missingOffset = in[i].missingOffset;
     681    out[i].extendOffset  = in[i].extendOffset;
     682    out[i].flags         = in[i].flags;   
     683    out[i].photFlagsUpper = in[i].photFlagsUpper;   
     684    out[i].photFlagsLower = in[i].photFlagsLower;   
     685    out[i].objID         = in[i].objID;
     686    out[i].catID         = in[i].catID;
     687    out[i].extID         = in[i].extID;
     688  }
     689  return (out);
     690}
     691
     692/******/
     693
     694int gfits_convert_Average_PS1_V4alt (Average_PS1_V4alt *data, off_t size, off_t nitems) {
     695
     696  off_t i;
     697  unsigned char *byte, tmp;
     698
     699  if (size != 120) {
     700    fprintf (stderr, "WARNING: mismatch in data types Average_PS1_V4alt: "OFF_T_FMT" vs %d\n",  size,  120);
     701    return (FALSE);
     702  }
     703
     704  /* provide initial values to avoid compiler warnings for non-BYTE_SWAP arch */
     705  i = tmp = 0;
     706  byte = NULL;
     707
     708# ifdef BYTE_SWAP
     709  byte = (unsigned char *) data;
     710  for (i = 0; i < nitems; i++, byte += 129) {
     711    /** BYTE SWAP **/
     712    SWAP_DBLE (0); // RA
     713    SWAP_DBLE (8); // DEC
     714    SWAP_WORD (16); // RA_ERR
     715    SWAP_WORD (20); // DEC_ERR
     716    SWAP_WORD (24); // U_RA
     717    SWAP_WORD (28); // U_DEC
     718    SWAP_WORD (32); // V_RA_ERR
     719    SWAP_WORD (36); // V_DEC_ERR
     720    SWAP_WORD (40); // PAR
     721    SWAP_WORD (44); // PAR_ERR
     722    SWAP_WORD (48); // CHISQ_POS
     723    SWAP_WORD (52); // CHISQ_PM
     724    SWAP_WORD (56); // CHISQ_PAP
     725    SWAP_WORD (60); // MEAN_EPOCH
     726    SWAP_WORD (64); // TIME_RANGE
     727    SWAP_WORD (68); // SIGMA
     728    SWAP_BYTE (72); // NUMBER_POS
     729    SWAP_BYTE (74); // NMEASURE
     730    SWAP_BYTE (76); // NMISSING
     731    SWAP_BYTE (78); // NEXTEND
     732    SWAP_WORD (80); // OFF_MEASURE
     733    SWAP_WORD (84); // OFF_MISSING
     734    SWAP_WORD (88); // OFF_EXTEND
     735    SWAP_WORD (92); // FLAGS
     736    SWAP_WORD (96); // PHOTFLAGS_U
     737    SWAP_WORD (100); // PHOTFLAGS_L
     738    SWAP_WORD (104); // OBJ_ID
     739    SWAP_WORD (108); // CAT_ID
     740    SWAP_DBLE (112); // EXT_ID
     741  }
     742# endif 
     743
     744  return (TRUE);
     745}
     746
     747/*** add test of EXTNAME and header-defined columns? ***/
     748/* return internal structure representation */
     749Average_PS1_V4alt *gfits_table_get_Average_PS1_V4alt (FTable *ftable, off_t *Ndata, char *swapped) {
     750
     751  int Ncols;
     752  Average_PS1_V4alt *data;
     753
     754  Ncols = ftable[0].header[0].Naxis[0];
     755  if (Ncols != 120) {
     756    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 176);
     757    return NULL;
     758  }
     759
     760  *Ndata = ftable[0].header[0].Naxis[1];
     761  data = (Average_PS1_V4alt *) ftable[0].buffer;
     762  if ((swapped == NULL) || (*swapped == FALSE)) {
     763    if (!gfits_convert_Average_PS1_V4alt (data, sizeof (Average_PS1_V4alt), *Ndata)) {
     764      return NULL;
     765    }
     766    gfits_table_scale_data (ftable);
     767    if (swapped != NULL) *swapped = TRUE;
     768  }
     769  return (data);
     770}
     771
  • branches/eam_branches/ipp-20140206/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r36520 r36533  
    561561}
    562562
     563float PhotAperAve (PhotCode *code, Average *average, SecFilt *secfilt) {
     564
     565  int Ns;
     566  float Maper;
     567
     568  if (code == NULL) return NAN;
     569
     570  Ns = photcodes[0].hashNsec[code[0].code];
     571  Maper = (Ns == -1) ? NAN : secfilt[Ns].Map;
     572  return (Maper);
     573}
     574
    563575float PhotKronAve (PhotCode *code, Average *average, SecFilt *secfilt) {
    564576
Note: See TracChangeset for help on using the changeset viewer.