IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 29, 2015, 6:52:41 AM (11 years ago)
Author:
eugene
Message:

merge changes from ipp-20150112

Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/Ohana

    • Property svn:mergeinfo deleted
  • trunk/Ohana/src/libdvo/include/dvo.h

    r37992 r38062  
    555555Measure *Measure_PS1_V4alt_ToInternal (Average *ave, Measure_PS1_V4alt *in, off_t Nvalues);
    556556
     557typedef struct {
     558  double           R;                    // RA at epoch (degrees)
     559  double           D;                    // DEC at epoch (degrees)
     560  float            M;                    // catalog mag (mag)
     561  float            dM;                   // mag error (mag)
     562  float            Map;                  // aperture mag (mag)
     563  float            dMap;                 // aperture mag (mag)
     564  float            Mkron;                // kron magnitude (mag)
     565  float            dMkron;               // kron magnitude error (mag)
     566  float            Mcal;                 // image cal mag (mag)
     567  float            dMcal;                // systematic calibration error (mag)
     568  float            dt;                   // exposure time (2.5*log(exptime))
     569  float            FluxPSF;              // flux from psf fit (counts/sec)
     570  float            dFluxPSF;             // error on psf flux (counts/sec)
     571  float            FluxKron;             // flux from kron ap (counts/sec)
     572  float            dFluxKron;            // error on kron flux (counts/sec)
     573  float            FluxAp;               // flux from ap ap (counts/sec)
     574  float            dFluxAp;              // error on ap flux (counts/sec)
     575  float            airmass;              // (airmass - 1) (airmass)
     576  float            az;                   // telescope azimuth
     577  float            Xccd;                 // X coord on chip (raw value) (pixels)
     578  float            Yccd;                 // Y coord on chip (raw value) (pixels)
     579  float            Xfix;                 // X coord after correction (pixels)
     580  float            Yfix;                 // Y coord after correction (pixels)
     581  float            XoffKH;               // X offset from correction (pixels)
     582  float            YoffKH;               // Y offset from correction (pixels)
     583  float            XoffDCR;              // X offset from correction (pixels)
     584  float            YoffDCR;              // Y offset from correction (pixels)
     585  float            RoffGAL;              // RA offset from correction (arcsec)
     586  float            DoffGAL;              // DEC offset from correction (arcsec)
     587  float            Sky;                  // local estimate of sky flux (counts/sec)
     588  float            dSky;                 // local estimate of sky flux (counts/sec)
     589  int              t;                    // time in seconds (UNIX)
     590  unsigned int     averef;               // reference to average entry     
     591  unsigned int     detID;                // detection ID
     592  unsigned int     objID;                // unique ID for object in table
     593  unsigned int     catID;                // unique ID for table in which object was first realized
     594  uint64_t         extID;                // external ID (eg PSPS detID)
     595  unsigned int     imageID;              // reference to DVO image ID
     596  float            psfQF;                // psf coverage/quality factor
     597  float            psfQFperf;            // psf coverage / quality factor (all mask bits)
     598  float            psfChisq;             // psf fit chisq
     599  int              psfNdof;              // psf degrees of freedom
     600  int              psfNpix;              // psf number of pixels
     601  int              photFlags2;           // flags supplied by photometry program
     602  float            extNsigma;            // Nsigma deviation towards EXT
     603  short            FWx;                  // object fwhm major axis (1/100 of pixels)
     604  short            FWy;                  // object fwhm minor axis (1/100 of pixels )
     605  short            theta;                // angle wrt ccd X dir ((0xffff/360) deg)
     606  short            Mxx;                  // second moments in pixel coords (1/100 of pixels)
     607  short            Mxy;                  // second moments in pixel coords (1/100 of pixels)
     608  short            Myy;                  // second moments in pixel coords (1/100 of pixels)
     609  unsigned short   t_msec;               // time fraction of second (milliseconds)
     610  unsigned short   photcode;             // photcode
     611  short            dXccd;                // X coord error on chip (1/100 of pixels)
     612  short            dYccd;                // Y coord error on chip (1/100 of pixels)
     613  short            dRsys;                // systematic error from astrom (1/100 of pixels)
     614  short            posangle;             // position angle sky to chip ((0xffff/360) deg)
     615  float            pltscale;             // plate scale (arcsec/pixel)
     616  unsigned int     dbFlags;              // flags supplied by analysis in database
     617  unsigned int     photFlags;            // flags supplied by photometry program
     618  int              padding;              // padding to ensure 8byte blocks
     619} Measure_PS1_V5alt;
     620
     621Measure *Measure_PS1_V5alt_ToInternal (Average *ave, Measure_PS1_V5alt *in, off_t Nvalues);
     622int gfits_convert_Measure_PS1_V5alt (Measure_PS1_V5alt *data, off_t size, off_t nitems);
     623Measure_PS1_V5alt *gfits_table_get_Measure_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped);
     624
    557625// alternate version of PS1_V5 (old dev version)
    558626typedef struct {
  • trunk/Ohana/src/libdvo/include/dvodb.h

    r37871 r38062  
    178178      MEAS_XOFF_DCR,
    179179      MEAS_YOFF_DCR,
     180      MEAS_XOFF_CAM,
     181      MEAS_YOFF_CAM,
    180182      MEAS_ROFF_GAL,
    181183      MEAS_DOFF_GAL,
     
    237239      MEAS_RA_GALMODEL,      // model pm prediction
    238240      MEAS_DEC_GALMODEL,     // model pm prediction
    239 };
     241} dvoMeasureType;
    240242
    241243/* average fields */
     
    289291      AVE_RA_GALMODEL,      // model pm prediction
    290292      AVE_DEC_GALMODEL,     // model pm prediction
    291 };
     293} dvoAverageType;
    292294
    293295//       AVE_NPHOT,
     
    365367      IMAGE_REF_COLOR_BLUE,
    366368      IMAGE_REF_COLOR_RED
    367 };
     369} dvoImageType;
    368370
    369371enum {DVO_TABLE_AVERAGE, DVO_TABLE_MEASURE, DVO_TABLE_IMAGE};
     
    383385  int extract;
    384386  int table;
    385   int ID;
     387  int ID; // may be either dvoMeasureType or dvoAverageType
    386388
    387389  dvoMagSourceType magSource; // chip, (forced) warp, stack [only relevant for averages]
  • trunk/Ohana/src/libdvo/src/dbExtractAverages.c

    r37807 r38062  
    5353
    5454  // off_t i;
     55  int n;
    5556  dbValue value;
    5657
     
    186187    case AVE_PHOT:
    187188      // if we request mag:ave, use equiv for photcode (ie a given measure, say GPC1.g.XY01, will return g for mag:ave)
    188       if  (field->photcode->type == PHOT_MAG) {
    189         // this is an error
    190         break;
    191       }
    192 
    193       // if we ask for 2MASS_K, etc (REF values), return NAN unless measure->code matches
    194       if (field->photcode->type == PHOT_REF) {
    195         // need to ensure measure exists.
    196         break;
    197       }
    198 
    199       // if we ask for GPC1.g.XY03:rel, etc (DEP values), return NAN unless measure->code matches
    200       if (field->photcode->type == PHOT_DEP) {
    201         // again.
    202         break;
    203       }
    204 
    205       /* in some cases below we need a measurement which matches the requested photcode.
    206          here is some sample code to find this.
    207 
    208           for (i = 0; i < average[0].Nmeasure; i++) {
    209             if (field->photcode->code != measure[i].photcode) continue;
    210             value.Flt = measure[i].M;
    211             break;
    212           }
    213       */
     189
     190      // this is an error (no exposed photcodes should be of type PHOT_MAG)
     191      if  (field->photcode->type == PHOT_MAG) break;
    214192
    215193      switch (field->magOption) {
     
    220198              break;
    221199            case MAG_LEVEL_REF:
    222               // which measure is needed here?
    223               // PhotRef  (field->photcode, average, secfilt, measure, field->magClass, field->magSource);
    224200              break;
    225201            case MAG_LEVEL_INST:
     202              // find an appropriate measure (if one exists)
     203              for (n = 0; n < average->Nmeasure; n++) {
     204                if (field->photcode->code != measure[n].photcode) continue;
     205                value.Flt = PhotInst (&measure[n], field->magClass);
     206                break;
     207              }
     208              break;
    226209            case MAG_LEVEL_CAT:
     210              // find an appropriate measure (if one exists)
     211              for (n = 0; n < average->Nmeasure; n++) {
     212                if (field->photcode->code != measure[n].photcode) continue;
     213                value.Flt = PhotCat (&measure[n], field->magClass);
     214                break;
     215              }
     216              break;
    227217            case MAG_LEVEL_SYS:
     218              // find an appropriate measure (if one exists)
     219              for (n = 0; n < average->Nmeasure; n++) {
     220                if (field->photcode->code != measure[n].photcode) continue;
     221                value.Flt = PhotSys  (&measure[n], average, secfilt, field->magClass);
     222                break;
     223              }
     224              break;
    228225            case MAG_LEVEL_REL:
     226              // find an appropriate measure (if one exists)
     227              for (n = 0; n < average->Nmeasure; n++) {
     228                if (field->photcode->code != measure[n].photcode) continue;
     229                value.Flt = PhotRel (&measure[n], average, secfilt, field->magClass);
     230                break;
     231              }
     232              break;
    229233            case MAG_LEVEL_CAL:
    230234            case MAG_LEVEL_NONE:
     
    243247            case MAG_LEVEL_SYS:
    244248            case MAG_LEVEL_REL:
     249              // find an appropriate measure (if one exists)
     250              for (n = 0; n < average->Nmeasure; n++) {
     251                if (field->photcode->code != measure[n].photcode) continue;
     252                value.Flt = PhotErr (&measure[n], field->magClass);
     253                break;
     254              }
     255              break;
    245256            case MAG_LEVEL_CAL:
    246257            case MAG_LEVEL_NONE:
     
    259270              break;
    260271            case MAG_LEVEL_INST:
     272              // find an appropriate measure (if one exists)
     273              for (n = 0; n < average->Nmeasure; n++) {
     274                if (field->photcode->code != measure[n].photcode) continue;
     275                value.Flt = PhotFluxInst (&measure[n], field->magClass);
     276                break;
     277              }
     278              break;
    261279            case MAG_LEVEL_CAT:
     280              // find an appropriate measure (if one exists)
     281              for (n = 0; n < average->Nmeasure; n++) {
     282                if (field->photcode->code != measure[n].photcode) continue;
     283                value.Flt = PhotFluxCat (&measure[n], field->magClass);
     284                break;
     285              }
     286              break;
    262287            case MAG_LEVEL_SYS:
     288              // find an appropriate measure (if one exists)
     289              for (n = 0; n < average->Nmeasure; n++) {
     290                if (field->photcode->code != measure[n].photcode) continue;
     291                value.Flt = PhotFluxSys (&measure[n], average, secfilt, field->magClass);
     292                break;
     293              }
     294              break;
    263295            case MAG_LEVEL_REL:
     296              // find an appropriate measure (if one exists)
     297              for (n = 0; n < average->Nmeasure; n++) {
     298                if (field->photcode->code != measure[n].photcode) continue;
     299                value.Flt = PhotFluxRel (&measure[n], average, secfilt, field->magClass);
     300                break;
     301              }
     302              break;
    264303            case MAG_LEVEL_CAL:
    265304            case MAG_LEVEL_NONE:
     
    278317            case MAG_LEVEL_SYS:
    279318            case MAG_LEVEL_REL:
     319              // find an appropriate measure (if one exists)
     320              for (n = 0; n < average->Nmeasure; n++) {
     321                if (field->photcode->code != measure[n].photcode) continue;
     322                value.Flt = PhotFluxInstErr (&measure[n], field->magClass);
     323                break;
     324              }
     325              break;
    280326            case MAG_LEVEL_CAL:
    281327            case MAG_LEVEL_NONE:
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r37871 r38062  
    573573    case MEAS_XOFF_DCR: { value.Flt = measure[0].XoffDCR; break; }
    574574    case MEAS_YOFF_DCR: { value.Flt = measure[0].YoffDCR; break; }
     575    case MEAS_XOFF_CAM: { value.Flt = measure[0].XoffCAM; break; }
     576    case MEAS_YOFF_CAM: { value.Flt = measure[0].YoffCAM; break; }
    575577    case MEAS_ROFF_GAL: { value.Flt = measure[0].RoffGAL; break; }
    576578    case MEAS_DOFF_GAL: { value.Flt = measure[0].DoffGAL; break; }
  • trunk/Ohana/src/libdvo/src/dbFields.c

    r37871 r38062  
    480480  if (!strcasecmp (fieldName, "XOFF_DCR"))       ESCAPE (MEAS_XOFF_DCR,       OPIHI_FLT);
    481481  if (!strcasecmp (fieldName, "YOFF_DCR"))       ESCAPE (MEAS_YOFF_DCR,       OPIHI_FLT);
     482  if (!strcasecmp (fieldName, "XOFF_CAM"))       ESCAPE (MEAS_XOFF_CAM,       OPIHI_FLT);
     483  if (!strcasecmp (fieldName, "YOFF_CAM"))       ESCAPE (MEAS_YOFF_CAM,       OPIHI_FLT);
    482484  if (!strcasecmp (fieldName, "ROFF_GAL"))       ESCAPE (MEAS_ROFF_GAL,       OPIHI_FLT);
    483485  if (!strcasecmp (fieldName, "DOFF_GAL"))       ESCAPE (MEAS_DOFF_GAL,       OPIHI_FLT);
  • trunk/Ohana/src/libdvo/src/dvo_catalog.c

    r37995 r38062  
    273273 measure->XoffDCR   = NAN;
    274274 measure->YoffDCR   = NAN;
     275 measure->XoffCAM   = NAN;
     276 measure->YoffCAM   = NAN;
    275277 measure->RoffGAL   = NAN;
    276278 measure->DoffGAL   = NAN;
  • trunk/Ohana/src/libdvo/src/dvo_convert.c

    r37995 r38062  
    204204    free (tmpMeasure);
    205205    *format = DVO_FORMAT_PS1_V4;
     206    return (measure);
     207  }
     208
     209  // block to convert PV1_V5_0 tables (PS1_V5 made before the XoffCAM,YoffCAM addition)
     210  if (!strcmp (extname, "DVO_MEASURE_PS1_V5") && (ftable[0].header[0].Naxis[0] == 232)) {
     211    fprintf (stderr, "reading alt PS1_V5 format\n");
     212    Measure_PS1_V5alt *tmpMeasure;
     213    tmpMeasure = gfits_table_get_Measure_PS1_V5alt (ftable, Nmeasure, NULL);
     214    if (!tmpMeasure) {
     215      fprintf (stderr, "ERROR: failed to read measures\n");
     216      exit (2);
     217    }
     218    myAssert (average, "conversion to internal needs average table");
     219    measure = Measure_PS1_V5alt_ToInternal (average, tmpMeasure, *Nmeasure);
     220    free (tmpMeasure);
     221    *format = DVO_FORMAT_PS1_V5;
    206222    return (measure);
    207223  }
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c

    r37995 r38062  
    44
    55Measure *Measure_PS1_V5_ToInternal (Average *ave, Measure_PS1_V5 *in, off_t Nvalues) {
     6
     7  off_t i;
     8  Measure *out;
     9
     10  ALLOCATE_ZERO (out, Measure, Nvalues);
     11
     12  for (i = 0; i < Nvalues; i++) {
     13    dvo_measure_init (&out[i]);
     14
     15    out[i].R          = in[i].R;
     16    out[i].D          = in[i].D;
     17    out[i].M          = in[i].M;
     18    out[i].dM         = in[i].dM;
     19    out[i].Map        = in[i].Map;
     20    out[i].dMap       = in[i].dMap;
     21    out[i].Mkron      = in[i].Mkron;
     22    out[i].dMkron     = in[i].dMkron;
     23    out[i].Mcal       = in[i].Mcal;
     24    out[i].dMcal      = in[i].dMcal;
     25    out[i].dt         = in[i].dt;
     26    out[i].FluxPSF    = in[i].FluxPSF;
     27    out[i].dFluxPSF   = in[i].dFluxPSF;
     28    out[i].FluxKron   = in[i].FluxKron;
     29    out[i].dFluxKron  = in[i].dFluxKron;
     30    out[i].FluxAp     = in[i].FluxAp;
     31    out[i].dFluxAp    = in[i].dFluxAp;
     32    out[i].airmass    = in[i].airmass;
     33    out[i].az         = in[i].az;
     34    out[i].Xccd       = in[i].Xccd;
     35    out[i].Yccd       = in[i].Yccd;
     36    out[i].Xfix       = in[i].Xfix;
     37    out[i].Yfix       = in[i].Yfix;
     38    out[i].XoffKH     = in[i].XoffKH;
     39    out[i].YoffKH     = in[i].YoffKH;
     40    out[i].XoffDCR    = in[i].XoffDCR;
     41    out[i].YoffDCR    = in[i].YoffDCR;
     42    out[i].XoffCAM    = in[i].XoffCAM;
     43    out[i].YoffCAM    = in[i].YoffCAM;
     44    out[i].RoffGAL    = in[i].RoffGAL;
     45    out[i].DoffGAL    = in[i].DoffGAL;
     46    out[i].Sky        = in[i].Sky;
     47    out[i].dSky       = in[i].dSky;
     48    out[i].t          = in[i].t;
     49    out[i].averef     = in[i].averef;
     50    out[i].detID      = in[i].detID;
     51    out[i].objID      = in[i].objID;
     52    out[i].catID      = in[i].catID;
     53    out[i].extID      = in[i].extID;
     54    out[i].imageID    = in[i].imageID;
     55    out[i].psfQF      = in[i].psfQF;
     56    out[i].psfQFperf  = in[i].psfQFperf;
     57    out[i].psfChisq   = in[i].psfChisq;
     58    out[i].psfNdof    = in[i].psfNdof;
     59    out[i].psfNpix    = in[i].psfNpix;
     60    out[i].extNsigma  = in[i].extNsigma;
     61    out[i].FWx        = in[i].FWx;
     62    out[i].FWy        = in[i].FWy;
     63    out[i].theta      = in[i].theta;
     64    out[i].Mxx        = in[i].Mxx;
     65    out[i].Mxy        = in[i].Mxy;
     66    out[i].Myy        = in[i].Myy;
     67    out[i].t_msec     = in[i].t_msec;
     68    out[i].photcode   = in[i].photcode;
     69    out[i].dXccd      = in[i].dXccd;
     70    out[i].dYccd      = in[i].dYccd;
     71    out[i].dRsys      = in[i].dRsys;
     72    out[i].posangle   = in[i].posangle;
     73    out[i].pltscale   = in[i].pltscale;
     74    out[i].dbFlags    = in[i].dbFlags;
     75    out[i].photFlags  = in[i].photFlags;
     76    out[i].photFlags2 = in[i].photFlags2;
     77  }
     78  return (out);
     79}
     80
     81Measure_PS1_V5 *MeasureInternalTo_PS1_V5 (Average *ave, Measure *in, off_t Nvalues) {
     82
     83  off_t i;
     84  Measure_PS1_V5 *out;
     85
     86  ALLOCATE_ZERO (out, Measure_PS1_V5, Nvalues);
     87
     88  for (i = 0; i < Nvalues; i++) {
     89    out[i].R          = in[i].R;
     90    out[i].D          = in[i].D;
     91    out[i].M          = in[i].M;
     92    out[i].dM         = in[i].dM;
     93    out[i].Map        = in[i].Map;
     94    out[i].dMap       = in[i].dMap;
     95    out[i].Mkron      = in[i].Mkron;
     96    out[i].dMkron     = in[i].dMkron;
     97    out[i].Mcal       = in[i].Mcal;
     98    out[i].dMcal      = in[i].dMcal;
     99    out[i].dt         = in[i].dt;
     100    out[i].FluxPSF    = in[i].FluxPSF;
     101    out[i].dFluxPSF   = in[i].dFluxPSF;
     102    out[i].FluxKron   = in[i].FluxKron;
     103    out[i].dFluxKron  = in[i].dFluxKron;
     104    out[i].FluxAp     = in[i].FluxAp;
     105    out[i].dFluxAp    = in[i].dFluxAp;
     106    out[i].airmass    = in[i].airmass;
     107    out[i].az         = in[i].az;
     108    out[i].Xccd       = in[i].Xccd;
     109    out[i].Yccd       = in[i].Yccd;
     110    out[i].Xfix       = in[i].Xfix;
     111    out[i].Yfix       = in[i].Yfix;
     112    out[i].XoffKH     = in[i].XoffKH;
     113    out[i].YoffKH     = in[i].YoffKH;
     114    out[i].XoffDCR    = in[i].XoffDCR;
     115    out[i].YoffDCR    = in[i].YoffDCR;
     116    out[i].XoffCAM    = in[i].XoffCAM;
     117    out[i].YoffCAM    = in[i].YoffCAM;
     118    out[i].RoffGAL    = in[i].RoffGAL;
     119    out[i].DoffGAL    = in[i].DoffGAL;
     120    out[i].Sky        = in[i].Sky;
     121    out[i].dSky       = in[i].dSky;
     122    out[i].t          = in[i].t;
     123    out[i].averef     = in[i].averef;
     124    out[i].detID      = in[i].detID;
     125    out[i].objID      = in[i].objID;
     126    out[i].catID      = in[i].catID;
     127    out[i].extID      = in[i].extID;
     128    out[i].imageID    = in[i].imageID;
     129    out[i].psfQF      = in[i].psfQF;
     130    out[i].psfQFperf  = in[i].psfQFperf;
     131    out[i].psfChisq   = in[i].psfChisq;
     132    out[i].psfNdof    = in[i].psfNdof;
     133    out[i].psfNpix    = in[i].psfNpix;
     134    out[i].extNsigma  = in[i].extNsigma;
     135    out[i].FWx        = in[i].FWx;
     136    out[i].FWy        = in[i].FWy;
     137    out[i].theta      = in[i].theta;
     138    out[i].Mxx        = in[i].Mxx;
     139    out[i].Mxy        = in[i].Mxy;
     140    out[i].Myy        = in[i].Myy;
     141    out[i].t_msec     = in[i].t_msec;
     142    out[i].photcode   = in[i].photcode;
     143    out[i].dXccd      = in[i].dXccd;
     144    out[i].dYccd      = in[i].dYccd;
     145    out[i].dRsys      = in[i].dRsys;
     146    out[i].posangle   = in[i].posangle;
     147    out[i].pltscale   = in[i].pltscale;
     148    out[i].dbFlags    = in[i].dbFlags;
     149    out[i].photFlags  = in[i].photFlags;
     150    out[i].photFlags2 = in[i].photFlags2;
     151  }
     152  return (out);
     153}
     154
     155// 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
     156Average *Average_PS1_V5_ToInternal (Average_PS1_V5 *in, off_t Nvalues, SecFilt **primary) {
     157
     158  off_t i;
     159  Average *out;
     160
     161  ALLOCATE_ZERO (out, Average, Nvalues);
     162
     163  for (i = 0; i < Nvalues; i++) {
     164    dvo_average_init (&out[i]);
     165
     166    out[i].R             = in[i].R;     
     167    out[i].D             = in[i].D;     
     168    out[i].dR            = in[i].dR;
     169    out[i].dD            = in[i].dD;
     170    out[i].uR            = in[i].uR;
     171    out[i].uD            = in[i].uD;
     172    out[i].duR           = in[i].duR;
     173    out[i].duD           = in[i].duD;
     174    out[i].P             = in[i].P;
     175    out[i].dP            = in[i].dP;
     176
     177    out[i].Rstk          = in[i].Rstk;     
     178    out[i].Dstk          = in[i].Dstk;     
     179    out[i].dRstk         = in[i].dRstk;
     180    out[i].dDstk         = in[i].dDstk;
     181
     182    out[i].ChiSqAve      = in[i].ChiSqAve;     
     183    out[i].ChiSqPM       = in[i].ChiSqPM;     
     184    out[i].ChiSqPar      = in[i].ChiSqPar;     
     185    out[i].Tmean         = in[i].Tmean;     
     186    out[i].Trange        = in[i].Trange;     
     187
     188    out[i].psfQF         = in[i].psfQF;
     189    out[i].psfQFperf     = in[i].psfQFperf;
     190    out[i].stargal       = in[i].stargal;     
     191    out[i].Npos          = in[i].Npos;     
     192
     193    out[i].Nmeasure      = in[i].Nmeasure;     
     194    out[i].Nmissing      = in[i].Nmissing;     
     195    out[i].Nlensing      = in[i].Nlensing;     
     196    out[i].Nlensobj      = in[i].Nlensobj;     
     197    out[i].Nstarpar      = in[i].Nstarpar;     
     198    out[i].Nextend       = in[i].Nextend;     
     199
     200    out[i].measureOffset = in[i].measureOffset;
     201    out[i].missingOffset = in[i].missingOffset;
     202    out[i].lensingOffset = in[i].lensingOffset;
     203    out[i].lensobjOffset = in[i].lensobjOffset;
     204    out[i].starparOffset = in[i].starparOffset;
     205    out[i].extendOffset  = in[i].extendOffset;
     206
     207    out[i].refColorBlue  = in[i].refColorBlue;
     208    out[i].refColorRed   = in[i].refColorRed;
     209
     210    out[i].tessID        = in[i].tessID;
     211    out[i].skycellID     = in[i].skycellID;
     212    out[i].projectionID  = in[i].projectionID;
     213
     214    out[i].flags         = in[i].flags;   
     215    out[i].photFlagsUpper = in[i].photFlagsUpper;   
     216    out[i].photFlagsLower = in[i].photFlagsLower;   
     217    out[i].objID         = in[i].objID;
     218    out[i].catID         = in[i].catID;
     219    out[i].extID         = in[i].extID;
     220    out[i].extIDgc       = in[i].extIDgc;
     221  }
     222  return (out);
     223}
     224
     225// 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
     226Average_PS1_V5 *AverageInternalTo_PS1_V5 (Average *in, off_t Nvalues, SecFilt *primary) {
     227
     228  off_t i;
     229  Average_PS1_V5 *out;
     230
     231  ALLOCATE_ZERO (out, Average_PS1_V5, Nvalues);
     232
     233  for (i = 0; i < Nvalues; i++) {
     234    out[i].R              = in[i].R;     
     235    out[i].D              = in[i].D;     
     236    out[i].dR             = in[i].dR;
     237    out[i].dD             = in[i].dD;
     238    out[i].uR             = in[i].uR;
     239    out[i].uD             = in[i].uD;
     240    out[i].duR            = in[i].duR;
     241    out[i].duD            = in[i].duD;
     242    out[i].P              = in[i].P;
     243    out[i].dP             = in[i].dP;
     244                         
     245    out[i].Rstk           = in[i].Rstk;     
     246    out[i].Dstk           = in[i].Dstk;     
     247    out[i].dRstk          = in[i].dRstk;
     248    out[i].dDstk          = in[i].dDstk;
     249                         
     250    out[i].ChiSqAve       = in[i].ChiSqAve;     
     251    out[i].ChiSqPM        = in[i].ChiSqPM;     
     252    out[i].ChiSqPar       = in[i].ChiSqPar;     
     253    out[i].Tmean          = in[i].Tmean;     
     254    out[i].Trange         = in[i].Trange;     
     255                         
     256    out[i].psfQF          = in[i].psfQF;
     257    out[i].psfQFperf      = in[i].psfQFperf;
     258    out[i].stargal        = in[i].stargal;     
     259    out[i].Npos           = in[i].Npos;     
     260                         
     261    out[i].Nmeasure       = in[i].Nmeasure;     
     262    out[i].Nmissing       = in[i].Nmissing;     
     263    out[i].Nlensing       = in[i].Nlensing;     
     264    out[i].Nlensobj       = in[i].Nlensobj;     
     265    out[i].Nstarpar       = in[i].Nstarpar;     
     266    out[i].Nextend        = in[i].Nextend;     
     267                         
     268    out[i].measureOffset  = in[i].measureOffset;
     269    out[i].missingOffset  = in[i].missingOffset;
     270    out[i].lensingOffset  = in[i].lensingOffset;
     271    out[i].lensobjOffset  = in[i].lensobjOffset;
     272    out[i].starparOffset  = in[i].starparOffset;
     273    out[i].extendOffset   = in[i].extendOffset;
     274                         
     275    out[i].refColorBlue   = in[i].refColorBlue;
     276    out[i].refColorRed    = in[i].refColorRed;
     277                         
     278    out[i].tessID         = in[i].tessID;
     279    out[i].skycellID      = in[i].skycellID;
     280    out[i].projectionID   = in[i].projectionID;
     281                         
     282    out[i].flags          = in[i].flags;   
     283    out[i].photFlagsUpper = in[i].photFlagsUpper;   
     284    out[i].photFlagsLower = in[i].photFlagsLower;   
     285    out[i].objID          = in[i].objID;
     286    out[i].catID          = in[i].catID;
     287    out[i].extID          = in[i].extID;
     288    out[i].extIDgc        = in[i].extIDgc;
     289  }
     290  return (out);
     291}
     292
     293SecFilt *SecFilt_PS1_V5_ToInternal (SecFilt_PS1_V5 *in, off_t Nvalues) {
     294
     295  off_t i;
     296  SecFilt *out;
     297
     298  ALLOCATE_ZERO (out, SecFilt, Nvalues);
     299
     300  for (i = 0; i < Nvalues; i++) {
     301    dvo_secfilt_init (&out[i]);
     302
     303    out[i].M             = in[i].M;     
     304    out[i].dM            = in[i].dM;     
     305    out[i].Map           = in[i].Map;     
     306    out[i].dMap          = in[i].dMap;     
     307    out[i].sMap          = in[i].sMap;     
     308    out[i].Mkron         = in[i].Mkron;     
     309    out[i].dMkron        = in[i].dMkron;     
     310    out[i].sMkron        = in[i].sMkron;     
     311
     312    out[i].psfQfMax      = in[i].psfQfMax;     
     313    out[i].psfQfPerfMax  = in[i].psfQfPerfMax;     
     314
     315    out[i].Mstdev        = in[i].Mstdev;     
     316    out[i].Mmin          = in[i].Mmin;     
     317    out[i].Mmax          = in[i].Mmax;     
     318    out[i].Mchisq        = in[i].Mchisq;     
     319
     320    out[i].Ncode         = in[i].Ncode;
     321    out[i].Nused         = in[i].Nused;
     322    out[i].NusedKron     = in[i].NusedKron;
     323    out[i].NusedAp       = in[i].NusedAp;
     324
     325    out[i].flags         = in[i].flags;     
     326
     327    out[i].MpsfStk       = in[i].MpsfStk;
     328    out[i].FpsfStk       = in[i].FpsfStk;
     329    out[i].dFpsfStk      = in[i].dFpsfStk;
     330
     331    out[i].MkronStk      = in[i].MkronStk;
     332    out[i].FkronStk      = in[i].FkronStk;
     333    out[i].dFkronStk     = in[i].dFkronStk;
     334
     335    out[i].MapStk        = in[i].MapStk;
     336    out[i].FapStk        = in[i].FapStk;
     337    out[i].dFapStk       = in[i].dFapStk;
     338
     339    out[i].Nstack        = in[i].Nstack;     
     340    out[i].NstackDet     = in[i].NstackDet;     
     341
     342    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     343    out[i].stackBestOff  = in[i].stackBestOff;     
     344
     345    out[i].MpsfWrp       = in[i].MpsfWrp;
     346    out[i].FpsfWrp       = in[i].FpsfWrp;
     347    out[i].dFpsfWrp      = in[i].dFpsfWrp;
     348    out[i].sFpsfWrp      = in[i].sFpsfWrp;
     349
     350    out[i].MkronWrp      = in[i].MkronWrp;
     351    out[i].FkronWrp      = in[i].FkronWrp;
     352    out[i].dFkronWrp     = in[i].dFkronWrp;
     353    out[i].sFkronWrp     = in[i].sFkronWrp;
     354
     355    out[i].MapWrp        = in[i].MapWrp;
     356    out[i].FapWrp        = in[i].FapWrp;
     357    out[i].dFapWrp       = in[i].dFapWrp;
     358    out[i].sFapWrp       = in[i].sFapWrp;
     359
     360    out[i].NusedWrp      = in[i].NusedWrp;
     361    out[i].NusedKronWrp  = in[i].NusedKronWrp;
     362    out[i].NusedApWrp    = in[i].NusedApWrp;
     363
     364    out[i].Nwarp         = in[i].Nwarp;     
     365    out[i].NwarpGood     = in[i].NwarpGood;     
     366
     367    out[i].ubercalDist   = in[i].ubercalDist;     
     368  }
     369  return (out);
     370}
     371
     372SecFilt_PS1_V5 *SecFiltInternalTo_PS1_V5 (SecFilt *in, off_t Nvalues) {
     373
     374  off_t i;
     375  SecFilt_PS1_V5 *out;
     376
     377  ALLOCATE_ZERO (out, SecFilt_PS1_V5, Nvalues);
     378
     379  for (i = 0; i < Nvalues; i++) {
     380
     381    out[i].M             = in[i].M;     
     382    out[i].dM            = in[i].dM;     
     383    out[i].Map           = in[i].Map;     
     384    out[i].dMap          = in[i].dMap;     
     385    out[i].sMap          = in[i].sMap;     
     386    out[i].Mkron         = in[i].Mkron;     
     387    out[i].dMkron        = in[i].dMkron;     
     388    out[i].sMkron        = in[i].sMkron;     
     389
     390    out[i].psfQfMax      = in[i].psfQfMax;     
     391    out[i].psfQfPerfMax  = in[i].psfQfPerfMax;     
     392
     393    out[i].Mstdev        = in[i].Mstdev;     
     394    out[i].Mmin          = in[i].Mmin;     
     395    out[i].Mmax          = in[i].Mmax;     
     396    out[i].Mchisq        = in[i].Mchisq;     
     397
     398    out[i].Ncode         = in[i].Ncode;
     399    out[i].Nused         = in[i].Nused;
     400    out[i].NusedKron     = in[i].NusedKron;
     401    out[i].NusedAp       = in[i].NusedAp;
     402
     403    out[i].flags         = in[i].flags;     
     404
     405    out[i].MpsfStk       = in[i].MpsfStk;
     406    out[i].FpsfStk       = in[i].FpsfStk;
     407    out[i].dFpsfStk      = in[i].dFpsfStk;
     408
     409    out[i].MkronStk      = in[i].MkronStk;
     410    out[i].FkronStk      = in[i].FkronStk;
     411    out[i].dFkronStk     = in[i].dFkronStk;
     412
     413    out[i].MapStk        = in[i].MapStk;
     414    out[i].FapStk        = in[i].FapStk;
     415    out[i].dFapStk       = in[i].dFapStk;
     416
     417    out[i].Nstack        = in[i].Nstack;     
     418    out[i].NstackDet     = in[i].NstackDet;     
     419
     420    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     421    out[i].stackBestOff  = in[i].stackBestOff;     
     422
     423    out[i].MpsfWrp       = in[i].MpsfWrp;
     424    out[i].FpsfWrp       = in[i].FpsfWrp;
     425    out[i].dFpsfWrp      = in[i].dFpsfWrp;
     426    out[i].sFpsfWrp      = in[i].sFpsfWrp;
     427
     428    out[i].MkronWrp      = in[i].MkronWrp;
     429    out[i].FkronWrp      = in[i].FkronWrp;
     430    out[i].dFkronWrp     = in[i].dFkronWrp;
     431    out[i].sFkronWrp     = in[i].sFkronWrp;
     432
     433    out[i].MapWrp        = in[i].MapWrp;
     434    out[i].FapWrp        = in[i].FapWrp;
     435    out[i].dFapWrp       = in[i].dFapWrp;
     436    out[i].sFapWrp       = in[i].sFapWrp;
     437
     438    out[i].NusedWrp      = in[i].NusedWrp;
     439    out[i].NusedKronWrp  = in[i].NusedKronWrp;
     440    out[i].NusedApWrp    = in[i].NusedApWrp;
     441
     442    out[i].Nwarp         = in[i].Nwarp;     
     443    out[i].NwarpGood     = in[i].NwarpGood;     
     444
     445    out[i].ubercalDist   = in[i].ubercalDist;     
     446  }
     447  return (out);
     448}
     449
     450Lensing *Lensing_PS1_V5_R2_ToInternal (Lensing_PS1_V5_R2 *in, off_t Nvalues) {
     451
     452  off_t i;
     453  Lensing *out;
     454
     455  ALLOCATE_ZERO (out, Lensing, Nvalues);
     456
     457  for (i = 0; i < Nvalues; i++) {
     458    dvo_lensing_init (&out[i]);
     459
     460    out[i].X11_sm_obj  = in[i].X11_sm_obj;     
     461    out[i].X12_sm_obj  = in[i].X12_sm_obj;     
     462    out[i].X22_sm_obj  = in[i].X22_sm_obj;     
     463    out[i].E1_sm_obj   = in[i].E1_sm_obj;     
     464    out[i].E2_sm_obj   = in[i].E2_sm_obj;     
     465                                         
     466    out[i].X11_sh_obj  = in[i].X11_sh_obj;     
     467    out[i].X12_sh_obj  = in[i].X12_sh_obj;     
     468    out[i].X22_sh_obj  = in[i].X22_sh_obj;     
     469    out[i].E1_sh_obj   = in[i].E1_sh_obj;     
     470    out[i].E2_sh_obj   = in[i].E2_sh_obj;     
     471                                         
     472    out[i].X11_sm_psf  = in[i].X11_sm_psf;
     473    out[i].X12_sm_psf  = in[i].X12_sm_psf;
     474    out[i].X22_sm_psf  = in[i].X22_sm_psf;
     475    out[i].E1_sm_psf   = in[i].E1_sm_psf;
     476    out[i].E2_sm_psf   = in[i].E2_sm_psf;     
     477                                         
     478    out[i].X11_sh_psf  = in[i].X11_sh_psf;
     479    out[i].X12_sh_psf  = in[i].X12_sh_psf;
     480    out[i].X22_sh_psf  = in[i].X22_sh_psf;
     481    out[i].E1_sh_psf   = in[i].E1_sh_psf;
     482    out[i].E2_sh_psf   = in[i].E2_sh_psf;
     483
     484    out[i].E1_psf      = in[i].E1_psf;
     485    out[i].E2_psf      = in[i].E2_psf;
     486
     487    out[i].F_ApR5      = in[i].F_ApR5;
     488    out[i].dF_ApR5     = in[i].dF_ApR5;
     489    out[i].sF_ApR5     = in[i].sF_ApR5;
     490    out[i].fF_ApR5     = in[i].fF_ApR5;
     491                                   
     492    out[i].F_ApR6      = in[i].F_ApR6;
     493    out[i].dF_ApR6     = in[i].dF_ApR6;
     494    out[i].sF_ApR6     = in[i].sF_ApR6;
     495    out[i].fF_ApR6     = in[i].fF_ApR6;
     496                                   
     497    out[i].detID       = in[i].detID;
     498    out[i].objID       = in[i].objID;
     499    out[i].catID       = in[i].catID;
     500    out[i].averef      = in[i].averef;
     501
     502    out[i].imageID     = in[i].imageID;
     503  }
     504  return (out);
     505}
     506
     507Lensing_PS1_V5_R2 *LensingInternalTo_PS1_V5_R2 (Lensing *in, off_t Nvalues) {
     508
     509  off_t i;
     510  Lensing_PS1_V5_R2 *out;
     511
     512  ALLOCATE_ZERO (out, Lensing_PS1_V5, Nvalues);
     513
     514  for (i = 0; i < Nvalues; i++) {
     515
     516    out[i].X11_sm_obj  = in[i].X11_sm_obj;     
     517    out[i].X12_sm_obj  = in[i].X12_sm_obj;     
     518    out[i].X22_sm_obj  = in[i].X22_sm_obj;     
     519    out[i].E1_sm_obj   = in[i].E1_sm_obj;     
     520    out[i].E2_sm_obj   = in[i].E2_sm_obj;     
     521                                         
     522    out[i].X11_sh_obj  = in[i].X11_sh_obj;     
     523    out[i].X12_sh_obj  = in[i].X12_sh_obj;     
     524    out[i].X22_sh_obj  = in[i].X22_sh_obj;     
     525    out[i].E1_sh_obj   = in[i].E1_sh_obj;     
     526    out[i].E2_sh_obj   = in[i].E2_sh_obj;     
     527                                         
     528    out[i].X11_sm_psf  = in[i].X11_sm_psf;
     529    out[i].X12_sm_psf  = in[i].X12_sm_psf;
     530    out[i].X22_sm_psf  = in[i].X22_sm_psf;
     531    out[i].E1_sm_psf   = in[i].E1_sm_psf;
     532    out[i].E2_sm_psf   = in[i].E2_sm_psf;     
     533                                         
     534    out[i].X11_sh_psf  = in[i].X11_sh_psf;
     535    out[i].X12_sh_psf  = in[i].X12_sh_psf;
     536    out[i].X22_sh_psf  = in[i].X22_sh_psf;
     537    out[i].E1_sh_psf   = in[i].E1_sh_psf;
     538    out[i].E2_sh_psf   = in[i].E2_sh_psf;
     539
     540    out[i].E1_psf      = in[i].E1_psf;
     541    out[i].E2_psf      = in[i].E2_psf;
     542
     543    out[i].F_ApR5      = in[i].F_ApR5;
     544    out[i].dF_ApR5     = in[i].dF_ApR5;
     545    out[i].sF_ApR5     = in[i].sF_ApR5;
     546    out[i].fF_ApR5     = in[i].fF_ApR5;
     547                                   
     548    out[i].F_ApR6      = in[i].F_ApR6;
     549    out[i].dF_ApR6     = in[i].dF_ApR6;
     550    out[i].sF_ApR6     = in[i].sF_ApR6;
     551    out[i].fF_ApR6     = in[i].fF_ApR6;
     552                                   
     553    out[i].detID       = in[i].detID;
     554    out[i].objID       = in[i].objID;
     555    out[i].catID       = in[i].catID;
     556    out[i].averef      = in[i].averef;
     557
     558    out[i].imageID     = in[i].imageID;
     559  }
     560  return (out);
     561}
     562
     563Lensobj *Lensobj_PS1_V5_ToInternal (Lensobj_PS1_V5 *in, off_t Nvalues) {
     564
     565  off_t i;
     566  Lensobj *out;
     567
     568  ALLOCATE_ZERO (out, Lensobj, Nvalues);
     569
     570  for (i = 0; i < Nvalues; i++) {
     571    dvo_lensobj_init (&out[i], FALSE);
     572
     573    out[i].X11_sm_obj  = in[i].X11_sm_obj;     
     574    out[i].X12_sm_obj  = in[i].X12_sm_obj;     
     575    out[i].X22_sm_obj  = in[i].X22_sm_obj;     
     576    out[i].E1_sm_obj   = in[i].E1_sm_obj;     
     577    out[i].E2_sm_obj   = in[i].E2_sm_obj;     
     578                                         
     579    out[i].X11_sh_obj  = in[i].X11_sh_obj;     
     580    out[i].X12_sh_obj  = in[i].X12_sh_obj;     
     581    out[i].X22_sh_obj  = in[i].X22_sh_obj;     
     582    out[i].E1_sh_obj   = in[i].E1_sh_obj;     
     583    out[i].E2_sh_obj   = in[i].E2_sh_obj;     
     584                                         
     585    out[i].X11_sm_psf  = in[i].X11_sm_psf;
     586    out[i].X12_sm_psf  = in[i].X12_sm_psf;
     587    out[i].X22_sm_psf  = in[i].X22_sm_psf;
     588    out[i].E1_sm_psf   = in[i].E1_sm_psf;
     589    out[i].E2_sm_psf   = in[i].E2_sm_psf;     
     590                                         
     591    out[i].X11_sh_psf  = in[i].X11_sh_psf;
     592    out[i].X12_sh_psf  = in[i].X12_sh_psf;
     593    out[i].X22_sh_psf  = in[i].X22_sh_psf;
     594    out[i].E1_sh_psf   = in[i].E1_sh_psf;
     595    out[i].E2_sh_psf   = in[i].E2_sh_psf;
     596
     597    out[i].F_ApR5      = in[i].F_ApR5;
     598    out[i].dF_ApR5     = in[i].dF_ApR5;
     599    out[i].sF_ApR5     = in[i].sF_ApR5;
     600    out[i].fF_ApR5     = in[i].fF_ApR5;
     601                                   
     602    out[i].F_ApR6      = in[i].F_ApR6;
     603    out[i].dF_ApR6     = in[i].dF_ApR6;
     604    out[i].sF_ApR6     = in[i].sF_ApR6;
     605    out[i].fF_ApR6     = in[i].fF_ApR6;
     606                                   
     607    out[i].gamma       = in[i].gamma;
     608    out[i].E1          = in[i].E1;
     609    out[i].E2          = in[i].E2;
     610
     611    out[i].objID       = in[i].objID;
     612    out[i].catID       = in[i].catID;
     613
     614    out[i].photcode    = in[i].photcode;
     615    out[i].Nmeas       = in[i].Nmeas;
     616  }
     617  return (out);
     618}
     619
     620Lensobj_PS1_V5 *LensobjInternalTo_PS1_V5 (Lensobj *in, off_t Nvalues) {
     621
     622  off_t i;
     623  Lensobj_PS1_V5 *out;
     624
     625  ALLOCATE_ZERO (out, Lensobj_PS1_V5, Nvalues);
     626
     627  for (i = 0; i < Nvalues; i++) {
     628
     629    out[i].X11_sm_obj  = in[i].X11_sm_obj;     
     630    out[i].X12_sm_obj  = in[i].X12_sm_obj;     
     631    out[i].X22_sm_obj  = in[i].X22_sm_obj;     
     632    out[i].E1_sm_obj   = in[i].E1_sm_obj;     
     633    out[i].E2_sm_obj   = in[i].E2_sm_obj;     
     634                                         
     635    out[i].X11_sh_obj  = in[i].X11_sh_obj;     
     636    out[i].X12_sh_obj  = in[i].X12_sh_obj;     
     637    out[i].X22_sh_obj  = in[i].X22_sh_obj;     
     638    out[i].E1_sh_obj   = in[i].E1_sh_obj;     
     639    out[i].E2_sh_obj   = in[i].E2_sh_obj;     
     640                                         
     641    out[i].X11_sm_psf  = in[i].X11_sm_psf;
     642    out[i].X12_sm_psf  = in[i].X12_sm_psf;
     643    out[i].X22_sm_psf  = in[i].X22_sm_psf;
     644    out[i].E1_sm_psf   = in[i].E1_sm_psf;
     645    out[i].E2_sm_psf   = in[i].E2_sm_psf;     
     646                                         
     647    out[i].X11_sh_psf  = in[i].X11_sh_psf;
     648    out[i].X12_sh_psf  = in[i].X12_sh_psf;
     649    out[i].X22_sh_psf  = in[i].X22_sh_psf;
     650    out[i].E1_sh_psf   = in[i].E1_sh_psf;
     651    out[i].E2_sh_psf   = in[i].E2_sh_psf;
     652
     653    out[i].F_ApR5      = in[i].F_ApR5;
     654    out[i].dF_ApR5     = in[i].dF_ApR5;
     655    out[i].sF_ApR5     = in[i].sF_ApR5;
     656    out[i].fF_ApR5     = in[i].fF_ApR5;
     657                                   
     658    out[i].F_ApR6      = in[i].F_ApR6;
     659    out[i].dF_ApR6     = in[i].dF_ApR6;
     660    out[i].sF_ApR6     = in[i].sF_ApR6;
     661    out[i].fF_ApR6     = in[i].fF_ApR6;
     662                                   
     663    out[i].gamma       = in[i].gamma;
     664    out[i].E1          = in[i].E1;
     665    out[i].E2          = in[i].E2;
     666
     667    out[i].objID       = in[i].objID;
     668    out[i].catID       = in[i].catID;
     669
     670    out[i].photcode    = in[i].photcode;
     671    out[i].Nmeas       = in[i].Nmeas;
     672  }
     673  return (out);
     674}
     675
     676StarPar *StarPar_PS1_V5_ToInternal (StarPar_PS1_V5 *in, off_t Nvalues) {
     677
     678  off_t i;
     679  StarPar *out;
     680
     681  ALLOCATE_ZERO (out, StarPar, Nvalues);
     682
     683  for (i = 0; i < Nvalues; i++) {
     684    dvo_starpar_init (&out[i]);
     685
     686    out[i].R         = in[i].R;     
     687    out[i].D         = in[i].D;     
     688    out[i].galLat    = in[i].galLat;     
     689    out[i].galLon    = in[i].galLon;     
     690
     691    out[i].Ebv       = in[i].Ebv     ;     
     692    out[i].dEbv      = in[i].dEbv    ;     
     693    out[i].DistMag   = in[i].DistMag ;     
     694    out[i].dDistMag  = in[i].dDistMag;     
     695    out[i].M_r       = in[i].M_r     ;     
     696    out[i].dM_r      = in[i].dM_r    ;     
     697    out[i].FeH       = in[i].FeH     ;     
     698    out[i].dFeH      = in[i].dFeH    ;     
     699    out[i].uRA       = in[i].uRA     ;     
     700    out[i].uDEC      = in[i].uDEC    ;     
     701
     702    out[i].averef  = in[i].averef;
     703    out[i].objID   = in[i].objID ;
     704    out[i].catID   = in[i].catID ;
     705  }
     706  return (out);
     707}
     708
     709StarPar_PS1_V5 *StarParInternalTo_PS1_V5 (StarPar *in, off_t Nvalues) {
     710
     711  off_t i;
     712  StarPar_PS1_V5 *out;
     713
     714  ALLOCATE_ZERO (out, StarPar_PS1_V5, Nvalues);
     715
     716  for (i = 0; i < Nvalues; i++) {
     717
     718    out[i].R         = in[i].R;     
     719    out[i].D         = in[i].D;     
     720    out[i].galLat    = in[i].galLat;     
     721    out[i].galLon    = in[i].galLon;     
     722
     723    out[i].Ebv       = in[i].Ebv     ;     
     724    out[i].dEbv      = in[i].dEbv    ;     
     725    out[i].DistMag   = in[i].DistMag ;     
     726    out[i].dDistMag  = in[i].dDistMag;     
     727    out[i].M_r       = in[i].M_r     ;     
     728    out[i].dM_r      = in[i].dM_r    ;     
     729    out[i].FeH       = in[i].FeH     ;     
     730    out[i].dFeH      = in[i].dFeH    ;     
     731    out[i].uRA       = in[i].uRA     ;     
     732    out[i].uDEC      = in[i].uDEC    ;     
     733
     734    out[i].averef  = in[i].averef;
     735    out[i].objID   = in[i].objID ;
     736    out[i].catID   = in[i].catID ;
     737  }
     738  return (out);
     739}
     740
     741# define RAW_IMAGE_NAME_LEN 117
     742
     743Image *Image_PS1_V5_ToInternal (Image_PS1_V5 *in, off_t Nvalues, off_t Nalloc) {
     744
     745  off_t i;
     746  Image *out;
     747
     748  char *buffer;
     749  ALLOCATE_ZERO (buffer, char, Nalloc);
     750  out = (Image *) buffer;
     751  // ALLOCATE_ZERO (out, Image, Nvalues);
     752
     753  for (i = 0; i < Nvalues; i++) {
     754    // this is only safe because the initial 120 bytes in Coords match CoordsDisk
     755    memcpy (&out[i].coords, &in[i].coords, sizeof(CoordsDisk));
     756    out[i].coords.mosaic   = NULL;
     757    out[i].coords.offsetMap = NULL;
     758
     759    // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
     760    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
     761    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
     762
     763    out[i].tzero            = in[i].tzero;
     764    out[i].nstar            = in[i].nstar;
     765    out[i].secz             = in[i].secz;
     766    out[i].NX               = in[i].NX;
     767    out[i].NY               = in[i].NY;
     768    out[i].apmifit          = in[i].apmifit;
     769    out[i].dapmifit         = in[i].dapmifit;
     770    out[i].Mcal             = in[i].Mcal;
     771    out[i].dMcal            = in[i].dMcal;
     772    out[i].Xm               = in[i].Xm;
     773    out[i].photcode         = in[i].photcode;
     774    out[i].exptime          = in[i].exptime;
     775    out[i].sidtime          = in[i].sidtime;
     776    out[i].latitude         = in[i].latitude;
     777
     778    out[i].RAo              = in[i].RAo;
     779    out[i].DECo             = in[i].DECo;
     780    out[i].Radius           = in[i].Radius;
     781    out[i].refColorBlue     = in[i].refColorBlue;
     782    out[i].refColorRed      = in[i].refColorRed;
     783
     784    out[i].detection_limit  = in[i].detection_limit;
     785    out[i].saturation_limit = in[i].saturation_limit;
     786    out[i].cerror           = in[i].cerror;
     787    out[i].fwhm_x           = in[i].fwhm_x;
     788    out[i].fwhm_y           = in[i].fwhm_y;
     789    out[i].trate            = in[i].trate;
     790    out[i].ccdnum           = in[i].ccdnum;
     791    out[i].flags            = in[i].flags;
     792    out[i].imageID          = in[i].imageID;
     793    out[i].parentID         = in[i].parentID;
     794    out[i].externID         = in[i].externID;
     795    out[i].sourceID         = in[i].sourceID;
     796
     797    // as of 2011.02.03, the old Mx,My,..., Mxxxx,Myyyy have been deprecated and replaced
     798    // with the following.  (no real databases used those values -- see
     799    // libdvo/doc/dvo-images.txt)
     800    out[i].nLinkAstrom      = in[i].nLinkAstrom;
     801    out[i].nLinkPhotom      = in[i].nLinkPhotom;
     802    out[i].ubercalDist      = in[i].ubercalDist;
     803    out[i].dXpixSys         = in[i].dXpixSys;
     804    out[i].dYpixSys         = in[i].dYpixSys;
     805    out[i].dMagSys          = in[i].dMagSys;
     806    out[i].nFitAstrom       = in[i].nFitAstrom;
     807    out[i].nFitPhotom       = in[i].nFitPhotom;
     808    out[i].photom_map_id    = in[i].photom_map_id;
     809    out[i].astrom_map_id    = in[i].astrom_map_id;
     810  }
     811  return (out);
     812}
     813
     814Image_PS1_V5 *ImageInternalTo_PS1_V5 (Image *in, off_t Nvalues) {
     815
     816  off_t i;
     817  Image_PS1_V5 *out;
     818
     819  ALLOCATE_ZERO (out, Image_PS1_V5, Nvalues);
     820
     821  for (i = 0; i < Nvalues; i++) {
     822    // this is only save because the initial 120 bytes in Coords match CoordsDisk
     823    memcpy (&out[i].coords, &in[i].coords, sizeof(CoordsDisk));
     824
     825    // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
     826    strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
     827    out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
     828
     829    out[i].tzero            = in[i].tzero;
     830    out[i].nstar            = in[i].nstar;
     831    out[i].secz             = in[i].secz;
     832    out[i].NX               = in[i].NX;
     833    out[i].NY               = in[i].NY;
     834    out[i].apmifit          = in[i].apmifit;
     835    out[i].dapmifit         = in[i].dapmifit;
     836    out[i].Mcal             = in[i].Mcal;
     837    out[i].dMcal            = in[i].dMcal;
     838    out[i].Xm               = in[i].Xm;
     839    out[i].photcode         = in[i].photcode;
     840    out[i].exptime          = in[i].exptime;
     841    out[i].sidtime          = in[i].sidtime;
     842    out[i].latitude         = in[i].latitude;
     843
     844    out[i].RAo              = in[i].RAo;
     845    out[i].DECo             = in[i].DECo;
     846    out[i].Radius           = in[i].Radius;
     847    out[i].refColorBlue     = in[i].refColorBlue;
     848    out[i].refColorRed      = in[i].refColorRed;
     849
     850    out[i].detection_limit  = in[i].detection_limit;
     851    out[i].saturation_limit = in[i].saturation_limit;
     852    out[i].cerror           = in[i].cerror;
     853    out[i].fwhm_x           = in[i].fwhm_x;
     854    out[i].fwhm_y           = in[i].fwhm_y;
     855    out[i].trate            = in[i].trate;
     856    out[i].ccdnum           = in[i].ccdnum;
     857    out[i].flags            = in[i].flags;
     858    out[i].imageID          = in[i].imageID;
     859    out[i].parentID         = in[i].parentID;
     860    out[i].externID         = in[i].externID;
     861    out[i].sourceID         = in[i].sourceID;
     862
     863    // as of 2011.02.03, the old Mx,My,..., Mxxxx,Myyyy have been deprecated and replaced
     864    // with the following.  (no real databases used those values -- see
     865    // libdvo/doc/dvo-images.txt)
     866    out[i].nLinkAstrom      = in[i].nLinkAstrom;
     867    out[i].nLinkPhotom      = in[i].nLinkPhotom;
     868    out[i].ubercalDist      = in[i].ubercalDist;
     869    out[i].dXpixSys         = in[i].dXpixSys;
     870    out[i].dYpixSys         = in[i].dYpixSys;
     871    out[i].dMagSys          = in[i].dMagSys;
     872    out[i].nFitAstrom       = in[i].nFitAstrom;
     873    out[i].nFitPhotom       = in[i].nFitPhotom;
     874    out[i].photom_map_id    = in[i].photom_map_id;
     875    out[i].astrom_map_id    = in[i].astrom_map_id;
     876  }
     877  return (out);
     878}
     879
     880PhotCode *PhotCode_PS1_V5_To_Internal (PhotCode_PS1_V5 *in, off_t Nvalues) {
     881
     882  off_t i;
     883  PhotCode *out;
     884
     885  ALLOCATE_ZERO (out, PhotCode, Nvalues);
     886
     887  for (i = 0; i < Nvalues; i++) {
     888    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
     889    out[i].name[31] = 0; // force termination
     890
     891    out[i].code  = in[i].code;         
     892    out[i].type  = in[i].type;         
     893    out[i].C     = in[i].C;           
     894    out[i].dC    = in[i].dC;           
     895    out[i].dX    = in[i].dX;           
     896    out[i].K     = in[i].K;           
     897    out[i].c1    = in[i].c1;           
     898    out[i].c2    = in[i].c2;           
     899    out[i].equiv = in[i].equiv;       
     900    out[i].Nc    = in[i].Nc;           
     901    memcpy (out[i].X, in[i].X, 4*sizeof(float));           
     902
     903    out[i].astromErrSys      = in[i].astromErrSys;
     904    out[i].astromErrScale    = in[i].astromErrScale;
     905    out[i].astromErrMagScale = in[i].astromErrMagScale;
     906    out[i].photomErrSys      = in[i].photomErrSys;
     907
     908    out[i].photomPoorMask      = in[i].photomPoorMask;
     909    out[i].photomBadMask       = in[i].photomBadMask;
     910    out[i].astromPoorMask      = in[i].astromPoorMask;
     911    out[i].astromBadMask       = in[i].astromBadMask;
     912  }
     913  return (out);
     914}
     915
     916PhotCode_PS1_V5 *PhotCode_Internal_To_PS1_V5 (PhotCode *in, off_t Nvalues) {
     917
     918  off_t i;
     919  PhotCode_PS1_V5 *out;
     920
     921  ALLOCATE_ZERO (out, PhotCode_PS1_V5, Nvalues);
     922
     923  for (i = 0; i < Nvalues; i++) {
     924    strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
     925    out[i].name[31] = 0; // force termination
     926
     927    out[i].code  = in[i].code;         
     928    out[i].type  = in[i].type;         
     929    out[i].C     = in[i].C;           
     930    out[i].dC    = in[i].dC;           
     931    out[i].dX    = in[i].dX;           
     932    out[i].K     = in[i].K;           
     933    out[i].c1    = in[i].c1;           
     934    out[i].c2    = in[i].c2;           
     935    out[i].equiv = in[i].equiv;       
     936    out[i].Nc    = in[i].Nc;           
     937    memcpy (out[i].X, in[i].X, 4*sizeof(float));           
     938
     939    out[i].astromErrSys      = in[i].astromErrSys;
     940    out[i].astromErrScale    = in[i].astromErrScale;
     941    out[i].astromErrMagScale = in[i].astromErrMagScale;
     942    out[i].photomErrSys      = in[i].photomErrSys;
     943
     944    out[i].photomPoorMask      = in[i].photomPoorMask;
     945    out[i].photomBadMask       = in[i].photomBadMask;
     946    out[i].astromPoorMask      = in[i].astromPoorMask;
     947    out[i].astromBadMask       = in[i].astromBadMask;
     948  }
     949  return (out);
     950}
     951
     952/*********************** old / alternate version **********************/
     953
     954// 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
     955Average *Average_PS1_V5alt_ToInternal (Average_PS1_V5alt *in, off_t Nvalues) {
     956
     957  off_t i;
     958  Average *out;
     959
     960  ALLOCATE_ZERO (out, Average, Nvalues);
     961
     962  for (i = 0; i < Nvalues; i++) {
     963    dvo_average_init (&out[i]);
     964
     965    out[i].R              = in[i].R;     
     966    out[i].D              = in[i].D;     
     967    out[i].dR             = in[i].dR;
     968    out[i].dD             = in[i].dD;
     969    out[i].uR             = in[i].uR;
     970    out[i].uD             = in[i].uD;
     971    out[i].duR            = in[i].duR;
     972    out[i].duD            = in[i].duD;
     973    out[i].P              = in[i].P;
     974    out[i].dP             = in[i].dP;
     975                         
     976    out[i].Rstk           = in[i].Rstk;     
     977    out[i].Dstk           = in[i].Dstk;     
     978    out[i].dRstk          = in[i].dRstk;
     979    out[i].dDstk          = in[i].dDstk;
     980                         
     981    out[i].ChiSqAve       = in[i].ChiSqAve;     
     982    out[i].ChiSqPM        = in[i].ChiSqPM;     
     983    out[i].ChiSqPar       = in[i].ChiSqPar;     
     984    out[i].Tmean          = in[i].Tmean;     
     985    out[i].Trange         = in[i].Trange;     
     986                         
     987    out[i].psfQF          = in[i].psfQF;
     988    out[i].psfQFperf      = in[i].psfQFperf;
     989    out[i].stargal        = in[i].stargal;     
     990    out[i].Npos           = in[i].Npos;     
     991                         
     992    out[i].Nmeasure       = in[i].Nmeasure;     
     993    out[i].Nmissing       = in[i].Nmissing;     
     994    out[i].Nlensing       = in[i].Nlensing;     
     995    out[i].Nlensobj       = in[i].Nlensobj;     
     996    out[i].Nextend        = in[i].Nextend;     
     997                         
     998    out[i].measureOffset  = in[i].measureOffset;
     999    out[i].missingOffset  = in[i].missingOffset;
     1000    out[i].lensingOffset  = in[i].lensingOffset;
     1001    out[i].lensobjOffset  = in[i].lensobjOffset;
     1002    out[i].starparOffset  = in[i].starparOffset;
     1003    out[i].extendOffset   = in[i].extendOffset;
     1004                         
     1005    out[i].refColorBlue   = in[i].refColorBlue;
     1006    out[i].refColorRed    = in[i].refColorRed;
     1007                         
     1008    out[i].flags          = in[i].flags;   
     1009    out[i].photFlagsUpper = in[i].photFlagsUpper;   
     1010    out[i].photFlagsLower = in[i].photFlagsLower;   
     1011    out[i].objID          = in[i].objID;
     1012    out[i].catID          = in[i].catID;
     1013    out[i].extID          = in[i].extID;
     1014    out[i].extIDgc        = in[i].extIDgc;
     1015  }
     1016  return (out);
     1017}
     1018
     1019int gfits_convert_Average_PS1_V5alt (Average_PS1_V5alt *data, off_t size, off_t nitems) {
     1020
     1021  off_t i;
     1022  unsigned char *byte, tmp;
     1023
     1024  if (size != 184) {
     1025    fprintf (stderr, "WARNING: mismatch in data types Average_PS1_V5alt: "OFF_T_FMT" vs %d\n",  size,  184);
     1026    return (FALSE);
     1027  }
     1028
     1029  /* provide initial values to avoid compiler warnings for non-BYTE_SWAP arch */
     1030  i = tmp = 0;
     1031  byte = NULL;
     1032
     1033# ifdef BYTE_SWAP
     1034  byte = (unsigned char *) data;
     1035  for (i = 0; i < nitems; i++, byte += 184) {
     1036    /** BYTE SWAP **/
     1037    SWAP_DBLE (0); // RA
     1038    SWAP_DBLE (8); // DEC
     1039    SWAP_WORD (16); // RA_ERR
     1040    SWAP_WORD (20); // DEC_ERR
     1041    SWAP_WORD (24); // U_RA
     1042    SWAP_WORD (28); // U_DEC
     1043    SWAP_WORD (32); // V_RA_ERR
     1044    SWAP_WORD (36); // V_DEC_ERR
     1045    SWAP_WORD (40); // PAR
     1046    SWAP_WORD (44); // PAR_ERR
     1047    SWAP_DBLE (48); // RA_STK
     1048    SWAP_DBLE (56); // DEC_STK
     1049    SWAP_WORD (64); // RA_STK_ERR
     1050    SWAP_WORD (68); // DEC_STK_ERR
     1051    SWAP_WORD (72); // CHISQ_POS
     1052    SWAP_WORD (76); // CHISQ_PM
     1053    SWAP_WORD (80); // CHISQ_PAP
     1054    SWAP_WORD (84); // MEAN_EPOCH
     1055    SWAP_WORD (88); // TIME_RANGE
     1056    SWAP_WORD (92); // PSF_QF
     1057    SWAP_WORD (96); // PSF_QF_PERF
     1058    SWAP_WORD (100); // STARGAL_SEP
     1059    SWAP_BYTE (104); // NUMBER_POS
     1060    SWAP_BYTE (106); // NMEASURE
     1061    SWAP_BYTE (108); // NMISSING
     1062    SWAP_BYTE (110); // NLENSING
     1063    SWAP_BYTE (112); // NLENSOBJ
     1064    SWAP_BYTE (114); // NEXTEND
     1065    SWAP_WORD (116); // OFF_MEASURE
     1066    SWAP_WORD (120); // OFF_MISSING
     1067    SWAP_WORD (124); // OFF_LENSING
     1068    SWAP_WORD (128); // OFF_LENSOBJ
     1069    SWAP_WORD (132); // OFF_EXTEND
     1070    SWAP_WORD (136); // OFF_PARAMS
     1071    SWAP_WORD (140); // REF_COLOR_BLUE
     1072    SWAP_WORD (144); // REF_COLOR_RED
     1073    SWAP_WORD (148); // FLAGS
     1074    SWAP_WORD (152); // PHOTFLAGS_U
     1075    SWAP_WORD (156); // PHOTFLAGS_L
     1076    SWAP_WORD (160); // OBJ_ID
     1077    SWAP_WORD (164); // CAT_ID
     1078    SWAP_DBLE (168); // EXT_ID
     1079    SWAP_DBLE (176); // EXT_ID_GC
     1080  }
     1081# endif 
     1082
     1083  return (TRUE);
     1084}
     1085
     1086/*** add test of EXTNAME and header-defined columns? ***/
     1087/* return internal structure representation */
     1088Average_PS1_V5alt *gfits_table_get_Average_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped) {
     1089
     1090  int Ncols;
     1091  Average_PS1_V5alt *data;
     1092
     1093  Ncols = ftable[0].header[0].Naxis[0];
     1094  if (Ncols != 184) {
     1095    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 184);
     1096    return NULL;
     1097  }
     1098
     1099  *Ndata = ftable[0].header[0].Naxis[1];
     1100  data = (Average_PS1_V5alt *) ftable[0].buffer;
     1101  if ((swapped == NULL) || (*swapped == FALSE)) {
     1102    if (!gfits_convert_Average_PS1_V5alt (data, sizeof (Average_PS1_V5alt), *Ndata)) {
     1103      return NULL;
     1104    }
     1105    gfits_table_scale_data (ftable);
     1106    if (swapped != NULL) *swapped = TRUE;
     1107  }
     1108  return (data);
     1109}
     1110
     1111/****** alt secfilt **********/
     1112
     1113SecFilt *SecFilt_PS1_V5alt_ToInternal (SecFilt_PS1_V5alt *in, off_t Nvalues) {
     1114
     1115  off_t i;
     1116  SecFilt *out;
     1117
     1118  ALLOCATE_ZERO (out, SecFilt, Nvalues);
     1119
     1120  for (i = 0; i < Nvalues; i++) {
     1121    dvo_secfilt_init (&out[i]);
     1122
     1123    out[i].M             = in[i].M;     
     1124    out[i].dM            = in[i].dM;     
     1125    out[i].Map           = in[i].Map;     
     1126    out[i].dMap          = in[i].dMap;     
     1127    out[i].sMap          = in[i].sMap;     
     1128    out[i].Mkron         = in[i].Mkron;     
     1129    out[i].dMkron        = in[i].dMkron;     
     1130
     1131    out[i].Mstdev        = in[i].Mstdev;     
     1132    out[i].Mmin          = in[i].Mmin;     
     1133    out[i].Mmax          = in[i].Mmax;     
     1134    out[i].Mchisq        = in[i].Mchisq;     
     1135
     1136    out[i].Ncode         = in[i].Ncode;
     1137    out[i].Nused         = in[i].Nused;
     1138    out[i].NusedKron     = in[i].NusedKron;
     1139    out[i].NusedAp       = in[i].NusedAp;
     1140
     1141    out[i].flags         = in[i].flags;     
     1142
     1143    out[i].MpsfStk       = in[i].MpsfStk;
     1144    out[i].FpsfStk       = in[i].FpsfStk;
     1145    out[i].dFpsfStk      = in[i].dFpsfStk;
     1146
     1147    out[i].MkronStk      = in[i].MkronStk;
     1148    out[i].FkronStk      = in[i].FkronStk;
     1149    out[i].dFkronStk     = in[i].dFkronStk;
     1150
     1151    out[i].MapStk        = in[i].MapStk;
     1152    out[i].FapStk        = in[i].FapStk;
     1153    out[i].dFapStk       = in[i].dFapStk;
     1154
     1155    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     1156    out[i].stackBestOff  = in[i].stackBestOff;     
     1157
     1158    out[i].MpsfWrp       = in[i].MpsfWrp;
     1159    out[i].FpsfWrp       = in[i].FpsfWrp;
     1160    out[i].dFpsfWrp      = in[i].dFpsfWrp;
     1161    out[i].sFpsfWrp      = in[i].sFpsfWrp;
     1162
     1163    out[i].MkronWrp      = in[i].MkronWrp;
     1164    out[i].FkronWrp      = in[i].FkronWrp;
     1165    out[i].dFkronWrp     = in[i].dFkronWrp;
     1166    out[i].sFkronWrp     = in[i].sFkronWrp;
     1167
     1168    out[i].MapWrp        = in[i].MapWrp;
     1169    out[i].FapWrp        = in[i].FapWrp;
     1170    out[i].dFapWrp       = in[i].dFapWrp;
     1171    out[i].sFapWrp       = in[i].sFapWrp;
     1172
     1173    out[i].NusedWrp      = in[i].NusedWrp;
     1174    out[i].NusedKronWrp  = in[i].NusedKronWrp;
     1175    out[i].NusedApWrp    = in[i].NusedApWrp;
     1176
     1177    out[i].ubercalDist   = in[i].ubercalDist;     
     1178  }
     1179  return (out);
     1180}
     1181
     1182int gfits_convert_SecFilt_PS1_V5alt (SecFilt_PS1_V5alt *data, off_t size, off_t nitems) {
     1183
     1184  off_t i;
     1185  unsigned char *byte, tmp;
     1186
     1187  if (size != 160) {
     1188    fprintf (stderr, "WARNING: mismatch in data types SecFilt_PS1_V5alt: "OFF_T_FMT" vs %d\n",  size,  160);
     1189    return (FALSE);
     1190  }
     1191
     1192  /* provide initial values to avoid compiler warnings for non-BYTE_SWAP arch */
     1193  i = tmp = 0;
     1194  byte = NULL;
     1195
     1196# ifdef BYTE_SWAP
     1197  byte = (unsigned char *) data;
     1198  for (i = 0; i < nitems; i++, byte += 160) {
     1199    /** BYTE SWAP **/
     1200    SWAP_WORD (0); // MAG
     1201    SWAP_WORD (4); // MAG_ERR
     1202    SWAP_WORD (8); // MAG_AP
     1203    SWAP_WORD (12); // MAG_AP_ERR
     1204    SWAP_WORD (16); // MAG_AP_STDEV
     1205    SWAP_WORD (20); // MAG_KRON
     1206    SWAP_WORD (24); // MAG_KRON_ERR
     1207    SWAP_WORD (28); // MAG_KRON_STDEV
     1208    SWAP_WORD (32); // MAG_STDEV
     1209    SWAP_WORD (36); // MAG_MIN
     1210    SWAP_WORD (40); // MAG_MAX
     1211    SWAP_WORD (44); // MAG_CHI
     1212    SWAP_BYTE (48); // NCODE
     1213    SWAP_BYTE (50); // NUSED
     1214    SWAP_BYTE (52); // NUSED_KRON
     1215    SWAP_BYTE (54); // NUSED_AP
     1216    SWAP_WORD (56); // FLAGS
     1217    SWAP_WORD (60); // MAG_PSF_STK
     1218    SWAP_WORD (64); // FLUX_PSF_STK
     1219    SWAP_WORD (68); // FLUX_PSF_STK_ERR
     1220    SWAP_WORD (72); // MAG_KRON_STK
     1221    SWAP_WORD (76); // FLUX_KRON_STK
     1222    SWAP_WORD (80); // FLUX_KRON_STK_ERR
     1223    SWAP_WORD (84); // MAG_AP_STK
     1224    SWAP_WORD (88); // FLUX_AP_STK
     1225    SWAP_WORD (92); // FLUX_AP_STK_ERR
     1226    SWAP_WORD (96); // STACK_PRIMARY_OFF
     1227    SWAP_WORD (100); // STACK_BEST_OFF
     1228    SWAP_WORD (104); // MAG_PSF_WRP
     1229    SWAP_WORD (108); // FLUX_PSF_WRP
     1230    SWAP_WORD (112); // FLUX_PSF_WRP_ERR
     1231    SWAP_WORD (116); // FLUX_PSF_WRP_STD
     1232    SWAP_WORD (120); // MAG_KRON_WRP
     1233    SWAP_WORD (124); // FLUX_KRON_WRP
     1234    SWAP_WORD (128); // FLUX_KRON_WRP_ERR
     1235    SWAP_WORD (132); // FLUX_KRON_WRP_STD
     1236    SWAP_WORD (136); // MAG_AP_WRP
     1237    SWAP_WORD (140); // FLUX_AP_WRP
     1238    SWAP_WORD (144); // FLUX_AP_WRP_ERR
     1239    SWAP_WORD (148); // FLUX_AP_WRP_STD
     1240    SWAP_BYTE (152); // NUSED_WRP
     1241    SWAP_BYTE (154); // NUSED_KRON_WRP
     1242    SWAP_BYTE (156); // NUSED_AP_WRP
     1243    SWAP_BYTE (158); // UBERCAL_DIST
     1244  }
     1245# endif 
     1246
     1247  return (TRUE);
     1248}
     1249
     1250/*** add test of EXTNAME and header-defined columns? ***/
     1251/* return internal structure representation */
     1252SecFilt_PS1_V5alt *gfits_table_get_SecFilt_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped) {
     1253
     1254  int Ncols;
     1255  SecFilt_PS1_V5alt *data;
     1256
     1257  Ncols = ftable[0].header[0].Naxis[0];
     1258  if (Ncols != 160) {
     1259    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 160);
     1260    return NULL;
     1261  }
     1262
     1263  *Ndata = ftable[0].header[0].Naxis[1];
     1264  data = (SecFilt_PS1_V5alt *) ftable[0].buffer;
     1265  if ((swapped == NULL) || (*swapped == FALSE)) {
     1266    if (!gfits_convert_SecFilt_PS1_V5alt (data, sizeof (SecFilt_PS1_V5alt), *Ndata)) {
     1267      return NULL;
     1268    }
     1269    gfits_table_scale_data (ftable);
     1270    if (swapped != NULL) *swapped = TRUE;
     1271  }
     1272  return (data);
     1273}
     1274
     1275Lensing *Lensing_PS1_V5_R0_ToInternal (Lensing_PS1_V5_R0 *in, off_t Nvalues) {
     1276
     1277  off_t i;
     1278  Lensing *out;
     1279
     1280  ALLOCATE_ZERO (out, Lensing, Nvalues);
     1281
     1282  for (i = 0; i < Nvalues; i++) {
     1283    dvo_lensing_init (&out[i]);
     1284
     1285    out[i].X11_sm_obj  = in[i].X11_sm_obj;     
     1286    out[i].X12_sm_obj  = in[i].X12_sm_obj;     
     1287    out[i].X22_sm_obj  = in[i].X22_sm_obj;     
     1288    out[i].E1_sm_obj   = in[i].E1_sm_obj;     
     1289    out[i].E2_sm_obj   = in[i].E2_sm_obj;     
     1290                                         
     1291    out[i].X11_sh_obj  = in[i].X11_sh_obj;     
     1292    out[i].X12_sh_obj  = in[i].X12_sh_obj;     
     1293    out[i].X22_sh_obj  = in[i].X22_sh_obj;     
     1294    out[i].E1_sh_obj   = in[i].E1_sh_obj;     
     1295    out[i].E2_sh_obj   = in[i].E2_sh_obj;     
     1296                                         
     1297    out[i].X11_sm_psf  = in[i].X11_sm_psf;
     1298    out[i].X12_sm_psf  = in[i].X12_sm_psf;
     1299    out[i].X22_sm_psf  = in[i].X22_sm_psf;
     1300    out[i].E1_sm_psf   = in[i].E1_sm_psf;
     1301    out[i].E2_sm_psf   = in[i].E2_sm_psf;     
     1302                                         
     1303    out[i].X11_sh_psf  = in[i].X11_sh_psf;
     1304    out[i].X12_sh_psf  = in[i].X12_sh_psf;
     1305    out[i].X22_sh_psf  = in[i].X22_sh_psf;
     1306    out[i].E1_sh_psf   = in[i].E1_sh_psf;
     1307    out[i].E2_sh_psf   = in[i].E2_sh_psf;
     1308
     1309    out[i].F_ApR5      = in[i].F_ApR5;
     1310    out[i].dF_ApR5     = in[i].dF_ApR5;
     1311    out[i].sF_ApR5     = in[i].sF_ApR5;
     1312    out[i].fF_ApR5     = in[i].fF_ApR5;
     1313                                   
     1314    out[i].F_ApR6      = in[i].F_ApR6;
     1315    out[i].dF_ApR6     = in[i].dF_ApR6;
     1316    out[i].sF_ApR6     = in[i].sF_ApR6;
     1317    out[i].fF_ApR6     = in[i].fF_ApR6;
     1318                                   
     1319    out[i].detID       = in[i].detID;
     1320    out[i].objID       = in[i].objID;
     1321    out[i].catID       = in[i].catID;
     1322    out[i].averef      = in[i].averef;
     1323  }
     1324  return (out);
     1325}
     1326
     1327Lensing *Lensing_PS1_V5_R1_ToInternal (Lensing_PS1_V5_R1 *in, off_t Nvalues) {
     1328
     1329  off_t i;
     1330  Lensing *out;
     1331
     1332  ALLOCATE_ZERO (out, Lensing, Nvalues);
     1333
     1334  for (i = 0; i < Nvalues; i++) {
     1335    dvo_lensing_init (&out[i]);
     1336
     1337    out[i].X11_sm_obj  = in[i].X11_sm_obj;     
     1338    out[i].X12_sm_obj  = in[i].X12_sm_obj;     
     1339    out[i].X22_sm_obj  = in[i].X22_sm_obj;     
     1340    out[i].E1_sm_obj   = in[i].E1_sm_obj;     
     1341    out[i].E2_sm_obj   = in[i].E2_sm_obj;     
     1342                                         
     1343    out[i].X11_sh_obj  = in[i].X11_sh_obj;     
     1344    out[i].X12_sh_obj  = in[i].X12_sh_obj;     
     1345    out[i].X22_sh_obj  = in[i].X22_sh_obj;     
     1346    out[i].E1_sh_obj   = in[i].E1_sh_obj;     
     1347    out[i].E2_sh_obj   = in[i].E2_sh_obj;     
     1348                                         
     1349    out[i].X11_sm_psf  = in[i].X11_sm_psf;
     1350    out[i].X12_sm_psf  = in[i].X12_sm_psf;
     1351    out[i].X22_sm_psf  = in[i].X22_sm_psf;
     1352    out[i].E1_sm_psf   = in[i].E1_sm_psf;
     1353    out[i].E2_sm_psf   = in[i].E2_sm_psf;     
     1354                                         
     1355    out[i].X11_sh_psf  = in[i].X11_sh_psf;
     1356    out[i].X12_sh_psf  = in[i].X12_sh_psf;
     1357    out[i].X22_sh_psf  = in[i].X22_sh_psf;
     1358    out[i].E1_sh_psf   = in[i].E1_sh_psf;
     1359    out[i].E2_sh_psf   = in[i].E2_sh_psf;
     1360
     1361    out[i].F_ApR5      = in[i].F_ApR5;
     1362    out[i].dF_ApR5     = in[i].dF_ApR5;
     1363    out[i].sF_ApR5     = in[i].sF_ApR5;
     1364    out[i].fF_ApR5     = in[i].fF_ApR5;
     1365                                   
     1366    out[i].F_ApR6      = in[i].F_ApR6;
     1367    out[i].dF_ApR6     = in[i].dF_ApR6;
     1368    out[i].sF_ApR6     = in[i].sF_ApR6;
     1369    out[i].fF_ApR6     = in[i].fF_ApR6;
     1370                                   
     1371    out[i].detID       = in[i].detID;
     1372    out[i].objID       = in[i].objID;
     1373    out[i].catID       = in[i].catID;
     1374    out[i].averef      = in[i].averef;
     1375
     1376    out[i].imageID     = in[i].imageID;
     1377  }
     1378  return (out);
     1379}
     1380
     1381/********** PS1_V5alt measure ************/
     1382
     1383Measure *Measure_PS1_V5alt_ToInternal (Average *ave, Measure_PS1_V5alt *in, off_t Nvalues) {
    61384
    71385  off_t i;
     
    771455}
    781456
    79 Measure_PS1_V5 *MeasureInternalTo_PS1_V5 (Average *ave, Measure *in, off_t Nvalues) {
    80 
    81   off_t i;
    82   Measure_PS1_V5 *out;
    83 
    84   ALLOCATE_ZERO (out, Measure_PS1_V5, Nvalues);
    85 
    86   for (i = 0; i < Nvalues; i++) {
    87     out[i].R          = in[i].R;
    88     out[i].D          = in[i].D;
    89     out[i].M          = in[i].M;
    90     out[i].dM         = in[i].dM;
    91     out[i].Map        = in[i].Map;
    92     out[i].dMap       = in[i].dMap;
    93     out[i].Mkron      = in[i].Mkron;
    94     out[i].dMkron     = in[i].dMkron;
    95     out[i].Mcal       = in[i].Mcal;
    96     out[i].dMcal      = in[i].dMcal;
    97     out[i].dt         = in[i].dt;
    98     out[i].FluxPSF    = in[i].FluxPSF;
    99     out[i].dFluxPSF   = in[i].dFluxPSF;
    100     out[i].FluxKron   = in[i].FluxKron;
    101     out[i].dFluxKron  = in[i].dFluxKron;
    102     out[i].FluxAp     = in[i].FluxAp;
    103     out[i].dFluxAp    = in[i].dFluxAp;
    104     out[i].airmass    = in[i].airmass;
    105     out[i].az         = in[i].az;
    106     out[i].Xccd       = in[i].Xccd;
    107     out[i].Yccd       = in[i].Yccd;
    108     out[i].Xfix       = in[i].Xfix;
    109     out[i].Yfix       = in[i].Yfix;
    110     out[i].XoffKH     = in[i].XoffKH;
    111     out[i].YoffKH     = in[i].YoffKH;
    112     out[i].XoffDCR    = in[i].XoffDCR;
    113     out[i].YoffDCR    = in[i].YoffDCR;
    114     out[i].RoffGAL    = in[i].RoffGAL;
    115     out[i].DoffGAL    = in[i].DoffGAL;
    116     out[i].Sky        = in[i].Sky;
    117     out[i].dSky       = in[i].dSky;
    118     out[i].t          = in[i].t;
    119     out[i].averef     = in[i].averef;
    120     out[i].detID      = in[i].detID;
    121     out[i].objID      = in[i].objID;
    122     out[i].catID      = in[i].catID;
    123     out[i].extID      = in[i].extID;
    124     out[i].imageID    = in[i].imageID;
    125     out[i].psfQF      = in[i].psfQF;
    126     out[i].psfQFperf  = in[i].psfQFperf;
    127     out[i].psfChisq   = in[i].psfChisq;
    128     out[i].psfNdof    = in[i].psfNdof;
    129     out[i].psfNpix    = in[i].psfNpix;
    130     out[i].extNsigma  = in[i].extNsigma;
    131     out[i].FWx        = in[i].FWx;
    132     out[i].FWy        = in[i].FWy;
    133     out[i].theta      = in[i].theta;
    134     out[i].Mxx        = in[i].Mxx;
    135     out[i].Mxy        = in[i].Mxy;
    136     out[i].Myy        = in[i].Myy;
    137     out[i].t_msec     = in[i].t_msec;
    138     out[i].photcode   = in[i].photcode;
    139     out[i].dXccd      = in[i].dXccd;
    140     out[i].dYccd      = in[i].dYccd;
    141     out[i].dRsys      = in[i].dRsys;
    142     out[i].posangle   = in[i].posangle;
    143     out[i].pltscale   = in[i].pltscale;
    144     out[i].dbFlags    = in[i].dbFlags;
    145     out[i].photFlags  = in[i].photFlags;
    146     out[i].photFlags2 = in[i].photFlags2;
    147   }
    148   return (out);
    149 }
    150 
    151 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
    152 Average *Average_PS1_V5_ToInternal (Average_PS1_V5 *in, off_t Nvalues, SecFilt **primary) {
    153 
    154   off_t i;
    155   Average *out;
    156 
    157   ALLOCATE_ZERO (out, Average, Nvalues);
    158 
    159   for (i = 0; i < Nvalues; i++) {
    160     dvo_average_init (&out[i]);
    161 
    162     out[i].R             = in[i].R;     
    163     out[i].D             = in[i].D;     
    164     out[i].dR            = in[i].dR;
    165     out[i].dD            = in[i].dD;
    166     out[i].uR            = in[i].uR;
    167     out[i].uD            = in[i].uD;
    168     out[i].duR           = in[i].duR;
    169     out[i].duD           = in[i].duD;
    170     out[i].P             = in[i].P;
    171     out[i].dP            = in[i].dP;
    172 
    173     out[i].Rstk          = in[i].Rstk;     
    174     out[i].Dstk          = in[i].Dstk;     
    175     out[i].dRstk         = in[i].dRstk;
    176     out[i].dDstk         = in[i].dDstk;
    177 
    178     out[i].ChiSqAve      = in[i].ChiSqAve;     
    179     out[i].ChiSqPM       = in[i].ChiSqPM;     
    180     out[i].ChiSqPar      = in[i].ChiSqPar;     
    181     out[i].Tmean         = in[i].Tmean;     
    182     out[i].Trange        = in[i].Trange;     
    183 
    184     out[i].psfQF         = in[i].psfQF;
    185     out[i].psfQFperf     = in[i].psfQFperf;
    186     out[i].stargal       = in[i].stargal;     
    187     out[i].Npos          = in[i].Npos;     
    188 
    189     out[i].Nmeasure      = in[i].Nmeasure;     
    190     out[i].Nmissing      = in[i].Nmissing;     
    191     out[i].Nlensing      = in[i].Nlensing;     
    192     out[i].Nlensobj      = in[i].Nlensobj;     
    193     out[i].Nstarpar      = in[i].Nstarpar;     
    194     out[i].Nextend       = in[i].Nextend;     
    195 
    196     out[i].measureOffset = in[i].measureOffset;
    197     out[i].missingOffset = in[i].missingOffset;
    198     out[i].lensingOffset = in[i].lensingOffset;
    199     out[i].lensobjOffset = in[i].lensobjOffset;
    200     out[i].starparOffset = in[i].starparOffset;
    201     out[i].extendOffset  = in[i].extendOffset;
    202 
    203     out[i].refColorBlue  = in[i].refColorBlue;
    204     out[i].refColorRed   = in[i].refColorRed;
    205 
    206     out[i].tessID        = in[i].tessID;
    207     out[i].skycellID     = in[i].skycellID;
    208     out[i].projectionID  = in[i].projectionID;
    209 
    210     out[i].flags         = in[i].flags;   
    211     out[i].photFlagsUpper = in[i].photFlagsUpper;   
    212     out[i].photFlagsLower = in[i].photFlagsLower;   
    213     out[i].objID         = in[i].objID;
    214     out[i].catID         = in[i].catID;
    215     out[i].extID         = in[i].extID;
    216     out[i].extIDgc       = in[i].extIDgc;
    217   }
    218   return (out);
    219 }
    220 
    221 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
    222 Average_PS1_V5 *AverageInternalTo_PS1_V5 (Average *in, off_t Nvalues, SecFilt *primary) {
    223 
    224   off_t i;
    225   Average_PS1_V5 *out;
    226 
    227   ALLOCATE_ZERO (out, Average_PS1_V5, Nvalues);
    228 
    229   for (i = 0; i < Nvalues; i++) {
    230     out[i].R              = in[i].R;     
    231     out[i].D              = in[i].D;     
    232     out[i].dR             = in[i].dR;
    233     out[i].dD             = in[i].dD;
    234     out[i].uR             = in[i].uR;
    235     out[i].uD             = in[i].uD;
    236     out[i].duR            = in[i].duR;
    237     out[i].duD            = in[i].duD;
    238     out[i].P              = in[i].P;
    239     out[i].dP             = in[i].dP;
    240                          
    241     out[i].Rstk           = in[i].Rstk;     
    242     out[i].Dstk           = in[i].Dstk;     
    243     out[i].dRstk          = in[i].dRstk;
    244     out[i].dDstk          = in[i].dDstk;
    245                          
    246     out[i].ChiSqAve       = in[i].ChiSqAve;     
    247     out[i].ChiSqPM        = in[i].ChiSqPM;     
    248     out[i].ChiSqPar       = in[i].ChiSqPar;     
    249     out[i].Tmean          = in[i].Tmean;     
    250     out[i].Trange         = in[i].Trange;     
    251                          
    252     out[i].psfQF          = in[i].psfQF;
    253     out[i].psfQFperf      = in[i].psfQFperf;
    254     out[i].stargal        = in[i].stargal;     
    255     out[i].Npos           = in[i].Npos;     
    256                          
    257     out[i].Nmeasure       = in[i].Nmeasure;     
    258     out[i].Nmissing       = in[i].Nmissing;     
    259     out[i].Nlensing       = in[i].Nlensing;     
    260     out[i].Nlensobj       = in[i].Nlensobj;     
    261     out[i].Nstarpar       = in[i].Nstarpar;     
    262     out[i].Nextend        = in[i].Nextend;     
    263                          
    264     out[i].measureOffset  = in[i].measureOffset;
    265     out[i].missingOffset  = in[i].missingOffset;
    266     out[i].lensingOffset  = in[i].lensingOffset;
    267     out[i].lensobjOffset  = in[i].lensobjOffset;
    268     out[i].starparOffset  = in[i].starparOffset;
    269     out[i].extendOffset   = in[i].extendOffset;
    270                          
    271     out[i].refColorBlue   = in[i].refColorBlue;
    272     out[i].refColorRed    = in[i].refColorRed;
    273                          
    274     out[i].tessID         = in[i].tessID;
    275     out[i].skycellID      = in[i].skycellID;
    276     out[i].projectionID   = in[i].projectionID;
    277                          
    278     out[i].flags          = in[i].flags;   
    279     out[i].photFlagsUpper = in[i].photFlagsUpper;   
    280     out[i].photFlagsLower = in[i].photFlagsLower;   
    281     out[i].objID          = in[i].objID;
    282     out[i].catID          = in[i].catID;
    283     out[i].extID          = in[i].extID;
    284     out[i].extIDgc        = in[i].extIDgc;
    285   }
    286   return (out);
    287 }
    288 
    289 SecFilt *SecFilt_PS1_V5_ToInternal (SecFilt_PS1_V5 *in, off_t Nvalues) {
    290 
    291   off_t i;
    292   SecFilt *out;
    293 
    294   ALLOCATE_ZERO (out, SecFilt, Nvalues);
    295 
    296   for (i = 0; i < Nvalues; i++) {
    297     dvo_secfilt_init (&out[i]);
    298 
    299     out[i].M             = in[i].M;     
    300     out[i].dM            = in[i].dM;     
    301     out[i].Map           = in[i].Map;     
    302     out[i].dMap          = in[i].dMap;     
    303     out[i].sMap          = in[i].sMap;     
    304     out[i].Mkron         = in[i].Mkron;     
    305     out[i].dMkron        = in[i].dMkron;     
    306     out[i].sMkron        = in[i].sMkron;     
    307 
    308     out[i].psfQfMax      = in[i].psfQfMax;     
    309     out[i].psfQfPerfMax  = in[i].psfQfPerfMax;     
    310 
    311     out[i].Mstdev        = in[i].Mstdev;     
    312     out[i].Mmin          = in[i].Mmin;     
    313     out[i].Mmax          = in[i].Mmax;     
    314     out[i].Mchisq        = in[i].Mchisq;     
    315 
    316     out[i].Ncode         = in[i].Ncode;
    317     out[i].Nused         = in[i].Nused;
    318     out[i].NusedKron     = in[i].NusedKron;
    319     out[i].NusedAp       = in[i].NusedAp;
    320 
    321     out[i].flags         = in[i].flags;     
    322 
    323     out[i].MpsfStk       = in[i].MpsfStk;
    324     out[i].FpsfStk       = in[i].FpsfStk;
    325     out[i].dFpsfStk      = in[i].dFpsfStk;
    326 
    327     out[i].MkronStk      = in[i].MkronStk;
    328     out[i].FkronStk      = in[i].FkronStk;
    329     out[i].dFkronStk     = in[i].dFkronStk;
    330 
    331     out[i].MapStk        = in[i].MapStk;
    332     out[i].FapStk        = in[i].FapStk;
    333     out[i].dFapStk       = in[i].dFapStk;
    334 
    335     out[i].Nstack        = in[i].Nstack;     
    336     out[i].NstackDet     = in[i].NstackDet;     
    337 
    338     out[i].stackPrmryOff = in[i].stackPrmryOff;     
    339     out[i].stackBestOff  = in[i].stackBestOff;     
    340 
    341     out[i].MpsfWrp       = in[i].MpsfWrp;
    342     out[i].FpsfWrp       = in[i].FpsfWrp;
    343     out[i].dFpsfWrp      = in[i].dFpsfWrp;
    344     out[i].sFpsfWrp      = in[i].sFpsfWrp;
    345 
    346     out[i].MkronWrp      = in[i].MkronWrp;
    347     out[i].FkronWrp      = in[i].FkronWrp;
    348     out[i].dFkronWrp     = in[i].dFkronWrp;
    349     out[i].sFkronWrp     = in[i].sFkronWrp;
    350 
    351     out[i].MapWrp        = in[i].MapWrp;
    352     out[i].FapWrp        = in[i].FapWrp;
    353     out[i].dFapWrp       = in[i].dFapWrp;
    354     out[i].sFapWrp       = in[i].sFapWrp;
    355 
    356     out[i].NusedWrp      = in[i].NusedWrp;
    357     out[i].NusedKronWrp  = in[i].NusedKronWrp;
    358     out[i].NusedApWrp    = in[i].NusedApWrp;
    359 
    360     out[i].Nwarp         = in[i].Nwarp;     
    361     out[i].NwarpGood     = in[i].NwarpGood;     
    362 
    363     out[i].ubercalDist   = in[i].ubercalDist;     
    364   }
    365   return (out);
    366 }
    367 
    368 SecFilt_PS1_V5 *SecFiltInternalTo_PS1_V5 (SecFilt *in, off_t Nvalues) {
    369 
    370   off_t i;
    371   SecFilt_PS1_V5 *out;
    372 
    373   ALLOCATE_ZERO (out, SecFilt_PS1_V5, Nvalues);
    374 
    375   for (i = 0; i < Nvalues; i++) {
    376 
    377     out[i].M             = in[i].M;     
    378     out[i].dM            = in[i].dM;     
    379     out[i].Map           = in[i].Map;     
    380     out[i].dMap          = in[i].dMap;     
    381     out[i].sMap          = in[i].sMap;     
    382     out[i].Mkron         = in[i].Mkron;     
    383     out[i].dMkron        = in[i].dMkron;     
    384     out[i].sMkron        = in[i].sMkron;     
    385 
    386     out[i].psfQfMax      = in[i].psfQfMax;     
    387     out[i].psfQfPerfMax  = in[i].psfQfPerfMax;     
    388 
    389     out[i].Mstdev        = in[i].Mstdev;     
    390     out[i].Mmin          = in[i].Mmin;     
    391     out[i].Mmax          = in[i].Mmax;     
    392     out[i].Mchisq        = in[i].Mchisq;     
    393 
    394     out[i].Ncode         = in[i].Ncode;
    395     out[i].Nused         = in[i].Nused;
    396     out[i].NusedKron     = in[i].NusedKron;
    397     out[i].NusedAp       = in[i].NusedAp;
    398 
    399     out[i].flags         = in[i].flags;     
    400 
    401     out[i].MpsfStk       = in[i].MpsfStk;
    402     out[i].FpsfStk       = in[i].FpsfStk;
    403     out[i].dFpsfStk      = in[i].dFpsfStk;
    404 
    405     out[i].MkronStk      = in[i].MkronStk;
    406     out[i].FkronStk      = in[i].FkronStk;
    407     out[i].dFkronStk     = in[i].dFkronStk;
    408 
    409     out[i].MapStk        = in[i].MapStk;
    410     out[i].FapStk        = in[i].FapStk;
    411     out[i].dFapStk       = in[i].dFapStk;
    412 
    413     out[i].Nstack        = in[i].Nstack;     
    414     out[i].NstackDet     = in[i].NstackDet;     
    415 
    416     out[i].stackPrmryOff = in[i].stackPrmryOff;     
    417     out[i].stackBestOff  = in[i].stackBestOff;     
    418 
    419     out[i].MpsfWrp       = in[i].MpsfWrp;
    420     out[i].FpsfWrp       = in[i].FpsfWrp;
    421     out[i].dFpsfWrp      = in[i].dFpsfWrp;
    422     out[i].sFpsfWrp      = in[i].sFpsfWrp;
    423 
    424     out[i].MkronWrp      = in[i].MkronWrp;
    425     out[i].FkronWrp      = in[i].FkronWrp;
    426     out[i].dFkronWrp     = in[i].dFkronWrp;
    427     out[i].sFkronWrp     = in[i].sFkronWrp;
    428 
    429     out[i].MapWrp        = in[i].MapWrp;
    430     out[i].FapWrp        = in[i].FapWrp;
    431     out[i].dFapWrp       = in[i].dFapWrp;
    432     out[i].sFapWrp       = in[i].sFapWrp;
    433 
    434     out[i].NusedWrp      = in[i].NusedWrp;
    435     out[i].NusedKronWrp  = in[i].NusedKronWrp;
    436     out[i].NusedApWrp    = in[i].NusedApWrp;
    437 
    438     out[i].Nwarp         = in[i].Nwarp;     
    439     out[i].NwarpGood     = in[i].NwarpGood;     
    440 
    441     out[i].ubercalDist   = in[i].ubercalDist;     
    442   }
    443   return (out);
    444 }
    445 
    446 Lensing *Lensing_PS1_V5_R2_ToInternal (Lensing_PS1_V5_R2 *in, off_t Nvalues) {
    447 
    448   off_t i;
    449   Lensing *out;
    450 
    451   ALLOCATE_ZERO (out, Lensing, Nvalues);
    452 
    453   for (i = 0; i < Nvalues; i++) {
    454     dvo_lensing_init (&out[i]);
    455 
    456     out[i].X11_sm_obj  = in[i].X11_sm_obj;     
    457     out[i].X12_sm_obj  = in[i].X12_sm_obj;     
    458     out[i].X22_sm_obj  = in[i].X22_sm_obj;     
    459     out[i].E1_sm_obj   = in[i].E1_sm_obj;     
    460     out[i].E2_sm_obj   = in[i].E2_sm_obj;     
    461                                          
    462     out[i].X11_sh_obj  = in[i].X11_sh_obj;     
    463     out[i].X12_sh_obj  = in[i].X12_sh_obj;     
    464     out[i].X22_sh_obj  = in[i].X22_sh_obj;     
    465     out[i].E1_sh_obj   = in[i].E1_sh_obj;     
    466     out[i].E2_sh_obj   = in[i].E2_sh_obj;     
    467                                          
    468     out[i].X11_sm_psf  = in[i].X11_sm_psf;
    469     out[i].X12_sm_psf  = in[i].X12_sm_psf;
    470     out[i].X22_sm_psf  = in[i].X22_sm_psf;
    471     out[i].E1_sm_psf   = in[i].E1_sm_psf;
    472     out[i].E2_sm_psf   = in[i].E2_sm_psf;     
    473                                          
    474     out[i].X11_sh_psf  = in[i].X11_sh_psf;
    475     out[i].X12_sh_psf  = in[i].X12_sh_psf;
    476     out[i].X22_sh_psf  = in[i].X22_sh_psf;
    477     out[i].E1_sh_psf   = in[i].E1_sh_psf;
    478     out[i].E2_sh_psf   = in[i].E2_sh_psf;
    479 
    480     out[i].E1_psf      = in[i].E1_psf;
    481     out[i].E2_psf      = in[i].E2_psf;
    482 
    483     out[i].F_ApR5      = in[i].F_ApR5;
    484     out[i].dF_ApR5     = in[i].dF_ApR5;
    485     out[i].sF_ApR5     = in[i].sF_ApR5;
    486     out[i].fF_ApR5     = in[i].fF_ApR5;
    487                                    
    488     out[i].F_ApR6      = in[i].F_ApR6;
    489     out[i].dF_ApR6     = in[i].dF_ApR6;
    490     out[i].sF_ApR6     = in[i].sF_ApR6;
    491     out[i].fF_ApR6     = in[i].fF_ApR6;
    492                                    
    493     out[i].detID       = in[i].detID;
    494     out[i].objID       = in[i].objID;
    495     out[i].catID       = in[i].catID;
    496     out[i].averef      = in[i].averef;
    497 
    498     out[i].imageID     = in[i].imageID;
    499   }
    500   return (out);
    501 }
    502 
    503 Lensing_PS1_V5_R2 *LensingInternalTo_PS1_V5_R2 (Lensing *in, off_t Nvalues) {
    504 
    505   off_t i;
    506   Lensing_PS1_V5_R2 *out;
    507 
    508   ALLOCATE_ZERO (out, Lensing_PS1_V5, Nvalues);
    509 
    510   for (i = 0; i < Nvalues; i++) {
    511 
    512     out[i].X11_sm_obj  = in[i].X11_sm_obj;     
    513     out[i].X12_sm_obj  = in[i].X12_sm_obj;     
    514     out[i].X22_sm_obj  = in[i].X22_sm_obj;     
    515     out[i].E1_sm_obj   = in[i].E1_sm_obj;     
    516     out[i].E2_sm_obj   = in[i].E2_sm_obj;     
    517                                          
    518     out[i].X11_sh_obj  = in[i].X11_sh_obj;     
    519     out[i].X12_sh_obj  = in[i].X12_sh_obj;     
    520     out[i].X22_sh_obj  = in[i].X22_sh_obj;     
    521     out[i].E1_sh_obj   = in[i].E1_sh_obj;     
    522     out[i].E2_sh_obj   = in[i].E2_sh_obj;     
    523                                          
    524     out[i].X11_sm_psf  = in[i].X11_sm_psf;
    525     out[i].X12_sm_psf  = in[i].X12_sm_psf;
    526     out[i].X22_sm_psf  = in[i].X22_sm_psf;
    527     out[i].E1_sm_psf   = in[i].E1_sm_psf;
    528     out[i].E2_sm_psf   = in[i].E2_sm_psf;     
    529                                          
    530     out[i].X11_sh_psf  = in[i].X11_sh_psf;
    531     out[i].X12_sh_psf  = in[i].X12_sh_psf;
    532     out[i].X22_sh_psf  = in[i].X22_sh_psf;
    533     out[i].E1_sh_psf   = in[i].E1_sh_psf;
    534     out[i].E2_sh_psf   = in[i].E2_sh_psf;
    535 
    536     out[i].E1_psf      = in[i].E1_psf;
    537     out[i].E2_psf      = in[i].E2_psf;
    538 
    539     out[i].F_ApR5      = in[i].F_ApR5;
    540     out[i].dF_ApR5     = in[i].dF_ApR5;
    541     out[i].sF_ApR5     = in[i].sF_ApR5;
    542     out[i].fF_ApR5     = in[i].fF_ApR5;
    543                                    
    544     out[i].F_ApR6      = in[i].F_ApR6;
    545     out[i].dF_ApR6     = in[i].dF_ApR6;
    546     out[i].sF_ApR6     = in[i].sF_ApR6;
    547     out[i].fF_ApR6     = in[i].fF_ApR6;
    548                                    
    549     out[i].detID       = in[i].detID;
    550     out[i].objID       = in[i].objID;
    551     out[i].catID       = in[i].catID;
    552     out[i].averef      = in[i].averef;
    553 
    554     out[i].imageID     = in[i].imageID;
    555   }
    556   return (out);
    557 }
    558 
    559 Lensobj *Lensobj_PS1_V5_ToInternal (Lensobj_PS1_V5 *in, off_t Nvalues) {
    560 
    561   off_t i;
    562   Lensobj *out;
    563 
    564   ALLOCATE_ZERO (out, Lensobj, Nvalues);
    565 
    566   for (i = 0; i < Nvalues; i++) {
    567     dvo_lensobj_init (&out[i], FALSE);
    568 
    569     out[i].X11_sm_obj  = in[i].X11_sm_obj;     
    570     out[i].X12_sm_obj  = in[i].X12_sm_obj;     
    571     out[i].X22_sm_obj  = in[i].X22_sm_obj;     
    572     out[i].E1_sm_obj   = in[i].E1_sm_obj;     
    573     out[i].E2_sm_obj   = in[i].E2_sm_obj;     
    574                                          
    575     out[i].X11_sh_obj  = in[i].X11_sh_obj;     
    576     out[i].X12_sh_obj  = in[i].X12_sh_obj;     
    577     out[i].X22_sh_obj  = in[i].X22_sh_obj;     
    578     out[i].E1_sh_obj   = in[i].E1_sh_obj;     
    579     out[i].E2_sh_obj   = in[i].E2_sh_obj;     
    580                                          
    581     out[i].X11_sm_psf  = in[i].X11_sm_psf;
    582     out[i].X12_sm_psf  = in[i].X12_sm_psf;
    583     out[i].X22_sm_psf  = in[i].X22_sm_psf;
    584     out[i].E1_sm_psf   = in[i].E1_sm_psf;
    585     out[i].E2_sm_psf   = in[i].E2_sm_psf;     
    586                                          
    587     out[i].X11_sh_psf  = in[i].X11_sh_psf;
    588     out[i].X12_sh_psf  = in[i].X12_sh_psf;
    589     out[i].X22_sh_psf  = in[i].X22_sh_psf;
    590     out[i].E1_sh_psf   = in[i].E1_sh_psf;
    591     out[i].E2_sh_psf   = in[i].E2_sh_psf;
    592 
    593     out[i].F_ApR5      = in[i].F_ApR5;
    594     out[i].dF_ApR5     = in[i].dF_ApR5;
    595     out[i].sF_ApR5     = in[i].sF_ApR5;
    596     out[i].fF_ApR5     = in[i].fF_ApR5;
    597                                    
    598     out[i].F_ApR6      = in[i].F_ApR6;
    599     out[i].dF_ApR6     = in[i].dF_ApR6;
    600     out[i].sF_ApR6     = in[i].sF_ApR6;
    601     out[i].fF_ApR6     = in[i].fF_ApR6;
    602                                    
    603     out[i].gamma       = in[i].gamma;
    604     out[i].E1          = in[i].E1;
    605     out[i].E2          = in[i].E2;
    606 
    607     out[i].objID       = in[i].objID;
    608     out[i].catID       = in[i].catID;
    609 
    610     out[i].photcode    = in[i].photcode;
    611     out[i].Nmeas       = in[i].Nmeas;
    612   }
    613   return (out);
    614 }
    615 
    616 Lensobj_PS1_V5 *LensobjInternalTo_PS1_V5 (Lensobj *in, off_t Nvalues) {
    617 
    618   off_t i;
    619   Lensobj_PS1_V5 *out;
    620 
    621   ALLOCATE_ZERO (out, Lensobj_PS1_V5, Nvalues);
    622 
    623   for (i = 0; i < Nvalues; i++) {
    624 
    625     out[i].X11_sm_obj  = in[i].X11_sm_obj;     
    626     out[i].X12_sm_obj  = in[i].X12_sm_obj;     
    627     out[i].X22_sm_obj  = in[i].X22_sm_obj;     
    628     out[i].E1_sm_obj   = in[i].E1_sm_obj;     
    629     out[i].E2_sm_obj   = in[i].E2_sm_obj;     
    630                                          
    631     out[i].X11_sh_obj  = in[i].X11_sh_obj;     
    632     out[i].X12_sh_obj  = in[i].X12_sh_obj;     
    633     out[i].X22_sh_obj  = in[i].X22_sh_obj;     
    634     out[i].E1_sh_obj   = in[i].E1_sh_obj;     
    635     out[i].E2_sh_obj   = in[i].E2_sh_obj;     
    636                                          
    637     out[i].X11_sm_psf  = in[i].X11_sm_psf;
    638     out[i].X12_sm_psf  = in[i].X12_sm_psf;
    639     out[i].X22_sm_psf  = in[i].X22_sm_psf;
    640     out[i].E1_sm_psf   = in[i].E1_sm_psf;
    641     out[i].E2_sm_psf   = in[i].E2_sm_psf;     
    642                                          
    643     out[i].X11_sh_psf  = in[i].X11_sh_psf;
    644     out[i].X12_sh_psf  = in[i].X12_sh_psf;
    645     out[i].X22_sh_psf  = in[i].X22_sh_psf;
    646     out[i].E1_sh_psf   = in[i].E1_sh_psf;
    647     out[i].E2_sh_psf   = in[i].E2_sh_psf;
    648 
    649     out[i].F_ApR5      = in[i].F_ApR5;
    650     out[i].dF_ApR5     = in[i].dF_ApR5;
    651     out[i].sF_ApR5     = in[i].sF_ApR5;
    652     out[i].fF_ApR5     = in[i].fF_ApR5;
    653                                    
    654     out[i].F_ApR6      = in[i].F_ApR6;
    655     out[i].dF_ApR6     = in[i].dF_ApR6;
    656     out[i].sF_ApR6     = in[i].sF_ApR6;
    657     out[i].fF_ApR6     = in[i].fF_ApR6;
    658                                    
    659     out[i].gamma       = in[i].gamma;
    660     out[i].E1          = in[i].E1;
    661     out[i].E2          = in[i].E2;
    662 
    663     out[i].objID       = in[i].objID;
    664     out[i].catID       = in[i].catID;
    665 
    666     out[i].photcode    = in[i].photcode;
    667     out[i].Nmeas       = in[i].Nmeas;
    668   }
    669   return (out);
    670 }
    671 
    672 StarPar *StarPar_PS1_V5_ToInternal (StarPar_PS1_V5 *in, off_t Nvalues) {
    673 
    674   off_t i;
    675   StarPar *out;
    676 
    677   ALLOCATE_ZERO (out, StarPar, Nvalues);
    678 
    679   for (i = 0; i < Nvalues; i++) {
    680     dvo_starpar_init (&out[i]);
    681 
    682     out[i].R         = in[i].R;     
    683     out[i].D         = in[i].D;     
    684     out[i].galLat    = in[i].galLat;     
    685     out[i].galLon    = in[i].galLon;     
    686 
    687     out[i].Ebv       = in[i].Ebv     ;     
    688     out[i].dEbv      = in[i].dEbv    ;     
    689     out[i].DistMag   = in[i].DistMag ;     
    690     out[i].dDistMag  = in[i].dDistMag;     
    691     out[i].M_r       = in[i].M_r     ;     
    692     out[i].dM_r      = in[i].dM_r    ;     
    693     out[i].FeH       = in[i].FeH     ;     
    694     out[i].dFeH      = in[i].dFeH    ;     
    695     out[i].uRA       = in[i].uRA     ;     
    696     out[i].uDEC      = in[i].uDEC    ;     
    697 
    698     out[i].averef  = in[i].averef;
    699     out[i].objID   = in[i].objID ;
    700     out[i].catID   = in[i].catID ;
    701   }
    702   return (out);
    703 }
    704 
    705 StarPar_PS1_V5 *StarParInternalTo_PS1_V5 (StarPar *in, off_t Nvalues) {
    706 
    707   off_t i;
    708   StarPar_PS1_V5 *out;
    709 
    710   ALLOCATE_ZERO (out, StarPar_PS1_V5, Nvalues);
    711 
    712   for (i = 0; i < Nvalues; i++) {
    713 
    714     out[i].R         = in[i].R;     
    715     out[i].D         = in[i].D;     
    716     out[i].galLat    = in[i].galLat;     
    717     out[i].galLon    = in[i].galLon;     
    718 
    719     out[i].Ebv       = in[i].Ebv     ;     
    720     out[i].dEbv      = in[i].dEbv    ;     
    721     out[i].DistMag   = in[i].DistMag ;     
    722     out[i].dDistMag  = in[i].dDistMag;     
    723     out[i].M_r       = in[i].M_r     ;     
    724     out[i].dM_r      = in[i].dM_r    ;     
    725     out[i].FeH       = in[i].FeH     ;     
    726     out[i].dFeH      = in[i].dFeH    ;     
    727     out[i].uRA       = in[i].uRA     ;     
    728     out[i].uDEC      = in[i].uDEC    ;     
    729 
    730     out[i].averef  = in[i].averef;
    731     out[i].objID   = in[i].objID ;
    732     out[i].catID   = in[i].catID ;
    733   }
    734   return (out);
    735 }
    736 
    737 # define RAW_IMAGE_NAME_LEN 117
    738 
    739 Image *Image_PS1_V5_ToInternal (Image_PS1_V5 *in, off_t Nvalues, off_t Nalloc) {
    740 
    741   off_t i;
    742   Image *out;
    743 
    744   char *buffer;
    745   ALLOCATE_ZERO (buffer, char, Nalloc);
    746   out = (Image *) buffer;
    747   // ALLOCATE_ZERO (out, Image, Nvalues);
    748 
    749   for (i = 0; i < Nvalues; i++) {
    750     // this is only safe because the initial 120 bytes in Coords match CoordsDisk
    751     memcpy (&out[i].coords, &in[i].coords, sizeof(CoordsDisk));
    752     out[i].coords.mosaic   = NULL;
    753     out[i].coords.offsetMap = NULL;
    754 
    755     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
    756     strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
    757     out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
    758 
    759     out[i].tzero            = in[i].tzero;
    760     out[i].nstar            = in[i].nstar;
    761     out[i].secz             = in[i].secz;
    762     out[i].NX               = in[i].NX;
    763     out[i].NY               = in[i].NY;
    764     out[i].apmifit          = in[i].apmifit;
    765     out[i].dapmifit         = in[i].dapmifit;
    766     out[i].Mcal             = in[i].Mcal;
    767     out[i].dMcal            = in[i].dMcal;
    768     out[i].Xm               = in[i].Xm;
    769     out[i].photcode         = in[i].photcode;
    770     out[i].exptime          = in[i].exptime;
    771     out[i].sidtime          = in[i].sidtime;
    772     out[i].latitude         = in[i].latitude;
    773 
    774     out[i].RAo              = in[i].RAo;
    775     out[i].DECo             = in[i].DECo;
    776     out[i].Radius           = in[i].Radius;
    777     out[i].refColorBlue     = in[i].refColorBlue;
    778     out[i].refColorRed      = in[i].refColorRed;
    779 
    780     out[i].detection_limit  = in[i].detection_limit;
    781     out[i].saturation_limit = in[i].saturation_limit;
    782     out[i].cerror           = in[i].cerror;
    783     out[i].fwhm_x           = in[i].fwhm_x;
    784     out[i].fwhm_y           = in[i].fwhm_y;
    785     out[i].trate            = in[i].trate;
    786     out[i].ccdnum           = in[i].ccdnum;
    787     out[i].flags            = in[i].flags;
    788     out[i].imageID          = in[i].imageID;
    789     out[i].parentID         = in[i].parentID;
    790     out[i].externID         = in[i].externID;
    791     out[i].sourceID         = in[i].sourceID;
    792 
    793     // as of 2011.02.03, the old Mx,My,..., Mxxxx,Myyyy have been deprecated and replaced
    794     // with the following.  (no real databases used those values -- see
    795     // libdvo/doc/dvo-images.txt)
    796     out[i].nLinkAstrom      = in[i].nLinkAstrom;
    797     out[i].nLinkPhotom      = in[i].nLinkPhotom;
    798     out[i].ubercalDist      = in[i].ubercalDist;
    799     out[i].dXpixSys         = in[i].dXpixSys;
    800     out[i].dYpixSys         = in[i].dYpixSys;
    801     out[i].dMagSys          = in[i].dMagSys;
    802     out[i].nFitAstrom       = in[i].nFitAstrom;
    803     out[i].nFitPhotom       = in[i].nFitPhotom;
    804     out[i].photom_map_id    = in[i].photom_map_id;
    805     out[i].astrom_map_id    = in[i].astrom_map_id;
    806   }
    807   return (out);
    808 }
    809 
    810 Image_PS1_V5 *ImageInternalTo_PS1_V5 (Image *in, off_t Nvalues) {
    811 
    812   off_t i;
    813   Image_PS1_V5 *out;
    814 
    815   ALLOCATE_ZERO (out, Image_PS1_V5, Nvalues);
    816 
    817   for (i = 0; i < Nvalues; i++) {
    818     // this is only save because the initial 120 bytes in Coords match CoordsDisk
    819     memcpy (&out[i].coords, &in[i].coords, sizeof(CoordsDisk));
    820 
    821     // RAW_IMAGE_NAME_LEN == DVO_IMAGE_NAME_LEN
    822     strncpy (out[i].name, in[i].name, RAW_IMAGE_NAME_LEN - 1);
    823     out[i].name[RAW_IMAGE_NAME_LEN - 1] = 0; // force termination
    824 
    825     out[i].tzero            = in[i].tzero;
    826     out[i].nstar            = in[i].nstar;
    827     out[i].secz             = in[i].secz;
    828     out[i].NX               = in[i].NX;
    829     out[i].NY               = in[i].NY;
    830     out[i].apmifit          = in[i].apmifit;
    831     out[i].dapmifit         = in[i].dapmifit;
    832     out[i].Mcal             = in[i].Mcal;
    833     out[i].dMcal            = in[i].dMcal;
    834     out[i].Xm               = in[i].Xm;
    835     out[i].photcode         = in[i].photcode;
    836     out[i].exptime          = in[i].exptime;
    837     out[i].sidtime          = in[i].sidtime;
    838     out[i].latitude         = in[i].latitude;
    839 
    840     out[i].RAo              = in[i].RAo;
    841     out[i].DECo             = in[i].DECo;
    842     out[i].Radius           = in[i].Radius;
    843     out[i].refColorBlue     = in[i].refColorBlue;
    844     out[i].refColorRed      = in[i].refColorRed;
    845 
    846     out[i].detection_limit  = in[i].detection_limit;
    847     out[i].saturation_limit = in[i].saturation_limit;
    848     out[i].cerror           = in[i].cerror;
    849     out[i].fwhm_x           = in[i].fwhm_x;
    850     out[i].fwhm_y           = in[i].fwhm_y;
    851     out[i].trate            = in[i].trate;
    852     out[i].ccdnum           = in[i].ccdnum;
    853     out[i].flags            = in[i].flags;
    854     out[i].imageID          = in[i].imageID;
    855     out[i].parentID         = in[i].parentID;
    856     out[i].externID         = in[i].externID;
    857     out[i].sourceID         = in[i].sourceID;
    858 
    859     // as of 2011.02.03, the old Mx,My,..., Mxxxx,Myyyy have been deprecated and replaced
    860     // with the following.  (no real databases used those values -- see
    861     // libdvo/doc/dvo-images.txt)
    862     out[i].nLinkAstrom      = in[i].nLinkAstrom;
    863     out[i].nLinkPhotom      = in[i].nLinkPhotom;
    864     out[i].ubercalDist      = in[i].ubercalDist;
    865     out[i].dXpixSys         = in[i].dXpixSys;
    866     out[i].dYpixSys         = in[i].dYpixSys;
    867     out[i].dMagSys          = in[i].dMagSys;
    868     out[i].nFitAstrom       = in[i].nFitAstrom;
    869     out[i].nFitPhotom       = in[i].nFitPhotom;
    870     out[i].photom_map_id    = in[i].photom_map_id;
    871     out[i].astrom_map_id    = in[i].astrom_map_id;
    872   }
    873   return (out);
    874 }
    875 
    876 PhotCode *PhotCode_PS1_V5_To_Internal (PhotCode_PS1_V5 *in, off_t Nvalues) {
    877 
    878   off_t i;
    879   PhotCode *out;
    880 
    881   ALLOCATE_ZERO (out, PhotCode, Nvalues);
    882 
    883   for (i = 0; i < Nvalues; i++) {
    884     strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
    885     out[i].name[31] = 0; // force termination
    886 
    887     out[i].code  = in[i].code;         
    888     out[i].type  = in[i].type;         
    889     out[i].C     = in[i].C;           
    890     out[i].dC    = in[i].dC;           
    891     out[i].dX    = in[i].dX;           
    892     out[i].K     = in[i].K;           
    893     out[i].c1    = in[i].c1;           
    894     out[i].c2    = in[i].c2;           
    895     out[i].equiv = in[i].equiv;       
    896     out[i].Nc    = in[i].Nc;           
    897     memcpy (out[i].X, in[i].X, 4*sizeof(float));           
    898 
    899     out[i].astromErrSys      = in[i].astromErrSys;
    900     out[i].astromErrScale    = in[i].astromErrScale;
    901     out[i].astromErrMagScale = in[i].astromErrMagScale;
    902     out[i].photomErrSys      = in[i].photomErrSys;
    903 
    904     out[i].photomPoorMask      = in[i].photomPoorMask;
    905     out[i].photomBadMask       = in[i].photomBadMask;
    906     out[i].astromPoorMask      = in[i].astromPoorMask;
    907     out[i].astromBadMask       = in[i].astromBadMask;
    908   }
    909   return (out);
    910 }
    911 
    912 PhotCode_PS1_V5 *PhotCode_Internal_To_PS1_V5 (PhotCode *in, off_t Nvalues) {
    913 
    914   off_t i;
    915   PhotCode_PS1_V5 *out;
    916 
    917   ALLOCATE_ZERO (out, PhotCode_PS1_V5, Nvalues);
    918 
    919   for (i = 0; i < Nvalues; i++) {
    920     strncpy (out[i].name, in[i].name, 31); // out[32], in[32]
    921     out[i].name[31] = 0; // force termination
    922 
    923     out[i].code  = in[i].code;         
    924     out[i].type  = in[i].type;         
    925     out[i].C     = in[i].C;           
    926     out[i].dC    = in[i].dC;           
    927     out[i].dX    = in[i].dX;           
    928     out[i].K     = in[i].K;           
    929     out[i].c1    = in[i].c1;           
    930     out[i].c2    = in[i].c2;           
    931     out[i].equiv = in[i].equiv;       
    932     out[i].Nc    = in[i].Nc;           
    933     memcpy (out[i].X, in[i].X, 4*sizeof(float));           
    934 
    935     out[i].astromErrSys      = in[i].astromErrSys;
    936     out[i].astromErrScale    = in[i].astromErrScale;
    937     out[i].astromErrMagScale = in[i].astromErrMagScale;
    938     out[i].photomErrSys      = in[i].photomErrSys;
    939 
    940     out[i].photomPoorMask      = in[i].photomPoorMask;
    941     out[i].photomBadMask       = in[i].photomBadMask;
    942     out[i].astromPoorMask      = in[i].astromPoorMask;
    943     out[i].astromBadMask       = in[i].astromBadMask;
    944   }
    945   return (out);
    946 }
    947 
    948 /*********************** old / alternate version **********************/
    949 
    950 // 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
    951 Average *Average_PS1_V5alt_ToInternal (Average_PS1_V5alt *in, off_t Nvalues) {
    952 
    953   off_t i;
    954   Average *out;
    955 
    956   ALLOCATE_ZERO (out, Average, Nvalues);
    957 
    958   for (i = 0; i < Nvalues; i++) {
    959     dvo_average_init (&out[i]);
    960 
    961     out[i].R              = in[i].R;     
    962     out[i].D              = in[i].D;     
    963     out[i].dR             = in[i].dR;
    964     out[i].dD             = in[i].dD;
    965     out[i].uR             = in[i].uR;
    966     out[i].uD             = in[i].uD;
    967     out[i].duR            = in[i].duR;
    968     out[i].duD            = in[i].duD;
    969     out[i].P              = in[i].P;
    970     out[i].dP             = in[i].dP;
    971                          
    972     out[i].Rstk           = in[i].Rstk;     
    973     out[i].Dstk           = in[i].Dstk;     
    974     out[i].dRstk          = in[i].dRstk;
    975     out[i].dDstk          = in[i].dDstk;
    976                          
    977     out[i].ChiSqAve       = in[i].ChiSqAve;     
    978     out[i].ChiSqPM        = in[i].ChiSqPM;     
    979     out[i].ChiSqPar       = in[i].ChiSqPar;     
    980     out[i].Tmean          = in[i].Tmean;     
    981     out[i].Trange         = in[i].Trange;     
    982                          
    983     out[i].psfQF          = in[i].psfQF;
    984     out[i].psfQFperf      = in[i].psfQFperf;
    985     out[i].stargal        = in[i].stargal;     
    986     out[i].Npos           = in[i].Npos;     
    987                          
    988     out[i].Nmeasure       = in[i].Nmeasure;     
    989     out[i].Nmissing       = in[i].Nmissing;     
    990     out[i].Nlensing       = in[i].Nlensing;     
    991     out[i].Nlensobj       = in[i].Nlensobj;     
    992     out[i].Nextend        = in[i].Nextend;     
    993                          
    994     out[i].measureOffset  = in[i].measureOffset;
    995     out[i].missingOffset  = in[i].missingOffset;
    996     out[i].lensingOffset  = in[i].lensingOffset;
    997     out[i].lensobjOffset  = in[i].lensobjOffset;
    998     out[i].starparOffset  = in[i].starparOffset;
    999     out[i].extendOffset   = in[i].extendOffset;
    1000                          
    1001     out[i].refColorBlue   = in[i].refColorBlue;
    1002     out[i].refColorRed    = in[i].refColorRed;
    1003                          
    1004     out[i].flags          = in[i].flags;   
    1005     out[i].photFlagsUpper = in[i].photFlagsUpper;   
    1006     out[i].photFlagsLower = in[i].photFlagsLower;   
    1007     out[i].objID          = in[i].objID;
    1008     out[i].catID          = in[i].catID;
    1009     out[i].extID          = in[i].extID;
    1010     out[i].extIDgc        = in[i].extIDgc;
    1011   }
    1012   return (out);
    1013 }
    1014 
    1015 int gfits_convert_Average_PS1_V5alt (Average_PS1_V5alt *data, off_t size, off_t nitems) {
     1457int gfits_convert_Measure_PS1_V5alt (Measure_PS1_V5alt *data, off_t size, off_t nitems) {
    10161458
    10171459  off_t i;
    10181460  unsigned char *byte, tmp;
    10191461
    1020   if (size != 184) {
    1021     fprintf (stderr, "WARNING: mismatch in data types Average_PS1_V5alt: "OFF_T_FMT" vs %d\n",  size,  184);
     1462  if (size != 232) {
     1463    fprintf (stderr, "WARNING: mismatch in data types Measure_PS1_V5alt: "OFF_T_FMT" vs %d\n",  size,  232);
    10221464    return (FALSE);
    10231465  }
     
    10291471# ifdef BYTE_SWAP
    10301472  byte = (unsigned char *) data;
    1031   for (i = 0; i < nitems; i++, byte += 184) {
     1473  for (i = 0; i < nitems; i++, byte += 232) {
    10321474    /** BYTE SWAP **/
    10331475    SWAP_DBLE (0); // RA
    10341476    SWAP_DBLE (8); // DEC
    1035     SWAP_WORD (16); // RA_ERR
    1036     SWAP_WORD (20); // DEC_ERR
    1037     SWAP_WORD (24); // U_RA
    1038     SWAP_WORD (28); // U_DEC
    1039     SWAP_WORD (32); // V_RA_ERR
    1040     SWAP_WORD (36); // V_DEC_ERR
    1041     SWAP_WORD (40); // PAR
    1042     SWAP_WORD (44); // PAR_ERR
    1043     SWAP_DBLE (48); // RA_STK
    1044     SWAP_DBLE (56); // DEC_STK
    1045     SWAP_WORD (64); // RA_STK_ERR
    1046     SWAP_WORD (68); // DEC_STK_ERR
    1047     SWAP_WORD (72); // CHISQ_POS
    1048     SWAP_WORD (76); // CHISQ_PM
    1049     SWAP_WORD (80); // CHISQ_PAP
    1050     SWAP_WORD (84); // MEAN_EPOCH
    1051     SWAP_WORD (88); // TIME_RANGE
    1052     SWAP_WORD (92); // PSF_QF
    1053     SWAP_WORD (96); // PSF_QF_PERF
    1054     SWAP_WORD (100); // STARGAL_SEP
    1055     SWAP_BYTE (104); // NUMBER_POS
    1056     SWAP_BYTE (106); // NMEASURE
    1057     SWAP_BYTE (108); // NMISSING
    1058     SWAP_BYTE (110); // NLENSING
    1059     SWAP_BYTE (112); // NLENSOBJ
    1060     SWAP_BYTE (114); // NEXTEND
    1061     SWAP_WORD (116); // OFF_MEASURE
    1062     SWAP_WORD (120); // OFF_MISSING
    1063     SWAP_WORD (124); // OFF_LENSING
    1064     SWAP_WORD (128); // OFF_LENSOBJ
    1065     SWAP_WORD (132); // OFF_EXTEND
    1066     SWAP_WORD (136); // OFF_PARAMS
    1067     SWAP_WORD (140); // REF_COLOR_BLUE
    1068     SWAP_WORD (144); // REF_COLOR_RED
    1069     SWAP_WORD (148); // FLAGS
    1070     SWAP_WORD (152); // PHOTFLAGS_U
    1071     SWAP_WORD (156); // PHOTFLAGS_L
    1072     SWAP_WORD (160); // OBJ_ID
    1073     SWAP_WORD (164); // CAT_ID
    1074     SWAP_DBLE (168); // EXT_ID
    1075     SWAP_DBLE (176); // EXT_ID_GC
     1477    SWAP_WORD (16); // MAG
     1478    SWAP_WORD (20); // MAG_ERR
     1479    SWAP_WORD (24); // M_APER
     1480    SWAP_WORD (28); // M_APER_ERR
     1481    SWAP_WORD (32); // M_KRON
     1482    SWAP_WORD (36); // M_KRON_ERR
     1483    SWAP_WORD (40); // M_CAL
     1484    SWAP_WORD (44); // MAG_CAL_ERR
     1485    SWAP_WORD (48); // M_TIME
     1486    SWAP_WORD (52); // FLUX_PSF
     1487    SWAP_WORD (56); // FLUX_PSF_ERR
     1488    SWAP_WORD (60); // FLUX_KRON
     1489    SWAP_WORD (64); // FLUX_KRON_ERR
     1490    SWAP_WORD (68); // FLUX_AP
     1491    SWAP_WORD (72); // FLUX_AP_ERR
     1492    SWAP_WORD (76); // AIRMASS
     1493    SWAP_WORD (80); // AZ
     1494    SWAP_WORD (84); // X_CCD
     1495    SWAP_WORD (88); // Y_CCD
     1496    SWAP_WORD (92); // X_FIX
     1497    SWAP_WORD (96); // Y_FIX
     1498    SWAP_WORD (100); // X_OFF_KH
     1499    SWAP_WORD (104); // Y_OFF_KH
     1500    SWAP_WORD (108); // X_OFF_DCR
     1501    SWAP_WORD (112); // Y_OFF_DCR
     1502    SWAP_WORD (116); // R_OFF_GAL
     1503    SWAP_WORD (120); // D_OFF_GAL
     1504    SWAP_WORD (124); // SKY_FLUX
     1505    SWAP_WORD (128); // SKY_FLUX_ERR
     1506    SWAP_WORD (132); // TIME
     1507    SWAP_WORD (136); // AVE_REF
     1508    SWAP_WORD (140); // DET_ID
     1509    SWAP_WORD (144); // OBJ_ID
     1510    SWAP_WORD (148); // CAT_ID
     1511    SWAP_DBLE (152); // EXT_ID
     1512    SWAP_WORD (160); // IMAGE_ID
     1513    SWAP_WORD (164); // PSF_QF
     1514    SWAP_WORD (168); // PSF_QF_PEFECT
     1515    SWAP_WORD (172); // PSF_CHISQ
     1516    SWAP_WORD (176); // PSF_NDOF
     1517    SWAP_WORD (180); // PSF_NPIX
     1518    SWAP_WORD (184); // PHOT_FLAGS
     1519    SWAP_WORD (188); // EXT_NSIGMA
     1520    SWAP_BYTE (192); // FWHM_MAJOR
     1521    SWAP_BYTE (194); // FWHM_MINOR
     1522    SWAP_BYTE (196); // PSF_THETA
     1523    SWAP_BYTE (198); // MXX
     1524    SWAP_BYTE (200); // MXY
     1525    SWAP_BYTE (202); // MYY
     1526    SWAP_BYTE (204); // TIME_MSEC
     1527    SWAP_BYTE (206); // PHOTCODE
     1528    SWAP_BYTE (208); // X_CCD_ERR
     1529    SWAP_BYTE (210); // Y_CCD_ERR
     1530    SWAP_BYTE (212); // POS_SYS_ERR
     1531    SWAP_BYTE (214); // POSANGLE
     1532    SWAP_WORD (216); // PLTSCALE
     1533    SWAP_WORD (220); // DB_FLAGS
     1534    SWAP_WORD (224); // PHOT_FLAGS
     1535    SWAP_WORD (228); // PADDING
    10761536  }
    10771537# endif 
     
    10801540}
    10811541
    1082 /*** add test of EXTNAME and header-defined columns? ***/
    10831542/* return internal structure representation */
    1084 Average_PS1_V5alt *gfits_table_get_Average_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped) {
     1543Measure_PS1_V5alt *gfits_table_get_Measure_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped) {
    10851544
    10861545  int Ncols;
    1087   Average_PS1_V5alt *data;
     1546  Measure_PS1_V5alt *data;
    10881547
    10891548  Ncols = ftable[0].header[0].Naxis[0];
    1090   if (Ncols != 184) {
    1091     fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 184);
     1549  if (Ncols != 232) {
     1550    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 232);
    10921551    return NULL;
    10931552  }
    10941553
    10951554  *Ndata = ftable[0].header[0].Naxis[1];
    1096   data = (Average_PS1_V5alt *) ftable[0].buffer;
     1555  data = (Measure_PS1_V5alt *) ftable[0].buffer;
    10971556  if ((swapped == NULL) || (*swapped == FALSE)) {
    1098     if (!gfits_convert_Average_PS1_V5alt (data, sizeof (Average_PS1_V5alt), *Ndata)) {
     1557    if (!gfits_convert_Measure_PS1_V5alt (data, sizeof (Measure_PS1_V5alt), *Ndata)) {
    10991558      return NULL;
    11001559    }
     
    11051564}
    11061565
    1107 /****** alt secfilt **********/
    1108 
    1109 SecFilt *SecFilt_PS1_V5alt_ToInternal (SecFilt_PS1_V5alt *in, off_t Nvalues) {
    1110 
    1111   off_t i;
    1112   SecFilt *out;
    1113 
    1114   ALLOCATE_ZERO (out, SecFilt, Nvalues);
    1115 
    1116   for (i = 0; i < Nvalues; i++) {
    1117     dvo_secfilt_init (&out[i]);
    1118 
    1119     out[i].M             = in[i].M;     
    1120     out[i].dM            = in[i].dM;     
    1121     out[i].Map           = in[i].Map;     
    1122     out[i].dMap          = in[i].dMap;     
    1123     out[i].sMap          = in[i].sMap;     
    1124     out[i].Mkron         = in[i].Mkron;     
    1125     out[i].dMkron        = in[i].dMkron;     
    1126 
    1127     out[i].Mstdev        = in[i].Mstdev;     
    1128     out[i].Mmin          = in[i].Mmin;     
    1129     out[i].Mmax          = in[i].Mmax;     
    1130     out[i].Mchisq        = in[i].Mchisq;     
    1131 
    1132     out[i].Ncode         = in[i].Ncode;
    1133     out[i].Nused         = in[i].Nused;
    1134     out[i].NusedKron     = in[i].NusedKron;
    1135     out[i].NusedAp       = in[i].NusedAp;
    1136 
    1137     out[i].flags         = in[i].flags;     
    1138 
    1139     out[i].MpsfStk       = in[i].MpsfStk;
    1140     out[i].FpsfStk       = in[i].FpsfStk;
    1141     out[i].dFpsfStk      = in[i].dFpsfStk;
    1142 
    1143     out[i].MkronStk      = in[i].MkronStk;
    1144     out[i].FkronStk      = in[i].FkronStk;
    1145     out[i].dFkronStk     = in[i].dFkronStk;
    1146 
    1147     out[i].MapStk        = in[i].MapStk;
    1148     out[i].FapStk        = in[i].FapStk;
    1149     out[i].dFapStk       = in[i].dFapStk;
    1150 
    1151     out[i].stackPrmryOff = in[i].stackPrmryOff;     
    1152     out[i].stackBestOff  = in[i].stackBestOff;     
    1153 
    1154     out[i].MpsfWrp       = in[i].MpsfWrp;
    1155     out[i].FpsfWrp       = in[i].FpsfWrp;
    1156     out[i].dFpsfWrp      = in[i].dFpsfWrp;
    1157     out[i].sFpsfWrp      = in[i].sFpsfWrp;
    1158 
    1159     out[i].MkronWrp      = in[i].MkronWrp;
    1160     out[i].FkronWrp      = in[i].FkronWrp;
    1161     out[i].dFkronWrp     = in[i].dFkronWrp;
    1162     out[i].sFkronWrp     = in[i].sFkronWrp;
    1163 
    1164     out[i].MapWrp        = in[i].MapWrp;
    1165     out[i].FapWrp        = in[i].FapWrp;
    1166     out[i].dFapWrp       = in[i].dFapWrp;
    1167     out[i].sFapWrp       = in[i].sFapWrp;
    1168 
    1169     out[i].NusedWrp      = in[i].NusedWrp;
    1170     out[i].NusedKronWrp  = in[i].NusedKronWrp;
    1171     out[i].NusedApWrp    = in[i].NusedApWrp;
    1172 
    1173     out[i].ubercalDist   = in[i].ubercalDist;     
    1174   }
    1175   return (out);
    1176 }
    1177 
    1178 int gfits_convert_SecFilt_PS1_V5alt (SecFilt_PS1_V5alt *data, off_t size, off_t nitems) {
    1179 
    1180   off_t i;
    1181   unsigned char *byte, tmp;
    1182 
    1183   if (size != 160) {
    1184     fprintf (stderr, "WARNING: mismatch in data types SecFilt_PS1_V5alt: "OFF_T_FMT" vs %d\n",  size,  160);
    1185     return (FALSE);
    1186   }
    1187 
    1188   /* provide initial values to avoid compiler warnings for non-BYTE_SWAP arch */
    1189   i = tmp = 0;
    1190   byte = NULL;
    1191 
    1192 # ifdef BYTE_SWAP
    1193   byte = (unsigned char *) data;
    1194   for (i = 0; i < nitems; i++, byte += 160) {
    1195     /** BYTE SWAP **/
    1196     SWAP_WORD (0); // MAG
    1197     SWAP_WORD (4); // MAG_ERR
    1198     SWAP_WORD (8); // MAG_AP
    1199     SWAP_WORD (12); // MAG_AP_ERR
    1200     SWAP_WORD (16); // MAG_AP_STDEV
    1201     SWAP_WORD (20); // MAG_KRON
    1202     SWAP_WORD (24); // MAG_KRON_ERR
    1203     SWAP_WORD (28); // MAG_KRON_STDEV
    1204     SWAP_WORD (32); // MAG_STDEV
    1205     SWAP_WORD (36); // MAG_MIN
    1206     SWAP_WORD (40); // MAG_MAX
    1207     SWAP_WORD (44); // MAG_CHI
    1208     SWAP_BYTE (48); // NCODE
    1209     SWAP_BYTE (50); // NUSED
    1210     SWAP_BYTE (52); // NUSED_KRON
    1211     SWAP_BYTE (54); // NUSED_AP
    1212     SWAP_WORD (56); // FLAGS
    1213     SWAP_WORD (60); // MAG_PSF_STK
    1214     SWAP_WORD (64); // FLUX_PSF_STK
    1215     SWAP_WORD (68); // FLUX_PSF_STK_ERR
    1216     SWAP_WORD (72); // MAG_KRON_STK
    1217     SWAP_WORD (76); // FLUX_KRON_STK
    1218     SWAP_WORD (80); // FLUX_KRON_STK_ERR
    1219     SWAP_WORD (84); // MAG_AP_STK
    1220     SWAP_WORD (88); // FLUX_AP_STK
    1221     SWAP_WORD (92); // FLUX_AP_STK_ERR
    1222     SWAP_WORD (96); // STACK_PRIMARY_OFF
    1223     SWAP_WORD (100); // STACK_BEST_OFF
    1224     SWAP_WORD (104); // MAG_PSF_WRP
    1225     SWAP_WORD (108); // FLUX_PSF_WRP
    1226     SWAP_WORD (112); // FLUX_PSF_WRP_ERR
    1227     SWAP_WORD (116); // FLUX_PSF_WRP_STD
    1228     SWAP_WORD (120); // MAG_KRON_WRP
    1229     SWAP_WORD (124); // FLUX_KRON_WRP
    1230     SWAP_WORD (128); // FLUX_KRON_WRP_ERR
    1231     SWAP_WORD (132); // FLUX_KRON_WRP_STD
    1232     SWAP_WORD (136); // MAG_AP_WRP
    1233     SWAP_WORD (140); // FLUX_AP_WRP
    1234     SWAP_WORD (144); // FLUX_AP_WRP_ERR
    1235     SWAP_WORD (148); // FLUX_AP_WRP_STD
    1236     SWAP_BYTE (152); // NUSED_WRP
    1237     SWAP_BYTE (154); // NUSED_KRON_WRP
    1238     SWAP_BYTE (156); // NUSED_AP_WRP
    1239     SWAP_BYTE (158); // UBERCAL_DIST
    1240   }
    1241 # endif 
    1242 
    1243   return (TRUE);
    1244 }
    1245 
    1246 /*** add test of EXTNAME and header-defined columns? ***/
    1247 /* return internal structure representation */
    1248 SecFilt_PS1_V5alt *gfits_table_get_SecFilt_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped) {
    1249 
    1250   int Ncols;
    1251   SecFilt_PS1_V5alt *data;
    1252 
    1253   Ncols = ftable[0].header[0].Naxis[0];
    1254   if (Ncols != 160) {
    1255     fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 160);
    1256     return NULL;
    1257   }
    1258 
    1259   *Ndata = ftable[0].header[0].Naxis[1];
    1260   data = (SecFilt_PS1_V5alt *) ftable[0].buffer;
    1261   if ((swapped == NULL) || (*swapped == FALSE)) {
    1262     if (!gfits_convert_SecFilt_PS1_V5alt (data, sizeof (SecFilt_PS1_V5alt), *Ndata)) {
    1263       return NULL;
    1264     }
    1265     gfits_table_scale_data (ftable);
    1266     if (swapped != NULL) *swapped = TRUE;
    1267   }
    1268   return (data);
    1269 }
    1270 
    1271 Lensing *Lensing_PS1_V5_R0_ToInternal (Lensing_PS1_V5_R0 *in, off_t Nvalues) {
    1272 
    1273   off_t i;
    1274   Lensing *out;
    1275 
    1276   ALLOCATE_ZERO (out, Lensing, Nvalues);
    1277 
    1278   for (i = 0; i < Nvalues; i++) {
    1279     dvo_lensing_init (&out[i]);
    1280 
    1281     out[i].X11_sm_obj  = in[i].X11_sm_obj;     
    1282     out[i].X12_sm_obj  = in[i].X12_sm_obj;     
    1283     out[i].X22_sm_obj  = in[i].X22_sm_obj;     
    1284     out[i].E1_sm_obj   = in[i].E1_sm_obj;     
    1285     out[i].E2_sm_obj   = in[i].E2_sm_obj;     
    1286                                          
    1287     out[i].X11_sh_obj  = in[i].X11_sh_obj;     
    1288     out[i].X12_sh_obj  = in[i].X12_sh_obj;     
    1289     out[i].X22_sh_obj  = in[i].X22_sh_obj;     
    1290     out[i].E1_sh_obj   = in[i].E1_sh_obj;     
    1291     out[i].E2_sh_obj   = in[i].E2_sh_obj;     
    1292                                          
    1293     out[i].X11_sm_psf  = in[i].X11_sm_psf;
    1294     out[i].X12_sm_psf  = in[i].X12_sm_psf;
    1295     out[i].X22_sm_psf  = in[i].X22_sm_psf;
    1296     out[i].E1_sm_psf   = in[i].E1_sm_psf;
    1297     out[i].E2_sm_psf   = in[i].E2_sm_psf;     
    1298                                          
    1299     out[i].X11_sh_psf  = in[i].X11_sh_psf;
    1300     out[i].X12_sh_psf  = in[i].X12_sh_psf;
    1301     out[i].X22_sh_psf  = in[i].X22_sh_psf;
    1302     out[i].E1_sh_psf   = in[i].E1_sh_psf;
    1303     out[i].E2_sh_psf   = in[i].E2_sh_psf;
    1304 
    1305     out[i].F_ApR5      = in[i].F_ApR5;
    1306     out[i].dF_ApR5     = in[i].dF_ApR5;
    1307     out[i].sF_ApR5     = in[i].sF_ApR5;
    1308     out[i].fF_ApR5     = in[i].fF_ApR5;
    1309                                    
    1310     out[i].F_ApR6      = in[i].F_ApR6;
    1311     out[i].dF_ApR6     = in[i].dF_ApR6;
    1312     out[i].sF_ApR6     = in[i].sF_ApR6;
    1313     out[i].fF_ApR6     = in[i].fF_ApR6;
    1314                                    
    1315     out[i].detID       = in[i].detID;
    1316     out[i].objID       = in[i].objID;
    1317     out[i].catID       = in[i].catID;
    1318     out[i].averef      = in[i].averef;
    1319   }
    1320   return (out);
    1321 }
    1322 
    1323 Lensing *Lensing_PS1_V5_R1_ToInternal (Lensing_PS1_V5_R1 *in, off_t Nvalues) {
    1324 
    1325   off_t i;
    1326   Lensing *out;
    1327 
    1328   ALLOCATE_ZERO (out, Lensing, Nvalues);
    1329 
    1330   for (i = 0; i < Nvalues; i++) {
    1331     dvo_lensing_init (&out[i]);
    1332 
    1333     out[i].X11_sm_obj  = in[i].X11_sm_obj;     
    1334     out[i].X12_sm_obj  = in[i].X12_sm_obj;     
    1335     out[i].X22_sm_obj  = in[i].X22_sm_obj;     
    1336     out[i].E1_sm_obj   = in[i].E1_sm_obj;     
    1337     out[i].E2_sm_obj   = in[i].E2_sm_obj;     
    1338                                          
    1339     out[i].X11_sh_obj  = in[i].X11_sh_obj;     
    1340     out[i].X12_sh_obj  = in[i].X12_sh_obj;     
    1341     out[i].X22_sh_obj  = in[i].X22_sh_obj;     
    1342     out[i].E1_sh_obj   = in[i].E1_sh_obj;     
    1343     out[i].E2_sh_obj   = in[i].E2_sh_obj;     
    1344                                          
    1345     out[i].X11_sm_psf  = in[i].X11_sm_psf;
    1346     out[i].X12_sm_psf  = in[i].X12_sm_psf;
    1347     out[i].X22_sm_psf  = in[i].X22_sm_psf;
    1348     out[i].E1_sm_psf   = in[i].E1_sm_psf;
    1349     out[i].E2_sm_psf   = in[i].E2_sm_psf;     
    1350                                          
    1351     out[i].X11_sh_psf  = in[i].X11_sh_psf;
    1352     out[i].X12_sh_psf  = in[i].X12_sh_psf;
    1353     out[i].X22_sh_psf  = in[i].X22_sh_psf;
    1354     out[i].E1_sh_psf   = in[i].E1_sh_psf;
    1355     out[i].E2_sh_psf   = in[i].E2_sh_psf;
    1356 
    1357     out[i].F_ApR5      = in[i].F_ApR5;
    1358     out[i].dF_ApR5     = in[i].dF_ApR5;
    1359     out[i].sF_ApR5     = in[i].sF_ApR5;
    1360     out[i].fF_ApR5     = in[i].fF_ApR5;
    1361                                    
    1362     out[i].F_ApR6      = in[i].F_ApR6;
    1363     out[i].dF_ApR6     = in[i].dF_ApR6;
    1364     out[i].sF_ApR6     = in[i].sF_ApR6;
    1365     out[i].fF_ApR6     = in[i].fF_ApR6;
    1366                                    
    1367     out[i].detID       = in[i].detID;
    1368     out[i].objID       = in[i].objID;
    1369     out[i].catID       = in[i].catID;
    1370     out[i].averef      = in[i].averef;
    1371 
    1372     out[i].imageID     = in[i].imageID;
    1373   }
    1374   return (out);
    1375 }
    1376 
     1566
  • trunk/Ohana/src/libdvo/src/dvo_tiny_values.c

    r37807 r38062  
    22
    33void CopyAverageToTiny (AverageTiny *averageT, Average *average) {
     4  memset (averageT, 0, sizeof(AverageTiny));
    45  averageT[0].R             = average[0].R;
    56  averageT[0].D             = average[0].D;
     
    1415
    1516void CopyMeasureToTiny (MeasureTiny *measureT, Measure *measure) {
     17  memset (measureT, 0, sizeof(MeasureTiny));
    1618  measureT[0].R          = measure[0].R;
    1719  measureT[0].D          = measure[0].D;
Note: See TracChangeset for help on using the changeset viewer.