IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 37246


Ignore:
Timestamp:
Aug 12, 2014, 4:10:18 PM (12 years ago)
Author:
eugene
Message:

merge changes from branches/eam_branches/ipp-20140717

Location:
trunk
Files:
7 deleted
74 edited
40 copied

Legend:

Unmodified
Added
Removed
  • trunk/Ohana

  • trunk/Ohana/src/addstar/src/ReadStarsFITS.c

    r37036 r37246  
    182182    stars[i].measure.psfNdof    = NAN_S_INT; // not provided by SMPDATA:
    183183    stars[i].measure.psfNpix    = NAN_S_INT; // not provided by SMPDATA:
    184     stars[i].measure.crNsigma   = NAN;       // not provided by SMPDATA:
    185184    stars[i].measure.extNsigma  = NAN;       // not provided by SMPDATA:
    186185
     
    251250    stars[i].measure.psfNdof    = NAN_S_INT; // not provided by PS1_DEV_0:
    252251    stars[i].measure.psfNpix    = NAN_S_INT; // not provided by PS1_DEV_0:
    253     stars[i].measure.crNsigma   = NAN;       // not provided by PS1_DEV_0:
    254252    stars[i].measure.extNsigma  = NAN;        // not provided by PS1_DEV_0:
    255253
     
    323321    stars[i].measure.psfNdof    = NAN_S_INT; // not provided by PS1_DEV_1:
    324322    stars[i].measure.psfNpix    = NAN_S_INT; // not provided by PS1_DEV_1:
    325     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    326323    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    327324
     
    408405    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    409406    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    410     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    411407    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    412408
     
    494490    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    495491    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    496     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    497492    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    498493
     
    572567    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    573568    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    574     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    575569    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    576570
     
    653647    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    654648    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    655     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    656649    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    657650
     
    665658                       
    666659    stars[i].measure.photFlags  = ps1data[i].flags;
     660    stars[i].measure.photFlags2 = ps1data[i].flags2;
    667661
    668662    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    738732    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    739733    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    740     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    741734    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    742735
     
    750743                       
    751744    stars[i].measure.photFlags  = ps1data[i].flags;
     745    stars[i].measure.photFlags2 = ps1data[i].flags2;
    752746
    753747    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    823817    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    824818    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    825     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    826819    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    827820
     
    835828                       
    836829    stars[i].measure.photFlags  = ps1data[i].flags;
     830    stars[i].measure.photFlags2 = ps1data[i].flags2;
    837831
    838832    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    908902    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    909903    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    910     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    911904    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    912905
     
    920913                       
    921914    stars[i].measure.photFlags  = ps1data[i].flags;
     915    stars[i].measure.photFlags2 = ps1data[i].flags2;
    922916
    923917    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    10381032    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    10391033    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    1040     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    10411034    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    10421035
     
    10501043                       
    10511044    stars[i].measure.photFlags  = ps1data[i].flags;
     1045    stars[i].measure.photFlags2 = ps1data[i].flags2;
    10521046
    10531047    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    11201114    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    11211115    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    1122     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    11231116    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    11241117
     
    11321125                       
    11331126    stars[i].measure.photFlags  = ps1data[i].flags;
     1127    stars[i].measure.photFlags2 = ps1data[i].flags2;
    11341128
    11351129    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    12021196    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    12031197    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    1204     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    12051198    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    12061199
     
    12141207                       
    12151208    stars[i].measure.photFlags  = ps1data[i].flags;
     1209    stars[i].measure.photFlags2 = ps1data[i].flags2;
    12161210
    12171211    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    12841278    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    12851279    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    1286     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    12871280    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    12881281
     
    12961289                       
    12971290    stars[i].measure.photFlags  = ps1data[i].flags;
     1291    stars[i].measure.photFlags2 = ps1data[i].flags2;
    12981292
    12991293    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    13651359    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    13661360    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    1367     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    13681361    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    13691362
     
    13771370                       
    13781371    stars[i].measure.photFlags  = ps1data[i].flags;
     1372    stars[i].measure.photFlags2 = ps1data[i].flags2;
    13791373
    13801374    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
     
    14511445    stars[i].measure.psfNdof    = ps1data[i].psfNdof;
    14521446    stars[i].measure.psfNpix    = ps1data[i].psfNpix;
    1453     stars[i].measure.crNsigma   = ps1data[i].crNsigma;
    14541447    stars[i].measure.extNsigma  = ps1data[i].extNsigma;
    14551448
     
    14631456                       
    14641457    stars[i].measure.photFlags  = ps1data[i].flags;
     1458    stars[i].measure.photFlags2 = ps1data[i].flags2;
    14651459
    14661460    // this is may optionally be replaced by the internal sequence (see FilterStars.c)
  • trunk/Ohana/src/addstar/src/mkcmf.c

    r37036 r37246  
    3131static Coords coords;
    3232
     33static char reserved[] =  "Reserved space.  This line can be used to add a new FITS card.";
     34
    3335int main (int argc, char **argv) {
    3436
     
    305307  PutCoords (&coords, &header);
    306308  gfits_modify (&header, "EXTNAME",   "%s", 1, exthead);
     309
     310  int i;
     311  for (i = 1; i < 32; i++) {
     312    gfits_modify_alt (&header, "COMMENT", "%C", i, reserved);
     313  }
    307314
    308315  ftable.header = &theader;
  • trunk/Ohana/src/dvopsps/include/dvopsps.h

    r36188 r37246  
    99
    1010typedef struct {
    11   int imageID;
    12   unsigned int ippDetectID;
     11  uint64_t objID;
    1312  uint64_t detectID;
    1413  uint64_t ippObjID;
    15   uint64_t objID;
    16   int      photcode;
    17   unsigned int flags;
    18   float zp;
    19   float zpErr;
    20   float airMass;
    21   float expTime;
     14  unsigned int ippDetectID;
     15  int imageID;
     16  int catID;
    2217  double ra;
    2318  double dec;
    2419  float raErr;
    2520  float decErr;
     21  float zp;
     22  float telluricExt;
     23  float airmass;
     24  float expTime;
     25
     26  float Mpsf;
     27  float dMpsf;
     28  float Mkron;
     29  float dMkron;
     30  float Map;
     31  float dMap;
     32
     33  unsigned int flags;
    2634} Detections;
    2735
     
    7886     
    7987int    insert_detections_mysql_commit     PROTO((IOBuffer *buffer, MYSQL *mysql));
    80 int    insert_detections_mysql_value      PROTO((IOBuffer *buffer, Average *average, Measure *measure));
     88// int    insert_detections_mysql_value      PROTO((IOBuffer *buffer, Average *average, Measure *measure));
    8189int    insert_detections_mysql_init       PROTO((IOBuffer *buffer));
    8290
    8391int    insert_detections_mysql_array      PROTO((MYSQL *mysql, Detections *detections, int Ndetections));
    8492int    insert_detections_mysql_detvalue   PROTO((IOBuffer *buffer, Detections *detection));
     93int    assign_detection_values            PROTO((Detections *detection, Measure *measure, Average *average));
    8594
    8695int    init_detections                    PROTO(());
  • trunk/Ohana/src/dvopsps/src/DetectionOps.c

    r35578 r37246  
    11# include "dvopsps.h"
    2 # define BZERO_INT16 1.0*0x8000
    3 # define BZERO_INT32 1.0*0x80000000
    4 # define BZERO_INT64 1.0*0x8000000000000000
    52
    63# define GET_COLUMN(OUT,NAME,TYPE)                                      \
     
    4946 
    5047  // need to create and assign to flat-field correction
    51   GET_COLUMN(imageID     , "imageID",     int);
    52   GET_COLUMN(ippDetectID , "ippDetectID", int);
     48  GET_COLUMN(objID       , "objID",       int64_t);
    5349  GET_COLUMN(detectID    , "detectID",    int64_t);
    5450  GET_COLUMN(ippObjID    , "ippObjID",    int64_t);
    55   GET_COLUMN(objID       , "objID",       int64_t);
    56   GET_COLUMN(photcode    , "photcode",    int);
    57   GET_COLUMN(flags       , "flags",       int);
    58   GET_COLUMN(zp          , "zp",          float);
    59   GET_COLUMN(zpErr       , "zpErr",       float);
    60   GET_COLUMN(airMass     , "airMass",     float);
    61   GET_COLUMN(expTime     , "expTime",     float);
     51  GET_COLUMN(ippDetectID , "ippDetectID", int);
     52  GET_COLUMN(imageID     , "imageID",     int);
     53  GET_COLUMN(catID       , "catID",       int);
    6254  GET_COLUMN(ra          , "ra",          double); // XXX signed vs unsigned?
    6355  GET_COLUMN(dec         , "dec",         double);
    6456  GET_COLUMN(raErr       , "raErr",       float);
    6557  GET_COLUMN(decErr      , "decErr",      float);
     58  GET_COLUMN(zp          , "zp",          float);
     59  GET_COLUMN(telluricExt , "telluricExt", float);
     60  GET_COLUMN(airmass     , "airmass",     float);
     61  GET_COLUMN(expTime     , "expTime",     float);
     62  GET_COLUMN(Mpsf        , "Mpsf",        float);
     63  GET_COLUMN(dMpsf       , "dMpsf",       float);
     64  GET_COLUMN(Mkron       , "Mkron",       float);
     65  GET_COLUMN(dMkron      , "dMkron",      float);
     66  GET_COLUMN(Map         , "Map",         float);
     67  GET_COLUMN(dMap        , "dMap",        float);
     68  GET_COLUMN(flags       , "flags",       int);
    6669  gfits_free_header (&theader);
    6770  gfits_free_table  (&ftable);
     
    6972  ALLOCATE (detections, Detections, Nrow);
    7073  for (i = 0; i < Nrow; i++) {
    71     detections[i].imageID      = imageID[i];   
    72     detections[i].ippDetectID  = ippDetectID[i];
     74    detections[i].objID        = objID[i];     
    7375    detections[i].detectID     = detectID[i];   
    7476    detections[i].ippObjID     = ippObjID[i];   
    75     detections[i].objID        = objID[i];     
    76     detections[i].photcode     = photcode[i];     
    77     detections[i].flags        = flags[i];     
    78     detections[i].zp           = zp[i];         
    79     detections[i].zpErr        = zpErr[i];     
    80     detections[i].airMass      = airMass[i];   
    81     detections[i].expTime      = expTime[i];   
     77    detections[i].ippDetectID  = ippDetectID[i];
     78    detections[i].imageID      = imageID[i];   
     79    detections[i].catID        = catID[i];   
    8280    detections[i].ra           = ra[i];         
    8381    detections[i].dec          = dec[i];       
    8482    detections[i].raErr        = raErr[i];     
    8583    detections[i].decErr       = decErr[i];     
     84    detections[i].zp           = zp[i];         
     85    detections[i].telluricExt  = telluricExt[i];     
     86    detections[i].airmass      = airmass[i];   
     87    detections[i].expTime      = expTime[i];   
     88    detections[i].Mpsf         = Mpsf[i];   
     89    detections[i].dMpsf        = dMpsf[i];   
     90    detections[i].Mkron        = Mkron[i];   
     91    detections[i].dMkron       = dMkron[i];   
     92    detections[i].Map          = Map[i];   
     93    detections[i].dMap         = dMap[i];   
     94    detections[i].flags        = flags[i];     
    8695  }
    8796  fprintf (stderr, "loaded data for %lld detections\n", (long long) Nrow);
    8897
    89   free (imageID    );
    90   free (ippDetectID);
     98  free (objID      );
    9199  free (detectID   );
    92100  free (ippObjID   );
    93   free (objID      );
    94   free (photcode   );
    95   free (flags      );
    96   free (zp         );
    97   free (zpErr      );
    98   free (airMass    );
    99   free (expTime    );
     101  free (ippDetectID);
     102  free (imageID    );
     103  free (catID      );
    100104  free (ra         );
    101105  free (dec        );
    102106  free (raErr      );
    103107  free (decErr     );
     108  free (zp         );
     109  free (telluricExt);
     110  free (airmass    );
     111  free (expTime    );
     112  free (Mpsf       );
     113  free (dMpsf      );
     114  free (Mkron      );
     115  free (dMkron     );
     116  free (Map        );
     117  free (dMap       );
     118  free (flags      );
    104119
    105120  gfits_free_header (&header);
     
    149164
    150165  // XXX need to get the bzero values right
    151   gfits_define_bintable_column (&theader, "J", "imageID",     NULL, NULL, 1.0, BZERO_INT32);
    152   gfits_define_bintable_column (&theader, "J", "ippDetectID", NULL, NULL, 1.0, BZERO_INT32);
     166  gfits_define_bintable_column (&theader, "K", "objID",       NULL, NULL, 1.0, 0);
    153167  gfits_define_bintable_column (&theader, "K", "detectID",    NULL, NULL, 1.0, 0);
    154168  gfits_define_bintable_column (&theader, "K", "ippObjID",    NULL, NULL, 1.0, 0);
    155   gfits_define_bintable_column (&theader, "K", "objID",       NULL, NULL, 1.0, 0);
    156   // gfits_define_bintable_column (&theader, "K", "detectID",    NULL, NULL, 1.0, BZERO_INT64);
    157   // gfits_define_bintable_column (&theader, "K", "ippObjID",    NULL, NULL, 1.0, BZERO_INT64);
    158   // gfits_define_bintable_column (&theader, "K", "objID",       NULL, NULL, 1.0, BZERO_INT64);
    159   gfits_define_bintable_column (&theader, "J", "photcode",    NULL, NULL, 1.0, 0.0);
    160   gfits_define_bintable_column (&theader, "J", "flags",       NULL, NULL, 1.0, BZERO_INT32);
    161   gfits_define_bintable_column (&theader, "E", "zp",          NULL, NULL, 1.0, 0.0);
    162   gfits_define_bintable_column (&theader, "E", "zpErr",       NULL, NULL, 1.0, 0.0);
    163   gfits_define_bintable_column (&theader, "E", "airMass",     NULL, NULL, 1.0, 0.0);
    164   gfits_define_bintable_column (&theader, "E", "expTime",     NULL, NULL, 1.0, 0.0);
     169  gfits_define_bintable_column (&theader, "J", "ippDetectID", NULL, NULL, 1.0, FT_BZERO_INT32);
     170  gfits_define_bintable_column (&theader, "J", "imageID",     NULL, NULL, 1.0, FT_BZERO_INT32);
     171  gfits_define_bintable_column (&theader, "J", "catID",       NULL, NULL, 1.0, FT_BZERO_INT32);
    165172  gfits_define_bintable_column (&theader, "D", "ra",          NULL, NULL, 1.0, 0.0);
    166173  gfits_define_bintable_column (&theader, "D", "dec",         NULL, NULL, 1.0, 0.0);
    167174  gfits_define_bintable_column (&theader, "E", "raErr",       NULL, NULL, 1.0, 0.0);
    168175  gfits_define_bintable_column (&theader, "E", "decErr",      NULL, NULL, 1.0, 0.0);
     176  gfits_define_bintable_column (&theader, "E", "zp",          NULL, NULL, 1.0, 0.0);
     177  gfits_define_bintable_column (&theader, "E", "telluricExt", NULL, NULL, 1.0, 0.0);
     178  gfits_define_bintable_column (&theader, "E", "airmass",     NULL, NULL, 1.0, 0.0);
     179  gfits_define_bintable_column (&theader, "E", "expTime",     NULL, NULL, 1.0, 0.0);
     180  gfits_define_bintable_column (&theader, "E", "Mpsf",        NULL, NULL, 1.0, 0.0);
     181  gfits_define_bintable_column (&theader, "E", "dMpsf",       NULL, NULL, 1.0, 0.0);
     182  gfits_define_bintable_column (&theader, "E", "Mkron",       NULL, NULL, 1.0, 0.0);
     183  gfits_define_bintable_column (&theader, "E", "dMkron",      NULL, NULL, 1.0, 0.0);
     184  gfits_define_bintable_column (&theader, "E", "Map",         NULL, NULL, 1.0, 0.0);
     185  gfits_define_bintable_column (&theader, "E", "dMap",        NULL, NULL, 1.0, 0.0);
     186  gfits_define_bintable_column (&theader, "J", "flags",       NULL, NULL, 1.0, FT_BZERO_INT32);
    169187
    170188  // generate the output array that carries the data
     
    172190
    173191  // create intermediate storage arrays
    174    int32_t   *imageID     ; ALLOCATE (imageID     ,   int32_t, Ndetections);
    175   uint32_t   *ippDetectID ; ALLOCATE (ippDetectID ,  uint32_t, Ndetections);
     192  uint64_t   *objID       ; ALLOCATE (objID       ,  uint64_t, Ndetections);
    176193  uint64_t   *detectID    ; ALLOCATE (detectID    ,  uint64_t, Ndetections);
    177194  uint64_t   *ippObjID    ; ALLOCATE (ippObjID    ,  uint64_t, Ndetections);
    178   uint64_t   *objID       ; ALLOCATE (objID       ,  uint64_t, Ndetections);
    179   int        *photcode    ; ALLOCATE (photcode    ,  int,      Ndetections);
    180   uint32_t   *flags       ; ALLOCATE (flags       ,  uint32_t, Ndetections);
    181   float      *zp          ; ALLOCATE (zp          ,  float,    Ndetections);
    182   float      *zpErr       ; ALLOCATE (zpErr       ,  float,    Ndetections);
    183   float      *airMass     ; ALLOCATE (airMass     ,  float,    Ndetections);
    184   float      *expTime     ; ALLOCATE (expTime     ,  float,    Ndetections);
     195  uint32_t   *ippDetectID ; ALLOCATE (ippDetectID ,  uint32_t, Ndetections);
     196   int32_t   *imageID     ; ALLOCATE (imageID     ,   int32_t, Ndetections);
     197   int32_t   *catID       ; ALLOCATE (catID       ,   int32_t, Ndetections);
    185198  double     *ra          ; ALLOCATE (ra          ,  double,   Ndetections);
    186199  double     *dec         ; ALLOCATE (dec         ,  double,   Ndetections);
    187200  float      *raErr       ; ALLOCATE (raErr       ,  float,    Ndetections);
    188201  float      *decErr      ; ALLOCATE (decErr      ,  float,    Ndetections);
     202  float      *zp          ; ALLOCATE (zp          ,  float,    Ndetections);
     203  float      *telluricExt ; ALLOCATE (telluricExt ,  float,    Ndetections);
     204  float      *airmass     ; ALLOCATE (airmass     ,  float,    Ndetections);
     205  float      *expTime     ; ALLOCATE (expTime     ,  float,    Ndetections);
     206  float      *Mpsf        ; ALLOCATE (Mpsf        ,  float,    Ndetections);
     207  float      *dMpsf       ; ALLOCATE (dMpsf       ,  float,    Ndetections);
     208  float      *Mkron       ; ALLOCATE (Mkron       ,  float,    Ndetections);
     209  float      *dMkron      ; ALLOCATE (dMkron      ,  float,    Ndetections);
     210  float      *Map         ; ALLOCATE (Map         ,  float,    Ndetections);
     211  float      *dMap        ; ALLOCATE (dMap        ,  float,    Ndetections);
     212  uint32_t   *flags       ; ALLOCATE (flags       ,  uint32_t, Ndetections);
    189213
    190214  // assign the storage arrays
    191215  for (i = 0; i < Ndetections; i++) {
    192     imageID[i]     = detections[i].imageID     ;
    193     ippDetectID[i] = detections[i].ippDetectID ;
     216    objID[i]       = detections[i].objID       ;
    194217    detectID[i]    = detections[i].detectID    ;
    195218    ippObjID[i]    = detections[i].ippObjID    ;
    196     objID[i]       = detections[i].objID       ;
    197     photcode[i]    = detections[i].photcode    ;
    198     flags[i]       = detections[i].flags       ;
    199     zp[i]          = detections[i].zp          ;
    200     zpErr[i]       = detections[i].zpErr       ;
    201     airMass[i]     = detections[i].airMass     ;
    202     expTime[i]     = detections[i].expTime     ;
     219    ippDetectID[i] = detections[i].ippDetectID ;
     220    imageID[i]     = detections[i].imageID     ;
     221    catID[i]       = detections[i].catID       ;
    203222    ra[i]          = detections[i].ra          ;
    204223    dec[i]         = detections[i].dec         ;
    205224    raErr[i]       = detections[i].raErr       ;
    206225    decErr[i]      = detections[i].decErr      ;
     226    zp[i]          = detections[i].zp          ;
     227    telluricExt[i] = detections[i].telluricExt ;
     228    airmass[i]     = detections[i].airmass     ;
     229    expTime[i]     = detections[i].expTime     ;
     230    Mpsf[i]        = detections[i].Mpsf        ;
     231    dMpsf[i]       = detections[i].dMpsf       ;
     232    Mkron[i]       = detections[i].Mkron       ;
     233    dMkron[i]      = detections[i].dMkron      ;
     234    Map[i]         = detections[i].Map         ;
     235    dMap[i]        = detections[i].dMap        ;
     236    flags[i]       = detections[i].flags       ;
    207237  }
    208238
    209239  // add the columns to the output array
    210   gfits_set_bintable_column (&theader, &ftable, "imageID",     imageID     , Ndetections);
    211   gfits_set_bintable_column (&theader, &ftable, "ippDetectID", ippDetectID , Ndetections);
     240  gfits_set_bintable_column (&theader, &ftable, "objID",       objID       , Ndetections);
    212241  gfits_set_bintable_column (&theader, &ftable, "detectID",    detectID    , Ndetections);
    213242  gfits_set_bintable_column (&theader, &ftable, "ippObjID",    ippObjID    , Ndetections);
    214   gfits_set_bintable_column (&theader, &ftable, "objID",       objID       , Ndetections);
    215   gfits_set_bintable_column (&theader, &ftable, "photcode",    photcode    , Ndetections);
    216   gfits_set_bintable_column (&theader, &ftable, "flags",       flags       , Ndetections);
    217   gfits_set_bintable_column (&theader, &ftable, "zp",          zp          , Ndetections);
    218   gfits_set_bintable_column (&theader, &ftable, "zpErr",       zpErr       , Ndetections);
    219   gfits_set_bintable_column (&theader, &ftable, "airMass",     airMass     , Ndetections);
    220   gfits_set_bintable_column (&theader, &ftable, "expTime",     expTime     , Ndetections);
     243  gfits_set_bintable_column (&theader, &ftable, "ippDetectID", ippDetectID , Ndetections);
     244  gfits_set_bintable_column (&theader, &ftable, "imageID",     imageID     , Ndetections);
     245  gfits_set_bintable_column (&theader, &ftable, "catID",       catID       , Ndetections);
    221246  gfits_set_bintable_column (&theader, &ftable, "ra",          ra          , Ndetections);
    222247  gfits_set_bintable_column (&theader, &ftable, "dec",         dec         , Ndetections);
    223248  gfits_set_bintable_column (&theader, &ftable, "raErr",       raErr       , Ndetections);
    224249  gfits_set_bintable_column (&theader, &ftable, "decErr",      decErr      , Ndetections);
    225 
    226   free (imageID     );
    227   free (ippDetectID );
     250  gfits_set_bintable_column (&theader, &ftable, "zp",          zp          , Ndetections);
     251  gfits_set_bintable_column (&theader, &ftable, "telluricExt", telluricExt , Ndetections);
     252  gfits_set_bintable_column (&theader, &ftable, "airmass",     airmass     , Ndetections);
     253  gfits_set_bintable_column (&theader, &ftable, "expTime",     expTime     , Ndetections);
     254  gfits_set_bintable_column (&theader, &ftable, "Mpsf",        Mpsf        , Ndetections);
     255  gfits_set_bintable_column (&theader, &ftable, "dMpsf",       dMpsf       , Ndetections);
     256  gfits_set_bintable_column (&theader, &ftable, "Mkron",       Mkron       , Ndetections);
     257  gfits_set_bintable_column (&theader, &ftable, "dMkron",      dMkron      , Ndetections);
     258  gfits_set_bintable_column (&theader, &ftable, "Map",         Map         , Ndetections);
     259  gfits_set_bintable_column (&theader, &ftable, "dMap",        dMap        , Ndetections);
     260  gfits_set_bintable_column (&theader, &ftable, "flags",       flags       , Ndetections);
     261
     262  free (objID       );
    228263  free (detectID    );
    229264  free (ippObjID    );
    230   free (objID       );
    231   free (photcode    );
    232   free (flags       );
    233   free (zp          );
    234   free (zpErr       );
    235   free (airMass     );
    236   free (expTime     );
     265  free (ippDetectID );
     266  free (imageID     );
     267  free (catID       );
    237268  free (ra          );
    238269  free (dec         );
    239270  free (raErr       );
    240271  free (decErr      );
     272  free (zp          );
     273  free (telluricExt );
     274  free (airmass     );
     275  free (expTime     );
     276  free (Mpsf        );
     277  free (dMpsf       );
     278  free (Mkron       );
     279  free (dMkron      );
     280  free (Map         );
     281  free (dMap        );
     282  free (flags       );
    241283
    242284  gfits_fwrite_Theader (f, &theader);
  • trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps.c

    r37048 r37246  
    281281}
    282282
    283 # define PRINT_FLOAT(BUFFER,FIELD,FORMAT)                 \
    284   if (!isfinite(FIELD)) PrintIOBuffer (BUFFER, "NULL, "); \
    285   else PrintIOBuffer (BUFFER, FORMAT, FIELD);
    286 
    287 int insert_detections_mysql_detvalue (IOBuffer *buffer, Detections *detection) {
    288 
    289   PrintIOBuffer (buffer, "(%d, ", detection->imageID);    // imageID
    290   PrintIOBuffer (buffer, "%u, ", detection->ippDetectID); // ippDetectID
    291   PrintIOBuffer (buffer, "%lu, ", detection->detectID);   // detectID
    292   PrintIOBuffer (buffer, "%lu, ", detection->ippObjID);   // ippObjID
    293   PrintIOBuffer (buffer, "%lu, ", detection->objID);      // objID
    294   PrintIOBuffer (buffer, "%u, ", detection->flags);       // flags
    295   PRINT_FLOAT(buffer, detection->zp,      "%.6f, ");
    296   PRINT_FLOAT(buffer, detection->zpErr,   "%.6f, ");
    297   PRINT_FLOAT(buffer, detection->airMass, "%.6f, ");
    298   PRINT_FLOAT(buffer, detection->expTime, "%.6f, ");
    299   PRINT_FLOAT(buffer, detection->ra,      "%.8f, ");
    300   PRINT_FLOAT(buffer, detection->dec,     "%.8f, ");
    301   PRINT_FLOAT(buffer, detection->raErr,   "%.6f, ");
    302   PRINT_FLOAT(buffer, detection->decErr,  "%.6f),\n");
    303   return TRUE;
    304 }
  • trunk/Ohana/src/dvopsps/src/insert_detections_dvopsps_catalog.c

    r37048 r37246  
    66Detections *detections = NULL;
    77
     8static float ZeroPoint = 25.0;
     9
    810int init_detections () {
    911  NDETECTIONS = 1000;
     
    1517
    1618  off_t i, j;
     19
     20  ZeroPoint = GetZeroPoint();
    1721
    1822  int missingID = 0;
     
    4751      if (measure->photcode >=  PHOTCODE_END) continue;
    4852
    49       PhotCode *code = GetPhotcodebyCode(measure->photcode);
    50 
    51       detections[Ndetections].imageID     = measure->imageID;    // imageID
    52       detections[Ndetections].ippDetectID = measure->detID;   // ippDetectID
    53       detections[Ndetections].detectID    = measure->extID;   // detectID
    54       detections[Ndetections].ippObjID    = ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID; // ippObjID
    55       // NOTE: this is better, but the above is the current ippToPsps value
    56       // detections[Ndetections]. ((uint64_t)average->catID << 32) + (uint64_t)average->objID; // ippObjID
    57       detections[Ndetections].objID        = average->extID;   // objID
    58       detections[Ndetections].photcode     = measure->photcode;   // photcode
    59       detections[Ndetections].flags        = measure->dbFlags;  // flags
    60       detections[Ndetections].zp           = code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal;   // zp
    61       detections[Ndetections].zpErr        = measure->dMcal;    // zpErr
    62       detections[Ndetections].airMass      = measure->airmass;
    63       detections[Ndetections].expTime      = pow(10.0, 0.4 * measure->dt);    // expTime
    64       detections[Ndetections].ra           = measure->R;    // ra
    65       detections[Ndetections].dec          = measure->D;    // dec
    66       detections[Ndetections].raErr        = measure->dXccd * 0.01 * fabs(measure->pltscale); // estimate of raErr
    67       detections[Ndetections].decErr       = measure->dYccd * 0.01 * fabs(measure->pltscale); // estimate of decErr
    68 
     53      assign_detection_values (&detections[Ndetections], measure, average);
    6954      Ndetections ++;
     55
    7056      myAssert (Ndetections <= NDETECTIONS, "programming error");
    7157    }
     
    10995
    11096  off_t found = 0;
     97
     98  ZeroPoint = GetZeroPoint();
    11199
    112100  INITTIME;
     
    143131
    144132      // XXX check return status
    145       if (!insert_detections_mysql_value (&buffer, &average[i], &measure[Nmeas])) {
     133      Detections detection;
     134      assign_detection_values (&detection, &measure[Nmeas], &average[i]);
     135
     136      if (!insert_detections_mysql_detvalue (&buffer, &detection)) {
    146137        fprintf (stderr, "failure to insert detections in mysql\n");
    147138        status = FALSE;
     
    194185  }
    195186
    196   // PrintIOBuffer (buffer, "INSERT INTO dvoDetectionFull (imageID, ippDetectID, detectID, ippObjID, objID, photcode, flags, zp, zpErr, airMass, expTime, ra, dec_, raErr, decErr) VALUES \n");
    197   PrintIOBuffer (buffer, "INSERT INTO dvoDetectionFull (imageID, ippDetectID, detectID, ippObjID, objID, flags, zp, zpErr, airMass, expTime, ra, dec_, raErr, decErr) VALUES \n");
    198 
    199   return TRUE;
    200 }
    201 
    202 # define PRINT_FLOAT(BUFFER,FIELD,FORMAT)                 \
    203   if (isinf(FIELD) || isnan(FIELD)) PrintIOBuffer (BUFFER, "NULL, ");   \
    204   else PrintIOBuffer (BUFFER, FORMAT, FIELD);
    205 
    206 int insert_detections_mysql_value (IOBuffer *buffer, Average *average, Measure *measure) {
    207 
    208   PhotCode *code = GetPhotcodebyCode(measure->photcode);
    209   PrintIOBuffer (buffer, "(%d, ", measure->imageID);      // imageID
    210   PrintIOBuffer (buffer, "%u, ", measure->detID); // ippDetectID
    211   PrintIOBuffer (buffer, "%lu, ", measure->extID);        // detectID
    212   PrintIOBuffer (buffer, "%lu, ", ((uint64_t)average->catID * 1000000000) + (uint64_t)average->objID);    // ippObjID
    213   // NOTE: the following is better, but the above is the current ippToPsps value
    214   // ((uint64_t)average->catID << 32) + (uint64_t)average->objID, // ippObjID
    215   PrintIOBuffer (buffer, "%lu, ", average->extID);        // objID
    216   // XXX PrintIOBuffer (buffer, "%d, ", measure->photcode);       // photcode
    217   PrintIOBuffer (buffer, "%u, ", measure->dbFlags);       // flags
    218 
    219   float zp = code->C * 0.001 + code->K * (measure->airmass - 1) - measure->Mcal;
    220   float exptime = pow(10.0, 0.4 * measure->dt);
    221   double ra  = measure->R;
    222   double dec = measure->D;
    223   double dR = measure->dXccd * 0.01 * fabs(measure->pltscale);
    224   double dD = measure->dYccd * 0.01 * fabs(measure->pltscale);
    225 
    226   PRINT_FLOAT(buffer, zp,               "%.6f, ");
    227   PRINT_FLOAT(buffer, measure->dMcal,   "%.6f, ");
    228   PRINT_FLOAT(buffer, measure->airmass, "%.6f, ");
    229   PRINT_FLOAT(buffer, exptime,          "%.6f, ");
    230   PRINT_FLOAT(buffer, ra,               "%.8f, ");
    231   PRINT_FLOAT(buffer, dec,              "%.8f, ");
    232   PRINT_FLOAT(buffer, dR,               "%.6f, ");
    233   PRINT_FLOAT(buffer, dD,               "%.6f),\n");
    234  
    235   return TRUE;
    236 }
    237    
     187  PrintIOBuffer (buffer, "INSERT INTO dvoDetectionFull (objID, detectID, ippObjID, ippDetectID, imageID, catID, ");
     188  PrintIOBuffer (buffer, "ra, dec_, raErr, decErr, zp, telluricExt, airmass, expTime, ");
     189  PrintIOBuffer (buffer, "Mpsf, dMpsf, Mkron, dMkron, Map, dMap, flags) VALUES \n");
     190
     191  return TRUE;
     192}
     193
    238194int insert_detections_mysql_commit (IOBuffer *buffer, MYSQL *mysql) {
    239195
     
    270226  return status;
    271227}
     228
     229# define PRINT_FLOAT(BUFFER,FIELD,FORMAT)                 \
     230  if (!isfinite(FIELD)) PrintIOBuffer (BUFFER, "NULL, "); \
     231  else PrintIOBuffer (BUFFER, FORMAT, FIELD);
     232
     233int insert_detections_mysql_detvalue (IOBuffer *buffer, Detections *detection) {
     234
     235  PrintIOBuffer (buffer, "(%lu, ", detection->objID);       // objID
     236  PrintIOBuffer (buffer,  "%lu, ", detection->detectID);    // detectID
     237  PrintIOBuffer (buffer,  "%lu, ", detection->ippObjID);    // ippObjID
     238  PrintIOBuffer (buffer,  "%u,  ", detection->ippDetectID); // ippDetectID
     239  PrintIOBuffer (buffer,  "%d,  ", detection->imageID);     // imageID
     240  PrintIOBuffer (buffer,  "%d,  ", detection->catID);       // DVO Catalog ID
     241
     242  PRINT_FLOAT(buffer, detection->ra,          "%.8f, ");
     243  PRINT_FLOAT(buffer, detection->dec,         "%.8f, ");
     244  PRINT_FLOAT(buffer, detection->raErr,       "%.6f, ");
     245  PRINT_FLOAT(buffer, detection->decErr,      "%.6f, ");
     246  PRINT_FLOAT(buffer, detection->zp,          "%.6f, ");
     247  PRINT_FLOAT(buffer, detection->telluricExt, "%.6f, ");
     248  PRINT_FLOAT(buffer, detection->airmass,     "%.6f, ");
     249  PRINT_FLOAT(buffer, detection->expTime,     "%.6f, ");
     250
     251  PRINT_FLOAT(buffer, detection->Mpsf,        "%.6f, ");
     252  PRINT_FLOAT(buffer, detection->dMpsf,       "%.6f, ");
     253  PRINT_FLOAT(buffer, detection->Mkron,       "%.6f, ");
     254  PRINT_FLOAT(buffer, detection->dMkron,      "%.6f, ");
     255  PRINT_FLOAT(buffer, detection->Map,         "%.6f, ");
     256  PRINT_FLOAT(buffer, detection->dMap,        "%.6f, ");
     257
     258  PrintIOBuffer (buffer, "%u),\n", detection->flags);     // flags
     259  return TRUE;
     260}
     261
     262float getMagFromValueOrFlux (float flux, float mag, float zp) {
     263
     264  // first, if mag is finite, use mag:
     265  if (isfinite(mag)) {
     266    return (zp + mag - ZeroPoint);
     267  }
     268
     269  if (isfinite(flux) && (flux > 0.0)) {
     270    fprintf (stderr, "how did we get here?\n");
     271    return (zp - 2.5*log10(flux));
     272  }
     273
     274  if (isfinite(flux) && (flux <= 0.0)) {
     275    return (NAN);
     276  }
     277  return (NAN);
     278}
     279
     280float getdMagFromValueOrFlux (float flux, float dflux, float dmag) {
     281
     282  // first, if mag is finite, use mag:
     283  if (isfinite(dmag)) {
     284    return (dmag);
     285  }
     286
     287  if (isfinite(flux) && isfinite(dflux)) {
     288    return (dflux / fabs(flux));
     289  }
     290  return (NAN);
     291}
     292
     293int assign_detection_values (Detections *detection, Measure *measure, Average *average) {
     294
     295  PhotCode *code = GetPhotcodebyCode(measure->photcode);
     296
     297  uint64_t ippObjID = ((uint64_t)average->catID << 32) + (uint64_t)average->objID; // ippObjID
     298
     299  float nominalZP   = code->C * 0.001 + code->K * (measure->airmass - 1);
     300  float zp          = nominalZP - measure->Mcal;
     301  float telluricExt = - measure->Mcal;
     302  float expTime     = pow(10.0, 0.4 * measure->dt);
     303  float airmass     = measure->airmass;
     304
     305  detection->objID        = average->extID;   // objID
     306  detection->detectID     = measure->extID;   // detectID
     307  detection->ippObjID     = ippObjID;         // ippObjID
     308  detection->ippDetectID  = measure->detID;   // ippDetectID
     309  detection->imageID      = measure->imageID; // imageID
     310  detection->catID        = measure->catID;   // catID
     311
     312  detection->ra           = measure->R;    // ra
     313  detection->dec          = measure->D;    // dec
     314  detection->raErr        = measure->dXccd * 0.01 * fabs(measure->pltscale); // estimate of raErr
     315  detection->decErr       = measure->dYccd * 0.01 * fabs(measure->pltscale); // estimate of decErr
     316
     317  detection->zp           = zp;
     318  detection->telluricExt  = telluricExt;
     319  detection->airmass      = airmass;
     320  detection->expTime      = expTime;
     321
     322  // XXX clean this up with dvo_photcode_ops calls:
     323  // if (isfinite(measure->FluxPSF) && (measure->FluxPSF < 0.0))
     324  detection->Mpsf  = getMagFromValueOrFlux (measure->FluxPSF,  measure->M,     zp);
     325  detection->Mkron = getMagFromValueOrFlux (measure->FluxKron, measure->Mkron, zp);
     326  detection->Map   = getMagFromValueOrFlux (measure->FluxAp,   measure->Map,   zp);
     327
     328  detection->dMpsf  = getdMagFromValueOrFlux (measure->FluxPSF,  measure->dFluxPSF,  measure->dM);
     329  detection->dMkron = getdMagFromValueOrFlux (measure->FluxKron, measure->dFluxKron, measure->dMkron);
     330  detection->dMap   = getdMagFromValueOrFlux (measure->FluxAp,   measure->dFluxAp,   measure->dMap);
     331
     332  detection->flags  = measure->dbFlags;  // flags
     333
     334  return TRUE;
     335}
     336
  • trunk/Ohana/src/dvopsps/src/insert_objects_dvopsps_catalog.c

    r37116 r37246  
    8888  bzero (buffer.buffer, buffer.Nalloc);
    8989
     90  // Only send the necessary fields (eg, do not sent parallax and pm)
    9091  PrintIOBuffer (&buffer, "CREATE TABLE %s_cpt ("
    91                  "RA DOUBLE,  "         
    92                  "DEC_ DOUBLE,  "         
    93                  "RA_ERR FLOAT,  "     
    94                  "DEC_ERR FLOAT,  "     
    95                  "U_RA FLOAT,  "       
    96                  "U_DEC FLOAT,  "       
    97                  "V_RA_ERR FLOAT,  "   
    98                  "V_DEC_ERR FLOAT,  "   
    99                  "PAR FLOAT,  "         
    100                  "PAR_ERR FLOAT,  "     
    101                  "CHISQ_POS FLOAT,  "   
    102                  "CHISQ_PM FLOAT,  "   
    103                  "CHISQ_PAP FLOAT,  "   
    104                  "MEAN_EPOCH INT,  " 
    105                  "TIME_RANGE INT,  " 
    106                  "PSF_QF FLOAT, "     
    107                  "PSF_QF_PERF FLOAT,  "
    108                  "STARGAL_SEP FLOAT,  "
    109                  "NUMBER_POS SMALLINT,  " 
    110                  "NMEASURE SMALLINT,  "   
    111                  "NMISSING SMALLINT,  "   
    112                  "NEXTEND SMALLINT,  "     
    113                  "OFF_MEASURE INT,  "
    114                  "OFF_MISSING INT,  "
    115                  "OFF_EXTEND INT,  " 
    116                  "FLAGS INT,  "       
    117                  "PHOTFLAGS_U INT,  "
    118                  "PHOTFLAGS_L INT,  "
    119                  "OBJ_ID INT,  "     
    120                  "CAT_ID INT,  "     
    121                  "EXT_ID BIGINT"
     92                 "EXT_ID        BIGINT,   "
     93                 "OBJ_ID        INT,      "     
     94                 "CAT_ID        INT,      "
     95                 "TESS_ID       TINYINT,  "
     96                 "PROJECTION_ID SMALLINT, "
     97                 "SKYCELL_ID    TINYINT,  "
     98                 "RA_STK        DOUBLE,   "         
     99                 "DEC_STK       DOUBLE,   "         
     100                 "RA_STK_ERR    FLOAT,    "     
     101                 "DEC_STK_ERR   FLOAT,    "     
     102                 "RA_MEAN       DOUBLE,   "         
     103                 "DEC_MEAN      DOUBLE,   "         
     104                 "RA_ERR        FLOAT,    "     
     105                 "DEC_ERR       FLOAT,    "     
     106                 "CHISQ_POS     FLOAT,    "   
     107                 "CHISQ_PM      FLOAT,    "   
     108                 "CHISQ_PAR     FLOAT,    "   
     109                 "FLAGS         INT       "       
    122110                 ")\n", basename);
     111
     112// skipping these cpt fields:
     113//               "U_RA        FLOAT,  "       
     114//               "U_DEC       FLOAT,  "       
     115//               "V_RA_ERR    FLOAT,  "   
     116//               "V_DEC_ERR   FLOAT,  "   
     117//               "PAR         FLOAT,  "         
     118//               "PAR_ERR     FLOAT,  "     
     119//               "OFF_MEASURE INT,  "
     120//               "OFF_MISSING INT,  "
     121//               "OFF_EXTEND  INT,  " 
     122//               "PSF_QF      FLOAT, "     
     123//               "PSF_QF_PERF FLOAT,  "
     124//               "STARGAL_SEP FLOAT,  "
     125//               "NUMBER_POS  SMALLINT,  " 
     126//               "NMEASURE    SMALLINT,  "   
     127//               "NMISSING    SMALLINT,  "   
     128//               "NEXTEND     SMALLINT,  "     
     129//               "PHOTFLAGS_U INT,  "
     130//               "PHOTFLAGS_L INT,  "
     131
     132
    123133
    124134  if (DEBUG) fprintf (stderr, "%s\n", buffer.buffer);
     
    145155
    146156  PrintIOBuffer (&buffer, "CREATE TABLE %s_cps ("
    147                  "MAG FLOAT,  "             
    148                  "MAG_AP FLOAT,  "             
    149                  "MAG_KRON FLOAT,  "       
    150                  "MAG_KRON_ERR FLOAT,  "   
    151                  "MAG_ERR FLOAT,  "         
    152                  "MAG_CHI FLOAT,  "         
    153                  "STACK_PSF_MAG FLOAT,  "       
    154                  "STACK_PSF_MAG_ERR FLOAT,  "   
    155                  "STACK_KRON_MAG FLOAT,  "      
    156                  "STACK_KRON_MAG_ERR FLOAT,  "   
    157                  "FLAGS INT,  "           
    158                  "NCODE SMALLINT,  "           
    159                  "NUSED SMALLINT,  "           
    160                  "MAG_20 SMALLINT,  "         
    161                  "MAG_80 SMALLINT,  "         
    162                  "UBERCAL_DIST SMALLINT,  "   
    163                  "MAG_STDEV SMALLINT,  "       
    164                  "STACK_DETECT_ID BIGINT"
     157                 "MAG            FLOAT,  "             
     158                 "MAG_ERR        FLOAT,  "         
     159                 "MAG_STDEV      FLOAT,  "        
     160                 "MAG_MIN        FLOAT,  "        
     161                 "MAG_MAX        FLOAT,  "         
     162                 "NUSED          SMALLINT,  "           
     163                 "MAG_KRON      FLOAT,  "       
     164                 "MAG_KRON_ERR  FLOAT,  "   
     165                 "MAG_KRON_STDEV FLOAT,  "   
     166                 "NUSED_KRON     SMALLINT,  "    
     167                 "MAG_AP         FLOAT,  "             
     168                 "MAG_AP_ERR     FLOAT,  "             
     169                 "MAG_AP_STDEV   FLOAT,  "             
     170                 "NUSED_AP       SMALLINT,  "   
     171                 "NCODE          SMALLINT,  "          
     172                 "NSTACK_DET     SMALLINT,  "          
     173                 "PSF_QF_PERF_MAX FLOAT, "           
     174                 "FLAGS          INT "         
    165175                 ")\n", basename);
    166 
    167  //              "FLUX_PSF FLOAT,  "       
    168  //              "FLUX_PSF_ERR FLOAT,  "   
    169  //              "FLUX_KRON FLOAT,  "       
    170  //              "FLUX_KRON_ERR FLOAT,  "   
    171176
    172177  if (DEBUG) fprintf (stderr, "%s\n", buffer.buffer);
     
    191196
    192197  PrintIOBuffer (ave_buffer, "INSERT INTO %s_cpt ("
    193                  "RA, "         
    194                  "DEC_, "         
    195                  "RA_ERR, "     
    196                  "DEC_ERR, "     
    197                  "U_RA, "       
    198                  "U_DEC, "       
    199                  "V_RA_ERR, "   
    200                  "V_DEC_ERR, "   
    201                  "PAR, "         
    202                  "PAR_ERR, "     
    203                  "CHISQ_POS, "   
    204                  "CHISQ_PM, "   
    205                  "CHISQ_PAP, "   
    206                  "MEAN_EPOCH, " 
    207                  "TIME_RANGE, " 
    208                  "PSF_QF, "     
    209                  "PSF_QF_PERF, "
    210                  "STARGAL_SEP, "
    211                  "NUMBER_POS, " 
    212                  "NMEASURE, "   
    213                  "NMISSING, "   
    214                  "NEXTEND, "     
    215                  "OFF_MEASURE, "
    216                  "OFF_MISSING, "
    217                  "OFF_EXTEND, " 
    218                  "FLAGS, "       
    219                  "PHOTFLAGS_U, "
    220                  "PHOTFLAGS_L, "
    221                  "OBJ_ID, "     
    222                  "CAT_ID, "     
    223                  "EXT_ID"
     198                 "EXT_ID,        "
     199                 "OBJ_ID,        "     
     200                 "CAT_ID,        "     
     201                 "TESS_ID,       "     
     202                 "PROJECTION_ID, "     
     203                 "SKYCELL_ID,    "     
     204                 "RA_STK,        "         
     205                 "DEC_STK,       "         
     206                 "RA_STK_ERR,    "     
     207                 "DEC_STK_ERR,   "     
     208                 "RA_MEAN,       "         
     209                 "DEC_MEAN,      "         
     210                 "RA_ERR,        "     
     211                 "DEC_ERR,       "     
     212                 "CHISQ_POS,     "   
     213                 "CHISQ_PM,      "   
     214                 "CHISQ_PAR,     "   
     215                 "FLAGS          "       
    224216                 ") VALUES \n", basename);
    225217
     
    230222  PrintIOBuffer (sec_buffer, "INSERT INTO %s_cps ("
    231223                 "MAG, "             
    232                  "MAG_AP, "             
     224                 "MAG_ERR, "         
     225                 "MAG_STDEV, "       
     226                 "MAG_MIN, "         
     227                 "MAG_MAX, "         
     228                 "NUSED, "           
     229
    233230                 "MAG_KRON, "       
    234231                 "MAG_KRON_ERR, "   
    235                  "MAG_ERR, "         
    236                  "MAG_CHI, "         
    237                  "STACK_PSF_MAG, "       
    238                  "STACK_PSF_MAG_ERR, "   
    239                  "STACK_KRON_MAG, "       
    240                  "STACK_KRON_MAG_ERR, "   
    241                  "FLAGS, "           
     232                 "MAG_KRON_STDEV, "   
     233                 "NUSED_KRON, "           
     234
     235                 "MAG_AP, "             
     236                 "MAG_AP_ERR, "             
     237                 "MAG_AP_STDEV, "             
     238                 "NUSED_AP, "           
     239
    242240                 "NCODE, "           
    243                  "NUSED, "           
    244                  "MAG_20, "         
    245                  "MAG_80, "         
    246                  "UBERCAL_DIST, "   
    247                  "MAG_STDEV, "       
    248                  "STACK_DETECT_ID "
     241                 "NSTACK_DET,  "           
     242                 "PSF_QF_PERF_MAX, "           
     243                 "FLAGS "           
    249244                 ") VALUES \n", basename);
    250245  return TRUE;
     
    261256// XXX this bit could/should be autocoded...
    262257  PrintIOBuffer (ave_buffer, " (");
     258  PrintIOBuffer (ave_buffer, "%lu, ", average->extID);         
     259  PrintIOBuffer (ave_buffer, "%u,  ", average->objID);         
     260  PrintIOBuffer (ave_buffer, "%u,  ", average->catID);         
     261
     262  PrintIOBuffer (ave_buffer, "%hhd, ", average->tessID);         
     263  PrintIOBuffer (ave_buffer, "%hd,  ", average->projectionID);         
     264  PrintIOBuffer (ave_buffer, "%hhd, ", average->skycellID);         
     265
     266  PRINT_FLOAT(ave_buffer, average->Rstk,     "%.8f, ");  // 0.036 mas precision
     267  PRINT_FLOAT(ave_buffer, average->Dstk,     "%.8f, ");  // 0.036 mas precision
     268  PRINT_FLOAT(ave_buffer, average->dRstk,    "%.5f, ");  // 0.010 mas precision
     269  PRINT_FLOAT(ave_buffer, average->dDstk,    "%.5f, ");  // 0.010 mas precision
     270
    263271  PRINT_FLOAT(ave_buffer, average->R,        "%.8f, ");  // 0.036 mas precision
    264272  PRINT_FLOAT(ave_buffer, average->D,        "%.8f, ");  // 0.036 mas precision
    265273  PRINT_FLOAT(ave_buffer, average->dR,       "%.5f, ");  // 0.010 mas precision
    266274  PRINT_FLOAT(ave_buffer, average->dD,       "%.5f, ");  // 0.010 mas precision
    267   PRINT_FLOAT(ave_buffer, average->uR,       "%.5f, ");  // 0.010 mas/yr precision
    268   PRINT_FLOAT(ave_buffer, average->uD,       "%.5f, ");
    269   PRINT_FLOAT(ave_buffer, average->duR,      "%.5f, ");
    270   PRINT_FLOAT(ave_buffer, average->duD,      "%.5f, ");
    271   PRINT_FLOAT(ave_buffer, average->P,        "%.5f, ");
    272   PRINT_FLOAT(ave_buffer, average->dP,       "%.5f, ");
     275
    273276  PRINT_FLOAT(ave_buffer, average->ChiSqAve, "%.4f, ");
    274277  PRINT_FLOAT(ave_buffer, average->ChiSqPM,  "%.4f, ");
    275278  PRINT_FLOAT(ave_buffer, average->ChiSqPar, "%.4f, ");
    276   PrintIOBuffer (ave_buffer, "%d, ",  average->Tmean);         
    277   PrintIOBuffer (ave_buffer, "%d, ",  average->Trange);         
    278   PRINT_FLOAT(ave_buffer, average->psfQF,     "%.3f, ");
    279   PRINT_FLOAT(ave_buffer, average->psfQFperf, "%.3f, ");
    280   PRINT_FLOAT(ave_buffer, average->stargal,   "%.3f, ");
    281   PrintIOBuffer (ave_buffer, "%hu, ", average->Npos);           
    282   PrintIOBuffer (ave_buffer, "%hu, ", average->Nmeasure);       
    283   PrintIOBuffer (ave_buffer, "%hu, ", average->Nmissing);       
    284   PrintIOBuffer (ave_buffer, "%hu, ", average->Nextend);       
    285   PrintIOBuffer (ave_buffer, "%d, ",  average->measureOffset); 
    286   PrintIOBuffer (ave_buffer, "%d, ",  average->missingOffset); 
    287   PrintIOBuffer (ave_buffer, "%d, ",  0); // was : average->extendOffset);   
    288   PrintIOBuffer (ave_buffer, "%u, ",  average->flags);         
    289   PrintIOBuffer (ave_buffer, "%u, ",  average->photFlagsUpper);
    290   PrintIOBuffer (ave_buffer, "%u, ",  average->photFlagsLower);
    291   PrintIOBuffer (ave_buffer, "%u, ",  average->objID);         
    292   PrintIOBuffer (ave_buffer, "%u, ",  average->catID);         
    293   PrintIOBuffer (ave_buffer, "%lu",   average->extID);         
     279
     280  PrintIOBuffer (ave_buffer, "%u ",  average->flags);         
     281
    294282  PrintIOBuffer (ave_buffer, "),\n");
    295283
     284  // XXX what rules for keeping or NAN-ing various mags?
    296285  for (i = 0; i < Nsecfilt; i++) {
    297286    float meanPSFMag    = -999.0;
    298287    float meanPSFMagErr = -999.0;
     288    float meanPSFMagStd = -999.0;
     289    float meanPSFMagMin = -999.0;
     290    float meanPSFMagMax = -999.0;
    299291    if (isfinite(secfilt->dM) && isfinite(secfilt->M)) {
    300       meanPSFMag = secfilt->M;
     292      meanPSFMag    = secfilt->M;
    301293      meanPSFMagErr = secfilt->dM;
     294      meanPSFMagStd = secfilt->Mstdev;
     295      meanPSFMagMin = secfilt->Mmin;
     296      meanPSFMagMax = secfilt->Mmax;
    302297    }
    303298
    304299    float meanKronMag    = -999.0;
    305300    float meanKronMagErr = -999.0;
     301    float meanKronMagStd = -999.0;
    306302    if (isfinite(secfilt->dMkron) && isfinite(secfilt->Mkron) && (secfilt->dMkron < 0.333)) {
    307       meanKronMag = secfilt->Mkron;
     303      meanKronMag    = secfilt->Mkron;
    308304      meanKronMagErr = secfilt->dMkron;
     305      meanKronMagStd = secfilt->sMkron;
    309306    }
    310307
    311308    float meanApMag    = -999.0;
    312     if (isfinite(secfilt->Map)) {
    313       meanApMag = secfilt->Map;
    314     }
    315 
    316     float stackPSFMag    = -999.0;
    317     float stackPSFMagErr = -999.0;
    318     if (isfinite(secfilt->dFpsfStk) && isfinite(secfilt->FpsfStk) && (secfilt->dFpsfStk > 0.0)) {
    319       float SN = secfilt->FpsfStk / secfilt->dFpsfStk;
    320       if (SN > 3.0) {
    321         stackPSFMag = -2.5 * log10(secfilt->FpsfStk) + 8.9;
    322         stackPSFMagErr = secfilt->dFpsfStk / secfilt->FpsfStk;
    323       }
    324     }
    325 
    326     float stackKronMag    = -999.0;
    327     float stackKronMagErr = -999.0;
    328     if (isfinite(secfilt->dFkronStk) && isfinite(secfilt->FkronStk) && (secfilt->dFkronStk > 0.0)) {
    329       float SN = secfilt->FkronStk / secfilt->dFkronStk;
    330       if (SN > 3.0) {
    331         stackKronMag = -2.5 * log10(secfilt->FkronStk) + 8.9;
    332         stackKronMagErr = secfilt->dFkronStk / secfilt->FkronStk;
    333       }
     309    float meanApMagErr = -999.0;
     310    float meanApMagStd = -999.0;
     311    if (isfinite(secfilt->dMap) && isfinite(secfilt->Map)) {
     312      meanApMag    = secfilt->Map;
     313      meanApMagErr = secfilt->dMap;
     314      meanApMagStd = secfilt->sMap;
    334315    }
    335316
    336317    PrintIOBuffer (sec_buffer, " (");
    337318    PRINT_FLOAT(sec_buffer, meanPSFMag,      "%.6f, "); // umag precision
    338     PRINT_FLOAT(sec_buffer, meanApMag,       "%.6f, "); // umag precision
     319    PRINT_FLOAT(sec_buffer, meanPSFMagErr,   "%.6f, "); // umag precision
     320    PRINT_FLOAT(sec_buffer, meanPSFMagStd,   "%.6f, "); // umag precision
     321    PRINT_FLOAT(sec_buffer, meanPSFMagMin,   "%.6f, "); // umag precision
     322    PRINT_FLOAT(sec_buffer, meanPSFMagMax,   "%.6f, "); // umag precision
     323    PrintIOBuffer (sec_buffer, "%hd,  ", secfilt->Nused);       
     324
    339325    PRINT_FLOAT(sec_buffer, meanKronMag,     "%.6f, "); // umag precision
    340326    PRINT_FLOAT(sec_buffer, meanKronMagErr,  "%.6f, "); // umag precision
    341     PRINT_FLOAT(sec_buffer, meanPSFMagErr,   "%.6f, "); // umag precision
    342     PRINT_FLOAT(sec_buffer, secfilt->Mchisq, "%.6f, ");
    343     PRINT_FLOAT(sec_buffer, stackPSFMag,     "%.6f, "); // umag precision
    344     PRINT_FLOAT(sec_buffer, stackPSFMagErr,  "%.6f, "); // umag precision
    345     PRINT_FLOAT(sec_buffer, stackKronMag,    "%.6f, "); // umag precision
    346     PRINT_FLOAT(sec_buffer, stackKronMagErr, "%.6f, "); // 0.36 umag precision
    347     PrintIOBuffer (sec_buffer, "%u,   ", secfilt->flags);       
     327    PRINT_FLOAT(sec_buffer, meanKronMagStd,  "%.6f, "); // umag precision
     328    PrintIOBuffer (sec_buffer, "%hd,  ", secfilt->NusedKron);       
     329
     330    PRINT_FLOAT(sec_buffer, meanApMag,     "%.6f, "); // umag precision
     331    PRINT_FLOAT(sec_buffer, meanApMagErr,  "%.6f, "); // umag precision
     332    PRINT_FLOAT(sec_buffer, meanApMagStd,  "%.6f, "); // umag precision
     333    PrintIOBuffer (sec_buffer, "%hd,  ", secfilt->NusedAp);        
    348334    PrintIOBuffer (sec_buffer, "%hd,  ", secfilt->Ncode);       
    349     PrintIOBuffer (sec_buffer, "%hd,  ", secfilt->Nused);       
    350     PrintIOBuffer (sec_buffer, "%.6f, ", secfilt->Mmin);         
    351     PrintIOBuffer (sec_buffer, "%.6f, ", secfilt->Mmax);         
    352     PrintIOBuffer (sec_buffer, "%hd, ", secfilt->ubercalDist); 
    353     PrintIOBuffer (sec_buffer, "%.6f, ", secfilt->Mstdev);       
    354     PrintIOBuffer (sec_buffer, "%lu  ", 0L); // secfilt->stackDetectID
     335    PrintIOBuffer (sec_buffer, "%hd,  ", secfilt->NstackDet);       
     336
     337    PRINT_FLOAT(sec_buffer, secfilt->psfQfPerfMax, "%.6f,");       
     338    PrintIOBuffer (sec_buffer, "%u ", secfilt->flags);       
    355339    PrintIOBuffer (sec_buffer, "),\n");
    356340    secfilt ++;
  • trunk/Ohana/src/getstar

  • trunk/Ohana/src/libautocode/def/average-ps1-v5.d

    r37034 r37246  
    22EXTNAME      DVO_AVERAGE_PS1_V5
    33TYPE         BINTABLE
    4 SIZE         184
     4SIZE         192
    55DESCRIPTION  DVO Average Object Table
    66
     
    5353FIELD refColorRed,    REF_COLOR_RED,  float,        color of astrometry ref stars
    5454
     55FIELD tessID,         TESS_ID,       char,          ID of tessellation for primary skycell
     56FIELD skycellID,      SKYCELL_ID,    char,          ID of skycell for primary skycell
     57FIELD projectionID,   PROJECTION_ID, short,         ID of projection for primary skycell
     58
     59FIELD dummy,          DUMMY,         int,           unassigned bytes
     60
    5561# 'flags' was called 'code' prior to 2009.02.07
    5662FIELD flags,          FLAGS,       uint32_t,        average object flags (star; ghost; etc)
  • trunk/Ohana/src/libautocode/def/average.d

    r37034 r37246  
    22EXTNAME      DVO_AVERAGE
    33TYPE         BINTABLE
    4 SIZE         184
     4SIZE         192
    55DESCRIPTION  DVO Average Object Table
    66
     
    5353FIELD refColorRed,    REF_COLOR_RED,  float,        color of astrometry ref stars
    5454
     55FIELD tessID,         TESS_ID,       char,          ID of tessellation for primary skycell
     56FIELD skycellID,      SKYCELL_ID,    char,          ID of skycell for primary skycell
     57FIELD projectionID,   PROJECTION_ID, short,         ID of projection for primary skycell
     58
     59FIELD dummy,          DUMMY,         int,           unassigned bytes
     60
    5561# 'flags' was called 'code' prior to 2009.02.07
    5662FIELD flags,          FLAGS,       uint32_t,        average object flags (star; ghost; etc)
  • trunk/Ohana/src/libautocode/def/measure-ps1-v5.d

    r37034 r37246  
    6868FIELD psfNdof,        PSF_NDOF,      int,            psf degrees of freedom
    6969FIELD psfNpix,        PSF_NPIX,      int,            psf number of pixels
    70 FIELD crNsigma,       CR_NSIGMA,     float,          Nsigma deviation towards CR
     70FIELD photFlags2,     PHOT_FLAGS,    int,            flags supplied by photometry program
    7171FIELD extNsigma,      EXT_NSIGMA,    float,          Nsigma deviation towards EXT
    7272
  • trunk/Ohana/src/libautocode/def/measure.d

    r37034 r37246  
    6666FIELD psfNdof,        PSF_NDOF,      int,            psf degrees of freedom
    6767FIELD psfNpix,        PSF_NPIX,      int,            psf number of pixels
    68 FIELD crNsigma,       CR_NSIGMA,     float,          Nsigma deviation towards CR
     68FIELD photFlags2,     PHOT_FLAGS,    int,            flags supplied by photometry program
    6969FIELD extNsigma,      EXT_NSIGMA,    float,          Nsigma deviation towards EXT
    7070
  • trunk/Ohana/src/libautocode/def/secfilt-ps1-v5.d

    r37116 r37246  
    22EXTNAME      DVO_SECFILT_PS1_V5
    33TYPE         BINTABLE
    4 SIZE         160
     4SIZE         176
    55DESCRIPTION  DVO SecFilt : Secondary Filter Data
    66
     
    1515FIELD  sMkron,        MAG_KRON_STDEV,  float,      standard deviation of kron mags,       mags
    1616                                         
     17# XXX I could add these fields to secfilt or calculate in dvopsps?
     18FIELD  psfQfMax,      PSF_QF_MAX,      float,      best psfQf for this filter
     19FIELD  psfQfPerfMax,  PSF_QF_PERF_MAX, float,      best psfQfPerfect for this filter
     20
    1721# these statistics are PSF-specific     
    1822FIELD  Mstdev,        MAG_STDEV,         float,    standard deviation of measurements,    mags
     
    4246FIELD  dFapStk,       FLUX_AP_STK_ERR,   float,    mean flux ap error
    4347
     48FIELD  Nstack,        NSTACK,            short,    number of measurements in band (gpc1 stack only)
     49FIELD  NstackDet,     NSTACK_DET,        short,    number of stack detections in band (gpc1 stack only)
     50
    4451FIELD  stackPrmryOff, STACK_PRIMARY_OFF,  int,     measure entry which is primary stack detection
    4552FIELD  stackBestOff,  STACK_BEST_OFF,     int,     measure entry which is best stack detection
     
    6673FIELD  NusedApWrp,    NUSED_AP_WRP,      short,    number of detections used in average
    6774
     75FIELD  Nwarp,         NWARP,             short,    number of measurements in band (gpc1 warp only)
     76FIELD  NwarpGood,     NWARP_GOOD,        short,    number of meas with psf_qf > 0.85 in band (gpc1 warp only)
     77
    6878FIELD  ubercalDist,   UBERCAL_DIST,      short,    number of images from an ubercal-image
    6979
  • trunk/Ohana/src/libautocode/def/secfilt.d

    r37116 r37246  
    22EXTNAME      DVO_SECFILT
    33TYPE         BINTABLE
    4 SIZE         160
     4SIZE         176
    55DESCRIPTION  DVO SecFilt : Secondary Filter Data
    66
     
    1515FIELD  sMkron,        MAG_KRON_STDEV,  float,      standard deviation of kron mags,       mags
    1616
     17# XXX I could add these fields to secfilt or calculate in dvopsps?
     18FIELD  psfQfMax,      PSF_QF_MAX,      float,      best psfQf for this filter
     19FIELD  psfQfPerfMax,  PSF_QF_PERF_MAX, float,      best psfQfPerfect for this filter
     20
    1721# these statistics are PSF-specific     
    1822FIELD  Mstdev,        MAG_STDEV,       float,      standard deviation of measurements,    mags
     
    2125FIELD  Mchisq,        MAG_CHI,         float,      chisq on average mag,                  value
    2226
    23 FIELD  Ncode,         NCODE,           short,      number of detections in band
    24 FIELD  Nused,         NUSED,           short,      number of detections used in average
    25 FIELD  NusedKron,     NUSED_KRON,      short,      number of detections used in average
    26 FIELD  NusedAp,       NUSED_AP,        short,      number of detections used in average
     27FIELD  Ncode,         NCODE,           short,      number of detections in band (gpc1 chip only)
     28FIELD  Nused,         NUSED,           short,      number of detections used to calculate secfilt.M
     29FIELD  NusedKron,     NUSED_KRON,      short,      number of detections used to calculate secfilt.Mkron
     30FIELD  NusedAp,       NUSED_AP,        short,      number of detections used to calculate secfilt.Map
    2731
    2832FIELD  flags,         FLAGS,           uint32_t,   photometry flags
     
    4246FIELD  dFapStk,       FLUX_AP_STK_ERR,   float,    mean flux ap error
    4347
    44 FIELD  stackPrmryOff, STACK_PRIMARY_OFF,  int,     measure entry which is primary stack detection
    45 FIELD  stackBestOff,  STACK_BEST_OFF,     int,     measure entry which is best stack detection
     48FIELD  Nstack,        NSTACK,            short,    number of measurements in band (gpc1 stack only)
     49FIELD  NstackDet,     NSTACK_DET,        short,    number of stack detections in band (gpc1 stack only)
     50
     51FIELD  stackPrmryOff, STACK_PRIMARY_OFF, int,      measure entry which is primary stack detection
     52FIELD  stackBestOff,  STACK_BEST_OFF,    int,      measure entry which is best stack detection
    4653
    4754## *** this section is for forced-warp mean values ***
     
    6673FIELD  NusedApWrp,    NUSED_AP_WRP,      short,    number of detections used in average
    6774
    68 FIELD  ubercalDist,   UBERCAL_DIST,    short,      number of images from an ubercal-image
     75FIELD  Nwarp,         NWARP,             short,    number of measurements in band (gpc1 warp only)
     76FIELD  NwarpGood,     NWARP_GOOD,        short,    number of meas with psf_qf > 0.85 in band (gpc1 warp only)
     77
     78FIELD  ubercalDist,   UBERCAL_DIST,      short,    number of images from an ubercal-image
    6979
    7080# *** 20090206 : new fields : M_20, M_80; dropped dummy
  • trunk/Ohana/src/libdvo/include/dvo.h

    r37116 r37246  
    464464} MeasureTiny;
    465465
    466 /** STRUCT DEFINITION **/
     466// alternate version of PS1_V4 (old dev version)
    467467typedef struct {
    468468  double           R;                    // RA (decimal degrees )
     
    500500Average *Average_PS1_V4alt_ToInternal (Average_PS1_V4alt *in, off_t Nvalues);
    501501
    502 /** STRUCT DEFINITION **/
     502// alternate version of PS1_V4 (old dev version)
    503503typedef struct {
    504504  float            dR;                   // RA offset (arcsec)
     
    556556Measure *Measure_PS1_V4alt_ToInternal (Average *ave, Measure_PS1_V4alt *in, off_t Nvalues);
    557557
     558// alternate version of PS1_V5 (old dev version)
     559typedef struct {
     560  float            M;                    // average mag in this band (mags)
     561  float            dM;                   // formal error on average mag (mags)
     562  float            Map;                  // ave aperture mag in this band (mags)
     563  float            dMap;                 // ave aperture mag in this band (mags)
     564  float            sMap;                 // standard deviation of ap mags (mags)
     565  float            Mkron;                // ave kron mag in this band (mags)
     566  float            dMkron;               // formal error on average kron mag (mags)
     567  float            sMkron;               // standard deviation of kron mags (mags)
     568  float            Mstdev;               // standard deviation of measurements (mags)
     569  float            Mmin;                 // min accepted mag (mags)
     570  float            Mmax;                 // max accepted mag (mags)
     571  float            Mchisq;               // chisq on average mag (value)
     572  short            Ncode;                // number of detections in band
     573  short            Nused;                // number of detections used in average
     574  short            NusedKron;            // number of detections used in average
     575  short            NusedAp;              // number of detections used in average
     576  uint32_t         flags;                // photometry flags
     577  float            MpsfStk;              // magnitude from stack (primary if available)
     578  float            FpsfStk;              // flux from stack (primary if available)
     579  float            dFpsfStk;             // mean flux psf error
     580  float            MkronStk;             // magnitude from stack (primary if available)
     581  float            FkronStk;             // flux from stack (primary if available)
     582  float            dFkronStk;            // mean flux kron error
     583  float            MapStk;               // magnitude from stack (primary if available)
     584  float            FapStk;               // flux from stack (primary if available)
     585  float            dFapStk;              // mean flux ap error
     586  int              stackPrmryOff;        // measure entry which is primary stack detection
     587  int              stackBestOff;         // measure entry which is best stack detection
     588  float            MpsfWrp;              // psf magnitude from stack (primary if available)
     589  float            FpsfWrp;              // psf flux from stack (primary if available)
     590  float            dFpsfWrp;             // mean flux psf error
     591  float            sFpsfWrp;             // mean flux psf stdev
     592  float            MkronWrp;             // kron magnitude from stack (primary if available)
     593  float            FkronWrp;             // kron flux from stack (primary if available)
     594  float            dFkronWrp;            // mean flux kron error
     595  float            sFkronWrp;            // mean flux kron stdev
     596  float            MapWrp;               // aper magnitude from stack (primary if available)
     597  float            FapWrp;               // aper flux from stack (primary if available)
     598  float            dFapWrp;              // mean flux ap error
     599  float            sFapWrp;              // mean flux ap stdev
     600  short            NusedWrp;             // number of detections used in average
     601  short            NusedKronWrp;         // number of detections used in average
     602  short            NusedApWrp;           // number of detections used in average
     603  short            ubercalDist;          // number of images from an ubercal-image
     604} SecFilt_PS1_V5alt;
     605
     606SecFilt_PS1_V5alt *gfits_table_get_SecFilt_PS1_V5alt (FTable *table, off_t *Ndata, char *swapped);
     607int      gfits_convert_SecFilt_PS1_V5alt (SecFilt_PS1_V5alt *data, off_t size, off_t nitems);
     608SecFilt *SecFilt_PS1_V5alt_ToInternal (SecFilt_PS1_V5alt *in, off_t Nvalues);
     609
     610// alternate version of PS1_V5alt (old dev version)
     611typedef struct {
     612  double           R;                    // RA (decimal degrees )
     613  double           D;                    // DEC (decimal degrees )
     614  float            dR;                   // RA error (arcsec)
     615  float            dD;                   // DEC error (arcsec)
     616  float            uR;                   // RA*cos(D) proper-motion (arcsec/year)
     617  float            uD;                   // DEC proper-motion (arcsec/year)
     618  float            duR;                  // RA*cos(D) p-m error (arcsec/year)
     619  float            duD;                  // DEC p-m error (arcsec/year)
     620  float            P;                    // parallax (arcsec)
     621  float            dP;                   // parallax error (arcsec)
     622  double           Rstk;                 // RA on stack (decimal degrees )
     623  double           Dstk;                 // DEC on stack (decimal degrees )
     624  float            dRstk;                // RA error on stack (arcsec)
     625  float            dDstk;                // DEC error on stack (arcsec)
     626  float            ChiSqAve;             // astrometry analysis chisq
     627  float            ChiSqPM;              // astrometry analysis chisq
     628  float            ChiSqPar;             // astrometry analysis chisq
     629  int              Tmean;                // mean epoch (PM,PAR ref) (unix time seconds)
     630  int              Trange;               // mean epoch (PM,PAR ref) (unix time seconds)
     631  float            psfQF;                // psf coverage (bad masks)
     632  float            psfQFperf;            // psf coverage (all masks)
     633  float            stargal;              // star / galaxy separator (1/100 arcsec)
     634  unsigned short   Npos;                 // number of detections used for astrometry
     635  unsigned short   Nmeasure;             // number of psf measurements
     636  unsigned short   Nmissing;             // number of missings
     637  unsigned short   Nlensing;             // number of lensing measurements
     638  unsigned short   Nlensobj;             // number of lensing measurements
     639  unsigned short   Nextend;              // number of extended measurements
     640  int              measureOffset;        // offset to first psf measurement
     641  int              missingOffset;        // offset to first missing obs
     642  int              lensingOffset;        // offset to first lensing obs
     643  int              lensobjOffset;        // offset to mean lensing data
     644  int              extendOffset;         // offset to extended object entry
     645  int              paramsOffset;         // offset to stellar parameter data
     646  float            refColorBlue;         // color of astrometry ref stars
     647  float            refColorRed;          // color of astrometry ref stars
     648  uint32_t         flags;                // average object flags (star; ghost; etc)
     649  uint32_t         photFlagsUpper;       // upper bit of 2 bit summary of per-measure photflags
     650  uint32_t         photFlagsLower;       // lower bit of 2 bit summary of per-measure photflags
     651  unsigned int     objID;                // unique ID for object in table
     652  unsigned int     catID;                // unique ID for table in which object was first realized
     653  uint64_t         extID;                // external ID for object (eg PSPS objID)
     654  uint64_t         extIDgc;              // external ID for object in galactic coords
     655} Average_PS1_V5alt;
     656
     657Average_PS1_V5alt *gfits_table_get_Average_PS1_V5alt (FTable *table, off_t *Ndata, char *swapped);
     658int      gfits_convert_Average_PS1_V5alt (Average_PS1_V5alt *data, off_t size, off_t nitems);
     659Average *Average_PS1_V5alt_ToInternal (Average_PS1_V5alt *in, off_t Nvalues);
     660
    558661/* for some reason I have merged the set of tables and the file description,
    559662   so I need to have an internal structure to point to the separate files */
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r37116 r37246  
    646646    case MEAS_PSF_NPIX: /* OK */
    647647      value.Int = measure[0].psfNpix;
    648       break;
    649     case MEAS_CR_NSIGMA: /* OK */
    650       value.Flt = measure[0].crNsigma;
    651648      break;
    652649    case MEAS_EXT_NSIGMA: /* OK */
  • trunk/Ohana/src/libdvo/src/dvo_catalog.c

    r37116 r37246  
    141141  average->refColorRed     = NAN;
    142142
     143  average->tessID          = 0;
     144  average->skycellID       = 0;
     145  average->projectionID    = 0;
     146  average->dummy           = 0;
     147
    143148  average->flags           = 0;
    144149  average->photFlagsUpper  = 0;
     
    173178  secfilt->sMkron      = NAN;
    174179
     180  secfilt->psfQfMax     = NAN;
     181  secfilt->psfQfPerfMax = NAN;
     182
    175183  secfilt->Mstdev      = NAN;
    176184  secfilt->Mmin        = NAN;
     
    197205  secfilt->dFapStk     = NAN;
    198206
     207  secfilt->Nstack      = 0;
     208  secfilt->NstackDet   = 0;
     209
    199210  secfilt->stackPrmryOff = -1;
    200211  secfilt->stackBestOff  = -1;
     
    218229  secfilt->NusedKronWrp = 0;
    219230  secfilt->NusedApWrp   = 0;
     231
     232  secfilt->Nwarp        = 0;
     233  secfilt->NwarpGood    = 0;
    220234
    221235  secfilt->ubercalDist = 1000;
     
    279293 measure->psfNdof   = 0;
    280294 measure->psfNpix   = 0;
    281  measure->crNsigma  = NAN;
    282295 measure->extNsigma = NAN;
    283296
     
    302315 measure->dbFlags   = 0;
    303316 measure->photFlags = 0;
     317 measure->photFlags2= 0;
    304318}
    305319
  • trunk/Ohana/src/libdvo/src/dvo_convert.c

    r37116 r37246  
    8080  }
    8181
     82  // block to convert old tables (PS1_V5 versions made during development)
     83  if (!strcmp (extname, "DVO_AVERAGE_PS1_V5") && (ftable[0].header[0].Naxis[0] == 184)) {
     84    Average_PS1_V5alt *tmpAverage;
     85    tmpAverage = gfits_table_get_Average_PS1_V5alt (ftable, Naverage, NULL);
     86    if (!tmpAverage) {
     87      fprintf (stderr, "ERROR: failed to read averages\n");
     88      exit (2);
     89    }
     90    average = Average_PS1_V5alt_ToInternal (tmpAverage, *Naverage);
     91    free (tmpAverage);
     92    *format = DVO_FORMAT_PS1_V5;
     93    return (average);
     94  }
     95
    8296# define CONVERT_FORMAT(NAME, FORMAT, TYPE) \
    8397  if (!strcmp (extname, NAME)) { \
     
    285299    return (FALSE);
    286300  }
     301
     302  // block to convert old tables (PS1_V5 versions made during development)
     303  if (!strcmp (extname, "DVO_SECFILT_PS1_V5") && (ftable[0].header[0].Naxis[0] == 160)) {
     304    SecFilt_PS1_V5alt *tmpSecFilt;
     305    tmpSecFilt = gfits_table_get_SecFilt_PS1_V5alt (ftable, Nsecfilt, NULL);
     306    if (!tmpSecFilt) {
     307      fprintf (stderr, "ERROR: failed to read secfilts\n");
     308      exit (2);
     309    }
     310    secfilt = SecFilt_PS1_V5alt_ToInternal (tmpSecFilt, *Nsecfilt);
     311    free (tmpSecFilt);
     312    *format = DVO_FORMAT_PS1_V5;
     313    return (secfilt);
     314  }
     315
    287316
    288317# define CONVERT_FORMAT(NAME, FORMAT, TYPE) \
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c

    r37035 r37246  
    3232    out[i].psfQF      = in[i].psfQF;
    3333    out[i].psfChisq   = in[i].psfChisq;
    34     out[i].crNsigma   = in[i].crNsigma;
    3534    out[i].extNsigma  = in[i].extNsigma;
    3635    out[i].FWx        = in[i].FWx;
     
    8079    out[i].psfQF      = in[i].psfQF;
    8180    out[i].psfChisq   = in[i].psfChisq;
    82     out[i].crNsigma   = in[i].crNsigma;
    8381    out[i].extNsigma  = in[i].extNsigma;
    8482    out[i].FWx        = in[i].FWx;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c

    r37035 r37246  
    3434    out[i].psfQF      = in[i].psfQF;
    3535    out[i].psfChisq   = in[i].psfChisq;
    36     out[i].crNsigma   = in[i].crNsigma;
    3736    out[i].extNsigma  = in[i].extNsigma;
    3837    out[i].FWx        = in[i].FWx;
     
    8079    out[i].psfQF      = in[i].psfQF;
    8180    out[i].psfChisq   = in[i].psfChisq;
    82     out[i].crNsigma   = in[i].crNsigma;
    8381    out[i].extNsigma  = in[i].extNsigma;
    8482    out[i].FWx        = in[i].FWx;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c

    r37035 r37246  
    4040    out[i].psfNdof    = in[i].psfNdof;
    4141    out[i].psfNpix    = in[i].psfNpix;
    42     out[i].crNsigma   = in[i].crNsigma;
    4342    out[i].extNsigma  = in[i].extNsigma;
    4443    out[i].FWx        = in[i].FWx;
     
    9594    out[i].psfNdof    = in[i].psfNdof;
    9695    out[i].psfNpix    = in[i].psfNpix;
    97     out[i].crNsigma   = in[i].crNsigma;
    9896    out[i].extNsigma  = in[i].extNsigma;
    9997    out[i].FWx        = in[i].FWx;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c

    r37035 r37246  
    4040    out[i].psfNdof    = in[i].psfNdof;
    4141    out[i].psfNpix    = in[i].psfNpix;
    42     out[i].crNsigma   = in[i].crNsigma;
    4342    out[i].extNsigma  = in[i].extNsigma;
    4443    out[i].FWx        = in[i].FWx;
     
    9695    out[i].psfNdof    = in[i].psfNdof;
    9796    out[i].psfNpix    = in[i].psfNpix;
    98     out[i].crNsigma   = in[i].crNsigma;
    9997    out[i].extNsigma  = in[i].extNsigma;
    10098    out[i].FWx        = in[i].FWx;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V3.c

    r37035 r37246  
    4040    out[i].psfNdof    = in[i].psfNdof;
    4141    out[i].psfNpix    = in[i].psfNpix;
    42     out[i].crNsigma   = in[i].crNsigma;
    4342    out[i].extNsigma  = in[i].extNsigma;
    4443    out[i].FWx        = in[i].FWx;
     
    9695    out[i].psfNdof    = in[i].psfNdof;
    9796    out[i].psfNpix    = in[i].psfNpix;
    98     out[i].crNsigma   = in[i].crNsigma;
    9997    out[i].extNsigma  = in[i].extNsigma;
    10098    out[i].FWx        = in[i].FWx;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V4.c

    r37116 r37246  
    4949    out[i].psfNdof    = in[i].psfNdof;
    5050    out[i].psfNpix    = in[i].psfNpix;
    51     out[i].crNsigma   = in[i].crNsigma;
    5251    out[i].extNsigma  = in[i].extNsigma;
    5352    out[i].FWx        = in[i].FWx;
     
    114113    out[i].psfNdof    = in[i].psfNdof;
    115114    out[i].psfNpix    = in[i].psfNpix;
    116     out[i].crNsigma   = in[i].crNsigma;
    117115    out[i].extNsigma  = in[i].extNsigma;
    118116    out[i].FWx        = in[i].FWx;
     
    541539    out[i].psfNdof    = in[i].psfNdof;
    542540    out[i].psfNpix    = in[i].psfNpix;
    543     out[i].crNsigma   = in[i].crNsigma;
    544541    out[i].extNsigma  = in[i].extNsigma;
    545542    out[i].FWx        = in[i].FWx;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V5.c

    r37116 r37246  
    5656    out[i].psfNdof    = in[i].psfNdof;
    5757    out[i].psfNpix    = in[i].psfNpix;
    58     out[i].crNsigma   = in[i].crNsigma;
    5958    out[i].extNsigma  = in[i].extNsigma;
    6059    out[i].FWx        = in[i].FWx;
     
    7372    out[i].dbFlags    = in[i].dbFlags;
    7473    out[i].photFlags  = in[i].photFlags;
     74    out[i].photFlags2 = in[i].photFlags2;
    7575  }
    7676  return (out);
     
    128128    out[i].psfNdof    = in[i].psfNdof;
    129129    out[i].psfNpix    = in[i].psfNpix;
    130     out[i].crNsigma   = in[i].crNsigma;
    131130    out[i].extNsigma  = in[i].extNsigma;
    132131    out[i].FWx        = in[i].FWx;
     
    145144    out[i].dbFlags    = in[i].dbFlags;
    146145    out[i].photFlags  = in[i].photFlags;
     146    out[i].photFlags2 = in[i].photFlags2;
    147147  }
    148148  return (out);
     
    203203    out[i].refColorRed   = in[i].refColorRed;
    204204
     205    out[i].tessID        = in[i].tessID;
     206    out[i].skycellID     = in[i].skycellID;
     207    out[i].projectionID  = in[i].projectionID;
     208
    205209    out[i].flags         = in[i].flags;   
    206210    out[i].photFlagsUpper = in[i].photFlagsUpper;   
     
    223227
    224228  for (i = 0; i < Nvalues; i++) {
    225     out[i].R             = in[i].R;     
    226     out[i].D             = in[i].D;     
    227     out[i].dR            = in[i].dR;
    228     out[i].dD            = in[i].dD;
    229     out[i].uR            = in[i].uR;
    230     out[i].uD            = in[i].uD;
    231     out[i].duR           = in[i].duR;
    232     out[i].duD           = in[i].duD;
    233     out[i].P             = in[i].P;
    234     out[i].dP            = in[i].dP;
    235 
    236     out[i].Rstk          = in[i].Rstk;     
    237     out[i].Dstk          = in[i].Dstk;     
    238     out[i].dRstk         = in[i].dRstk;
    239     out[i].dDstk         = in[i].dDstk;
    240 
    241     out[i].ChiSqAve      = in[i].ChiSqAve;     
    242     out[i].ChiSqPM       = in[i].ChiSqPM;     
    243     out[i].ChiSqPar      = in[i].ChiSqPar;     
    244     out[i].Tmean         = in[i].Tmean;     
    245     out[i].Trange        = in[i].Trange;     
    246 
    247     out[i].psfQF         = in[i].psfQF;
    248     out[i].psfQFperf     = in[i].psfQFperf;
    249     out[i].stargal       = in[i].stargal;     
    250     out[i].Npos          = in[i].Npos;     
    251 
    252     out[i].Nmeasure      = in[i].Nmeasure;     
    253     out[i].Nmissing      = in[i].Nmissing;     
    254     out[i].Nlensing      = in[i].Nlensing;     
    255     out[i].Nlensobj      = in[i].Nlensobj;     
    256     out[i].Nextend       = in[i].Nextend;     
    257 
    258     out[i].measureOffset = in[i].measureOffset;
    259     out[i].missingOffset = in[i].missingOffset;
    260     out[i].lensingOffset = in[i].lensingOffset;
    261     out[i].lensobjOffset = in[i].lensobjOffset;
    262     out[i].extendOffset  = in[i].extendOffset;
    263     out[i].paramsOffset  = in[i].paramsOffset;
    264 
    265     out[i].refColorBlue  = in[i].refColorBlue;
    266     out[i].refColorRed   = in[i].refColorRed;
    267 
    268     out[i].flags         = in[i].flags;   
     229    out[i].R              = in[i].R;     
     230    out[i].D              = in[i].D;     
     231    out[i].dR             = in[i].dR;
     232    out[i].dD             = in[i].dD;
     233    out[i].uR             = in[i].uR;
     234    out[i].uD             = in[i].uD;
     235    out[i].duR            = in[i].duR;
     236    out[i].duD            = in[i].duD;
     237    out[i].P              = in[i].P;
     238    out[i].dP             = in[i].dP;
     239                         
     240    out[i].Rstk           = in[i].Rstk;     
     241    out[i].Dstk           = in[i].Dstk;     
     242    out[i].dRstk          = in[i].dRstk;
     243    out[i].dDstk          = in[i].dDstk;
     244                         
     245    out[i].ChiSqAve       = in[i].ChiSqAve;     
     246    out[i].ChiSqPM        = in[i].ChiSqPM;     
     247    out[i].ChiSqPar       = in[i].ChiSqPar;     
     248    out[i].Tmean          = in[i].Tmean;     
     249    out[i].Trange         = in[i].Trange;     
     250                         
     251    out[i].psfQF          = in[i].psfQF;
     252    out[i].psfQFperf      = in[i].psfQFperf;
     253    out[i].stargal        = in[i].stargal;     
     254    out[i].Npos           = in[i].Npos;     
     255                         
     256    out[i].Nmeasure       = in[i].Nmeasure;     
     257    out[i].Nmissing       = in[i].Nmissing;     
     258    out[i].Nlensing       = in[i].Nlensing;     
     259    out[i].Nlensobj       = in[i].Nlensobj;     
     260    out[i].Nextend        = in[i].Nextend;     
     261                         
     262    out[i].measureOffset  = in[i].measureOffset;
     263    out[i].missingOffset  = in[i].missingOffset;
     264    out[i].lensingOffset  = in[i].lensingOffset;
     265    out[i].lensobjOffset  = in[i].lensobjOffset;
     266    out[i].extendOffset   = in[i].extendOffset;
     267    out[i].paramsOffset   = in[i].paramsOffset;
     268                         
     269    out[i].refColorBlue   = in[i].refColorBlue;
     270    out[i].refColorRed    = in[i].refColorRed;
     271                         
     272    out[i].tessID         = in[i].tessID;
     273    out[i].skycellID      = in[i].skycellID;
     274    out[i].projectionID   = in[i].projectionID;
     275                         
     276    out[i].flags          = in[i].flags;   
    269277    out[i].photFlagsUpper = in[i].photFlagsUpper;   
    270278    out[i].photFlagsLower = in[i].photFlagsLower;   
    271     out[i].objID         = in[i].objID;
    272     out[i].catID         = in[i].catID;
    273     out[i].extID         = in[i].extID;
    274     out[i].extIDgc       = in[i].extIDgc;
     279    out[i].objID          = in[i].objID;
     280    out[i].catID          = in[i].catID;
     281    out[i].extID          = in[i].extID;
     282    out[i].extIDgc        = in[i].extIDgc;
    275283  }
    276284  return (out);
     
    286294  for (i = 0; i < Nvalues; i++) {
    287295    dvo_secfilt_init (&out[i]);
    288 
    289     out[i].M             = in[i].M;     
    290     out[i].dM            = in[i].dM;     
    291     out[i].Map           = in[i].Map;     
    292     out[i].dMap          = in[i].dMap;     
    293     out[i].sMap          = in[i].sMap;     
    294     out[i].Mkron         = in[i].Mkron;     
    295     out[i].dMkron        = in[i].dMkron;     
    296 
    297     out[i].Mstdev        = in[i].Mstdev;     
    298     out[i].Mmin          = in[i].Mmin;     
    299     out[i].Mmax          = in[i].Mmax;     
    300     out[i].Mchisq        = in[i].Mchisq;     
    301 
    302     out[i].Ncode         = in[i].Ncode;
    303     out[i].Nused         = in[i].Nused;
    304     out[i].NusedKron     = in[i].NusedKron;
    305     out[i].NusedAp       = in[i].NusedAp;
    306 
    307     out[i].flags         = in[i].flags;     
    308 
    309     out[i].MpsfStk       = in[i].MpsfStk;
    310     out[i].FpsfStk       = in[i].FpsfStk;
    311     out[i].dFpsfStk      = in[i].dFpsfStk;
    312 
    313     out[i].MkronStk      = in[i].MkronStk;
    314     out[i].FkronStk      = in[i].FkronStk;
    315     out[i].dFkronStk     = in[i].dFkronStk;
    316 
    317     out[i].MapStk        = in[i].MapStk;
    318     out[i].FapStk        = in[i].FapStk;
    319     out[i].dFapStk       = in[i].dFapStk;
    320 
    321     out[i].stackPrmryOff = in[i].stackPrmryOff;     
    322     out[i].stackBestOff  = in[i].stackBestOff;     
    323 
    324     out[i].MpsfWrp       = in[i].MpsfWrp;
    325     out[i].FpsfWrp       = in[i].FpsfWrp;
    326     out[i].dFpsfWrp      = in[i].dFpsfWrp;
    327     out[i].sFpsfWrp      = in[i].sFpsfWrp;
    328 
    329     out[i].MkronWrp      = in[i].MkronWrp;
    330     out[i].FkronWrp      = in[i].FkronWrp;
    331     out[i].dFkronWrp     = in[i].dFkronWrp;
    332     out[i].sFkronWrp     = in[i].sFkronWrp;
    333 
    334     out[i].MapWrp        = in[i].MapWrp;
    335     out[i].FapWrp        = in[i].FapWrp;
    336     out[i].dFapWrp       = in[i].dFapWrp;
    337     out[i].sFapWrp       = in[i].sFapWrp;
    338 
    339     out[i].NusedWrp      = in[i].NusedWrp;
    340     out[i].NusedKronWrp  = in[i].NusedKronWrp;
    341     out[i].NusedApWrp    = in[i].NusedApWrp;
    342 
    343     out[i].ubercalDist   = in[i].ubercalDist;     
    344   }
    345   return (out);
    346 }
    347 
    348 SecFilt_PS1_V5 *SecFiltInternalTo_PS1_V5 (SecFilt *in, off_t Nvalues) {
    349 
    350   off_t i;
    351   SecFilt_PS1_V5 *out;
    352 
    353   ALLOCATE_ZERO (out, SecFilt_PS1_V5, Nvalues);
    354 
    355   for (i = 0; i < Nvalues; i++) {
    356296
    357297    out[i].M             = in[i].M;     
     
    364304    out[i].sMkron        = in[i].sMkron;     
    365305
     306    out[i].psfQfMax      = in[i].psfQfMax;     
     307    out[i].psfQfPerfMax  = in[i].psfQfPerfMax;     
     308
    366309    out[i].Mstdev        = in[i].Mstdev;     
    367310    out[i].Mmin          = in[i].Mmin;     
     
    388331    out[i].dFapStk       = in[i].dFapStk;
    389332
     333    out[i].Nstack        = in[i].Nstack;     
     334    out[i].NstackDet     = in[i].NstackDet;     
     335
    390336    out[i].stackPrmryOff = in[i].stackPrmryOff;     
    391337    out[i].stackBestOff  = in[i].stackBestOff;     
     
    409355    out[i].NusedKronWrp  = in[i].NusedKronWrp;
    410356    out[i].NusedApWrp    = in[i].NusedApWrp;
     357
     358    out[i].Nwarp         = in[i].Nwarp;     
     359    out[i].NwarpGood     = in[i].NwarpGood;     
     360
     361    out[i].ubercalDist   = in[i].ubercalDist;     
     362  }
     363  return (out);
     364}
     365
     366SecFilt_PS1_V5 *SecFiltInternalTo_PS1_V5 (SecFilt *in, off_t Nvalues) {
     367
     368  off_t i;
     369  SecFilt_PS1_V5 *out;
     370
     371  ALLOCATE_ZERO (out, SecFilt_PS1_V5, Nvalues);
     372
     373  for (i = 0; i < Nvalues; i++) {
     374
     375    out[i].M             = in[i].M;     
     376    out[i].dM            = in[i].dM;     
     377    out[i].Map           = in[i].Map;     
     378    out[i].dMap          = in[i].dMap;     
     379    out[i].sMap          = in[i].sMap;     
     380    out[i].Mkron         = in[i].Mkron;     
     381    out[i].dMkron        = in[i].dMkron;     
     382    out[i].sMkron        = in[i].sMkron;     
     383
     384    out[i].psfQfMax      = in[i].psfQfMax;     
     385    out[i].psfQfPerfMax  = in[i].psfQfPerfMax;     
     386
     387    out[i].Mstdev        = in[i].Mstdev;     
     388    out[i].Mmin          = in[i].Mmin;     
     389    out[i].Mmax          = in[i].Mmax;     
     390    out[i].Mchisq        = in[i].Mchisq;     
     391
     392    out[i].Ncode         = in[i].Ncode;
     393    out[i].Nused         = in[i].Nused;
     394    out[i].NusedKron     = in[i].NusedKron;
     395    out[i].NusedAp       = in[i].NusedAp;
     396
     397    out[i].flags         = in[i].flags;     
     398
     399    out[i].MpsfStk       = in[i].MpsfStk;
     400    out[i].FpsfStk       = in[i].FpsfStk;
     401    out[i].dFpsfStk      = in[i].dFpsfStk;
     402
     403    out[i].MkronStk      = in[i].MkronStk;
     404    out[i].FkronStk      = in[i].FkronStk;
     405    out[i].dFkronStk     = in[i].dFkronStk;
     406
     407    out[i].MapStk        = in[i].MapStk;
     408    out[i].FapStk        = in[i].FapStk;
     409    out[i].dFapStk       = in[i].dFapStk;
     410
     411    out[i].Nstack        = in[i].Nstack;     
     412    out[i].NstackDet     = in[i].NstackDet;     
     413
     414    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     415    out[i].stackBestOff  = in[i].stackBestOff;     
     416
     417    out[i].MpsfWrp       = in[i].MpsfWrp;
     418    out[i].FpsfWrp       = in[i].FpsfWrp;
     419    out[i].dFpsfWrp      = in[i].dFpsfWrp;
     420    out[i].sFpsfWrp      = in[i].sFpsfWrp;
     421
     422    out[i].MkronWrp      = in[i].MkronWrp;
     423    out[i].FkronWrp      = in[i].FkronWrp;
     424    out[i].dFkronWrp     = in[i].dFkronWrp;
     425    out[i].sFkronWrp     = in[i].sFkronWrp;
     426
     427    out[i].MapWrp        = in[i].MapWrp;
     428    out[i].FapWrp        = in[i].FapWrp;
     429    out[i].dFapWrp       = in[i].dFapWrp;
     430    out[i].sFapWrp       = in[i].sFapWrp;
     431
     432    out[i].NusedWrp      = in[i].NusedWrp;
     433    out[i].NusedKronWrp  = in[i].NusedKronWrp;
     434    out[i].NusedApWrp    = in[i].NusedApWrp;
     435
     436    out[i].Nwarp         = in[i].Nwarp;     
     437    out[i].NwarpGood     = in[i].NwarpGood;     
    411438
    412439    out[i].ubercalDist   = in[i].ubercalDist;     
     
    834861  return (out);
    835862}
     863
     864/*********************** old / alternate version **********************/
     865
     866// 'primary' is needed to conform with the API for Loneos and Elixir, but is not used
     867Average *Average_PS1_V5alt_ToInternal (Average_PS1_V5alt *in, off_t Nvalues) {
     868
     869  off_t i;
     870  Average *out;
     871
     872  ALLOCATE_ZERO (out, Average, Nvalues);
     873
     874  for (i = 0; i < Nvalues; i++) {
     875    dvo_average_init (&out[i]);
     876
     877    out[i].R              = in[i].R;     
     878    out[i].D              = in[i].D;     
     879    out[i].dR             = in[i].dR;
     880    out[i].dD             = in[i].dD;
     881    out[i].uR             = in[i].uR;
     882    out[i].uD             = in[i].uD;
     883    out[i].duR            = in[i].duR;
     884    out[i].duD            = in[i].duD;
     885    out[i].P              = in[i].P;
     886    out[i].dP             = in[i].dP;
     887                         
     888    out[i].Rstk           = in[i].Rstk;     
     889    out[i].Dstk           = in[i].Dstk;     
     890    out[i].dRstk          = in[i].dRstk;
     891    out[i].dDstk          = in[i].dDstk;
     892                         
     893    out[i].ChiSqAve       = in[i].ChiSqAve;     
     894    out[i].ChiSqPM        = in[i].ChiSqPM;     
     895    out[i].ChiSqPar       = in[i].ChiSqPar;     
     896    out[i].Tmean          = in[i].Tmean;     
     897    out[i].Trange         = in[i].Trange;     
     898                         
     899    out[i].psfQF          = in[i].psfQF;
     900    out[i].psfQFperf      = in[i].psfQFperf;
     901    out[i].stargal        = in[i].stargal;     
     902    out[i].Npos           = in[i].Npos;     
     903                         
     904    out[i].Nmeasure       = in[i].Nmeasure;     
     905    out[i].Nmissing       = in[i].Nmissing;     
     906    out[i].Nlensing       = in[i].Nlensing;     
     907    out[i].Nlensobj       = in[i].Nlensobj;     
     908    out[i].Nextend        = in[i].Nextend;     
     909                         
     910    out[i].measureOffset  = in[i].measureOffset;
     911    out[i].missingOffset  = in[i].missingOffset;
     912    out[i].lensingOffset  = in[i].lensingOffset;
     913    out[i].lensobjOffset  = in[i].lensobjOffset;
     914    out[i].extendOffset   = in[i].extendOffset;
     915    out[i].paramsOffset   = in[i].paramsOffset;
     916                         
     917    out[i].refColorBlue   = in[i].refColorBlue;
     918    out[i].refColorRed    = in[i].refColorRed;
     919                         
     920    out[i].flags          = in[i].flags;   
     921    out[i].photFlagsUpper = in[i].photFlagsUpper;   
     922    out[i].photFlagsLower = in[i].photFlagsLower;   
     923    out[i].objID          = in[i].objID;
     924    out[i].catID          = in[i].catID;
     925    out[i].extID          = in[i].extID;
     926    out[i].extIDgc        = in[i].extIDgc;
     927  }
     928  return (out);
     929}
     930
     931int gfits_convert_Average_PS1_V5alt (Average_PS1_V5alt *data, off_t size, off_t nitems) {
     932
     933  off_t i;
     934  unsigned char *byte, tmp;
     935
     936  if (size != 184) {
     937    fprintf (stderr, "WARNING: mismatch in data types Average_PS1_V5alt: "OFF_T_FMT" vs %d\n",  size,  184);
     938    return (FALSE);
     939  }
     940
     941  /* provide initial values to avoid compiler warnings for non-BYTE_SWAP arch */
     942  i = tmp = 0;
     943  byte = NULL;
     944
     945# ifdef BYTE_SWAP
     946  byte = (unsigned char *) data;
     947  for (i = 0; i < nitems; i++, byte += 184) {
     948    /** BYTE SWAP **/
     949    SWAP_DBLE (0); // RA
     950    SWAP_DBLE (8); // DEC
     951    SWAP_WORD (16); // RA_ERR
     952    SWAP_WORD (20); // DEC_ERR
     953    SWAP_WORD (24); // U_RA
     954    SWAP_WORD (28); // U_DEC
     955    SWAP_WORD (32); // V_RA_ERR
     956    SWAP_WORD (36); // V_DEC_ERR
     957    SWAP_WORD (40); // PAR
     958    SWAP_WORD (44); // PAR_ERR
     959    SWAP_DBLE (48); // RA_STK
     960    SWAP_DBLE (56); // DEC_STK
     961    SWAP_WORD (64); // RA_STK_ERR
     962    SWAP_WORD (68); // DEC_STK_ERR
     963    SWAP_WORD (72); // CHISQ_POS
     964    SWAP_WORD (76); // CHISQ_PM
     965    SWAP_WORD (80); // CHISQ_PAP
     966    SWAP_WORD (84); // MEAN_EPOCH
     967    SWAP_WORD (88); // TIME_RANGE
     968    SWAP_WORD (92); // PSF_QF
     969    SWAP_WORD (96); // PSF_QF_PERF
     970    SWAP_WORD (100); // STARGAL_SEP
     971    SWAP_BYTE (104); // NUMBER_POS
     972    SWAP_BYTE (106); // NMEASURE
     973    SWAP_BYTE (108); // NMISSING
     974    SWAP_BYTE (110); // NLENSING
     975    SWAP_BYTE (112); // NLENSOBJ
     976    SWAP_BYTE (114); // NEXTEND
     977    SWAP_WORD (116); // OFF_MEASURE
     978    SWAP_WORD (120); // OFF_MISSING
     979    SWAP_WORD (124); // OFF_LENSING
     980    SWAP_WORD (128); // OFF_LENSOBJ
     981    SWAP_WORD (132); // OFF_EXTEND
     982    SWAP_WORD (136); // OFF_PARAMS
     983    SWAP_WORD (140); // REF_COLOR_BLUE
     984    SWAP_WORD (144); // REF_COLOR_RED
     985    SWAP_WORD (148); // FLAGS
     986    SWAP_WORD (152); // PHOTFLAGS_U
     987    SWAP_WORD (156); // PHOTFLAGS_L
     988    SWAP_WORD (160); // OBJ_ID
     989    SWAP_WORD (164); // CAT_ID
     990    SWAP_DBLE (168); // EXT_ID
     991    SWAP_DBLE (176); // EXT_ID_GC
     992  }
     993# endif 
     994
     995  return (TRUE);
     996}
     997
     998/*** add test of EXTNAME and header-defined columns? ***/
     999/* return internal structure representation */
     1000Average_PS1_V5alt *gfits_table_get_Average_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped) {
     1001
     1002  int Ncols;
     1003  Average_PS1_V5alt *data;
     1004
     1005  Ncols = ftable[0].header[0].Naxis[0];
     1006  if (Ncols != 184) {
     1007    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 184);
     1008    return NULL;
     1009  }
     1010
     1011  *Ndata = ftable[0].header[0].Naxis[1];
     1012  data = (Average_PS1_V5alt *) ftable[0].buffer;
     1013  if ((swapped == NULL) || (*swapped == FALSE)) {
     1014    if (!gfits_convert_Average_PS1_V5alt (data, sizeof (Average_PS1_V5alt), *Ndata)) {
     1015      return NULL;
     1016    }
     1017    gfits_table_scale_data (ftable);
     1018    if (swapped != NULL) *swapped = TRUE;
     1019  }
     1020  return (data);
     1021}
     1022
     1023/****** alt secfilt **********/
     1024
     1025SecFilt *SecFilt_PS1_V5alt_ToInternal (SecFilt_PS1_V5alt *in, off_t Nvalues) {
     1026
     1027  off_t i;
     1028  SecFilt *out;
     1029
     1030  ALLOCATE_ZERO (out, SecFilt, Nvalues);
     1031
     1032  for (i = 0; i < Nvalues; i++) {
     1033    dvo_secfilt_init (&out[i]);
     1034
     1035    out[i].M             = in[i].M;     
     1036    out[i].dM            = in[i].dM;     
     1037    out[i].Map           = in[i].Map;     
     1038    out[i].dMap          = in[i].dMap;     
     1039    out[i].sMap          = in[i].sMap;     
     1040    out[i].Mkron         = in[i].Mkron;     
     1041    out[i].dMkron        = in[i].dMkron;     
     1042
     1043    out[i].Mstdev        = in[i].Mstdev;     
     1044    out[i].Mmin          = in[i].Mmin;     
     1045    out[i].Mmax          = in[i].Mmax;     
     1046    out[i].Mchisq        = in[i].Mchisq;     
     1047
     1048    out[i].Ncode         = in[i].Ncode;
     1049    out[i].Nused         = in[i].Nused;
     1050    out[i].NusedKron     = in[i].NusedKron;
     1051    out[i].NusedAp       = in[i].NusedAp;
     1052
     1053    out[i].flags         = in[i].flags;     
     1054
     1055    out[i].MpsfStk       = in[i].MpsfStk;
     1056    out[i].FpsfStk       = in[i].FpsfStk;
     1057    out[i].dFpsfStk      = in[i].dFpsfStk;
     1058
     1059    out[i].MkronStk      = in[i].MkronStk;
     1060    out[i].FkronStk      = in[i].FkronStk;
     1061    out[i].dFkronStk     = in[i].dFkronStk;
     1062
     1063    out[i].MapStk        = in[i].MapStk;
     1064    out[i].FapStk        = in[i].FapStk;
     1065    out[i].dFapStk       = in[i].dFapStk;
     1066
     1067    out[i].stackPrmryOff = in[i].stackPrmryOff;     
     1068    out[i].stackBestOff  = in[i].stackBestOff;     
     1069
     1070    out[i].MpsfWrp       = in[i].MpsfWrp;
     1071    out[i].FpsfWrp       = in[i].FpsfWrp;
     1072    out[i].dFpsfWrp      = in[i].dFpsfWrp;
     1073    out[i].sFpsfWrp      = in[i].sFpsfWrp;
     1074
     1075    out[i].MkronWrp      = in[i].MkronWrp;
     1076    out[i].FkronWrp      = in[i].FkronWrp;
     1077    out[i].dFkronWrp     = in[i].dFkronWrp;
     1078    out[i].sFkronWrp     = in[i].sFkronWrp;
     1079
     1080    out[i].MapWrp        = in[i].MapWrp;
     1081    out[i].FapWrp        = in[i].FapWrp;
     1082    out[i].dFapWrp       = in[i].dFapWrp;
     1083    out[i].sFapWrp       = in[i].sFapWrp;
     1084
     1085    out[i].NusedWrp      = in[i].NusedWrp;
     1086    out[i].NusedKronWrp  = in[i].NusedKronWrp;
     1087    out[i].NusedApWrp    = in[i].NusedApWrp;
     1088
     1089    out[i].ubercalDist   = in[i].ubercalDist;     
     1090  }
     1091  return (out);
     1092}
     1093
     1094int gfits_convert_SecFilt_PS1_V5alt (SecFilt_PS1_V5alt *data, off_t size, off_t nitems) {
     1095
     1096  off_t i;
     1097  unsigned char *byte, tmp;
     1098
     1099  if (size != 160) {
     1100    fprintf (stderr, "WARNING: mismatch in data types SecFilt_PS1_V5alt: "OFF_T_FMT" vs %d\n",  size,  160);
     1101    return (FALSE);
     1102  }
     1103
     1104  /* provide initial values to avoid compiler warnings for non-BYTE_SWAP arch */
     1105  i = tmp = 0;
     1106  byte = NULL;
     1107
     1108# ifdef BYTE_SWAP
     1109  byte = (unsigned char *) data;
     1110  for (i = 0; i < nitems; i++, byte += 160) {
     1111    /** BYTE SWAP **/
     1112    SWAP_WORD (0); // MAG
     1113    SWAP_WORD (4); // MAG_ERR
     1114    SWAP_WORD (8); // MAG_AP
     1115    SWAP_WORD (12); // MAG_AP_ERR
     1116    SWAP_WORD (16); // MAG_AP_STDEV
     1117    SWAP_WORD (20); // MAG_KRON
     1118    SWAP_WORD (24); // MAG_KRON_ERR
     1119    SWAP_WORD (28); // MAG_KRON_STDEV
     1120    SWAP_WORD (32); // MAG_STDEV
     1121    SWAP_WORD (36); // MAG_MIN
     1122    SWAP_WORD (40); // MAG_MAX
     1123    SWAP_WORD (44); // MAG_CHI
     1124    SWAP_BYTE (48); // NCODE
     1125    SWAP_BYTE (50); // NUSED
     1126    SWAP_BYTE (52); // NUSED_KRON
     1127    SWAP_BYTE (54); // NUSED_AP
     1128    SWAP_WORD (56); // FLAGS
     1129    SWAP_WORD (60); // MAG_PSF_STK
     1130    SWAP_WORD (64); // FLUX_PSF_STK
     1131    SWAP_WORD (68); // FLUX_PSF_STK_ERR
     1132    SWAP_WORD (72); // MAG_KRON_STK
     1133    SWAP_WORD (76); // FLUX_KRON_STK
     1134    SWAP_WORD (80); // FLUX_KRON_STK_ERR
     1135    SWAP_WORD (84); // MAG_AP_STK
     1136    SWAP_WORD (88); // FLUX_AP_STK
     1137    SWAP_WORD (92); // FLUX_AP_STK_ERR
     1138    SWAP_WORD (96); // STACK_PRIMARY_OFF
     1139    SWAP_WORD (100); // STACK_BEST_OFF
     1140    SWAP_WORD (104); // MAG_PSF_WRP
     1141    SWAP_WORD (108); // FLUX_PSF_WRP
     1142    SWAP_WORD (112); // FLUX_PSF_WRP_ERR
     1143    SWAP_WORD (116); // FLUX_PSF_WRP_STD
     1144    SWAP_WORD (120); // MAG_KRON_WRP
     1145    SWAP_WORD (124); // FLUX_KRON_WRP
     1146    SWAP_WORD (128); // FLUX_KRON_WRP_ERR
     1147    SWAP_WORD (132); // FLUX_KRON_WRP_STD
     1148    SWAP_WORD (136); // MAG_AP_WRP
     1149    SWAP_WORD (140); // FLUX_AP_WRP
     1150    SWAP_WORD (144); // FLUX_AP_WRP_ERR
     1151    SWAP_WORD (148); // FLUX_AP_WRP_STD
     1152    SWAP_BYTE (152); // NUSED_WRP
     1153    SWAP_BYTE (154); // NUSED_KRON_WRP
     1154    SWAP_BYTE (156); // NUSED_AP_WRP
     1155    SWAP_BYTE (158); // UBERCAL_DIST
     1156  }
     1157# endif 
     1158
     1159  return (TRUE);
     1160}
     1161
     1162/*** add test of EXTNAME and header-defined columns? ***/
     1163/* return internal structure representation */
     1164SecFilt_PS1_V5alt *gfits_table_get_SecFilt_PS1_V5alt (FTable *ftable, off_t *Ndata, char *swapped) {
     1165
     1166  int Ncols;
     1167  SecFilt_PS1_V5alt *data;
     1168
     1169  Ncols = ftable[0].header[0].Naxis[0];
     1170  if (Ncols != 160) {
     1171    fprintf (stderr, "ERROR: mis-match in table size: width is %d but should be %d bytes\n", Ncols, 160);
     1172    return NULL;
     1173  }
     1174
     1175  *Ndata = ftable[0].header[0].Naxis[1];
     1176  data = (SecFilt_PS1_V5alt *) ftable[0].buffer;
     1177  if ((swapped == NULL) || (*swapped == FALSE)) {
     1178    if (!gfits_convert_SecFilt_PS1_V5alt (data, sizeof (SecFilt_PS1_V5alt), *Ndata)) {
     1179      return NULL;
     1180    }
     1181    gfits_table_scale_data (ftable);
     1182    if (swapped != NULL) *swapped = TRUE;
     1183  }
     1184  return (data);
     1185}
     1186
     1187
  • trunk/Ohana/src/opihi/cmd.astro/cplot.c

    r34613 r37246  
    44 
    55  double ra_prev = 0;
    6   int i, kapa, Npts, status, leftside;
     6  int i, kapa, Npts, status, leftside, valid, size;
    77  opihi_flt *x, *y, *r, *d, Rmin, Rmax, Rmid;
    88  Vector Xvec, Yvec, *xvec, *yvec;
     
    1111  if (!style_args (&graphmode, &argc, argv, &kapa)) return FALSE;
    1212
    13   if (argc != 3) {
     13  valid  = (argc == 3);
     14  valid |= (argc > 4) && !strcmp (argv[3], "where");
     15  if (!valid) {
    1416    gprint (GP_ERR, "USAGE: cplot <ra> <dec> [style]\n");
     17    gprint (GP_ERR, "   OR: cplot <ra> <dec> [style] where (condition)\n");
    1518    return (FALSE);
    1619  }
     
    3235  }
    3336
     37  // tvec is used for logical test (truth vector)
     38  Vector *tvec = NULL;
     39  if (argc > 4) {
     40    char *out = dvomath (argc - 4, &argv[4], &size, 1);
     41    if (out == NULL) {
     42      print_error ();
     43      return FALSE;
     44    }
     45    if ((tvec = SelectVector (out, OLDVECTOR, TRUE)) == NULL) {
     46      gprint (GP_ERR, " invalid logic result\n");
     47      DeleteNamedVector (out);
     48      free (out);
     49      return (FALSE);
     50    }
     51  }
     52
     53  if (tvec && tvec[0].Nelements != yvec[0].Nelements) {
     54    gprint (GP_ERR, "logic test vector not the same length as data vectors\n");
     55    DeleteVector (tvec);
     56    return (FALSE);
     57  }
     58
    3459  SetVector (&Xvec, OPIHI_FLT, xvec[0].Nelements);
    3560  SetVector (&Yvec, OPIHI_FLT, xvec[0].Nelements);
     
    4267  Npts = 0;
    4368  for (i = 0; i < Xvec.Nelements; i++, r++, d++) {
     69    if (tvec) {
     70      int skip = (tvec->type == OPIHI_FLT) ? (tvec->elements.Flt[i] == 0.0) : (tvec->elements.Int[i] == 0.0);
     71      if (skip) continue;
     72    }
     73
    4474    double ra = ohana_normalize_angle (*r);
    4575    while (ra < Rmin) ra += 360.0;
     
    88118  free (Yvec.elements.Ptr);
    89119   
     120  if (tvec) DeleteVector (tvec);
     121
    90122  return (TRUE);
    91123}
  • trunk/Ohana/src/opihi/dvo/gstar.c

    r37116 r37246  
    627627              gprint (GP_LOG, "%5.3f ", catalog.measure[Nv].psfQF);
    628628              gprint (GP_LOG, "%7.1f ", catalog.measure[Nv].psfChisq);
    629               gprint (GP_LOG, "%3.1f ", catalog.measure[Nv].crNsigma);
     629              // gprint (GP_LOG, "%3.1f ", catalog.measure[Nv].crNsigma);
    630630              gprint (GP_LOG, "%4.1f ", catalog.measure[Nv].extNsigma);
    631631              gprint (GP_LOG, "%5.1f ", FromShortDegrees(catalog.measure[Nv].theta));
  • trunk/Ohana/src/relastro/src/UpdateObjects.c

    r37038 r37246  
    467467      catalog[i].average[j].Npos = fit.Nfit;
    468468
     469      // XXX EAM 20140812: for a test, set average.Rstk,Dstk, etc to match R,D
     470      catalog[i].average[j].Rstk  = fit.Ro; // RA in degrees
     471      catalog[i].average[j].Dstk  = fit.Do; // DEC in degrees
     472      catalog[i].average[j].dRstk = fit.dRo; // RA scatter in arcsec
     473      catalog[i].average[j].dDstk = fit.dDo; // DEC scatter in arcsec
     474
    469475      // unset the NO_ASTROM bit (not(NO_ASTROM) == HAVE_ASTROM)
    470476      catalog[i].average[j].flags &= ~ID_STAR_NO_ASTROM;
  • trunk/Ohana/src/relphot/src/setMrelCatalog.c

    r37116 r37246  
    147147    off_t meas = measureOffset;
    148148
     149    float psfQfMax = 0.0;
     150    float psfQfPerfMax = 0.0;
     151
    149152    int Nap = 0;
    150153    int Npsf = 0;
     
    166169      // SKIP gpc1 forced-warp data
    167170      if (isGPC1warp(measureT[k].photcode)) continue;
     171
     172      if (isSetMrelFinal) {
     173        if (measure[k].psfQF     > psfQfMax)     psfQfMax     = measure[k].psfQF;
     174        if (measure[k].psfQFperf > psfQfPerfMax) psfQfPerfMax = measure[k].psfQFperf;
     175      }
    168176
    169177      if (measureT[k].dbFlags & MEAS_BAD) SKIP_THIS_MEAS(Nbad);
     
    367375      secfilt[Nsec].Mmin = psfstats->min;
    368376
     377      secfilt[Nsec].psfQfMax     = psfQfMax;
     378      secfilt[Nsec].psfQfPerfMax = psfQfPerfMax;
     379
    369380      // NOTE : use the modified weight for apmags as well as psf mags
    370381      liststats (Maplist, daplist, waplist, Nap, apstats);
     
    457468  get_tess_ids(&tessID, &projectID, &skycellID, average[0].R, average[0].D);
    458469
     470  average[0].tessID       = tessID;
     471  average[0].projectionID = projectID;
     472  average[0].skycellID    = skycellID;
     473
    459474  int NstackGood = 0;
    460475  int NstackSuspect = 0;
     
    478493    int isBad = FALSE;
    479494    int isSuspect = FALSE;
     495
     496    int Nstack = 0; // number for this photcode
     497    int NstackDet = 0; // number for this photcode
    480498
    481499    off_t meas = measureOffset;
     
    489507      if (!code) continue;
    490508      if (code->equiv != thisCode) { continue; }
     509
     510      Nstack ++;
     511      if (measure[k].photFlags2 & 0x00000004 == 0) NstackDet ++;
    491512
    492513      // clear this bit for all measurements
     
    615636    secfilt[Nsec].stackBestOff = k + measureOffset;
    616637
     638    secfilt[Nsec].Nstack    = Nstack;
     639    secfilt[Nsec].NstackDet = NstackDet;
     640
    617641    // this is the measurement used by secfilt[]
    618642    measure[k].dbFlags |= ID_MEAS_STACK_PHOT_SRC;
     
    694718    int Npsf = 0;
    695719    int Nkron = 0;
     720
     721    int Nwarp = 0;
     722    int NwarpGood = 0;
    696723    for (k = 0; k < average[0].Nmeasure; k++, meas++) {
    697724
     
    703730      if (!code) continue;
    704731      if (code->equiv != thisCode) { continue; }
     732
     733      Nwarp ++;
     734      if (measure[k].psfQFperf > 0.85) NwarpGood ++;
    705735
    706736      measure[k].dbFlags &= ~ID_MEAS_WARP_USED;
     
    799829    secfilt[Nsec].NusedKronWrp = Nkron;
    800830    secfilt[Nsec].MkronWrp  = isnan(secfilt[Nsec].FkronWrp) ? NAN : 8.9 - 2.5*log10(secfilt[Nsec].FkronWrp); // 8.9 since flux is in Jy
     831
     832    secfilt[Nsec].Nwarp     = Nwarp;
     833    secfilt[Nsec].NwarpGood = NwarpGood;
    801834  }
    802835  return (TRUE);
  • trunk/ippToPsps/config/ippToPspsDbSchema.sql

    r36815 r37246  
    215215  `stage_id` bigint(20) default NULL,
    216216  UNIQUE KEY `a_key` (`box_id`,`stage_id`,`batch_type`),
    217   UNIQUE KEY `stage_id_key` (`stage_id`),
     217  UNIQUE KEY `stage_id_key` (`stage_id`,`batch_type`),
    218218  CONSTRAINT `box_key` FOREIGN KEY (`box_id`) REFERENCES `box` (`id`) ON DELETE CASCADE
    219219) ENGINE=InnoDB DEFAULT CHARSET=latin1;
  • trunk/ippToPsps/config/tables.IN.vot

    r36698 r37246  
    597597      </DATA>
    598598    </TABLE>
     599    <TABLE name="TessellationType">
     600      <DESCRIPTION>VOTable description of PSPS table TessellationType</DESCRIPTION>
     601      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     602      <FIELD name="tessID" arraysize="1" datatype="unsignedByte">
     603        <DESCRIPTION>tessellation ID</DESCRIPTION>
     604      </FIELD>
     605      <FIELD name="name" arraysize="100" datatype="char">
     606        <DESCRIPTION>tessellation name</DESCRIPTION>
     607      </FIELD>
     608      <FIELD name="description" arraysize="100" datatype="char">
     609        <DESCRIPTION>tessellation description</DESCRIPTION>
     610      </FIELD>
     611      <DATA>
     612        <TABLEDATA>
     613          <TR><TD>1</TD><TD>RINGS.V3</TD><TD>Tessellation for the 3pi survey, ex pole regions</TD></TR>
     614          <TR><TD>2</TD><TD>CNP.LAP</TD><TD>Tessellation for the 3pi survey pole regions (LOCAL)</TD></TR>
     615          <TR><TD>3</TD><TD>MD01.V3</TD><TD>Tessellation for MD01 field (LOCAL)</TD></TR>
     616          <TR><TD>4</TD><TD>MD02.V3</TD><TD>Tessellation for MD02 field (LOCAL)</TD></TR>
     617          <TR><TD>5</TD><TD>MD03.V3</TD><TD>Tessellation for MD03 field (LOCAL)</TD></TR>
     618          <TR><TD>6</TD><TD>MD04.V3</TD><TD>Tessellation for MD04 field (LOCAL)</TD></TR>
     619          <TR><TD>7</TD><TD>MD05.V3</TD><TD>Tessellation for MD05 field (LOCAL)</TD></TR>
     620          <TR><TD>8</TD><TD>MD06.V3</TD><TD>Tessellation for MD06 field (LOCAL)</TD></TR>
     621          <TR><TD>9</TD><TD>MD07.V3</TD><TD>Tessellation for MD07 field (LOCAL)</TD></TR>
     622          <TR><TD>10</TD><TD>MD08.V3</TD><TD>Tessellation for MD08 field (LOCAL)</TD></TR>
     623          <TR><TD>11</TD><TD>MD09.V3</TD><TD>Tessellation for MD09 field (LOCAL)</TD></TR>
     624          <TR><TD>12</TD><TD>MD10.V3</TD><TD>Tessellation for MD10 field (LOCAL)</TD></TR>
     625          <TR><TD>13</TD><TD>M31.V4</TD><TD>Tessellation for M31 (LOCAL)</TD></TR>
     626        </TABLEDATA>
     627      </DATA>
     628    </TABLE>
    599629    <TABLE name="ImageFlags">
    600630      <DESCRIPTION>VOTable description of PSPS table ImageFlags</DESCRIPTION>
  • trunk/ippToPsps/config/tables.OB.vot

    r36698 r37246  
    1212        <DESCRIPTION>ODM object identifier index</DESCRIPTION>
    1313      </FIELD>
    14       <FIELD name="gcobjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    15         <DESCRIPTION>galactic coordinates ODM object identifier</DESCRIPTION>
    16       </FIELD>
    1714      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1815        <DESCRIPTION>IPP object number</DESCRIPTION>
     
    2118        <DESCRIPTION>Survey ID</DESCRIPTION>
    2219      </FIELD>
    23       <FIELD name="skyCellID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    24         <DESCRIPTION>single float giving PrimaryCell.SkyCell identifier</DESCRIPTION>
    25       </FIELD>
    2620      <FIELD name="htmID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    2721        <DESCRIPTION>HTM index</DESCRIPTION>
     
    3024        <DESCRIPTION>Zone index</DESCRIPTION>
    3125      </FIELD>
     26      <FIELD name="tessID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="0">
     27        <DESCRIPTION>tessellation ID for primary stack detection</DESCRIPTION>
     28      </FIELD>
     29      <FIELD name="projectionID" arraysize="1" datatype="short" unit="dimensionless" default="-1">
     30        <DESCRIPTION>projection cell identifier for primary stack detection</DESCRIPTION>
     31      </FIELD>
     32      <FIELD name="skyCellID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     33        <DESCRIPTION>skycell region identifier for primary stack detection</DESCRIPTION>
     34      </FIELD>
    3235      <FIELD name="randomID" arraysize="1" datatype="long" unit="dimensionless" default="0">
    3336        <DESCRIPTION>Random integer between 0 and 2^32 - 4,394,967,296</DESCRIPTION>
     
    3639        <DESCRIPTION>batch id</DESCRIPTION>
    3740      </FIELD>
    38       <FIELD name="dvoRegionID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     41      <FIELD name="dvoRegionID" arraysize="1" datatype="int" unit="dimensionless" default="-1">
    3942        <DESCRIPTION>identifier of dvo spatial region -dvo cat id</DESCRIPTION>
    4043      </FIELD>
     
    7578        <DESCRIPTION>Combination of the measurement errors in the Declination measurements if they exist</DESCRIPTION>
    7679      </FIELD>
    77       <FIELD name="raMeanStd" arraysize="1" datatype="float" unit="arcsec" default="-999">
    78         <DESCRIPTION>standard deviation of Right Ascension measuments in detections if they exist</DESCRIPTION>
    79       </FIELD>
    80       <FIELD name="decMeanStd" arraysize="1" datatype="float" unit="arcsec" default="-999">
    81         <DESCRIPTION>standard deviation of Declination measurements in detections if they exist</DESCRIPTION>
     80      <FIELD name="posMeanChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     81        <DESCRIPTION>Chi Square of mean position</DESCRIPTION>
    8282      </FIELD>
    8383      <FIELD name="cx" arraysize="1" datatype="double" unit="dimensionless" default="NA">
     
    136136        <DESCRIPTION>ODM object identifier index</DESCRIPTION>
    137137      </FIELD>
    138       <FIELD name="gcobjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    139         <DESCRIPTION>galactic coordinates ODM object identifier</DESCRIPTION>
    140       </FIELD>
    141138      <FIELD name="gQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    142139        <DESCRIPTION>maximum psf QfPerfect from best available g band detections</DESCRIPTION>
     
    148145        <DESCRIPTION>estimated error of best available g-band psf AB magnitudes</DESCRIPTION>
    149146      </FIELD>
    150       <FIELD name="gnIncPSFMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    151         <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
    152       </FIELD>
    153147      <FIELD name="gMeanPSFMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    154148        <DESCRIPTION>standard deviation of best available measurements - compared with MeanErr this is one measure of true variability</DESCRIPTION>
    155149      </FIELD>
    156       <FIELD name="gMinPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    157         <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
    158       </FIELD>
    159       <FIELD name="gMaxPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    160         <DESCRIPTION>maxiumum best available PSFMag</DESCRIPTION>
     150      <FIELD name="gMeanPSFMagMin" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     151        <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
     152      </FIELD>
     153      <FIELD name="gMeanPSFMagMax" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     154        <DESCRIPTION>maxiumum best available PSFMag</DESCRIPTION>
     155      </FIELD>
     156      <FIELD name="gMeanPSFMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     157        <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
    161158      </FIELD>
    162159      <FIELD name="gMeanKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     
    166163        <DESCRIPTION>estimated error of mean g kron AB magnitude</DESCRIPTION>
    167164      </FIELD>
    168       <FIELD name="gnIncKronMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    169         <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    170       </FIELD>
    171165      <FIELD name="gMeanKronMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    172166        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
     167      </FIELD>
     168      <FIELD name="gMeanKronMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     169        <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    173170      </FIELD>
    174171      <FIELD name="gMeanApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     
    178175        <DESCRIPTION>estimated error of mean g aperture AB magnitude</DESCRIPTION>
    179176      </FIELD>
    180       <FIELD name="gnIncApMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    181         <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
    182       </FIELD>
    183177      <FIELD name="gMeanApMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    184178        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
    185179      </FIELD>
    186       <FIELD name="gFlags" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     180      <FIELD name="gMeanApMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     181        <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
     182      </FIELD>
     183      <FIELD name="gFlags" arraysize="1" datatype="int" unit="dimensionless" default="0">
    187184        <DESCRIPTION>flags for g mean</DESCRIPTION>
    188185      </FIELD>
     
    196193        <DESCRIPTION>estimated error of best available r-band psf AB magnitudes</DESCRIPTION>
    197194      </FIELD>
    198       <FIELD name="rnIncPSFMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    199         <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
    200       </FIELD>
    201195      <FIELD name="rMeanPSFMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    202196        <DESCRIPTION>standard deviation of best available measurements - compared with MeanErr this is one measure of true variability</DESCRIPTION>
    203197      </FIELD>
    204       <FIELD name="rMinPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    205         <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
    206       </FIELD>
    207       <FIELD name="rMaxPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     198      <FIELD name="rMeanPSFMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     199        <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
     200      </FIELD>
     201      <FIELD name="rMeanPSFMagMin" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     202        <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
     203      </FIELD>
     204      <FIELD name="rMeanPSFMagMax" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    208205        <DESCRIPTION>maxiumum best available PSFMag</DESCRIPTION>
    209206      </FIELD>
     
    214211        <DESCRIPTION>estimated error of mean r kron AB magnitude</DESCRIPTION>
    215212      </FIELD>
    216       <FIELD name="rnIncKronMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    217         <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    218       </FIELD>
    219213      <FIELD name="rMeanKronMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    220214        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
     215      </FIELD>
     216      <FIELD name="rMeanKronMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     217        <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    221218      </FIELD>
    222219      <FIELD name="rMeanApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     
    226223        <DESCRIPTION>estimated error of mean r aperture AB magnitude</DESCRIPTION>
    227224      </FIELD>
    228       <FIELD name="rnIncApMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    229         <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
    230       </FIELD>
    231225      <FIELD name="rMeanApMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    232226        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
    233227      </FIELD>
    234       <FIELD name="rFlags" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     228      <FIELD name="rMeanApMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     229        <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
     230      </FIELD>
     231      <FIELD name="rFlags" arraysize="1" datatype="int" unit="dimensionless" default="0">
    235232        <DESCRIPTION>flags for r mean</DESCRIPTION>
    236233      </FIELD>
     
    244241        <DESCRIPTION>estimated error of best available i-band psf AB magnitudes</DESCRIPTION>
    245242      </FIELD>
    246       <FIELD name="inIncPSFMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    247         <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
    248       </FIELD>
    249243      <FIELD name="iMeanPSFMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    250244        <DESCRIPTION>standard deviation of best available measurements - compared with MeanErr this is one measure of true variability</DESCRIPTION>
    251245      </FIELD>
    252       <FIELD name="iMinPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    253         <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
    254       </FIELD>
    255       <FIELD name="iMaxPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     246      <FIELD name="iMeanPSFMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     247        <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
     248      </FIELD>
     249      <FIELD name="iMeanPSFMagMin" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     250        <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
     251      </FIELD>
     252      <FIELD name="iMeanPSFMagMax" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    256253        <DESCRIPTION>maxiumum best available PSFMag</DESCRIPTION>
    257254      </FIELD>
     
    262259        <DESCRIPTION>estimated error of mean i kron AB magnitude</DESCRIPTION>
    263260      </FIELD>
    264       <FIELD name="inIncKronMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    265         <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    266       </FIELD>
    267261      <FIELD name="iMeanKronMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    268262        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
     263      </FIELD>
     264      <FIELD name="iMeanKronMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     265        <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    269266      </FIELD>
    270267      <FIELD name="iMeanApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     
    274271        <DESCRIPTION>estimated error of mean i aperture AB magnitude</DESCRIPTION>
    275272      </FIELD>
    276       <FIELD name="inIncApMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    277         <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
    278       </FIELD>
    279273      <FIELD name="iMeanApMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    280274        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
    281275      </FIELD>
    282       <FIELD name="iFlags" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     276      <FIELD name="iMeanApMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     277        <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
     278      </FIELD>
     279      <FIELD name="iFlags" arraysize="1" datatype="int" unit="dimensionless" default="0">
    283280        <DESCRIPTION>flags for i mean</DESCRIPTION>
    284281      </FIELD>
     
    292289        <DESCRIPTION>estimated error of best available z-band psf AB magnitudes</DESCRIPTION>
    293290      </FIELD>
    294       <FIELD name="znIncPSFMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    295         <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
    296       </FIELD>
    297291      <FIELD name="zMeanPSFMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    298292        <DESCRIPTION>standard deviation of best available measurements - compared with MeanErr this is one measure of true variability</DESCRIPTION>
    299293      </FIELD>
    300       <FIELD name="zMinPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    301         <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
    302       </FIELD>
    303       <FIELD name="zMaxPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     294      <FIELD name="zMeanPSFMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     295        <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
     296      </FIELD>
     297      <FIELD name="zMeanPSFMagMin" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     298        <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
     299      </FIELD>
     300      <FIELD name="zMeanPSFMagMax" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    304301        <DESCRIPTION>maxiumum best available PSFMag</DESCRIPTION>
    305302      </FIELD>
     
    310307        <DESCRIPTION>estimated error of mean z kron AB magnitude</DESCRIPTION>
    311308      </FIELD>
    312       <FIELD name="znIncKronMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    313         <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    314       </FIELD>
    315309      <FIELD name="zMeanKronMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    316310        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
     311      </FIELD>
     312      <FIELD name="zMeanKronMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     313        <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    317314      </FIELD>
    318315      <FIELD name="zMeanApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     
    322319        <DESCRIPTION>estimated error of mean z aperture AB magnitude</DESCRIPTION>
    323320      </FIELD>
    324       <FIELD name="znIncApMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    325         <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
    326       </FIELD>
    327321      <FIELD name="zMeanApMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    328322        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
    329323      </FIELD>
    330       <FIELD name="zFlags" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     324      <FIELD name="zMeanApMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     325        <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
     326      </FIELD>
     327      <FIELD name="zFlags" arraysize="1" datatype="int" unit="dimensionless" default="0">
    331328        <DESCRIPTION>flags for z mean</DESCRIPTION>
    332329      </FIELD>
     
    340337        <DESCRIPTION>estimated error of best available y-band psf AB magnitudes</DESCRIPTION>
    341338      </FIELD>
    342       <FIELD name="ynIncPSFMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    343         <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
    344       </FIELD>
    345339      <FIELD name="yMeanPSFMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    346340        <DESCRIPTION>standard deviation of best available measurements - compared with MeanErr this is one measure of true variability</DESCRIPTION>
    347341      </FIELD>
    348       <FIELD name="yMinPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    349         <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
    350       </FIELD>
    351       <FIELD name="yMaxPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     342      <FIELD name="yMeanPSFMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     343        <DESCRIPTION>number of best available detections included in mean psfMag</DESCRIPTION>
     344      </FIELD>
     345      <FIELD name="yMeanPSFMagMin" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     346        <DESCRIPTION>minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability</DESCRIPTION>
     347      </FIELD>
     348      <FIELD name="yMeanPSFMagMax" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    352349        <DESCRIPTION>maxiumum best available PSFMag</DESCRIPTION>
    353350      </FIELD>
     
    358355        <DESCRIPTION>estimated error of mean y kron AB magnitude</DESCRIPTION>
    359356      </FIELD>
    360       <FIELD name="ynIncKronMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    361         <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    362       </FIELD>
    363357      <FIELD name="yMeanKronMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    364358        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
     359      </FIELD>
     360      <FIELD name="yMeanKronMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     361        <DESCRIPTION>number of best available detections included in mean Kron Mag</DESCRIPTION>
    365362      </FIELD>
    366363      <FIELD name="yMeanApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     
    370367        <DESCRIPTION>estimated error of mean y aperture AB magnitude</DESCRIPTION>
    371368      </FIELD>
    372       <FIELD name="ynIncApMag" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    373         <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
    374       </FIELD>
    375369      <FIELD name="yMeanApMagStd" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    376370        <DESCRIPTION>standard deviation of best available measurements</DESCRIPTION>
    377371      </FIELD>
    378       <FIELD name="yFlags" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     372      <FIELD name="yMeanApMagNpt" arraysize="1" datatype="short" unit="dimensionless" default="-999">
     373        <DESCRIPTION>number of best available detections included in mean Ap Mag</DESCRIPTION>
     374      </FIELD>
     375      <FIELD name="yFlags" arraysize="1" datatype="int" unit="dimensionless" default="0">
    379376        <DESCRIPTION>flags for y mean</DESCRIPTION>
    380377      </FIELD>
  • trunk/ippToPsps/config/tables.P2.vot

    r37106 r37246  
    229229        <DESCRIPTION> model PSF parameters at chip center</DESCRIPTION>
    230230      </FIELD>
    231       <FIELD name="momentXX" arraysize="1" datatype="float" unit="pixels" default="-999">
    232         <DESCRIPTION> moment XX</DESCRIPTION>
    233       </FIELD>
    234       <FIELD name="momentXY" arraysize="1" datatype="float" unit="pixels" default="-999">
    235         <DESCRIPTION> moment XY</DESCRIPTION>
    236       </FIELD>
    237       <FIELD name="momentYY" arraysize="1" datatype="float" unit="pixels" default="-999">
    238         <DESCRIPTION> moment YY</DESCRIPTION>
    239       </FIELD>
    240       <FIELD name="momentM3C" arraysize="1" datatype="float" unit="pixels squared" default="-999">
    241         <DESCRIPTION> moment M3C</DESCRIPTION>
    242       </FIELD>
    243       <FIELD name="momentM3S" arraysize="1" datatype="float" unit="pixels squared" default="-999">
    244         <DESCRIPTION> moment M3S</DESCRIPTION>
    245       </FIELD>
    246       <FIELD name="momentM4C" arraysize="1" datatype="float" unit="pixels squared" default="-999">
    247         <DESCRIPTION> moment M4C</DESCRIPTION>
    248       </FIELD>
    249       <FIELD name="momentM4S" arraysize="1" datatype="float" unit="pixels squared" default="-999">
    250         <DESCRIPTION> moment M4S</DESCRIPTION>
    251       </FIELD>
    252       <FIELD name="momentR1" arraysize="1" datatype="float" unit="pixels" default="-999">
    253         <DESCRIPTION> moment R1</DESCRIPTION>
    254       </FIELD>
    255       <FIELD name="momentRH" arraysize="1" datatype="float" unit="sqrt pixels" default="-999">
    256         <DESCRIPTION> moment RH</DESCRIPTION>
     231      <FIELD name="momentMajor" arraysize="1" datatype="float" unit="pixels" default="-999">
     232        <DESCRIPTION> PSF major axis sigma from 2nd moments </DESCRIPTION>
     233      </FIELD>
     234      <FIELD name="momentMinor" arraysize="1" datatype="float" unit="pixels" default="-999">
     235        <DESCRIPTION> PSF minor axis sigma from 2nd moments</DESCRIPTION>
     236      </FIELD>
     237      <FIELD name="momentM2C" arraysize="1" datatype="float" unit="pixels squared" default="-999">
     238        <DESCRIPTION> moment M2C</DESCRIPTION>
     239      </FIELD>
     240      <FIELD name="momentM2S" arraysize="1" datatype="float" unit="pixels squared" default="-999">
     241        <DESCRIPTION> moment M2S</DESCRIPTION>
     242      </FIELD>
     243      <FIELD name="momentM3" arraysize="1" datatype="float" unit="pixels squared" default="-999">
     244        <DESCRIPTION> moment M3</DESCRIPTION>
     245      </FIELD>
     246      <FIELD name="momentM4" arraysize="1" datatype="float" unit="pixels squared" default="-999">
     247        <DESCRIPTION> moment M4</DESCRIPTION>
    257248      </FIELD>
    258249      <FIELD name="apResid" arraysize="1" datatype="float" unit="magnitude" default="-999">
     
    392383        <DESCRIPTION>ODM object identifier</DESCRIPTION>
    393384      </FIELD>
    394       <FIELD name="gcobjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    395         <DESCRIPTION>galactic coordinates ODM object identifier</DESCRIPTION>
    396       </FIELD>
    397385      <FIELD name="detectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    398386        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     
    530518        <DESCRIPTION> Aperture fill factor</DESCRIPTION>
    531519      </FIELD>
     520      <FIELD name="apRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     521        <DESCRIPTION> Aperture radius</DESCRIPTION>
     522      </FIELD>
    532523      <FIELD name="kronFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    533524        <DESCRIPTION> Kron flux</DESCRIPTION>
     
    539530        <DESCRIPTION> Kron radius</DESCRIPTION>
    540531      </FIELD>
    541       <FIELD name="kronRadErr" arraysize="1" datatype="float" unit="raw pixels" default="-999">
    542         <DESCRIPTION> Kron radius error</DESCRIPTION>
    543       </FIELD>
    544532      <FIELD name="sky" arraysize="1" datatype="float" unit="adu/sec/pixel" default="-999">
    545533        <DESCRIPTION> PSF sky level at source</DESCRIPTION>
     
    548536        <DESCRIPTION> estimated error in sky</DESCRIPTION>
    549537      </FIELD>
    550       <FIELD name="infoFlag" arraysize="1" datatype="long" unit="dimensionless" default="-999">
     538      <FIELD name="infoFlag" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     539        <DESCRIPTION>flag indicating provenance information</DESCRIPTION>
     540      </FIELD>
     541      <FIELD name="infoFlag2" arraysize="1" datatype="int" unit="dimensionless" default="-999">
    551542        <DESCRIPTION>flag indicating provenance information</DESCRIPTION>
    552543      </FIELD>
  • trunk/ippToPsps/config/tables.ST.vot

    r37106 r37246  
    33<VOTABLE version="1.1">
    44  <RESOURCE>
     5
     6    <!-- StackMeta Table ************************************************** -->
    57    <TABLE name="StackMeta">
    68      <DESCRIPTION>VOTable description of PSPS table StackMeta</DESCRIPTION>
     
    2123        <DESCRIPTION>stack type identifier</DESCRIPTION>
    2224      </FIELD>
    23       <FIELD name="skyCellID" arraysize="1" datatype="float" unit="dimensionless" default="NA">
     25      <FIELD name="tessID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="0">
     26        <DESCRIPTION>tessellation ID</DESCRIPTION>
     27      </FIELD>
     28      <FIELD name="projectionID" arraysize="1" datatype="short" unit="dimensionless" default="-1">
     29        <DESCRIPTION>projection cell identifier</DESCRIPTION>
     30      </FIELD>
     31      <FIELD name="skyCellID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
    2432        <DESCRIPTION>skycell region identifier</DESCRIPTION>
    2533      </FIELD>
     
    3038        <DESCRIPTION>saturation magnitude level</DESCRIPTION>
    3139      </FIELD>
    32       <FIELD name="analVer" arraysize="1" datatype="short" unit="dimensionless" default="-999">
    33         <DESCRIPTION>analysis version index</DESCRIPTION>
     40      <FIELD name="analysisVer" arraysize="100" datatype="char" unit="alphanumeric" default="8000">
     41        <DESCRIPTION>IPP software analysis release</DESCRIPTION>
    3442      </FIELD>
    3543      <FIELD name="expTime" arraysize="1" datatype="float" unit="seconds" default="-999">
     
    115123      </DATA>
    116124    </TABLE>
    117     <TABLE name="StackObject">
     125
     126    <!-- StackObjectThin Table ************************************************** -->
     127    <TABLE name="StackObjectThin">
     128      <DESCRIPTION>VOTable description of PSPS table StackObjectThin</DESCRIPTION>
     129      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     130      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     131        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     132      </FIELD>
     133      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     134        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     135      </FIELD>
     136      <FIELD name="surveyID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
     137        <DESCRIPTION>survey flag identifier</DESCRIPTION>
     138      </FIELD>
     139      <FIELD name="tessID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="0">
     140        <DESCRIPTION>tessellation ID</DESCRIPTION>
     141      </FIELD>
     142      <FIELD name="projectionID" arraysize="1" datatype="short" unit="dimensionless" default="-1">
     143        <DESCRIPTION>projection cell identifier</DESCRIPTION>
     144      </FIELD>
     145      <FIELD name="skyCellID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     146        <DESCRIPTION>skycell region identifier</DESCRIPTION>
     147      </FIELD>
     148      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     149        <DESCRIPTION>random stack id</DESCRIPTION>
     150      </FIELD>
     151      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     152        <DESCRIPTION>identifies which of up to 5 possible stackdetections this row refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     153      </FIELD>
     154      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     155        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     156      </FIELD>
     157      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     158        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     159      </FIELD>
     160      <FIELD name="dvoRegionID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     161        <DESCRIPTION>identifier to dvo spatial region</DESCRIPTION>
     162      </FIELD>
     163      <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
     164        <DESCRIPTION>Data release when this table was loaded.</DESCRIPTION>
     165      </FIELD>
     166
     167      <!-- g-band values -->
     168      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     169        <DESCRIPTION>ipp identifier</DESCRIPTION>
     170      </FIELD>
     171      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     172        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     173      </FIELD>
     174      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     175        <DESCRIPTION>stack identifier</DESCRIPTION>
     176      </FIELD>
     177      <FIELD name="gra" arraysize="1" datatype="double" unit="degrees" default="NA">
     178        <DESCRIPTION>right ascension</DESCRIPTION>
     179      </FIELD>
     180      <FIELD name="gdec" arraysize="1" datatype="double" unit="degrees" default="NA">
     181        <DESCRIPTION>declination</DESCRIPTION>
     182      </FIELD>
     183      <FIELD name="graErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     184        <DESCRIPTION>right ascension error</DESCRIPTION>
     185      </FIELD>
     186      <FIELD name="gdecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     187        <DESCRIPTION>declination error</DESCRIPTION>
     188      </FIELD>
     189      <FIELD name="gPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     190        <DESCRIPTION>g psf AB magnitude from stack</DESCRIPTION>
     191      </FIELD>
     192      <FIELD name="gPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     193        <DESCRIPTION>estimated error of g psf AB magnitude from stack</DESCRIPTION>
     194      </FIELD>
     195      <FIELD name="gApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     196        <DESCRIPTION>g Aperture AB magnitude from stack</DESCRIPTION>
     197      </FIELD>
     198      <FIELD name="gApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     199        <DESCRIPTION>estimated error of g Ap AB magnitude from stack</DESCRIPTION>
     200      </FIELD>
     201      <FIELD name="gKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     202        <DESCRIPTION>g kron AB magnitude from stack</DESCRIPTION>
     203      </FIELD>
     204      <FIELD name="gKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     205        <DESCRIPTION>estimated error of g kron AB magnitude from stack</DESCRIPTION>
     206      </FIELD>
     207      <FIELD name="gtelluricExt" arraysize="1" datatype="float" unit="magnitudes" default="-999">
     208        <DESCRIPTION>Excess extinction</DESCRIPTION>
     209      </FIELD>
     210      <FIELD name="gsky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     211        <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
     212      </FIELD>
     213      <FIELD name="gskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     214        <DESCRIPTION>estimated error in sky</DESCRIPTION>
     215      </FIELD>
     216      <FIELD name="ginfoFlag" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     217        <DESCRIPTION>informational bits</DESCRIPTION>
     218      </FIELD>
     219      <FIELD name="ginfoFlag2" arraysize="1" datatype="int" unit="dimensionless" default="0">
     220        <DESCRIPTION>informational bits</DESCRIPTION>
     221      </FIELD>
     222      <FIELD name="gnFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     223        <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
     224      </FIELD>
     225
     226      <!-- r-band values -->
     227      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     228        <DESCRIPTION>ipp identifier</DESCRIPTION>
     229      </FIELD>
     230      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     231        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     232      </FIELD>
     233      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     234        <DESCRIPTION>stack identifier</DESCRIPTION>
     235      </FIELD>
     236      <FIELD name="rra" arraysize="1" datatype="double" unit="degrees" default="NA">
     237        <DESCRIPTION>right ascension</DESCRIPTION>
     238      </FIELD>
     239      <FIELD name="rdec" arraysize="1" datatype="double" unit="degrees" default="NA">
     240        <DESCRIPTION>declination</DESCRIPTION>
     241      </FIELD>
     242      <FIELD name="rraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     243        <DESCRIPTION>right ascension error</DESCRIPTION>
     244      </FIELD>
     245      <FIELD name="rdecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     246        <DESCRIPTION>declination error</DESCRIPTION>
     247      </FIELD>
     248      <FIELD name="rPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     249        <DESCRIPTION>r psf AB magnitude from stack</DESCRIPTION>
     250      </FIELD>
     251      <FIELD name="rPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     252        <DESCRIPTION>estimated error of r psf AB magnitude from stack</DESCRIPTION>
     253      </FIELD>
     254      <FIELD name="rApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     255        <DESCRIPTION>r Aperture AB magnitude from stack</DESCRIPTION>
     256      </FIELD>
     257      <FIELD name="rApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     258        <DESCRIPTION>estimated error of r Ap AB magnitude from stack</DESCRIPTION>
     259      </FIELD>
     260      <FIELD name="rKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     261        <DESCRIPTION>r kron AB magnitude from stack</DESCRIPTION>
     262      </FIELD>
     263      <FIELD name="rKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     264        <DESCRIPTION>estimated error of r kron AB magnitude from stack</DESCRIPTION>
     265      </FIELD>
     266      <FIELD name="rtelluricExt" arraysize="1" datatype="float" unit="magnitudes" default="-999">
     267        <DESCRIPTION>Excess extinction</DESCRIPTION>
     268      </FIELD>
     269      <FIELD name="rsky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     270        <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
     271      </FIELD>
     272      <FIELD name="rskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     273        <DESCRIPTION>estimated error in sky</DESCRIPTION>
     274      </FIELD>
     275      <FIELD name="rinfoFlag" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     276        <DESCRIPTION>informational bits</DESCRIPTION>
     277      </FIELD>
     278      <FIELD name="rinfoFlag2" arraysize="1" datatype="int" unit="dimensionless" default="0">
     279        <DESCRIPTION>informational bits</DESCRIPTION>
     280      </FIELD>
     281      <FIELD name="rnFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     282        <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
     283      </FIELD>
     284
     285      <!-- i-band values -->
     286      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     287        <DESCRIPTION>ipp identifier</DESCRIPTION>
     288      </FIELD>
     289      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     290        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     291      </FIELD>
     292      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     293        <DESCRIPTION>stack identifier</DESCRIPTION>
     294      </FIELD>
     295      <FIELD name="ira" arraysize="1" datatype="double" unit="degrees" default="NA">
     296        <DESCRIPTION>right ascension</DESCRIPTION>
     297      </FIELD>
     298      <FIELD name="idec" arraysize="1" datatype="double" unit="degrees" default="NA">
     299        <DESCRIPTION>declination</DESCRIPTION>
     300      </FIELD>
     301      <FIELD name="iraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     302        <DESCRIPTION>right ascension error</DESCRIPTION>
     303      </FIELD>
     304      <FIELD name="idecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     305        <DESCRIPTION>declination error</DESCRIPTION>
     306      </FIELD>
     307      <FIELD name="iPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     308        <DESCRIPTION>i psf AB magnitude from stack</DESCRIPTION>
     309      </FIELD>
     310      <FIELD name="iPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     311        <DESCRIPTION>estimated error of i psf AB magnitude from stack</DESCRIPTION>
     312      </FIELD>
     313      <FIELD name="iApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     314        <DESCRIPTION>i Aperture AB magnitude from stack</DESCRIPTION>
     315      </FIELD>
     316      <FIELD name="iApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     317        <DESCRIPTION>estimated error of i Ap AB magnitude from stack</DESCRIPTION>
     318      </FIELD>
     319      <FIELD name="iKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     320        <DESCRIPTION>i kron AB magnitude from stack</DESCRIPTION>
     321      </FIELD>
     322      <FIELD name="iKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     323        <DESCRIPTION>estimated error of i kron AB magnitude from stack</DESCRIPTION>
     324      </FIELD>
     325      <FIELD name="itelluricExt" arraysize="1" datatype="float" unit="magnitudes" default="-999">
     326        <DESCRIPTION>Excess extinction</DESCRIPTION>
     327      </FIELD>
     328      <FIELD name="isky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     329        <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
     330      </FIELD>
     331      <FIELD name="iskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     332        <DESCRIPTION>estimated error in sky</DESCRIPTION>
     333      </FIELD>
     334      <FIELD name="iinfoFlag" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     335        <DESCRIPTION>informational bits</DESCRIPTION>
     336      </FIELD>
     337      <FIELD name="iinfoFlag2" arraysize="1" datatype="int" unit="dimensionless" default="0">
     338        <DESCRIPTION>informational bits</DESCRIPTION>
     339      </FIELD>
     340      <FIELD name="inFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     341        <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
     342      </FIELD>
     343
     344      <!-- z-band values -->
     345      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     346        <DESCRIPTION>ipp identifier</DESCRIPTION>
     347      </FIELD>
     348      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     349        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     350      </FIELD>
     351      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     352        <DESCRIPTION>stack identifier</DESCRIPTION>
     353      </FIELD>
     354      <FIELD name="zra" arraysize="1" datatype="double" unit="degrees" default="NA">
     355        <DESCRIPTION>right ascension</DESCRIPTION>
     356      </FIELD>
     357      <FIELD name="zdec" arraysize="1" datatype="double" unit="degrees" default="NA">
     358        <DESCRIPTION>declination</DESCRIPTION>
     359      </FIELD>
     360      <FIELD name="zraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     361        <DESCRIPTION>right ascension error</DESCRIPTION>
     362      </FIELD>
     363      <FIELD name="zdecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     364        <DESCRIPTION>declination error</DESCRIPTION>
     365      </FIELD>
     366      <FIELD name="zPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     367        <DESCRIPTION>z psf AB magnitude from stack</DESCRIPTION>
     368      </FIELD>
     369      <FIELD name="zPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     370        <DESCRIPTION>estimated error of z psf AB magnitude from stack</DESCRIPTION>
     371      </FIELD>
     372      <FIELD name="zApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     373        <DESCRIPTION>z Aperture AB magnitude from stack</DESCRIPTION>
     374      </FIELD>
     375      <FIELD name="zApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     376        <DESCRIPTION>estimated error of z Ap AB magnitude from stack</DESCRIPTION>
     377      </FIELD>
     378      <FIELD name="zKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     379        <DESCRIPTION>z kron AB magnitude from stack</DESCRIPTION>
     380      </FIELD>
     381      <FIELD name="zKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     382        <DESCRIPTION>estimated error of z kron AB magnitude from stack</DESCRIPTION>
     383      </FIELD>
     384      <FIELD name="ztelluricExt" arraysize="1" datatype="float" unit="magnitudes" default="-999">
     385        <DESCRIPTION>Excess extinction</DESCRIPTION>
     386      </FIELD>
     387      <FIELD name="zsky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     388        <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
     389      </FIELD>
     390      <FIELD name="zskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     391        <DESCRIPTION>estimated error in sky</DESCRIPTION>
     392      </FIELD>
     393      <FIELD name="zinfoFlag" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     394        <DESCRIPTION>informational bits</DESCRIPTION>
     395      </FIELD>
     396      <FIELD name="zinfoFlag2" arraysize="1" datatype="int" unit="dimensionless" default="0">
     397        <DESCRIPTION>informational bits</DESCRIPTION>
     398      </FIELD>
     399      <FIELD name="znFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     400        <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
     401      </FIELD>
     402
     403      <!-- y-band values -->
     404      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     405        <DESCRIPTION>ipp identifier</DESCRIPTION>
     406      </FIELD>
     407      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     408        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     409      </FIELD>
     410      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     411        <DESCRIPTION>stack identifier</DESCRIPTION>
     412      </FIELD>
     413      <FIELD name="yra" arraysize="1" datatype="double" unit="degrees" default="NA">
     414        <DESCRIPTION>right ascension</DESCRIPTION>
     415      </FIELD>
     416      <FIELD name="ydec" arraysize="1" datatype="double" unit="degrees" default="NA">
     417        <DESCRIPTION>declination</DESCRIPTION>
     418      </FIELD>
     419      <FIELD name="yraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     420        <DESCRIPTION>right ascension error</DESCRIPTION>
     421      </FIELD>
     422      <FIELD name="ydecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
     423        <DESCRIPTION>declination error</DESCRIPTION>
     424      </FIELD>
     425      <FIELD name="yPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     426        <DESCRIPTION>y psf AB magnitude from stack</DESCRIPTION>
     427      </FIELD>
     428      <FIELD name="yPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     429        <DESCRIPTION>estimated error of y psf AB magnitude from stack</DESCRIPTION>
     430      </FIELD>
     431      <FIELD name="yApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     432        <DESCRIPTION>y Aperture AB magnitude from stack</DESCRIPTION>
     433      </FIELD>
     434      <FIELD name="yApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     435        <DESCRIPTION>estimated error of y Ap AB magnitude from stack</DESCRIPTION>
     436      </FIELD>
     437      <FIELD name="yKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     438        <DESCRIPTION>y kron AB magnitude from stack</DESCRIPTION>
     439      </FIELD>
     440      <FIELD name="yKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
     441        <DESCRIPTION>estimated error of y kron AB magnitude from stack</DESCRIPTION>
     442      </FIELD>
     443      <FIELD name="ytelluricExt" arraysize="1" datatype="float" unit="magnitudes" default="-999">
     444        <DESCRIPTION>Excess extinction</DESCRIPTION>
     445      </FIELD>
     446      <FIELD name="ysky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     447        <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
     448      </FIELD>
     449      <FIELD name="yskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
     450        <DESCRIPTION>estimated error in sky</DESCRIPTION>
     451      </FIELD>
     452      <FIELD name="yinfoFlag" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     453        <DESCRIPTION>informational bits</DESCRIPTION>
     454      </FIELD>
     455      <FIELD name="yinfoFlag2" arraysize="1" datatype="int" unit="dimensionless" default="0">
     456        <DESCRIPTION>informational bits</DESCRIPTION>
     457      </FIELD>
     458      <FIELD name="ynFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
     459        <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
     460      </FIELD>
     461      <DATA>
     462        <TABLEDATA></TABLEDATA>
     463      </DATA>
     464    </TABLE>
     465
     466    <!-- StackObjectRaw Table ************************************************** -->
     467    <TABLE name="StackObjectRaw">
    118468      <DESCRIPTION>VOTable description of PSPS table StackObject</DESCRIPTION>
    119469      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     
    121471        <DESCRIPTION>ODM object identifier</DESCRIPTION>
    122472      </FIELD>
    123       <FIELD name="gcobjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    124         <DESCRIPTION>galactic coordinates ODM object identifier</DESCRIPTION>
    125       </FIELD>
    126       <FIELD name="surveyID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
    127         <DESCRIPTION>survey flag identifier</DESCRIPTION>
    128       </FIELD>
    129       <FIELD name="skyCellID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    130         <DESCRIPTION>single float giving PrimaryCell.SkyCell identifier</DESCRIPTION>
     473      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     474        <DESCRIPTION>IPP object identifier</DESCRIPTION>
    131475      </FIELD>
    132476      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     
    142486        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
    143487      </FIELD>
    144       <FIELD name="dvoRegionID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    145         <DESCRIPTION>identifier to dvo spatial region</DESCRIPTION>
    146       </FIELD>
    147       <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
    148         <DESCRIPTION>Data release when this table was loaded.</DESCRIPTION>
    149       </FIELD>
    150       <FIELD name="gippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    151         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    152       </FIELD>
     488
     489      <!-- g-band values -->
    153490      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    154491        <DESCRIPTION>ipp identifier</DESCRIPTION>
     
    172509        <DESCRIPTION>estimated error in y</DESCRIPTION>
    173510      </FIELD>
    174       <FIELD name="gra" arraysize="1" datatype="double" unit="degrees" default="NA">
    175         <DESCRIPTION>right ascension</DESCRIPTION>
    176       </FIELD>
    177       <FIELD name="gdec" arraysize="1" datatype="double" unit="degrees" default="NA">
    178         <DESCRIPTION>declination</DESCRIPTION>
    179       </FIELD>
    180       <FIELD name="graErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    181         <DESCRIPTION>right ascension error</DESCRIPTION>
    182       </FIELD>
    183       <FIELD name="gdecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    184         <DESCRIPTION>declination error</DESCRIPTION>
    185       </FIELD>
    186511      <FIELD name="gzp" arraysize="1" datatype="float" unit="magnitude" default="0">
    187512        <DESCRIPTION>zero point offset</DESCRIPTION>
    188513      </FIELD>
     514      <FIELD name="gPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
     515        <DESCRIPTION>plate scale</DESCRIPTION>
     516      </FIELD>
    189517      <FIELD name="gexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
    190518        <DESCRIPTION>exposure time (informational)</DESCRIPTION>
     
    208536        <DESCRIPTION>PSF coverage factor</DESCRIPTION>
    209537      </FIELD>
    210        <FIELD name="gpsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     538      <FIELD name="gpsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    211539        <DESCRIPTION>PSF-weighted fraction of arcsec totally unmasked</DESCRIPTION>
    212540      </FIELD>
     
    244572        <DESCRIPTION>Aperture fill factor - redundant with psfQF, keep?</DESCRIPTION>
    245573      </FIELD>
     574      <FIELD name="gApRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     575        <DESCRIPTION>Aperture size</DESCRIPTION>
     576      </FIELD>
    246577      <FIELD name="gKronFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    247578        <DESCRIPTION> Kron flux</DESCRIPTION>
     
    253584        <DESCRIPTION> Kron radius</DESCRIPTION>
    254585      </FIELD>
    255       <FIELD name="gPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    256         <DESCRIPTION>g psf AB magnitude from stack</DESCRIPTION>
    257       </FIELD>
    258       <FIELD name="gPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    259         <DESCRIPTION>estimated error of g psf AB magnitude from stack</DESCRIPTION>
    260       </FIELD>
    261       <FIELD name="gApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    262         <DESCRIPTION>g Aperture AB magnitude from stack</DESCRIPTION>
    263       </FIELD>
    264       <FIELD name="gApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    265         <DESCRIPTION>estimated error of g Ap AB magnitude from stack</DESCRIPTION>
    266       </FIELD>
    267       <FIELD name="gKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    268         <DESCRIPTION>g kron AB magnitude from stack</DESCRIPTION>
    269       </FIELD>
    270       <FIELD name="gKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    271         <DESCRIPTION>estimated error of g kron AB magnitude from stack</DESCRIPTION>
    272       </FIELD>
    273       <FIELD name="gsky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    274         <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
    275       </FIELD>
    276       <FIELD name="gskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    277         <DESCRIPTION>estimated error in sky</DESCRIPTION>
    278       </FIELD>
    279       <FIELD name="ginfoFlag" arraysize="1" datatype="long" unit="dimensionless" default="-999">
    280         <DESCRIPTION>indicator of strange propeties</DESCRIPTION>
    281       </FIELD>
    282       <FIELD name="gnFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
    283         <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
    284       </FIELD>
    285       <FIELD name="rippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    286         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    287       </FIELD>
     586
     587      <!-- r-band values -->
    288588      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    289589        <DESCRIPTION>ipp identifier</DESCRIPTION>
     
    307607        <DESCRIPTION>estimated error in y</DESCRIPTION>
    308608      </FIELD>
    309       <FIELD name="rra" arraysize="1" datatype="double" unit="degrees" default="NA">
    310         <DESCRIPTION>right ascension</DESCRIPTION>
    311       </FIELD>
    312       <FIELD name="rdec" arraysize="1" datatype="double" unit="degrees" default="NA">
    313         <DESCRIPTION>declination</DESCRIPTION>
    314       </FIELD>
    315       <FIELD name="rraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    316         <DESCRIPTION>right ascension error</DESCRIPTION>
    317       </FIELD>
    318       <FIELD name="rdecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    319         <DESCRIPTION>declination error</DESCRIPTION>
    320       </FIELD>
    321609      <FIELD name="rzp" arraysize="1" datatype="float" unit="magnitude" default="0">
    322610        <DESCRIPTION>zero point offset</DESCRIPTION>
    323611      </FIELD>
     612      <FIELD name="rPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
     613        <DESCRIPTION>plate scale</DESCRIPTION>
     614      </FIELD>
    324615      <FIELD name="rexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
    325616        <DESCRIPTION>exposure time (informational)</DESCRIPTION>
     
    343634        <DESCRIPTION>PSF coverage factor</DESCRIPTION>
    344635      </FIELD>
    345        <FIELD name="rpsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     636      <FIELD name="rpsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    346637        <DESCRIPTION>PSF-weighted fraction of arcsec totally unmasked</DESCRIPTION>
    347638      </FIELD>
     
    379670        <DESCRIPTION>Aperture fill factor - redundant with psfQF, keep?</DESCRIPTION>
    380671      </FIELD>
     672      <FIELD name="rApRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     673        <DESCRIPTION>Aperture size</DESCRIPTION>
     674      </FIELD>
    381675      <FIELD name="rKronFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    382676        <DESCRIPTION> Kron flux</DESCRIPTION>
     
    388682        <DESCRIPTION> Kron radius</DESCRIPTION>
    389683      </FIELD>
    390       <FIELD name="rPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    391         <DESCRIPTION>psf AB mag from stack</DESCRIPTION>
    392       </FIELD>
    393       <FIELD name="rPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    394         <DESCRIPTION>estimated error of psf mag from stack</DESCRIPTION>
    395       </FIELD>
    396       <FIELD name="rApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    397         <DESCRIPTION>aperture AB mag from stack</DESCRIPTION>
    398       </FIELD>
    399       <FIELD name="rApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    400         <DESCRIPTION>estimated error of aperture mag from stack</DESCRIPTION>
    401       </FIELD>
    402       <FIELD name="rKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    403         <DESCRIPTION>kron AB mag from stack</DESCRIPTION>
    404       </FIELD>
    405       <FIELD name="rKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    406         <DESCRIPTION>estimated error of kron mag from stack</DESCRIPTION>
    407       </FIELD>
    408       <FIELD name="rsky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    409         <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
    410       </FIELD>
    411       <FIELD name="rskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    412         <DESCRIPTION>estimated error in sky</DESCRIPTION>
    413       </FIELD>
    414       <FIELD name="rinfoFlag" arraysize="1" datatype="long" unit="dimensionless" default="-999">
    415         <DESCRIPTION>indicator of strange propeties</DESCRIPTION>
    416       </FIELD>
    417       <FIELD name="rnFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
    418         <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
    419       </FIELD>
    420       <FIELD name="iippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    421         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    422       </FIELD>
     684
     685      <!-- i-band values -->
    423686      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    424687        <DESCRIPTION>ipp identifier</DESCRIPTION>
     
    442705        <DESCRIPTION>estimated error in y</DESCRIPTION>
    443706      </FIELD>
    444       <FIELD name="ira" arraysize="1" datatype="double" unit="degrees" default="NA">
    445         <DESCRIPTION>right ascension</DESCRIPTION>
    446       </FIELD>
    447       <FIELD name="idec" arraysize="1" datatype="double" unit="degrees" default="NA">
    448         <DESCRIPTION>declination</DESCRIPTION>
    449       </FIELD>
    450       <FIELD name="iraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    451         <DESCRIPTION>right ascension error</DESCRIPTION>
    452       </FIELD>
    453       <FIELD name="idecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    454         <DESCRIPTION>declination error</DESCRIPTION>
    455       </FIELD>
    456707      <FIELD name="izp" arraysize="1" datatype="float" unit="magnitude" default="0">
    457708        <DESCRIPTION>zero point offset</DESCRIPTION>
    458709      </FIELD>
     710      <FIELD name="iPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
     711        <DESCRIPTION>plate scale</DESCRIPTION>
     712      </FIELD>
    459713      <FIELD name="iexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
    460714        <DESCRIPTION>exposure time (informational)</DESCRIPTION>
     
    478732        <DESCRIPTION>PSF coverage factor</DESCRIPTION>
    479733      </FIELD>
    480        <FIELD name="ipsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     734      <FIELD name="ipsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    481735        <DESCRIPTION>PSF-weighted fraction of arcsec totally unmasked</DESCRIPTION>
    482736      </FIELD>
     
    514768        <DESCRIPTION>Aperture fill factor - redundant with psfQF, keep?</DESCRIPTION>
    515769      </FIELD>
     770      <FIELD name="iApRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     771        <DESCRIPTION>Aperture size</DESCRIPTION>
     772      </FIELD>
    516773      <FIELD name="iKronFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    517774        <DESCRIPTION> Kron flux</DESCRIPTION>
     
    523780        <DESCRIPTION> Kron radius</DESCRIPTION>
    524781      </FIELD>
    525       <FIELD name="iPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    526         <DESCRIPTION>psf AB mag from stack</DESCRIPTION>
    527       </FIELD>
    528       <FIELD name="iPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    529         <DESCRIPTION>estimated error of psf mag from stack</DESCRIPTION>
    530       </FIELD>
    531       <FIELD name="iApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    532         <DESCRIPTION>aperture AB mag from stack</DESCRIPTION>
    533       </FIELD>
    534       <FIELD name="iApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    535         <DESCRIPTION>estimated error of aperture mag from stack</DESCRIPTION>
    536       </FIELD>
    537       <FIELD name="iKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    538         <DESCRIPTION>kron AB mag from stack</DESCRIPTION>
    539       </FIELD>
    540       <FIELD name="iKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    541         <DESCRIPTION>estimated error of kron mag from stack</DESCRIPTION>
    542       </FIELD>
    543       <FIELD name="isky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    544         <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
    545       </FIELD>
    546       <FIELD name="iskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    547         <DESCRIPTION>estimated error in sky</DESCRIPTION>
    548       </FIELD>
    549       <FIELD name="iinfoFlag" arraysize="1" datatype="long" unit="dimensionless" default="-999">
    550         <DESCRIPTION>indicator of strange propeties</DESCRIPTION>
    551       </FIELD>
    552       <FIELD name="inFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
    553         <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
    554       </FIELD>
    555       <FIELD name="zippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    556         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    557       </FIELD>
     782
     783      <!-- z-band values -->
    558784      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    559785        <DESCRIPTION>ipp identifier</DESCRIPTION>
     
    577803        <DESCRIPTION>estimated error in y</DESCRIPTION>
    578804      </FIELD>
    579       <FIELD name="zra" arraysize="1" datatype="double" unit="degrees" default="NA">
    580         <DESCRIPTION>right ascension</DESCRIPTION>
    581       </FIELD>
    582       <FIELD name="zdec" arraysize="1" datatype="double" unit="degrees" default="NA">
    583         <DESCRIPTION>declination</DESCRIPTION>
    584       </FIELD>
    585       <FIELD name="zraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    586         <DESCRIPTION>right ascension error</DESCRIPTION>
    587       </FIELD>
    588       <FIELD name="zdecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    589         <DESCRIPTION>declination error</DESCRIPTION>
    590       </FIELD>
    591805      <FIELD name="zzp" arraysize="1" datatype="float" unit="magnitude" default="0">
    592806        <DESCRIPTION>zero point offset</DESCRIPTION>
    593807      </FIELD>
     808      <FIELD name="zPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
     809        <DESCRIPTION>plate scale</DESCRIPTION>
     810      </FIELD>
    594811      <FIELD name="zexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
    595812        <DESCRIPTION>exposure time (informational)</DESCRIPTION>
     
    613830        <DESCRIPTION>PSF coverage factor</DESCRIPTION>
    614831      </FIELD>
    615        <FIELD name="zpsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     832      <FIELD name="zpsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    616833        <DESCRIPTION>PSF-weighted fraction of arcsec totally unmasked</DESCRIPTION>
    617834      </FIELD>
     
    649866        <DESCRIPTION>Aperture fill factor - redundant with psfQF, keep?</DESCRIPTION>
    650867      </FIELD>
     868      <FIELD name="zApRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     869        <DESCRIPTION>Aperture size</DESCRIPTION>
     870      </FIELD>
    651871      <FIELD name="zKronFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    652872        <DESCRIPTION> Kron flux</DESCRIPTION>
     
    658878        <DESCRIPTION> Kron radius</DESCRIPTION>
    659879      </FIELD>
    660       <FIELD name="zPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    661         <DESCRIPTION>psf AB mag from stack</DESCRIPTION>
    662       </FIELD>
    663       <FIELD name="zPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    664         <DESCRIPTION>estimated error of psf mag from stack</DESCRIPTION>
    665       </FIELD>
    666       <FIELD name="zApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    667         <DESCRIPTION>aperture AB mag from stack</DESCRIPTION>
    668       </FIELD>
    669       <FIELD name="zApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    670         <DESCRIPTION>estimated error of aperture mag from stack</DESCRIPTION>
    671       </FIELD>
    672       <FIELD name="zKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    673         <DESCRIPTION>kron AB mag from stack</DESCRIPTION>
    674       </FIELD>
    675       <FIELD name="zKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    676         <DESCRIPTION>estimated error of kron mag from stack</DESCRIPTION>
    677       </FIELD>
    678       <FIELD name="zsky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    679         <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
    680       </FIELD>
    681       <FIELD name="zskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    682         <DESCRIPTION>estimated error in sky</DESCRIPTION>
    683       </FIELD>
    684       <FIELD name="zinfoFlag" arraysize="1" datatype="long" unit="dimensionless" default="-999">
    685         <DESCRIPTION>indicator of strange propeties</DESCRIPTION>
    686       </FIELD>
    687       <FIELD name="znFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
    688         <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
    689       </FIELD>
    690       <FIELD name="yippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    691         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    692       </FIELD>
     880
     881      <!-- y-band values -->
    693882      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    694883        <DESCRIPTION>ipp identifier</DESCRIPTION>
     
    712901        <DESCRIPTION>estimated error in y</DESCRIPTION>
    713902      </FIELD>
    714       <FIELD name="yra" arraysize="1" datatype="double" unit="degrees" default="NA">
    715         <DESCRIPTION>right ascension</DESCRIPTION>
    716       </FIELD>
    717       <FIELD name="ydec" arraysize="1" datatype="double" unit="degrees" default="NA">
    718         <DESCRIPTION>declination</DESCRIPTION>
    719       </FIELD>
    720       <FIELD name="yraErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    721         <DESCRIPTION>right ascension error</DESCRIPTION>
    722       </FIELD>
    723       <FIELD name="ydecErr" arraysize="1" datatype="float" unit="arcsec" default="NA">
    724         <DESCRIPTION>declination error</DESCRIPTION>
    725       </FIELD>
    726903      <FIELD name="yzp" arraysize="1" datatype="float" unit="magnitude" default="0">
    727904        <DESCRIPTION>zero point offset</DESCRIPTION>
    728905      </FIELD>
     906      <FIELD name="yPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
     907        <DESCRIPTION>plate scale</DESCRIPTION>
     908      </FIELD>
    729909      <FIELD name="yexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
    730910        <DESCRIPTION>exposure time (informational)</DESCRIPTION>
     
    748928        <DESCRIPTION>PSF coverage factor</DESCRIPTION>
    749929      </FIELD>
    750        <FIELD name="ypsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     930      <FIELD name="ypsfQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    751931        <DESCRIPTION>PSF-weighted fraction of arcsec totally unmasked</DESCRIPTION>
    752932      </FIELD>
     
    784964        <DESCRIPTION>Aperture fill factor - redundant with psfQF, keep?</DESCRIPTION>
    785965      </FIELD>
     966      <FIELD name="yApRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     967        <DESCRIPTION>Aperture size</DESCRIPTION>
     968      </FIELD>
    786969      <FIELD name="yKronFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    787970        <DESCRIPTION> Kron flux</DESCRIPTION>
     
    793976        <DESCRIPTION> Kron radius</DESCRIPTION>
    794977      </FIELD>
    795       <FIELD name="yPSFMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    796         <DESCRIPTION>psf AB mag from stack</DESCRIPTION>
    797       </FIELD>
    798       <FIELD name="yPSFMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    799         <DESCRIPTION>estimated error of psf mag from stack</DESCRIPTION>
    800       </FIELD>
    801       <FIELD name="yApMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    802         <DESCRIPTION>aperture AB mag from stack</DESCRIPTION>
    803       </FIELD>
    804       <FIELD name="yApMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    805         <DESCRIPTION>estimated error of aperture mag from stack</DESCRIPTION>
    806       </FIELD>
    807       <FIELD name="yKronMag" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    808         <DESCRIPTION>kron AB mag from stack</DESCRIPTION>
    809       </FIELD>
    810       <FIELD name="yKronMagErr" arraysize="1" datatype="float" unit="AB magnitude" default="-999">
    811         <DESCRIPTION>estimated error of kron mag from stack</DESCRIPTION>
    812       </FIELD>
    813       <FIELD name="ysky" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    814         <DESCRIPTION>PSF sky level at source (adu)</DESCRIPTION>
    815       </FIELD>
    816       <FIELD name="yskyErr" arraysize="1" datatype="float" unit="adu/s/arcsec" default="-999">
    817         <DESCRIPTION>estimated error in sky</DESCRIPTION>
    818       </FIELD>
    819       <FIELD name="yinfoFlag" arraysize="1" datatype="long" unit="dimensionless" default="-999">
    820         <DESCRIPTION>indicator of strange propeties</DESCRIPTION>
    821       </FIELD>
    822       <FIELD name="ynFrames" arraysize="1" datatype="int" unit="dimensionless" default="-999">
    823         <DESCRIPTION>number of frames contributing to source</DESCRIPTION>
    824       </FIELD>     
     978
    825979      <DATA>
    826980        <TABLEDATA></TABLEDATA>
    827981      </DATA>
    828982    </TABLE>
     983
     984    <!-- StackApFlx Table ************************************************** -->
    829985    <TABLE name="StackApFlx">
    830986      <DESCRIPTION>VOTable description of PSPS table StackApFlx</DESCRIPTION>
     
    833989        <DESCRIPTION>ODM object identifier</DESCRIPTION>
    834990      </FIELD>
    835       <FIELD name="gcobjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    836         <DESCRIPTION>galactic coordinates ODM object identifier</DESCRIPTION>
    837       </FIELD>
    838       <FIELD name="surveyID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="0">
    839         <DESCRIPTION>survey flag identifier</DESCRIPTION>
    840       </FIELD>
    841       <FIELD name="skyCellID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    842         <DESCRIPTION>single float giving PrimaryCell.SkyCell identifier</DESCRIPTION>
     991      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     992        <DESCRIPTION>IPP object identifier</DESCRIPTION>
    843993      </FIELD>
    844994      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     
    8541004        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
    8551005      </FIELD>
    856       <FIELD name="dvoRegionID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    857         <DESCRIPTION>identifier to dvo spatial region</DESCRIPTION>
    858       </FIELD>
    859       <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
    860         <DESCRIPTION>Data release when this table was loaded.</DESCRIPTION>
    861       </FIELD>
     1006
     1007      <!-- g-band values -->
    8621008      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    8631009        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     
    8651011      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    8661012        <DESCRIPTION>stack identifier</DESCRIPTION>
    867       </FIELD>
    868       <FIELD name="gippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    869         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    8701013      </FIELD>
    8711014      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    8721015        <DESCRIPTION>ipp identifier</DESCRIPTION>
    8731016      </FIELD>
    874       <FIELD name="gflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1017      <FIELD name="gflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    8751018        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    8761019      </FIELD>
    877       <FIELD name="gflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1020      <FIELD name="gflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    8781021        <DESCRIPTION>estimated error in flxR3</DESCRIPTION>
    8791022      </FIELD>
    880       <FIELD name="gflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1023      <FIELD name="gflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    8811024        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    8821025      </FIELD>
     
    8841027        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    8851028      </FIELD>
    886       <FIELD name="gflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1029      <FIELD name="gflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    8871030        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    8881031      </FIELD>
    889       <FIELD name="gflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1032      <FIELD name="gflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    8901033        <DESCRIPTION>estimated error in flxR4</DESCRIPTION>
    8911034      </FIELD>
    892       <FIELD name="gflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1035      <FIELD name="gflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    8931036        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    8941037      </FIELD>
     
    8961039        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    8971040      </FIELD>
    898       <FIELD name="gflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1041      <FIELD name="gflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    8991042        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    9001043      </FIELD>
    901       <FIELD name="gflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1044      <FIELD name="gflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9021045        <DESCRIPTION>estimated error is gflxR5</DESCRIPTION>
    9031046      </FIELD>
    904       <FIELD name="gflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1047      <FIELD name="gflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    9051048        <DESCRIPTION>estimated standard deviation in gflxR5</DESCRIPTION>
    9061049      </FIELD>
     
    9081051        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    9091052      </FIELD>
    910       <FIELD name="gc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1053      <FIELD name="gc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    9111054        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    9121055      </FIELD>
    913       <FIELD name="gc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1056      <FIELD name="gc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9141057        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    9151058      </FIELD>
    916       <FIELD name="gc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1059      <FIELD name="gc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    9171060        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    9181061      </FIELD>
     
    9201063        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    9211064      </FIELD>
    922       <FIELD name="gc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1065      <FIELD name="gc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    9231066        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    9241067      </FIELD>
    925       <FIELD name="gc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1068      <FIELD name="gc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9261069        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    9271070      </FIELD>
    928       <FIELD name="gc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1071      <FIELD name="gc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    9291072        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    9301073      </FIELD>
     
    9321075        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    9331076      </FIELD>
    934       <FIELD name="gc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1077      <FIELD name="gc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    9351078        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    9361079      </FIELD>
    937       <FIELD name="gc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1080      <FIELD name="gc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9381081        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    9391082      </FIELD>
    940       <FIELD name="gc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1083      <FIELD name="gc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    9411084        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    9421085      </FIELD>
     
    9441087        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    9451088      </FIELD>
    946       <FIELD name="gc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1089      <FIELD name="gc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    9471090        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    9481091      </FIELD>
    949       <FIELD name="gc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1092      <FIELD name="gc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9501093        <DESCRIPTION>estimated error in c2flxR3</DESCRIPTION>
    9511094      </FIELD>
    952       <FIELD name="gc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1095      <FIELD name="gc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    9531096        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    9541097      </FIELD>
     
    9561099        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    9571100      </FIELD>
    958       <FIELD name="gc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1101      <FIELD name="gc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    9591102        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    9601103      </FIELD>
    961       <FIELD name="gc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1104      <FIELD name="gc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9621105        <DESCRIPTION>estimated error in c2flxR4</DESCRIPTION>
    9631106      </FIELD>
    964       <FIELD name="gc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1107      <FIELD name="gc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    9651108        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    9661109      </FIELD>
     
    9681111        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    9691112      </FIELD>
    970       <FIELD name="gc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1113      <FIELD name="gc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    9711114        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    9721115      </FIELD>
    973       <FIELD name="gc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1116      <FIELD name="gc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9741117        <DESCRIPTION>estimated error in c2flxR5</DESCRIPTION>
    9751118      </FIELD>
    976       <FIELD name="gc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1119      <FIELD name="gc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    9771120        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    9781121      </FIELD>
     
    9801123        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    9811124      </FIELD>
     1125
     1126      <!-- r-band values -->
    9821127      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    9831128        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     
    9851130      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    9861131        <DESCRIPTION>stack identifier</DESCRIPTION>
    987       </FIELD>
    988       <FIELD name="rippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    989         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    9901132      </FIELD>
    9911133      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    9921134        <DESCRIPTION>ipp identifier</DESCRIPTION>
    9931135      </FIELD>
    994       <FIELD name="rflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1136      <FIELD name="rflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    9951137        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    9961138      </FIELD>
    997       <FIELD name="rflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1139      <FIELD name="rflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    9981140        <DESCRIPTION>estimated error in flxR3</DESCRIPTION>
    9991141      </FIELD>
    1000       <FIELD name="rflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1142      <FIELD name="rflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10011143        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    10021144      </FIELD>
     
    10041146        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    10051147      </FIELD>
    1006       <FIELD name="rflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1148      <FIELD name="rflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    10071149        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    10081150      </FIELD>
    1009       <FIELD name="rflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1151      <FIELD name="rflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10101152        <DESCRIPTION>estimated error in flxR4</DESCRIPTION>
    10111153      </FIELD>
    1012       <FIELD name="rflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1154      <FIELD name="rflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10131155        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    10141156      </FIELD>
     
    10161158        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    10171159      </FIELD>
    1018       <FIELD name="rflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1160      <FIELD name="rflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    10191161        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    10201162      </FIELD>
    1021       <FIELD name="rflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1163      <FIELD name="rflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10221164        <DESCRIPTION>estimated error is gflxR5</DESCRIPTION>
    10231165      </FIELD>
    1024       <FIELD name="rflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1166      <FIELD name="rflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10251167        <DESCRIPTION>estimated standard deviation in gflxR5</DESCRIPTION>
    10261168      </FIELD>
     
    10281170        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    10291171      </FIELD>
    1030       <FIELD name="rc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1172      <FIELD name="rc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    10311173        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    10321174      </FIELD>
    1033       <FIELD name="rc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1175      <FIELD name="rc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10341176        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    10351177      </FIELD>
    1036       <FIELD name="rc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1178      <FIELD name="rc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10371179        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    10381180      </FIELD>
     
    10401182        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    10411183      </FIELD>
    1042       <FIELD name="rc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1184      <FIELD name="rc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    10431185        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    10441186      </FIELD>
    1045       <FIELD name="rc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1187      <FIELD name="rc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10461188        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    10471189      </FIELD>
    1048       <FIELD name="rc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1190      <FIELD name="rc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10491191        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    10501192      </FIELD>
     
    10521194        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    10531195      </FIELD>
    1054       <FIELD name="rc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1196      <FIELD name="rc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    10551197        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    10561198      </FIELD>
    1057       <FIELD name="rc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1199      <FIELD name="rc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10581200        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    10591201      </FIELD>
    1060       <FIELD name="rc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1202      <FIELD name="rc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10611203        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    10621204      </FIELD>
     
    10641206        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    10651207      </FIELD>
    1066       <FIELD name="rc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1208      <FIELD name="rc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    10671209        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    10681210      </FIELD>
    1069       <FIELD name="rc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1211      <FIELD name="rc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10701212        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    10711213      </FIELD>
    1072       <FIELD name="rc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1214      <FIELD name="rc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10731215        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    10741216      </FIELD>
     
    10761218        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    10771219      </FIELD>
    1078       <FIELD name="rc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1220      <FIELD name="rc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    10791221        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    10801222      </FIELD>
    1081       <FIELD name="rc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1223      <FIELD name="rc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10821224        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    10831225      </FIELD>
    1084       <FIELD name="rc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1226      <FIELD name="rc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10851227        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    10861228      </FIELD>
     
    10881230        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    10891231      </FIELD>
    1090       <FIELD name="rc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1232      <FIELD name="rc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    10911233        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    10921234      </FIELD>
    1093       <FIELD name="rc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1235      <FIELD name="rc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    10941236        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    10951237      </FIELD>
    1096       <FIELD name="rc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1238      <FIELD name="rc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    10971239        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    10981240      </FIELD>
     
    11001242        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    11011243      </FIELD>
     1244
     1245      <!-- i-band values -->
    11021246      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    11031247        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     
    11051249      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    11061250        <DESCRIPTION>stack identifier</DESCRIPTION>
    1107       </FIELD>
    1108       <FIELD name="iippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1109         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    11101251      </FIELD>
    11111252      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    11121253        <DESCRIPTION>ipp identifier</DESCRIPTION>
    11131254      </FIELD>
    1114       <FIELD name="iflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1255      <FIELD name="iflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    11151256        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    11161257      </FIELD>
    1117       <FIELD name="iflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1258      <FIELD name="iflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    11181259        <DESCRIPTION>estimated error in flxR3</DESCRIPTION>
    11191260      </FIELD>
    1120       <FIELD name="iflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1261      <FIELD name="iflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    11211262        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    11221263      </FIELD>
     
    11241265        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    11251266      </FIELD>
    1126       <FIELD name="iflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1267      <FIELD name="iflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    11271268        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    11281269      </FIELD>
    1129       <FIELD name="iflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1270      <FIELD name="iflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    11301271        <DESCRIPTION>estimated error in flxR4</DESCRIPTION>
    11311272      </FIELD>
    1132       <FIELD name="iflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1273      <FIELD name="iflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    11331274        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    11341275      </FIELD>
     
    11361277        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    11371278      </FIELD>
    1138       <FIELD name="iflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1279      <FIELD name="iflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    11391280        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    11401281      </FIELD>
    1141       <FIELD name="iflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1282      <FIELD name="iflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    11421283        <DESCRIPTION>estimated error is gflxR5</DESCRIPTION>
    11431284      </FIELD>
    1144       <FIELD name="iflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1285      <FIELD name="iflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    11451286        <DESCRIPTION>estimated standard deviation in gflxR5</DESCRIPTION>
    11461287      </FIELD>
     
    11481289        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    11491290      </FIELD>
    1150       <FIELD name="ic1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1291      <FIELD name="ic1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    11511292        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    11521293      </FIELD>
    1153       <FIELD name="ic1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1294      <FIELD name="ic1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    11541295        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    11551296      </FIELD>
    1156       <FIELD name="ic1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1297      <FIELD name="ic1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    11571298        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    11581299      </FIELD>
     
    11601301        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    11611302      </FIELD>
    1162       <FIELD name="ic1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1303      <FIELD name="ic1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    11631304        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    11641305      </FIELD>
    1165       <FIELD name="ic1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1306      <FIELD name="ic1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    11661307        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    11671308      </FIELD>
    1168       <FIELD name="ic1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1309      <FIELD name="ic1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    11691310        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    11701311      </FIELD>
     
    11721313        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    11731314      </FIELD>
    1174       <FIELD name="ic1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1315      <FIELD name="ic1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    11751316        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    11761317      </FIELD>
    1177       <FIELD name="ic1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1318      <FIELD name="ic1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    11781319        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    11791320      </FIELD>
    1180       <FIELD name="ic1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1321      <FIELD name="ic1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    11811322        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    11821323      </FIELD>
     
    11841325        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    11851326      </FIELD>
    1186       <FIELD name="ic2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1327      <FIELD name="ic2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    11871328        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    11881329      </FIELD>
    1189       <FIELD name="ic2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1330      <FIELD name="ic2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    11901331        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    11911332      </FIELD>
    1192       <FIELD name="ic2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1333      <FIELD name="ic2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    11931334        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    11941335      </FIELD>
     
    11961337        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    11971338      </FIELD>
    1198       <FIELD name="ic2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1339      <FIELD name="ic2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    11991340        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    12001341      </FIELD>
    1201       <FIELD name="ic2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1342      <FIELD name="ic2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12021343        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    12031344      </FIELD>
    1204       <FIELD name="ic2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1345      <FIELD name="ic2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    12051346        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    12061347      </FIELD>
     
    12081349        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    12091350      </FIELD>
    1210       <FIELD name="ic2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1351      <FIELD name="ic2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    12111352        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    12121353      </FIELD>
    1213       <FIELD name="ic2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1354      <FIELD name="ic2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12141355        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    12151356      </FIELD>
    1216       <FIELD name="ic2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1357      <FIELD name="ic2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    12171358        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    12181359      </FIELD>
     
    12201361        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    12211362      </FIELD>
     1363
     1364      <!-- z-band values -->
    12221365      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    12231366        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     
    12251368      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    12261369        <DESCRIPTION>stack identifier</DESCRIPTION>
    1227       </FIELD>
    1228       <FIELD name="zippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1229         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    12301370      </FIELD>
    12311371      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    12321372        <DESCRIPTION>ipp identifier</DESCRIPTION>
    12331373      </FIELD>
    1234       <FIELD name="zflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1374      <FIELD name="zflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    12351375        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    12361376      </FIELD>
    1237       <FIELD name="zflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1377      <FIELD name="zflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12381378        <DESCRIPTION>estimated error in flxR3</DESCRIPTION>
    12391379      </FIELD>
    1240       <FIELD name="zflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1380      <FIELD name="zflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    12411381        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    12421382      </FIELD>
     
    12441384        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    12451385      </FIELD>
    1246       <FIELD name="zflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1386      <FIELD name="zflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    12471387        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    12481388      </FIELD>
    1249       <FIELD name="zflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1389      <FIELD name="zflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12501390        <DESCRIPTION>estimated error in flxR4</DESCRIPTION>
    12511391      </FIELD>
    1252       <FIELD name="zflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1392      <FIELD name="zflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    12531393        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    12541394      </FIELD>
     
    12561396        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    12571397      </FIELD>
    1258       <FIELD name="zflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1398      <FIELD name="zflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    12591399        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    12601400      </FIELD>
    1261       <FIELD name="zflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1401      <FIELD name="zflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12621402        <DESCRIPTION>estimated error is gflxR5</DESCRIPTION>
    12631403      </FIELD>
    1264       <FIELD name="zflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1404      <FIELD name="zflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    12651405        <DESCRIPTION>estimated standard deviation in gflxR5</DESCRIPTION>
    12661406      </FIELD>
     
    12681408        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    12691409      </FIELD>
    1270       <FIELD name="zc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1410      <FIELD name="zc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    12711411        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    12721412      </FIELD>
    1273       <FIELD name="zc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1413      <FIELD name="zc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12741414        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    12751415      </FIELD>
    1276       <FIELD name="zc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1416      <FIELD name="zc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    12771417        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    12781418      </FIELD>
     
    12801420        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    12811421      </FIELD>
    1282       <FIELD name="zc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1422      <FIELD name="zc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    12831423        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    12841424      </FIELD>
    1285       <FIELD name="zc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1425      <FIELD name="zc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12861426        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    12871427      </FIELD>
    1288       <FIELD name="zc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1428      <FIELD name="zc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    12891429        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    12901430      </FIELD>
     
    12921432        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    12931433      </FIELD>
    1294       <FIELD name="zc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1434      <FIELD name="zc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    12951435        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    12961436      </FIELD>
    1297       <FIELD name="zc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1437      <FIELD name="zc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    12981438        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    12991439      </FIELD>
    1300       <FIELD name="zc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1440      <FIELD name="zc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13011441        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    13021442      </FIELD>
     
    13041444        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    13051445      </FIELD>
    1306       <FIELD name="zc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1446      <FIELD name="zc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    13071447        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    13081448      </FIELD>
    1309       <FIELD name="zc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1449      <FIELD name="zc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    13101450        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    13111451      </FIELD>
    1312       <FIELD name="zc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1452      <FIELD name="zc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13131453        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    13141454      </FIELD>
     
    13161456        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    13171457      </FIELD>
    1318       <FIELD name="zc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1458      <FIELD name="zc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    13191459        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    13201460      </FIELD>
    1321       <FIELD name="zc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1461      <FIELD name="zc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    13221462        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    13231463      </FIELD>
    1324       <FIELD name="zc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1464      <FIELD name="zc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13251465        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    13261466      </FIELD>
     
    13281468        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    13291469      </FIELD>
    1330       <FIELD name="zc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1470      <FIELD name="zc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    13311471        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    13321472      </FIELD>
    1333       <FIELD name="zc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1473      <FIELD name="zc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    13341474        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    13351475      </FIELD>
    1336       <FIELD name="zc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1476      <FIELD name="zc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13371477        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    13381478      </FIELD>
     
    13401480        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    13411481      </FIELD>
     1482
     1483      <!-- y-band values -->
    13421484      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    13431485        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     
    13451487      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    13461488        <DESCRIPTION>stack identifier</DESCRIPTION>
    1347       </FIELD>
    1348       <FIELD name="yippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1349         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    13501489      </FIELD>
    13511490      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    13521491        <DESCRIPTION>ipp identifier</DESCRIPTION>
    13531492      </FIELD>
    1354       <FIELD name="yflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1493      <FIELD name="yflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    13551494        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    13561495      </FIELD>
    1357       <FIELD name="yflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1496      <FIELD name="yflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    13581497        <DESCRIPTION>estimated error in flxR3</DESCRIPTION>
    13591498      </FIELD>
    1360       <FIELD name="yflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1499      <FIELD name="yflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13611500        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    13621501      </FIELD>
     
    13641503        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    13651504      </FIELD>
    1366       <FIELD name="yflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1505      <FIELD name="yflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    13671506        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    13681507      </FIELD>
    1369       <FIELD name="yflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1508      <FIELD name="yflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    13701509        <DESCRIPTION>estimated error in flxR4</DESCRIPTION>
    13711510      </FIELD>
    1372       <FIELD name="yflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1511      <FIELD name="yflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13731512        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    13741513      </FIELD>
     
    13761515        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    13771516      </FIELD>
    1378       <FIELD name="yflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1517      <FIELD name="yflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    13791518        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    13801519      </FIELD>
    1381       <FIELD name="yflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1520      <FIELD name="yflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    13821521        <DESCRIPTION>estimated error is gflxR5</DESCRIPTION>
    13831522      </FIELD>
    1384       <FIELD name="yflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1523      <FIELD name="yflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13851524        <DESCRIPTION>estimated standard deviation in gflxR5</DESCRIPTION>
    13861525      </FIELD>
     
    13881527        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    13891528      </FIELD>
    1390       <FIELD name="yc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1529      <FIELD name="yc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    13911530        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    13921531      </FIELD>
    1393       <FIELD name="yc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1532      <FIELD name="yc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    13941533        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    13951534      </FIELD>
    1396       <FIELD name="yc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1535      <FIELD name="yc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    13971536        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    13981537      </FIELD>
     
    14001539        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    14011540      </FIELD>
    1402       <FIELD name="yc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1541      <FIELD name="yc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    14031542        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    14041543      </FIELD>
    1405       <FIELD name="yc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1544      <FIELD name="yc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    14061545        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    14071546      </FIELD>
    1408       <FIELD name="yc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1547      <FIELD name="yc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    14091548        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    14101549      </FIELD>
     
    14121551        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    14131552      </FIELD>
    1414       <FIELD name="yc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1553      <FIELD name="yc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    14151554        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    14161555      </FIELD>
    1417       <FIELD name="yc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1556      <FIELD name="yc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    14181557        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    14191558      </FIELD>
    1420       <FIELD name="yc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1559      <FIELD name="yc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    14211560        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    14221561      </FIELD>
     
    14241563        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    14251564      </FIELD>
    1426       <FIELD name="yc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1565      <FIELD name="yc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
    14271566        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    14281567      </FIELD>
    1429       <FIELD name="yc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1568      <FIELD name="yc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    14301569        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    14311570      </FIELD>
    1432       <FIELD name="yc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1571      <FIELD name="yc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    14331572        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    14341573      </FIELD>
     
    14361575        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    14371576      </FIELD>
    1438       <FIELD name="yc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1577      <FIELD name="yc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
    14391578        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    14401579      </FIELD>
    1441       <FIELD name="yc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1580      <FIELD name="yc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    14421581        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    14431582      </FIELD>
    1444       <FIELD name="yc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1583      <FIELD name="yc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    14451584        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    14461585      </FIELD>
     
    14481587        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    14491588      </FIELD>
    1450       <FIELD name="yc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1589      <FIELD name="yc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
    14511590        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    14521591      </FIELD>
    1453       <FIELD name="yc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1592      <FIELD name="yc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
    14541593        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    14551594      </FIELD>
    1456       <FIELD name="yc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
     1595      <FIELD name="yc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
    14571596        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    14581597      </FIELD>
     
    14641603      </DATA>
    14651604    </TABLE>
    1466     <TABLE name="StackModelFit">
    1467       <DESCRIPTION>VOTable description of PSPS table StackModelFit</DESCRIPTION>
     1605
     1606    <!-- StackModelFitExtra Table ************************************************** -->
     1607    <TABLE name="StackModelFitExtra">
     1608      <DESCRIPTION>VOTable description of PSPS table StackModelFitExtra</DESCRIPTION>
    14681609      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
    14691610      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    14701611        <DESCRIPTION>ODM object identifier</DESCRIPTION>
    14711612      </FIELD>
    1472       <FIELD name="gcobjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1473         <DESCRIPTION>galactic coordinates ODM object identifier</DESCRIPTION>
    1474       </FIELD>
    1475       <FIELD name="surveyID" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
    1476         <DESCRIPTION>survey flag identifier</DESCRIPTION>
    1477       </FIELD>
    1478       <FIELD name="skyCellID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1479         <DESCRIPTION>single float giving PrimaryCell.SkyCell identifier</DESCRIPTION>
     1613      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1614        <DESCRIPTION>IPP object identifier</DESCRIPTION>
    14801615      </FIELD>
    14811616      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     
    14911626        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
    14921627      </FIELD>
    1493       <FIELD name="dvoRegionID" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1494         <DESCRIPTION>identifier to dvo spatial region</DESCRIPTION>
    1495       </FIELD>
    1496       <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
    1497         <DESCRIPTION>Data release when this table was loaded.</DESCRIPTION>
    1498       </FIELD>
    1499       <FIELD name="glogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1500         <DESCRIPTION>concentration index</DESCRIPTION>
    1501       </FIELD>
    1502       <FIELD name="glogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1503         <DESCRIPTION>asymmetry index</DESCRIPTION>
    1504       </FIELD>
    1505       <FIELD name="gclump" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1506         <DESCRIPTION>clumpiness factor</DESCRIPTION>
    1507       </FIELD>
    1508       <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1509         <DESCRIPTION>ODM detection identifier</DESCRIPTION>
    1510       </FIELD>
    1511       <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1512         <DESCRIPTION>stack identifier</DESCRIPTION>
    1513       </FIELD>
    1514       <FIELD name="gippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    1515         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    1516       </FIELD>
     1628
     1629      <!-- g-band values -->
    15171630      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    15181631        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
    15191632      </FIELD>
    1520       <FIELD name="gdeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1521         <DESCRIPTION>deVaucouleurs radius</DESCRIPTION>
    1522       </FIELD>
    1523       <FIELD name="gdeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1524         <DESCRIPTION>estimated error in deVaucouleurs radius</DESCRIPTION>
    1525       </FIELD>
    1526       <FIELD name="gdeVFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1527         <DESCRIPTION>deVaucouleurs magntiude</DESCRIPTION>
    1528       </FIELD>
    1529       <FIELD name="gdeVFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1530         <DESCRIPTION>estimated error in deV_mag</DESCRIPTION>
    1531       </FIELD>
    1532       <FIELD name="gdeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1533         <DESCRIPTION>deVaucoulerus axis ratio</DESCRIPTION>
    1534       </FIELD>
    1535       <FIELD name="gdeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1536         <DESCRIPTION>estimated error in deVaucoulerus axis ratio</DESCRIPTION>
    1537       </FIELD>
    1538       <FIELD name="gdeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    1539         <DESCRIPTION>estmated phi of deVaucouleurs axis</DESCRIPTION>
    1540       </FIELD>
    1541       <FIELD name="gdeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    1542         <DESCRIPTION>estmated error of phi of deVaucouleurs axis</DESCRIPTION>
    1543       </FIELD>
    1544       <FIELD name="graDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1545         <DESCRIPTION>Offset in RA of deVaucouleurs fit from PSF RA</DESCRIPTION>
    1546       </FIELD>
    1547       <FIELD name="gdecDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1548         <DESCRIPTION>Offset in DEC of deVaucouleurs fit from PSF DEC</DESCRIPTION>
    1549       </FIELD>
    1550       <FIELD name="graDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1551         <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
    1552       </FIELD>
    1553       <FIELD name="gdecDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1554         <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
    1555       </FIELD>
    1556       <FIELD name="gdeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1557         <DESCRIPTION>deVaucouleurs fit coverage factor</DESCRIPTION>
    1558       </FIELD>
    1559       <FIELD name="gdeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1560         <DESCRIPTION>deVaucouleurs fit likelihood factor</DESCRIPTION>
    1561       </FIELD>
    1562       <FIELD name="gexpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1563         <DESCRIPTION>Exponential fit radius</DESCRIPTION>
    1564       </FIELD>
    1565       <FIELD name="gexpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1566         <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
    1567       </FIELD>
    1568       <FIELD name="gexpFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1569         <DESCRIPTION>Exponential fit flux</DESCRIPTION>
    1570       </FIELD>
    1571       <FIELD name="gexpFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1572         <DESCRIPTION>estimated error in expFlux</DESCRIPTION>
    1573       </FIELD>
    1574       <FIELD name="gexpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1575         <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
    1576       </FIELD>
    1577       <FIELD name="gexpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1578         <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
    1579       </FIELD>
    1580       <FIELD name="gexpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    1581         <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
    1582       </FIELD>
    1583       <FIELD name="gexpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    1584         <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
    1585       </FIELD>
    1586       <FIELD name="graExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1587         <DESCRIPTION>Offset in RA of Exponential fit from PSF RA</DESCRIPTION>
    1588       </FIELD>
    1589       <FIELD name="gdecExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1590         <DESCRIPTION>Offset in DEC of Exponential fit from PSF DEC</DESCRIPTION>
    1591       </FIELD>
    1592       <FIELD name="graExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1593         <DESCRIPTION>estimated error in raExpOff</DESCRIPTION>
    1594       </FIELD>
    1595       <FIELD name="gdecExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1596         <DESCRIPTION>estimated error in decExpOff</DESCRIPTION>
    1597       </FIELD>
    1598       <FIELD name="gexpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1599         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
    1600       </FIELD>
    1601       <FIELD name="gexpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1602         <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
    1603       </FIELD>
    1604       <FIELD name="gserRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1605         <DESCRIPTION>Sersic radius</DESCRIPTION>
    1606       </FIELD>
    1607       <FIELD name="gserRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    1608         <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
    1609       </FIELD>
    1610       <FIELD name="gserFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1611         <DESCRIPTION>Sersic Flux</DESCRIPTION>
    1612       </FIELD>
    1613       <FIELD name="gserFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1614         <DESCRIPTION>estimated error in serFlux</DESCRIPTION>
    1615       </FIELD>
    1616       <FIELD name="gserAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1617         <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
    1618       </FIELD>
    1619       <FIELD name="gserAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1620         <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
    1621       </FIELD>
    1622       <FIELD name="gserNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1623         <DESCRIPTION>Sersic index</DESCRIPTION>
    1624       </FIELD>
    1625       <FIELD name="gserNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1626         <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
    1627       </FIELD>
    1628       <FIELD name="gserPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    1629         <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
    1630       </FIELD>
    1631       <FIELD name="gserPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    1632         <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
    1633       </FIELD>
    1634       <FIELD name="graSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1635         <DESCRIPTION>Offset in RA of Sersic fit from PSF RA</DESCRIPTION>
    1636       </FIELD>
    1637       <FIELD name="gdecSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1638         <DESCRIPTION>Offset in DEC of Sersic fit from PSF DEC</DESCRIPTION>
    1639       </FIELD>
    1640       <FIELD name="graSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1641         <DESCRIPTION>estimated error in raSerOff</DESCRIPTION>
    1642       </FIELD>
    1643       <FIELD name="gdecSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1644         <DESCRIPTION>estimated error in decSerOff</DESCRIPTION>
    1645       </FIELD>
    1646       <FIELD name="gserCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1647         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
    1648       </FIELD>
    1649       <FIELD name="gserLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1650         <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
    1651       </FIELD>
    1652       <FIELD name="gpetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
    1653         <DESCRIPTION>Petrosian radius</DESCRIPTION>
    1654       </FIELD>
    1655       <FIELD name="gpetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
    1656         <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
    1657       </FIELD>
    1658       <FIELD name="gpetFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1659         <DESCRIPTION>Petrosian Flux</DESCRIPTION>
    1660       </FIELD>
    1661       <FIELD name="gpetFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1662         <DESCRIPTION>estimated error in petFlux</DESCRIPTION>
    1663       </FIELD>
    1664       <FIELD name="gpetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
    1665         <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
    1666       </FIELD>
    1667       <FIELD name="gpetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    1668         <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
    1669       </FIELD>
    1670       <FIELD name="gpetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
    1671         <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
    1672       </FIELD>
    1673       <FIELD name="gpetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    1674         <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
    1675       </FIELD>
    1676       <FIELD name="gpetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
    1677         <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
    1678       </FIELD>
    1679       <FIELD name="gflxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1680         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    1681       </FIELD>
    1682       <FIELD name="gflxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1683         <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
    1684       </FIELD>
    1685       <FIELD name="gflxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1686         <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
    1687       </FIELD>
    1688       <FIELD name="gflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1689         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    1690       </FIELD>
    1691       <FIELD name="gflxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1692         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    1693       </FIELD>
    1694       <FIELD name="gflxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1695         <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
    1696       </FIELD>
    1697       <FIELD name="gflxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1698         <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
    1699       </FIELD>
    1700       <FIELD name="gflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1701         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    1702       </FIELD>
    1703       <FIELD name="gflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1704         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    1705       </FIELD>
    1706       <FIELD name="gflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1707         <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
    1708       </FIELD>
    1709       <FIELD name="gflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1710         <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    1711       </FIELD>
    1712       <FIELD name="gflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1713         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    1714       </FIELD>
    1715       <FIELD name="gflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1716         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    1717       </FIELD>
    1718       <FIELD name="gflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1719         <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
    1720       </FIELD>
    1721       <FIELD name="gflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1722         <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    1723       </FIELD>
    1724       <FIELD name="gflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1725         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    1726       </FIELD>
    1727       <FIELD name="gflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1728         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    1729       </FIELD>
    1730       <FIELD name="gflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1731         <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
    1732       </FIELD>
    1733       <FIELD name="gflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1734         <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
    1735       </FIELD>
    1736       <FIELD name="gflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1737         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    1738       </FIELD>
    1739       <FIELD name="gflxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1740         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    1741       </FIELD>
    1742       <FIELD name="gflxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1743         <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
    1744       </FIELD>
    1745       <FIELD name="gflxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1746         <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
    1747       </FIELD>
    1748       <FIELD name="gflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1749         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    1750       </FIELD>
    1751       <FIELD name="gflxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1752         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    1753       </FIELD>
    1754       <FIELD name="gflxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1755         <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
    1756       </FIELD>
    1757       <FIELD name="gflxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1758         <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
    1759       </FIELD>
    1760       <FIELD name="gflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1761         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    1762       </FIELD>
    1763       <FIELD name="gflxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1764         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    1765       </FIELD>
    1766       <FIELD name="gflxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1767         <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
    1768       </FIELD>
    1769       <FIELD name="gflxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1770         <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
    1771       </FIELD>
    1772       <FIELD name="gflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1773         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    1774       </FIELD>
    1775       <FIELD name="gflxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1776         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    1777       </FIELD>
    1778       <FIELD name="gflxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1779         <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
    1780       </FIELD>
    1781       <FIELD name="gflxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1782         <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
    1783       </FIELD>
    1784       <FIELD name="gflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1785         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    1786       </FIELD>
    1787       <FIELD name="gflxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1788         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    1789       </FIELD>
    1790       <FIELD name="gflxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1791         <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
    1792       </FIELD>
    1793       <FIELD name="gflxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1794         <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
    1795       </FIELD>
    1796       <FIELD name="gflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1797         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    1798       </FIELD>
    1799       <FIELD name="gc1flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1800         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    1801       </FIELD>
    1802       <FIELD name="gc1flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1803         <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
    1804       </FIELD>
    1805       <FIELD name="gc1flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1806         <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
    1807       </FIELD>
    1808       <FIELD name="gc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1809         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    1810       </FIELD>
    1811       <FIELD name="gc1flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1812         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    1813       </FIELD>
    1814       <FIELD name="gc1flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1815         <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
    1816       </FIELD>
    1817       <FIELD name="gc1flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1818         <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
    1819       </FIELD>
    1820       <FIELD name="gc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1821         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    1822       </FIELD>
    1823       <FIELD name="gc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1824         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    1825       </FIELD>
    1826       <FIELD name="gc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1827         <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    1828       </FIELD>
    1829       <FIELD name="gc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1830         <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    1831       </FIELD>
    1832       <FIELD name="gc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1833         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    1834       </FIELD>
    1835       <FIELD name="gc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1836         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    1837       </FIELD>
    1838       <FIELD name="gc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1839         <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    1840       </FIELD>
    1841       <FIELD name="gc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1842         <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    1843       </FIELD>
    1844       <FIELD name="gc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1845         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    1846       </FIELD>
    1847       <FIELD name="gc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1848         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    1849       </FIELD>
    1850       <FIELD name="gc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1851         <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    1852       </FIELD>
    1853       <FIELD name="gc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1854         <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    1855       </FIELD>
    1856       <FIELD name="gc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1857         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    1858       </FIELD>
    1859       <FIELD name="gc1flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1860         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    1861       </FIELD>
    1862       <FIELD name="gc1flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1863         <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
    1864       </FIELD>
    1865       <FIELD name="gc1flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1866         <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
    1867       </FIELD>
    1868       <FIELD name="gc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1869         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    1870       </FIELD>
    1871       <FIELD name="gc1flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1872         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    1873       </FIELD>
    1874       <FIELD name="gc1flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1875         <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
    1876       </FIELD>
    1877       <FIELD name="gc1flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1878         <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
    1879       </FIELD>
    1880       <FIELD name="gc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1881         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    1882       </FIELD>
    1883       <FIELD name="gc1flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1884         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    1885       </FIELD>
    1886       <FIELD name="gc1flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1887         <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
    1888       </FIELD>
    1889       <FIELD name="gc1flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1890         <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
    1891       </FIELD>
    1892       <FIELD name="gc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1893         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    1894       </FIELD>
    1895       <FIELD name="gc1flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1896         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    1897       </FIELD>
    1898       <FIELD name="gc1flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1899         <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
    1900       </FIELD>
    1901       <FIELD name="gc1flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1902         <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
    1903       </FIELD>
    1904       <FIELD name="gc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1905         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    1906       </FIELD>
    1907       <FIELD name="gc1flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1908         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    1909       </FIELD>
    1910       <FIELD name="gc1flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1911         <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
    1912       </FIELD>
    1913       <FIELD name="gc1flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1914         <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
    1915       </FIELD>
    1916       <FIELD name="gc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1917         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    1918       </FIELD>
    1919       <FIELD name="gc2flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1920         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    1921       </FIELD>
    1922       <FIELD name="gc2flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1923         <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
    1924       </FIELD>
    1925       <FIELD name="gc2flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1926         <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
    1927       </FIELD>
    1928       <FIELD name="gc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1929         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    1930       </FIELD>
    1931       <FIELD name="gc2flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1932         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    1933       </FIELD>
    1934       <FIELD name="gc2flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1935         <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
    1936       </FIELD>
    1937       <FIELD name="gc2flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1938         <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
    1939       </FIELD>
    1940       <FIELD name="gc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1941         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    1942       </FIELD>
    1943       <FIELD name="gc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1944         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    1945       </FIELD>
    1946       <FIELD name="gc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1947         <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    1948       </FIELD>
    1949       <FIELD name="gc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1950         <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    1951       </FIELD>
    1952       <FIELD name="gc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1953         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    1954       </FIELD>
    1955       <FIELD name="gc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1956         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    1957       </FIELD>
    1958       <FIELD name="gc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1959         <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    1960       </FIELD>
    1961       <FIELD name="gc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1962         <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    1963       </FIELD>
    1964       <FIELD name="gc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1965         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    1966       </FIELD>
    1967       <FIELD name="gc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1968         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    1969       </FIELD>
    1970       <FIELD name="gc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1971         <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    1972       </FIELD>
    1973       <FIELD name="gc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1974         <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    1975       </FIELD>
    1976       <FIELD name="gc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1977         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    1978       </FIELD>
    1979       <FIELD name="gc2flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1980         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    1981       </FIELD>
    1982       <FIELD name="gc2flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1983         <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
    1984       </FIELD>
    1985       <FIELD name="gc2flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1986         <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
    1987       </FIELD>
    1988       <FIELD name="gc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    1989         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    1990       </FIELD>
    1991       <FIELD name="gc2flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1992         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    1993       </FIELD>
    1994       <FIELD name="gc2flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1995         <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
    1996       </FIELD>
    1997       <FIELD name="gc2flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    1998         <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
    1999       </FIELD>
    2000       <FIELD name="gc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2001         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    2002       </FIELD>
    2003       <FIELD name="gc2flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2004         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    2005       </FIELD>
    2006       <FIELD name="gc2flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2007         <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
    2008       </FIELD>
    2009       <FIELD name="gc2flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2010         <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
    2011       </FIELD>
    2012       <FIELD name="gc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2013         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    2014       </FIELD>
    2015       <FIELD name="gc2flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2016         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    2017       </FIELD>
    2018       <FIELD name="gc2flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2019         <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
    2020       </FIELD>
    2021       <FIELD name="gc2flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2022         <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
    2023       </FIELD>
    2024       <FIELD name="gc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2025         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    2026       </FIELD>
    2027       <FIELD name="gc2flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2028         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    2029       </FIELD>
    2030       <FIELD name="gc2flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2031         <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
    2032       </FIELD>
    2033       <FIELD name="gc2flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2034         <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
    2035       </FIELD>
    2036       <FIELD name="gc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2037         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    2038       </FIELD>
    2039       <FIELD name="rlogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2040         <DESCRIPTION>concentration index</DESCRIPTION>
    2041       </FIELD>
    2042       <FIELD name="rlogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2043         <DESCRIPTION>asymmetry index</DESCRIPTION>
    2044       </FIELD>
    2045       <FIELD name="rclump" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2046         <DESCRIPTION>clumpiness factor</DESCRIPTION>
    2047       </FIELD>
    2048       <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    2049         <DESCRIPTION>ODM detection identifier</DESCRIPTION>
    2050       </FIELD>
    2051       <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    2052         <DESCRIPTION>stack identifier</DESCRIPTION>
    2053       </FIELD>
    2054       <FIELD name="rippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    2055         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    2056       </FIELD>
     1633      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1634        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1635      </FIELD>
     1636      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1637        <DESCRIPTION>stack identifier</DESCRIPTION>
     1638      </FIELD>
     1639      <FIELD name="gS2" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1640        <DESCRIPTION>(un)smoothness (Cheng 2012, Simard 2002)</DESCRIPTION>
     1641      </FIELD>
     1642      <FIELD name="glogRT" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1643        <DESCRIPTION>total residual from elliptically symmetric model</DESCRIPTION>
     1644      </FIELD>
     1645      <FIELD name="glogRA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1646        <DESCRIPTION>asymmetric residual from elliptically symmetric model</DESCRIPTION>
     1647      </FIELD>
     1648      <FIELD name="glogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1649        <DESCRIPTION>concentration index (Petrosian R_50 / R_90</DESCRIPTION>
     1650      </FIELD>
     1651      <FIELD name="glogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1652        <DESCRIPTION>log of asymmetry index (Gyory and Bell 2010)</DESCRIPTION>
     1653      </FIELD>
     1654      <FIELD name="gbumpy" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1655        <DESCRIPTION>Blakeslee bumpiness</DESCRIPTION>
     1656      </FIELD>
     1657      <FIELD name="ghalfLightRad" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1658        <DESCRIPTION>half-light radius</DESCRIPTION>
     1659      </FIELD>
     1660
     1661      <!-- r-band values -->
    20571662      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    20581663        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
    20591664      </FIELD>
    2060       <FIELD name="rdeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2061         <DESCRIPTION>deVaucouleurs radius</DESCRIPTION>
    2062       </FIELD>
    2063       <FIELD name="rdeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2064         <DESCRIPTION>estimated error in deVaucouleurs radius</DESCRIPTION>
    2065       </FIELD>
    2066       <FIELD name="rdeVFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2067         <DESCRIPTION>deVaucouleurs magntiude</DESCRIPTION>
    2068       </FIELD>
    2069       <FIELD name="rdeVFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2070         <DESCRIPTION>estimated error in deV_mag</DESCRIPTION>
    2071       </FIELD>
    2072       <FIELD name="rdeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2073         <DESCRIPTION>deVaucoulerus axis ratio</DESCRIPTION>
    2074       </FIELD>
    2075       <FIELD name="rdeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2076         <DESCRIPTION>estimated error in deVaucoulerus axis ratio</DESCRIPTION>
    2077       </FIELD>
    2078       <FIELD name="rdeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    2079         <DESCRIPTION>estmated phi of deVaucouleurs axis</DESCRIPTION>
    2080       </FIELD>
    2081       <FIELD name="rdeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    2082         <DESCRIPTION>estmated error of phi of deVaucouleurs axis</DESCRIPTION>
    2083       </FIELD>
    2084       <FIELD name="rraDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2085         <DESCRIPTION>Offset in RA of deVaucouleurs fit from PSF RA</DESCRIPTION>
    2086       </FIELD>
    2087       <FIELD name="rdecDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2088         <DESCRIPTION>Offset in DEC of deVaucouleurs fit from PSF DEC</DESCRIPTION>
    2089       </FIELD>
    2090       <FIELD name="rraDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2091         <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
    2092       </FIELD>
    2093       <FIELD name="rdecDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2094         <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
    2095       </FIELD>
    2096       <FIELD name="rdeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2097         <DESCRIPTION>deVaucouleurs fit coverage factor</DESCRIPTION>
    2098       </FIELD>
    2099       <FIELD name="rdeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2100         <DESCRIPTION>deVaucouleurs fit likelihood factor</DESCRIPTION>
    2101       </FIELD>
    2102       <FIELD name="rexpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2103         <DESCRIPTION>Exponential fit radius</DESCRIPTION>
    2104       </FIELD>
    2105       <FIELD name="rexpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2106         <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
    2107       </FIELD>
    2108       <FIELD name="rexpFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2109         <DESCRIPTION>Exponential fit flux</DESCRIPTION>
    2110       </FIELD>
    2111       <FIELD name="rexpFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2112         <DESCRIPTION>estimated error in expFlux</DESCRIPTION>
    2113       </FIELD>
    2114       <FIELD name="rexpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2115         <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
    2116       </FIELD>
    2117       <FIELD name="rexpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2118         <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
    2119       </FIELD>
    2120       <FIELD name="rexpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    2121         <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
    2122       </FIELD>
    2123       <FIELD name="rexpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    2124         <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
    2125       </FIELD>
    2126       <FIELD name="rraExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2127         <DESCRIPTION>Offset in RA of Exponential fit from PSF RA</DESCRIPTION>
    2128       </FIELD>
    2129       <FIELD name="rdecExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2130         <DESCRIPTION>Offset in DEC of Exponential fit from PSF DEC</DESCRIPTION>
    2131       </FIELD>
    2132       <FIELD name="rraExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2133         <DESCRIPTION>estimated error in raExpOff</DESCRIPTION>
    2134       </FIELD>
    2135       <FIELD name="rdecExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2136         <DESCRIPTION>estimated error in decExpOff</DESCRIPTION>
    2137       </FIELD>
    2138       <FIELD name="rexpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2139         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
    2140       </FIELD>
    2141       <FIELD name="rexpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2142         <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
    2143       </FIELD>
    2144       <FIELD name="rserRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2145         <DESCRIPTION>Sersic radius</DESCRIPTION>
    2146       </FIELD>
    2147       <FIELD name="rserRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2148         <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
    2149       </FIELD>
    2150       <FIELD name="rserFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2151         <DESCRIPTION>Sersic Flux</DESCRIPTION>
    2152       </FIELD>
    2153       <FIELD name="rserFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2154         <DESCRIPTION>estimated error in serFlux</DESCRIPTION>
    2155       </FIELD>
    2156       <FIELD name="rserAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2157         <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
    2158       </FIELD>
    2159       <FIELD name="rserAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2160         <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
    2161       </FIELD>
    2162       <FIELD name="rserNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2163         <DESCRIPTION>Sersic index</DESCRIPTION>
    2164       </FIELD>
    2165       <FIELD name="rserNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2166         <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
    2167       </FIELD>
    2168       <FIELD name="rserPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    2169         <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
    2170       </FIELD>
    2171       <FIELD name="rserPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    2172         <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
    2173       </FIELD>
    2174       <FIELD name="rraSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2175         <DESCRIPTION>Offset in RA of Sersic fit from PSF RA</DESCRIPTION>
    2176       </FIELD>
    2177       <FIELD name="rdecSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2178         <DESCRIPTION>Offset in DEC of Sersic fit from PSF DEC</DESCRIPTION>
    2179       </FIELD>
    2180       <FIELD name="rraSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2181         <DESCRIPTION>estimated error in raSerOff</DESCRIPTION>
    2182       </FIELD>
    2183       <FIELD name="rdecSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2184         <DESCRIPTION>estimated error in decSerOff</DESCRIPTION>
    2185       </FIELD>
    2186       <FIELD name="rserCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2187         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
    2188       </FIELD>
    2189       <FIELD name="rserLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2190         <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
    2191       </FIELD>
    2192       <FIELD name="rpetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
    2193         <DESCRIPTION>Petrosian radius</DESCRIPTION>
    2194       </FIELD>
    2195       <FIELD name="rpetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
    2196         <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
    2197       </FIELD>
    2198       <FIELD name="rpetFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2199         <DESCRIPTION>Petrosian Flux</DESCRIPTION>
    2200       </FIELD>
    2201       <FIELD name="rpetFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2202         <DESCRIPTION>estimated error in petFlux</DESCRIPTION>
    2203       </FIELD>
    2204       <FIELD name="rpetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
    2205         <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
    2206       </FIELD>
    2207       <FIELD name="rpetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    2208         <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
    2209       </FIELD>
    2210       <FIELD name="rpetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
    2211         <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
    2212       </FIELD>
    2213       <FIELD name="rpetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    2214         <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
    2215       </FIELD>
    2216       <FIELD name="rpetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
    2217         <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
    2218       </FIELD>
    2219       <FIELD name="rflxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2220         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    2221       </FIELD>
    2222       <FIELD name="rflxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2223         <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
    2224       </FIELD>
    2225       <FIELD name="rflxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2226         <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
    2227       </FIELD>
    2228       <FIELD name="rflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2229         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2230       </FIELD>
    2231       <FIELD name="rflxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2232         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    2233       </FIELD>
    2234       <FIELD name="rflxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2235         <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
    2236       </FIELD>
    2237       <FIELD name="rflxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2238         <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
    2239       </FIELD>
    2240       <FIELD name="rflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2241         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2242       </FIELD>
    2243       <FIELD name="rflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2244         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    2245       </FIELD>
    2246       <FIELD name="rflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2247         <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
    2248       </FIELD>
    2249       <FIELD name="rflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2250         <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    2251       </FIELD>
    2252       <FIELD name="rflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2253         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    2254       </FIELD>
    2255       <FIELD name="rflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2256         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    2257       </FIELD>
    2258       <FIELD name="rflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2259         <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
    2260       </FIELD>
    2261       <FIELD name="rflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2262         <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    2263       </FIELD>
    2264       <FIELD name="rflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2265         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    2266       </FIELD>
    2267       <FIELD name="rflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2268         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    2269       </FIELD>
    2270       <FIELD name="rflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2271         <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
    2272       </FIELD>
    2273       <FIELD name="rflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2274         <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
    2275       </FIELD>
    2276       <FIELD name="rflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2277         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    2278       </FIELD>
    2279       <FIELD name="rflxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2280         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    2281       </FIELD>
    2282       <FIELD name="rflxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2283         <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
    2284       </FIELD>
    2285       <FIELD name="rflxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2286         <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
    2287       </FIELD>
    2288       <FIELD name="rflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2289         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    2290       </FIELD>
    2291       <FIELD name="rflxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2292         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    2293       </FIELD>
    2294       <FIELD name="rflxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2295         <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
    2296       </FIELD>
    2297       <FIELD name="rflxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2298         <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
    2299       </FIELD>
    2300       <FIELD name="rflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2301         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    2302       </FIELD>
    2303       <FIELD name="rflxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2304         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    2305       </FIELD>
    2306       <FIELD name="rflxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2307         <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
    2308       </FIELD>
    2309       <FIELD name="rflxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2310         <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
    2311       </FIELD>
    2312       <FIELD name="rflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2313         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    2314       </FIELD>
    2315       <FIELD name="rflxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2316         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    2317       </FIELD>
    2318       <FIELD name="rflxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2319         <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
    2320       </FIELD>
    2321       <FIELD name="rflxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2322         <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
    2323       </FIELD>
    2324       <FIELD name="rflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2325         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    2326       </FIELD>
    2327       <FIELD name="rflxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2328         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    2329       </FIELD>
    2330       <FIELD name="rflxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2331         <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
    2332       </FIELD>
    2333       <FIELD name="rflxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2334         <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
    2335       </FIELD>
    2336       <FIELD name="rflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2337         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    2338       </FIELD>
    2339       <FIELD name="rc1flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2340         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    2341       </FIELD>
    2342       <FIELD name="rc1flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2343         <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
    2344       </FIELD>
    2345       <FIELD name="rc1flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2346         <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
    2347       </FIELD>
    2348       <FIELD name="rc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2349         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2350       </FIELD>
    2351       <FIELD name="rc1flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2352         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    2353       </FIELD>
    2354       <FIELD name="rc1flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2355         <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
    2356       </FIELD>
    2357       <FIELD name="rc1flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2358         <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
    2359       </FIELD>
    2360       <FIELD name="rc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2361         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2362       </FIELD>
    2363       <FIELD name="rc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2364         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    2365       </FIELD>
    2366       <FIELD name="rc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2367         <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    2368       </FIELD>
    2369       <FIELD name="rc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2370         <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    2371       </FIELD>
    2372       <FIELD name="rc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2373         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    2374       </FIELD>
    2375       <FIELD name="rc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2376         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    2377       </FIELD>
    2378       <FIELD name="rc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2379         <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    2380       </FIELD>
    2381       <FIELD name="rc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2382         <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    2383       </FIELD>
    2384       <FIELD name="rc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2385         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    2386       </FIELD>
    2387       <FIELD name="rc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2388         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    2389       </FIELD>
    2390       <FIELD name="rc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2391         <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    2392       </FIELD>
    2393       <FIELD name="rc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2394         <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    2395       </FIELD>
    2396       <FIELD name="rc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2397         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    2398       </FIELD>
    2399       <FIELD name="rc1flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2400         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    2401       </FIELD>
    2402       <FIELD name="rc1flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2403         <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
    2404       </FIELD>
    2405       <FIELD name="rc1flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2406         <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
    2407       </FIELD>
    2408       <FIELD name="rc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2409         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    2410       </FIELD>
    2411       <FIELD name="rc1flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2412         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    2413       </FIELD>
    2414       <FIELD name="rc1flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2415         <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
    2416       </FIELD>
    2417       <FIELD name="rc1flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2418         <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
    2419       </FIELD>
    2420       <FIELD name="rc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2421         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    2422       </FIELD>
    2423       <FIELD name="rc1flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2424         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    2425       </FIELD>
    2426       <FIELD name="rc1flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2427         <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
    2428       </FIELD>
    2429       <FIELD name="rc1flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2430         <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
    2431       </FIELD>
    2432       <FIELD name="rc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2433         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    2434       </FIELD>
    2435       <FIELD name="rc1flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2436         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    2437       </FIELD>
    2438       <FIELD name="rc1flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2439         <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
    2440       </FIELD>
    2441       <FIELD name="rc1flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2442         <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
    2443       </FIELD>
    2444       <FIELD name="rc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2445         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    2446       </FIELD>
    2447       <FIELD name="rc1flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2448         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    2449       </FIELD>
    2450       <FIELD name="rc1flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2451         <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
    2452       </FIELD>
    2453       <FIELD name="rc1flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2454         <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
    2455       </FIELD>
    2456       <FIELD name="rc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2457         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    2458       </FIELD>
    2459       <FIELD name="rc2flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2460         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    2461       </FIELD>
    2462       <FIELD name="rc2flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2463         <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
    2464       </FIELD>
    2465       <FIELD name="rc2flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2466         <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
    2467       </FIELD>
    2468       <FIELD name="rc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2469         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2470       </FIELD>
    2471       <FIELD name="rc2flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2472         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    2473       </FIELD>
    2474       <FIELD name="rc2flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2475         <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
    2476       </FIELD>
    2477       <FIELD name="rc2flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2478         <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
    2479       </FIELD>
    2480       <FIELD name="rc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2481         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2482       </FIELD>
    2483       <FIELD name="rc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2484         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    2485       </FIELD>
    2486       <FIELD name="rc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2487         <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    2488       </FIELD>
    2489       <FIELD name="rc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2490         <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    2491       </FIELD>
    2492       <FIELD name="rc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2493         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    2494       </FIELD>
    2495       <FIELD name="rc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2496         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    2497       </FIELD>
    2498       <FIELD name="rc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2499         <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    2500       </FIELD>
    2501       <FIELD name="rc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2502         <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    2503       </FIELD>
    2504       <FIELD name="rc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2505         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    2506       </FIELD>
    2507       <FIELD name="rc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2508         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    2509       </FIELD>
    2510       <FIELD name="rc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2511         <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    2512       </FIELD>
    2513       <FIELD name="rc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2514         <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    2515       </FIELD>
    2516       <FIELD name="rc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2517         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    2518       </FIELD>
    2519       <FIELD name="rc2flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2520         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    2521       </FIELD>
    2522       <FIELD name="rc2flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2523         <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
    2524       </FIELD>
    2525       <FIELD name="rc2flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2526         <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
    2527       </FIELD>
    2528       <FIELD name="rc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2529         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    2530       </FIELD>
    2531       <FIELD name="rc2flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2532         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    2533       </FIELD>
    2534       <FIELD name="rc2flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2535         <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
    2536       </FIELD>
    2537       <FIELD name="rc2flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2538         <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
    2539       </FIELD>
    2540       <FIELD name="rc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2541         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    2542       </FIELD>
    2543       <FIELD name="rc2flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2544         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    2545       </FIELD>
    2546       <FIELD name="rc2flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2547         <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
    2548       </FIELD>
    2549       <FIELD name="rc2flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2550         <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
    2551       </FIELD>
    2552       <FIELD name="rc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2553         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    2554       </FIELD>
    2555       <FIELD name="rc2flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2556         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    2557       </FIELD>
    2558       <FIELD name="rc2flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2559         <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
    2560       </FIELD>
    2561       <FIELD name="rc2flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2562         <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
    2563       </FIELD>
    2564       <FIELD name="rc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2565         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    2566       </FIELD>
    2567       <FIELD name="rc2flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2568         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    2569       </FIELD>
    2570       <FIELD name="rc2flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2571         <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
    2572       </FIELD>
    2573       <FIELD name="rc2flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2574         <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
    2575       </FIELD>
    2576       <FIELD name="rc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2577         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    2578       </FIELD>
    2579       <FIELD name="ilogC" arraysize="1" datatype="float" unit="dimensionless" default="NA">
    2580         <DESCRIPTION>concentration index</DESCRIPTION>
    2581       </FIELD>
    2582       <FIELD name="ilogA" arraysize="1" datatype="float" unit="dimensionless" default="NA">
    2583         <DESCRIPTION>asymmetry index</DESCRIPTION>
    2584       </FIELD>
    2585       <FIELD name="iclump" arraysize="1" datatype="float" unit="dimensionless" default="NA">
    2586         <DESCRIPTION>clumpiness factor</DESCRIPTION>
    2587       </FIELD>
    2588       <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="-999">
    2589         <DESCRIPTION>ODM detection identifier</DESCRIPTION>
    2590       </FIELD>
    2591       <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="-999">
    2592         <DESCRIPTION>stack identifier</DESCRIPTION>
    2593       </FIELD>
    2594       <FIELD name="iippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    2595         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    2596       </FIELD>
    2597       <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="-999">
     1665      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1666        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1667      </FIELD>
     1668      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1669        <DESCRIPTION>stack identifier</DESCRIPTION>
     1670      </FIELD>
     1671      <FIELD name="rS2" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1672        <DESCRIPTION>(un)smoothness (Cheng 2012, Simard 2002)</DESCRIPTION>
     1673      </FIELD>
     1674      <FIELD name="rlogRT" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1675        <DESCRIPTION>total residual from elliptically symmetric model</DESCRIPTION>
     1676      </FIELD>
     1677      <FIELD name="rlogRA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1678        <DESCRIPTION>asymmetric residual from elliptically symmetric model</DESCRIPTION>
     1679      </FIELD>
     1680      <FIELD name="rlogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1681        <DESCRIPTION>concentration index (Petrosian R_50 / R_90</DESCRIPTION>
     1682      </FIELD>
     1683      <FIELD name="rlogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1684        <DESCRIPTION>log of asymmetry index (Gyory and Bell 2010)</DESCRIPTION>
     1685      </FIELD>
     1686      <FIELD name="rbumpy" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1687        <DESCRIPTION>Blakeslee bumpiness</DESCRIPTION>
     1688      </FIELD>
     1689      <FIELD name="rhalfLightRad" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1690        <DESCRIPTION>half-light radius</DESCRIPTION>
     1691      </FIELD>
     1692
     1693      <!-- i-band values -->
     1694      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    25981695        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
    25991696      </FIELD>
    2600       <FIELD name="ideVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2601         <DESCRIPTION>deVaucouleurs radius</DESCRIPTION>
    2602       </FIELD>
    2603       <FIELD name="ideVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2604         <DESCRIPTION>estimated error in deVaucouleurs radius</DESCRIPTION>
    2605       </FIELD>
    2606       <FIELD name="ideVFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2607         <DESCRIPTION>deVaucouleurs magntiude</DESCRIPTION>
    2608       </FIELD>
    2609       <FIELD name="ideVFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2610         <DESCRIPTION>estimated error in deV_mag</DESCRIPTION>
    2611       </FIELD>
    2612       <FIELD name="ideVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2613         <DESCRIPTION>deVaucoulerus axis ratio</DESCRIPTION>
    2614       </FIELD>
    2615       <FIELD name="ideVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2616         <DESCRIPTION>estimated error in deVaucoulerus axis ratio</DESCRIPTION>
    2617       </FIELD>
    2618       <FIELD name="ideVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    2619         <DESCRIPTION>estmated phi of deVaucouleurs axis</DESCRIPTION>
    2620       </FIELD>
    2621       <FIELD name="ideVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    2622         <DESCRIPTION>estmated error of phi of deVaucouleurs axis</DESCRIPTION>
    2623       </FIELD>
    2624       <FIELD name="iraDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2625         <DESCRIPTION>Offset in RA of deVaucouleurs fit from PSF RA</DESCRIPTION>
    2626       </FIELD>
    2627       <FIELD name="idecDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2628         <DESCRIPTION>Offset in DEC of deVaucouleurs fit from PSF DEC</DESCRIPTION>
    2629       </FIELD>
    2630       <FIELD name="iraDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2631         <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
    2632       </FIELD>
    2633       <FIELD name="idecDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2634         <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
    2635       </FIELD>
    2636       <FIELD name="ideVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2637         <DESCRIPTION>deVaucouleurs fit coverage factor</DESCRIPTION>
    2638       </FIELD>
    2639       <FIELD name="ideVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2640         <DESCRIPTION>deVaucouleurs fit likelihood factor</DESCRIPTION>
    2641       </FIELD>
    2642       <FIELD name="iexpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2643         <DESCRIPTION>Exponential fit radius</DESCRIPTION>
    2644       </FIELD>
    2645       <FIELD name="iexpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2646         <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
    2647       </FIELD>
    2648       <FIELD name="iexpFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2649         <DESCRIPTION>Exponential fit flux</DESCRIPTION>
    2650       </FIELD>
    2651       <FIELD name="iexpFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2652         <DESCRIPTION>estimated error in expFlux</DESCRIPTION>
    2653       </FIELD>
    2654       <FIELD name="iexpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2655         <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
    2656       </FIELD>
    2657       <FIELD name="iexpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2658         <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
    2659       </FIELD>
    2660       <FIELD name="iexpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    2661         <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
    2662       </FIELD>
    2663       <FIELD name="iexpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    2664         <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
    2665       </FIELD>
    2666       <FIELD name="iraExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2667         <DESCRIPTION>Offset in RA of Exponential fit from PSF RA</DESCRIPTION>
    2668       </FIELD>
    2669       <FIELD name="idecExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2670         <DESCRIPTION>Offset in DEC of Exponential fit from PSF DEC</DESCRIPTION>
    2671       </FIELD>
    2672       <FIELD name="iraExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2673         <DESCRIPTION>estimated error in raExpOff</DESCRIPTION>
    2674       </FIELD>
    2675       <FIELD name="idecExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2676         <DESCRIPTION>estimated error in decExpOff</DESCRIPTION>
    2677       </FIELD>
    2678       <FIELD name="iexpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2679         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
    2680       </FIELD>
    2681       <FIELD name="iexpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2682         <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
    2683       </FIELD>
    2684       <FIELD name="iserRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2685         <DESCRIPTION>Sersic radius</DESCRIPTION>
    2686       </FIELD>
    2687       <FIELD name="iserRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    2688         <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
    2689       </FIELD>
    2690       <FIELD name="iserFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2691         <DESCRIPTION>Sersic Flux</DESCRIPTION>
    2692       </FIELD>
    2693       <FIELD name="iserFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2694         <DESCRIPTION>estimated error in serFlux</DESCRIPTION>
    2695       </FIELD>
    2696       <FIELD name="iserAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2697         <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
    2698       </FIELD>
    2699       <FIELD name="iserAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2700         <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
    2701       </FIELD>
    2702       <FIELD name="iserNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2703         <DESCRIPTION>Sersic index</DESCRIPTION>
    2704       </FIELD>
    2705       <FIELD name="iserNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2706         <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
    2707       </FIELD>
    2708       <FIELD name="iserPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    2709         <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
    2710       </FIELD>
    2711       <FIELD name="iserPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    2712         <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
    2713       </FIELD>
    2714       <FIELD name="iraSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2715         <DESCRIPTION>Offset in RA of Sersic fit from PSF RA</DESCRIPTION>
    2716       </FIELD>
    2717       <FIELD name="idecSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2718         <DESCRIPTION>Offset in DEC of Sersic fit from PSF DEC</DESCRIPTION>
    2719       </FIELD>
    2720       <FIELD name="iraSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2721         <DESCRIPTION>estimated error in raSerOff</DESCRIPTION>
    2722       </FIELD>
    2723       <FIELD name="idecSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2724         <DESCRIPTION>estimated error in decSerOff</DESCRIPTION>
    2725       </FIELD>
    2726       <FIELD name="iserCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2727         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
    2728       </FIELD>
    2729       <FIELD name="iserLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2730         <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
    2731       </FIELD>
    2732       <FIELD name="ipetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
    2733         <DESCRIPTION>Petrosian radius</DESCRIPTION>
    2734       </FIELD>
    2735       <FIELD name="ipetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
    2736         <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
    2737       </FIELD>
    2738       <FIELD name="ipetFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2739         <DESCRIPTION>Petrosian Flux</DESCRIPTION>
    2740       </FIELD>
    2741       <FIELD name="ipetFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2742         <DESCRIPTION>estimated error in petFlux</DESCRIPTION>
    2743       </FIELD>
    2744       <FIELD name="ipetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
    2745         <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
    2746       </FIELD>
    2747       <FIELD name="ipetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    2748         <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
    2749       </FIELD>
    2750       <FIELD name="ipetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
    2751         <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
    2752       </FIELD>
    2753       <FIELD name="ipetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    2754         <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
    2755       </FIELD>
    2756       <FIELD name="ipetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
    2757         <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
    2758       </FIELD>
    2759       <FIELD name="iflxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2760         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    2761       </FIELD>
    2762       <FIELD name="iflxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2763         <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
    2764       </FIELD>
    2765       <FIELD name="iflxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2766         <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
    2767       </FIELD>
    2768       <FIELD name="iflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2769         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2770       </FIELD>
    2771       <FIELD name="iflxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2772         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    2773       </FIELD>
    2774       <FIELD name="iflxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2775         <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
    2776       </FIELD>
    2777       <FIELD name="iflxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2778         <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
    2779       </FIELD>
    2780       <FIELD name="iflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2781         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2782       </FIELD>
    2783       <FIELD name="iflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2784         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    2785       </FIELD>
    2786       <FIELD name="iflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2787         <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
    2788       </FIELD>
    2789       <FIELD name="iflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2790         <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    2791       </FIELD>
    2792       <FIELD name="iflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2793         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    2794       </FIELD>
    2795       <FIELD name="iflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2796         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    2797       </FIELD>
    2798       <FIELD name="iflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2799         <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
    2800       </FIELD>
    2801       <FIELD name="iflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2802         <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    2803       </FIELD>
    2804       <FIELD name="iflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2805         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    2806       </FIELD>
    2807       <FIELD name="iflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2808         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    2809       </FIELD>
    2810       <FIELD name="iflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2811         <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
    2812       </FIELD>
    2813       <FIELD name="iflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2814         <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
    2815       </FIELD>
    2816       <FIELD name="iflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2817         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    2818       </FIELD>
    2819       <FIELD name="iflxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2820         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    2821       </FIELD>
    2822       <FIELD name="iflxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2823         <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
    2824       </FIELD>
    2825       <FIELD name="iflxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2826         <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
    2827       </FIELD>
    2828       <FIELD name="iflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2829         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    2830       </FIELD>
    2831       <FIELD name="iflxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2832         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    2833       </FIELD>
    2834       <FIELD name="iflxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2835         <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
    2836       </FIELD>
    2837       <FIELD name="iflxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2838         <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
    2839       </FIELD>
    2840       <FIELD name="iflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2841         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    2842       </FIELD>
    2843       <FIELD name="iflxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2844         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    2845       </FIELD>
    2846       <FIELD name="iflxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2847         <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
    2848       </FIELD>
    2849       <FIELD name="iflxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2850         <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
    2851       </FIELD>
    2852       <FIELD name="iflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2853         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    2854       </FIELD>
    2855       <FIELD name="iflxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2856         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    2857       </FIELD>
    2858       <FIELD name="iflxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2859         <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
    2860       </FIELD>
    2861       <FIELD name="iflxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2862         <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
    2863       </FIELD>
    2864       <FIELD name="iflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2865         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    2866       </FIELD>
    2867       <FIELD name="iflxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2868         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    2869       </FIELD>
    2870       <FIELD name="iflxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2871         <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
    2872       </FIELD>
    2873       <FIELD name="iflxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2874         <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
    2875       </FIELD>
    2876       <FIELD name="iflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2877         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    2878       </FIELD>
    2879       <FIELD name="ic1flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2880         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    2881       </FIELD>
    2882       <FIELD name="ic1flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2883         <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
    2884       </FIELD>
    2885       <FIELD name="ic1flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2886         <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
    2887       </FIELD>
    2888       <FIELD name="ic1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2889         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2890       </FIELD>
    2891       <FIELD name="ic1flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2892         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    2893       </FIELD>
    2894       <FIELD name="ic1flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2895         <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
    2896       </FIELD>
    2897       <FIELD name="ic1flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2898         <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
    2899       </FIELD>
    2900       <FIELD name="ic1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2901         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    2902       </FIELD>
    2903       <FIELD name="ic1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2904         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    2905       </FIELD>
    2906       <FIELD name="ic1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2907         <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    2908       </FIELD>
    2909       <FIELD name="ic1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2910         <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    2911       </FIELD>
    2912       <FIELD name="ic1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2913         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    2914       </FIELD>
    2915       <FIELD name="ic1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2916         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    2917       </FIELD>
    2918       <FIELD name="ic1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2919         <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    2920       </FIELD>
    2921       <FIELD name="ic1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2922         <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    2923       </FIELD>
    2924       <FIELD name="ic1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2925         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    2926       </FIELD>
    2927       <FIELD name="ic1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2928         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    2929       </FIELD>
    2930       <FIELD name="ic1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2931         <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    2932       </FIELD>
    2933       <FIELD name="ic1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2934         <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    2935       </FIELD>
    2936       <FIELD name="ic1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2937         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    2938       </FIELD>
    2939       <FIELD name="ic1flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2940         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    2941       </FIELD>
    2942       <FIELD name="ic1flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2943         <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
    2944       </FIELD>
    2945       <FIELD name="ic1flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2946         <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
    2947       </FIELD>
    2948       <FIELD name="ic1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2949         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    2950       </FIELD>
    2951       <FIELD name="ic1flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2952         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    2953       </FIELD>
    2954       <FIELD name="ic1flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2955         <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
    2956       </FIELD>
    2957       <FIELD name="ic1flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2958         <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
    2959       </FIELD>
    2960       <FIELD name="ic1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2961         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    2962       </FIELD>
    2963       <FIELD name="ic1flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2964         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    2965       </FIELD>
    2966       <FIELD name="ic1flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2967         <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
    2968       </FIELD>
    2969       <FIELD name="ic1flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2970         <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
    2971       </FIELD>
    2972       <FIELD name="ic1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2973         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    2974       </FIELD>
    2975       <FIELD name="ic1flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2976         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    2977       </FIELD>
    2978       <FIELD name="ic1flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2979         <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
    2980       </FIELD>
    2981       <FIELD name="ic1flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2982         <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
    2983       </FIELD>
    2984       <FIELD name="ic1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2985         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    2986       </FIELD>
    2987       <FIELD name="ic1flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2988         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    2989       </FIELD>
    2990       <FIELD name="ic1flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2991         <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
    2992       </FIELD>
    2993       <FIELD name="ic1flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    2994         <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
    2995       </FIELD>
    2996       <FIELD name="ic1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    2997         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    2998       </FIELD>
    2999       <FIELD name="ic2flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3000         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    3001       </FIELD>
    3002       <FIELD name="ic2flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3003         <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
    3004       </FIELD>
    3005       <FIELD name="ic2flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3006         <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
    3007       </FIELD>
    3008       <FIELD name="ic2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3009         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3010       </FIELD>
    3011       <FIELD name="ic2flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3012         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    3013       </FIELD>
    3014       <FIELD name="ic2flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3015         <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
    3016       </FIELD>
    3017       <FIELD name="ic2flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3018         <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
    3019       </FIELD>
    3020       <FIELD name="ic2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3021         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3022       </FIELD>
    3023       <FIELD name="ic2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3024         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    3025       </FIELD>
    3026       <FIELD name="ic2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3027         <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    3028       </FIELD>
    3029       <FIELD name="ic2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3030         <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    3031       </FIELD>
    3032       <FIELD name="ic2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3033         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    3034       </FIELD>
    3035       <FIELD name="ic2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3036         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    3037       </FIELD>
    3038       <FIELD name="ic2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3039         <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    3040       </FIELD>
    3041       <FIELD name="ic2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3042         <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    3043       </FIELD>
    3044       <FIELD name="ic2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3045         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    3046       </FIELD>
    3047       <FIELD name="ic2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3048         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    3049       </FIELD>
    3050       <FIELD name="ic2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3051         <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    3052       </FIELD>
    3053       <FIELD name="ic2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3054         <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    3055       </FIELD>
    3056       <FIELD name="ic2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3057         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    3058       </FIELD>
    3059       <FIELD name="ic2flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3060         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    3061       </FIELD>
    3062       <FIELD name="ic2flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3063         <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
    3064       </FIELD>
    3065       <FIELD name="ic2flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3066         <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
    3067       </FIELD>
    3068       <FIELD name="ic2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3069         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    3070       </FIELD>
    3071       <FIELD name="ic2flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3072         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    3073       </FIELD>
    3074       <FIELD name="ic2flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3075         <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
    3076       </FIELD>
    3077       <FIELD name="ic2flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3078         <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
    3079       </FIELD>
    3080       <FIELD name="ic2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3081         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    3082       </FIELD>
    3083       <FIELD name="ic2flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3084         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    3085       </FIELD>
    3086       <FIELD name="ic2flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3087         <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
    3088       </FIELD>
    3089       <FIELD name="ic2flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3090         <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
    3091       </FIELD>
    3092       <FIELD name="ic2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3093         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    3094       </FIELD>
    3095       <FIELD name="ic2flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3096         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    3097       </FIELD>
    3098       <FIELD name="ic2flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3099         <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
    3100       </FIELD>
    3101       <FIELD name="ic2flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3102         <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
    3103       </FIELD>
    3104       <FIELD name="ic2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3105         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    3106       </FIELD>
    3107       <FIELD name="ic2flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3108         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    3109       </FIELD>
    3110       <FIELD name="ic2flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3111         <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
    3112       </FIELD>
    3113       <FIELD name="ic2flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3114         <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
    3115       </FIELD>
    3116       <FIELD name="ic2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3117         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    3118       </FIELD>
    3119       <FIELD name="zlogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3120         <DESCRIPTION>concentration index</DESCRIPTION>
    3121       </FIELD>
    3122       <FIELD name="zlogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3123         <DESCRIPTION>asymmetry index</DESCRIPTION>
    3124       </FIELD>
    3125       <FIELD name="zclump" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3126         <DESCRIPTION>clumpiness factor</DESCRIPTION>
    3127       </FIELD>
    3128       <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    3129         <DESCRIPTION>ODM detection identifier</DESCRIPTION>
    3130       </FIELD>
    3131       <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    3132         <DESCRIPTION>stack identifier</DESCRIPTION>
    3133       </FIELD>
    3134       <FIELD name="zippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    3135         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    3136       </FIELD>
     1697      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1698        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1699      </FIELD>
     1700      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1701        <DESCRIPTION>stack identifier</DESCRIPTION>
     1702      </FIELD>
     1703      <FIELD name="iS2" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1704        <DESCRIPTION>(un)smoothness (Cheng 2012, Simard 2002)</DESCRIPTION>
     1705      </FIELD>
     1706      <FIELD name="ilogRT" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1707        <DESCRIPTION>total residual from elliptically symmetric model</DESCRIPTION>
     1708      </FIELD>
     1709      <FIELD name="ilogRA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1710        <DESCRIPTION>asymmetric residual from elliptically symmetric model</DESCRIPTION>
     1711      </FIELD>
     1712      <FIELD name="ilogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1713        <DESCRIPTION>concentration index (Petrosian R_50 / R_90</DESCRIPTION>
     1714      </FIELD>
     1715      <FIELD name="ilogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1716        <DESCRIPTION>log of asymmetry index (Gyory and Bell 2010)</DESCRIPTION>
     1717      </FIELD>
     1718      <FIELD name="ibumpy" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1719        <DESCRIPTION>Blakeslee bumpiness</DESCRIPTION>
     1720      </FIELD>
     1721      <FIELD name="ihalfLightRad" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1722        <DESCRIPTION>half-light radius</DESCRIPTION>
     1723      </FIELD>
     1724
     1725      <!-- z-band values -->
    31371726      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    31381727        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
    31391728      </FIELD>
    3140       <FIELD name="zdeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3141         <DESCRIPTION>deVaucouleurs radius</DESCRIPTION>
    3142       </FIELD>
    3143       <FIELD name="zdeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3144         <DESCRIPTION>estimated error in deVaucouleurs radius</DESCRIPTION>
    3145       </FIELD>
    3146       <FIELD name="zdeVFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3147         <DESCRIPTION>deVaucouleurs magntiude</DESCRIPTION>
    3148       </FIELD>
    3149       <FIELD name="zdeVFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3150         <DESCRIPTION>estimated error in deV_mag</DESCRIPTION>
    3151       </FIELD>
    3152       <FIELD name="zdeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3153         <DESCRIPTION>deVaucoulerus axis ratio</DESCRIPTION>
    3154       </FIELD>
    3155       <FIELD name="zdeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3156         <DESCRIPTION>estimated error in deVaucoulerus axis ratio</DESCRIPTION>
    3157       </FIELD>
    3158       <FIELD name="zdeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    3159         <DESCRIPTION>estmated phi of deVaucouleurs axis</DESCRIPTION>
    3160       </FIELD>
    3161       <FIELD name="zdeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    3162         <DESCRIPTION>estmated error of phi of deVaucouleurs axis</DESCRIPTION>
    3163       </FIELD>
    3164       <FIELD name="zraDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3165         <DESCRIPTION>Offset in RA of deVaucouleurs fit from PSF RA</DESCRIPTION>
    3166       </FIELD>
    3167       <FIELD name="zdecDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3168         <DESCRIPTION>Offset in DEC of deVaucouleurs fit from PSF DEC</DESCRIPTION>
    3169       </FIELD>
    3170       <FIELD name="zraDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3171         <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
    3172       </FIELD>
    3173       <FIELD name="zdecDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3174         <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
    3175       </FIELD>
    3176       <FIELD name="zdeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3177         <DESCRIPTION>deVaucouleurs fit coverage factor</DESCRIPTION>
    3178       </FIELD>
    3179       <FIELD name="zdeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3180         <DESCRIPTION>deVaucouleurs fit likelihood factor</DESCRIPTION>
    3181       </FIELD>
    3182       <FIELD name="zexpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3183         <DESCRIPTION>Exponential fit radius</DESCRIPTION>
    3184       </FIELD>
    3185       <FIELD name="zexpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3186         <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
    3187       </FIELD>
    3188       <FIELD name="zexpFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3189         <DESCRIPTION>Exponential fit flux</DESCRIPTION>
    3190       </FIELD>
    3191       <FIELD name="zexpFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3192         <DESCRIPTION>estimated error in expFlux</DESCRIPTION>
    3193       </FIELD>
    3194       <FIELD name="zexpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3195         <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
    3196       </FIELD>
    3197       <FIELD name="zexpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3198         <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
    3199       </FIELD>
    3200       <FIELD name="zexpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    3201         <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
    3202       </FIELD>
    3203       <FIELD name="zexpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    3204         <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
    3205       </FIELD>
    3206       <FIELD name="zraExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3207         <DESCRIPTION>Offset in RA of Exponential fit from PSF RA</DESCRIPTION>
    3208       </FIELD>
    3209       <FIELD name="zdecExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3210         <DESCRIPTION>Offset in DEC of Exponential fit from PSF DEC</DESCRIPTION>
    3211       </FIELD>
    3212       <FIELD name="zraExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3213         <DESCRIPTION>estimated error in raExpOff</DESCRIPTION>
    3214       </FIELD>
    3215       <FIELD name="zdecExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3216         <DESCRIPTION>estimated error in decExpOff</DESCRIPTION>
    3217       </FIELD>
    3218       <FIELD name="zexpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3219         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
    3220       </FIELD>
    3221       <FIELD name="zexpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3222         <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
    3223       </FIELD>
    3224       <FIELD name="zserRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3225         <DESCRIPTION>Sersic radius</DESCRIPTION>
    3226       </FIELD>
    3227       <FIELD name="zserRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3228         <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
    3229       </FIELD>
    3230       <FIELD name="zserFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3231         <DESCRIPTION>Sersic Flux</DESCRIPTION>
    3232       </FIELD>
    3233       <FIELD name="zserFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3234         <DESCRIPTION>estimated error in serFlux</DESCRIPTION>
    3235       </FIELD>
    3236       <FIELD name="zserAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3237         <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
    3238       </FIELD>
    3239       <FIELD name="zserAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3240         <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
    3241       </FIELD>
    3242       <FIELD name="zserNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3243         <DESCRIPTION>Sersic index</DESCRIPTION>
    3244       </FIELD>
    3245       <FIELD name="zserNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3246         <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
    3247       </FIELD>
    3248       <FIELD name="zserPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    3249         <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
    3250       </FIELD>
    3251       <FIELD name="zserPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    3252         <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
    3253       </FIELD>
    3254       <FIELD name="zraSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3255         <DESCRIPTION>Offset in RA of Sersic fit from PSF RA</DESCRIPTION>
    3256       </FIELD>
    3257       <FIELD name="zdecSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3258         <DESCRIPTION>Offset in DEC of Sersic fit from PSF DEC</DESCRIPTION>
    3259       </FIELD>
    3260       <FIELD name="zraSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3261         <DESCRIPTION>estimated error in raSerOff</DESCRIPTION>
    3262       </FIELD>
    3263       <FIELD name="zdecSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3264         <DESCRIPTION>estimated error in decSerOff</DESCRIPTION>
    3265       </FIELD>
    3266       <FIELD name="zserCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3267         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
    3268       </FIELD>
    3269       <FIELD name="zserLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3270         <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
    3271       </FIELD>
    3272       <FIELD name="zpetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
    3273         <DESCRIPTION>Petrosian radius</DESCRIPTION>
    3274       </FIELD>
    3275       <FIELD name="zpetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
    3276         <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
    3277       </FIELD>
    3278       <FIELD name="zpetFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3279         <DESCRIPTION>Petrosian Flux</DESCRIPTION>
    3280       </FIELD>
    3281       <FIELD name="zpetFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3282         <DESCRIPTION>estimated error in petFlux</DESCRIPTION>
    3283       </FIELD>
    3284       <FIELD name="zpetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
    3285         <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
    3286       </FIELD>
    3287       <FIELD name="zpetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    3288         <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
    3289       </FIELD>
    3290       <FIELD name="zpetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
    3291         <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
    3292       </FIELD>
    3293       <FIELD name="zpetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    3294         <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
    3295       </FIELD>
    3296       <FIELD name="zpetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
    3297         <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
    3298       </FIELD>
    3299       <FIELD name="zflxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3300         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    3301       </FIELD>
    3302       <FIELD name="zflxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3303         <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
    3304       </FIELD>
    3305       <FIELD name="zflxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3306         <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
    3307       </FIELD>
    3308       <FIELD name="zflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3309         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3310       </FIELD>
    3311       <FIELD name="zflxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3312         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    3313       </FIELD>
    3314       <FIELD name="zflxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3315         <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
    3316       </FIELD>
    3317       <FIELD name="zflxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3318         <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
    3319       </FIELD>
    3320       <FIELD name="zflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3321         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3322       </FIELD>
    3323       <FIELD name="zflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3324         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    3325       </FIELD>
    3326       <FIELD name="zflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3327         <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
    3328       </FIELD>
    3329       <FIELD name="zflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3330         <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    3331       </FIELD>
    3332       <FIELD name="zflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3333         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    3334       </FIELD>
    3335       <FIELD name="zflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3336         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    3337       </FIELD>
    3338       <FIELD name="zflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3339         <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
    3340       </FIELD>
    3341       <FIELD name="zflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3342         <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    3343       </FIELD>
    3344       <FIELD name="zflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3345         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    3346       </FIELD>
    3347       <FIELD name="zflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3348         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    3349       </FIELD>
    3350       <FIELD name="zflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3351         <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
    3352       </FIELD>
    3353       <FIELD name="zflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3354         <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
    3355       </FIELD>
    3356       <FIELD name="zflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3357         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    3358       </FIELD>
    3359       <FIELD name="zflxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3360         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    3361       </FIELD>
    3362       <FIELD name="zflxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3363         <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
    3364       </FIELD>
    3365       <FIELD name="zflxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3366         <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
    3367       </FIELD>
    3368       <FIELD name="zflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3369         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    3370       </FIELD>
    3371       <FIELD name="zflxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3372         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    3373       </FIELD>
    3374       <FIELD name="zflxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3375         <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
    3376       </FIELD>
    3377       <FIELD name="zflxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3378         <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
    3379       </FIELD>
    3380       <FIELD name="zflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3381         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    3382       </FIELD>
    3383       <FIELD name="zflxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3384         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    3385       </FIELD>
    3386       <FIELD name="zflxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3387         <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
    3388       </FIELD>
    3389       <FIELD name="zflxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3390         <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
    3391       </FIELD>
    3392       <FIELD name="zflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3393         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    3394       </FIELD>
    3395       <FIELD name="zflxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3396         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    3397       </FIELD>
    3398       <FIELD name="zflxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3399         <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
    3400       </FIELD>
    3401       <FIELD name="zflxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3402         <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
    3403       </FIELD>
    3404       <FIELD name="zflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3405         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    3406       </FIELD>
    3407       <FIELD name="zflxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3408         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    3409       </FIELD>
    3410       <FIELD name="zflxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3411         <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
    3412       </FIELD>
    3413       <FIELD name="zflxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3414         <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
    3415       </FIELD>
    3416       <FIELD name="zflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3417         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    3418       </FIELD>
    3419       <FIELD name="zc1flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3420         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    3421       </FIELD>
    3422       <FIELD name="zc1flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3423         <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
    3424       </FIELD>
    3425       <FIELD name="zc1flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3426         <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
    3427       </FIELD>
    3428       <FIELD name="zc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3429         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3430       </FIELD>
    3431       <FIELD name="zc1flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3432         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    3433       </FIELD>
    3434       <FIELD name="zc1flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3435         <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
    3436       </FIELD>
    3437       <FIELD name="zc1flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3438         <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
    3439       </FIELD>
    3440       <FIELD name="zc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3441         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3442       </FIELD>
    3443       <FIELD name="zc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3444         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    3445       </FIELD>
    3446       <FIELD name="zc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3447         <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    3448       </FIELD>
    3449       <FIELD name="zc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3450         <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    3451       </FIELD>
    3452       <FIELD name="zc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3453         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    3454       </FIELD>
    3455       <FIELD name="zc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3456         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    3457       </FIELD>
    3458       <FIELD name="zc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3459         <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    3460       </FIELD>
    3461       <FIELD name="zc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3462         <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    3463       </FIELD>
    3464       <FIELD name="zc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3465         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    3466       </FIELD>
    3467       <FIELD name="zc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3468         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    3469       </FIELD>
    3470       <FIELD name="zc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3471         <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    3472       </FIELD>
    3473       <FIELD name="zc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3474         <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    3475       </FIELD>
    3476       <FIELD name="zc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3477         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    3478       </FIELD>
    3479       <FIELD name="zc1flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3480         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    3481       </FIELD>
    3482       <FIELD name="zc1flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3483         <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
    3484       </FIELD>
    3485       <FIELD name="zc1flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3486         <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
    3487       </FIELD>
    3488       <FIELD name="zc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3489         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    3490       </FIELD>
    3491       <FIELD name="zc1flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3492         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    3493       </FIELD>
    3494       <FIELD name="zc1flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3495         <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
    3496       </FIELD>
    3497       <FIELD name="zc1flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3498         <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
    3499       </FIELD>
    3500       <FIELD name="zc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3501         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    3502       </FIELD>
    3503       <FIELD name="zc1flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3504         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    3505       </FIELD>
    3506       <FIELD name="zc1flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3507         <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
    3508       </FIELD>
    3509       <FIELD name="zc1flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3510         <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
    3511       </FIELD>
    3512       <FIELD name="zc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3513         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    3514       </FIELD>
    3515       <FIELD name="zc1flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3516         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    3517       </FIELD>
    3518       <FIELD name="zc1flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3519         <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
    3520       </FIELD>
    3521       <FIELD name="zc1flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3522         <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
    3523       </FIELD>
    3524       <FIELD name="zc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3525         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    3526       </FIELD>
    3527       <FIELD name="zc1flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3528         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    3529       </FIELD>
    3530       <FIELD name="zc1flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3531         <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
    3532       </FIELD>
    3533       <FIELD name="zc1flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3534         <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
    3535       </FIELD>
    3536       <FIELD name="zc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3537         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    3538       </FIELD>
    3539       <FIELD name="zc2flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3540         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    3541       </FIELD>
    3542       <FIELD name="zc2flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3543         <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
    3544       </FIELD>
    3545       <FIELD name="zc2flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3546         <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
    3547       </FIELD>
    3548       <FIELD name="zc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3549         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3550       </FIELD>
    3551       <FIELD name="zc2flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3552         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    3553       </FIELD>
    3554       <FIELD name="zc2flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3555         <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
    3556       </FIELD>
    3557       <FIELD name="zc2flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3558         <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
    3559       </FIELD>
    3560       <FIELD name="zc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3561         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3562       </FIELD>
    3563       <FIELD name="zc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3564         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    3565       </FIELD>
    3566       <FIELD name="zc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3567         <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    3568       </FIELD>
    3569       <FIELD name="zc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3570         <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    3571       </FIELD>
    3572       <FIELD name="zc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3573         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    3574       </FIELD>
    3575       <FIELD name="zc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3576         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    3577       </FIELD>
    3578       <FIELD name="zc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3579         <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    3580       </FIELD>
    3581       <FIELD name="zc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3582         <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    3583       </FIELD>
    3584       <FIELD name="zc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3585         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    3586       </FIELD>
    3587       <FIELD name="zc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3588         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    3589       </FIELD>
    3590       <FIELD name="zc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3591         <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    3592       </FIELD>
    3593       <FIELD name="zc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3594         <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    3595       </FIELD>
    3596       <FIELD name="zc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3597         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    3598       </FIELD>
    3599       <FIELD name="zc2flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3600         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    3601       </FIELD>
    3602       <FIELD name="zc2flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3603         <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
    3604       </FIELD>
    3605       <FIELD name="zc2flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3606         <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
    3607       </FIELD>
    3608       <FIELD name="zc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3609         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    3610       </FIELD>
    3611       <FIELD name="zc2flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3612         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    3613       </FIELD>
    3614       <FIELD name="zc2flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3615         <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
    3616       </FIELD>
    3617       <FIELD name="zc2flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3618         <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
    3619       </FIELD>
    3620       <FIELD name="zc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3621         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    3622       </FIELD>
    3623       <FIELD name="zc2flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3624         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    3625       </FIELD>
    3626       <FIELD name="zc2flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3627         <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
    3628       </FIELD>
    3629       <FIELD name="zc2flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3630         <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
    3631       </FIELD>
    3632       <FIELD name="zc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3633         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    3634       </FIELD>
    3635       <FIELD name="zc2flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3636         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    3637       </FIELD>
    3638       <FIELD name="zc2flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3639         <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
    3640       </FIELD>
    3641       <FIELD name="zc2flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3642         <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
    3643       </FIELD>
    3644       <FIELD name="zc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3645         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    3646       </FIELD>
    3647       <FIELD name="zc2flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3648         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    3649       </FIELD>
    3650       <FIELD name="zc2flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3651         <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
    3652       </FIELD>
    3653       <FIELD name="zc2flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3654         <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
    3655       </FIELD>
    3656       <FIELD name="zc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3657         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    3658       </FIELD>
    3659       <FIELD name="ylogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3660         <DESCRIPTION>concentration index</DESCRIPTION>
    3661       </FIELD>
    3662       <FIELD name="ylogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3663         <DESCRIPTION>asymmetry index</DESCRIPTION>
    3664       </FIELD>
    3665       <FIELD name="yclump" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3666         <DESCRIPTION>clumpiness factor</DESCRIPTION>
    3667       </FIELD>
    3668       <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    3669         <DESCRIPTION>ODM detection identifier</DESCRIPTION>
    3670       </FIELD>
    3671       <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    3672         <DESCRIPTION>stack identifier</DESCRIPTION>
    3673       </FIELD>
    3674       <FIELD name="yippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    3675         <DESCRIPTION>IPP object identifier</DESCRIPTION>
    3676       </FIELD>
     1729      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1730        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1731      </FIELD>
     1732      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1733        <DESCRIPTION>stack identifier</DESCRIPTION>
     1734      </FIELD>
     1735      <FIELD name="zS2" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1736        <DESCRIPTION>(un)smoothness (Cheng 2012, Simard 2002)</DESCRIPTION>
     1737      </FIELD>
     1738      <FIELD name="zlogRT" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1739        <DESCRIPTION>total residual from elliptically symmetric model</DESCRIPTION>
     1740      </FIELD>
     1741      <FIELD name="zlogRA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1742        <DESCRIPTION>asymmetric residual from elliptically symmetric model</DESCRIPTION>
     1743      </FIELD>
     1744      <FIELD name="zlogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1745        <DESCRIPTION>concentration index (Petrosian R_50 / R_90</DESCRIPTION>
     1746      </FIELD>
     1747      <FIELD name="zlogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1748        <DESCRIPTION>log of asymmetry index (Gyory and Bell 2010)</DESCRIPTION>
     1749      </FIELD>
     1750      <FIELD name="zbumpy" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1751        <DESCRIPTION>Blakeslee bumpiness</DESCRIPTION>
     1752      </FIELD>
     1753      <FIELD name="zhalfLightRad" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1754        <DESCRIPTION>half-light radius</DESCRIPTION>
     1755      </FIELD>
     1756
     1757      <!-- y-band values -->
    36771758      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
    36781759        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
    36791760      </FIELD>
    3680       <FIELD name="ydeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3681         <DESCRIPTION>deVaucouleurs radius</DESCRIPTION>
    3682       </FIELD>
    3683       <FIELD name="ydeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3684         <DESCRIPTION>estimated error in deVaucouleurs radius</DESCRIPTION>
    3685       </FIELD>
    3686       <FIELD name="ydeVFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3687         <DESCRIPTION>deVaucouleurs magntiude</DESCRIPTION>
    3688       </FIELD>
    3689       <FIELD name="ydeVFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3690         <DESCRIPTION>estimated error in deV_mag</DESCRIPTION>
    3691       </FIELD>
    3692       <FIELD name="ydeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3693         <DESCRIPTION>deVaucoulerus axis ratio</DESCRIPTION>
    3694       </FIELD>
    3695       <FIELD name="ydeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3696         <DESCRIPTION>estimated error in deVaucoulerus axis ratio</DESCRIPTION>
    3697       </FIELD>
    3698       <FIELD name="ydeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    3699         <DESCRIPTION>estmated phi of deVaucouleurs axis</DESCRIPTION>
    3700       </FIELD>
    3701       <FIELD name="ydeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    3702         <DESCRIPTION>estmated error of phi of deVaucouleurs axis</DESCRIPTION>
    3703       </FIELD>
    3704       <FIELD name="yraDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3705         <DESCRIPTION>Offset in RA of deVaucouleurs fit from PSF RA</DESCRIPTION>
    3706       </FIELD>
    3707       <FIELD name="ydecDeVOff" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3708         <DESCRIPTION>Offset in DEC of deVaucouleurs fit from PSF DEC</DESCRIPTION>
    3709       </FIELD>
    3710       <FIELD name="yraDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3711         <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
    3712       </FIELD>
    3713       <FIELD name="ydecDeVOffErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3714         <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
    3715       </FIELD>
    3716       <FIELD name="ydeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3717         <DESCRIPTION>deVaucouleurs fit coverage factor</DESCRIPTION>
    3718       </FIELD>
    3719       <FIELD name="ydeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3720         <DESCRIPTION>deVaucouleurs fit likelihood factor</DESCRIPTION>
    3721       </FIELD>
    3722       <FIELD name="yexpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3723         <DESCRIPTION>Exponential fit radius</DESCRIPTION>
    3724       </FIELD>
    3725       <FIELD name="yexpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3726         <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
    3727       </FIELD>
    3728       <FIELD name="yexpFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3729         <DESCRIPTION>Exponential fit flux</DESCRIPTION>
    3730       </FIELD>
    3731       <FIELD name="yexpFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3732         <DESCRIPTION>estimated error in expFlux</DESCRIPTION>
    3733       </FIELD>
    3734       <FIELD name="yexpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3735         <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
    3736       </FIELD>
    3737       <FIELD name="yexpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3738         <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
    3739       </FIELD>
    3740       <FIELD name="yexpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    3741         <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
    3742       </FIELD>
    3743       <FIELD name="yexpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    3744         <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
    3745       </FIELD>
    3746       <FIELD name="yraExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3747         <DESCRIPTION>Offset in RA of Exponential fit from PSF RA</DESCRIPTION>
    3748       </FIELD>
    3749       <FIELD name="ydecExpOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3750         <DESCRIPTION>Offset in DEC of Exponential fit from PSF DEC</DESCRIPTION>
    3751       </FIELD>
    3752       <FIELD name="yraExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3753         <DESCRIPTION>estimated error in raExpOff</DESCRIPTION>
    3754       </FIELD>
    3755       <FIELD name="ydecExpOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3756         <DESCRIPTION>estimated error in decExpOff</DESCRIPTION>
    3757       </FIELD>
    3758       <FIELD name="yexpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3759         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
    3760       </FIELD>
    3761       <FIELD name="yexpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3762         <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
    3763       </FIELD>
    3764       <FIELD name="yserRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3765         <DESCRIPTION>Sersic radius</DESCRIPTION>
    3766       </FIELD>
    3767       <FIELD name="yserRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
    3768         <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
    3769       </FIELD>
    3770       <FIELD name="yserFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3771         <DESCRIPTION>Sersic Flux</DESCRIPTION>
    3772       </FIELD>
    3773       <FIELD name="yserFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3774         <DESCRIPTION>estimated error in serFlux</DESCRIPTION>
    3775       </FIELD>
    3776       <FIELD name="yserAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3777         <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
    3778       </FIELD>
    3779       <FIELD name="yserAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3780         <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
    3781       </FIELD>
    3782       <FIELD name="yserNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3783         <DESCRIPTION>Sersic index</DESCRIPTION>
    3784       </FIELD>
    3785       <FIELD name="yserNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3786         <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
    3787       </FIELD>
    3788       <FIELD name="yserPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
    3789         <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
    3790       </FIELD>
    3791       <FIELD name="yserPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
    3792         <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
    3793       </FIELD>
    3794       <FIELD name="yraSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3795         <DESCRIPTION>Offset in RA of Sersic fit from PSF RA</DESCRIPTION>
    3796       </FIELD>
    3797       <FIELD name="ydecSerOff" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3798         <DESCRIPTION>Offset in DEC of Sersic fit from PSF DEC</DESCRIPTION>
    3799       </FIELD>
    3800       <FIELD name="yraSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3801         <DESCRIPTION>estimated error in raSerOff</DESCRIPTION>
    3802       </FIELD>
    3803       <FIELD name="ydecSerOffErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3804         <DESCRIPTION>estimated error in decSerOff</DESCRIPTION>
    3805       </FIELD>
    3806       <FIELD name="yserCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3807         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
    3808       </FIELD>
    3809       <FIELD name="yserLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3810         <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
    3811       </FIELD>
    3812       <FIELD name="ypetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
    3813         <DESCRIPTION>Petrosian radius</DESCRIPTION>
    3814       </FIELD>
    3815       <FIELD name="ypetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
    3816         <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
    3817       </FIELD>
    3818       <FIELD name="ypetFlux" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3819         <DESCRIPTION>Petrosian Flux</DESCRIPTION>
    3820       </FIELD>
    3821       <FIELD name="ypetFluxErr" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3822         <DESCRIPTION>estimated error in petFlux</DESCRIPTION>
    3823       </FIELD>
    3824       <FIELD name="ypetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
    3825         <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
    3826       </FIELD>
    3827       <FIELD name="ypetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    3828         <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
    3829       </FIELD>
    3830       <FIELD name="ypetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
    3831         <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
    3832       </FIELD>
    3833       <FIELD name="ypetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
    3834         <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
    3835       </FIELD>
    3836       <FIELD name="ypetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
    3837         <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
    3838       </FIELD>
    3839       <FIELD name="yflxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3840         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    3841       </FIELD>
    3842       <FIELD name="yflxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3843         <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
    3844       </FIELD>
    3845       <FIELD name="yflxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3846         <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
    3847       </FIELD>
    3848       <FIELD name="yflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3849         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3850       </FIELD>
    3851       <FIELD name="yflxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3852         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    3853       </FIELD>
    3854       <FIELD name="yflxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3855         <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
    3856       </FIELD>
    3857       <FIELD name="yflxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3858         <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
    3859       </FIELD>
    3860       <FIELD name="yflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3861         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3862       </FIELD>
    3863       <FIELD name="yflxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3864         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    3865       </FIELD>
    3866       <FIELD name="yflxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3867         <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
    3868       </FIELD>
    3869       <FIELD name="yflxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3870         <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
    3871       </FIELD>
    3872       <FIELD name="yflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3873         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    3874       </FIELD>
    3875       <FIELD name="yflxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3876         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    3877       </FIELD>
    3878       <FIELD name="yflxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3879         <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
    3880       </FIELD>
    3881       <FIELD name="yflxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3882         <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
    3883       </FIELD>
    3884       <FIELD name="yflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3885         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    3886       </FIELD>
    3887       <FIELD name="yflxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3888         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    3889       </FIELD>
    3890       <FIELD name="yflxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3891         <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
    3892       </FIELD>
    3893       <FIELD name="yflxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3894         <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
    3895       </FIELD>
    3896       <FIELD name="yflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3897         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    3898       </FIELD>
    3899       <FIELD name="yflxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3900         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    3901       </FIELD>
    3902       <FIELD name="yflxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3903         <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
    3904       </FIELD>
    3905       <FIELD name="yflxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3906         <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
    3907       </FIELD>
    3908       <FIELD name="yflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3909         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    3910       </FIELD>
    3911       <FIELD name="yflxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3912         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    3913       </FIELD>
    3914       <FIELD name="yflxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3915         <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
    3916       </FIELD>
    3917       <FIELD name="yflxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3918         <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
    3919       </FIELD>
    3920       <FIELD name="yflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3921         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    3922       </FIELD>
    3923       <FIELD name="yflxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3924         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    3925       </FIELD>
    3926       <FIELD name="yflxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3927         <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
    3928       </FIELD>
    3929       <FIELD name="yflxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3930         <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
    3931       </FIELD>
    3932       <FIELD name="yflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3933         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    3934       </FIELD>
    3935       <FIELD name="yflxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3936         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    3937       </FIELD>
    3938       <FIELD name="yflxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3939         <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
    3940       </FIELD>
    3941       <FIELD name="yflxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3942         <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
    3943       </FIELD>
    3944       <FIELD name="yflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3945         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    3946       </FIELD>
    3947       <FIELD name="yflxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3948         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    3949       </FIELD>
    3950       <FIELD name="yflxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3951         <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
    3952       </FIELD>
    3953       <FIELD name="yflxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3954         <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
    3955       </FIELD>
    3956       <FIELD name="yflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3957         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    3958       </FIELD>
    3959       <FIELD name="yc1flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3960         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    3961       </FIELD>
    3962       <FIELD name="yc1flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3963         <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
    3964       </FIELD>
    3965       <FIELD name="yc1flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3966         <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
    3967       </FIELD>
    3968       <FIELD name="yc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3969         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3970       </FIELD>
    3971       <FIELD name="yc1flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3972         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    3973       </FIELD>
    3974       <FIELD name="yc1flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3975         <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
    3976       </FIELD>
    3977       <FIELD name="yc1flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3978         <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
    3979       </FIELD>
    3980       <FIELD name="yc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3981         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    3982       </FIELD>
    3983       <FIELD name="yc1flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3984         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    3985       </FIELD>
    3986       <FIELD name="yc1flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3987         <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
    3988       </FIELD>
    3989       <FIELD name="yc1flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3990         <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
    3991       </FIELD>
    3992       <FIELD name="yc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    3993         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    3994       </FIELD>
    3995       <FIELD name="yc1flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3996         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    3997       </FIELD>
    3998       <FIELD name="yc1flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    3999         <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
    4000       </FIELD>
    4001       <FIELD name="yc1flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4002         <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
    4003       </FIELD>
    4004       <FIELD name="yc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4005         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    4006       </FIELD>
    4007       <FIELD name="yc1flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4008         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    4009       </FIELD>
    4010       <FIELD name="yc1flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4011         <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
    4012       </FIELD>
    4013       <FIELD name="yc1flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4014         <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
    4015       </FIELD>
    4016       <FIELD name="yc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4017         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    4018       </FIELD>
    4019       <FIELD name="yc1flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4020         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    4021       </FIELD>
    4022       <FIELD name="yc1flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4023         <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
    4024       </FIELD>
    4025       <FIELD name="yc1flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4026         <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
    4027       </FIELD>
    4028       <FIELD name="yc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4029         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    4030       </FIELD>
    4031       <FIELD name="yc1flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4032         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    4033       </FIELD>
    4034       <FIELD name="yc1flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4035         <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
    4036       </FIELD>
    4037       <FIELD name="yc1flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4038         <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
    4039       </FIELD>
    4040       <FIELD name="yc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4041         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    4042       </FIELD>
    4043       <FIELD name="yc1flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4044         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    4045       </FIELD>
    4046       <FIELD name="yc1flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4047         <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
    4048       </FIELD>
    4049       <FIELD name="yc1flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4050         <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
    4051       </FIELD>
    4052       <FIELD name="yc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4053         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    4054       </FIELD>
    4055       <FIELD name="yc1flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4056         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    4057       </FIELD>
    4058       <FIELD name="yc1flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4059         <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
    4060       </FIELD>
    4061       <FIELD name="yc1flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4062         <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
    4063       </FIELD>
    4064       <FIELD name="yc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4065         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    4066       </FIELD>
    4067       <FIELD name="yc1flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4068         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    4069       </FIELD>
    4070       <FIELD name="yc1flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4071         <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
    4072       </FIELD>
    4073       <FIELD name="yc1flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4074         <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
    4075       </FIELD>
    4076       <FIELD name="yc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4077         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    4078       </FIELD>
    4079       <FIELD name="yc2flxR1" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4080         <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
    4081       </FIELD>
    4082       <FIELD name="yc2flxR1Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4083         <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
    4084       </FIELD>
    4085       <FIELD name="yc2flxR1Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4086         <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
    4087       </FIELD>
    4088       <FIELD name="yc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4089         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    4090       </FIELD>
    4091       <FIELD name="yc2flxR2" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4092         <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
    4093       </FIELD>
    4094       <FIELD name="yc2flxR2Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4095         <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
    4096       </FIELD>
    4097       <FIELD name="yc2flxR2Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4098         <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
    4099       </FIELD>
    4100       <FIELD name="yc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4101         <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
    4102       </FIELD>
    4103       <FIELD name="yc2flxR3" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4104         <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
    4105       </FIELD>
    4106       <FIELD name="yc2flxR3Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4107         <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
    4108       </FIELD>
    4109       <FIELD name="yc2flxR3Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4110         <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
    4111       </FIELD>
    4112       <FIELD name="yc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4113         <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
    4114       </FIELD>
    4115       <FIELD name="yc2flxR4" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4116         <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
    4117       </FIELD>
    4118       <FIELD name="yc2flxR4Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4119         <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
    4120       </FIELD>
    4121       <FIELD name="yc2flxR4Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4122         <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
    4123       </FIELD>
    4124       <FIELD name="yc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4125         <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
    4126       </FIELD>
    4127       <FIELD name="yc2flxR5" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4128         <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
    4129       </FIELD>
    4130       <FIELD name="yc2flxR5Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4131         <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
    4132       </FIELD>
    4133       <FIELD name="yc2flxR5Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4134         <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
    4135       </FIELD>
    4136       <FIELD name="yc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4137         <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
    4138       </FIELD>
    4139       <FIELD name="yc2flxR6" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4140         <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
    4141       </FIELD>
    4142       <FIELD name="yc2flxR6Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4143         <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
    4144       </FIELD>
    4145       <FIELD name="yc2flxR6Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4146         <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
    4147       </FIELD>
    4148       <FIELD name="yc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4149         <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
    4150       </FIELD>
    4151       <FIELD name="yc2flxR7" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4152         <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
    4153       </FIELD>
    4154       <FIELD name="yc2flxR7Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4155         <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
    4156       </FIELD>
    4157       <FIELD name="yc2flxR7Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4158         <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
    4159       </FIELD>
    4160       <FIELD name="yc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4161         <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
    4162       </FIELD>
    4163       <FIELD name="yc2flxR8" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4164         <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
    4165       </FIELD>
    4166       <FIELD name="yc2flxR8Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4167         <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
    4168       </FIELD>
    4169       <FIELD name="yc2flxR8Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4170         <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
    4171       </FIELD>
    4172       <FIELD name="yc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4173         <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
    4174       </FIELD>
    4175       <FIELD name="yc2flxR9" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4176         <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
    4177       </FIELD>
    4178       <FIELD name="yc2flxR9Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4179         <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
    4180       </FIELD>
    4181       <FIELD name="yc2flxR9Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4182         <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
    4183       </FIELD>
    4184       <FIELD name="yc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4185         <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
    4186       </FIELD>
    4187       <FIELD name="yc2flxR10" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4188         <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
    4189       </FIELD>
    4190       <FIELD name="yc2flxR10Err" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4191         <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
    4192       </FIELD>
    4193       <FIELD name="yc2flxR10Std" arraysize="1" datatype="float" unit="adu/seconds" default="-999">
    4194         <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
    4195       </FIELD>
    4196       <FIELD name="yc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
    4197         <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
    4198       </FIELD>
     1761      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1762        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1763      </FIELD>
     1764      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1765        <DESCRIPTION>stack identifier</DESCRIPTION>
     1766      </FIELD>
     1767      <FIELD name="yS2" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1768        <DESCRIPTION>(un)smoothness (Cheng 2012, Simard 2002)</DESCRIPTION>
     1769      </FIELD>
     1770      <FIELD name="ylogRT" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1771        <DESCRIPTION>total residual from elliptically symmetric model</DESCRIPTION>
     1772      </FIELD>
     1773      <FIELD name="ylogRA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1774        <DESCRIPTION>asymmetric residual from elliptically symmetric model</DESCRIPTION>
     1775      </FIELD>
     1776      <FIELD name="ylogC" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1777        <DESCRIPTION>concentration index (Petrosian R_50 / R_90</DESCRIPTION>
     1778      </FIELD>
     1779      <FIELD name="ylogA" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1780        <DESCRIPTION>log of asymmetry index (Gyory and Bell 2010)</DESCRIPTION>
     1781      </FIELD>
     1782      <FIELD name="ybumpy" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1783        <DESCRIPTION>Blakeslee bumpiness</DESCRIPTION>
     1784      </FIELD>
     1785      <FIELD name="yhalfLightRad" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1786        <DESCRIPTION>half-light radius</DESCRIPTION>
     1787      </FIELD>
     1788
    41991789      <DATA>
    42001790        <TABLEDATA></TABLEDATA>
    42011791      </DATA>
    42021792    </TABLE>
     1793
     1794    <!-- StackModelFitExp Table ************************************************** -->
     1795    <TABLE name="StackModelFitExp">
     1796      <DESCRIPTION>VOTable description of PSPS table StackModelFitExp</DESCRIPTION>
     1797      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     1798      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1799        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     1800      </FIELD>
     1801      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1802        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     1803      </FIELD>
     1804      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1805        <DESCRIPTION>random stack id</DESCRIPTION>
     1806      </FIELD>
     1807      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1808        <DESCRIPTION>identifies which of up to 5 possible stackdetections thisrow refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     1809      </FIELD>
     1810      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     1811        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     1812      </FIELD>
     1813      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     1814        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     1815      </FIELD>
     1816
     1817      <!-- g-band values -->
     1818      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1819        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     1820      </FIELD>
     1821      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1822        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1823      </FIELD>
     1824      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1825        <DESCRIPTION>stack identifier</DESCRIPTION>
     1826      </FIELD>
     1827      <FIELD name="gExpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1828        <DESCRIPTION>Exponential fit radius</DESCRIPTION>
     1829      </FIELD>
     1830      <FIELD name="gExpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1831        <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
     1832      </FIELD>
     1833      <FIELD name="gExpMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1834        <DESCRIPTION>Exponential fit mag</DESCRIPTION>
     1835      </FIELD>
     1836      <FIELD name="gExpMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1837        <DESCRIPTION>estimated error in expMag</DESCRIPTION>
     1838      </FIELD>
     1839      <FIELD name="gExpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1840        <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
     1841      </FIELD>
     1842      <FIELD name="gExpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1843        <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
     1844      </FIELD>
     1845      <FIELD name="gExpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     1846        <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
     1847      </FIELD>
     1848      <FIELD name="gExpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     1849        <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
     1850      </FIELD>
     1851      <FIELD name="gExpRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     1852        <DESCRIPTION>RA of Exponential fit</DESCRIPTION>
     1853      </FIELD>
     1854      <FIELD name="gExpDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     1855        <DESCRIPTION>DEC of Exponential fit</DESCRIPTION>
     1856      </FIELD>
     1857      <FIELD name="gExpRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1858        <DESCRIPTION>estimated error in ExpRa</DESCRIPTION>
     1859      </FIELD>
     1860      <FIELD name="gExpDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1861        <DESCRIPTION>estimated error in ExpDec</DESCRIPTION>
     1862      </FIELD>
     1863      <FIELD name="gExpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1864        <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
     1865      </FIELD>
     1866      <FIELD name="gExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1867        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
     1868      </FIELD>
     1869
     1870      <!-- r-band values -->
     1871      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1872        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     1873      </FIELD>
     1874      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1875        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1876      </FIELD>
     1877      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1878        <DESCRIPTION>stack identifier</DESCRIPTION>
     1879      </FIELD>
     1880      <FIELD name="rExpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1881        <DESCRIPTION>Exponential fit radius</DESCRIPTION>
     1882      </FIELD>
     1883      <FIELD name="rExpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1884        <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
     1885      </FIELD>
     1886      <FIELD name="rExpMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1887        <DESCRIPTION>Exponential fit mag</DESCRIPTION>
     1888      </FIELD>
     1889      <FIELD name="rExpMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1890        <DESCRIPTION>estimated error in ExpMag</DESCRIPTION>
     1891      </FIELD>
     1892      <FIELD name="rExpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1893        <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
     1894      </FIELD>
     1895      <FIELD name="rExpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1896        <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
     1897      </FIELD>
     1898      <FIELD name="rExpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     1899        <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
     1900      </FIELD>
     1901      <FIELD name="rExpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     1902        <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
     1903      </FIELD>
     1904      <FIELD name="rExpRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     1905        <DESCRIPTION>RA of Exponential fit</DESCRIPTION>
     1906      </FIELD>
     1907      <FIELD name="rExpDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     1908        <DESCRIPTION>DEC of Exponential fit</DESCRIPTION>
     1909      </FIELD>
     1910      <FIELD name="rExpRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1911        <DESCRIPTION>estimated error in ExpRa</DESCRIPTION>
     1912      </FIELD>
     1913      <FIELD name="rExpDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1914        <DESCRIPTION>estimated error in ExpDec</DESCRIPTION>
     1915      </FIELD>
     1916      <FIELD name="rExpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1917        <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
     1918      </FIELD>
     1919      <FIELD name="rExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1920        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
     1921      </FIELD>
     1922
     1923      <!-- i-band values -->
     1924      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1925        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     1926      </FIELD>
     1927      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1928        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1929      </FIELD>
     1930      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1931        <DESCRIPTION>stack identifier</DESCRIPTION>
     1932      </FIELD>
     1933      <FIELD name="iExpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1934        <DESCRIPTION>Exponential fit radius</DESCRIPTION>
     1935      </FIELD>
     1936      <FIELD name="iExpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1937        <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
     1938      </FIELD>
     1939      <FIELD name="iExpMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1940        <DESCRIPTION>Exponential fit mag</DESCRIPTION>
     1941      </FIELD>
     1942      <FIELD name="iExpMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1943        <DESCRIPTION>estimated error in ExpMag</DESCRIPTION>
     1944      </FIELD>
     1945      <FIELD name="iExpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1946        <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
     1947      </FIELD>
     1948      <FIELD name="iExpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1949        <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
     1950      </FIELD>
     1951      <FIELD name="iExpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     1952        <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
     1953      </FIELD>
     1954      <FIELD name="iExpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     1955        <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
     1956      </FIELD>
     1957      <FIELD name="iExpRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     1958        <DESCRIPTION>RA of Exponential fit</DESCRIPTION>
     1959      </FIELD>
     1960      <FIELD name="iExpDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     1961        <DESCRIPTION>DEC of Exponential fit</DESCRIPTION>
     1962      </FIELD>
     1963      <FIELD name="iExpRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1964        <DESCRIPTION>estimated error in ExpRa</DESCRIPTION>
     1965      </FIELD>
     1966      <FIELD name="iExpDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1967        <DESCRIPTION>estimated error in ExpDec</DESCRIPTION>
     1968      </FIELD>
     1969      <FIELD name="iExpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1970        <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
     1971      </FIELD>
     1972      <FIELD name="iExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1973        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
     1974      </FIELD>
     1975
     1976      <!-- z-band values -->
     1977      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1978        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     1979      </FIELD>
     1980      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1981        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     1982      </FIELD>
     1983      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     1984        <DESCRIPTION>stack identifier</DESCRIPTION>
     1985      </FIELD>
     1986      <FIELD name="zExpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1987        <DESCRIPTION>Exponential fit radius</DESCRIPTION>
     1988      </FIELD>
     1989      <FIELD name="zExpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     1990        <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
     1991      </FIELD>
     1992      <FIELD name="zExpMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1993        <DESCRIPTION>Exponential fit mag</DESCRIPTION>
     1994      </FIELD>
     1995      <FIELD name="zExpMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     1996        <DESCRIPTION>estimated error in ExpMag</DESCRIPTION>
     1997      </FIELD>
     1998      <FIELD name="zExpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     1999        <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
     2000      </FIELD>
     2001      <FIELD name="zExpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2002        <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
     2003      </FIELD>
     2004      <FIELD name="zExpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2005        <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
     2006      </FIELD>
     2007      <FIELD name="zExpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2008        <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
     2009      </FIELD>
     2010      <FIELD name="zExpRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2011        <DESCRIPTION>RA of Exponential fit</DESCRIPTION>
     2012      </FIELD>
     2013      <FIELD name="zExpDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2014        <DESCRIPTION>DEC of Exponential fit</DESCRIPTION>
     2015      </FIELD>
     2016      <FIELD name="zExpRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2017        <DESCRIPTION>estimated error in ExpRa</DESCRIPTION>
     2018      </FIELD>
     2019      <FIELD name="zExpDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2020        <DESCRIPTION>estimated error in ExpDec</DESCRIPTION>
     2021      </FIELD>
     2022      <FIELD name="zExpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2023        <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
     2024      </FIELD>
     2025      <FIELD name="zExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2026        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
     2027      </FIELD>
     2028
     2029      <!-- y-band values -->
     2030      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2031        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2032      </FIELD>
     2033      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2034        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2035      </FIELD>
     2036      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2037        <DESCRIPTION>stack identifier</DESCRIPTION>
     2038      </FIELD>
     2039      <FIELD name="yExpRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2040        <DESCRIPTION>Exponential fit radius</DESCRIPTION>
     2041      </FIELD>
     2042      <FIELD name="yExpRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2043        <DESCRIPTION>estimated error in Exponential fit radius</DESCRIPTION>
     2044      </FIELD>
     2045      <FIELD name="yExpMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2046        <DESCRIPTION>Exponential fit mag</DESCRIPTION>
     2047      </FIELD>
     2048      <FIELD name="yExpMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2049        <DESCRIPTION>estimated error in ExpMag</DESCRIPTION>
     2050      </FIELD>
     2051      <FIELD name="yExpAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2052        <DESCRIPTION>Exponential fit axis ratio</DESCRIPTION>
     2053      </FIELD>
     2054      <FIELD name="yExpAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2055        <DESCRIPTION>estimated error in Exponential fit axis ratio</DESCRIPTION>
     2056      </FIELD>
     2057      <FIELD name="yExpPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2058        <DESCRIPTION>estmated phi of Exponential axis</DESCRIPTION>
     2059      </FIELD>
     2060      <FIELD name="yExpPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2061        <DESCRIPTION>estmated error of phi of Exponential axis</DESCRIPTION>
     2062      </FIELD>
     2063      <FIELD name="yExpRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2064        <DESCRIPTION>RA of Exponential fit</DESCRIPTION>
     2065      </FIELD>
     2066      <FIELD name="yExpDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2067        <DESCRIPTION>DEC of Exponential fit</DESCRIPTION>
     2068      </FIELD>
     2069      <FIELD name="yExpRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2070        <DESCRIPTION>estimated error in ExpRa</DESCRIPTION>
     2071      </FIELD>
     2072      <FIELD name="yExpDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2073        <DESCRIPTION>estimated error in ExpDec</DESCRIPTION>
     2074      </FIELD>
     2075      <FIELD name="yExpCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2076        <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
     2077      </FIELD>
     2078      <FIELD name="yExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2079        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
     2080      </FIELD>
     2081
     2082      <DATA>
     2083        <TABLEDATA></TABLEDATA>
     2084      </DATA>
     2085    </TABLE>
     2086
     2087    <!-- StackModelFitDeV Table ************************************************** -->
     2088    <TABLE name="StackModelFitDeV">
     2089      <DESCRIPTION>VOTable description of PSPS table StackModelFitDeV</DESCRIPTION>
     2090      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     2091      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2092        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     2093      </FIELD>
     2094      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2095        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     2096      </FIELD>
     2097      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2098        <DESCRIPTION>random stack id</DESCRIPTION>
     2099      </FIELD>
     2100      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2101        <DESCRIPTION>identifies which of up to 5 possible stackdetections thisrow refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     2102      </FIELD>
     2103      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     2104        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     2105      </FIELD>
     2106      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     2107        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     2108      </FIELD>
     2109
     2110      <!-- g-band values -->
     2111      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2112        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2113      </FIELD>
     2114      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2115        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2116      </FIELD>
     2117      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2118        <DESCRIPTION>stack identifier</DESCRIPTION>
     2119      </FIELD>
     2120      <FIELD name="gDeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2121        <DESCRIPTION>DeVaucouleurs radius</DESCRIPTION>
     2122      </FIELD>
     2123      <FIELD name="gDeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2124        <DESCRIPTION>estimated error in DeVaucouleurs radius</DESCRIPTION>
     2125      </FIELD>
     2126      <FIELD name="gDeVMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2127        <DESCRIPTION>DeVaucouleurs magntiude</DESCRIPTION>
     2128      </FIELD>
     2129      <FIELD name="gDeVMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2130        <DESCRIPTION>estimated error in DeV_mag</DESCRIPTION>
     2131      </FIELD>
     2132      <FIELD name="gDeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2133        <DESCRIPTION>DeVaucoulerus axis ratio</DESCRIPTION>
     2134      </FIELD>
     2135      <FIELD name="gDeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2136        <DESCRIPTION>estimated error in DeVaucoulerus axis ratio</DESCRIPTION>
     2137      </FIELD>
     2138      <FIELD name="gDeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2139        <DESCRIPTION>estmated phi of DeVaucouleurs axis</DESCRIPTION>
     2140      </FIELD>
     2141      <FIELD name="gDeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2142        <DESCRIPTION>estmated error of phi of DeVaucouleurs axis</DESCRIPTION>
     2143      </FIELD>
     2144      <FIELD name="gDeVRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2145        <DESCRIPTION>RA of DeVaucouleurs fit</DESCRIPTION>
     2146      </FIELD>
     2147      <FIELD name="gDeVDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2148        <DESCRIPTION>DEC of DeVaucouleurs fit</DESCRIPTION>
     2149      </FIELD>
     2150      <FIELD name="gDeVRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2151        <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
     2152      </FIELD>
     2153      <FIELD name="gDeVDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2154        <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
     2155      </FIELD>
     2156      <FIELD name="gDeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2157        <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
     2158      </FIELD>
     2159      <FIELD name="gDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2160        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
     2161      </FIELD>
     2162
     2163      <!-- r-band values -->
     2164      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2165        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2166      </FIELD>
     2167      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2168        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2169      </FIELD>
     2170      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2171        <DESCRIPTION>stack identifier</DESCRIPTION>
     2172      </FIELD>
     2173      <FIELD name="rDeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2174        <DESCRIPTION>DeVaucouleurs radius</DESCRIPTION>
     2175      </FIELD>
     2176      <FIELD name="rDeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2177        <DESCRIPTION>estimated error in DeVaucouleurs radius</DESCRIPTION>
     2178      </FIELD>
     2179      <FIELD name="rDeVMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2180        <DESCRIPTION>DeVaucouleurs magntiude</DESCRIPTION>
     2181      </FIELD>
     2182      <FIELD name="rDeVMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2183        <DESCRIPTION>estimated error in DeV_mag</DESCRIPTION>
     2184      </FIELD>
     2185      <FIELD name="rDeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2186        <DESCRIPTION>DeVaucoulerus axis ratio</DESCRIPTION>
     2187      </FIELD>
     2188      <FIELD name="rDeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2189        <DESCRIPTION>estimated error in DeVaucoulerus axis ratio</DESCRIPTION>
     2190      </FIELD>
     2191      <FIELD name="rDeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2192        <DESCRIPTION>estmated phi of DeVaucouleurs axis</DESCRIPTION>
     2193      </FIELD>
     2194      <FIELD name="rDeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2195        <DESCRIPTION>estmated error of phi of DeVaucouleurs axis</DESCRIPTION>
     2196      </FIELD>
     2197      <FIELD name="rDeVRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2198        <DESCRIPTION>RA of DeVaucouleurs fit</DESCRIPTION>
     2199      </FIELD>
     2200      <FIELD name="rDeVDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2201        <DESCRIPTION>DEC of DeVaucouleurs fit</DESCRIPTION>
     2202      </FIELD>
     2203      <FIELD name="rDeVRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2204        <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
     2205      </FIELD>
     2206      <FIELD name="rDeVDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2207        <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
     2208      </FIELD>
     2209      <FIELD name="rDeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2210        <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
     2211      </FIELD>
     2212      <FIELD name="rDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2213        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
     2214      </FIELD>
     2215
     2216      <!-- i-band values -->
     2217      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2218        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2219      </FIELD>
     2220      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2221        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2222      </FIELD>
     2223      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2224        <DESCRIPTION>stack identifier</DESCRIPTION>
     2225      </FIELD>
     2226      <FIELD name="iDeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2227        <DESCRIPTION>DeVaucouleurs radius</DESCRIPTION>
     2228      </FIELD>
     2229      <FIELD name="iDeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2230        <DESCRIPTION>estimated error in DeVaucouleurs radius</DESCRIPTION>
     2231      </FIELD>
     2232      <FIELD name="iDeVMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2233        <DESCRIPTION>DeVaucouleurs magntiude</DESCRIPTION>
     2234      </FIELD>
     2235      <FIELD name="iDeVMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2236        <DESCRIPTION>estimated error in DeV_mag</DESCRIPTION>
     2237      </FIELD>
     2238      <FIELD name="iDeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2239        <DESCRIPTION>DeVaucoulerus axis ratio</DESCRIPTION>
     2240      </FIELD>
     2241      <FIELD name="iDeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2242        <DESCRIPTION>estimated error in DeVaucoulerus axis ratio</DESCRIPTION>
     2243      </FIELD>
     2244      <FIELD name="iDeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2245        <DESCRIPTION>estmated phi of DeVaucouleurs axis</DESCRIPTION>
     2246      </FIELD>
     2247      <FIELD name="iDeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2248        <DESCRIPTION>estmated error of phi of DeVaucouleurs axis</DESCRIPTION>
     2249      </FIELD>
     2250      <FIELD name="iDeVRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2251        <DESCRIPTION>RA of DeVaucouleurs fit</DESCRIPTION>
     2252      </FIELD>
     2253      <FIELD name="iDeVDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2254        <DESCRIPTION>DEC of DeVaucouleurs fit</DESCRIPTION>
     2255      </FIELD>
     2256      <FIELD name="iDeVRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2257        <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
     2258      </FIELD>
     2259      <FIELD name="iDeVDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2260        <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
     2261      </FIELD>
     2262      <FIELD name="iDeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2263        <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
     2264      </FIELD>
     2265      <FIELD name="iDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2266        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
     2267      </FIELD>
     2268
     2269      <!-- z-band values -->
     2270      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2271        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2272      </FIELD>
     2273      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2274        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2275      </FIELD>
     2276      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2277        <DESCRIPTION>stack identifier</DESCRIPTION>
     2278      </FIELD>
     2279      <FIELD name="zDeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2280        <DESCRIPTION>DeVaucouleurs radius</DESCRIPTION>
     2281      </FIELD>
     2282      <FIELD name="zDeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2283        <DESCRIPTION>estimated error in DeVaucouleurs radius</DESCRIPTION>
     2284      </FIELD>
     2285      <FIELD name="zDeVMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2286        <DESCRIPTION>DeVaucouleurs magntiude</DESCRIPTION>
     2287      </FIELD>
     2288      <FIELD name="zDeVMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2289        <DESCRIPTION>estimated error in DeV_mag</DESCRIPTION>
     2290      </FIELD>
     2291      <FIELD name="zDeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2292        <DESCRIPTION>DeVaucoulerus axis ratio</DESCRIPTION>
     2293      </FIELD>
     2294      <FIELD name="zDeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2295        <DESCRIPTION>estimated error in DeVaucoulerus axis ratio</DESCRIPTION>
     2296      </FIELD>
     2297      <FIELD name="zDeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2298        <DESCRIPTION>estmated phi of DeVaucouleurs axis</DESCRIPTION>
     2299      </FIELD>
     2300      <FIELD name="zDeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2301        <DESCRIPTION>estmated error of phi of DeVaucouleurs axis</DESCRIPTION>
     2302      </FIELD>
     2303      <FIELD name="zDeVRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2304        <DESCRIPTION>RA of DeVaucouleurs fit</DESCRIPTION>
     2305      </FIELD>
     2306      <FIELD name="zDeVDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2307        <DESCRIPTION>DEC of DeVaucouleurs fit</DESCRIPTION>
     2308      </FIELD>
     2309      <FIELD name="zDeVRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2310        <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
     2311      </FIELD>
     2312      <FIELD name="zDeVDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2313        <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
     2314      </FIELD>
     2315      <FIELD name="zDeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2316        <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
     2317      </FIELD>
     2318      <FIELD name="zDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2319        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
     2320      </FIELD>
     2321
     2322      <!-- y-band values -->
     2323      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2324        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2325      </FIELD>
     2326      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2327        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2328      </FIELD>
     2329      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2330        <DESCRIPTION>stack identifier</DESCRIPTION>
     2331      </FIELD>
     2332      <FIELD name="yDeVRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2333        <DESCRIPTION>DeVaucouleurs radius</DESCRIPTION>
     2334      </FIELD>
     2335      <FIELD name="yDeVRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2336        <DESCRIPTION>estimated error in DeVaucouleurs radius</DESCRIPTION>
     2337      </FIELD>
     2338      <FIELD name="yDeVMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2339        <DESCRIPTION>DeVaucouleurs magntiude</DESCRIPTION>
     2340      </FIELD>
     2341      <FIELD name="yDeVMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2342        <DESCRIPTION>estimated error in DeV_mag</DESCRIPTION>
     2343      </FIELD>
     2344      <FIELD name="yDeVAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2345        <DESCRIPTION>DeVaucoulerus axis ratio</DESCRIPTION>
     2346      </FIELD>
     2347      <FIELD name="yDeVAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2348        <DESCRIPTION>estimated error in DeVaucoulerus axis ratio</DESCRIPTION>
     2349      </FIELD>
     2350      <FIELD name="yDeVPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2351        <DESCRIPTION>estmated phi of DeVaucouleurs axis</DESCRIPTION>
     2352      </FIELD>
     2353      <FIELD name="yDeVPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2354        <DESCRIPTION>estmated error of phi of DeVaucouleurs axis</DESCRIPTION>
     2355      </FIELD>
     2356      <FIELD name="yDeVRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2357        <DESCRIPTION>RA of DeVaucouleurs fit</DESCRIPTION>
     2358      </FIELD>
     2359      <FIELD name="yDeVDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2360        <DESCRIPTION>DEC of DeVaucouleurs fit</DESCRIPTION>
     2361      </FIELD>
     2362      <FIELD name="yDeVRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2363        <DESCRIPTION>estimated error in ra offset</DESCRIPTION>
     2364      </FIELD>
     2365      <FIELD name="yDeVDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2366        <DESCRIPTION>estimated error in dec offset</DESCRIPTION>
     2367      </FIELD>
     2368      <FIELD name="yDeVCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2369        <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
     2370      </FIELD>
     2371      <FIELD name="yDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2372        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
     2373      </FIELD>
     2374
     2375      <DATA>
     2376        <TABLEDATA></TABLEDATA>
     2377      </DATA>
     2378    </TABLE>
     2379
     2380    <!-- StackModelFitSer Table ************************************************** -->
     2381    <TABLE name="StackModelFitSer">
     2382      <DESCRIPTION>VOTable description of PSPS table StackModelFitSer</DESCRIPTION>
     2383      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     2384      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2385        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     2386      </FIELD>
     2387      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2388        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     2389      </FIELD>
     2390      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2391        <DESCRIPTION>random stack id</DESCRIPTION>
     2392      </FIELD>
     2393      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2394        <DESCRIPTION>identifies which of up to 5 possible stackdetections thisrow refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     2395      </FIELD>
     2396      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     2397        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     2398      </FIELD>
     2399      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     2400        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     2401      </FIELD>
     2402
     2403      <!-- g-band values -->
     2404      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2405        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2406      </FIELD>
     2407      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2408        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2409      </FIELD>
     2410      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2411        <DESCRIPTION>stack identifier</DESCRIPTION>
     2412      </FIELD>
     2413      <FIELD name="gSerRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2414        <DESCRIPTION>Sersic radius</DESCRIPTION>
     2415      </FIELD>
     2416      <FIELD name="gSerRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2417        <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
     2418      </FIELD>
     2419      <FIELD name="gSerMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2420        <DESCRIPTION>Sersic Mag</DESCRIPTION>
     2421      </FIELD>
     2422      <FIELD name="gSerMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2423        <DESCRIPTION>estimated error in SerMag</DESCRIPTION>
     2424      </FIELD>
     2425      <FIELD name="gSerAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2426        <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
     2427      </FIELD>
     2428      <FIELD name="gSerAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2429        <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
     2430      </FIELD>
     2431      <FIELD name="gSerNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2432        <DESCRIPTION>Sersic index</DESCRIPTION>
     2433      </FIELD>
     2434      <FIELD name="gSerNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2435        <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
     2436      </FIELD>
     2437      <FIELD name="gSerPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2438        <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
     2439      </FIELD>
     2440      <FIELD name="gSerPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2441        <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
     2442      </FIELD>
     2443      <FIELD name="gSerRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2444        <DESCRIPTION>RA of Sersic fit</DESCRIPTION>
     2445      </FIELD>
     2446      <FIELD name="gSerDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2447        <DESCRIPTION>DEC of Sersic fit</DESCRIPTION>
     2448      </FIELD>
     2449      <FIELD name="gSerRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2450        <DESCRIPTION>estimated error in SerRa</DESCRIPTION>
     2451      </FIELD>
     2452      <FIELD name="gSerDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2453        <DESCRIPTION>estimated error in SerDec</DESCRIPTION>
     2454      </FIELD>
     2455      <FIELD name="gSerCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2456        <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
     2457      </FIELD>
     2458      <FIELD name="gSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2459        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
     2460      </FIELD>
     2461
     2462      <!-- r-band values -->
     2463      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2464        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2465      </FIELD>
     2466      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2467        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2468      </FIELD>
     2469      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2470        <DESCRIPTION>stack identifier</DESCRIPTION>
     2471      </FIELD>
     2472      <FIELD name="rSerRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2473        <DESCRIPTION>Sersic radius</DESCRIPTION>
     2474      </FIELD>
     2475      <FIELD name="rSerRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2476        <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
     2477      </FIELD>
     2478      <FIELD name="rSerMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2479        <DESCRIPTION>Sersic Mag</DESCRIPTION>
     2480      </FIELD>
     2481      <FIELD name="rSerMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2482        <DESCRIPTION>estimated error in SerMag</DESCRIPTION>
     2483      </FIELD>
     2484      <FIELD name="rSerAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2485        <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
     2486      </FIELD>
     2487      <FIELD name="rSerAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2488        <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
     2489      </FIELD>
     2490      <FIELD name="rSerNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2491        <DESCRIPTION>Sersic index</DESCRIPTION>
     2492      </FIELD>
     2493      <FIELD name="rSerNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2494        <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
     2495      </FIELD>
     2496      <FIELD name="rSerPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2497        <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
     2498      </FIELD>
     2499      <FIELD name="rSerPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2500        <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
     2501      </FIELD>
     2502      <FIELD name="rSerRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2503        <DESCRIPTION>RA of Sersic fit</DESCRIPTION>
     2504      </FIELD>
     2505      <FIELD name="rSerDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2506        <DESCRIPTION>DEC of Sersic fit</DESCRIPTION>
     2507      </FIELD>
     2508      <FIELD name="rSerRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2509        <DESCRIPTION>estimated error in SerRa</DESCRIPTION>
     2510      </FIELD>
     2511      <FIELD name="rSerDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2512        <DESCRIPTION>estimated error in SerDec</DESCRIPTION>
     2513      </FIELD>
     2514      <FIELD name="rSerCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2515        <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
     2516      </FIELD>
     2517      <FIELD name="rSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2518        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
     2519      </FIELD>
     2520
     2521      <!-- i-band values -->
     2522      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2523        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2524      </FIELD>
     2525      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2526        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2527      </FIELD>
     2528      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2529        <DESCRIPTION>stack identifier</DESCRIPTION>
     2530      </FIELD>
     2531      <FIELD name="iSerRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2532        <DESCRIPTION>Sersic radius</DESCRIPTION>
     2533      </FIELD>
     2534      <FIELD name="iSerRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2535        <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
     2536      </FIELD>
     2537      <FIELD name="iSerMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2538        <DESCRIPTION>Sersic Mag</DESCRIPTION>
     2539      </FIELD>
     2540      <FIELD name="iSerMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2541        <DESCRIPTION>estimated error in SerMag</DESCRIPTION>
     2542      </FIELD>
     2543      <FIELD name="iSerAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2544        <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
     2545      </FIELD>
     2546      <FIELD name="iSerAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2547        <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
     2548      </FIELD>
     2549      <FIELD name="iSerNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2550        <DESCRIPTION>Sersic index</DESCRIPTION>
     2551      </FIELD>
     2552      <FIELD name="iSerNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2553        <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
     2554      </FIELD>
     2555      <FIELD name="iSerPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2556        <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
     2557      </FIELD>
     2558      <FIELD name="iSerPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2559        <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
     2560      </FIELD>
     2561      <FIELD name="iSerRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2562        <DESCRIPTION>RA of Sersic fit</DESCRIPTION>
     2563      </FIELD>
     2564      <FIELD name="iSerDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2565        <DESCRIPTION>DEC of Sersic fit</DESCRIPTION>
     2566      </FIELD>
     2567      <FIELD name="iSerRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2568        <DESCRIPTION>estimated error in SerRa</DESCRIPTION>
     2569      </FIELD>
     2570      <FIELD name="iSerDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2571        <DESCRIPTION>estimated error in SerDec</DESCRIPTION>
     2572      </FIELD>
     2573      <FIELD name="iSerCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2574        <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
     2575      </FIELD>
     2576      <FIELD name="iSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2577        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
     2578      </FIELD>
     2579
     2580      <!-- z-band values -->
     2581      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2582        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2583      </FIELD>
     2584      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2585        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2586      </FIELD>
     2587      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2588        <DESCRIPTION>stack identifier</DESCRIPTION>
     2589      </FIELD>
     2590      <FIELD name="zSerRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2591        <DESCRIPTION>Sersic radius</DESCRIPTION>
     2592      </FIELD>
     2593      <FIELD name="zSerRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2594        <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
     2595      </FIELD>
     2596      <FIELD name="zSerMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2597        <DESCRIPTION>Sersic Mag</DESCRIPTION>
     2598      </FIELD>
     2599      <FIELD name="zSerMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2600        <DESCRIPTION>estimated error in SerMag</DESCRIPTION>
     2601      </FIELD>
     2602      <FIELD name="zSerAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2603        <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
     2604      </FIELD>
     2605      <FIELD name="zSerAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2606        <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
     2607      </FIELD>
     2608      <FIELD name="zSerNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2609        <DESCRIPTION>Sersic index</DESCRIPTION>
     2610      </FIELD>
     2611      <FIELD name="zSerNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2612        <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
     2613      </FIELD>
     2614      <FIELD name="zSerPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2615        <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
     2616      </FIELD>
     2617      <FIELD name="zSerPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2618        <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
     2619      </FIELD>
     2620      <FIELD name="zSerRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2621        <DESCRIPTION>RA of Sersic fit</DESCRIPTION>
     2622      </FIELD>
     2623      <FIELD name="zSerDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2624        <DESCRIPTION>DEC of Sersic fit</DESCRIPTION>
     2625      </FIELD>
     2626      <FIELD name="zSerRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2627        <DESCRIPTION>estimated error in SerRa</DESCRIPTION>
     2628      </FIELD>
     2629      <FIELD name="zSerDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2630        <DESCRIPTION>estimated error in SerDec</DESCRIPTION>
     2631      </FIELD>
     2632      <FIELD name="zSerCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2633        <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
     2634      </FIELD>
     2635      <FIELD name="zSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2636        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
     2637      </FIELD>
     2638
     2639      <!-- y-band values -->
     2640      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2641        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2642      </FIELD>
     2643      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2644        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2645      </FIELD>
     2646      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2647        <DESCRIPTION>stack identifier</DESCRIPTION>
     2648      </FIELD>
     2649      <FIELD name="ySerRadius" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2650        <DESCRIPTION>Sersic radius</DESCRIPTION>
     2651      </FIELD>
     2652      <FIELD name="ySerRadiusErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2653        <DESCRIPTION>estimated error in Sersic radius</DESCRIPTION>
     2654      </FIELD>
     2655      <FIELD name="ySerMag" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2656        <DESCRIPTION>Sersic Mag</DESCRIPTION>
     2657      </FIELD>
     2658      <FIELD name="ySerMagErr" arraysize="1" datatype="float" unit="AB_mag" default="-999">
     2659        <DESCRIPTION>estimated error in SerMag</DESCRIPTION>
     2660      </FIELD>
     2661      <FIELD name="ySerAb" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2662        <DESCRIPTION>Sersic axis ratio</DESCRIPTION>
     2663      </FIELD>
     2664      <FIELD name="ySerAbErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2665        <DESCRIPTION>estimated error in Sersic axis ratio</DESCRIPTION>
     2666      </FIELD>
     2667      <FIELD name="ySerNu" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2668        <DESCRIPTION>Sersic index</DESCRIPTION>
     2669      </FIELD>
     2670      <FIELD name="ySerNuErr" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2671        <DESCRIPTION>estimated error in Sersic index</DESCRIPTION>
     2672      </FIELD>
     2673      <FIELD name="ySerPhi" arraysize="1" datatype="float" unit="degrees" default="-999">
     2674        <DESCRIPTION>estmated phi of Sersic axis</DESCRIPTION>
     2675      </FIELD>
     2676      <FIELD name="ySerPhiErr" arraysize="1" datatype="float" unit="degrees" default="-999">
     2677        <DESCRIPTION>estmated error of phi of Sersic axis</DESCRIPTION>
     2678      </FIELD>
     2679      <FIELD name="ySerRa" arraysize="1" datatype="double" unit="degrees" default="-999">
     2680        <DESCRIPTION>RA of Sersic fit</DESCRIPTION>
     2681      </FIELD>
     2682      <FIELD name="ySerDec" arraysize="1" datatype="double" unit="degrees" default="-999">
     2683        <DESCRIPTION>DEC of Sersic fit</DESCRIPTION>
     2684      </FIELD>
     2685      <FIELD name="ySerRaErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2686        <DESCRIPTION>estimated error in SerRa</DESCRIPTION>
     2687      </FIELD>
     2688      <FIELD name="ySerDecErr" arraysize="1" datatype="float" unit="arcsec" default="-999">
     2689        <DESCRIPTION>estimated error in SerDec</DESCRIPTION>
     2690      </FIELD>
     2691      <FIELD name="ySerCf" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2692        <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
     2693      </FIELD>
     2694      <FIELD name="ySerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2695        <DESCRIPTION>Sersic fit chi square</DESCRIPTION>
     2696      </FIELD>
     2697
     2698      <DATA>
     2699        <TABLEDATA></TABLEDATA>
     2700      </DATA>
     2701    </TABLE>
     2702
     2703    <!-- StackApFlxFull Table ************************************************** -->
     2704    <TABLE name="StackApFlxFull">
     2705      <DESCRIPTION>VOTable description of PSPS table StackApFlxFull</DESCRIPTION>
     2706      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     2707      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2708        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     2709      </FIELD>
     2710      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2711        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     2712      </FIELD>
     2713      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2714        <DESCRIPTION>random stack id</DESCRIPTION>
     2715      </FIELD>
     2716      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2717        <DESCRIPTION>identifies which of up to 5 possible stackdetections thisrow refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     2718      </FIELD>
     2719      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     2720        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     2721      </FIELD>
     2722      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     2723        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     2724      </FIELD>
     2725
     2726      <!-- g-band values -->
     2727      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2728        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2729      </FIELD>
     2730      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2731        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2732      </FIELD>
     2733      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2734        <DESCRIPTION>stack identifier</DESCRIPTION>
     2735      </FIELD>
     2736      <FIELD name="gflxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     2737        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     2738      </FIELD>
     2739      <FIELD name="gflxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2740        <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
     2741      </FIELD>
     2742      <FIELD name="gflxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2743        <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
     2744      </FIELD>
     2745      <FIELD name="gflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2746        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     2747      </FIELD>
     2748      <FIELD name="gflxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     2749        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     2750      </FIELD>
     2751      <FIELD name="gflxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2752        <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
     2753      </FIELD>
     2754      <FIELD name="gflxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2755        <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
     2756      </FIELD>
     2757      <FIELD name="gflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2758        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     2759      </FIELD>
     2760      <FIELD name="gflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     2761        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     2762      </FIELD>
     2763      <FIELD name="gflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2764        <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
     2765      </FIELD>
     2766      <FIELD name="gflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2767        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
     2768      </FIELD>
     2769      <FIELD name="gflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2770        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     2771      </FIELD>
     2772      <FIELD name="gflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     2773        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     2774      </FIELD>
     2775      <FIELD name="gflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2776        <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
     2777      </FIELD>
     2778      <FIELD name="gflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2779        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
     2780      </FIELD>
     2781      <FIELD name="gflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2782        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     2783      </FIELD>
     2784      <FIELD name="gflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     2785        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     2786      </FIELD>
     2787      <FIELD name="gflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2788        <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
     2789      </FIELD>
     2790      <FIELD name="gflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2791        <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
     2792      </FIELD>
     2793      <FIELD name="gflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2794        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     2795      </FIELD>
     2796      <FIELD name="gflxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     2797        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     2798      </FIELD>
     2799      <FIELD name="gflxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2800        <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
     2801      </FIELD>
     2802      <FIELD name="gflxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2803        <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
     2804      </FIELD>
     2805      <FIELD name="gflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2806        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     2807      </FIELD>
     2808      <FIELD name="gflxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     2809        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     2810      </FIELD>
     2811      <FIELD name="gflxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2812        <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
     2813      </FIELD>
     2814      <FIELD name="gflxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2815        <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
     2816      </FIELD>
     2817      <FIELD name="gflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2818        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     2819      </FIELD>
     2820      <FIELD name="gflxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     2821        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     2822      </FIELD>
     2823      <FIELD name="gflxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2824        <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
     2825      </FIELD>
     2826      <FIELD name="gflxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2827        <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
     2828      </FIELD>
     2829      <FIELD name="gflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2830        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     2831      </FIELD>
     2832      <FIELD name="gflxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     2833        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     2834      </FIELD>
     2835      <FIELD name="gflxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2836        <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
     2837      </FIELD>
     2838      <FIELD name="gflxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2839        <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
     2840      </FIELD>
     2841      <FIELD name="gflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2842        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     2843      </FIELD>
     2844      <FIELD name="gflxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     2845        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     2846      </FIELD>
     2847      <FIELD name="gflxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2848        <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
     2849      </FIELD>
     2850      <FIELD name="gflxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2851        <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
     2852      </FIELD>
     2853      <FIELD name="gflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2854        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     2855      </FIELD>
     2856
     2857      <!-- r-band values -->
     2858      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2859        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2860      </FIELD>
     2861      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2862        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2863      </FIELD>
     2864      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2865        <DESCRIPTION>stack identifier</DESCRIPTION>
     2866      </FIELD>
     2867      <FIELD name="rflxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     2868        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     2869      </FIELD>
     2870      <FIELD name="rflxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2871        <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
     2872      </FIELD>
     2873      <FIELD name="rflxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2874        <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
     2875      </FIELD>
     2876      <FIELD name="rflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2877        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     2878      </FIELD>
     2879      <FIELD name="rflxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     2880        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     2881      </FIELD>
     2882      <FIELD name="rflxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2883        <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
     2884      </FIELD>
     2885      <FIELD name="rflxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2886        <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
     2887      </FIELD>
     2888      <FIELD name="rflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2889        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     2890      </FIELD>
     2891      <FIELD name="rflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     2892        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     2893      </FIELD>
     2894      <FIELD name="rflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2895        <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
     2896      </FIELD>
     2897      <FIELD name="rflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2898        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
     2899      </FIELD>
     2900      <FIELD name="rflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2901        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     2902      </FIELD>
     2903      <FIELD name="rflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     2904        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     2905      </FIELD>
     2906      <FIELD name="rflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2907        <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
     2908      </FIELD>
     2909      <FIELD name="rflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2910        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
     2911      </FIELD>
     2912      <FIELD name="rflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2913        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     2914      </FIELD>
     2915      <FIELD name="rflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     2916        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     2917      </FIELD>
     2918      <FIELD name="rflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2919        <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
     2920      </FIELD>
     2921      <FIELD name="rflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2922        <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
     2923      </FIELD>
     2924      <FIELD name="rflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2925        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     2926      </FIELD>
     2927      <FIELD name="rflxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     2928        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     2929      </FIELD>
     2930      <FIELD name="rflxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2931        <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
     2932      </FIELD>
     2933      <FIELD name="rflxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2934        <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
     2935      </FIELD>
     2936      <FIELD name="rflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2937        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     2938      </FIELD>
     2939      <FIELD name="rflxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     2940        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     2941      </FIELD>
     2942      <FIELD name="rflxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2943        <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
     2944      </FIELD>
     2945      <FIELD name="rflxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2946        <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
     2947      </FIELD>
     2948      <FIELD name="rflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2949        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     2950      </FIELD>
     2951      <FIELD name="rflxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     2952        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     2953      </FIELD>
     2954      <FIELD name="rflxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2955        <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
     2956      </FIELD>
     2957      <FIELD name="rflxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2958        <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
     2959      </FIELD>
     2960      <FIELD name="rflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2961        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     2962      </FIELD>
     2963      <FIELD name="rflxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     2964        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     2965      </FIELD>
     2966      <FIELD name="rflxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2967        <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
     2968      </FIELD>
     2969      <FIELD name="rflxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2970        <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
     2971      </FIELD>
     2972      <FIELD name="rflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2973        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     2974      </FIELD>
     2975      <FIELD name="rflxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     2976        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     2977      </FIELD>
     2978      <FIELD name="rflxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     2979        <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
     2980      </FIELD>
     2981      <FIELD name="rflxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     2982        <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
     2983      </FIELD>
     2984      <FIELD name="rflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     2985        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     2986      </FIELD>
     2987
     2988      <!-- i-band values -->
     2989      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2990        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     2991      </FIELD>
     2992      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2993        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     2994      </FIELD>
     2995      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     2996        <DESCRIPTION>stack identifier</DESCRIPTION>
     2997      </FIELD>
     2998      <FIELD name="iflxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     2999        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3000      </FIELD>
     3001      <FIELD name="iflxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3002        <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
     3003      </FIELD>
     3004      <FIELD name="iflxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3005        <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
     3006      </FIELD>
     3007      <FIELD name="iflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3008        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3009      </FIELD>
     3010      <FIELD name="iflxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3011        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3012      </FIELD>
     3013      <FIELD name="iflxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3014        <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
     3015      </FIELD>
     3016      <FIELD name="iflxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3017        <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
     3018      </FIELD>
     3019      <FIELD name="iflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3020        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3021      </FIELD>
     3022      <FIELD name="iflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3023        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3024      </FIELD>
     3025      <FIELD name="iflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3026        <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
     3027      </FIELD>
     3028      <FIELD name="iflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3029        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
     3030      </FIELD>
     3031      <FIELD name="iflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3032        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3033      </FIELD>
     3034      <FIELD name="iflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3035        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3036      </FIELD>
     3037      <FIELD name="iflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3038        <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
     3039      </FIELD>
     3040      <FIELD name="iflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3041        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
     3042      </FIELD>
     3043      <FIELD name="iflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3044        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3045      </FIELD>
     3046      <FIELD name="iflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3047        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3048      </FIELD>
     3049      <FIELD name="iflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3050        <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
     3051      </FIELD>
     3052      <FIELD name="iflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3053        <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
     3054      </FIELD>
     3055      <FIELD name="iflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3056        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     3057      </FIELD>
     3058      <FIELD name="iflxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     3059        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     3060      </FIELD>
     3061      <FIELD name="iflxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3062        <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
     3063      </FIELD>
     3064      <FIELD name="iflxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3065        <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
     3066      </FIELD>
     3067      <FIELD name="iflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3068        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     3069      </FIELD>
     3070      <FIELD name="iflxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     3071        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     3072      </FIELD>
     3073      <FIELD name="iflxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3074        <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
     3075      </FIELD>
     3076      <FIELD name="iflxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3077        <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
     3078      </FIELD>
     3079      <FIELD name="iflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3080        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     3081      </FIELD>
     3082      <FIELD name="iflxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     3083        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     3084      </FIELD>
     3085      <FIELD name="iflxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3086        <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
     3087      </FIELD>
     3088      <FIELD name="iflxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3089        <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
     3090      </FIELD>
     3091      <FIELD name="iflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3092        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     3093      </FIELD>
     3094      <FIELD name="iflxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     3095        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     3096      </FIELD>
     3097      <FIELD name="iflxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3098        <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
     3099      </FIELD>
     3100      <FIELD name="iflxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3101        <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
     3102      </FIELD>
     3103      <FIELD name="iflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3104        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     3105      </FIELD>
     3106      <FIELD name="iflxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     3107        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     3108      </FIELD>
     3109      <FIELD name="iflxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3110        <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
     3111      </FIELD>
     3112      <FIELD name="iflxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3113        <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
     3114      </FIELD>
     3115      <FIELD name="iflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3116        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     3117      </FIELD>
     3118
     3119      <!-- z-band values -->
     3120      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3121        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     3122      </FIELD>
     3123      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3124        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     3125      </FIELD>
     3126      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3127        <DESCRIPTION>stack identifier</DESCRIPTION>
     3128      </FIELD>
     3129      <FIELD name="zflxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     3130        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3131      </FIELD>
     3132      <FIELD name="zflxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3133        <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
     3134      </FIELD>
     3135      <FIELD name="zflxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3136        <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
     3137      </FIELD>
     3138      <FIELD name="zflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3139        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3140      </FIELD>
     3141      <FIELD name="zflxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3142        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3143      </FIELD>
     3144      <FIELD name="zflxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3145        <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
     3146      </FIELD>
     3147      <FIELD name="zflxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3148        <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
     3149      </FIELD>
     3150      <FIELD name="zflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3151        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3152      </FIELD>
     3153      <FIELD name="zflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3154        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3155      </FIELD>
     3156      <FIELD name="zflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3157        <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
     3158      </FIELD>
     3159      <FIELD name="zflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3160        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
     3161      </FIELD>
     3162      <FIELD name="zflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3163        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3164      </FIELD>
     3165      <FIELD name="zflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3166        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3167      </FIELD>
     3168      <FIELD name="zflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3169        <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
     3170      </FIELD>
     3171      <FIELD name="zflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3172        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
     3173      </FIELD>
     3174      <FIELD name="zflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3175        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3176      </FIELD>
     3177      <FIELD name="zflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3178        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3179      </FIELD>
     3180      <FIELD name="zflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3181        <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
     3182      </FIELD>
     3183      <FIELD name="zflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3184        <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
     3185      </FIELD>
     3186      <FIELD name="zflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3187        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     3188      </FIELD>
     3189      <FIELD name="zflxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     3190        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     3191      </FIELD>
     3192      <FIELD name="zflxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3193        <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
     3194      </FIELD>
     3195      <FIELD name="zflxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3196        <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
     3197      </FIELD>
     3198      <FIELD name="zflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3199        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     3200      </FIELD>
     3201      <FIELD name="zflxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     3202        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     3203      </FIELD>
     3204      <FIELD name="zflxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3205        <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
     3206      </FIELD>
     3207      <FIELD name="zflxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3208        <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
     3209      </FIELD>
     3210      <FIELD name="zflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3211        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     3212      </FIELD>
     3213      <FIELD name="zflxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     3214        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     3215      </FIELD>
     3216      <FIELD name="zflxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3217        <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
     3218      </FIELD>
     3219      <FIELD name="zflxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3220        <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
     3221      </FIELD>
     3222      <FIELD name="zflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3223        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     3224      </FIELD>
     3225      <FIELD name="zflxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     3226        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     3227      </FIELD>
     3228      <FIELD name="zflxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3229        <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
     3230      </FIELD>
     3231      <FIELD name="zflxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3232        <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
     3233      </FIELD>
     3234      <FIELD name="zflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3235        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     3236      </FIELD>
     3237      <FIELD name="zflxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     3238        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     3239      </FIELD>
     3240      <FIELD name="zflxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3241        <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
     3242      </FIELD>
     3243      <FIELD name="zflxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3244        <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
     3245      </FIELD>
     3246      <FIELD name="zflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3247        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     3248      </FIELD>
     3249
     3250      <!-- y-band values -->
     3251      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3252        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     3253      </FIELD>
     3254      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3255        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     3256      </FIELD>
     3257      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3258        <DESCRIPTION>stack identifier</DESCRIPTION>
     3259      </FIELD>
     3260      <FIELD name="yflxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     3261        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3262      </FIELD>
     3263      <FIELD name="yflxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3264        <DESCRIPTION>estimated error is flxR1</DESCRIPTION>
     3265      </FIELD>
     3266      <FIELD name="yflxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3267        <DESCRIPTION>estimated standard deviation in flxR1</DESCRIPTION>
     3268      </FIELD>
     3269      <FIELD name="yflxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3270        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3271      </FIELD>
     3272      <FIELD name="yflxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3273        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3274      </FIELD>
     3275      <FIELD name="yflxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3276        <DESCRIPTION>estimated error is flxR2</DESCRIPTION>
     3277      </FIELD>
     3278      <FIELD name="yflxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3279        <DESCRIPTION>estimated standard deviation in flxR2</DESCRIPTION>
     3280      </FIELD>
     3281      <FIELD name="yflxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3282        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3283      </FIELD>
     3284      <FIELD name="yflxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3285        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3286      </FIELD>
     3287      <FIELD name="yflxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3288        <DESCRIPTION>estimated error is flxR3</DESCRIPTION>
     3289      </FIELD>
     3290      <FIELD name="yflxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3291        <DESCRIPTION>estimated standard deviation in flxR3</DESCRIPTION>
     3292      </FIELD>
     3293      <FIELD name="yflxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3294        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3295      </FIELD>
     3296      <FIELD name="yflxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3297        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3298      </FIELD>
     3299      <FIELD name="yflxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3300        <DESCRIPTION>estimated error is flxR4</DESCRIPTION>
     3301      </FIELD>
     3302      <FIELD name="yflxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3303        <DESCRIPTION>estimated standard deviation in flxR4</DESCRIPTION>
     3304      </FIELD>
     3305      <FIELD name="yflxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3306        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3307      </FIELD>
     3308      <FIELD name="yflxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3309        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3310      </FIELD>
     3311      <FIELD name="yflxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3312        <DESCRIPTION>estimated error is flxR5</DESCRIPTION>
     3313      </FIELD>
     3314      <FIELD name="yflxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3315        <DESCRIPTION>estimated standard deviation in flxR5</DESCRIPTION>
     3316      </FIELD>
     3317      <FIELD name="yflxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3318        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     3319      </FIELD>
     3320      <FIELD name="yflxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     3321        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     3322      </FIELD>
     3323      <FIELD name="yflxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3324        <DESCRIPTION>estimated error is flxR6</DESCRIPTION>
     3325      </FIELD>
     3326      <FIELD name="yflxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3327        <DESCRIPTION>estimated standard deviation in flxR6</DESCRIPTION>
     3328      </FIELD>
     3329      <FIELD name="yflxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3330        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     3331      </FIELD>
     3332      <FIELD name="yflxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     3333        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     3334      </FIELD>
     3335      <FIELD name="yflxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3336        <DESCRIPTION>estimated error is flxR7</DESCRIPTION>
     3337      </FIELD>
     3338      <FIELD name="yflxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3339        <DESCRIPTION>estimated standard deviation in flxR7</DESCRIPTION>
     3340      </FIELD>
     3341      <FIELD name="yflxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3342        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     3343      </FIELD>
     3344      <FIELD name="yflxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     3345        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     3346      </FIELD>
     3347      <FIELD name="yflxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3348        <DESCRIPTION>estimated error is flxR8</DESCRIPTION>
     3349      </FIELD>
     3350      <FIELD name="yflxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3351        <DESCRIPTION>estimated standard deviation in flxR8</DESCRIPTION>
     3352      </FIELD>
     3353      <FIELD name="yflxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3354        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     3355      </FIELD>
     3356      <FIELD name="yflxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     3357        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     3358      </FIELD>
     3359      <FIELD name="yflxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3360        <DESCRIPTION>estimated error is flxR9</DESCRIPTION>
     3361      </FIELD>
     3362      <FIELD name="yflxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3363        <DESCRIPTION>estimated standard deviation in flxR9</DESCRIPTION>
     3364      </FIELD>
     3365      <FIELD name="yflxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3366        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     3367      </FIELD>
     3368      <FIELD name="yflxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     3369        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     3370      </FIELD>
     3371      <FIELD name="yflxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3372        <DESCRIPTION>estimated error is flxR10</DESCRIPTION>
     3373      </FIELD>
     3374      <FIELD name="yflxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3375        <DESCRIPTION>estimated standard deviation in flxR10</DESCRIPTION>
     3376      </FIELD>
     3377      <FIELD name="yflxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3378        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     3379      </FIELD>
     3380
     3381      <DATA>
     3382        <TABLEDATA></TABLEDATA>
     3383      </DATA>
     3384    </TABLE>
     3385
     3386    <!-- StackApFlxFullC1 Table ************************************************** -->
     3387    <TABLE name="StackApFlxFullC1">
     3388      <DESCRIPTION>VOTable description of PSPS table StackApFlxFullC1</DESCRIPTION>
     3389      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     3390      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3391        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     3392      </FIELD>
     3393      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3394        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     3395      </FIELD>
     3396      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3397        <DESCRIPTION>random stack id</DESCRIPTION>
     3398      </FIELD>
     3399      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3400        <DESCRIPTION>identifies which of up to 5 possible stackdetections thisrow refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     3401      </FIELD>
     3402      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     3403        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     3404      </FIELD>
     3405      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     3406        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     3407      </FIELD>
     3408
     3409      <!-- g-band values -->
     3410      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3411        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     3412      </FIELD>
     3413      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3414        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     3415      </FIELD>
     3416      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3417        <DESCRIPTION>stack identifier</DESCRIPTION>
     3418      </FIELD>
     3419      <FIELD name="gc1flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     3420        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3421      </FIELD>
     3422      <FIELD name="gc1flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3423        <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
     3424      </FIELD>
     3425      <FIELD name="gc1flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3426        <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
     3427      </FIELD>
     3428      <FIELD name="gc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3429        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3430      </FIELD>
     3431      <FIELD name="gc1flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3432        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3433      </FIELD>
     3434      <FIELD name="gc1flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3435        <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
     3436      </FIELD>
     3437      <FIELD name="gc1flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3438        <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
     3439      </FIELD>
     3440      <FIELD name="gc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3441        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3442      </FIELD>
     3443      <FIELD name="gc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3444        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3445      </FIELD>
     3446      <FIELD name="gc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3447        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
     3448      </FIELD>
     3449      <FIELD name="gc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3450        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
     3451      </FIELD>
     3452      <FIELD name="gc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3453        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3454      </FIELD>
     3455      <FIELD name="gc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3456        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3457      </FIELD>
     3458      <FIELD name="gc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3459        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
     3460      </FIELD>
     3461      <FIELD name="gc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3462        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
     3463      </FIELD>
     3464      <FIELD name="gc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3465        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3466      </FIELD>
     3467      <FIELD name="gc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3468        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3469      </FIELD>
     3470      <FIELD name="gc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3471        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
     3472      </FIELD>
     3473      <FIELD name="gc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3474        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
     3475      </FIELD>
     3476      <FIELD name="gc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3477        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     3478      </FIELD>
     3479      <FIELD name="gc1flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     3480        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     3481      </FIELD>
     3482      <FIELD name="gc1flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3483        <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
     3484      </FIELD>
     3485      <FIELD name="gc1flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3486        <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
     3487      </FIELD>
     3488      <FIELD name="gc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3489        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     3490      </FIELD>
     3491      <FIELD name="gc1flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     3492        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     3493      </FIELD>
     3494      <FIELD name="gc1flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3495        <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
     3496      </FIELD>
     3497      <FIELD name="gc1flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3498        <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
     3499      </FIELD>
     3500      <FIELD name="gc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3501        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     3502      </FIELD>
     3503      <FIELD name="gc1flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     3504        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     3505      </FIELD>
     3506      <FIELD name="gc1flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3507        <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
     3508      </FIELD>
     3509      <FIELD name="gc1flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3510        <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
     3511      </FIELD>
     3512      <FIELD name="gc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3513        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     3514      </FIELD>
     3515      <FIELD name="gc1flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     3516        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     3517      </FIELD>
     3518      <FIELD name="gc1flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3519        <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
     3520      </FIELD>
     3521      <FIELD name="gc1flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3522        <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
     3523      </FIELD>
     3524      <FIELD name="gc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3525        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     3526      </FIELD>
     3527      <FIELD name="gc1flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     3528        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     3529      </FIELD>
     3530      <FIELD name="gc1flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3531        <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
     3532      </FIELD>
     3533      <FIELD name="gc1flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3534        <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
     3535      </FIELD>
     3536      <FIELD name="gc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3537        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     3538      </FIELD>
     3539
     3540      <!-- r-band values -->
     3541      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3542        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     3543      </FIELD>
     3544      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3545        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     3546      </FIELD>
     3547      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3548        <DESCRIPTION>stack identifier</DESCRIPTION>
     3549      </FIELD>
     3550      <FIELD name="rc1flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     3551        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3552      </FIELD>
     3553      <FIELD name="rc1flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3554        <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
     3555      </FIELD>
     3556      <FIELD name="rc1flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3557        <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
     3558      </FIELD>
     3559      <FIELD name="rc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3560        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3561      </FIELD>
     3562      <FIELD name="rc1flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3563        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3564      </FIELD>
     3565      <FIELD name="rc1flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3566        <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
     3567      </FIELD>
     3568      <FIELD name="rc1flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3569        <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
     3570      </FIELD>
     3571      <FIELD name="rc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3572        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3573      </FIELD>
     3574      <FIELD name="rc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3575        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3576      </FIELD>
     3577      <FIELD name="rc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3578        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
     3579      </FIELD>
     3580      <FIELD name="rc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3581        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
     3582      </FIELD>
     3583      <FIELD name="rc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3584        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3585      </FIELD>
     3586      <FIELD name="rc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3587        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3588      </FIELD>
     3589      <FIELD name="rc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3590        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
     3591      </FIELD>
     3592      <FIELD name="rc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3593        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
     3594      </FIELD>
     3595      <FIELD name="rc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3596        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3597      </FIELD>
     3598      <FIELD name="rc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3599        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3600      </FIELD>
     3601      <FIELD name="rc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3602        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
     3603      </FIELD>
     3604      <FIELD name="rc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3605        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
     3606      </FIELD>
     3607      <FIELD name="rc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3608        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     3609      </FIELD>
     3610      <FIELD name="rc1flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     3611        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     3612      </FIELD>
     3613      <FIELD name="rc1flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3614        <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
     3615      </FIELD>
     3616      <FIELD name="rc1flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3617        <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
     3618      </FIELD>
     3619      <FIELD name="rc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3620        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     3621      </FIELD>
     3622      <FIELD name="rc1flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     3623        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     3624      </FIELD>
     3625      <FIELD name="rc1flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3626        <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
     3627      </FIELD>
     3628      <FIELD name="rc1flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3629        <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
     3630      </FIELD>
     3631      <FIELD name="rc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3632        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     3633      </FIELD>
     3634      <FIELD name="rc1flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     3635        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     3636      </FIELD>
     3637      <FIELD name="rc1flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3638        <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
     3639      </FIELD>
     3640      <FIELD name="rc1flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3641        <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
     3642      </FIELD>
     3643      <FIELD name="rc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3644        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     3645      </FIELD>
     3646      <FIELD name="rc1flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     3647        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     3648      </FIELD>
     3649      <FIELD name="rc1flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3650        <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
     3651      </FIELD>
     3652      <FIELD name="rc1flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3653        <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
     3654      </FIELD>
     3655      <FIELD name="rc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3656        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     3657      </FIELD>
     3658      <FIELD name="rc1flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     3659        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     3660      </FIELD>
     3661      <FIELD name="rc1flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3662        <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
     3663      </FIELD>
     3664      <FIELD name="rc1flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3665        <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
     3666      </FIELD>
     3667      <FIELD name="rc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3668        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     3669      </FIELD>
     3670
     3671      <!-- i-band values -->
     3672      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3673        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     3674      </FIELD>
     3675      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3676        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     3677      </FIELD>
     3678      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3679        <DESCRIPTION>stack identifier</DESCRIPTION>
     3680      </FIELD>
     3681      <FIELD name="ic1flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     3682        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3683      </FIELD>
     3684      <FIELD name="ic1flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3685        <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
     3686      </FIELD>
     3687      <FIELD name="ic1flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3688        <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
     3689      </FIELD>
     3690      <FIELD name="ic1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3691        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3692      </FIELD>
     3693      <FIELD name="ic1flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3694        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3695      </FIELD>
     3696      <FIELD name="ic1flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3697        <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
     3698      </FIELD>
     3699      <FIELD name="ic1flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3700        <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
     3701      </FIELD>
     3702      <FIELD name="ic1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3703        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3704      </FIELD>
     3705      <FIELD name="ic1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3706        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3707      </FIELD>
     3708      <FIELD name="ic1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3709        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
     3710      </FIELD>
     3711      <FIELD name="ic1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3712        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
     3713      </FIELD>
     3714      <FIELD name="ic1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3715        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3716      </FIELD>
     3717      <FIELD name="ic1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3718        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3719      </FIELD>
     3720      <FIELD name="ic1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3721        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
     3722      </FIELD>
     3723      <FIELD name="ic1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3724        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
     3725      </FIELD>
     3726      <FIELD name="ic1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3727        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3728      </FIELD>
     3729      <FIELD name="ic1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3730        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3731      </FIELD>
     3732      <FIELD name="ic1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3733        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
     3734      </FIELD>
     3735      <FIELD name="ic1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3736        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
     3737      </FIELD>
     3738      <FIELD name="ic1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3739        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     3740      </FIELD>
     3741      <FIELD name="ic1flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     3742        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     3743      </FIELD>
     3744      <FIELD name="ic1flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3745        <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
     3746      </FIELD>
     3747      <FIELD name="ic1flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3748        <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
     3749      </FIELD>
     3750      <FIELD name="ic1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3751        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     3752      </FIELD>
     3753      <FIELD name="ic1flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     3754        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     3755      </FIELD>
     3756      <FIELD name="ic1flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3757        <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
     3758      </FIELD>
     3759      <FIELD name="ic1flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3760        <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
     3761      </FIELD>
     3762      <FIELD name="ic1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3763        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     3764      </FIELD>
     3765      <FIELD name="ic1flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     3766        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     3767      </FIELD>
     3768      <FIELD name="ic1flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3769        <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
     3770      </FIELD>
     3771      <FIELD name="ic1flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3772        <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
     3773      </FIELD>
     3774      <FIELD name="ic1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3775        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     3776      </FIELD>
     3777      <FIELD name="ic1flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     3778        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     3779      </FIELD>
     3780      <FIELD name="ic1flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3781        <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
     3782      </FIELD>
     3783      <FIELD name="ic1flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3784        <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
     3785      </FIELD>
     3786      <FIELD name="ic1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3787        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     3788      </FIELD>
     3789      <FIELD name="ic1flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     3790        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     3791      </FIELD>
     3792      <FIELD name="ic1flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3793        <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
     3794      </FIELD>
     3795      <FIELD name="ic1flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3796        <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
     3797      </FIELD>
     3798      <FIELD name="ic1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3799        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     3800      </FIELD>
     3801
     3802      <!-- z-band values -->
     3803      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3804        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     3805      </FIELD>
     3806      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3807        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     3808      </FIELD>
     3809      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3810        <DESCRIPTION>stack identifier</DESCRIPTION>
     3811      </FIELD>
     3812      <FIELD name="zc1flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     3813        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3814      </FIELD>
     3815      <FIELD name="zc1flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3816        <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
     3817      </FIELD>
     3818      <FIELD name="zc1flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3819        <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
     3820      </FIELD>
     3821      <FIELD name="zc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3822        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3823      </FIELD>
     3824      <FIELD name="zc1flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3825        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3826      </FIELD>
     3827      <FIELD name="zc1flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3828        <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
     3829      </FIELD>
     3830      <FIELD name="zc1flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3831        <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
     3832      </FIELD>
     3833      <FIELD name="zc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3834        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3835      </FIELD>
     3836      <FIELD name="zc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3837        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3838      </FIELD>
     3839      <FIELD name="zc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3840        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
     3841      </FIELD>
     3842      <FIELD name="zc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3843        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
     3844      </FIELD>
     3845      <FIELD name="zc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3846        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3847      </FIELD>
     3848      <FIELD name="zc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3849        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3850      </FIELD>
     3851      <FIELD name="zc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3852        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
     3853      </FIELD>
     3854      <FIELD name="zc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3855        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
     3856      </FIELD>
     3857      <FIELD name="zc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3858        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3859      </FIELD>
     3860      <FIELD name="zc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3861        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3862      </FIELD>
     3863      <FIELD name="zc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3864        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
     3865      </FIELD>
     3866      <FIELD name="zc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3867        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
     3868      </FIELD>
     3869      <FIELD name="zc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3870        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     3871      </FIELD>
     3872      <FIELD name="zc1flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     3873        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     3874      </FIELD>
     3875      <FIELD name="zc1flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3876        <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
     3877      </FIELD>
     3878      <FIELD name="zc1flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3879        <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
     3880      </FIELD>
     3881      <FIELD name="zc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3882        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     3883      </FIELD>
     3884      <FIELD name="zc1flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     3885        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     3886      </FIELD>
     3887      <FIELD name="zc1flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3888        <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
     3889      </FIELD>
     3890      <FIELD name="zc1flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3891        <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
     3892      </FIELD>
     3893      <FIELD name="zc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3894        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     3895      </FIELD>
     3896      <FIELD name="zc1flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     3897        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     3898      </FIELD>
     3899      <FIELD name="zc1flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3900        <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
     3901      </FIELD>
     3902      <FIELD name="zc1flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3903        <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
     3904      </FIELD>
     3905      <FIELD name="zc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3906        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     3907      </FIELD>
     3908      <FIELD name="zc1flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     3909        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     3910      </FIELD>
     3911      <FIELD name="zc1flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3912        <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
     3913      </FIELD>
     3914      <FIELD name="zc1flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3915        <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
     3916      </FIELD>
     3917      <FIELD name="zc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3918        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     3919      </FIELD>
     3920      <FIELD name="zc1flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     3921        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     3922      </FIELD>
     3923      <FIELD name="zc1flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3924        <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
     3925      </FIELD>
     3926      <FIELD name="zc1flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3927        <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
     3928      </FIELD>
     3929      <FIELD name="zc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3930        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     3931      </FIELD>
     3932
     3933      <!-- y-band values -->
     3934      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3935        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     3936      </FIELD>
     3937      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3938        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     3939      </FIELD>
     3940      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     3941        <DESCRIPTION>stack identifier</DESCRIPTION>
     3942      </FIELD>
     3943      <FIELD name="yc1flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     3944        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     3945      </FIELD>
     3946      <FIELD name="yc1flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3947        <DESCRIPTION>estimated error is c1flxR1</DESCRIPTION>
     3948      </FIELD>
     3949      <FIELD name="yc1flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3950        <DESCRIPTION>estimated standard deviation in c1flxR1</DESCRIPTION>
     3951      </FIELD>
     3952      <FIELD name="yc1flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3953        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3954      </FIELD>
     3955      <FIELD name="yc1flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     3956        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     3957      </FIELD>
     3958      <FIELD name="yc1flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3959        <DESCRIPTION>estimated error is c1flxR2</DESCRIPTION>
     3960      </FIELD>
     3961      <FIELD name="yc1flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3962        <DESCRIPTION>estimated standard deviation in c1flxR2</DESCRIPTION>
     3963      </FIELD>
     3964      <FIELD name="yc1flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3965        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     3966      </FIELD>
     3967      <FIELD name="yc1flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     3968        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     3969      </FIELD>
     3970      <FIELD name="yc1flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3971        <DESCRIPTION>estimated error is c1flxR3</DESCRIPTION>
     3972      </FIELD>
     3973      <FIELD name="yc1flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3974        <DESCRIPTION>estimated standard deviation in c1flxR3</DESCRIPTION>
     3975      </FIELD>
     3976      <FIELD name="yc1flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3977        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     3978      </FIELD>
     3979      <FIELD name="yc1flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     3980        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     3981      </FIELD>
     3982      <FIELD name="yc1flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3983        <DESCRIPTION>estimated error is c1flxR4</DESCRIPTION>
     3984      </FIELD>
     3985      <FIELD name="yc1flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3986        <DESCRIPTION>estimated standard deviation in c1flxR4</DESCRIPTION>
     3987      </FIELD>
     3988      <FIELD name="yc1flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     3989        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     3990      </FIELD>
     3991      <FIELD name="yc1flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     3992        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     3993      </FIELD>
     3994      <FIELD name="yc1flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     3995        <DESCRIPTION>estimated error is c1flxR5</DESCRIPTION>
     3996      </FIELD>
     3997      <FIELD name="yc1flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     3998        <DESCRIPTION>estimated standard deviation in c1flxR5</DESCRIPTION>
     3999      </FIELD>
     4000      <FIELD name="yc1flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4001        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     4002      </FIELD>
     4003      <FIELD name="yc1flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     4004        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     4005      </FIELD>
     4006      <FIELD name="yc1flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4007        <DESCRIPTION>estimated error is c1flxR6</DESCRIPTION>
     4008      </FIELD>
     4009      <FIELD name="yc1flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4010        <DESCRIPTION>estimated standard deviation in c1flxR6</DESCRIPTION>
     4011      </FIELD>
     4012      <FIELD name="yc1flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4013        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     4014      </FIELD>
     4015      <FIELD name="yc1flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     4016        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     4017      </FIELD>
     4018      <FIELD name="yc1flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4019        <DESCRIPTION>estimated error is c1flxR7</DESCRIPTION>
     4020      </FIELD>
     4021      <FIELD name="yc1flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4022        <DESCRIPTION>estimated standard deviation in c1flxR7</DESCRIPTION>
     4023      </FIELD>
     4024      <FIELD name="yc1flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4025        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     4026      </FIELD>
     4027      <FIELD name="yc1flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     4028        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     4029      </FIELD>
     4030      <FIELD name="yc1flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4031        <DESCRIPTION>estimated error is c1flxR8</DESCRIPTION>
     4032      </FIELD>
     4033      <FIELD name="yc1flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4034        <DESCRIPTION>estimated standard deviation in c1flxR8</DESCRIPTION>
     4035      </FIELD>
     4036      <FIELD name="yc1flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4037        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     4038      </FIELD>
     4039      <FIELD name="yc1flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     4040        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     4041      </FIELD>
     4042      <FIELD name="yc1flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4043        <DESCRIPTION>estimated error is c1flxR9</DESCRIPTION>
     4044      </FIELD>
     4045      <FIELD name="yc1flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4046        <DESCRIPTION>estimated standard deviation in c1flxR9</DESCRIPTION>
     4047      </FIELD>
     4048      <FIELD name="yc1flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4049        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     4050      </FIELD>
     4051      <FIELD name="yc1flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     4052        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     4053      </FIELD>
     4054      <FIELD name="yc1flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4055        <DESCRIPTION>estimated error is c1flxR10</DESCRIPTION>
     4056      </FIELD>
     4057      <FIELD name="yc1flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4058        <DESCRIPTION>estimated standard deviation in c1flxR10</DESCRIPTION>
     4059      </FIELD>
     4060      <FIELD name="yc1flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4061        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     4062      </FIELD>
     4063
     4064      <DATA>
     4065        <TABLEDATA></TABLEDATA>
     4066      </DATA>
     4067    </TABLE>
     4068
     4069    <!-- StackApFlxFullC2 Table ************************************************** -->
     4070    <TABLE name="StackApFlxFullC2">
     4071      <DESCRIPTION>VOTable description of PSPS table StackApFlxFullC2</DESCRIPTION>
     4072      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     4073      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4074        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     4075      </FIELD>
     4076      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4077        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     4078      </FIELD>
     4079      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4080        <DESCRIPTION>random stack id</DESCRIPTION>
     4081      </FIELD>
     4082      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4083        <DESCRIPTION>identifies which of up to 5 possible stackdetections thisrow refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     4084      </FIELD>
     4085      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     4086        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     4087      </FIELD>
     4088      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     4089        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     4090      </FIELD>
     4091
     4092      <!-- g-band values -->
     4093      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4094        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4095      </FIELD>
     4096      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4097        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4098      </FIELD>
     4099      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4100        <DESCRIPTION>stack identifier</DESCRIPTION>
     4101      </FIELD>
     4102      <FIELD name="gc2flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     4103        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     4104      </FIELD>
     4105      <FIELD name="gc2flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4106        <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
     4107      </FIELD>
     4108      <FIELD name="gc2flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4109        <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
     4110      </FIELD>
     4111      <FIELD name="gc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4112        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4113      </FIELD>
     4114      <FIELD name="gc2flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     4115        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     4116      </FIELD>
     4117      <FIELD name="gc2flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4118        <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
     4119      </FIELD>
     4120      <FIELD name="gc2flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4121        <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
     4122      </FIELD>
     4123      <FIELD name="gc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4124        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4125      </FIELD>
     4126      <FIELD name="gc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     4127        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     4128      </FIELD>
     4129      <FIELD name="gc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4130        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
     4131      </FIELD>
     4132      <FIELD name="gc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4133        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
     4134      </FIELD>
     4135      <FIELD name="gc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4136        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     4137      </FIELD>
     4138      <FIELD name="gc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     4139        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     4140      </FIELD>
     4141      <FIELD name="gc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4142        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
     4143      </FIELD>
     4144      <FIELD name="gc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4145        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
     4146      </FIELD>
     4147      <FIELD name="gc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4148        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     4149      </FIELD>
     4150      <FIELD name="gc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     4151        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     4152      </FIELD>
     4153      <FIELD name="gc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4154        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
     4155      </FIELD>
     4156      <FIELD name="gc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4157        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
     4158      </FIELD>
     4159      <FIELD name="gc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4160        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     4161      </FIELD>
     4162      <FIELD name="gc2flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     4163        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     4164      </FIELD>
     4165      <FIELD name="gc2flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4166        <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
     4167      </FIELD>
     4168      <FIELD name="gc2flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4169        <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
     4170      </FIELD>
     4171      <FIELD name="gc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4172        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     4173      </FIELD>
     4174      <FIELD name="gc2flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     4175        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     4176      </FIELD>
     4177      <FIELD name="gc2flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4178        <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
     4179      </FIELD>
     4180      <FIELD name="gc2flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4181        <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
     4182      </FIELD>
     4183      <FIELD name="gc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4184        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     4185      </FIELD>
     4186      <FIELD name="gc2flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     4187        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     4188      </FIELD>
     4189      <FIELD name="gc2flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4190        <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
     4191      </FIELD>
     4192      <FIELD name="gc2flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4193        <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
     4194      </FIELD>
     4195      <FIELD name="gc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4196        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     4197      </FIELD>
     4198      <FIELD name="gc2flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     4199        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     4200      </FIELD>
     4201      <FIELD name="gc2flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4202        <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
     4203      </FIELD>
     4204      <FIELD name="gc2flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4205        <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
     4206      </FIELD>
     4207      <FIELD name="gc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4208        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     4209      </FIELD>
     4210      <FIELD name="gc2flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     4211        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     4212      </FIELD>
     4213      <FIELD name="gc2flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4214        <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
     4215      </FIELD>
     4216      <FIELD name="gc2flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4217        <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
     4218      </FIELD>
     4219      <FIELD name="gc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4220        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     4221      </FIELD>
     4222
     4223      <!-- r-band values -->
     4224      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4225        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4226      </FIELD>
     4227      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4228        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4229      </FIELD>
     4230      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4231        <DESCRIPTION>stack identifier</DESCRIPTION>
     4232      </FIELD>
     4233      <FIELD name="rc2flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     4234        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     4235      </FIELD>
     4236      <FIELD name="rc2flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4237        <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
     4238      </FIELD>
     4239      <FIELD name="rc2flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4240        <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
     4241      </FIELD>
     4242      <FIELD name="rc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4243        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4244      </FIELD>
     4245      <FIELD name="rc2flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     4246        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     4247      </FIELD>
     4248      <FIELD name="rc2flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4249        <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
     4250      </FIELD>
     4251      <FIELD name="rc2flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4252        <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
     4253      </FIELD>
     4254      <FIELD name="rc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4255        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4256      </FIELD>
     4257      <FIELD name="rc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     4258        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     4259      </FIELD>
     4260      <FIELD name="rc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4261        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
     4262      </FIELD>
     4263      <FIELD name="rc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4264        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
     4265      </FIELD>
     4266      <FIELD name="rc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4267        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     4268      </FIELD>
     4269      <FIELD name="rc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     4270        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     4271      </FIELD>
     4272      <FIELD name="rc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4273        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
     4274      </FIELD>
     4275      <FIELD name="rc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4276        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
     4277      </FIELD>
     4278      <FIELD name="rc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4279        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     4280      </FIELD>
     4281      <FIELD name="rc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     4282        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     4283      </FIELD>
     4284      <FIELD name="rc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4285        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
     4286      </FIELD>
     4287      <FIELD name="rc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4288        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
     4289      </FIELD>
     4290      <FIELD name="rc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4291        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     4292      </FIELD>
     4293      <FIELD name="rc2flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     4294        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     4295      </FIELD>
     4296      <FIELD name="rc2flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4297        <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
     4298      </FIELD>
     4299      <FIELD name="rc2flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4300        <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
     4301      </FIELD>
     4302      <FIELD name="rc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4303        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     4304      </FIELD>
     4305      <FIELD name="rc2flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     4306        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     4307      </FIELD>
     4308      <FIELD name="rc2flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4309        <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
     4310      </FIELD>
     4311      <FIELD name="rc2flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4312        <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
     4313      </FIELD>
     4314      <FIELD name="rc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4315        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     4316      </FIELD>
     4317      <FIELD name="rc2flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     4318        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     4319      </FIELD>
     4320      <FIELD name="rc2flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4321        <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
     4322      </FIELD>
     4323      <FIELD name="rc2flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4324        <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
     4325      </FIELD>
     4326      <FIELD name="rc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4327        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     4328      </FIELD>
     4329      <FIELD name="rc2flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     4330        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     4331      </FIELD>
     4332      <FIELD name="rc2flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4333        <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
     4334      </FIELD>
     4335      <FIELD name="rc2flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4336        <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
     4337      </FIELD>
     4338      <FIELD name="rc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4339        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     4340      </FIELD>
     4341      <FIELD name="rc2flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     4342        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     4343      </FIELD>
     4344      <FIELD name="rc2flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4345        <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
     4346      </FIELD>
     4347      <FIELD name="rc2flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4348        <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
     4349      </FIELD>
     4350      <FIELD name="rc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4351        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     4352      </FIELD>
     4353
     4354      <!-- i-band values -->
     4355      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4356        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4357      </FIELD>
     4358      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4359        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4360      </FIELD>
     4361      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4362        <DESCRIPTION>stack identifier</DESCRIPTION>
     4363      </FIELD>
     4364      <FIELD name="ic2flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     4365        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     4366      </FIELD>
     4367      <FIELD name="ic2flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4368        <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
     4369      </FIELD>
     4370      <FIELD name="ic2flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4371        <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
     4372      </FIELD>
     4373      <FIELD name="ic2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4374        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4375      </FIELD>
     4376      <FIELD name="ic2flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     4377        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     4378      </FIELD>
     4379      <FIELD name="ic2flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4380        <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
     4381      </FIELD>
     4382      <FIELD name="ic2flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4383        <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
     4384      </FIELD>
     4385      <FIELD name="ic2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4386        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4387      </FIELD>
     4388      <FIELD name="ic2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     4389        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     4390      </FIELD>
     4391      <FIELD name="ic2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4392        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
     4393      </FIELD>
     4394      <FIELD name="ic2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4395        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
     4396      </FIELD>
     4397      <FIELD name="ic2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4398        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     4399      </FIELD>
     4400      <FIELD name="ic2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     4401        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     4402      </FIELD>
     4403      <FIELD name="ic2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4404        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
     4405      </FIELD>
     4406      <FIELD name="ic2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4407        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
     4408      </FIELD>
     4409      <FIELD name="ic2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4410        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     4411      </FIELD>
     4412      <FIELD name="ic2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     4413        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     4414      </FIELD>
     4415      <FIELD name="ic2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4416        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
     4417      </FIELD>
     4418      <FIELD name="ic2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4419        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
     4420      </FIELD>
     4421      <FIELD name="ic2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4422        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     4423      </FIELD>
     4424      <FIELD name="ic2flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     4425        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     4426      </FIELD>
     4427      <FIELD name="ic2flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4428        <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
     4429      </FIELD>
     4430      <FIELD name="ic2flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4431        <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
     4432      </FIELD>
     4433      <FIELD name="ic2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4434        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     4435      </FIELD>
     4436      <FIELD name="ic2flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     4437        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     4438      </FIELD>
     4439      <FIELD name="ic2flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4440        <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
     4441      </FIELD>
     4442      <FIELD name="ic2flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4443        <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
     4444      </FIELD>
     4445      <FIELD name="ic2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4446        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     4447      </FIELD>
     4448      <FIELD name="ic2flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     4449        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     4450      </FIELD>
     4451      <FIELD name="ic2flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4452        <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
     4453      </FIELD>
     4454      <FIELD name="ic2flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4455        <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
     4456      </FIELD>
     4457      <FIELD name="ic2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4458        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     4459      </FIELD>
     4460      <FIELD name="ic2flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     4461        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     4462      </FIELD>
     4463      <FIELD name="ic2flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4464        <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
     4465      </FIELD>
     4466      <FIELD name="ic2flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4467        <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
     4468      </FIELD>
     4469      <FIELD name="ic2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4470        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     4471      </FIELD>
     4472      <FIELD name="ic2flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     4473        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     4474      </FIELD>
     4475      <FIELD name="ic2flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4476        <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
     4477      </FIELD>
     4478      <FIELD name="ic2flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4479        <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
     4480      </FIELD>
     4481      <FIELD name="ic2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4482        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     4483      </FIELD>
     4484
     4485      <!-- z-band values -->
     4486      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4487        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4488      </FIELD>
     4489      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4490        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4491      </FIELD>
     4492      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4493        <DESCRIPTION>stack identifier</DESCRIPTION>
     4494      </FIELD>
     4495      <FIELD name="zc2flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     4496        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     4497      </FIELD>
     4498      <FIELD name="zc2flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4499        <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
     4500      </FIELD>
     4501      <FIELD name="zc2flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4502        <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
     4503      </FIELD>
     4504      <FIELD name="zc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4505        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4506      </FIELD>
     4507      <FIELD name="zc2flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     4508        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     4509      </FIELD>
     4510      <FIELD name="zc2flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4511        <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
     4512      </FIELD>
     4513      <FIELD name="zc2flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4514        <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
     4515      </FIELD>
     4516      <FIELD name="zc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4517        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4518      </FIELD>
     4519      <FIELD name="zc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     4520        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     4521      </FIELD>
     4522      <FIELD name="zc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4523        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
     4524      </FIELD>
     4525      <FIELD name="zc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4526        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
     4527      </FIELD>
     4528      <FIELD name="zc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4529        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     4530      </FIELD>
     4531      <FIELD name="zc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     4532        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     4533      </FIELD>
     4534      <FIELD name="zc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4535        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
     4536      </FIELD>
     4537      <FIELD name="zc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4538        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
     4539      </FIELD>
     4540      <FIELD name="zc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4541        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     4542      </FIELD>
     4543      <FIELD name="zc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     4544        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     4545      </FIELD>
     4546      <FIELD name="zc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4547        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
     4548      </FIELD>
     4549      <FIELD name="zc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4550        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
     4551      </FIELD>
     4552      <FIELD name="zc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4553        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     4554      </FIELD>
     4555      <FIELD name="zc2flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     4556        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     4557      </FIELD>
     4558      <FIELD name="zc2flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4559        <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
     4560      </FIELD>
     4561      <FIELD name="zc2flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4562        <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
     4563      </FIELD>
     4564      <FIELD name="zc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4565        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     4566      </FIELD>
     4567      <FIELD name="zc2flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     4568        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     4569      </FIELD>
     4570      <FIELD name="zc2flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4571        <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
     4572      </FIELD>
     4573      <FIELD name="zc2flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4574        <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
     4575      </FIELD>
     4576      <FIELD name="zc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4577        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     4578      </FIELD>
     4579      <FIELD name="zc2flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     4580        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     4581      </FIELD>
     4582      <FIELD name="zc2flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4583        <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
     4584      </FIELD>
     4585      <FIELD name="zc2flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4586        <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
     4587      </FIELD>
     4588      <FIELD name="zc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4589        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     4590      </FIELD>
     4591      <FIELD name="zc2flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     4592        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     4593      </FIELD>
     4594      <FIELD name="zc2flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4595        <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
     4596      </FIELD>
     4597      <FIELD name="zc2flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4598        <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
     4599      </FIELD>
     4600      <FIELD name="zc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4601        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     4602      </FIELD>
     4603      <FIELD name="zc2flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     4604        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     4605      </FIELD>
     4606      <FIELD name="zc2flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4607        <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
     4608      </FIELD>
     4609      <FIELD name="zc2flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4610        <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
     4611      </FIELD>
     4612      <FIELD name="zc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4613        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     4614      </FIELD>
     4615
     4616      <!-- y-band values -->
     4617      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4618        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4619      </FIELD>
     4620      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4621        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4622      </FIELD>
     4623      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4624        <DESCRIPTION>stack identifier</DESCRIPTION>
     4625      </FIELD>
     4626      <FIELD name="yc2flxR1" arraysize="1" datatype="float" unit="Jy" default="-999">
     4627        <DESCRIPTION>Flux inside r = 1</DESCRIPTION>
     4628      </FIELD>
     4629      <FIELD name="yc2flxR1Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4630        <DESCRIPTION>estimated error is c2flxR1</DESCRIPTION>
     4631      </FIELD>
     4632      <FIELD name="yc2flxR1Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4633        <DESCRIPTION>estimated standard deviation in c2flxR1</DESCRIPTION>
     4634      </FIELD>
     4635      <FIELD name="yc2flxR1Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4636        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4637      </FIELD>
     4638      <FIELD name="yc2flxR2" arraysize="1" datatype="float" unit="Jy" default="-999">
     4639        <DESCRIPTION>Flux inside r = 2</DESCRIPTION>
     4640      </FIELD>
     4641      <FIELD name="yc2flxR2Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4642        <DESCRIPTION>estimated error is c2flxR2</DESCRIPTION>
     4643      </FIELD>
     4644      <FIELD name="yc2flxR2Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4645        <DESCRIPTION>estimated standard deviation in c2flxR2</DESCRIPTION>
     4646      </FIELD>
     4647      <FIELD name="yc2flxR2Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4648        <DESCRIPTION>estimated filling factor at R1</DESCRIPTION>
     4649      </FIELD>
     4650      <FIELD name="yc2flxR3" arraysize="1" datatype="float" unit="Jy" default="-999">
     4651        <DESCRIPTION>Flux inside r = 3</DESCRIPTION>
     4652      </FIELD>
     4653      <FIELD name="yc2flxR3Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4654        <DESCRIPTION>estimated error is c2flxR3</DESCRIPTION>
     4655      </FIELD>
     4656      <FIELD name="yc2flxR3Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4657        <DESCRIPTION>estimated standard deviation in c2flxR3</DESCRIPTION>
     4658      </FIELD>
     4659      <FIELD name="yc2flxR3Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4660        <DESCRIPTION>estimated filling factor at R3</DESCRIPTION>
     4661      </FIELD>
     4662      <FIELD name="yc2flxR4" arraysize="1" datatype="float" unit="Jy" default="-999">
     4663        <DESCRIPTION>Flux inside r = 4</DESCRIPTION>
     4664      </FIELD>
     4665      <FIELD name="yc2flxR4Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4666        <DESCRIPTION>estimated error is c2flxR4</DESCRIPTION>
     4667      </FIELD>
     4668      <FIELD name="yc2flxR4Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4669        <DESCRIPTION>estimated standard deviation in c2flxR4</DESCRIPTION>
     4670      </FIELD>
     4671      <FIELD name="yc2flxR4Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4672        <DESCRIPTION>estimated filling factor at R4</DESCRIPTION>
     4673      </FIELD>
     4674      <FIELD name="yc2flxR5" arraysize="1" datatype="float" unit="Jy" default="-999">
     4675        <DESCRIPTION>Flux inside r = 5</DESCRIPTION>
     4676      </FIELD>
     4677      <FIELD name="yc2flxR5Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4678        <DESCRIPTION>estimated error is c2flxR5</DESCRIPTION>
     4679      </FIELD>
     4680      <FIELD name="yc2flxR5Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4681        <DESCRIPTION>estimated standard deviation in c2flxR5</DESCRIPTION>
     4682      </FIELD>
     4683      <FIELD name="yc2flxR5Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4684        <DESCRIPTION>estimated filling factor at R5</DESCRIPTION>
     4685      </FIELD>
     4686      <FIELD name="yc2flxR6" arraysize="1" datatype="float" unit="Jy" default="-999">
     4687        <DESCRIPTION>Flux inside r = 6</DESCRIPTION>
     4688      </FIELD>
     4689      <FIELD name="yc2flxR6Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4690        <DESCRIPTION>estimated error is c2flxR6</DESCRIPTION>
     4691      </FIELD>
     4692      <FIELD name="yc2flxR6Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4693        <DESCRIPTION>estimated standard deviation in c2flxR6</DESCRIPTION>
     4694      </FIELD>
     4695      <FIELD name="yc2flxR6Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4696        <DESCRIPTION>estimated filling factor at R6</DESCRIPTION>
     4697      </FIELD>
     4698      <FIELD name="yc2flxR7" arraysize="1" datatype="float" unit="Jy" default="-999">
     4699        <DESCRIPTION>Flux inside r = 7</DESCRIPTION>
     4700      </FIELD>
     4701      <FIELD name="yc2flxR7Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4702        <DESCRIPTION>estimated error is c2flxR7</DESCRIPTION>
     4703      </FIELD>
     4704      <FIELD name="yc2flxR7Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4705        <DESCRIPTION>estimated standard deviation in c2flxR7</DESCRIPTION>
     4706      </FIELD>
     4707      <FIELD name="yc2flxR7Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4708        <DESCRIPTION>estimated filling factor at R7</DESCRIPTION>
     4709      </FIELD>
     4710      <FIELD name="yc2flxR8" arraysize="1" datatype="float" unit="Jy" default="-999">
     4711        <DESCRIPTION>Flux inside r = 8</DESCRIPTION>
     4712      </FIELD>
     4713      <FIELD name="yc2flxR8Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4714        <DESCRIPTION>estimated error is c2flxR8</DESCRIPTION>
     4715      </FIELD>
     4716      <FIELD name="yc2flxR8Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4717        <DESCRIPTION>estimated standard deviation in c2flxR8</DESCRIPTION>
     4718      </FIELD>
     4719      <FIELD name="yc2flxR8Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4720        <DESCRIPTION>estimated filling factor at R8</DESCRIPTION>
     4721      </FIELD>
     4722      <FIELD name="yc2flxR9" arraysize="1" datatype="float" unit="Jy" default="-999">
     4723        <DESCRIPTION>Flux inside r = 9</DESCRIPTION>
     4724      </FIELD>
     4725      <FIELD name="yc2flxR9Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4726        <DESCRIPTION>estimated error is c2flxR9</DESCRIPTION>
     4727      </FIELD>
     4728      <FIELD name="yc2flxR9Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4729        <DESCRIPTION>estimated standard deviation in c2flxR9</DESCRIPTION>
     4730      </FIELD>
     4731      <FIELD name="yc2flxR9Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4732        <DESCRIPTION>estimated filling factor at R9</DESCRIPTION>
     4733      </FIELD>
     4734      <FIELD name="yc2flxR10" arraysize="1" datatype="float" unit="Jy" default="-999">
     4735        <DESCRIPTION>Flux inside r = 10</DESCRIPTION>
     4736      </FIELD>
     4737      <FIELD name="yc2flxR10Err" arraysize="1" datatype="float" unit="Jy" default="-999">
     4738        <DESCRIPTION>estimated error is c2flxR10</DESCRIPTION>
     4739      </FIELD>
     4740      <FIELD name="yc2flxR10Std" arraysize="1" datatype="float" unit="Jy" default="-999">
     4741        <DESCRIPTION>estimated standard deviation in c2flxR10</DESCRIPTION>
     4742      </FIELD>
     4743      <FIELD name="yc2flxR10Fill" arraysize="1" datatype="float" unit="dimensionless" default="-999">
     4744        <DESCRIPTION>estimated filling factor at R10</DESCRIPTION>
     4745      </FIELD>
     4746
     4747      <DATA>
     4748        <TABLEDATA></TABLEDATA>
     4749      </DATA>
     4750    </TABLE>
     4751
     4752    <!-- StackPetrosian Table ************************************************** -->
     4753    <TABLE name="StackPetrosian">
     4754      <DESCRIPTION>VOTable description of PSPS table StackPetrosian</DESCRIPTION>
     4755      <PARAM arraysize="1" datatype="char" ucd="meta.bib.author" name="Author" value="PSPS"></PARAM>
     4756      <FIELD name="objID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4757        <DESCRIPTION>ODM object identifier</DESCRIPTION>
     4758      </FIELD>
     4759      <FIELD name="ippObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4760        <DESCRIPTION>IPP object identifier</DESCRIPTION>
     4761      </FIELD>
     4762      <FIELD name="randomStackObjID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4763        <DESCRIPTION>random stack id</DESCRIPTION>
     4764      </FIELD>
     4765      <FIELD name="stackDetectRowID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4766        <DESCRIPTION>identifies which of up to 5 possible stackdetections thisrow refers to: primary, up to 3 Secondary, 1 best</DESCRIPTION>
     4767      </FIELD>
     4768      <FIELD name="primaryDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     4769        <DESCRIPTION>identifies if this row is a primary stack detection. True about 80 percent of time</DESCRIPTION>
     4770      </FIELD>
     4771      <FIELD name="bestDetection" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="255">
     4772        <DESCRIPTION>identifies if this row is a best detection or not. Also set if only a primary detection exists.</DESCRIPTION>
     4773      </FIELD>
     4774
     4775      <!-- g-band values -->
     4776      <FIELD name="gippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4777        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4778      </FIELD>
     4779      <FIELD name="gstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4780        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4781      </FIELD>
     4782      <FIELD name="gstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4783        <DESCRIPTION>stack identifier</DESCRIPTION>
     4784      </FIELD>
     4785      <FIELD name="gpetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
     4786        <DESCRIPTION>Petrosian radius</DESCRIPTION>
     4787      </FIELD>
     4788      <FIELD name="gpetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
     4789        <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
     4790      </FIELD>
     4791      <FIELD name="gpetMag" arraysize="1" datatype="float" unit="Jy" default="-999">
     4792        <DESCRIPTION>Petrosian Flux</DESCRIPTION>
     4793      </FIELD>
     4794      <FIELD name="gpetMagErr" arraysize="1" datatype="float" unit="Jy" default="-999">
     4795        <DESCRIPTION>estimated error in petMag</DESCRIPTION>
     4796      </FIELD>
     4797      <FIELD name="gpetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
     4798        <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
     4799      </FIELD>
     4800      <FIELD name="gpetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4801        <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
     4802      </FIELD>
     4803      <FIELD name="gpetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
     4804        <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
     4805      </FIELD>
     4806      <FIELD name="gpetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4807        <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
     4808      </FIELD>
     4809      <FIELD name="gpetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
     4810        <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
     4811      </FIELD>
     4812
     4813      <!-- r-band values -->
     4814      <FIELD name="rippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4815        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4816      </FIELD>
     4817      <FIELD name="rstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4818        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4819      </FIELD>
     4820      <FIELD name="rstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4821        <DESCRIPTION>stack identifier</DESCRIPTION>
     4822      </FIELD>
     4823      <FIELD name="rpetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
     4824        <DESCRIPTION>Petrosian radius</DESCRIPTION>
     4825      </FIELD>
     4826      <FIELD name="rpetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
     4827        <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
     4828      </FIELD>
     4829      <FIELD name="rpetMag" arraysize="1" datatype="float" unit="Jy" default="-999">
     4830        <DESCRIPTION>Petrosian Flux</DESCRIPTION>
     4831      </FIELD>
     4832      <FIELD name="rpetMagErr" arraysize="1" datatype="float" unit="Jy" default="-999">
     4833        <DESCRIPTION>estimated error in petMag</DESCRIPTION>
     4834      </FIELD>
     4835      <FIELD name="rpetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
     4836        <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
     4837      </FIELD>
     4838      <FIELD name="rpetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4839        <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
     4840      </FIELD>
     4841      <FIELD name="rpetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
     4842        <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
     4843      </FIELD>
     4844      <FIELD name="rpetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4845        <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
     4846      </FIELD>
     4847      <FIELD name="rpetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
     4848        <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
     4849      </FIELD>
     4850
     4851      <!-- i-band values -->
     4852      <FIELD name="iippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4853        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4854      </FIELD>
     4855      <FIELD name="istackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4856        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4857      </FIELD>
     4858      <FIELD name="istackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4859        <DESCRIPTION>stack identifier</DESCRIPTION>
     4860      </FIELD>
     4861      <FIELD name="ipetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
     4862        <DESCRIPTION>Petrosian radius</DESCRIPTION>
     4863      </FIELD>
     4864      <FIELD name="ipetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
     4865        <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
     4866      </FIELD>
     4867      <FIELD name="ipetMag" arraysize="1" datatype="float" unit="Jy" default="-999">
     4868        <DESCRIPTION>Petrosian Flux</DESCRIPTION>
     4869      </FIELD>
     4870      <FIELD name="ipetMagErr" arraysize="1" datatype="float" unit="Jy" default="-999">
     4871        <DESCRIPTION>estimated error in petMag</DESCRIPTION>
     4872      </FIELD>
     4873      <FIELD name="ipetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
     4874        <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
     4875      </FIELD>
     4876      <FIELD name="ipetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4877        <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
     4878      </FIELD>
     4879      <FIELD name="ipetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
     4880        <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
     4881      </FIELD>
     4882      <FIELD name="ipetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4883        <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
     4884      </FIELD>
     4885      <FIELD name="ipetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
     4886        <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
     4887      </FIELD>
     4888
     4889      <!-- z-band values -->
     4890      <FIELD name="zippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4891        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4892      </FIELD>
     4893      <FIELD name="zstackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4894        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4895      </FIELD>
     4896      <FIELD name="zstackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4897        <DESCRIPTION>stack identifier</DESCRIPTION>
     4898      </FIELD>
     4899      <FIELD name="zpetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
     4900        <DESCRIPTION>Petrosian radius</DESCRIPTION>
     4901      </FIELD>
     4902      <FIELD name="zpetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
     4903        <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
     4904      </FIELD>
     4905      <FIELD name="zpetMag" arraysize="1" datatype="float" unit="Jy" default="-999">
     4906        <DESCRIPTION>Petrosian Flux</DESCRIPTION>
     4907      </FIELD>
     4908      <FIELD name="zpetMagErr" arraysize="1" datatype="float" unit="Jy" default="-999">
     4909        <DESCRIPTION>estimated error in petMag</DESCRIPTION>
     4910      </FIELD>
     4911      <FIELD name="zpetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
     4912        <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
     4913      </FIELD>
     4914      <FIELD name="zpetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4915        <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
     4916      </FIELD>
     4917      <FIELD name="zpetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
     4918        <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
     4919      </FIELD>
     4920      <FIELD name="zpetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4921        <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
     4922      </FIELD>
     4923      <FIELD name="zpetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
     4924        <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
     4925      </FIELD>
     4926
     4927      <!-- y-band values -->
     4928      <FIELD name="yippDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4929        <DESCRIPTION>ipp detect identifier</DESCRIPTION>
     4930      </FIELD>
     4931      <FIELD name="ystackDetectID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4932        <DESCRIPTION>ODM detection identifier</DESCRIPTION>
     4933      </FIELD>
     4934      <FIELD name="ystackMetaID" arraysize="1" datatype="long" unit="dimensionless" default="NA">
     4935        <DESCRIPTION>stack identifier</DESCRIPTION>
     4936      </FIELD>
     4937      <FIELD name="ypetRadius" arraysize="1" datatype="float" unit="pixels" default="-999">
     4938        <DESCRIPTION>Petrosian radius</DESCRIPTION>
     4939      </FIELD>
     4940      <FIELD name="ypetRadiusErr" arraysize="1" datatype="float" unit="pixels" default="-999">
     4941        <DESCRIPTION>estimated error inPetrosian radius</DESCRIPTION>
     4942      </FIELD>
     4943      <FIELD name="ypetMag" arraysize="1" datatype="float" unit="Jy" default="-999">
     4944        <DESCRIPTION>Petrosian Flux</DESCRIPTION>
     4945      </FIELD>
     4946      <FIELD name="ypetMagErr" arraysize="1" datatype="float" unit="Jy" default="-999">
     4947        <DESCRIPTION>estimated error in petMag</DESCRIPTION>
     4948      </FIELD>
     4949      <FIELD name="ypetR50" arraysize="1" datatype="float" unit="pixels" default="-999">
     4950        <DESCRIPTION>Petrosian radius at 50% light</DESCRIPTION>
     4951      </FIELD>
     4952      <FIELD name="ypetR50Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4953        <DESCRIPTION>estimated error inPetrosian radius at 50% light</DESCRIPTION>
     4954      </FIELD>
     4955      <FIELD name="ypetR90" arraysize="1" datatype="float" unit="pixels" default="-999">
     4956        <DESCRIPTION>Petrosian radius at 90% light</DESCRIPTION>
     4957      </FIELD>
     4958      <FIELD name="ypetR90Err" arraysize="1" datatype="float" unit="pixels" default="-999">
     4959        <DESCRIPTION>estimated error in Petrosian radius at 90% light</DESCRIPTION>
     4960      </FIELD>
     4961      <FIELD name="ypetCf" arraysize="1" datatype="float" unit="pixels" default="-999">
     4962        <DESCRIPTION>Petrosian fit coverage factor</DESCRIPTION>
     4963      </FIELD>
     4964
     4965      <DATA>
     4966        <TABLEDATA></TABLEDATA>
     4967      </DATA>
     4968    </TABLE>
     4969
     4970    <!-- StackToImage Table ************************************************** -->
    42034971    <TABLE name="StackToImage">
    42044972      <DESCRIPTION>VOTable description of PSPS table StackToImage</DESCRIPTION>
  • trunk/ippToPsps/jython/Makefile.am

    r36815 r37246  
    2222  gpc1db.py \
    2323  initbatch.py \
    24   insert.dvodb.info.py \       
     24  insert.dvodb.info.py \
    2525  ipptopspsdb.py \
    2626  ipptopsps.py \
     
    3535  pslogger.py \
    3636  queue.py \
    37   removepending.py \ 
     37  removepending.py \
    3838  scratchdb.py \
    3939  setupScratchDb.py \
    4040  skychunk.py \
     41  sqlUtility.py \
    4142  stackbatch.py
    4243
  • trunk/ippToPsps/jython/batch.py

    r36726 r37246  
    3737                 batchID,
    3838                 batchType,
    39                  fits,
    40                  useFullTables):
    41 
    42         # print "starting the batch"
    43 
    44         # self.printline = 0
    45         # self.testprint()
     39                 fits):
    4640
    4741        self.readHeader = False
     
    4943        self.skychunk = skychunk
    5044        self.fits = fits
    51         self.useFullTables = useFullTables
    5245
    5346        # set up logging
     
    5548        self.logger.infoSeparator()
    5649        self.logger.debug("Batch class constructor")
    57 
    58         # self.testprint()
    5950
    6051        # set up class variables
     
    6859        self.pspsVoTableFilePath = self.config.configDir + "tables." + batchType + ".vot"
    6960
    70         # self.testprint()
    71 
    7261        # check FITS file is ok
    7362        if self.fits:
     
    7968                raise
    8069
    81         self.scratchDb.setUseFullTables(self.useFullTables)
     70        # define the dvo table names
     71        self.scratchDb.setDvoTableNames()
    8272
    8373        # TODO
     
    10797        if not os.path.exists(self.localOutPath): os.makedirs(self.localOutPath)
    10898
    109         # self.testprint()
    110 
    11199        # store today's date
    112100        now = datetime.datetime.now();
    113101        self.dateStr = now.strftime("%Y-%m-%d")
    114102
    115         # create DVO tables if accessing DVO directly
    116         if not self.useFullTables: self.scratchDb.createDvoTables()
     103        # create DVO tables (scratch database)
     104        self.scratchDb.createDvoTables()
    117105
    118106        # dump stuff to the log
     
    120108        self.logger.infoPair("Batch name", self.batchName)
    121109        self.logger.infoPair("Survey ID", "%d" % self.surveyID)
    122         self.logger.infoBool("Use full DVO tables?", self.useFullTables)
    123110
    124111        if self.fits:
    125112            self.logger.infoPair("Input FITS file", self.fits.getOriginalPath())
    126113            self.logger.infoPair("Input FITS primary header", "%s cards found" % self.fits.getPrimaryHeaderCardCount())
    127 
    128         # self.testprint()
    129114
    130115        self.logger.infoPair("Output path", self.localOutPath)
     
    237222             self.logger.errorPair("Missing header field", key)
    238223             return "NULL"
     224
     225    '''
     226    Returns the string keyword value from this header or else "NULL"
     227    '''
     228    def getKeyValue(self, header, key):
     229
     230         if key in header: return header[key]
     231         else:
     232             self.logger.errorPair("Missing header field", key)
     233             return "NULL"
     234
     235    '''
     236    Returns the string keyword value from this header or else "NULL"
     237    '''
     238    def getKeyFloat(self, header, format, key):
     239
     240         if key in header:
     241             value = format % float(header[key])
     242         else:
     243             self.logger.errorPair("Missing header field", key)
     244             value = format % -999.9
     245
     246         return value
     247
     248    '''
     249    Returns the string keyword value from this header or else "NULL"
     250    '''
     251    def getKeyInt(self, header, defValue, key):
     252
     253         if key in header:
     254             value = str(int(header[key]))
     255         else:
     256             self.logger.errorPair("Missing header field", key)
     257             value = str(defValue)
     258
     259         return value
    239260
    240261    '''
     
    373394             self.tablesToExport.append(table.name)
    374395
    375          return self.alterPspsTables();
     396         return True
    376397
    377398    '''
     
    383404
    384405    '''
    385     Alter PSPS tables
     406    Alter PSPS tables (Subclass implements this)
    386407    '''   
    387408    def alterPspsTables(self):
     
    417438
    418439          # print "read smf table ", table
     440          self.logger.infoPair("read smf table", table)
    419441
    420442          # drop any previous tables before import
     
    440462
    441463      return True
    442     '''
    443     Imports IPP tables from FITS file
    444 
    445     Accepts a regular expression filter so not all tables need to be imported
    446     '''
    447     def importIppSTTables(self, columns="*", filter=""):
    448 
    449       self.logger.infoPair("Importing ST tables with filter", filter)
    450 
    451       # print "trying to read ", self.fits.getPath()
    452 
    453       # ST has 5 cmf files - all with the same table names. To counter this we do it like this.
    454 
    455       filters = ["g","r","i","z","y"]
    456       count = 0
    457       for f in filters:
    458           skip = 0
    459           if (f == "g"):
    460               if self.gstackID > 0: 
    461                   fileName = self.gfits.getPath()
    462               else:
    463                   skip = 1
    464           if (f == "r"):
    465               if self.rstackID > 0:
    466                   fileName = self.rfits.getPath()
    467               else:
    468                   skip = 1
    469           if (f == "i"):
    470               if self.istackID > 0:
    471                   fileName = self.ifits.getPath()
    472               else:
    473                   skip = 1
    474           if (f == "z"):
    475               if self.zstackID > 0:
    476                   fileName = self.zfits.getPath()
    477               else:
    478                   skip = 1
    479           if (f == "y"):
    480               if self.ystackID > 0:
    481                   fileName = self.yfits.getPath()
    482               else:
    483                   skip = 1
    484 
    485           if skip == 1:
    486               self.logger.infoPair("no files for filter" , f)
    487           else:
    488              self.logger.infoPair("using filename:",fileName)
    489          
    490              try:
    491               tables = stilts.treads(fileName)
    492              except:
    493               self.logger.errorPair("STILTS could not import from", fileName)
    494               return False
    495              
    496              #count = 0
    497              for table in tables:
    498              
    499               # print "import smf table ", table
    500               match = re.match(filter, table.name)
    501              
    502               if not match: continue
    503               self.logger.infoPair("Reading IPP table", f + table.name)
    504               table = stilts.tpipe(table, cmd='addcol table_index $0')
    505                  
    506               table = stilts.tpipe(table, cmd='explodeall')
    507                  
    508               # print "read smf table ", table
    509                  
    510               # drop any previous tables before import
    511               self.scratchDb.dropTable(f + table.name)
    512                  
    513               # IPP FITS files are littered with infinities, so remove these
    514               self.logger.debug("Removing Infinity values from all columns")
    515               table = stilts.tpipe(table, cmd='keepcols "' + columns + '"')
    516               table = stilts.tpipe(table, cmd='replaceval -Infinity null *')
    517               table = stilts.tpipe(table, cmd='replaceval Infinity null *')
    518               # print "cleaned up values ", table
    519                  
    520               try:
    521                   table.write(self.scratchDb.url + '#' + f + table.name)
    522                   # XXX this one is not needed
    523                   # self.scratchDb.killLastConnectionID()
    524                   count = count + 1
    525               except:
    526                   self.logger.exception("Problem writing table '" + f + table.name + "' to the database")
    527                      
    528       self.logger.infoPair("Done. Imported", "%d tables" % count)
    529       self.indexIppTables()
    530                      
    531       return True
    532464
    533465    '''
     
    548480           # get everything from table
    549481           try:
    550                print "reading table from mysql ", table
    551482               _table = stilts.tread(self.scratchDb.url + '#SELECT * FROM ' + table)
    552483               self.scratchDb.killLastConnectionID()
     
    633564    def run(self):
    634565
    635         # this is badly named : it creates the tables and then fills in
    636         # the ImageMeta tables for each ota (alterPspsTables)
     566        # creates the empty PSPS tables
    637567        if not self.createEmptyPspsTables():
    638568            self.logger.errorPair("Aborting this batch", "could not create empty PSPS tables")
     
    640570            raise
    641571
     572        # fill in basic, not cmf/smf data (eg, ImageMeta for detectionbatch)
     573        if not self.alterPspsTables():
     574            self.logger.errorPair("Aborting this batch", "could not alter PSPS tables for batch type")
     575            self.ippToPspsDb.updateProcessed(self.batchID, -1)
     576            raise
     577
    642578        # for P2/ST, this reads the detection tables from the CMF/SMF file(s)
    643579        # for OB, this imports object data from DVO
    644         if self.batchType == "ST":
    645             self.logger.infoPair("did we get here","?") 
    646             if not self.importIppSTTables():
    647                 self.logger.errorPair("skipping this batch", "could not import ST IPP tables")
    648                 self.ippToPspsDb.updateProcessed(self.batchID, -1)
    649                 raise
    650             self.logger.infoPair("we did the ST","yes")
    651         else:   
    652             # if not ST we do this
    653             if not self.importIppTables():
    654                 if self.batchType == "OB":
    655                     self.logger.errorPair("skipping this batch", "no dvo tables for this region")
    656                     self.ippToPspsDb.updateProcessed(self.batchID, 1)
    657                     return True
    658                 self.logger.errorPair("Aborting this batch", "could not import IPP tables")
    659                 self.ippToPspsDb.updateProcessed(self.batchID, -1)
    660                 raise
     580        if not self.importIppTables():
     581            if self.batchType == "OB":
     582                self.logger.errorPair("skipping this batch", "no dvo tables for this region")
     583                self.ippToPspsDb.updateProcessed(self.batchID, 1)
     584                return True
     585            self.logger.errorPair("Aborting this batch", "could not import IPP tables")
     586            self.ippToPspsDb.updateProcessed(self.batchID, -1)
     587            raise
     588
    661589        self.logger.infoPair("populatePspsTables","ok")
    662590        if not self.populatePspsTables():
     
    692620                            tarballFile)
    693621
     622        if self.config.onebatch:
     623            self.logger.infoPair("onebatch requested", "exiting")
     624            sys.exit(0)
     625
     626# XXX why is this down here??
    694627from datastore import Datastore
    695 
  • trunk/ippToPsps/jython/config.py

    r35417 r37246  
    2222
    2323        self.test = False
    24         for arg in sys.argv:
    25             if arg == "-test":
    26                 self.test = True
    27                 sys.argv.remove(arg)
    28             if arg == "-t":
    29                 self.test = True
    30                 sys.argv.remove(arg)
     24        self.resetDvo = False
     25        self.gpc1test = True
     26        self.retry = False
     27        self.camera = "gpc1"
     28        self.onebatch = False
    3129
     30        if sys.argv.count("-test"):
     31            self.test = True
     32            sys.argv.remove("-test")
     33
     34        if sys.argv.count("-t"):
     35            self.test = True
     36            sys.argv.remove("-t")
     37
     38        # by default, we use gpc1test in a test, and do not if not a test
    3239        self.gpc1test = self.test
    33         for arg in sys.argv:
    34             if arg == "-realgpc":
    35                 self.gpc1test = False
    36                 sys.argv.remove(arg)
     40
     41        if sys.argv.count("-realgpc"):
     42            if not self.test:
     43                print "-realgpc requires -test"
     44                sys.exit(1)
     45            self.gpc1test = False
     46            sys.argv.remove("-realgpc")
     47
     48        if sys.argv.count("-reset-dvo"):
     49            self.resetDvo = True
     50            sys.argv.remove("-reset-dvo")
     51
     52        if sys.argv.count("-retry"):
     53            self.retry = True
     54            sys.argv.remove("-retry")
     55
     56        if sys.argv.count("-simtest"):
     57            self.camera = "simtest"
     58            sys.argv.remove("-simtest")
     59
     60        if sys.argv.count("-one-batch"):
     61            self.onebatch = True
     62            sys.argv.remove("-one-batch")
    3763
    3864        ## name of the top-level jython script
  • trunk/ippToPsps/jython/detectionbatch.py

    r37106 r37246  
    1919from ipptopspsdb import IppToPspsDb
    2020from scratchdb import ScratchDb
     21from sqlUtility import sqlUtility
    2122
    2223import logging.config
     
    4142                 scratchDb,
    4243                 camID,
    43                  batchID,
    44                  useFullTables):
     44                 batchID):
    4545
    4646       super(DetectionBatch, self).__init__(
     
    5454               batchID,
    5555               "P2",
    56                gpc1Db.getCameraStageSmf(camID,skychunk.P2_smf_version),
    57                useFullTables)
     56               gpc1Db.getCameraStageSmf(camID,skychunk.P2_smf_version))
    5857
    5958       # get camera meta data
     
    9998           raise
    10099       
     100       # MJD-OBS is the exposure start, EXTIME / 172800 = (EXPTIME sec / 84600 sec/day) / 2
    101101       self.obsTime = float(self.header['MJD-OBS']) + (float(self.header['EXPTIME']) / 172800.0)
    102102     
     
    124124        self.logger.infoPair("Proccesing table", "FrameMeta")
    125125
    126         sql = "INSERT INTO FrameMeta (\
    127           frameID \
    128          ,frameName \
    129          ,cameraID \
    130          ,cameraConfigID \
    131          ,telescopeID \
    132          ,analysisVer \
    133          ,p1Recip \
    134          ,p2Recip \
    135          ,p3Recip \
    136          ,photoScat \
    137          ,expStart \
    138          ,expTime \
    139          ,airmass \
    140          ,raBore \
    141          ,decBore \
    142          ,ctype1 \
    143          ,ctype2 \
    144          ,crval1 \
    145          ,crval2 \
    146          ,crpix1 \
    147          ,crpix2 \
    148          ,cdelt1 \
    149          ,cdelt2 \
    150          ,pc001001 \
    151          ,pc001002 \
    152          ,pc002001 \
    153          ,pc002002 \
    154          ,polyOrder \
    155          ,pca1x3y0 \
    156          ,pca1x2y1 \
    157          ,pca1x1y2 \
    158          ,pca1x0y3 \
    159          ,pca1x2y0 \
    160          ,pca1x1y1 \
    161          ,pca1x0y2 \
    162          ,pca2x3y0 \
    163          ,pca2x2y1 \
    164          ,pca2x1y2 \
    165          ,pca2x0y3 \
    166          ,pca2x2y0 \
    167          ,pca2x1y1 \
    168          ,pca2x0y2 \
    169          ) VALUES ( \
    170         " + str(self.expID) + " \
    171         ,'" + self.expName + "' \
    172         ,1  \
    173         ,1  \
    174         ,1  \
    175         ,'" + str(self.analysisVer) + "' \
    176         ,' ' \
    177         ,' ' \
    178         ,' ' \
    179         ," + self.safeDictionaryAccess(self.header, 'ZPT_ERR') + " \
    180         ," + self.safeDictionaryAccess(self.header, 'MJD-OBS') + " \
    181         ," + self.safeDictionaryAccess(self.header, 'EXPREQ') + " \
    182         ," + self.safeDictionaryAccess(self.header, 'AIRMASS') + " \
    183         ," + self.safeDictionaryAccess(self.header, 'RA') + " \
    184         ," + self.safeDictionaryAccess(self.header, 'DEC') + " \
    185         ,'" + self.safeDictionaryAccess(self.header, 'CTYPE1') + "' \
    186         ,'" + self.safeDictionaryAccess(self.header, 'CTYPE2') + "' \
    187         ," + self.safeDictionaryAccess(self.header, 'CRVAL1') + " \
    188         ," + self.safeDictionaryAccess(self.header, 'CRVAL2') + " \
    189         ," + self.safeDictionaryAccess(self.header, 'CRPIX1') + " \
    190         ," + self.safeDictionaryAccess(self.header, 'CRPIX2') + " \
    191         ," + self.safeDictionaryAccess(self.header, 'CDELT1') + " \
    192         ," + self.safeDictionaryAccess(self.header, 'CDELT2') + " \
    193         ," + self.safeDictionaryAccess(self.header, 'PC001001') + " \
    194         ," + self.safeDictionaryAccess(self.header, 'PC001002') + " \
    195         ," + self.safeDictionaryAccess(self.header, 'PC002001') + " \
    196         ," + self.safeDictionaryAccess(self.header, 'PC002002') + " \
    197         ," + self.safeDictionaryAccess(self.header, 'NPLYTERM') + " \
    198         ," + self.safeDictionaryAccess(self.header, 'PCA1X3Y0') + " \
    199         ," + self.safeDictionaryAccess(self.header, 'PCA1X2Y1') + " \
    200         ," + self.safeDictionaryAccess(self.header, 'PCA1X1Y2') + " \
    201         ," + self.safeDictionaryAccess(self.header, 'PCA1X0Y3') + " \
    202         ," + self.safeDictionaryAccess(self.header, 'PCA1X2Y0') + " \
    203         ," + self.safeDictionaryAccess(self.header, 'PCA1X1Y1') + " \
    204         ," + self.safeDictionaryAccess(self.header, 'PCA1X0Y2') + " \
    205         ," + self.safeDictionaryAccess(self.header, 'PCA2X3Y0') + " \
    206         ," + self.safeDictionaryAccess(self.header, 'PCA2X2Y1') + " \
    207         ," + self.safeDictionaryAccess(self.header, 'PCA2X1Y2') + " \
    208         ," + self.safeDictionaryAccess(self.header, 'PCA2X0Y3') + " \
    209         ," + self.safeDictionaryAccess(self.header, 'PCA2X2Y0') + " \
    210         ," + self.safeDictionaryAccess(self.header, 'PCA2X1Y1') + " \
    211         ," + self.safeDictionaryAccess(self.header, 'PCA2X0Y2') + " \
    212         )"
    213 
    214         # print "frame meta sql: ", sql
    215 
    216         self.scratchDb.execute(sql)
     126        sqlLine = sqlUtility("INSERT INTO FrameMeta (")
     127
     128        # sqlLine.group("p1Recip",               ' ');
     129        # sqlLine.group("p2Recip",               ' ');
     130        # sqlLine.group("p3Recip",               ' ');
     131
     132        sqlLine.group("frameID",               str(self.expID));
     133        sqlLine.group("frameName",             self.expName);
     134        sqlLine.group("cameraID",              "1");
     135        sqlLine.group("cameraConfigID",        "1");
     136        sqlLine.group("telescopeID",           "1");
     137        sqlLine.group("analysisVer",           self.analysisVer);
     138        sqlLine.group("photoScat",             self.getKeyFloat(self.header, "%.8f", 'ZPT_ERR'));
     139        sqlLine.group("expStart",              self.getKeyFloat(self.header, "%.10f", 'MJD-OBS'));
     140        sqlLine.group("expTime",               self.getKeyFloat(self.header, "%.8f", 'EXPREQ'));
     141        sqlLine.group("airmass",               self.getKeyFloat(self.header, "%.8f", 'AIRMASS'));
     142        sqlLine.group("raBore",                self.getKeyFloat(self.header, "%.10f", 'RA'));
     143        sqlLine.group("decBore",               self.getKeyFloat(self.header, "%.10f", 'DEC'));
     144        sqlLine.group("ctype1",                self.getKeyValue(self.header, 'CTYPE1'));
     145        sqlLine.group("ctype2",                self.getKeyValue(self.header, 'CTYPE2'));
     146        sqlLine.group("crval1",                self.getKeyFloat(self.header, "%.8f", 'CRVAL1'));
     147        sqlLine.group("crval2",                self.getKeyFloat(self.header, "%.8f", 'CRVAL2'));
     148        sqlLine.group("crpix1",                self.getKeyFloat(self.header, "%.8f", 'CRPIX1'));
     149        sqlLine.group("crpix2",                self.getKeyFloat(self.header, "%.8f", 'CRPIX2'));
     150        sqlLine.group("cdelt1",                self.getKeyFloat(self.header, "%.8e", 'CDELT1'));
     151        sqlLine.group("cdelt2",                self.getKeyFloat(self.header, "%.8e", 'CDELT2'));
     152        sqlLine.group("pc001001",              self.getKeyFloat(self.header, "%.8e", 'PC001001'));
     153        sqlLine.group("pc001002",              self.getKeyFloat(self.header, "%.8e", 'PC001002'));
     154        sqlLine.group("pc002001",              self.getKeyFloat(self.header, "%.8e", 'PC002001'));
     155        sqlLine.group("pc002002",              self.getKeyFloat(self.header, "%.8e", 'PC002002'));
     156        sqlLine.group("polyOrder",             self.getKeyValue(self.header, 'NPLYTERM'));
     157        sqlLine.group("pca1x3y0",              self.getKeyFloat(self.header, "%.8e", 'PCA1X3Y0'));
     158        sqlLine.group("pca1x2y1",              self.getKeyFloat(self.header, "%.8e", 'PCA1X2Y1'));
     159        sqlLine.group("pca1x1y2",              self.getKeyFloat(self.header, "%.8e", 'PCA1X1Y2'));
     160        sqlLine.group("pca1x0y3",              self.getKeyFloat(self.header, "%.8e", 'PCA1X0Y3'));
     161        sqlLine.group("pca1x2y0",              self.getKeyFloat(self.header, "%.8e", 'PCA1X2Y0'));
     162        sqlLine.group("pca1x1y1",              self.getKeyFloat(self.header, "%.8e", 'PCA1X1Y1'));
     163        sqlLine.group("pca1x0y2",              self.getKeyFloat(self.header, "%.8e", 'PCA1X0Y2'));
     164        sqlLine.group("pca2x3y0",              self.getKeyFloat(self.header, "%.8e", 'PCA2X3Y0'));
     165        sqlLine.group("pca2x2y1",              self.getKeyFloat(self.header, "%.8e", 'PCA2X2Y1'));
     166        sqlLine.group("pca2x1y2",              self.getKeyFloat(self.header, "%.8e", 'PCA2X1Y2'));
     167        sqlLine.group("pca2x0y3",              self.getKeyFloat(self.header, "%.8e", 'PCA2X0Y3'));
     168        sqlLine.group("pca2x2y0",              self.getKeyFloat(self.header, "%.8e", 'PCA2X2Y0'));
     169        sqlLine.group("pca2x1y1",              self.getKeyFloat(self.header, "%.8e", 'PCA2X1Y1'));
     170        sqlLine.group("pca2x0y2",              self.getKeyFloat(self.header, "%.8e", 'PCA2X0Y2'));
     171
     172        sql = sqlLine.make(") VALUES ( ", ")")
     173
     174        try: self.scratchDb.execute(sql)
     175        except:
     176            self.logger.errorPair('failed sql: ', sql)
     177            raise
     178
    217179        self.scratchDb.updateAllRows("FrameMeta", "batchID", str(self.batchID))
    218180        self.scratchDb.updateAllRows("FrameMeta", "surveyID", str(self.surveyID))
     
    228190        tableName = "ImageMeta_" + ota
    229191       
    230         # XXX we drop the table above so it is not left behind on failure
    231         # drop then re-create table
    232         # self.scratchDb.dropTable(tableName)
     192        # we drop the table before calling this functoin so it is not left behind on failure
    233193        sql = "CREATE TABLE " + tableName + " LIKE ImageMeta"
    234194        try: self.scratchDb.execute(sql)
    235195        except: pass
     196
    236197        if (ota[0:2] == "XY"): ccdID = ota[2:4]
    237198        else: ccdID = 0
    238199
     200        psfFwhmMajor = self.getKeyFloat(header, "%.8f", 'FWHM_MAJ')
     201        psfFwhmMinor = self.getKeyFloat(header, "%.8f", 'FWHM_MIN')
     202        psfFwhm = 0.5*(float(psfFwhmMajor) + float(psfFwhmMinor))
     203
    239204        # insert image metadata into table
    240         sql = "INSERT INTO " + tableName + " ( \
    241                frameID \
    242                ,ccdID \
    243                ,bias \
    244                ,biasScat \
    245                ,sky \
    246                ,skyScat \
    247                ,magSat \
    248                ,completMag \
    249                ,astroScat \
    250                ,photoScat \
    251                ,numAstroRef \
    252                ,numPhotoRef \
    253                ,nx \
    254                ,ny \
    255                ,psfFwhm \
    256                ,psfWidMajor \
    257                ,psfWidMinor \
    258                ,psfTheta \
    259                ,momentXX \
    260                ,momentXY \
    261                ,momentYY \
    262                ,momentM3C \
    263                ,momentM3S \
    264                ,momentM4C \
    265                ,momentM4S \
    266                ,momentR1 \
    267                ,momentRH \
    268                ,apResid \
    269                ,dapResid \
    270                ,detectorID \
    271                ,qaFlags \
    272                ,detrend1 \
    273                ,detrend2 \
    274                ,detrend3 \
    275                ,detrend4 \
    276                ,detrend5 \
    277                ,detrend6 \
    278                ,detrend7 \
    279                ,detrend8 \
    280                ,photoZero \
    281                ,ctype1 \
    282                ,ctype2 \
    283                ,crval1 \
    284                ,crval2 \
    285                ,crpix1 \
    286                ,crpix2 \
    287                ,cdelt1 \
    288                ,cdelt2 \
    289                ,pc001001 \
    290                ,pc001002 \
    291                ,pc002001 \
    292                ,pc002002 \
    293                ,polyOrder \
    294                ,pca1x3y0 \
    295                ,pca1x2y1 \
    296                ,pca1x1y2 \
    297                ,pca1x0y3 \
    298                ,pca1x2y0 \
    299                ,pca1x1y1 \
    300                ,pca1x0y2 \
    301                ,pca2x3y0 \
    302                ,pca2x2y1 \
    303                ,pca2x1y2 \
    304                ,pca2x0y3 \
    305                ,pca2x2y0 \
    306                ,pca2x1y1 \
    307                ,pca2x0y2 \
    308                ) VALUES ( \
    309                " + str(self.expID) + " \
    310                ," + str(ccdID) + " \
    311                ," + str(self.bias) + " \
    312                ," + str(self.biasScat) + " \
    313                ," + self.safeDictionaryAccess(header, 'MSKY_MN') + " \
    314                ," + self.safeDictionaryAccess(header, 'MSKY_SIG') + " \
    315                ," + self.safeDictionaryAccess(header, 'FSATUR') + " \
    316                ," + self.safeDictionaryAccess(header, 'FLIMIT') + " \
    317                ," + self.safeDictionaryAccess(header, 'CERROR') + " \
    318                ," + self.safeDictionaryAccess(self.header, 'ZPT_OBS') + " \
    319                ," + self.safeDictionaryAccess(header, 'NASTRO') + " \
    320                ," + self.safeDictionaryAccess(header, 'NASTRO') + " \
    321                ," + self.safeDictionaryAccess(header, 'CNAXIS1') + " \
    322                ," + self.safeDictionaryAccess(header, 'CNAXIS2') + " \
    323                , ( " + self.safeDictionaryAccess(header, 'FWHM_MAJ') + " + " + self.safeDictionaryAccess(header, 'FWHM_MIN') + " ) / 2.0 \
    324                ," + self.safeDictionaryAccess(header, 'FWHM_MAJ') + " \
    325                ," + self.safeDictionaryAccess(header, 'FWHM_MIN') + " \
    326                ," + self.safeDictionaryAccess(header, 'ANGLE') + " \
    327                ,-999 \
    328                ,-999 \
    329                ,-999 \
    330                ,-999 \
    331                ,-999 \
    332                ,-999 \
    333                ,-999 \
    334                ,-999 \
    335                ,-999 \
    336                ," + self.safeDictionaryAccess(header, 'APMIFIT') + " \
    337                ," + self.safeDictionaryAccess(header, 'DAPMIFIT') + " \
    338                ,'" + self.safeDictionaryAccess(header, 'DETECTOR') + "' \
    339                ," + str(self.scratchDb.getDvoImageFlags(header['IMAGEID'])) + " \
    340                ,'" + self.safeDictionaryAccess(header, 'DETREND.MASK') + "' \
    341                ,'" + self.safeDictionaryAccess(header, 'DETREND.DARK') + "' \
    342                ,'" + self.safeDictionaryAccess(header, 'DETREND.FLAT') + "' \
    343                ,' ' \
    344                ,' ' \
    345                ,' ' \
    346                ,' ' \
    347                ,' ' \
    348                ," + self.safeDictionaryAccess(self.header, 'ZPT_OBS') + " \
    349                ,'" + self.safeDictionaryAccess(header, 'CTYPE1') + "' \
    350                ,'" + self.safeDictionaryAccess(header, 'CTYPE2') + "' \
    351                ," + self.safeDictionaryAccess(header, 'CRVAL1') + " \
    352                ," + self.safeDictionaryAccess(header, 'CRVAL2') + " \
    353                ," + self.safeDictionaryAccess(header, 'CRPIX1') + " \
    354                ," + self.safeDictionaryAccess(header, 'CRPIX2') + " \
    355                ," + self.safeDictionaryAccess(header, 'CDELT1') + " \
    356                ," + self.safeDictionaryAccess(header, 'CDELT2') + " \
    357                ," + self.safeDictionaryAccess(header, 'PC001001') + " \
    358                ," + self.safeDictionaryAccess(header, 'PC001002') + " \
    359                ," + self.safeDictionaryAccess(header, 'PC002001') + " \
    360                ," + self.safeDictionaryAccess(header, 'PC002002') + " \
    361                ," + self.safeDictionaryAccess(header, 'NPLYTERM') + " \
    362                ," + self.safeDictionaryAccess(header, 'PCA1X3Y0') + " \
    363                ," + self.safeDictionaryAccess(header, 'PCA1X2Y1') + " \
    364                ," + self.safeDictionaryAccess(header, 'PCA1X1Y2') + " \
    365                ," + self.safeDictionaryAccess(header, 'PCA1X0Y3') + " \
    366                ," + self.safeDictionaryAccess(header, 'PCA1X2Y0') + " \
    367                ," + self.safeDictionaryAccess(header, 'PCA1X1Y1') + " \
    368                ," + self.safeDictionaryAccess(header, 'PCA1X0Y2') + " \
    369                ," + self.safeDictionaryAccess(header, 'PCA2X3Y0') + " \
    370                ," + self.safeDictionaryAccess(header, 'PCA2X2Y1') + " \
    371                ," + self.safeDictionaryAccess(header, 'PCA2X1Y2') + " \
    372                ," + self.safeDictionaryAccess(header, 'PCA2X0Y3') + " \
    373                ," + self.safeDictionaryAccess(header, 'PCA2X2Y0') + " \
    374                ," + self.safeDictionaryAccess(header, 'PCA2X1Y1') + " \
    375                ," + self.safeDictionaryAccess(header, 'PCA2X0Y2') + " \
    376                )"
     205        sqlLine = sqlUtility("INSERT INTO " + tableName + "(")
     206
     207        sqlLine.group("frameID",          str(self.expID))
     208        sqlLine.group("ccdID",            str(ccdID))
     209        sqlLine.group("bias",             str(self.bias))
     210        sqlLine.group("biasScat",         str(self.biasScat))
     211        sqlLine.group("sky",              self.getKeyFloat(header, "%.8f", 'MSKY_MN'))
     212        sqlLine.group("skyScat",          self.getKeyFloat(header, "%.8f", 'MSKY_SIG'))
     213        sqlLine.group("magSat",           self.getKeyFloat(header, "%.8f", 'FSATUR'))
     214        sqlLine.group("completMag",       self.getKeyFloat(header, "%.8f", 'FLIMIT'))
     215        sqlLine.group("astroScat",        self.getKeyFloat(header, "%.8f", 'CERROR'))
     216        sqlLine.group("photoScat",        self.getKeyFloat(self.header, "%.8f", 'ZPT_OBS'))
     217        sqlLine.group("numAstroRef",      self.getKeyValue(header, 'NASTRO'))
     218        sqlLine.group("numPhotoRef",      self.getKeyValue(header, 'NASTRO'))
     219        sqlLine.group("nx",               self.getKeyInt(header, 0, 'CNAXIS1'))
     220        sqlLine.group("ny",               self.getKeyInt(header, 0, 'CNAXIS2'))
     221        sqlLine.group("psfFwhm",          str(psfFwhm))
     222        sqlLine.group("psfWidMajor",      psfFwhmMajor)
     223        sqlLine.group("psfWidMinor",      psfFwhmMinor)
     224        sqlLine.group("psfTheta",         self.getKeyFloat(header, "%.8f", 'ANGLE'))
     225        sqlLine.group("momentMajor",      self.getKeyFloat(header, "%.8f", 'IQ_FW1'))
     226        sqlLine.group("momentMinor",      self.getKeyFloat(header, "%.8f", 'IQ_FW2'))
     227        sqlLine.group("momentM2C",        self.getKeyFloat(header, "%.8f", 'IQ_M2C'))
     228        sqlLine.group("momentM2S",        self.getKeyFloat(header, "%.8f", 'IQ_M2S'))
     229        sqlLine.group("momentM3",         self.getKeyFloat(header, "%.8f", 'IQ_M3'))
     230        sqlLine.group("momentM4",         self.getKeyFloat(header, "%.8f", 'IQ_M4'))
     231        sqlLine.group("apResid",          self.getKeyFloat(header, "%.8f", 'APMIFIT'))
     232        sqlLine.group("dapResid",         self.getKeyFloat(header, "%.8f", 'DAPMIFIT'))
     233        sqlLine.group("detectorID",       self.getKeyValue(header, 'DETECTOR'))
     234        sqlLine.group("qaFlags",          str(self.scratchDb.getDvoImageFlags(header['IMAGEID'])))
     235        sqlLine.group("detrend1",         self.getKeyValue(header, 'DETREND.MASK'))
     236        sqlLine.group("detrend2",         self.getKeyValue(header, 'DETREND.DARK'))
     237        sqlLine.group("detrend3",         self.getKeyValue(header, 'DETREND.FLAT'))
     238        # sqlLine.group("detrend4",         " ")
     239        # sqlLine.group("detrend5",         " ")
     240        # sqlLine.group("detrend6",         " ")
     241        # sqlLine.group("detrend7",         " ")
     242        # sqlLine.group("detrend8",         " ")
     243        sqlLine.group("photoZero",        self.getKeyFloat(self.header, "%.8f", 'ZPT_OBS'))
     244        sqlLine.group("ctype1",           self.getKeyValue(header, 'CTYPE1'))
     245        sqlLine.group("ctype2",           self.getKeyValue(header, 'CTYPE2'))
     246        sqlLine.group("crval1",           self.getKeyFloat(header, "%.8f", 'CRVAL1'))
     247        sqlLine.group("crval2",           self.getKeyFloat(header, "%.8f", 'CRVAL2'))
     248        sqlLine.group("crpix1",           self.getKeyFloat(header, "%.8f", 'CRPIX1'))
     249        sqlLine.group("crpix2",           self.getKeyFloat(header, "%.8f", 'CRPIX2'))
     250        sqlLine.group("cdelt1",           self.getKeyFloat(header, "%.8e", 'CDELT1'))
     251        sqlLine.group("cdelt2",           self.getKeyFloat(header, "%.8e", 'CDELT2'))
     252        sqlLine.group("pc001001",         self.getKeyFloat(header, "%.8e", 'PC001001'))
     253        sqlLine.group("pc001002",         self.getKeyFloat(header, "%.8e", 'PC001002'))
     254        sqlLine.group("pc002001",         self.getKeyFloat(header, "%.8e", 'PC002001'))
     255        sqlLine.group("pc002002",         self.getKeyFloat(header, "%.8e", 'PC002002'))
     256        sqlLine.group("polyOrder",        self.getKeyInt(header, 0, 'NPLYTERM'))
     257
     258        nPolyterm = int(self.getKeyValue(header, 'NPLYTERM'))
     259        if nPolyterm > 1:
     260            sqlLine.group("pca1x2y0",         self.getKeyFloat(header, "%.8e", 'PCA1X2Y0'))
     261            sqlLine.group("pca1x1y1",         self.getKeyFloat(header, "%.8e", 'PCA1X1Y1'))
     262            sqlLine.group("pca1x0y2",         self.getKeyFloat(header, "%.8e", 'PCA1X0Y2'))
     263            sqlLine.group("pca2x2y0",         self.getKeyFloat(header, "%.8e", 'PCA2X2Y0'))
     264            sqlLine.group("pca2x1y1",         self.getKeyFloat(header, "%.8e", 'PCA2X1Y1'))
     265            sqlLine.group("pca2x0y2",         self.getKeyFloat(header, "%.8e", 'PCA2X0Y2'))
     266        else:
     267            sqlLine.group("pca1x2y0",         "-999")
     268            sqlLine.group("pca1x1y1",         "-999")
     269            sqlLine.group("pca1x0y2",         "-999")
     270            sqlLine.group("pca2x2y0",         "-999")
     271            sqlLine.group("pca2x1y1",         "-999")
     272            sqlLine.group("pca2x0y2",         "-999")
     273           
     274        if nPolyterm > 2:
     275            sqlLine.group("pca1x3y0",         self.getKeyFloat(header, "%.8e", 'PCA1X3Y0'))
     276            sqlLine.group("pca1x2y1",         self.getKeyFloat(header, "%.8e", 'PCA1X2Y1'))
     277            sqlLine.group("pca1x1y2",         self.getKeyFloat(header, "%.8e", 'PCA1X1Y2'))
     278            sqlLine.group("pca1x0y3",         self.getKeyFloat(header, "%.8e", 'PCA1X0Y3'))
     279            sqlLine.group("pca2x3y0",         self.getKeyFloat(header, "%.8e", 'PCA2X3Y0'))
     280            sqlLine.group("pca2x2y1",         self.getKeyFloat(header, "%.8e", 'PCA2X2Y1'))
     281            sqlLine.group("pca2x1y2",         self.getKeyFloat(header, "%.8e", 'PCA2X1Y2'))
     282            sqlLine.group("pca2x0y3",         self.getKeyFloat(header, "%.8e", 'PCA2X0Y3'))
     283        else:
     284            sqlLine.group("pca1x3y0",         "-999")
     285            sqlLine.group("pca1x2y1",         "-999")
     286            sqlLine.group("pca1x1y2",         "-999")
     287            sqlLine.group("pca1x0y3",         "-999")
     288            sqlLine.group("pca2x3y0",         "-999")
     289            sqlLine.group("pca2x2y1",         "-999")
     290            sqlLine.group("pca2x1y2",         "-999")
     291            sqlLine.group("pca2x0y3",         "-999")
     292
     293        sql = sqlLine.make(") VALUES ( ", ")")
    377294
    378295        try: self.scratchDb.execute(sql)
    379         except: print sql
     296        except:
     297            self.logger.errorPair('failed sql: ', sql)
     298            raise
    380299
    381300        self.scratchDb.updateFilterID(tableName, self.filter)
     
    407326        results['SATDET'] = 0
    408327
    409         # insert all detections into table
    410         sql = "INSERT IGNORE INTO " + pspsTableName + " ( \
    411                ippDetectID \
    412                ,randomDetID \
    413                ,filterID \
    414                ,surveyID \
    415                ,obsTime \
    416                ,xPos \
    417                ,yPos \
    418                ,xPosErr \
    419                ,yPosErr \
    420                ,psfFlux \
    421                ,psfFluxErr \
    422                ,psfMajorFWHM \
    423                ,psfMinorFWHM \
    424                ,psfTheta \
    425                ,psfCore \
    426                ,psfLikelihood \
    427                ,psfQf \
    428                ,momentXX \
    429                ,momentXY \
    430                ,momentYY \
    431                ,momentR1 \
    432                ,momentRH \
    433                ,momentM3C \
    434                ,momentM3S \
    435                ,momentM4C \
    436                ,momentM4S \
    437                ,apFlux \
    438                ,kronFlux \
    439                ,kronFluxErr \
    440                ,psfQfPerfect \
    441                ,psfChiSq \
    442                ,infoFlag \
    443                ,sky \
    444                ,skyErr \
    445                ,pltScale \
    446                ,posAngle \
    447                ,dataRelease \
    448                ) \
    449                SELECT \
    450                IPP_IDET \
    451                , FLOOR(RAND()*9223372036854775807) \
    452                , " + str(self.filterID) + "\
    453                , " + str(self.surveyID) + " \
    454                ," + str(self.obsTime) + " \
    455                ,X_PSF \
    456                ,Y_PSF \
    457                ,X_PSF_SIG \
    458                ,Y_PSF_SIG \
    459                ,PSF_INST_FLUX / " + self.header['EXPTIME'] + " \
    460                ,PSF_INST_FLUX_SIG / " + self.header['EXPTIME'] + " \
    461                ,PSF_MAJOR \
    462                ,PSF_MINOR \
    463                ,PSF_THETA \
    464                ,-999 \
    465                ,psfLikelihood(EXT_NSIGMA) \
    466                ,PSF_QF \
    467                ,MOMENTS_XX \
    468                ,MOMENTS_XY \
    469                ,MOMENTS_YY \
    470                ,MOMENTS_R1 \
    471                ,MOMENTS_RH \
    472                ,MOMENTS_M3C \
    473                ,MOMENTS_M3S \
    474                ,MOMENTS_M4C \
    475                ,MOMENTS_M4S \
    476                ,POW(10.0, -0.4 *AP_MAG) / " + self.header['EXPTIME'] + " \
    477                ,KRON_FLUX / " + self.header['EXPTIME'] + " \
    478                ,KRON_FLUX_ERR / " + self.header['EXPTIME'] + " \
    479                ,PSF_QF_PERFECT \
    480                ,PSF_CHISQ \
    481                ,FLAGS2 << 32 | FLAGS \
    482                ,SKY  / " + self.header['EXPTIME'] + " \
    483                ,SKY_SIGMA  / " + self.header['EXPTIME'] + " \
    484                ,PLTSCALE \
    485                ,POSANGLE \
    486                , " + str(self.skychunk.dataRelease) + "\
    487                FROM " + ippTableName
    488         # self.logger.info(sql)
    489 
    490 # these were used above (left over from before PSF_INST_FLUX, PSF_INST_FLUX_SIG were available?
    491 #               ,POW(10.0, (-0.4*PSF_INST_MAG)) / " + self.header['EXPTIME'] + "
    492 #               ,ABS((PSF_INST_MAG_SIG*(POW(10.0, (-0.4*PSF_INST_MAG)) / " + self.header['EXPTIME'] + ")) / 1.085736)
    493 
    494 # I need a way to choose the sql above based on the cmf version: V3 (LAP.PV1) does not have AP_FLUX
    495 # AP_FLUX is no              ,AP_FLUX / " + self.header['EXPTIME'] + "
    496 
    497         self.scratchDb.execute(sql)
    498 
    499         # XXX EAM : I removed this old fix for invalid fluxes
    500         # add a instFlux = 0.0 -> 0.000001
    501         # XXX EAM : why is this done?
    502         # sql="UPDATE " + pspsTableName + " SET psfFlux = 0.0000001 WHERE psfFlux =  0"
    503         # self.scratchDb.execute(sql)
    504      
     328        extTimeString = str(self.header['EXPTIME'])
     329
     330        # insert all detections into table : do NOT include the IGNORE unless we have to
     331        # sqlLine = sqlUtility("INSERT IGNORE INTO " + pspsTableName + " (")
     332        sqlLine = sqlUtility("INSERT INTO " + pspsTableName + " (")
     333
     334        # XXX WARNING: need to apply platescale to convert sizes to arcsec
     335        # XXX apFluxF or apFluxNpix + apFluxRadius?
     336
     337        sqlLine.group("ippDetectID",     "IPP_IDET")                                               
     338        sqlLine.group("randomDetID",     "FLOOR(RAND()*9223372036854775807)")                       
     339        sqlLine.group("filterID",        str(self.filterID))                                       
     340        sqlLine.group("surveyID",        str(self.surveyID))                                       
     341        sqlLine.group("obsTime",         str(self.obsTime))                                         
     342        sqlLine.group("xPos",            "X_PSF")                                                   
     343        sqlLine.group("yPos",            "Y_PSF")                                                   
     344        sqlLine.group("xPosErr",         "X_PSF_SIG")                                               
     345        sqlLine.group("yPosErr",         "Y_PSF_SIG")                                               
     346        sqlLine.group("pltScale",        "PLTSCALE")                                     
     347        sqlLine.group("posAngle",        "POSANGLE")                                     
     348        sqlLine.group("raErr",           "X_PSF_SIG * abs(PLTSCALE)")
     349        sqlLine.group("decErr",          "Y_PSF_SIG * abs(PLTSCALE)")
     350        sqlLine.group("psfFlux",         "PSF_INST_FLUX / " + extTimeString)
     351        sqlLine.group("psfFluxErr",      "PSF_INST_FLUX_SIG / " + extTimeString)
     352        sqlLine.group("psfMajorFWHM",    "PSF_FWHM_MAJ")                                               
     353        sqlLine.group("psfMinorFWHM",    "PSF_FWHM_MIN")                                               
     354        sqlLine.group("psfTheta",        "PSF_THETA")                                               
     355        sqlLine.group("psfCore",         "PSF_CORE")                                                   
     356        sqlLine.group("psfQf",           "PSF_QF")                                                 
     357        sqlLine.group("psfQfPerfect",    "PSF_QF_PERFECT")                               
     358        sqlLine.group("psfChiSq",        "PSF_CHISQ")                                     
     359        sqlLine.group("psfLikelihood",   "psfLikelihood(EXT_NSIGMA)")                               
     360        sqlLine.group("momentXX",        "MOMENTS_XX")                                             
     361        sqlLine.group("momentXY",        "MOMENTS_XY")                                             
     362        sqlLine.group("momentYY",        "MOMENTS_YY")                                             
     363        sqlLine.group("momentR1",        "MOMENTS_R1")                                             
     364        sqlLine.group("momentRH",        "MOMENTS_RH")                                             
     365        sqlLine.group("momentM3C",       "MOMENTS_M3C")                                             
     366        sqlLine.group("momentM3S",       "MOMENTS_M3S")                                             
     367        sqlLine.group("momentM4C",       "MOMENTS_M4C")                                             
     368        sqlLine.group("momentM4S",       "MOMENTS_M4S")                                             
     369        sqlLine.group("apFlux",          "AP_FLUX / " + extTimeString)
     370        sqlLine.group("apFluxErr",       "AP_FLUX_SIG / " + extTimeString)
     371        sqlLine.group("apFillF",         "AP_NPIX / (3.14159265359 * POW(AP_MAG_RADIUS - 0.5, 2))")
     372        sqlLine.group("apRadius",        "AP_MAG_RADIUS")
     373        sqlLine.group("kronFlux",        "KRON_FLUX / " + extTimeString)
     374        sqlLine.group("kronFluxErr",     "KRON_FLUX_ERR / " + extTimeString)
     375        sqlLine.group("kronRad",         "MOMENTS_R1 * 2.5")
     376        sqlLine.group("sky",             "SKY  / " + extTimeString)
     377        sqlLine.group("skyErr",          "SKY_SIGMA  / " + extTimeString)
     378        sqlLine.group("infoFlag",        "FLAGS")                         
     379        sqlLine.group("infoFlag2",       "FLAGS2")                         
     380        sqlLine.group("dataRelease",     str(self.skychunk.dataRelease))                 
     381
     382        sql = sqlLine.makeRaw(") SELECT ", " FROM " + ippTableName)
     383
     384        try: self.scratchDb.execute(sql)
     385        except:
     386            self.logger.errorPair("failed sql: ", sql)
     387            raise
     388
    505389        # NOTE : Flux limits : in the current PSPS schema, negative fluxes
    506390        # cause problems for sql queries which work in mags as SQL cannot do
    507391        # something like (f < 0.0) ? -999 : -2.5*log10(f)
    508392        # as a result, the negative fluxes here result in floating point errors
     393        # XXX EAM 2014072 : Is this still a problem?
    509394        sql = "UPDATE " + pspsTableName + " SET psfFlux = 1e20 WHERE psfFlux <= 0.0"
    510395        self.scratchDb.execute(sql)
     
    518403        # we don't delete these anymore
    519404        results['NULLINSTFLUX'] = 0;
    520        
    521405
    522406    '''
     
    575459        self.scratchDb.updateAllRows(tableName, "dataRelease", str(self.skychunk.dataRelease))
    576460
    577 
    578 
    579     '''
    580     Populates the DetectionCalib table for this OTA
    581     '''
    582     def populateDetectionCalibTableUpdateInsert(self, ota):
    583 
    584         tableName = "Detection_" + ota
    585         # drop then re-create table
    586         #self.scratchDb.dropTable(tableName)
    587         #sql = "CREATE TABLE " + tableName + " LIKE DetectionCalib"
    588         #try: self.scratchDb.execute(sql)
    589         #except: pass
    590 
    591         # insert all detections into table
    592         sql = "INSERT INTO " + tableName + " ( \
    593                objID \
    594                ,detectID \
    595                ,ippObjID \
    596                ,ippDetectID \
    597                ,filterID \
    598                ,surveyID \
    599                ) \
    600                SELECT \
    601                objID \
    602                ,detectID \
    603                ,ippObjID \
    604                ,ippDetectID \
    605                ,filterID \
    606                ,surveyID \
    607                FROM Detection_" + ota
    608 #        self.scratchDb.execute(sql)
    609 
    610         # insert calibration information from dvoDetections into the Table
    611         sql = "UPDATE " + tableName + " AS a, "  + self.scratchDb.dvoDetectionTable + " AS b \
    612             SET a.ra = b.ra, \
    613             a.dec = b.dec_, \
    614             a.raErr = b.raErr, \
    615             a.decErr = b.decErr, \
    616             a.zp = b.zp, \
    617             a.expTime = b.expTime, \
    618             a.airMass = b.airMass   \
    619             WHERE a.objID = b.objID AND a.detectID = b.detectID"
    620         self.scratchDb.execute(sql)
    621         self.scratchDb.updateAllRows(tableName, "dataRelease", str(self.skychunk.dataRelease))
    622        
    623     '''
    624     Populates the DetectionCalib table for this OTA
    625     '''
    626     def populateDetectionCalibTable(self, ota):
    627 
    628         # target table name:
    629         tableName = "Detection_" + ota
    630         # drop then re-create table
    631         #self.scratchDb.dropTable(tableName)
    632         #sql = "CREATE TABLE " + tableName + " LIKE Detection"
    633         #try: self.scratchDb.execute(sql)
    634         #except: pass
    635 
    636         externID = self.imageIDs[ota]
    637 
    638         imageID = self.scratchDb.getImageIDFromExternID(externID)
    639         self.logger.infoPair("obtained imageID",imageID)
    640         self.logger.infoPair("obtained externID",externID)
    641 
    642         # insert all detections into table
    643         sql = "Update Detection_" + ota + " AS a, "+ self.scratchDb.dvoDetectionTable + " as b \
    644           set a.ra=b.ra,            \
    645           a.dec = b.dec_,          \
    646           a.raErr = b.raErr,         \
    647           a.decErr = b.decErr,        \
    648           a.zp = b.zp,            \
    649           a.expTime = b.expTime,       \
    650           a.airMass = b.airMass       \
    651           WHERE (a.objID = b.objID AND a.detectID = b.detectID) \
    652           AND b.imageID = " + str(imageID)  \
    653  
    654 
    655         try: self.scratchDb.execute(sql)
    656         except:
    657             self.logger.info("failed to update data for detectionCalib")
    658             self.logger.infoPair("sql: ", sql)
    659             raise
    660        
    661     '''
    662     Populates the Detection table for this OTA
    663     '''
    664     def populateObjectCalColorTable(self, ota):
    665 
    666         tableName = "ObjectCalColor_" + ota
    667        
    668         # drop then re-create table
    669         self.scratchDb.dropTable(tableName)
    670         sql = "CREATE TABLE " + tableName + " LIKE ObjectCalColor"
    671         try: self.scratchDb.execute(sql)
    672         except: pass
    673 
    674         # insert all detections into table
    675         sql = "INSERT INTO " + tableName + " ( \
    676                objID \
    677                ,ippObjID \
    678                ,filterID \
    679                ) \
    680                SELECT \
    681                objID \
    682                ,ippObjID \
    683                ,filterID \
    684                FROM Detection_" + ota
    685         self.scratchDb.execute(sql)
    686 
    687         self.scratchDb.updateAllRows(tableName, "calibModNum", str(self.calibModNum))
    688         self.scratchDb.updateAllRows(tableName, "dataRelease", str(self.skychunk.dataRelease))
    689 
    690461    '''
    691462    Applies indexes and other constraints to the PSPS tables
     
    710481       
    711482        # check we have valid sourceID/imageID pair from the header
    712         if self.safeDictionaryAccess(header, 'SOURCEID') == "NULL": return False
    713         if self.safeDictionaryAccess(header, 'IMAGEID') == "NULL": return False
    714        
    715         # store sourceID/imageID combo in Db so DVO can look up later
    716         if not self.useFullTables:
    717             self.scratchDb.insertNewDvoExternID(header['SOURCEID'], header['IMAGEID'])
     483        if self.getKeyValue(header, 'SOURCEID') == "NULL": return False
     484        if self.getKeyValue(header, 'IMAGEID') == "NULL": return False
     485       
     486        # store sourceID/imageID combo in Db so DVO can look up later (XXX deprecated?)
     487        # self.scratchDb.insertNewDvoExternID(header['SOURCEID'], header['IMAGEID'])
    718488           
    719489        # store these for later
     
    746516        self.logger.infoPair("Reading", "FITS headers")
    747517        self.logger.infoPair("Populating table", "ImageMeta")
     518
     519        if self.config.camera == "gpc1":
     520            for x in range(self.startX, self.endX):
     521                for y in range(self.startY, self.endY):
     522                   
     523                    # dodge the corners
     524                    if x==0 and y==0: continue
     525                    if x==0 and y==7: continue
     526                    if x==7 and y==0: continue
     527                    if x==7 and y==7: continue
     528                   
     529                    ota = "XY%d%d" % (x, y)
     530               
     531                    if self.config.test and not ((x == 0) and (y == 1)):
     532                        print "skipping ota: " + ota
     533                        continue
     534                       
     535                    self.alterPspsTablesChip(ota, ota + ".hdr", x, y)
     536
     537        if self.config.camera == "simtest":
     538            # try the test Chip
     539            self.alterPspsTablesChip("Chip", "Chip.hdr", 0, 0)
     540
     541        # now run DVO code to get all IDs ( XXX deprecated, uses dvograbber)
     542        # if not self.getIDsFromDVO(): return False
     543
     544        # dec is reserved in MySQL, so STILTS replaces if with dec_, which is not the name of
     545        # the column in PSPS
     546        self.scratchDb.execute("ALTER TABLE Detection CHANGE dec_ `dec` double")
     547
     548        return True
     549
     550
     551    '''
     552    Applies indexes to the IPP tables
     553    '''
     554    def indexIppTables(self):
     555
     556        self.logger.infoPair("Creating indexes on", "IPP tables")
     557
    748558        for x in range(self.startX, self.endX):
    749559            for y in range(self.startY, self.endY):
    750                
     560
    751561                # dodge the corners
    752562                if x==0 and y==0: continue
     
    755565                if x==7 and y==7: continue
    756566
    757                 ota = "XY%d%d" % (x, y)
    758                
    759                 self.alterPspsTablesChip(ota, ota + ".hdr", x, y)
    760 
    761         # try the test Chip
    762         self.alterPspsTablesChip("Chip", "Chip.hdr", 0, 0)
    763 
    764         # now run DVO code to get all IDs
    765         if not self.useFullTables:
    766             if not self.getIDsFromDVO(): return False
    767 
    768         # dec is reserved in MySQL, so STILTS replaces if with dec_, which is not the name of
    769         # the column in PSPS
    770         self.scratchDb.execute("ALTER TABLE Detection CHANGE dec_ `dec` double")
    771 
    772         return True
    773 
    774 
    775     '''
    776     Applies indexes to the IPP tables
    777     '''
    778     def indexIppTables(self):
    779 
    780         self.logger.infoPair("Creating indexes on", "IPP tables")
    781 
    782         for x in range(self.startX, self.endX):
    783             for y in range(self.startY, self.endY):
    784 
    785                 # dodge the corners
    786                 if x==0 and y==0: continue
    787                 if x==0 and y==7: continue
    788                 if x==7 and y==0: continue
    789                 if x==7 and y==7: continue
    790 
    791567                extension = "XY%d%d_psf" % (x, y)
    792568                self.scratchDb.createIndex(extension, "IPP_IDET")
     
    803579        imageID = self.scratchDb.getImageIDFromExternID(externID)
    804580        self.logger.debug("Updating table '" + table + "' with DVO IDs using imageID = %d" % imageID)
     581
    805582        sql = "UPDATE IGNORE " + table + " AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
    806                a.ippObjID = b.ippObjID, \
    807                a.detectID = b.detectID, \
    808                a.objID = b.objID, \
    809                a.infoFlag = b.flags << 45 | a.infoFlag \
     583               a.objID        = b.objID, \
     584               a.detectID     = b.detectID, \
     585               a.ippObjID     = b.ippObjID, \
     586               a.dvoRegionID  = b.catID, \
     587               a.ra           = b.ra, \
     588               a.dec          = b.dec_, \
     589               a.zp           = b.zp, \
     590               a.telluricExt  = b.telluricExt, \
     591               a.airmass      = b.airmass, \
     592               a.expTime      = b.expTime, \
     593               a.infoFlag2    = (b.flags << 13) | a.infoFlag2 \
    810594               WHERE a.ippDetectID = b.ippDetectID \
    811595               AND b.imageID = " + str(imageID)
     
    817601    '''
    818602    def populatePspsTablesChip(self, chipname, x, y, results, tables):
    819         # XXX EAM NOTE: drop tables (Detection_, SkinnyObject_, DetectionCalib_, Detection_) here so
     603        # XXX EAM NOTE: drop tables Detection_* here so
    820604        # they do not polute the db?
    821605        # XXX or put an explicit drop at the end of the loop?
    822606
    823         #self.logger.infoTitle("Processing " + chipname)
     607        # self.logger.infoTitle("Processing " + chipname)
    824608        # this is a bit crude: if the chip is not present, this test will fail and the chip
    825609        # will be (correctly) skipped.  would be better to carry that information explicitly ("chip is missing")
     
    882666        self.scratchDb.execute(sql)
    883667       
    884         #self.logger.info("updated imagedata")
    885         self.populateSkinnyObjectTable(chipname)
    886         self.logger.info("updated skinnyobject")
    887  
    888         self.populateDetectionCalibTable(chipname)
    889         #self.logger.info("updated detectioncalibtable")
    890        
    891668        # add these to list of tables to export later
    892669        self.tablesToExport.append("ImageMeta_" + chipname)
     
    896673        self.logger.info("export Detection")
    897674
    898         self.tablesToExport.append("SkinnyObject_" + chipname)
    899         self.logger.info("export Skinny")
    900 
    901 
    902675        tables.append("Detection_" + chipname)
    903         self.logger.info("updated detectioncalibtable")
     676        self.logger.info("updated detection")
    904677
    905678        self.validChips.append(chipname)
     
    936709                if ota not in self.imageIDs: continue
    937710
     711                if self.config.test and not ((x == 0) and (y == 1)):
     712                    print "skipping ota " + ota
     713                    continue
     714
    938715                if self.populatePspsTablesChip(ota, x, y, results, tables): otaCount = otaCount + 1
    939716                if self.skipBatch:
     
    1045822    '''
    1046823    def importIppTables(self, filter=""):
    1047 
    1048        ## if self.config.test: regex = "XY33.psf"
    1049        ## else : regex = ".*.psf"
    1050        regex = ".*.psf"
    1051  
    1052        # XXX EAM NOTE : this is fragile : requires PS1_V4
    1053        # columns = "IPP_IDET X_PSF Y_PSF X_PSF_SIG Y_PSF_SIG PSF_INST_MAG PSF_INST_MAG_SIG PSF_INST_FLUX PSF_INST_FLUX_SIG PEAK_FLUX_AS_MAG PSF_MAJOR PSF_MINOR PSF_THETA EXT_NSIGMA PSF_QF MOMENTS_XX MOMENTS_XY MOMENTS_YY AP_MAG AP_FLUX KRON_FLUX KRON_FLUX_ERR FLAGS FLAGS2 SKY SKY_SIGMA EXT_NSIGMA PSF_QF_PERFECT PSF_CHISQ"
    1054 
    1055        # XXX EAM NOTE : this is fragile : requires PS1_V4
    1056        columns = "IPP_IDET X_PSF Y_PSF X_PSF_SIG Y_PSF_SIG PSF_INST_MAG PSF_INST_MAG_SIG PSF_INST_FLUX PSF_INST_FLUX_SIG PEAK_FLUX_AS_MAG PSF_MAJOR PSF_MINOR PSF_THETA EXT_NSIGMA PSF_QF MOMENTS_XX MOMENTS_XY MOMENTS_YY MOMENTS_R1 MOMENTS_RH MOMENTS_M3C MOMENTS_M3S MOMENTS_M4C MOMENTS_M4S AP_MAG KRON_FLUX KRON_FLUX_ERR FLAGS FLAGS2 SKY SKY_SIGMA EXT_NSIGMA PSF_QF_PERFECT PSF_CHISQ POSANGLE PLTSCALE"
    1057 
    1058        return super(DetectionBatch, self).importIppTables(columns, regex)
    1059 
     824       
     825        regex = ".*.psf"
     826        if self.config.test and self.config.camera == "gpc1":
     827            regex = "XY01.psf"
     828           
     829        # XXX EAM NOTE : this is fragile : requires PS1_V4
     830        # columns = "IPP_IDET X_PSF Y_PSF X_PSF_SIG Y_PSF_SIG PSF_INST_MAG PSF_INST_MAG_SIG PSF_INST_FLUX PSF_INST_FLUX_SIG PEAK_FLUX_AS_MAG PSF_MAJOR PSF_MINOR PSF_THETA EXT_NSIGMA PSF_QF MOMENTS_XX MOMENTS_XY MOMENTS_YY AP_MAG AP_FLUX KRON_FLUX KRON_FLUX_ERR FLAGS FLAGS2 SKY SKY_SIGMA EXT_NSIGMA PSF_QF_PERFECT PSF_CHISQ"
     831
     832        # XXX EAM NOTE : this is fragile : requires PS1_V5
     833        columns = "IPP_IDET X_PSF Y_PSF X_PSF_SIG Y_PSF_SIG POSANGLE PLTSCALE PSF_INST_FLUX PSF_INST_FLUX_SIG PSF_FWHM_MAJ PSF_FWHM_MIN PSF_THETA PSF_CORE PSF_QF PSF_QF_PERFECT PSF_CHISQ EXT_NSIGMA MOMENTS_XX MOMENTS_XY MOMENTS_YY MOMENTS_R1 MOMENTS_RH MOMENTS_M3C MOMENTS_M3S MOMENTS_M4C MOMENTS_M4S AP_FLUX AP_FLUX_SIG AP_NPIX AP_MAG_RADIUS KRON_FLUX KRON_FLUX_ERR SKY SKY_SIGMA FLAGS FLAGS2"
     834
     835        return super(DetectionBatch, self).importIppTables(columns, regex)
    1060836
    1061837    '''
     
    1064840    def exportPspsTablesToFits(self, regex="(.*)"):
    1065841       return super(DetectionBatch, self).exportPspsTablesToFits("([a-zA-Z]+)")
    1066 
  • trunk/ippToPsps/jython/dvo.py

    r36447 r37246  
    5050        self.regionsIngestedButOutOfDate = []
    5151       
    52         # we have (still) 3 modes of ingest from dvo cpt/cps/cpm files
    53         # 1) dvograbber (useFullTables == FALSE),
     52        # we USED TO have 3 modes of ingest from dvo cpt/cps/cpm files
     53        # 1) dvograbber (useStilts == TRUE, useFullTables == FALSE),
    5454        # 2) jython/stilts (useStilts == TRUE, useFullTables == TRUE)
    55         # 3) dvopsps (useStilts == FALSE, useFullTables == TRUE)
     55        # 3) dvopsps (useStilts == FALSE, useFullTables == FALSE)
    5656        # my goal (EAM, 2013/01/31) is to migrate to only dvopsps
    5757
    58         self.useStilts = 0
    59         self.scratchDb.setUseFullTables(True)
     58        self.scratchDb.setDvoTableNames()
    6059
    6160        # decide if we are using the right DVO for this scratchDb
     
    6463        # this scratch Db either has no DVO info ingested, or a different DVO ingested. Prompt user
    6564        if not self.correctDvo:
    66             print "*******************************************************************************"
    6765            self.logger.warning("switching to a new dvo: '" + self.skychunk.dvoLocation + "'")
    6866            # response = raw_input("(y/n) ")
     
    104102        # go no further if we've already partly ingested a different DVO
    105103        if not self.correctDvo: return
     104
     105        if (self.skychunk.dvoLocation == 'none'):
     106            # print "do not load Photcodes for place-holder DVO " + self.skychunk.dvoLocation
     107            return False
    106108
    107109        # check if we have up-to-date version
     
    156158        if not self.correctDvo: return False
    157159
     160        if (self.skychunk.dvoLocation == 'none'):
     161            # print "do not load SkyTable for place-holder DVO " + self.skychunk.dvoLocation
     162            return False
     163
    158164        path =  self.skychunk.dvoLocation + "/SkyTable.fits"
    159165        if self.scratchDb.alreadyImportedThisDvoTable(path):
     
    164170        self.logger.infoPair("DVO SkyTable.fits file", "NOT up-to-date")       
    165171
    166         if self.useStilts:
    167             self.importFits(
    168                 path,
    169                 "R_MIN R_MAX D_MIN D_MAX INDEX NAME",
    170                 self.scratchDb.dvoSkyTable)
    171         else:
    172            
    173             # create dvoSkyTable
    174             sql = "drop TABLE dvoSkyTable"
    175             try:
    176                 self.scratchDb.execute(sql)
    177             except: pass
    178 
    179             # create dvoSkyTable
    180             sql = "CREATE TABLE dvoSkyTable (R_MIN REAL, R_MAX REAL, D_MIN REAL, D_MAX REAL, INDEX_ INT, NAME CHAR(18))"
    181             self.scratchDb.execute(sql)
    182 
    183             # TODO path to DVO prog hardcoded temporarily
    184             cmd = "dvopsps skytable"
    185             cmd += " -dbhost " + self.scratchDb.dbHost
    186             cmd += " -dbname " + self.scratchDb.dbName
    187             cmd += " -dbuser " + self.scratchDb.dbUser
    188             cmd += " -dbpass " + self.scratchDb.dbPass
    189             cmd += " -D CATDIR " + self.skychunk.dvoLocation
    190 
    191             self.logger.infoPair("Running dvopsps", cmd)
    192             p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
    193             p.wait()
    194             if p.returncode != 0:
    195                 self.logger.errorPair("dvopsps failed on SkyTable.fits for ", self.skychunk.dvoLocation)
    196                 raise
     172        # drop dvoSkyTable (if it exists)
     173        sql = "drop TABLE dvoSkyTable"
     174        try: self.scratchDb.execute(sql)
     175        except: pass
     176
     177        # create dvoSkyTable
     178        sql = "CREATE TABLE dvoSkyTable (R_MIN REAL, R_MAX REAL, D_MIN REAL, D_MAX REAL, INDEX_ INT, NAME CHAR(18))"
     179        self.scratchDb.execute(sql)
     180
     181        # TODO path to DVO prog hardcoded temporarily
     182        cmd = "dvopsps skytable"
     183        cmd += " -dbhost " + self.scratchDb.dbHost
     184        cmd += " -dbname " + self.scratchDb.dbName
     185        cmd += " -dbuser " + self.scratchDb.dbUser
     186        cmd += " -dbpass " + self.scratchDb.dbPass
     187        cmd += " -D CATDIR " + self.skychunk.dvoLocation
     188
     189        self.logger.infoPair("Running dvopsps", cmd)
     190        p = Popen(cmd, shell=True, stdout=PIPE, stderr=PIPE)
     191        p.wait()
     192        if p.returncode != 0:
     193            self.logger.errorPair("dvopsps failed on SkyTable.fits for ", self.skychunk.dvoLocation)
     194            raise
    197195
    198196        self.logger.infoPair("Adding index to", self.scratchDb.dvoSkyTable)
     
    268266           regionDec = region[2]
    269267           regionPath = region[3]
    270 
    271            # get paths for this region for the file types we are interested in
    272            # XXX ipptopsps cannot check files -- it does not know where they are
    273            ## paths = []
    274            ## for fileType in self.ingestFileTypes:
    275            ##     paths.append(self.skychunk.dvoLocation + "/" + regionPath + "." + fileType)
    276 
    277            # check for the existence of all interested file types
    278            # XXX ipptopsps cannot check files -- it does not know where they are
    279            ## skipThisRegion = False
    280            ## for path in paths:
    281            ##     if not os.path.isfile(path):
    282            ##         skipThisRegion = True
    283            ##         break
    284 
    285            ## if skipThisRegion: continue
    286268
    287269           # ok, have real, populated files so add this region to the list
     
    680662                useP2 = 1
    681663
    682         if (useP2 ==0 and useST ==1):
    683             #grab only stacks
    684             cmd += " -photcode-start 11000 -photcode-end 11500"
    685 
    686         if (useP2 ==1 and useST==0):
    687             #grabd only P2s   
    688             cmd += " -photcode-start 10000 -photcode-end 10577"
    689 
     664        if (useP2 == 0 and useST == 1):
     665            # grab only stacks
     666            if (self.config.camera == "simtest"):
     667                # SIMTEST.x.SkyChip
     668                cmd += " -photcode-start 14100 -photcode-end 14500"
     669            else:
     670                # not gpc1test -> GPC1.x.SkyShip
     671                cmd += " -photcode-start 11000 -photcode-end 11500"
     672
     673        if (useP2 == 1 and useST == 0):
     674            # grab only P2s (4000-4500 are test cameras, SIMTEST and SIMMOSAIC)
     675            if (self.config.camera == "simtest"):
     676                # SIMTEST.x.Chip
     677                cmd += " -photcode-start  4100 -photcode-end 4500"
     678            else:
     679                # not gpc1test -> GPC1.x.XYnn
     680                cmd += " -photcode-start 10000 -photcode-end 10577"
    690681
    691682        self.logger.infoPair("Running dvopsps", cmd)
  • trunk/ippToPsps/jython/dvoobjects.py

    r35417 r37246  
    2727        self.ingestFileTypes = ['cpt', 'cps']
    2828        self.loadPhotcodes()
    29 
    30     '''
    31     Ingests object files for this region
    32     '''
    33     def ingestRegion(self, region):
    34 
    35        self.logger.infoPair("Ingesting objects for", region)
    36 
    37        for fileType in self.ingestFileTypes:
    38 
    39            path = self.skychunk.dvoLocation + "/" + region + "." + fileType
    40            tableName = self.scratchDb.getDbFriendlyTableName(region + "." + fileType)
    41 
    42            self.importFits(path, "*", tableName)
    43 
    44            self.scratchDb.setImportedThisDvoTable(path, region)
    45 
    46        return True
    47 
    4829
    4930    '''
  • trunk/ippToPsps/jython/gpc1db.py

    r36715 r37246  
    119119
    120120        try:
    121             # XXX EAM : test output
    122             rs = self.executeQuery(sql)
    123             while (rs.next()):
    124                rows.append([rs.getInt(1), rs.getFloat(2), rs.getFloat(3)])
    125             rs.close()
     121            rs = self.executeQuery(sql)
     122
    126123        except:
    127124            self.logger.exception("Can't query for ids in DVO")
    128125            self.logger.infoPair("failed sql:", sql)
    129             return rows
     126            sys.exit(1)
     127
     128        while (rs.next()):
     129            rows.append([rs.getInt(1), rs.getFloat(2), rs.getFloat(3)])
     130
     131        rs.close()
    130132
    131133        self.logger.debug("Found %d items in DVO database '%s' for stage='%s'" % (len(rows), dvoDb, stage))
     
    339341
    340342
    341         # XXX EAM : test output
    342343        self.logger.infoPair("smf files:", files)
    343344        if len(files) < 1: return None
  • trunk/ippToPsps/jython/initbatch.py

    r35097 r37246  
    3333            scratchDb,
    3434            batchID):
     35
    3536       super(InitBatch, self).__init__(logger,
    3637               config,
     
    4243               batchID,
    4344               "IN",
    44                None,
    45                0)
     45               None)
    4646
    4747       self.outputFitsFile = "00000000.FITS";
  • trunk/ippToPsps/jython/ippjython

    r35605 r37246  
    1313
    1414set JARDIR = $datadir/jar
     15
     16# XXX if you want to run a local test, use . for JYDIR
    1517set JYDIR = $datadir/jython
     18# set JYDIR = .
     19
    1620setenv IPPTOPSPS_DATA $datadir/ipptopsps
    1721
     
    4549shift
    4650
    47 # XXX if you want to run a test on a local file, use this line:
    48 # $JAVA -Xbootclasspath/a:$CLASSPATH -jar $JYTHON $classfile $*
    49 
    5051$JAVA -Xbootclasspath/a:$CLASSPATH -jar $JYTHON $JYDIR/$classfile $*
  • trunk/ippToPsps/jython/ipptopsps.py

    r35417 r37246  
    5555            raise
    5656
    57         print "check client status"
    5857        self.checkClientStatus()
    5958
     
    143142    def checkClientStatus(self):
    144143
    145         print "update client"
    146144        self.ippToPspsDb.updateClient(self.config.programName, self.HOST, self.PID)
    147145
    148         print "check killed"
    149146        if self.ippToPspsDb.isKilled(self.HOST, self.PID):
    150147            self.exitProgram("killed via Db")
     
    152149        # this loop pauses the process if we have no skychunk or we have set it to pause
    153150        firstTimeIn = True
    154         print "refresh skychunk"
    155151        while not self.refreshSkychunk() or self.ippToPspsDb.isPaused(self.HOST, self.PID):
    156 
    157152            self.ippToPspsDb.updateClient(self.config.programName, self.HOST, self.PID)
    158153            if self.ippToPspsDb.isKilled(self.HOST, self.PID):
     
    161156            firstTimeIn = False
    162157            time.sleep(self.PAUSEPERIOD)
    163 
    164158
    165159    '''
  • trunk/ippToPsps/jython/ipptopspsdb.py

    r36815 r37246  
    166166
    167167        return ids
    168 
    169     ## '''
    170     ## XXX EAM : removed this function and made it more explicit (with an additional block)
    171     ## Returns a list of merged batch IDs that are merged but not yet deleted
    172     ## '''
    173     ## def getMergedButNotDeletedBatchIDs(self, batchType, column):
    174     ##
    175     ##     sql = "SELECT DISTINCT batch_id \
    176     ##            FROM batch \
    177     ##            WHERE timestamp > '" + self.skychunk.epoch + "' \
    178     ##            AND batch_type = '" + batchType + "' \
    179     ##            AND dvo_db = '" + self.skychunk.dvoLabel + "' \
    180     ##            AND merged = 1 \
    181     ##            AND " + column + " = 0"
    182     ##
    183     ##     ids = []
    184     ##     try:
    185     ##         rs = self.executeQuery(sql)
    186     ##         while (rs.next()): ids.append(rs.getInt(1))
    187     ##         rs.close()
    188     ##     except:
    189     ##         self.logger.exception("Can't query for merged batch ids in ipptopsps Db")
    190     ##
    191     ##     self.logger.debug("Found %d merged but un-deleted items" % len(ids))
    192     ##
    193     ##     return ids
    194 
    195     ## '''
    196     ## Returns a list of batch IDs marked as 'purged' but not yet deleted
    197     ## XXX EAM : removed this function and made it more explicit (with an additional block)
    198     ## '''
    199     ## def getPurgedButNotDeletedBatchIDs(self, batchType, column):
    200     ##
    201     ##     sql = "SELECT DISTINCT batch_id \
    202     ##            FROM batch \
    203     ##            WHERE timestamp > '" + self.skychunk.epoch + "' \
    204     ##            AND batch_type = '" + batchType + "' \
    205     ##            AND dvo_db = '" + self.skychunk.dvoLabel + "' \
    206     ##            AND purged = 1 \
    207     ##            AND " + column + " = 0"
    208     ##
    209     ##     ids = []
    210     ##     try:
    211     ##         rs = self.executeQuery(sql)
    212     ##         while (rs.next()): ids.append(rs.getInt(1))
    213     ##         rs.close()
    214     ##     except:
    215     ##         self.logger.exception("Can't query for merged batch ids in ipptopsps Db")
    216     ##
    217     ##
    218     ##     self.logger.debug("Found %d merged but un-deleted items" % len(ids))
    219     ##
    220     ##     return ids
    221 
    222     ## '''
    223     ## Returns a list of processed batch IDs that have been loaded to the ODM but not yet deleted
    224     ## '''
    225     ## def getLoadedToODMButNotDeletedBatchIDs(self, batchType, column):
    226     ##
    227     ##     sql = "SELECT DISTINCT batch_id \
    228     ##            FROM batch \
    229     ##            WHERE timestamp > '" + self.skychunk.epoch + "' \
    230     ##            AND batch_type = '" + batchType + "' \
    231     ##            AND dvo_db = '" + self.skychunk.dvoLabel + "' \
    232     ##            AND (loaded_to_ODM = -1 OR merge_worthy = 1) \
    233     ##            AND " + column + " = 0"
    234     ##
    235     ##     ids = []
    236     ##     try:
    237     ##         rs = self.executeQuery(sql)
    238     ##         while (rs.next()): ids.append(rs.getInt(1))
    239     ##         rs.close()
    240     ##     except:
    241     ##         self.logger.exception("Can't query for merged batch ids in ipptopsps Db")
    242     ##
    243     ##     self.logger.debug("Found %d merged but un-deleted items" % len(ids))
    244     ##
    245     ##     return ids
    246 
    247     # '''
    248     # Returns a list of merged batch IDs that are not deleted from local disk
    249     # '''
    250     # def getMergedButNotDeletedFromLocalDisk(self, batchType):
    251     #     return self.getMergedButNotDeletedBatchIDs(batchType, "deleted_local")
    252 
    253     ## '''
    254     ## Returns a list of processed batch IDs that are loaded to the ODM, but not deleted from local disk
    255     ## '''
    256     ## def getLoadedToODMButNotDeletedFromLocalDisk(self, batchType):
    257     ##     return self.getLoadedToODMButNotDeletedBatchIDs(batchType, "deleted_local")
    258     ##
    259     ## '''
    260     ## Returns a list of processed batch IDs that are loaded to the ODM, but not deleted from datastore
    261     ## '''
    262     ## def getLoadedToODMButNotDeletedFromDatastore(self, batchType):
    263     ##     return self.getLoadedToODMButNotDeletedBatchIDs(batchType, "deleted_datastore")
    264     ##
    265     ## '''
    266     ## Returns a list of processed batch IDs that are loaded to the ODM, but not deleted from DXLayer
    267     ## '''
    268     ## def getLoadedToODMButNotDeletedFromDXLayer(self, batchType):
    269     ##     return self.getLoadedToODMButNotDeletedBatchIDs(batchType, "deleted_dxlayer")
    270 
    271     ## '''
    272     ## Returns a list of purged  batch IDs that not deleted from local disk
    273     ## '''
    274     ## def getPurgedButNotDeletedFromLocalDisk(self, batchType):
    275     ##     return self.getPurgedButNotDeletedBatchIDs(batchType, "deleted_local")
    276     ##
    277     ## '''
    278     ## Returns a list of purged batch IDs that are not deleted from datastore
    279     ## '''
    280     ## def getPurgedButNotDeletedFromDatastore(self, batchType):
    281     ##     return self.getPurgedButNotDeletedBatchIDs(batchType, "deleted_datastore")
    282 
    283168
    284169    '''
     
    786671            and not self.consistentlyFailed(batchType, stageID)):
    787672           
    788             self.logger.infoPair("heather:","passed logic")
     673            # self.logger.infoPair("heather:","passed logic")
    789674
    790675            sql = "INSERT INTO batch ( \
     
    803688                       '" + self.skychunk.name + "' \
    804689                       )"
    805             self.logger.infoPair("heather:","sql")
     690 
     691            # self.logger.infoPair("heather:",sql)
    806692
    807693            self.execute(sql)
     
    816702            except:
    817703                self.logger.exception("Unable to get batch ID")
     704                self.logger.infoPair("sql:",sql)
     705
    818706                batchID = -1
    819707
     
    1017905       response = raw_input(" * Name for new skychunk, or existing skychunk to edit? ")
    1018906       if response == "": return
     907       response = response.strip()
    1019908       self.skychunk.name = response
    1020909
     
    1056945           question = question +  "? "
    1057946           response = raw_input(question)
     947           response = response.strip()
     948           print "response: '" + response + "'"
    1058949           if response != "":
    1059950               if type.find("varchar") != -1 or type.find("timestamp") != -1: quotes = "'"
    1060951               else: quotes = ""
     952               # print "UPDATE skychunk SET " + field + " = " + quotes + response + quotes + " WHERE name = '" + self.skychunk.name + "'"
    1061953               self.execute("UPDATE skychunk SET " + field + " = " + quotes + response + quotes + " WHERE name = '" + self.skychunk.name + "'")
    1062954       
     
    11291021
    11301022        self.skychunk.batchTypes = []
    1131         try:
    1132             rs = self.executeQuery(sql)
    1133 
    1134             rs.first()
    1135             self.skychunk.datastoreProduct = rs.getString(1)
    1136             self.skychunk.datastoreType = rs.getString(2)
    1137             if rs.getInt(3) == 1: self.skychunk.datastorePublishing = True
    1138             else: self.skychunk.datastorePublishing = False
    1139             self.skychunk.dvoLabel = rs.getString(4)
    1140 
    1141             # if dvoLabel is null is can break queries, so set to something
    1142             if not self.skychunk.dvoLabel: self.skychunk.dvoLabel = "none"
    1143             self.skychunk.dvoLocation = rs.getString(5)
    1144             self.skychunk.minRa = rs.getDouble(6)
    1145             self.skychunk.maxRa = rs.getDouble(7)
    1146             self.skychunk.minDec = rs.getDouble(8)
    1147             self.skychunk.maxDec = rs.getDouble(9)
    1148 
    1149             self.skychunk.boxSize = rs.getDouble(10)
    1150             # self.skychunk.halfBox = self.skychunk.boxSize/2.0
    1151             # self.skychunk.boxSizeWithBorder = self.skychunk.boxSize + (self.skychunk.BORDER * 2)
    1152 
    1153             self.skychunk.basePath = rs.getString(11)
    1154             self.skychunk.dataRelease = rs.getInt(12)
    1155 
    1156             self.skychunk.deleteLocal = rs.getInt(13)
    1157             self.skychunk.deleteDatastore = rs.getInt(14)
    1158             self.skychunk.deleteDxLayer = rs.getInt(15)
    1159 
    1160             self.skychunk.epoch = rs.getString(16)
    1161 
    1162             self.skychunk.survey = rs.getString(17)
    1163             self.skychunk.pspsSurvey = rs.getString(18)
    1164 
    1165             if rs.getInt(19) == 1: self.skychunk.batchTypes.append("P2")
    1166             if rs.getInt(20) == 1: self.skychunk.batchTypes.append("ST")
    1167             if rs.getInt(21) == 1: self.skychunk.batchTypes.append("OB")
    1168             if rs.getInt(22) == 1: self.skychunk.batchTypes.append("DF")
    1169             if rs.getInt(23) == 1: self.skychunk.batchTypes.append("DO")
    1170             if rs.getInt(24) == 1: self.skychunk.batchTypes.append("FW")
    1171             if rs.getInt(25) == 1: self.skychunk.batchTypes.append("FO")
    1172 
    1173             self.skychunk.force = True # TODO
    1174             self.skychunk.parallel = False # TODO
    1175 
    1176             if rs.getInt(26) == 1: self.skychunk.parallel = True
    1177             self.skychunk.P2_smf_version = rs.getString(27)
    1178             self.skychunk.ST_cmf_version = rs.getString(28)
    1179             self.skychunk.trange_start = rs.getString(29)
    1180             self.skychunk.trange_end = rs.getString(30)
    1181 
    1182             if self.skychunk.parallel: print "USING parallel"
    1183             self.skychunk.isLoaded = True
    1184         except:
     1023
     1024        try:
     1025            rs = self.executeQuery("show tables")
     1026        except:
     1027            self.logger.errorPair("cannot even show tables?", "Boo hoo")
     1028            sys.exit(1)
     1029
     1030        # while rs.next():
     1031        #     print "table row"
     1032        #     print rs.getString(1)
     1033        #
     1034        # rs = self.executeQuery("select * from skychunk")
     1035        # while rs.next():
     1036        #     print "skychunk row"
     1037        #     print rs.getString(1)
     1038        #
     1039        # print "SQL (2): " + sql
     1040
     1041        try:
     1042            rs = self.executeQuery(sql)
     1043
     1044        except:
     1045            self.logger.errorPair("problem with sql query for skychunk", sql)
     1046            sys.exit(1)
     1047
     1048        if not rs.next():
    11851049            self.logger.errorPair("Could not read skychunk with name", self.skychunk.name)
    11861050            self.skychunk.isLoaded = False
     1051            return False
     1052
     1053        self.skychunk.datastoreProduct = rs.getString(1)
     1054        self.skychunk.datastoreType = rs.getString(2)
     1055        if rs.getInt(3) == 1: self.skychunk.datastorePublishing = True
     1056        else: self.skychunk.datastorePublishing = False
     1057        self.skychunk.dvoLabel = rs.getString(4)
     1058
     1059        # if dvoLabel is null is can break queries, so set to something
     1060        if not self.skychunk.dvoLabel: self.skychunk.dvoLabel = "none"
     1061        self.skychunk.dvoLocation = rs.getString(5)
     1062        self.skychunk.minRa = rs.getDouble(6)
     1063        self.skychunk.maxRa = rs.getDouble(7)
     1064        self.skychunk.minDec = rs.getDouble(8)
     1065        self.skychunk.maxDec = rs.getDouble(9)
     1066
     1067        self.skychunk.boxSize = rs.getDouble(10)
     1068        # self.skychunk.halfBox = self.skychunk.boxSize/2.0
     1069        # self.skychunk.boxSizeWithBorder = self.skychunk.boxSize + (self.skychunk.BORDER * 2)
     1070
     1071        self.skychunk.basePath = rs.getString(11)
     1072        self.skychunk.dataRelease = rs.getInt(12)
     1073
     1074        self.skychunk.deleteLocal = rs.getInt(13)
     1075        self.skychunk.deleteDatastore = rs.getInt(14)
     1076        self.skychunk.deleteDxLayer = rs.getInt(15)
     1077
     1078        self.skychunk.epoch = rs.getString(16)
     1079
     1080        self.skychunk.survey = rs.getString(17)
     1081        self.skychunk.pspsSurvey = rs.getString(18)
     1082
     1083        if rs.getInt(19) == 1: self.skychunk.batchTypes.append("P2")
     1084        if rs.getInt(20) == 1: self.skychunk.batchTypes.append("ST")
     1085        if rs.getInt(21) == 1: self.skychunk.batchTypes.append("OB")
     1086        if rs.getInt(22) == 1: self.skychunk.batchTypes.append("DF")
     1087        if rs.getInt(23) == 1: self.skychunk.batchTypes.append("DO")
     1088        if rs.getInt(24) == 1: self.skychunk.batchTypes.append("FW")
     1089        if rs.getInt(25) == 1: self.skychunk.batchTypes.append("FO")
     1090
     1091        self.skychunk.force = True # TODO
     1092        self.skychunk.parallel = False # TODO
     1093
     1094        if rs.getInt(26) == 1: self.skychunk.parallel = True
     1095        self.skychunk.P2_smf_version = rs.getString(27)
     1096        # options: "use_new", "not_reproc", "use_original"
     1097
     1098        self.skychunk.ST_cmf_version = rs.getString(28)
     1099        # options: not used?
     1100
     1101        # NOTE : the rs (ResultSet) class is somewhat annoying and finicky esp about timestamp values
     1102        # for example, rs.getTimestamp(N) fails silently if the value is not a valid time.  this is
     1103        # also true to getString() on the same column.  Docs for the ResultSet class can be found here:
     1104        # http://docs.oracle.com/javase/1.5.0/docs/api/java/sql/ResultSet.html?is-external=true
     1105
     1106        # rsmd = rs.getMetaData()
     1107        # print "got metadata"
     1108        # print "number of columns: " + str(rsmd.getColumnCount())
     1109        # print "label: " + rsmd.getColumnLabel(25)
     1110        # print "label: " + rsmd.getColumnLabel(29)
     1111        # print "name: " + rsmd.getColumnName(25)
     1112        # print "name: " + rsmd.getColumnName(29)
     1113        # print "typename: " + rsmd.getColumnTypeName(25)
     1114        # print "typename: " + rsmd.getColumnTypeName(29)
     1115
     1116        # epochStamp = rs.getTimestamp(16)
     1117        # print "epoch: " + epochStamp.toString()
     1118
     1119        # print "label: " + rsmd.getColumnLabel(16)
     1120        # print "name: " + rsmd.getColumnName(16)
     1121        # print "typename: " + rsmd.getColumnTypeName(16)
     1122
     1123        self.skychunk.trange_start = rs.getString(29)
     1124        # options: "YYYY-MM-DD,HH:MM:SS" or "0000-00-00 00:00:00"
     1125
     1126        self.skychunk.trange_end = rs.getString(30)
     1127        # options: "YYYY-MM-DD,HH:MM:SS" or "0000-00-00 00:00:00"
     1128
     1129        if self.skychunk.parallel: print "USING parallel"
     1130        self.skychunk.isLoaded = True
    11871131
    11881132        return self.skychunk.isLoaded
     
    13081252    def insertPending(self, box_id, batchType, ids):
    13091253
    1310         # print "starting insert pending"
     1254        print "starting insert pending"
    13111255
    13121256        # first delete old pending items
     
    13141258                WHERE box_id = " + str(box_id) + " \
    13151259                AND batch_type = '" + batchType + "'")
    1316 
    1317         # print "deleted old items"
    13181260
    13191261        for id in ids:
     
    13231265               (" + str(box_id) + ", '" + batchType + "', " + str(id) + ")"
    13241266
    1325             # print "sql: ", sql
    1326             self.execute(sql)
     1267            try: self.execute(sql)
     1268            except:
     1269                print "failed to insert into pending"
     1270                print "sql: " + sql
     1271                raise
    13271272
    13281273    '''
     
    13481293               GROUP BY ra_center LIMIT 1"
    13491294
    1350         # XXX print "sql: ", sql               
    1351 
    1352         try:
    1353             rs = self.executeQuery(sql)
    1354             rs.first()
    1355             raCenter = rs.getFloat(1)
    1356             rs.close()
    1357         except:
    1358             self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
    1359             sql = "SELECT ra_center, COUNT(*) AS numPending\
    1360                    FROM box \
    1361                    JOIN pending ON (id = box_id) \
    1362                    WHERE skychunk = '" + self.skychunk.name + "' \
    1363                    AND batch_type = '" + batchType + "' \
    1364                    GROUP BY ra_center \
    1365                    ORDER BY numPending \
    1366                    DESC LIMIT 1"
    1367 
    1368             try:
    1369                 rs = self.executeQuery(sql)
    1370                 rs.first()
    1371                 raCenter = rs.getFloat(1)
    1372                 rs.close()
    1373             except:
    1374                 self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
     1295        try: rs = self.executeQuery(sql)
     1296        except:
     1297            self.logger.errorPair("Problem querying for outstanding boxes", "error in sql?")
     1298            print "SQL: " + sql
     1299
     1300        if not rs.next():
     1301            self.logger.errorPair("No outstanding boxes", "nothing to do here")
     1302            rs.close()
     1303            self.unlockTables()
     1304            return ids
     1305
     1306        raCenter = rs.getFloat(1)
     1307        rs.close()
     1308
     1309        #except:
     1310        #    self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
     1311        #    sql = "SELECT ra_center, COUNT(*) AS numPending\
     1312        #           FROM box \
     1313        #           JOIN pending ON (id = box_id) \
     1314        #           WHERE skychunk = '" + self.skychunk.name + "' \
     1315        #           AND batch_type = '" + batchType + "' \
     1316        #           GROUP BY ra_center \
     1317        #           ORDER BY numPending \
     1318        #           DESC LIMIT 1"
     1319        #
     1320        #    try:
     1321        #        rs = self.executeQuery(sql)
     1322        #        rs.first()
     1323        #        raCenter = rs.getFloat(1)
     1324        #        rs.close()
     1325        #    except:
     1326        #        self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
    13751327
    13761328        # tests against ra_center need to use a finite box
     
    14211373               GROUP BY ra_center LIMIT 1"
    14221374
    1423         try:
    1424             rs = self.executeQuery(sql)
    1425             rs.first()
    1426             raCenter = rs.getFloat(1)
    1427             rs.close()
    1428         except:
    1429             self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
    1430             sql = "SELECT ra_center, COUNT(*) AS numPending\
    1431                    FROM box \
    1432                    JOIN pending ON (id = box_id) \
    1433                    WHERE skychunk = '" + self.skychunk.name + "' \
    1434                    GROUP BY ra_center \
    1435                    ORDER BY numPending \
    1436                    DESC LIMIT 1"
    1437 
    1438             try:
    1439                 rs = self.executeQuery(sql)
    1440                 rs.first()
    1441                 raCenter = rs.getFloat(1)
    1442                 rs.close()
    1443             except:
    1444                 self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
     1375        try: rs = self.executeQuery(sql)
     1376        except:
     1377            self.logger.errorPair("Problem querying for outstanding boxes", "error in sql?")
     1378            print "SQL: " + sql
     1379
     1380        if not rs.next():
     1381            self.logger.infoPair("No outstanding boxes", "nothing to do here")
     1382            rs.close()
     1383            self.unlockTables()
     1384            return ids
     1385
     1386        raCenter = rs.getFloat(1)
     1387        rs.close()
     1388
     1389        # except:
     1390        #     self.logger.errorPair("No free stripes", "trying to steal boxes from other client...")
     1391        #     sql = "SELECT ra_center, COUNT(*) AS numPending\
     1392        #            FROM box \
     1393        #            JOIN pending ON (id = box_id) \
     1394        #            WHERE skychunk = '" + self.skychunk.name + "' \
     1395        #            GROUP BY ra_center \
     1396        #            ORDER BY numPending \
     1397        #            DESC LIMIT 1"
     1398        #
     1399        #     try:
     1400        #         rs = self.executeQuery(sql)
     1401        #         rs.first()
     1402        #         raCenter = rs.getFloat(1)
     1403        #         rs.close()
     1404        #     except:
     1405        #         self.logger.errorPair("No outstanding boxes to steal", "no stripe obtained")
    14451406
    14461407        # tests against ra_center need to use a finite box
     
    16341595        self.logger.infoPair("Items written to Db", "%d" % count)
    16351596
    1636         # try:
    1637         #     self.execute("DROP TABLE all_pending_alt")
    1638         # except:
    1639         #     pass
    1640         #
    1641         # self.execute("CREATE TABLE all_pending_alt (stage_id bigint(20), ra_bore float, dec_bore float)")
    1642         # for row in rows:
    1643         #     try:
    1644         #         sql = "INSERT INTO all_pending_alt (stage_id, ra_bore, dec_bore) \
    1645         #                VALUES (%d, %f, %f)" % (row[0], row[1], row[2])
    1646         #         print "sql 2: ", sql
    1647         #         self.execute(sql)
    1648         #     except: continue
    1649         #
    1650         # count = self.getRowCount("all_pending_alt")
    1651         # self.logger.infoPair("Items written to alt Db", "%d" % count)
    1652 
    1653 
    16541597    '''
    16551598    Creates a temporary table and shoves it full of stage_ids and ra/dec coords
     
    16701613                       VALUES ( '" + dvo_db + "', '" + batchType + "'," + str(row[0]) + "," + str(row[1]) + " \
    16711614                       , " + str(row[2]) + ", '"+uniq+"' ) "
    1672                 print "sql 1: ", sql
     1615                # print "sql 1: ", sql
    16731616                self.execute(sql)
    16741617            except: continue
     
    16831626    '''
    16841627    def getItemsInThisBox(self, minRA, maxRA, minDEC, maxDEC):
    1685 
    1686         # the old linear size is ill-conceived
    1687         ## XX halfSide = self.skychunk.boxSize/2.0
    1688         ## XX minRa =  ra-halfSide
    1689         ## XX maxRa = ra+halfSide
    1690         ## XX minDec = dec-halfSide
    1691         ## XX maxDec = dec+halfSide
    16921628
    16931629        ids = []
     
    16981634               AND dec_bore BETWEEN " + str(minDEC) + " AND " + str(maxDEC)
    16991635
    1700         print "items: ", sql
    1701 
    1702         try:
    1703             rs = self.executeQuery(sql)
    1704             while (rs.next()): ids.append(rs.getInt(1))
     1636        try:
     1637            rs = self.executeQuery(sql)
     1638            while (rs.next()):
     1639                ids.append(rs.getInt(1))
    17051640        except:
    17061641            self.logger.errorPair("Can't get items in this box", sql)
  • trunk/ippToPsps/jython/loader.py

    r36709 r37246  
    160160                    self.logger.infoPair(batchType + " items found in this box", "%d" % len(ids))
    161161
    162                     useFullTables = 0
    163162                    if batchType != "OB":
    164 
    165                         if (self.dvoDetections.useStilts):
    166                             # look in DVO for this box (with extra border)
    167                             self.logger.infoPair("Querying DVO for this sky area", "")
    168 
    169                             # XXXX EAM : This code should not be used anymore
    170                             boxSize = 0.0
    171                             self.dvoDetections.setSkyAreaAsBox(boxDim['RA'], boxDim['DEC'], boxSize)
    172                             #self.dvoDetections.setSkyArea()
    173                             sizeToBeIngested = self.dvoDetections.getDiskSizeOfRegionsToBeIngested()
    174                             if sizeToBeIngested == 0.0: smfsPerGB = 999999999
    175                             else: smfsPerGB = len(ids)/sizeToBeIngested
    176                             self.logger.infoPair("DVO to be ingested", "%7.1e GB" % sizeToBeIngested)
    177                             self.logger.infoPair("smfs-per-GB", "%.1f" % smfsPerGB)
    178 
    179                             # should do we pre-ingest stuff from DVO?
    180                             # NOTE EAM : this skychunk loads the dvo detections into the mysql db
    181                             # XXXX EAM : this should happen for both P2 and Stack detection
    182                             # XXXX EAM : in parallel model, this should happen for all P2 & Stack batches
    183                             #
    184                             if (batchType == 'P2' or batchType == 'ST' or batchType == 'DF' or batchType == 'FW') and smfsPerGB > 30:
    185                                 if not self.dvoDetections.sync():
    186                                     self.logger.errorPair("Could not sync DVO with MySQL", "skipping")
    187                                     continue
    188                                
    189                                 useFullTables = 1
    190                         else:
    191                             # XXX EAM : this is not currently optional
    192                             # (it is the only path). either remove the
    193                             # non-native ingest code or make it an
    194                             # option if we are using the native
    195                             # loader, always use it need to work out a
    196                             # good boundary / region strategy in
    197                             # coordination with impact of mysql
    198                             # insertion
    199                             if not self.ippToPspsDb.isBoxIngested(boxId, self.scratchDb.dbHost):
    200                                 if not self.dvoDetections.nativeIngestDetections(boxId, boxDim):
    201                                     self.logger.error("Unable to ingest detections with nativeIngest")
    202                                     return False
    203 
    204                             useFullTables = 1
    205                
    206                     ## else:
    207                     ##     # if we are using the native loader, always use it
    208                     ##     # need to work out a good boundary / region strategy in coordination with
    209                     ##     # impact of mysql insertion
    210                     ##     self.dvoObjects.nativeIngestObjects(boxDim['RA'], boxDim['DEC'], boxSizeSansBorder)
    211                     ##     useFullTables = 1
     163                        if self.config.resetDvo or not self.ippToPspsDb.isBoxIngested(boxId, self.scratchDb.dbHost):
     164                            if not self.dvoDetections.nativeIngestDetections(boxId, boxDim):
     165                                self.logger.error("Unable to ingest detections with nativeIngest")
     166                                return False
    212167
    213168                    '''
    214169                    NOTE EAM : "TheseItems" refers to each of the stack CMFs, camera SMFs, or object batches
    215170                    '''
    216                     self.logger.infoBool("Using pre-ingested DVO data?", useFullTables)
    217                     if not self.processTheseItems(batchType, ids, useFullTables):
     171                    if not self.processTheseItems(batchType, ids):
    218172                        abort = True
    219173                        break
    220174                    self.logger.infoPair("processed","ok")
    221175
     176            self.logger.infoPair("done with processing boxes, numAttempts: ", str(numAttempts))
    222177            if abort or not self.checkClientStatus(): abort = True
    223178            elif numAttempts > 1 and not self.waitForPollTime():  break
     
    228183    Actually loops through items and processes them
    229184    '''
    230     def processTheseItems(self, batchType, ids, useFullTables):
     185    def processTheseItems(self, batchType, ids):
    231186   
    232187        self.logger.infoPair("%s items queued" % batchType, "%d" % len(ids))
     
    246201                continue
    247202            #self.logger.infoPair("heather:","passed logic")
     203
    248204            self.ippToPspsDb.unlockTables()
    249205            #self.logger.infoPair("heather:","unlock table")
     206
    250207            self.ippToPspsDb.deletePendingItem(batchType, id)
    251208            #self.logger.infoPair("heather:","deleted pending item")
     
    262219                            self.scratchDb,
    263220                            id,
    264                             batchID,
    265                             useFullTables)
     221                            batchID)
    266222                elif batchType == "ST":
    267223                    self.logger.infoPair("defining ST batch for sky_id:",id)
     
    273229                            self.scratchDb,
    274230                            id,
    275                             batchID,
    276                             useFullTables)
     231                            batchID)
    277232   
    278233                elif batchType == "OB":
     
    284239                            self.scratchDb,
    285240                            id,
    286                             batchID,
    287                             useFullTables)
     241                            batchID)
    288242   
    289243                elif batchType == "DF":
     
    295249                            self.scratchDb,
    296250                            id,
    297                             batchID,
    298                             useFullTables)
     251                            batchID)
    299252   
    300253                elif batchType == "DO":
     
    306259                            self.scratchDb,
    307260                            id,
    308                             batchID,
    309                             useFullTables)
     261                            batchID)
    310262   
    311263                elif batchType == "FW":
     
    317269                            self.scratchDb,
    318270                            id,
    319                             batchID,
    320                             useFullTables)
     271                            batchID)
    321272   
    322273                elif batchType == "FO":
     
    328279                            self.scratchDb,
    329280                            id,
    330                             batchID,
    331                             useFullTables)
     281                            batchID)
    332282                   
    333283                batch.run()
     
    337287                self.logger.error("EXCEPTION: " + str(e))
    338288                self.logger.errorPair("Problem with this %s batch (%d)" % (batchType, id), "skipping")
     289                sys.exit(1)
    339290                pass
    340291
  • trunk/ippToPsps/jython/mysql.py

    r35417 r37246  
    8383    '''
    8484    def lockTable(self, table):
     85        # print "Locking table: " + table
    8586        self.execute("LOCK TABLES " + table + " WRITE")
    8687
     
    8990    '''
    9091    def unlockTables(self):
     92        # print "Unlocking tables"
    9193        self.execute("UNLOCK TABLES")
    9294
     
    109111            print "failed to kill connection: ", connectionID
    110112
     113    def listTables(self):
     114
     115        sql = "show tables"
     116        rs = self.executeQuery(sql) 
     117        while (rs.next()):
     118            tableName = rs.getString(1)
     119            # print "table: " + tableName
     120        rs.close()
     121
    111122    '''
    112123    Checks whether this table exists
     
    200211
    201212    '''
     213    Add a column to the table
     214    '''
     215    def addColumn(self, table, column, type):
     216
     217        sql = "ALTER TABLE " + table + " ADD COLUMN " + column + " " + type
     218        try: self.execute(sql)
     219        except: return
     220
     221    '''
    202222    Drops a list of tables
    203223    '''
     
    271291        except: pass
    272292            #self.logger.warn("Index already in place on '" + column + "' for table '" + table + "'")
     293
     294    def addPrimaryKeyWithIgnore(self, table, column):
     295        # note that in mysql versions later than 5.1, this fails
     296        # unless the following is called first:
     297        # "set session old_alter_table=1"
     298
     299        # follow the command with
     300        # "set session old_alter_table=0"
     301
     302        # OF COURSE, this fails for mysql version <= 5.1...
     303        if self.scratchDb.version > 5.1:
     304            self.scratchDb.execute("set session old_alter_table=1")
     305
     306        # I should probably do this before the whole table is built, right?
     307        sql = "ALTER IGNORE TABLE " + table + " ADD PRIMARY KEY (" + column + ")"
     308        self.scratchDb.execute(sql)
     309       
     310        if self.scratchDb.version > 5.1:
     311            self.scratchDb.execute("set session old_alter_table=0")
    273312
    274313    '''
  • trunk/ippToPsps/jython/objectbatch.py

    r36744 r37246  
    1515from scratchdb import ScratchDb
    1616from dvoobjects import DvoObjects
     17from sqlUtility import sqlUtility
    1718
    1819import logging.config
     
    3738                 scratchDb,
    3839                 dvoID,
    39                  batchID,
    40                  useFullTables):
     40                 batchID):
    4141
    4242       super(ObjectBatch, self).__init__(
     
    5050               batchID,
    5151               "OB",
    52                None,
    53                1)
     52               None)
    5453
    5554       try:
    56            ## XX pass in the existing connection to scratchDb
    5755           self.dvoObjects = DvoObjects(self.logger, self.config, self.skychunk, self.ippToPspsDb, self.scratchDb)
    5856       except:
     
    7472        self.region = self.scratchDb.getRegionNameFromThisDvoIndex(self.id)
    7573        self.ippToPspsDb.insertObjectMeta(self.batchID, self.region)
    76         if True:
    77             self.dvoObjects.nativeIngestRegion(self.region)
    78         else:
    79             self.dvoObjects.ingestRegion(self.region)
     74        self.dvoObjects.nativeIngestRegion(self.region)
    8075
    8176        cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt")
     
    9085    def alterPspsTables(self):
    9186
    92         # dec is reserved in MySQL, so STILTS replaces if with dec_, which PSPS doesn't like. so, force it back again using ``
    93       #  self.scratchDb.execute("ALTER TABLE MeanObject CHANGE dec_ `dec` double")
    94       #  self.scratchDb.execute("ALTER TABLE ObjectThin CHANGE dec_ `dec` double")
    95 
    9687        return True
    9788
     
    10192    def indexIppTables(self):
    10293
    103         self.logger.infoPair("Creating indexes on", "IPP tables")
     94        # since dvopsps is now used, no action is needed here
     95        # self.logger.infoPair("Creating indexes on", "IPP tables")
    10496
    10597        return True
     
    109101    '''
    110102    def updateMeanObjectFromCps(self, cpsTable):
     103
     104        # list of all filters PSPS is interested in
     105        # XXX EAM : 2014.07.24 : this list should probably be in a config file somewhere
     106        interestedFilters = ['g', 'r', 'i', 'z', 'y']
     107       
     108        filters = self.scratchDb.getOrderedListOfFiltersFromPhotcodesTable(interestedFilters)
     109   
     110        # get a count of the available filters
     111        filterCount = self.scratchDb.getCountOfFiltersFromPhotcodesTable()
     112
     113        self.logger.infoPair("Available filters in Photcodes", filters)
     114
     115        # the 'code' now defines the order in the cps file that the mags are listed for a given filter
     116        self.logger.infoPair("Adding magnitudes from", "cps table")
     117        for filter in filters:
     118
     119            filterID = self.scratchDb.getFilterID(filter[1])
     120
     121            # NOTE: Manipulation of FLAGS from cpsTable is to move ID_SECF_OBJ_EXT flag (0x01000000)
     122            # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags
     123            # XXX EAM : 20140724 this manipulation is no longer needed : [grizy]Flags is now 4 byte (was 8 byte!)
     124
     125            # set the MeanObject fields based largely on dvopsps cps fields:
     126
     127            # XXX EAM 20140724 : filterCount is meant to match
     128            # Nsecfilt, but is potentially not determined correctly.
     129            # use a call to a dvo-native command which knows how to
     130            # find Nsecfilt (or save in the db with dvopsps)
     131
     132            # the math below depends on filterCount = Nsecfilt and MeanObject.row being 1 counting but cps being 0 counting?
     133            # cps.row has a count of MeanObject.row * Nsecfilt + Nfilter
     134            #  " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
     135
     136            sql = "UPDATE MeanObject JOIN \
     137                   " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
     138                   SET \
     139                    MeanObject." + filter[1] + "QfPerfect      = PSF_QF_PERF_MAX \
     140                   ,MeanObject." + filter[1] + "MeanPSFMag     = MAG \
     141                   ,MeanObject." + filter[1] + "MeanPSFMagErr  = MAG_ERR \
     142                   ,MeanObject." + filter[1] + "MeanPSFMagStd  = MAG_STDEV \
     143                   ,MeanObject." + filter[1] + "MeanPSFMagMin  = MAG_MIN \
     144                   ,MeanObject." + filter[1] + "MeanPSFMagMax  = MAG_MAX \
     145                   ,MeanObject." + filter[1] + "MeanPSFMagNpt  = NUSED \
     146                   ,MeanObject." + filter[1] + "MeanKronMag    = MAG_KRON \
     147                   ,MeanObject." + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \
     148                   ,MeanObject." + filter[1] + "MeanKronMagStd = MAG_KRON_STDEV \
     149                   ,MeanObject." + filter[1] + "MeanKronMagNpt = NUSED_KRON \
     150                   ,MeanObject." + filter[1] + "MeanApMag      = MAG_AP \
     151                   ,MeanObject." + filter[1] + "MeanApMagErr   = MAG_AP_ERR \
     152                   ,MeanObject." + filter[1] + "MeanApMagStd   = MAG_AP_STDEV \
     153                   ,MeanObject." + filter[1] + "MeanApMagNpt   = NUSED_AP \
     154                   ,MeanObject." + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) "
     155
     156
     157            try: self.scratchDb.execute(sql)
     158            except:
     159                self.logger.errorPair("failed update MeanObject", sql)
     160                raise
     161
     162        # now set to null all MeanMagErr values > 0.5 (cut set by Gene, 2012-04-12)
     163        # XXX EAM 20140724 : keep this cut?
     164        cut = 0.5
     165        self.logger.infoPair("Setting to NULL all MeanMagErr value >", "%f" % cut)
     166        for filter in filters:
     167
     168            sql = "UPDATE MeanObject \
     169                   SET " + filter[1] + "MeanPSFMagErr = null \
     170                   WHERE " + filter[1] + "MeanPSFMagErr > " + str(cut)
     171            self.scratchDb.execute(sql)
     172
     173    '''
     174    Inserts stuff for all mags
     175    '''
     176    def updateObjectThinFromCps(self, cpsTable):
    111177
    112178        # list of all filters PSPS is interested in
     
    127193            filterID = self.scratchDb.getFilterID(filter[1])
    128194
    129             # NOTE: Manipulation of FLAGS from cpsTable is to move ID_SECF_OBJ_EXT flag (0x01000000)
    130             # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags
    131 
    132             sql = "UPDATE MeanObject JOIN \
    133                    " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
    134                    SET \
    135                    MeanObject." + filter[1] + "QfPerfect = -999 \
    136                    ,MeanObject." + filter[1] + "MeanPSFMag = MAG \
    137                    ,MeanObject." + filter[1] + "MeanPSFMagErr = MAG_ERR \
    138                    ,MeanObject." + filter[1] + "MeanKronMag = MAG_KRON \
    139                    ,MeanObject." + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \
    140                    ,MeanObject." + filter[1] + "nIncPSFMag = -999 \
    141                    ,MeanObject." + filter[1] + "MeanPSFMagStd = -999 \
    142                    ,MeanObject." + filter[1] + "MinPSFMag = -999 \
    143                    ,MeanObject." + filter[1] + "MaxPSFMag = -999 \
    144                    ,MeanObject." + filter[1] + "nIncKronMag = -999 \
    145                    ,MeanObject." + filter[1] + "MeanKronMag = -999 \
    146                    ,MeanObject." + filter[1] + "MeanKronMagStd = -999 \
    147                    ,MeanObject." + filter[1] + "MeanApMag = MAG_AP \
    148                    ,MeanObject." + filter[1] + "MeanApMagErr = MAG_ERR \
    149                    ,MeanObject." + filter[1] + "MeanApMagStd = MAG_STDEV \
    150                    ,MeanObject." + filter[1] + "nIncApMag = -999 \
    151                    ,MeanObject." + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) "
    152 
    153 
     195            # XXX EAM 20140724 : this is quite awkward, add a objRow and ncode value to mysql db table?
     196            # sqlLine = sqlUtility()
     197
     198            sql  = "UPDATE ObjectThin JOIN "
     199            sql += cpsTable + " AS cps "
     200            sql += "ON (cps.row = (ObjectThin.row * "
     201            sql += str(filterCount) + ")-("
     202            sql += str(filterCount) + " - "
     203            sql += str(filter[0])
     204            sql += ")) "
     205
     206            sql += "SET ObjectThin.n" + filter[1] + " = NCODE, "
     207            sql += "ObjectThin.nStackDetections = ObjectThin.nStackDetections + cps.NSTACK_DET"
    154208            self.logger.info(sql)
    155209            self.scratchDb.execute(sql)
    156210
    157         # now set to null all MeanMagErr values > 0.5 (cut set by Gene, 2012-04-12)
    158         cut = 0.5
    159         self.logger.infoPair("Setting to NULL all MeanMagErr value >", "%f" % cut)
    160         for filter in filters:
    161 
    162             sql = "UPDATE MeanObject \
    163                    SET " + filter[1] + "MeanPSFMagErr = null \
    164                    WHERE " + filter[1] + "MeanPSFMagErr > " + str(cut)
    165             self.scratchDb.execute(sql)
    166     '''
    167     Inserts stuff for all mags
    168     '''
    169     def updateObjectThinFromCps(self, cpsTable):
    170 
    171         # list of all filters PSPS is interested in
    172         interestedFilters = ['g', 'r', 'i', 'z', 'y']
    173        
    174         filters = self.scratchDb.getOrderedListOfFiltersFromPhotcodesTable(interestedFilters)
    175    
    176         # get a count of the available filters
    177         filterCount = self.scratchDb.getCountOfFiltersFromPhotcodesTable()
    178         # filterCount = len(filters)
    179 
    180         self.logger.infoPair("Available filters in Photcodes", filters)
    181 
    182         # the 'code' now defines the order in the cps file that the mags are listed for a given filter
    183         self.logger.infoPair("Adding magnitudes from", "cps table")
    184         for filter in filters:
    185 
    186             filterID = self.scratchDb.getFilterID(filter[1])
    187 
    188             # NOTE: Manipulation of FLAGS from cpsTable is to move ID_SECF_OBJ_EXT flag (0x01000000)
    189             # from bit 24 to bit 13 so that it fits into the SMALLINT Object.Flags
    190 
    191             sql = "UPDATE ObjectThin JOIN \
    192                    " + cpsTable + " AS cps ON (cps.row = (ObjectThin.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
    193                    SET \
    194                    ObjectThin.n" + filter[1] + " = NCODE "
    195             self.logger.info(sql)
    196             self.scratchDb.execute(sql)
    197 
     211        # XXX this does not seem like a good thing to leave in SQL
    198212        self.logger.infoPair("Calculating nDetections from", "n[filters]")
    199213        for filter in filters:
    200214            # now do a sum of n[filters], but do not include the ones with -999
    201             sql = "UPDATE ObjectThin   \
    202                    SET nDetections = nDetections + n" + filter[1] + " \
    203                    WHERE n" + filter[1] + " != -999"
    204             self.scratchDb.execute(sql)
    205            
    206 
     215            sql  = "UPDATE ObjectThin "
     216            sql += "SET nDetections = nDetections + n" + filter[1]
     217            sql += " WHERE n" + filter[1] + " != -999"
     218            self.scratchDb.execute(sql)
    207219
    208220    '''
    209221    give objectName to objectThin
     222    XXX EAM 20140714 : This seems quite inefficient in SQL, move to dvopsps?
    210223    '''
    211224    def updateObjName(self):
     
    281294            return False
    282295
    283 
    284 
    285 
    286 
    287 
    288 
    289296    '''
    290297    Populates the Object table
     
    296303
    297304        if False:
     305            # XXX EAM 20140724 : this is probably wrong : flux measurements can be 0.0 or negative: please review
    298306            self.logger.infoPair("setting to null  > 1e-38 and < 1e-38 in", "cps FLUX_KRON_ERR")
    299307            sql = "UPDATE " + cpsTableName + " set FLUX_KRON_ERR = NULL where FLUX_KRON_ERR < 1e-37 AND FLUX_KRON_ERR > -1e-37 "
     308            self.exitProgram("review this code" + sql)
    300309     
    301310            try:
     
    315324
    316325       
    317         self.logger.infoPair("Populating", "ThinObject")
    318         self.logger.infoPair("Inserting objects from", "cpt file")
    319 
    320         # note `` around dec here, as this is a reserved word in MySQL
    321         sql = "INSERT IGNORE INTO ObjectThin (\
    322                objID \
    323                ,gcobjID \
    324                ,ippObjID \
    325                ,surveyID \
    326                ,skyCellID \
    327                ,randomID \
    328                ,batchID \
    329                ,dvoRegionID \
    330                ,dataRelease \
    331                ,objInfoFlag \
    332                ,qualityFlag \
    333                ,consistencyFlag \
    334                ,raStack \
    335                ,decStack \
    336                ,raStackErr \
    337                ,decStackErr \
    338                ,raMean \
    339                ,decMean \
    340                ,raMeanErr \
    341                ,decMeanErr \
    342                ,raMeanStd \
    343                ,decMeanStd \
    344                ,nStackObjectRows \
    345                ,nStackDetections \
    346                ,nDetections \
    347                 ) \
    348                SELECT \
    349                EXT_ID \
    350                , -999 \
    351                ,CAT_ID*1000000000 + OBJ_ID \
    352                ," + str(self.surveyID) + " \
    353                , -999 \
    354                , FLOOR(RAND()*9223372036854775807) \
    355                , " + str(self.batchID) + "\
    356                , -999 \
    357                , " + str(self.skychunk.dataRelease) + "\
    358                ,FLAGS \
    359                ,FLAGS >> 24 & 0xFF \
    360                , 0 \
    361                , -999 \
    362                , -999 \
    363                , -999 \
    364                , -999 \
    365                ,RA \
    366                ,DEC_ \
    367                ,RA_ERR \
    368                ,DEC_ERR \
    369                , -999 \
    370                , -999 \
    371                ,0 \
    372                ,0 \
    373                ,0 \
    374                 FROM " + cptTableName
     326        self.logger.info("Populating ThinObject")
     327        self.logger.info("Inserting objects from cpt file")
     328
     329        # note "dec" is a reserved word in MySQL
     330        # XXX EAM 20140724 : do not use INGORE unless we discover unavoidable problems...
     331        # INSERT IGNORE INTO ObjectThin
     332
     333        sqlLine = sqlUtility("INSERT INTO ObjectThin (")
     334
     335        sqlLine.group("objID",           "EXT_ID")
     336        sqlLine.group("ippObjID",        "OBJ_ID + (CAT_ID << 32)") # NOTE: shift by 32 bits exactly
     337        sqlLine.group("surveyID",        "'" + str(self.surveyID) + "'")
     338        sqlLine.group("randomID",        "FLOOR(RAND()*9223372036854775807)") # XXX where does this number come from??
     339        sqlLine.group("batchID",         "'" + str(self.batchID) + "'")
     340        sqlLine.group("dvoRegionID",     "CAT_ID")
     341        sqlLine.group("tessID",          "TESS_ID")
     342        sqlLine.group("projectionID",    "PROJECTION_ID")
     343        sqlLine.group("skycellID",       "SKYCELL_ID")
     344        sqlLine.group("dataRelease",     "'" + str(self.skychunk.dataRelease) + "'")
     345        sqlLine.group("objInfoFlag",     "FLAGS")
     346        sqlLine.group("qualityFlag",     "FLAGS >> 24 & 0xFF")
     347        sqlLine.group("consistencyFlag", "'0'")
     348        sqlLine.group("raStack",         "RA_STK")
     349        sqlLine.group("decStack",        "DEC_STK")
     350        sqlLine.group("raStackErr",      "RA_STK_ERR")
     351        sqlLine.group("decStackErr",     "DEC_STK_ERR")
     352        sqlLine.group("raMean",          "RA_MEAN")
     353        sqlLine.group("decMean",         "DEC_MEAN")
     354        sqlLine.group("raMeanErr",       "RA_ERR")
     355        sqlLine.group("decMeanErr",      "DEC_ERR")
     356        sqlLine.group("posMeanChisq",    "CHISQ_POS")
     357        sqlLine.group("nStackObjectRows", "'0'") # XXX I need to add / define this in dvopsps
     358        sqlLine.group("nStackDetections", "'0'")
     359        sqlLine.group("nDetections",      "'0'")
     360        sql = sqlLine.makeRaw(") SELECT ", " FROM " + cptTableName)
    375361
    376362        try:
     
    390376        self.updateObjName()
    391377
    392 
    393378        self.logger.infoPair("update ObjectThin from ","cps table")
    394379
    395380        self.updateObjectThinFromCps(cpsTableName)
    396381
     382        # XXX EAM 20140724 : is this necessary??
    397383        #objects can have out of range ra dec in dvo - need to find and kill them at the end
    398384
     
    455441        self.logger.infoPair("Populating MeanObject from ", "ObjectThin")
    456442
    457         sql = "INSERT INTO MeanObject ( \
    458                objID \
    459                ,gcobjID \
    460                ) \
    461                SELECT \
    462                objID \
    463                ,gcobjID \
    464                FROM ObjectThin"
     443        sql = "INSERT INTO MeanObject ( objID ) SELECT objID FROM ObjectThin"
    465444        try:
    466445            self.scratchDb.execute(sql)
  • trunk/ippToPsps/jython/queue.py

    r36697 r37246  
    2929        super(Queue, self).__init__(argv)
    3030
    31         # print "inited ipptopsps"
    32 
    3331        # create various objects
    3432        self.gpc1Db = Gpc1Db(self.logger, self.config)
    35         # print "connect to gpc1"
    3633
    3734        self.datastore = Datastore(self.logger, self.skychunk, self.ippToPspsDb)
    38 
    39         print "made datastore"
    4035
    4136        # connect to scratch database
    4237        self.scratchDb = ScratchDb(self.logger, self.config)
    4338
    44         print "connect to scratchdb"
    45 
    4639        try:
    47             print "why doesn't this work"
    4840            self.dvoObjects = DvoObjects(self.logger, self.config, self.skychunk, self.ippToPspsDb, self.scratchDb)
    4941        except:
     
    5143            raise
    5244
    53         print "got objects"
    54 
    5545        self.skychunk.printAll()
    5646
     
    6353    '''
    6454    def run(self):
    65         print "here"
     55        self.logger.info("------------- starting queue.run -----------------")
    6656        # this outer while loop simply waits a few minutes then starts queuing again (as more stuff may appear in DVO over time)
    6757        while True:
    6858
    6959            self.ippToPspsDb.removeAllBoxes()
    70             print "remove boxes"
     60
    7161            # queue up batches that are processed but not loaded to datastore
    7262            for batchType in self.skychunk.batchTypes:
     
    7767                # get totals for whole area to check if there is anything to do
    7868                processedIDs = self.ippToPspsDb.getProcessedIDs(batchType)
    79                 print "got processed ids"
    8069                consistantlyFailedIDs = self.ippToPspsDb.getConsistentlyFailedIDs(batchType)
    81                 print "got here"
     70
    8271                # for object batches, get full list of stuff from Dvo
    8372                # XXX : need to fix 'dvo.setSkyArea' or this may not return the full list for a parallel dvo
    84             #for object-like batches, info comes from dvo
     73
     74                # for object-like batches, info comes from dvo
    8575                if (batchType == "OB" or batchType =="DO" or batchType =="FO"):
    8676                    self.dvoObjects.setSkyArea(
     
    144134                    if (dec > 85): raise
    145135
    146                     print "dec, dD: ", dec, dD ,self.skychunk.maxDec
     136                    # print "dec, dD: ", dec, dD ,self.skychunk.maxDec
    147137
    148138                    # a given box centered at RA,DEC with (linear) size of SIDE has the following bounds
     
    152142                    ra = self.skychunk.minRa + dR
    153143                   
    154                     print "ra, dR, maxRa", ra, dR, self.skychunk.maxRa
     144                    # print "ra, dR, maxRa", ra, dR, self.skychunk.maxRa
    155145
    156146                    # XXX not sure why this is not done with a for-loop...
    157147                    while dec <= self.skychunk.maxDec:
    158148                        while ra <= self.skychunk.maxRa:
    159                            print "here"
    160149                           # a given box centered at RA,DEC with (linear) size of SIDE has the following bounds
    161150                           minRA  = ra  - dR
     
    175164                                       len(ids)))
    176165               
    177                            print "box_id: ", box_id
    178 
    179166                           if len(ids) > 0: self.ippToPspsDb.insertPending(box_id, batchType, ids)
    180167                           # print "inserted pending"
  • trunk/ippToPsps/jython/scratchdb.py

    r35417 r37246  
    5151    Sets whether we are using normal or pre-ingested DVO tables
    5252    '''
    53     def setUseFullTables(self, useFull):
    54 
    55         if useFull:
    56             self.dvoImagesTable = "dvoImagesFull"
    57             self.dvoDetectionTable = "dvoDetectionFull"
    58         else:
    59             self.dvoImagesTable = "dvoImages"
    60             self.dvoDetectionTable = "dvoDetection"
     53    def setDvoTableNames(self):
     54
     55        self.dvoImagesTable = "dvoImagesFull"
     56        self.dvoDetectionTable = "dvoDetectionFull"
    6157
    6258        self.logger.debugPair("Using DVO images table", self.dvoImagesTable)
     
    135131        return filterID
    136132
     133    '''
     134    Gets tess ID for this tess name
     135    '''
     136    def getTessID(self, name):
     137     
     138        sql = "SELECT tessID FROM TessellationType WHERE name = '" + name + "'"
     139        try:
     140            rs = self.executeQuery(sql)
     141            rs.first()
     142            tessID = rs.getInt(1)
     143        except:
     144            self.logger.errorPair("No tess ID found for tess", name)
     145            tessID = -1
     146
     147        return tessID
     148
    137149    '''
    138150    Gets imageID from extern ID
     
    244256                return True
    245257            else:
     258                self.logger.infoPair("Did NOT already import from",  path)
    246259                return False
    247260        except:
     261            print "***** exception in alreadyImportedThisDvoTable *****"
    248262            self.logger.exception("Unable to check whether this DVO table has been imported")
    249 
    250263
    251264    '''
     
    323336    def isCorrectDvo(self, path):
    324337
     338        sql = "show tables"
     339        try:
     340            rs = self.executeQuery(sql) 
     341            haveDone = False
     342            while (rs.next()):
     343                tableName = rs.getString(1)
     344                # print "table: " + tableName
     345                if tableName == self.dvoDoneTable:
     346                    haveDone = True
     347                   
     348            rs.close()
     349            if not haveDone:
     350                self.logger.info("dvoDone not yet built")
     351                return False
     352
     353        except Exception, e:
     354            print str(e)
     355            self.logger.errorPair("problem examining table", sql)
     356            sys.exit(1)
     357
    325358        sql = "SELECT path FROM " + self.dvoDoneTable + " WHERE path LIKE '%SkyTable.fits'"
    326         try:
    327             rs = self.executeQuery(sql) 
    328             rs.first()
    329 
     359        try: rs = self.executeQuery(sql) 
     360        except Exception, e:
     361            print str(e)
     362            self.logger.errorPair("problem querying for dvo path", path)
     363            sys.exit(1)
     364
     365        if not rs.next():
     366            self.logger.info("dvoDone exists, but is empty")
     367            return False
     368
     369        try:
    330370            head,tail = os.path.split(rs.getString(1))
    331371
     
    334374                return True
    335375            else:
    336                 self.logger.errorPair("DVO does not match. We have", head)
     376                self.logger.infoPair("DVO does not match. We have", head)
    337377                return False
    338378
    339379        except Exception, e:
    340380            print str(e)
    341             self.logger.errorPair("No DVO files ingested for this path", path)
    342             return False
     381            self.logger.errorPair("problem searching for DVO at", path)
     382            sys.exit(1)
    343383
    344384    '''
     
    387427            # if no returned rows, return an error
    388428            if not rs.next():
    389                 print "DVO lacks imageID ", imageID
    390                 print "sql: ", sql
     429                self.logger.infoPair("DVO lacks imageID ", imageID)
    391430                return False
    392431
     
    396435
    397436            else:
    398                 print "DVO has wrong imageID? ", imageID
    399                 print "result was ", rs.getInt(1)
    400                 print "sql: ", sql
     437                self.logger.error("DVO has wrong imageID? ")
     438                self.logger.error("imageID: ", imageID)
     439                self.logger.error("EXTERN_ID: ", rs.getInt(1))
     440                self.logger.infoPair("sql: ", sql)
    401441                raise
    402442
     
    415455   
    416456        dvoImagesTable = "dvoImages"
    417         dvoDetectionTable = "dvoDetections"
     457        dvoDetectionTable = "dvoDetection"
    418458
    419459        # drop and create Images table
    420         self.logger.debugPair("Creating DVO table", dvoImagesTable)
     460        self.logger.infoPair("Creating DVO table", dvoImagesTable)
    421461        sql = "DROP TABLE " + dvoImagesTable
    422462
     
    438478
    439479        # now detection table
    440         self.logger.debugPair("Creating DVO table", dvoDetectionTable)
     480        self.logger.infoPair("Dropping DVO table", dvoDetectionTable)
    441481        sql = "DROP TABLE " + dvoDetectionTable
    442482        try: self.execute(sql)
    443         except: pass
    444 
    445         self.logger.debugPair("Creating DVO table", "dvoDetection")
     483        except:
     484            self.logger.errorPair("problem dropping DVO table", dvoDetectionTable)
     485            pass
     486
     487        self.logger.infoPair("Creating DVO table", "dvoDetection")
    446488        sql = "CREATE TABLE dvoDetection ( \
    447                imageID INT, \
    448                ippDetectID BIGINT, \
     489               objID BIGINT, \
    449490               detectID BIGINT, \
    450491               ippObjID BIGINT, \
    451                objID BIGINT, \
    452                flags INT, \
    453                zp FLOAT, \
    454                zpErr FLOAT, \
    455                airMass FLOAT, \
    456                expTime FLOAT, \
     492               ippDetectID BIGINT, \
     493               imageID INT, \
     494               catID INT, \
    457495               ra DOUBLE, \
    458496               dec_ DOUBLE, \
    459497               raErr FLOAT, \
    460498               decErr FLOAT, \
     499               zp FLOAT, \
     500               telluricExt FLOAT, \
     501               airmass FLOAT, \
     502               expTime FLOAT, \
     503               Mpsf FLOAT, \
     504               dMpsf FLOAT, \
     505               Mkron FLOAT, \
     506               dMkron FLOAT, \
     507               Map FLOAT, \
     508               dMap FLOAT, \
     509               flags INT, \
    461510               PRIMARY KEY (imageID, ippDetectID), \
    462511               KEY (objID, detectID) \
     
    466515        except:
    467516            self.logger.error("Unable to create DVO detection database table")
     517            self.sys.exit(1)
    468518
    469519        # XXX EAM : for the parallel mode, dvoDetection requires duplicate objID values!
     
    511561
    512562       # we need a big enough memory table for the incoming detections
    513        print "requested memory in gigs: ", self.memoryTableSize
     563       # print "requested memory in gigs: ", self.memoryTableSize
    514564       tableSize = int(self.memoryTableSize) * 1024 * 1024 * 1024
     565       self.logger.infoPair("setting max heap size: ", tableSize)
     566
    515567       sql = "set @@max_heap_table_size = " + str(tableSize)
    516        print "setting max heap size: ", sql
    517568       try: self.execute(sql)
    518569       except:
     
    550601       self.logger.infoPair("Dropping table", self.dvoSkyTable)
    551602       self.dropTable(self.dvoSkyTable)
    552        self.logger.infoPair("Dropping table", self.dvoDetectionTable)
    553        self.dropTable(self.dvoDetectionTable)
    554603       self.logger.infoPair("Dropping table", self.dvoDoneTable)
    555604       self.dropTable(self.dvoDoneTable)
     605
     606       # blow away existing dvoDetection table & re-crate
     607       if not self.resetDvoDetectionTable():
     608           self.logger.errorPair("Unable to reset scratch table", "DvoDetectionFull")
     609           return False
    556610
    557611       # create dvoDone table
     
    564618
    565619       self.changeEngineToInnoDB(self.dvoDoneTable)
    566 
    567        # blow away existing dvoDetection table & re-crate
    568        if not self.resetDvoDetectionTable():
    569            self.logger.errorPair("Unable to reset scratch table", "DvoDetectionFull")
    570            return False
    571620
    572621       return True
  • trunk/ippToPsps/jython/stackbatch.py

    r37106 r37246  
    1 q#!/usr/bin/env jython
     1#!/usr/bin/env jython
    22
    33import os.path
    44import glob
    55import sys
    6 
     6import math
    77
    88import stilts
     
    1717from ipptopspsdb import IppToPspsDb
    1818from scratchdb import ScratchDb
     19from sqlUtility import sqlUtility
    1920
    2021import logging.config
     
    3940                 scratchDb,
    4041                 skyID,
    41                  batchID,
    42                  useFullTables):
     42                 batchID):
    4343
    4444       super(StackBatch, self).__init__(
     
    5252               batchID,
    5353               "ST",
    54                "",
    55                #gpc1Db.getStackStageCmf(skychunk.dvoLabel, stackID),
    56                useFullTables)
    57 
    58        # self.printline = 0
    59        # # self.testprint()
    60 #       self.logger.infoPair("did I get", "here");
     54               None)
     55
    6156       self.stackType = "DEEP_STACK" # TODO
    62        ## = stuff I commented out for pv2 stacks
     57       self.stackTypeID = self.getStackTypeID()
    6358       
    64        #heather tasks
    65 
    66        # get a list of stackIDs
    67        self.logger.infoPair ("getting stackID for: ","g.00000")
    68        gstackID = gpc1Db.getStackIDFromSkyIDAndFilter( skychunk.dvoLabel, skyID, "g.00000")
    69        self.logger.infoPair ("getting stackID for: ","r.00000")
    70        rstackID = gpc1Db.getStackIDFromSkyIDAndFilter( skychunk.dvoLabel, skyID, "r.00000")
    71        self.logger.infoPair ("getting stackID for: ","i.00000")
    72        istackID = gpc1Db.getStackIDFromSkyIDAndFilter( skychunk.dvoLabel, skyID, "i.00000")
    73        self.logger.infoPair ("getting stackID for: ","z.00000")
    74        zstackID = gpc1Db.getStackIDFromSkyIDAndFilter( skychunk.dvoLabel, skyID, "z.00000")
    75        self.logger.infoPair ("getting stackID for: ","y.00000")
    76        ystackID = gpc1Db.getStackIDFromSkyIDAndFilter( skychunk.dvoLabel, skyID, "y.00000")
    77  #      self.logger.infoPair("g stackID ",gstackID)       
    78  #      self.logger.infoPair("r stackID ",rstackID)
    79  #      self.logger.infoPair("i stackID ",istackID)
    80  #      self.logger.infoPair("z stackID ",zstackID)
    81  #      self.logger.infoPair("y stackID ",ystackID)
    82  #      raise
    83        # from each stackget fits name from getStackStageCmf
    84        if gstackID > 0:
    85            self.logger.infoPair ("finding fits file for: ","g.00000")
    86            gfits = gpc1Db.getStackStageCmf(skychunk.dvoLabel, gstackID)
    87            self.gfits = gfits
    88        if rstackID > 0:   
    89            self.logger.infoPair ("finding fits file for: ","r.00000")
    90            rfits = gpc1Db.getStackStageCmf(skychunk.dvoLabel, rstackID)
    91            self.rfits = rfits
    92        if istackID > 0:   
    93            self.logger.infoPair ("finding fits file for: ","i.00000")
    94            ifits = gpc1Db.getStackStageCmf(skychunk.dvoLabel, istackID)
    95            self.ifits = ifits
    96        if zstackID > 0:   
    97            self.logger.infoPair ("finding fits file for: ","z.00000")
    98            zfits = gpc1Db.getStackStageCmf(skychunk.dvoLabel, zstackID)
    99            self.zfits = zfits
    100        if ystackID > 0:   
    101            self.logger.infoPair ("finding fits file for: ","y.00000")
    102            yfits = gpc1Db.getStackStageCmf(skychunk.dvoLabel, ystackID)
    103            self.yfits = yfits
    104 
    105        #from each of those get self.gheader, self.rheader, etc.
    106        if gstackID > 0:   
    107            if gfits:
    108                gheader = gfits.getPrimaryHeader()
    109                if not gheader:
    110                    self.logger.errorPair("could not read FITS PHU for ",gstackID)
    111                    raise
    112                self.gheader = gheader
    113        if rstackID > 0:       
    114            if rfits:
    115                rheader = rfits.getPrimaryHeader()
    116                if not rheader:
    117                    self.logger.errorPair("could not read FITS PHU for ",rstackID)
    118                    raise
    119                self.rheader = rheader
    120        if istackID > 0:       
    121            if ifits:
    122                iheader = ifits.getPrimaryHeader()
    123                if not iheader:
    124                    self.logger.errorPair("could not read FITS PHU for ",istackID)
    125                    raise
    126                self.iheader = iheader
    127        if zstackID > 0:
    128            if zfits:
    129                zheader = zfits.getPrimaryHeader()
    130                if not zheader:
    131                    self.logger.errorPair("could not read FITS PHU for ",zstackID)
    132                    raise
    133                self.zheader = zheader
    134        if ystackID > 0:
    135            if yfits:
    136                yheader = yfits.getPrimaryHeader()
    137                if not yheader:
    138                    self.logger.errorPair("could not read FITS PHU for ",ystackID)
    139                    raise
    140                self.yheader = yheader
    141        # get stack meta data
    142        self.gstackID = gstackID
    143        self.rstackID = rstackID
    144        self.istackID = istackID     
    145        self.zstackID = zstackID
    146        self.ystackID = ystackID
    147 
    148        metastackid = -999
    149        if gstackID > 0:
    150            metastackid = gstackID
    151        if rstackID > 0:
    152            metastackid = rstackID
    153        if istackID > 0:
    154            metastackid = istackID   
    155        if zstackID > 0:
    156            metastackid = zstackID
    157        if ystackID > 0:
    158            metastackid = ystackID
    159        #there is probably a better way to do this
    160        if metastackid < 0:
    161            self.logger.errorPair("can't find any stack ids...?? ","??")
     59       self.filters = ['g', 'r', 'i', 'z', 'y']
     60       self.stackIDs = {}
     61       self.imageIDs = {}
     62       self.fits = {}
     63       self.headerSet = {}
     64
     65       # we have two sets of imageIDs here:
     66
     67       # stackID : this is the id from the gpc1 stack table and (should) match the
     68       # cmf header keyword 'IMAGEID', this is also called EXTERN_ID in dvoImagesTable
     69       
     70       # imageID : this is the DVO-internal image ID for the stack cmf, and is called
     71       # IMAGE_ID in dvoImagesTable
     72
     73       # we just need one valid filter to get the generic metadata
     74       validFilter = 'none'
     75
     76       # get a list of stackIDs, identify the CMFs, read the headers:
     77       for filter in self.filters:
     78           filterName = filter + ".00000"
     79
     80           self.logger.infoPair ("getting stackID for: ", filterName)
     81           stackID = gpc1Db.getStackIDFromSkyIDAndFilter(skychunk.dvoLabel, skyID, filterName)
     82           self.stackIDs[filter] = stackID
     83
     84           if (stackID <= 0):
     85               continue
     86               
     87           validFilter = filter
     88
     89           # from each stack, get fits name from getStackStageCmf
     90           self.logger.infoPair ("finding fits file for: ", filterName)
     91           self.fits[filter] = gpc1Db.getStackStageCmf(skychunk.dvoLabel, stackID)
     92           if not self.fits[filter]:
     93               self.logger.errorPair("could not find cmf file name for ", stackID)
     94               raise
     95
     96           header = self.fits[filter].getPrimaryHeader()
     97           if not header:
     98               self.logger.errorPair("could not read FITS PHU for ", stackID)
     99               raise
     100
     101           self.headerSet[filter] = header
     102
     103           self.logger.infoPair(filter + " stackID = ", stackID)       
     104
     105           if not (str(stackID) == header['IMAGEID']):
     106               self.logger.errorPair("inconsistency: header IMAGEID does not match stackID", str(stackID) + " vs " + header['IMAGEID'])
     107               raise
     108
     109           imageID = self.scratchDb.getImageIDFromExternID(stackID)
     110           self.logger.infoPair(filter + " imageID = ", imageID)       
     111           self.imageIDs[filter] = imageID
     112
     113       # did we find any valid stacks?
     114       if validFilter == 'none':
     115           self.logger.errorPair("can't find any valid stacks...?? ","??")
    162116           raise
    163117   
    164        meta = self.gpc1Db.getStackStageMeta(metastackid) 
    165        ## this should be ok - it takes a stack_id and returns filter/skycell etc.
    166 
    167 
    168        if not meta:
    169            self.logger.errorPair("Could not get stack", "metadata")
     118       validStackID = self.stackIDs[validFilter]
     119
     120       # using the given stack ID, get the generic information: filter, skycell, etc.
     121       metadata = self.gpc1Db.getStackStageMeta(validStackID) 
     122
     123       if not metadata:
     124           self.logger.errorPair("Could not get stack metadata for", validStackID)
    170125           raise
    171126
    172        #self.filter = meta[0];
    173        #self.filter = self.filter[0:1]
    174        #self.filterID = self.scratchDb.getFilterID(self.filter)
    175        self.skycell = meta[1];
    176 
    177        # self.testprint()
    178 
    179        # skycell is, eg "skycell.1133.081"
    180        # we need 1133.081 for skycell, but store as an int, so instead store 1133081
    181        # projection cell is just the 1133 bit
    182        # This Is how it should be done
    183        #self.projectioncell = self.skycell[8:12]
    184        #self.skycell = self.skycell[8:]
    185        #self.skycell = self.skycell.replace(".", "")
    186        #self.projectioncell = self.skycell[8:12]
    187 
    188        # TODO this is the wrong way, but is consistent with SkyCell table in IN data
    189        self.skycell = self.skycell[8:]
    190        self.projectioncell = self.skycell
    191 
    192        # self.testprint()
    193 
    194        # proposed new values. Need to coordinate with the SkyCell table
    195        # this fits in 32 bits for 0 < tessID < 214
    196        # self.skycell = str( (tessID * (10000 * 1000)) + (int(self.projectioncell) * 1000) + cellID )
    197 
    198        self.analysisVer = meta[2];
    199 
    200        #self.expTime = gpc1Db.getStackExpTime(self.id)
     127       validHeader = self.headerSet[validFilter]
     128
     129       tessName = self.getKeyValue(header, 'TESS_ID')
     130       self.tessID = self.scratchDb.getTessID(tessName)
     131
     132       skycellName = self.getKeyValue(header, 'SKYCELL')
     133
     134       # XXX EAM 20140812 : I am hardwiring the parsing logic for RINGS vs LOCAL
     135       if tessName == 'RINGS.V3':
     136           # skycell is, eg "skycell.1133.081"
     137           #                 0123456789012345
     138           self.projectionID = skycellName[8:12]
     139           self.skycellID = skycellName[13:]
     140       else:
     141           # skycell is, eg "skycell.081"
     142           #                 01234567890
     143           self.projectionID = 0
     144           self.skycellID = skycellName[8:11]
     145       if self.skycellID == "":
     146           self.skycellID = -1
     147
     148       self.analysisVer = metadata[2];
     149
     150       # delete PSPS tables
     151       for filter in self.filters:
     152           tableName = filter + "StackMeta"
     153           self.dropTableVerbose(tableName)
     154
     155       self.dropTableVerbose("StackObjectThin")
     156       self.dropTableVerbose("StackObjectRaw")
    201157       
    202        # delete PSPS tables
    203        self.logger.infoPair("dropping table:","gStackMeta")
    204        self.scratchDb.dropTable("gStackMeta")
    205        self.logger.infoPair("dropping table:","rStackMeta")
    206        self.scratchDb.dropTable("rStackMeta")
    207        self.logger.infoPair("dropping table:","iStackMeta")
    208        self.scratchDb.dropTable("iStackMeta")
    209        self.logger.infoPair("dropping table:","zStackMeta")
    210        self.scratchDb.dropTable("zStackMeta")
    211        self.logger.infoPair("dropping table:","yStackMeta")
    212        self.scratchDb.dropTable("yStackMeta")
    213        self.logger.infoPair("dropping table:","StackObject")
    214 
    215        self.scratchDb.dropTable("StackObject")
    216        self.logger.infoPair("dropping table:","StackModelFit")
    217        self.scratchDb.dropTable("SkinnyObject")
    218        self.scratchDb.dropTable("StackModelFit")
    219        self.logger.infoPair("dropping table:","StackApFlx")
    220 
    221        self.scratchDb.dropTable("StackApFlx")
    222        self.logger.infoPair("dropping table:","StackToImage")
    223 
    224        self.scratchDb.dropTable("StackToImage")
    225              # self.testprint()
    226 
    227        # for PV2 we will have (grizy) of stack meta and skychip     
    228 
     158       self.dropTableVerbose("StackModelFitExtra")
     159       self.dropTableVerbose("StackModelFitDeV")
     160       self.dropTableVerbose("StackModelFitExp")
     161       self.dropTableVerbose("StackModelFitSer")
     162
     163       self.dropTableVerbose("StackApFlx")
     164       self.dropTableVerbose("StackApFlxFull")
     165       self.dropTableVerbose("StackApFlxFullC1")
     166       self.dropTableVerbose("StackApFlxFullC2")
     167
     168       self.dropTableVerbose("StackPetrosian")
     169
     170       self.dropTableVerbose("StackToImage")
    229171
    230172       # delete IPP tables
    231        self.scratchDb.dropTable("gSkyChip_psf")
    232        self.scratchDb.dropTable("gSkyChip_xrad")
    233        self.scratchDb.dropTable("gSkyChip_xfit")
    234        self.scratchDb.dropTable("gSkyChip_xsrc")
    235        self.scratchDb.dropTable("rSkyChip_psf")
    236        self.scratchDb.dropTable("rSkyChip_xrad")
    237        self.scratchDb.dropTable("rSkyChip_xfit")
    238        self.scratchDb.dropTable("rSkyChip_xsrc")
    239        self.scratchDb.dropTable("iSkyChip_psf")
    240        self.scratchDb.dropTable("iSkyChip_xrad")
    241        self.scratchDb.dropTable("iSkyChip_xfit")
    242        self.scratchDb.dropTable("iSkyChip_xsrc")
    243        self.scratchDb.dropTable("zSkyChip_psf")
    244        self.scratchDb.dropTable("zSkyChip_xrad")
    245        self.scratchDb.dropTable("zSkyChip_xfit")
    246        self.scratchDb.dropTable("zSkyChip_xsrc")
    247        self.scratchDb.dropTable("ySkyChip_psf")
    248        self.scratchDb.dropTable("ySkyChip_xrad")
    249        self.scratchDb.dropTable("ySkyChip_xfit")
    250        self.scratchDb.dropTable("ySkyChip_xsrc")
     173       if not self.config.retry:
     174           self.logger.info("dropping Stack cmf tables")
     175           for filter in self.filters:
     176               tableName = filter + "SkyChip_psf"
     177               self.scratchDb.dropTable(tableName)
     178               tableName = filter + "SkyChip_xrad"
     179               self.scratchDb.dropTable(tableName)
     180               tableName = filter + "SkyChip_xsrc"
     181               self.scratchDb.dropTable(tableName)
     182               tableName = filter + "SkyChip_xfit"
     183               self.scratchDb.dropTable(tableName)
    251184
    252185       # create an output filename, which is {stackID}.FITS
     
    263196       self.ippToPspsDb.insertStackMeta(self.batchID, "x" , self.stackType)
    264197
    265        # insert sourceID/imageID combo so DVO can look it up
    266        ##if not self.useFullTables:
    267        ##    self.scratchDb.insertNewDvoExternID(self.header['SOURCEID'], self.header['IMAGEID'])
    268 
    269        # self.testprint()
    270 
    271198       # dump stuff to log
    272199       self.logger.infoPair("Stack ID", "%d" % self.id)
    273200       self.logger.infoPair("Stack type", "%s" % self.stackType)
    274        self.logger.infoPair("Skycell", "%s" % self.skycell)
    275        self.logger.infoPair("Projectioncell", "%s" % self.projectioncell)
    276        ##self.logger.infoPair("Filter", "%s" % self.filter)
    277 
    278     '''
    279     Updates a table with stackMetaID
    280     '''
    281     def updateStackMetaID(self, table):
    282 
    283         sql = "UPDATE " + table + "  SET gstackMetaID=" + str(self.gstackID) + " \
    284               , rstackMetaID=" + str(self.rstackID) + " \
    285               , istackMetaID=" + str(self.istackID) + " \
    286               , zstackMetaID=" + str(self.zstackID) + " \
    287               , ystackMetaID=" + str(self.ystackID)   
    288      
    289         self.scratchDb.execute(sql)
    290 
    291     '''
    292     Updates a table with stackTypeID grabbed from FitModel init table
    293     '''
    294     def updateStackTypeID(self, table):
    295 
    296         sql = "UPDATE "+table+" AS a, StackType AS b SET a.stackTypeID=b.stackTypeID WHERE b.name = '" + self.stackType + "'"
    297         self.scratchDb.execute(sql)
    298 
    299 
    300     def testprint(self):
    301       print "here ", self.printline
    302       self.printline += 1
     201       self.logger.infoPair("SkycellID", "%s" % self.skycellID)
     202       self.logger.infoPair("ProjectionID", "%s" % self.projectionID)
     203
     204    ### *********************** main populate functions ************************************
     205
     206    '''
     207    Populates the StackMeta table, mainly from header values found in stack cmf FITS header
     208    '''
     209    def populateStackMeta(self,filter):
     210
     211        header = self.headerSet[filter]
     212        tablename = filter + "StackMeta"
     213        stackID = self.stackIDs[filter]
     214        filterName = filter + ".00000"
     215
     216        self.logger.infoPair("Populating table", tablename)
     217
     218        fwhm_maj    = self.getKeyFloat(header, "%.8f", 'FWHM_MAJ')
     219        fwhm_maj_uq = self.getKeyFloat(header, "%.8f", 'FW_MJ_UQ')
     220        psfmodel    = self.getKeyValue(header, 'PSFMODEL')
     221
     222        # make a table
     223        filterID = self.scratchDb.getFilterID(filter)
     224        self.logger.infoPair("filterID is ",str(filterID))
     225
     226        photoCalID = str(self.scratchDb.getPhotoCalID(stackID))
     227
     228        # mysql is sensitive to values which are ambiugously float.  eg
     229        # a warning is raised if we try to insert '25.' into a float field.
     230        # use getKeyFloat(hdr, format, key) to avoid this problem
     231
     232        sql = "CREATE TABLE " + tablename + " LIKE StackMeta"
     233        try: self.scratchDb.execute(sql)
     234        except: pass
     235
     236        sqlLine = sqlUtility("INSERT INTO " + tablename + " (")
     237
     238        sqlLine.group("stackMetaID",   str(stackID))       
     239        sqlLine.group("batchID",       str(self.batchID))
     240        sqlLine.group("surveyID",      str(self.surveyID))
     241        sqlLine.group("filterID",      str(filterID))           
     242        sqlLine.group("stackTypeID",   str(self.stackTypeID))
     243        sqlLine.group("tessID",        str(self.tessID))           
     244        sqlLine.group("projectionID",  str(self.projectionID))           
     245        sqlLine.group("skyCellID",     str(self.skycellID))           
     246        sqlLine.group("photoCalID",    photoCalID)
     247        sqlLine.group("analysisVer",   str(self.analysisVer))
     248        sqlLine.group("expTime",       self.getKeyFloat(header, "%.5f", 'EXPTIME')) 
     249        sqlLine.group("psfModelID",    psfmodel)           
     250        sqlLine.group("psfFwhm_mean",  fwhm_maj)     
     251        sqlLine.group("psfFwhm_max",   fwhm_maj_uq)   
     252        sqlLine.group("photoZero",     self.getKeyFloat(header, "%.5f", 'FPA.ZP'))
     253        sqlLine.group("ctype1",        header['CTYPE1']) 
     254        sqlLine.group("ctype2",        header['CTYPE2']) 
     255        sqlLine.group("crval1",        self.getKeyFloat(header, "%.8f", 'CRVAL1'))   
     256        sqlLine.group("crval2",        self.getKeyFloat(header, "%.8f", 'CRVAL2'))   
     257        sqlLine.group("crpix1",        self.getKeyFloat(header, "%.8f", 'CRPIX1'))   
     258        sqlLine.group("crpix2",        self.getKeyFloat(header, "%.8f", 'CRPIX2'))   
     259        sqlLine.group("cdelt1",        self.getKeyFloat(header, "%.8e", 'CDELT1'))   
     260        sqlLine.group("cdelt2",        self.getKeyFloat(header, "%.8e", 'CDELT2'))   
     261        sqlLine.group("pc001001",      self.getKeyFloat(header, "%.8e", 'PC001001'))
     262        sqlLine.group("pc001002",      self.getKeyFloat(header, "%.8e", 'PC001002'))
     263        sqlLine.group("pc002001",      self.getKeyFloat(header, "%.8e", 'PC002001'))
     264        sqlLine.group("pc002002",      self.getKeyFloat(header, "%.8e", 'PC002002'))
     265        sqlLine.group("dataRelease",   str(self.skychunk.dataRelease))
     266
     267        sql = sqlLine.make(") VALUES ( ", ")")
     268
     269        try: self.scratchDb.execute(sql)
     270        except:
     271            self.logger.error("problem with SQL: " + sql)
     272            raise
     273
     274        self.tablesToExport.append(tablename)
     275
     276    '''
     277    Populates the StackObjectThin table
     278    '''
     279    def populateStackObjectThin(self):
     280
     281        self.logger.infoPair("Procesing table", "StackObjectThin")
     282
     283        # insert the per-object data (IDs, random stack ID, dataRelease, etc)
     284        self.selectDvoObjIDs()
     285
     286        # add indexes StackObjectThin
     287        self.scratchDb.createIndex("StackObjectThin", "objID")
     288
     289        self.logger.infoPair("inserting filter dependent items into", "StackObjectThin")
     290
     291        for filter in self.filters:
     292            self.logger.infoPair("filter", filter)
     293
     294            stackID = self.stackIDs[filter]
     295            self.logger.infoPair(filter + "stackID = ", stackID)
     296
     297            if stackID <= 0: 
     298                self.logger.infoPair("no stack data for filter" , filter)
     299                continue
     300
     301            imageID = self.imageIDs[filter]
     302            self.logger.infoPair("selecting imageID", imageID)
     303
     304            # at this point, the StackObjectThin table includes objID and ippObjID
     305
     306            # insert detection information for each filter based on the DVO contents
     307            sqlLine = sqlUtility("UPDATE StackObjectThin as a, " + self.scratchDb.dvoDetectionTable + " as b SET")
     308
     309            sqlLine.group("a."+filter+"ippDetectID",   "b.ippDetectID") # eg, gippDetectID (from dvo.measure.detID)
     310            sqlLine.group("a."+filter+"stackDetectID", "b.detectID")    # eg, gstackDetectID (from dvo.measure.extID)
     311            sqlLine.group("a."+filter+"stackMetaID",    str(stackID))   # eg, gstackMetaID (from cmf.IMAGEID)
     312
     313            sqlLine.group("a.dvoRegionID",             "b.catID")       # this is not filter dependent, but is re-written for each filter (if data exists)
     314            sqlLine.group("a.primaryDetection",        "((b.flags & 0x10000) >> 16)") # this is not filter dependent, but is re-written for each filter (if data exists)
     315
     316            sqlLine.group("a."+filter+"haveData",      "'1'")
     317
     318            sqlLine.group("a."+filter+"ra",            "b.ra")
     319            sqlLine.group("a."+filter+"dec",           "b.dec_")
     320
     321            sqlLine.group("a."+filter+"PSFMag",        "b.Mpsf")
     322            sqlLine.group("a."+filter+"PSFMagErr",     "b.dMpsf")
     323            sqlLine.group("a."+filter+"KronMag",       "b.Mkron")
     324            sqlLine.group("a."+filter+"KronMagErr",    "b.dMkron")
     325            sqlLine.group("a."+filter+"ApMag",         "b.Map")
     326            sqlLine.group("a."+filter+"ApMagErr",      "b.dMap")
     327            sqlLine.group("a."+filter+"telluricExt",   "b.telluricExt")
     328
     329            sqlLine.group("a."+filter+"infoFlag2",     "(b.flags << 13)")
     330            sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND b.imageID = " + str(imageID))
     331
     332            try: self.scratchDb.execute(sql)
     333            except:
     334                self.logger.errorPair('failed sql: ', sql)
     335                raise
     336
     337            # insert values coming from the CMF, not carried by DVO
     338            header = self.headerSet[filter]
     339            exptime = self.getKeyFloat(header, "%.5f", "EXPTIME")
     340
     341            sqlLine = sqlUtility("UPDATE StackObjectThin AS a , " + filter + "SkyChip_psf AS b SET")
     342
     343            sqlLine.group("a."+filter+"raErr",         "b.X_PSF_SIG * b.PLTSCALE")
     344            sqlLine.group("a."+filter+"decErr",        "b.Y_PSF_SIG * b.PLTSCALE")
     345            sqlLine.group("a."+filter+"sky",           "b.SKY / " + str(exptime))
     346            sqlLine.group("a."+filter+"skyErr",        "b.SKY_SIGMA / " + str(exptime))
     347            sqlLine.group("a."+filter+"infoFlag",      "b.FLAGS")
     348            sqlLine.group("a."+filter+"infoFlag2",     "b.FLAGS2 | a."+filter+"infoFlag2")
     349            sqlLine.group("a."+filter+"nFrames",       "b.N_FRAMES")
     350
     351            sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID=b.IPP_IDET")
     352
     353            # index the (f)ippDetectIDs for the next steps?
     354            # for filter in self.filters:
     355            #     IDname = filter + "ippDetectID"
     356            #     self.scratchDb.createIndex("StackObjectThin", IDname)
     357
     358            try:
     359                self.scratchDb.execute(sql)
     360            except:
     361                self.logger.errorPair('failed sql: ', sql)
     362                raise
     363
     364        self.tablesToExport.append("StackObjectThin")
     365
     366    '''
     367    Populates the StackObjectRaw table
     368    '''
     369    def populateStackObjectRaw(self):
     370
     371        tablename = "StackObjectRaw"
     372
     373        self.logger.infoPair("Procesing table", tablename)
     374        self.insertDvoIDs(tablename, "StackObjectThin")
     375
     376        # if we are going to add a key, do it here so it is useful
     377        self.scratchDb.createIndex(tablename, "objID")
     378
     379        self.logger.infoPair("inserting filter dependent cmf items into", tablename)
     380        for filter in self.filters:
     381            self.logger.infoPair("filter", filter)
     382
     383            stackID = self.stackIDs[filter]
     384            self.logger.infoPair(filter + "stackID = ", stackID)
     385
     386            if stackID <= 0: 
     387                self.logger.infoPair("no stack data for filter" , filter)
     388                continue
     389
     390            header = self.headerSet[filter]
     391            exptime = self.getKeyFloat(header, "%.5f", "EXPTIME")
     392
     393            # insert all the detections
     394            sqlLine = sqlUtility("UPDATE " + tablename + " AS a , " + filter + "SkyChip_psf AS b SET")
     395
     396            sqlLine.group("a."+filter+"haveData",      "'1'")
     397
     398            sqlLine.group("a."+filter+"xPos",          "b.X_PSF")
     399            sqlLine.group("a."+filter+"yPos",          "b.Y_PSF")
     400            sqlLine.group("a."+filter+"xPosErr",       "b.X_PSF_SIG")
     401            sqlLine.group("a."+filter+"yPosErr",       "b.Y_PSF_SIG")
     402            sqlLine.group("a."+filter+"psfMajorFWHM",  "b.PSF_FWHM_MAJ")
     403            sqlLine.group("a."+filter+"psfMinorFWHM",  "b.PSF_FWHM_MIN")
     404            sqlLine.group("a."+filter+"psfTheta",      "b.PSF_THETA")
     405            sqlLine.group("a."+filter+"psfCore",       "b.PSF_CORE")
     406            sqlLine.group("a."+filter+"psfLikelihood", "psfLikelihood(b.EXT_NSIGMA)")
     407            sqlLine.group("a."+filter+"psfQf",         "b.PSF_QF")
     408            sqlLine.group("a."+filter+"psfQfPerfect",  "b.PSF_QF_PERFECT")
     409            sqlLine.group("a."+filter+"psfChiSq",      "b.PSF_CHISQ / b.PSF_NDOF")
     410            sqlLine.group("a."+filter+"momentXX",      "b.MOMENTS_XX")
     411            sqlLine.group("a."+filter+"momentXY",      "b.MOMENTS_XY")
     412            sqlLine.group("a."+filter+"momentYY",      "b.MOMENTS_YY")
     413            sqlLine.group("a."+filter+"momentR1",      "b.MOMENTS_R1")
     414            sqlLine.group("a."+filter+"momentRH",      "b.MOMENTS_RH")
     415            sqlLine.group("a."+filter+"PSFFlux",       "b.PSF_INST_FLUX / " + str(exptime))
     416            sqlLine.group("a."+filter+"PSFFluxErr",    "b.PSF_INST_FLUX_SIG / " + str(exptime))
     417            sqlLine.group("a."+filter+"ApFlux",        "b.AP_FLUX / " + str(exptime))
     418            sqlLine.group("a."+filter+"ApFluxErr",     "b.AP_FLUX_SIG / " + str(exptime))
     419            sqlLine.group("a."+filter+"KronFlux",      "b.KRON_FLUX / " + str(exptime))
     420            sqlLine.group("a."+filter+"KronFluxErr",   "b.KRON_FLUX_ERR / " + str(exptime))
     421            sqlLine.group("a."+filter+"ApFillFac",     "b.AP_NPIX / (3.14159265359 * POW(b.AP_MAG_RADIUS - 0.5, 2))")
     422            sqlLine.group("a."+filter+"ApRadius",      "b.AP_MAG_RADIUS")
     423            sqlLine.group("a."+filter+"KronRad",       "b.MOMENTS_R1 * 2.5")
     424            sqlLine.group("a."+filter+"PlateScale",    "b.PLTSCALE")
     425
     426            sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET")
     427
     428            try:
     429                self.scratchDb.execute(sql)
     430            except:
     431                self.logger.errorPair('failed sql',sql)
     432                return
     433
     434            # insert detection information for each filter based on the DVO contents
     435            sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
     436            sqlLine.group("a."+filter+"expTime",       "b.expTime")
     437            sqlLine.group("a."+filter+"zp",            "b.zp")
     438
     439            # where should these go?
     440            # sqlLine.group("a."+filter+"airmass",       "b.airmass")
     441
     442            sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID")
     443
     444            try:
     445                self.scratchDb.execute(sql)
     446            except:
     447                self.logger.errorPair('failed sql',sql)
     448                return
     449
     450
     451        self.deleteRowsWithNoStackData(tablename)
     452        self.tablesToExport.append(tablename)
     453
     454    '''
     455    Populates the StackModelFitExtra table
     456    '''
     457    def populateStackModelFitExtra(self):
     458
     459        self.logger.infoPair("Procesing table", "StackModelFitExtra")
     460        self.insertDvoIDs("StackModelFitExtra", "StackObjectThin")
     461
     462        # if we are going to add a key, do it here so it is useful
     463        # self.scratchDb.createIndex(tablename, "objID")
     464
     465        # currently, none of the fields defined by the table are generated
     466       
     467    '''
     468    Populates the StackModelFitExp table
     469    '''
     470    def populateStackModelFit(self, model, ippModelType):
     471
     472        tablename = "StackModelFit" + model
     473
     474        if self.config.camera == "simtest":
     475            self.logger.infoPair("Skipping table for simtest:", tablename)
     476            return
     477
     478        self.logger.infoPair("Procesing table", tablename)
     479        self.insertDvoIDs(tablename, "StackObjectThin")
     480
     481        # if we are going to add a key, do it here so it is useful
     482        # self.scratchDb.createIndex(table, "objID")
     483
     484        for filter in self.filters:
     485            self.populateStackModelFitFilter(model, ippModelType, filter)
     486
     487        self.deleteRowsWithNoStackData(tablename)
     488        self.tablesToExport.append(tablename)
     489
     490    '''
     491    Updates parameters for a particular model in the StackModelFit table
     492    '''
     493    def populateStackModelFitFilter(self, model, ippModelType, filter):
     494
     495        tablename = "StackModelFit" + model
     496
     497        if self.stackIDs[filter] <= 0:
     498            self.logger.infoPair("no stack data for filter" , filter)
     499            return True
     500
     501        header  = self.headerSet[filter]
     502
     503        # model calibrated magnitude = instrumental magnitude + 2.5*log10(exptime) + ZP (added below from dvoDetectionTable)
     504        magtime = "%.5f" % (2.5*math.log10(float(header['EXPTIME'])))
     505
     506        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + filter + "SkyChip_xfit AS b SET")
     507
     508        sqlLine.group("a."+filter+"haveData",              "'1'")
     509
     510        # model calibrated magnitude = instrumental magnitude + 2.5*log10(exptime) + ZP (added below from dvoDetectionTable)
     511        sqlLine.group("a." + filter + model + "Mag",       "b.EXT_INST_MAG + " + magtime) # need to modify by zero point and 2.5*log10(exptime)
     512        sqlLine.group("a." + filter + model + "MagErr",    "b.EXT_INST_MAG_SIG")
     513                     
     514        sqlLine.group("a." + filter + model + "Radius",    "b.EXT_WIDTH_MAJ")
     515        sqlLine.group("a." + filter + model + "Ab",        "b.EXT_WIDTH_MIN/b.EXT_WIDTH_MAJ")
     516        sqlLine.group("a." + filter + model + "Phi",       "DEGREES(b.EXT_THETA)")
     517
     518        sqlLine.group("a." + filter + model + "RadiusErr", "b.EXT_WIDTH_MAJ_ERR") # these are not correctly defined.
     519        sqlLine.group("a." + filter + model + "AbErr",     "b.EXT_WIDTH_MIN_ERR") # these are not correctly defined.
     520        sqlLine.group("a." + filter + model + "PhiErr",    "b.EXT_THETA_ERR") # these are not correctly defined.
     521
     522        sqlLine.group("a." + filter + model + "Chisq",     "b.EXT_CHISQ / b.EXT_NDOF")
     523
     524        # I have raExp = X_EXT
     525
     526        # This is tricky: RA_EXT is not defined for PS1_SV3 or PS1_V5, but X_EXT is
     527        # XXX EAM 20140812: for PV3, update cmf output to define RA_EXT, DEC_EXT
     528        sqlLine.group("a." + filter + model + "Ra",        "b.X_EXT")
     529        sqlLine.group("a." + filter + model + "Dec",       "b.Y_EXT")
     530        sqlLine.group("a." + filter + model + "RaErr",     "b.X_EXT_SIG") # need to modify by platescale
     531        sqlLine.group("a." + filter + model + "DecErr",    "b.Y_EXT_SIG")
     532
     533        # sersic fit has an extra parameter
     534        if (ippModelType == "PS_MODEL_SERSIC"):
     535            sqlLine.group("a." + filter + model + "Nu",    "b.EXT_PAR_07")
     536            sqlLine.group("a." + filter + model + "NuErr", "'0.1'") # this is not measured at the moment
     537
     538        # missing these two fields?
     539        # sqlLine.group("a." + filter + model + "CF",         "b.XX")
     540        # sqlLine.group("a." + filter + model + "Likelihood", "b.XX")
     541
     542        sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET AND b.MODEL_TYPE = '" + ippModelType + "'")
     543
     544        try: self.scratchDb.execute(sql)
     545        except:
     546            self.logger.error("problem with SQL: " + sql)
     547            raise
     548
     549        # insert detection information for each filter based on the
     550        # DVO contents.  Since I already have extracted
     551        # StackObjectRaw, this is probably faster using that table:
     552        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
     553        sqlLine.group("a." + filter + model + "Mag",       "a." + filter + model + "Mag + b.zp")
     554        sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID")
     555
     556        try:
     557            self.scratchDb.execute(sql)
     558        except:
     559            self.logger.errorPair('failed sql',sql)
     560            return
     561
     562        # we have (modulo signs):
     563        # gRaExp  = gra  + (X_EXT - gxPos)*gPlateScale / cos(gdec)
     564        # gDecExp = gdec + (Y_EXT - gyPos)*gPlateScale
     565
     566        rawS  = "c." + filter + "PlateScale"
     567
     568        extR  = "a." + filter + model + "Ra"
     569        rawR  = "b." + filter + "ra"
     570        rawX  = "c." + filter + "xPos"
     571
     572        extD  = "a." + filter + model + "Dec"
     573        rawD  = "b." + filter + "dec"
     574        rawY  = "c." + filter + "yPos"
     575
     576        # dRA / dX = -PlateScale
     577        # b.+filter+ra  - (a.+filter+model+Ra - c.+filter+xPos)*c.+filter+PlateScale / cos(+filter+dec)
     578        # extR = rawR - (extR - rawX)*rawS / 3600.0 / cos(rawD)
     579
     580        # dDEC / dY = +PlateScale
     581        # b.+filter+dec + (a.+filter+model+Dec - c.+filter+xPos)*c.+filter+PlateScale / cos(+filter+dec)
     582        # extD = rawD + (extD - rawY)*rawS / 3600.0
     583
     584        # insert detection information for each filter based on the DVO contents
     585        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, StackObjectThin as b, StackObjectRaw as c SET ")
     586        sqlLine.group(extR, rawR + " - (" + extR + " - " + rawX + ")*" + rawS + " / 3600.0 / cos(radians(" + rawD + "))")
     587        sqlLine.group(extD, rawD + " + (" + extD + " - " + rawY + ")*" + rawS + " / 3600.0")
     588        field = "a." + filter + model + "RaErr"
     589        sqlLine.group(field, field + "*" + rawS)
     590        field = "a." + filter + model + "DecErr"
     591        sqlLine.group(field, field + "*" + rawS)
     592        sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a.objID = c.objID")
     593
     594        try:
     595            self.scratchDb.execute(sql)
     596        except:
     597            self.logger.errorPair('failed sql',sql)
     598            return
     599
     600    '''
     601    Populates the StackPetrosian table, mainly from dictionary values found in IPP FITS header
     602    '''
     603    def populateStackPetrosian(self):
     604
     605        tablename = "StackPetrosian"
     606
     607        if self.config.camera == "simtest":
     608            self.logger.infoPair("Skipping table for simtest:", tablename)
     609            return
     610
     611        self.logger.infoPair("Procesing table", tablename)
     612        self.insertDvoIDs(tablename, "StackObjectThin")
     613
     614        # if we are going to add a key, do it here so it is useful
     615        # self.scratchDb.createIndex(tablename, "objID")
     616
     617        for filter in self.filters:
     618            self.populateStackPetrosianFilter(filter)
     619
     620        self.deleteRowsWithNoStackData(tablename)
     621        self.tablesToExport.append(tablename)
     622
     623    '''
     624    Populates the StackPetrosian table, mainly from dictionary values found in IPP FITS header
     625    '''
     626    def populateStackPetrosianFilter(self, filter):
     627
     628        tablename = "StackPetrosian"
     629
     630        if self.stackIDs[filter] <= 0:
     631            self.logger.infoPair("no stack data for filter" , filter)
     632            return True
     633
     634        header  = self.headerSet[filter]
     635
     636        # PETRO_MAG is instrumental + 2.5log(exptime) + FPA.ZP
     637        # we want to apply the DVO zero point, so remove FPA.ZP:
     638
     639        hdrZP   = "%.5f" % float(header['FPA.ZP'])
     640        # magtime = "%.5f" % (2.5*math.log10(float(header['EXPTIME'])))
     641
     642        self.logger.infoPair("Adding", "petrosians for extended sources")
     643        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + filter + "SkyChip_xsrc AS b SET")
     644
     645        sqlLine.group("a."+filter+"haveData",         "'1'")
     646
     647        sqlLine.group("a." + filter + "petRadius",    "b.PETRO_RADIUS")
     648        sqlLine.group("a." + filter + "petRadiusErr", "b.PETRO_RADIUS_ERR")
     649        sqlLine.group("a." + filter + "petMag",       "b.PETRO_MAG - " + hdrZP) 
     650        sqlLine.group("a." + filter + "petMagErr",    "1.0 / b.PETRO_MAG_ERR") 
     651        sqlLine.group("a." + filter + "petR50",       "b.PETRO_RADIUS_50")
     652        sqlLine.group("a." + filter + "petR50Err",    "b.PETRO_RADIUS_50_ERR")
     653        sqlLine.group("a." + filter + "petR90",       "b.PETRO_RADIUS_90")
     654        sqlLine.group("a." + filter + "petR90Err",    "b.PETRO_RADIUS_90_ERR")
     655        sqlLine.group("a." + filter + "petCf",        "b.PETRO_FILL")
     656
     657        sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET")
     658
     659        try: self.scratchDb.execute(sql)
     660        except:
     661            self.logger.error("problem with SQL: " + sql)
     662            raise
     663
     664        # modify petMag to apply the zero point
     665        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
     666        sqlLine.group("a." + filter + "petMag",       "a." + filter + "petMag + b.zp")
     667        sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID")
     668
     669        try: self.scratchDb.execute(sql)
     670        except:
     671            self.logger.errorPair('failed sql',sql)
     672            return
     673
     674    '''
     675    Populates the StackApFlx table
     676    '''
     677    def populateStackApFlx(self):
     678
     679        tablename = "StackApFlx"
     680
     681        if self.config.camera == "simtest":
     682            self.logger.infoPair("Skipping table for simtest:", tablename)
     683            return
     684
     685        self.logger.infoPair("Procesing table", tablename)
     686        self.insertDvoIDs(tablename, "StackObjectThin")
     687
     688        # if we are going to add a key, do it here so it is useful
     689        self.scratchDb.createIndex(tablename, "objID")
     690
     691        for filter in self.filters:
     692            self.populateStackApFlxFilter(tablename, "", filter)
     693            self.populateStackApFlxFilter(tablename, "C1", filter)
     694            self.populateStackApFlxFilter(tablename, "C2", filter)
     695
     696        self.deleteRowsWithNoStackData(tablename)
     697        self.tablesToExport.append(tablename)
     698
     699    '''
     700    Populates the StackApFlxFull table
     701    '''
     702    def populateStackApFlxFull(self, version):
     703
     704        tablename = "StackApFlxFull" + version
     705
     706        if self.config.camera == "simtest":
     707            self.logger.infoPair("Skipping table for simtest:", tablename)
     708            return
     709
     710        self.logger.infoPair("Procesing table", tablename)
     711        self.insertDvoIDs(tablename, "StackObjectThin")
     712
     713        # if we are going to add a key, do it here so it is useful
     714        self.scratchDb.createIndex(tablename, "objID")
     715
     716        for filter in self.filters:
     717            self.populateStackApFlxFilter(tablename, version, filter)
     718
     719        self.deleteRowsWithNoStackData(tablename)
     720        self.tablesToExport.append(tablename)
    303721
    304722    '''
    305723    Updates aperture fluxes for StackApFkx table
    306724    '''
    307     def updateModelFitFlxs(self, prefix, psfCondition, tablename, filter):
    308         #properly -999 these to start with:
    309         f = filter
    310         if tablename == 'StackModelFit':
    311             sql = "UPDATE " + tablename + " AS a, "+f+"SkyChip_xrad AS b SET \
    312         "+f+prefix+"flxR1=-999, \
    313         "+f+prefix+"flxR1Err=-999, \
    314         "+f+prefix+"flxR1Std=-999, \
    315         "+f+prefix+"flxR1Fill=-999, \
    316         "+f+prefix+"flxR2=-999, \
    317         "+f+prefix+"flxR2Err=-999, \
    318         "+f+prefix+"flxR2Std=-999, \
    319         "+f+prefix+"flxR2Fill=-999, \
    320         "+f+prefix+"flxR3=-999, \
    321         "+f+prefix+"flxR3Err=-999, \
    322         "+f+prefix+"flxR3Std=-999, \
    323         "+f+prefix+"flxR3Fill=-999, \
    324         "+f+prefix+"flxR4=-999, \
    325         "+f+prefix+"flxR4Err=-999, \
    326         "+f+prefix+"flxR4Std=-999, \
    327         "+f+prefix+"flxR4Fill=-999, \
    328         "+f+prefix+"flxR5=-999, \
    329         "+f+prefix+"flxR5Err=-999, \
    330         "+f+prefix+"flxR5Std=-999, \
    331         "+f+prefix+"flxR5Fill=-999, \
    332         "+f+prefix+"flxR6=-999, \
    333         "+f+prefix+"flxR6Err=-999, \
    334         "+f+prefix+"flxR6Std=-999, \
    335         "+f+prefix+"flxR6Fill=-999, \
    336         "+f+prefix+"flxR7=-999, \
    337         "+f+prefix+"flxR7Err=-999, \
    338         "+f+prefix+"flxR7Std=-999, \
    339         "+f+prefix+"flxR7Fill=-999, \
    340         "+f+prefix+"flxR8=-999, \
    341         "+f+prefix+"flxR8Err=-999, \
    342         "+f+prefix+"flxR8Std=-999, \
    343         "+f+prefix+"flxR8Fill=-999, \
    344         "+f+prefix+"flxR9=-999, \
    345         "+f+prefix+"flxR9Err=-999, \
    346         "+f+prefix+"flxR9Std=-999, \
    347         "+f+prefix+"flxR9Fill=-999, \
    348         "+f+prefix+"flxR10=-999, \
    349         "+f+prefix+"flxR10Err=-999, \
    350         "+f+prefix+"flxR10Std=-999, \
    351         "+f+prefix+"flxR10Fill=-999 \
    352         WHERE a."+f+"ippDetectID=b.IPP_IDET "
    353         #self.logger.infoPair("sql", sql)
    354             self.scratchDb.execute(sql)
    355 
    356 
    357         #we have variable numbers of these columns. find out which are in use
    358         sql = "DESCRIBE "+f+"SkyChip_xrad 'aper_fill_%'"
     725    def populateStackApFlxFilter(self, tablename, version, filter):
     726
     727        prefix = "none"
     728
     729        # order of the 3 convolutions is fixed (raw, C1, C2) = (1, 2, 3)
     730        if version == "":   
     731            psfCondition = "(b.table_index % 3 = 1)"
     732            prefix = ""
     733        if version == "C1":
     734            psfCondition = "(b.table_index % 3 = 2)"
     735            prefix = "c1"
     736        if version == "C2":
     737            psfCondition = "(b.table_index % 3 = 0)"
     738            prefix = "c2"
     739
     740        if prefix == "none":
     741            self.logger.errorPair("invalid stack ap flux version", version)
     742            raise
     743
     744        if self.stackIDs[filter] <= 0:
     745            self.logger.infoPair("no stack data for filter" , filter)
     746            return True
     747
     748        minRadius = 1
     749        maxRadius = 10
     750        if tablename == 'StackApFlx':
     751            minRadius = 3
     752            maxRadius = 5
     753
     754        # properly -999 these to start with.  the default should take
     755        # care of this, but does not
     756
     757        sqlLine = sqlUtility("UPDATE " + tablename + " SET")
     758        for radius in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
     759            if radius < minRadius: continue
     760            if radius > maxRadius: continue
     761            sqlLine.group(filter + prefix + "flxR" + str(radius),          "-999")
     762            sqlLine.group(filter + prefix + "flxR" + str(radius) + "Err",  "-999")
     763            sqlLine.group(filter + prefix + "flxR" + str(radius) + "Std",  "-999")
     764            sqlLine.group(filter + prefix + "flxR" + str(radius) + "Fill", "-999")
     765
     766        sql = sqlLine.makeEquals("")
     767
     768        try: self.scratchDb.execute(sql)
     769        except:
     770            self.logger.errorPair('failed sql',sql)
     771            return
     772
     773        # set the flux values from the cmf file
     774        cmfTable = filter + "SkyChip_xrad"
     775
     776        # we have variable numbers of these columns. find out which are in use
     777        sql = "DESCRIBE " + cmfTable + " 'aper_fill_%'"
    359778        rs = self.scratchDb.executeQuery(sql)
    360779        rs.first()
     
    367786        rs.close()
    368787
    369         #use regex to leave just the numbers
    370 
     788        # use regex to select the aperture number (APER_FILL_N)
    371789        numbers = []
    372         min = 1
    373         max = 10
    374         if tablename == 'StackApFlx':
    375             min = 3
    376             max = 5
    377790        for column in columns:
    378791            number = re.sub("APER_FILL_","",column)
    379             if (int(number) >= min and int(number) <=max):
     792            if (int(number) >= minRadius and int(number) <= maxRadius):
    380793                numbers.append(number)
    381794                self.logger.infoPair("Aperture Numbers",number)
    382795
    383         #generate the sql to do the necessary ops on the columns   
    384         sql = "UPDATE " + tablename + " AS a, "+f+"SkyChip_xrad AS b SET "
    385         cnt =0
    386         exptime = self.safeDictionaryAccess(self.header, 'EXPTIME')
     796        # get the exposure time for aperture fluxes
     797        header = self.headerSet[filter]
     798        exptime = self.getKeyFloat(header, "%.5f", "EXPTIME")
     799
     800        # generate the sql to do the necessary ops on the columns   
     801        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + cmfTable + " AS b SET ")
     802
     803        sqlLine.group("a."+filter+"haveData", "'1'")
     804
    387805        for number in numbers:
    388             if (cnt>0):
    389                 sql=sql+" , "
    390             sql=sql+f+prefix+"flxR"+number+"=b.APER_FLUX_"+number +" / " + str(exptime) + ", "
    391             sql=sql+f+prefix+"flxR"+number+"Err=b.APER_FLUX_ERR_"+number +" / " + str(exptime) + ", "
    392             sql=sql+f+prefix+"flxR"+number+"Std=b.APER_FLUX_STDEV_"+number +" / " + str(exptime) + ", "
    393             sql=sql+f+prefix+"flxR"+number+"Fill=b.APER_FILL_"+number + " "
    394             cnt=cnt+1
     806            field = filter + prefix + "flxR" + number
     807            sqlLine.group(field,          "b.APER_FLUX_"       + number + " / " + exptime)
     808            sqlLine.group(field + "Err",  "b.APER_FLUX_ERR_"   + number + " / " + exptime)
     809            sqlLine.group(field + "Std",  "b.APER_FLUX_STDEV_" + number + " / " + exptime)
     810            sqlLine.group(field + "Fill", "b.APER_FILL_"       + number)
    395811           
    396         sql=sql+"WHERE a."+f+"ippDetectID=b.IPP_IDET AND  "+psfCondition   
    397         self.logger.infoPair("sql",sql)
     812        sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET AND  " + psfCondition)
     813
    398814        self.scratchDb.execute(sql)
    399815
    400 
    401     '''
    402     Updates parameters for a particular model in the StackModelFit table
    403     '''
    404     def updateModelFit(self, model, ippModelType, filter, exptime):
    405         f = filter
    406  
    407  # idk what to do about PET
    408 
    409         sql = "DESCRIBE "+f+"SkyChip_xfit 'EXT_COVAR_%'"
     816        # instrumental flux, AB mags, Jy:
     817        # flux_inst = cts / sec
     818        # mag_AB = -2.5*log(flux_inst) + ZP [with appropriate definition of zero point]
     819        # mag_AB = -2.5*log(flux_cgs) - 48.6 [by construction with ~Vega flux in V-band]
     820        # flux_cgs = ten(-0.4*(mag_AB + 48.6))
     821        # flux_cgs = ten(-0.4*((-2.5*log(flux_inst) + ZP) + 48.6))
     822        # flux_cgs = flux_inst * ten(-0.4*(ZP + 48.6))
     823        # flux_Jy  = flux_cgs * 10^23
     824        # flux_Jy  = flux_inst * ten(-0.4*(ZP + 48.6) + 23.0)  [23.0 - 0.4*48.6 = 3.56]
     825        # flux_Jy  = flux_inst * ten(-0.4*ZP + 3.56)
     826        # flux_Jy  = flux_inst * ten(-0.4*ZP) * 3630.78
     827
     828        # modify flux to apply the zero point
     829        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
     830        for number in numbers:
     831            field = filter + prefix + "flxR" + number
     832            sqlLine.group(field,               field         + " * POW(10, 3.56 - 0.4* b.zp)")
     833            sqlLine.group(field + "Err",       field + "err" + " * POW(10, 3.56 - 0.4* b.zp)")
     834            sqlLine.group(field + "Std",       field + "Std" + " * POW(10, 3.56 - 0.4* b.zp)")
     835        sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID")
     836        self.scratchDb.execute(sql)
     837
     838    '''
     839    Populates the StackToImage table
     840    '''
     841    def populateStackToImage(self):
     842
     843        self.logger.infoPair("Procesing table", "StackToImage")
     844
     845        for filter in self.filters:
     846           
     847            stackmetaID = self.stackIDs[filter]
     848            if stackmetaID > 0:
     849   
     850                imageIDs = self.gpc1Db.getImageIDsForThisStackID(stackmetaID)
     851
     852                for imageID in imageIDs:
     853
     854                    sql = "INSERT INTO StackToImage (stackMetaID, imageID) \
     855                   VALUES (\
     856                   " + str(stackmetaID) + ", " + imageID + ")"
     857                    self.scratchDb.execute(sql)
     858
     859                    # now update StackMeta with correct number of inputs
     860                    sql = "UPDATE "+filter+"StackMeta SET nP2Images = (SELECT COUNT(distinct(floor(imageID/100))) FROM StackToImage where stackMetaID = "+str(stackmetaID)+")"
     861                    self.scratchDb.execute(sql)
     862
     863        self.tablesToExport.append("StackToImage")
     864
     865    ### *********************** Utility Functions ************************************
     866
     867    '''
     868    Drop a table and report the drop
     869    '''
     870    def dropTableVerbose(self, table):
     871        self.logger.infoPair("dropping table:",table)
     872        self.scratchDb.dropTable(table)
     873
     874    '''
     875    get stackTypeID corresponding to our stackType
     876    '''
     877    def getStackTypeID(self):
     878
     879        sql = "SELECT stackTypeID from StackType WHERE name = '" + self.stackType + "'"
    410880        rs = self.scratchDb.executeQuery(sql)
    411         rs.first()
    412         hasResult = rs.next()
    413 
    414 
    415 
    416         sql = "UPDATE StackModelFit AS a, " + f + "SkyChip_xfit AS b SET \
    417         "+f+model+"Radius=b.EXT_WIDTH_MAJ,  \
    418         "+f+model+"Flux=POW(10, -0.4 * b.EXT_INST_MAG) / " + str(exptime) + " ,  \
    419         "+f+model+"FluxErr=ABS(b.EXT_INST_MAG_SIG) * POW(10, -0.4 * b.EXT_INST_MAG) / " + str(exptime) + " / 1.085736, \
    420         "+f+model+"Ab=b.EXT_WIDTH_MAJ/b.EXT_WIDTH_MIN, \
    421         "+f+model+"Phi=b.EXT_THETA  \
    422           \
    423         WHERE a."+f+"ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
    424 
    425         print sql
     881        if not rs.next():
     882            self.logger.errorPair("cannot get stack type ID from database for", self.stackType)
     883            raise
     884       
     885        ID = rs.getInt(1)
     886        return ID
     887
     888    def deleteRowsWithNoStackData(self, tableName):
     889
     890        self.logger.infoPair("Deleting rows with no stack data from", tableName)
     891        sql = "DELETE FROM " + tableName + " WHERE "
     892
     893        for i in range(len(self.filters)):
     894            filter = self.filters[i]
     895            sql += filter + "haveData is NULL"
     896
     897            if (i < len(self.filters) - 1):
     898                sql += " AND "
     899
     900        self.logger.infoPair('sql',sql)   
    426901        self.scratchDb.execute(sql)
    427902
    428 
    429 
    430         # sersic fit has an extra parameter
    431         if (ippModelType == "PS_MODEL_SERSIC"):
    432             extra_sql = ""
    433             if hasResult:
    434                 extra_sql = ","+f+"serNuErr=SQRT(EXT_COVAR_07_07)"
    435             sql = "UPDATE StackModelFit AS a, "+ f+ "SkyChip_xfit AS b SET \
    436             "+f+"serNu=b.EXT_PAR_07   \
    437             "+extra_sql+" \
    438             WHERE a."+f+"ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
    439 #           "+f+"serNuErr=SQRT(EXT_COVAR_07_07)  \
    440             self.logger.infoPair("sql",sql)
    441             self.scratchDb.execute(sql)
    442 
    443 
    444     '''
    445     Populates the StackMeta table, mainly from dictionary values found in IPP FITS header
    446     '''
    447     def populateStackMeta(self,filterName):
    448 
    449         self.logger.infoPair("Procesing table", "StackMeta")
    450 
    451         # this should work : set header into (grizy)header and run from there
    452         if filterName == 'g.00000':
    453             f = "g"
    454             self.header = self.gheader
    455             tablename = 'gStackMeta'
    456             stackmetaid = self.gstackID
    457         if filterName == 'r.00000':
    458             f = "r"
    459             tablename = 'rStackMeta'
    460             self.header = self.rheader
    461             stackmetaid = self.rstackID
    462         if filterName == 'i.00000':
    463             f = "i"
    464             tablename = 'iStackMeta'
    465             self.header = self.iheader
    466             stackmetaid = self.istackID
    467         if filterName == 'z.00000':
    468             f = "z"
    469             tablename = 'zStackMeta'
    470             self.header = self.zheader
    471             stackmetaid = self.zstackID
    472         if filterName == 'y.00000':
    473             f = "y"
    474             tablename = 'yStackMeta'
    475             self.header = self.yheader
    476             stackmetaid = self.ystackID
    477 
    478         self.fwhm_maj    = self.safeDictionaryAccess(self.header, 'FWHM_MAJ')
    479         self.fwhm_maj_uq = self.safeDictionaryAccess(self.header, 'FW_MJ_UQ')
    480         self.psfmodel    = self.safeDictionaryAccess(self.header, 'PSFMODEL')
    481         if (self.fwhm_maj    == "NULL"): self.fwhm_maj    = -999
    482         if (self.fwhm_maj_uq == "NULL"): self.fwhm_maj_uq = -999
    483 
    484         # print "fwhm_maj    = ", self.fwhm_maj
    485         # print "fwhm_maj_uq = ", self.fwhm_maj_uq
    486         # print "psfmodel    = ", self.psfmodel
    487 
    488         #make a table
    489 
    490         filterid = self.scratchDb.getFilterID(f)
    491         self.logger.infoPair("filterid is ",str(filterid))
    492 
    493         sql = "CREATE TABLE " + tablename + " LIKE StackMeta"
     903        for filter in self.filters:
     904            column = filter + "haveData"
     905            self.scratchDb.dropColumn(tableName, column)
     906
     907    '''
     908    Applies indexes to the PSPS tables
     909    '''
     910    def alterPspsTables(self):
     911
     912        self.logger.debug("Altering PSPS tables (currently does nothing in stackbatch)")
     913
     914        return True
     915
     916    '''
     917    Applies indexes to the IPP tables
     918    '''
     919    def indexIppTables(self):
     920
     921        for filter in self.filters:
     922            if self.stackIDs[filter] <= 0: 
     923                self.logger.infoPair("no files for filter" , filter)
     924                continue
     925
     926            self.logger.infoPair("Creating indexes on", "IPP tables")
     927            self.scratchDb.createIndex(filter + "SkyChip_psf",  "IPP_IDET")
     928            self.scratchDb.createIndex(filter + "SkyChip_xfit", "IPP_IDET")
     929            self.scratchDb.createIndex(filter + "SkyChip_xrad", "IPP_IDET")
     930            self.scratchDb.createIndex(filter + "SkyChip_xsrc", "IPP_IDET")
     931
     932        return True
     933
     934    '''
     935    select objID (psps object ID) from dvo restricted to this set of imageIDs. also insert
     936    ippObjID and several constants (for a skycell): surveyID, skyCellId, dataRelease
     937    '''
     938    def selectDvoObjIDs(self):
     939
     940        # we need a temporary column for each filter to identify empty rows
     941        for filter in self.filters:
     942            self.scratchDb.addColumn("StackObjectThin", filter + "haveData", "tinyint")
     943
     944        sqlLine = sqlUtility("INSERT INTO StackObjectThin (")
     945       
     946        sqlLine.group("objID",            "objID")
     947        sqlLine.group("ippObjID",         "ippObjID")
     948        sqlLine.group("surveyID",         "'" + str(self.surveyID) + "'")
     949        sqlLine.group("tessID",           "'" + str(self.tessID) + "'")
     950        sqlLine.group("projectionID",     "'" + str(self.projectionID) + "'")
     951        sqlLine.group("skyCellID",        "'" + str(self.skycellID) + "'")
     952        sqlLine.group("dataRelease",      "'" + str(self.skychunk.dataRelease) + "'")
     953        sqlLine.group("randomStackObjID", "FLOOR(RAND()*9223372036854775807)")
     954
     955        whereClause = " WHERE ("
     956        imageIDs = self.imageIDs.values()
     957        for i in range(len(imageIDs)):
     958            imageID = imageIDs[i]
     959            self.logger.infoPair("selecting imageID", imageID)
     960
     961            whereClause += "(" + self.scratchDb.dvoDetectionTable + ".imageID = " + str(imageID) + ")"
     962
     963            if (i < len(imageIDs) - 1):
     964                whereClause += " or "
     965
     966        whereClause += ")"
     967
     968        sql = sqlLine.makeRaw(") SELECT DISTINCT ", "FROM " + self.scratchDb.dvoDetectionTable + whereClause)
     969
    494970        try: self.scratchDb.execute(sql)
    495         except: pass
    496 
    497         sql = "INSERT INTO " + tablename + " (\
    498         stackMetaID \
    499         ,filterID \
    500         ,skyCellID \
    501         ,photoCalID \
    502         ,photoZero \
    503         ,expTime \
    504         ,psfModelID \
    505         ,psfFwhm_mean \
    506         ,psfFwhm_max \
    507         ,ctype1 \
    508         ,ctype2 \
    509         ,crval1 \
    510         ,crval2 \
    511         ,crpix1 \
    512         ,crpix2 \
    513         ,cdelt1 \
    514         ,cdelt2 \
    515         ,pc001001 \
    516         ,pc001002 \
    517         ,pc002001 \
    518         ,pc002002 \
    519          ) VALUES ( \
    520         " + str(stackmetaid) + " \
    521         , " + str(filterid) + "  \
    522         ," + self.skycell + " \
    523         ," + str(self.scratchDb.getPhotoCalID(self.header['IMAGEID'])) + " \
    524         ," + self.header['FPA.ZP'] + " \
    525         ," + self.header['EXPTIME'] + " \
    526         ,'" + self.psfmodel   + "' \
    527         ," + str(self.fwhm_maj)    + " \
    528         ," + str(self.fwhm_maj_uq) + " \
    529         ,'" + self.header['CTYPE1'] + "' \
    530         ,'" + self.header['CTYPE2'] + "' \
    531         ," + self.header['CRVAL1'] + " \
    532         ," + self.header['CRVAL2'] + " \
    533         ," + self.header['CRPIX1'] + " \
    534         ," + self.header['CRPIX2'] + " \
    535         ," + self.header['CDELT1'] + " \
    536         ," + self.header['CDELT2'] + " \
    537         ," + self.header['PC001001'] + " \
    538         ," + self.header['PC001002'] + " \
    539         ," + self.header['PC002001'] + " \
    540         ," + self.header['PC002002'] + " \
    541         )"
    542         self.scratchDb.execute(sql)
    543 
    544 
    545         self.scratchDb.updateAllRows(tablename, "batchID", str(self.batchID))
    546         self.scratchDb.updateAllRows(tablename, "surveyID", str(self.surveyID))
    547     #    self.scratchDb.updateFilterID(tablename, self.scratchDb.getFilterID(filterName))
    548         self.scratchDb.updateAllRows(tablename, "dataRelease", str(self.skychunk.dataRelease))
    549         self.updateStackTypeID(tablename)
    550 
    551     '''
    552     Populates the StackObject table
    553     '''
    554     def populateStackObject(self):
    555 
    556         self.logger.infoPair("Procesing table", "StackObject")
    557        
    558         self.logger.infoPair("inserting non-filter dependent items into", "StackObject")
    559 
    560         #this is dvo crap
    561         #sql = "INSERT INTO StackObject(\
    562         #      objID, \
    563         #      gcobjID, \
    564         #      ippObjID, \
    565         #      surveyID, \
    566         #      skyCellID, \
    567         #      randomStackObjID, \
    568         #      stackDetectRowID, \
    569         #      dvoRegionID, \
    570         #      dataRelease) SELECT \
    571         #      -999,
    572         #      -999,
    573         #      -999,
    574         #      ,
    575              
    576        
    577        
    578 
    579         self.logger.infoPair("inserting filter dependent cmf items into", "StackObject")
    580         filters =['g','r','i','z','y']
    581         for f in filters:
    582           skip = 0
    583           if (f == "g"):
    584               self.logger.infoPair("gstackID = ",self.gstackID)
    585               if self.gstackID > 0: 
    586                   stackid = self.gstackID
    587                   exptime = self.gheader['EXPTIME']
    588               else:
    589                   skip = 1
    590           if (f == "r"):
    591               self.logger.infoPair("rstackID = ",self.rstackID)
    592               if self.rstackID > 0:
    593                   stackid = self.rstackID
    594                   exptime = self.rheader['EXPTIME']
    595               else:
    596                   skip = 1
    597           if (f == "i"):
    598               self.logger.infoPair("istackID = ",self.istackID)
    599               if self.istackID > 0:
    600                   stackid = self.istackID
    601                   exptime = self.iheader['EXPTIME']
    602               else:
    603                   skip = 1
    604           if (f == "z"):
    605               self.logger.infoPair("zstackID = ",self.zstackID)
    606               if self.zstackID > 0:
    607                   stackid = self.zstackID
    608                   exptime = self.zheader['EXPTIME']
    609               else:
    610                   skip = 1
    611           if (f == "y"):
    612               self.logger.infoPair("ystackID = ",self.ystackID)
    613               if self.ystackID > 0:
    614                   stackid = self.ystackID
    615                   exptime = self.yheader['EXPTIME']
    616               else:
    617                   skip = 1
    618 
    619           if skip == 1:
    620               self.logger.infoPair("nothing for filter" , f)
    621           else:
    622              self.logger.infoPair("filter",f)
    623 
    624 
    625 
    626              # insert all the detections
    627              sql = "UPDATE StackObject as a , " + f + "SkyChip_psf as b set \
    628                    a."+f+"xPos = b.X_PSF \
    629                    ,a."+f+"yPos = b.Y_PSF \
    630                    ,a."+f+"xPosErr = b.X_PSF_SIG \
    631                    ,a."+f+"yPosErr = b.Y_PSF_SIG \
    632                    ,a."+f+"PSFFlux = b.PSF_INST_FLUX / " + str(exptime) + " \
    633                    ,a."+f+"PSFFluxErr = b.PSF_INST_FLUX_SIG / " + str(exptime) + " \
    634                    ,a."+f+"sky = b.SKY / " + str(exptime) + " \
    635                    ,a."+f+"skyErr = b.SKY_SIGMA / " + str(exptime) + " \
    636                    ,a."+f+"psfMajorFWHM = b.PSF_MAJOR \
    637                    ,a."+f+"psfMinorFWHM = b.PSF_MINOR \
    638                    ,a."+f+"psfTheta = b.PSF_THETA \
    639                    ,a."+f+"psfCore = NULL \
    640                    ,a."+f+"psfLikelihood = psfLikelihood(b.EXT_NSIGMA) \
    641                    ,a."+f+"infoFlag = b.FLAGS2 << 32 | FLAGS \
    642                    ,a."+f+"psfQf = b.PSF_QF \
    643                    ,a."+f+"psfQfPerfect = b.PSF_QF_PERFECT \
    644                    ,a."+f+"psfChiSq = b.PSF_CHISQ / b.PSF_NDOF \
    645                    ,a."+f+"momentXX = b.MOMENTS_XX \
    646                    ,a."+f+"momentXY = b.MOMENTS_XY \
    647                    ,a."+f+"momentYY = b.MOMENTS_YY \
    648                    ,a."+f+"momentR1 = b.MOMENTS_R1 \
    649                    ,a."+f+"momentRH = b.MOMENTS_RH \
    650                    ,a."+f+"ApFlux = POW(10.0, -0.4*b.AP_MAG) / " + str(exptime) + " \
    651                    ,a."+f+"ApFluxErr = NULL \
    652                    ,a."+f+"ApFillFac = NULL \
    653                    ,a."+f+"KronFlux = b.KRON_FLUX / " + str(exptime) + " \
    654                    ,a."+f+"KronFluxErr = b.KRON_FLUX_ERR / " + str(exptime) + " \
    655                    ,a."+f+"KronRad = b.MOMENTS_R1 * 2.5 \
    656                    ,a."+f+"PSFMag = b.PSF_INST_MAG    \
    657                    ,a."+f+"PSFMagErr = b.PSF_INST_MAG_SIG    \
    658                    ,a."+f+"ApMag = b.AP_MAG    \
    659                    ,a."+f+"ApMagErr = NULL    \
    660                    ,a."+f+"KronMag = NULL    \
    661                    ,a."+f+"KronMagErr = NULL    \
    662                    ,a."+f+"nFrames = b. N_FRAMES \
    663                    WHERE a." + f + "ippDetectID=b.IPP_IDET "
    664              self.logger.infoPair('sql', sql)     
    665              try:
    666                  self.scratchDb.execute(sql)
    667              except:
    668                  self.logger.errorPair('failed sql',sql)
    669                  return
    670              #it is possible to drop some detections from dvo (that are present in the cmf). when that happens we get a 0 for objid
    671         #we drop those...
    672 
    673         self.logger.infoPair("Deleting", "entries with StackObject.objID = 0")
    674         sql="DELETE FROM StackObject where objID = 0"
    675         try:
    676             self.scratchDb.execute(sql)
    677971        except:
    678972            self.logger.errorPair('failed sql',sql)
    679973            return
     974
     975    '''
     976    Insert objid (from dvo) into table from main table
     977    '''
     978    def insertDvoIDs(self, table, mainTable):
     979
     980        # we need a temporary column for each filter to identify empty rows
     981        for filter in self.filters:
     982            self.scratchDb.addColumn(table, filter + "haveData", "tinyint")
     983
     984        fields = "objID, ippObjID, randomStackObjID, primaryDetection, bestDetection, "
     985
     986        for i in range(len(self.filters)):
     987            filter = self.filters[i]
     988            fields += filter + "ippDetectID, "
     989            fields += filter + "stackDetectID, "
     990            fields += filter + "stackMetaID" # careful here: do not add comma to last entry
     991            if (i < len(self.filters) - 1):
     992                fields += ", "
    680993       
    681         try:
    682             self.scratchDb.updateAllRows("StackObject", "surveyID", str(self.surveyID))
     994        sql  = "INSERT INTO " + table + " (" + fields + ") "
     995        sql += "SELECT " + fields + " FROM " + mainTable
     996
     997        try: self.scratchDb.execute(sql)
    683998        except:
    684             self.logger.errorPair('failed update surveyID on','StackObject')
    685             raise
    686 #        self.scratchDb.updateFilterID("StackObject", f+".00000")
    687        
    688         self.scratchDb.updateAllRows("StackObject", "dataRelease", str(self.skychunk.dataRelease))
    689         try:
    690             self.updateStackMetaID("StackObject")
    691         except:
    692             self.logger.errorPair("failed update stack meta id on ", "StackObject")
    693             raise
    694         ##self.updateStackTypeID("StackObject")
    695        
    696         #self.updateDvoIDsAndFlags("StackObject")
    697         #this now updates primary F as well
    698         # response = raw_input("updated dvo ")
    699        
    700         # XXX EAM : note that in mysql versions later than 5.1, this fails
    701         # unless the following is called first:
    702         # set session old_alter_table=1
    703         # follow the command with
    704         # set session old_alter_table=0
    705         # OF COURSE, this fails for mysql version < 5.5...
    706         if self.scratchDb.version > 5.1:
    707             self.scratchDb.execute("set session old_alter_table=1")
    708 
    709         sql = "ALTER IGNORE TABLE StackObject ADD PRIMARY KEY (objID)"
    710        
    711         if self.scratchDb.version > 5.1:
    712             self.scratchDb.execute("set session old_alter_table=0")
    713 
    714         self.scratchDb.execute(sql)
    715         # response = raw_input("add primary key? ")
    716  
    717         ### XXX this should not be a DEEP_STACK only case...
    718         if False and self.stackType == "DEEP_STACK":
    719             ## need to do for all filters?
    720             #if deep stack and instFlux = null and err not null
    721             sql = "UPDATE StackObject AS a, SkyChip_psf AS b \
    722                    SET psfFlux = 2*b.PSF_INST_FLUX_SIG / " + str(self.expTime) + " \
    723                    WHERE psfFlux IS NULL \
    724                    AND a.ippDetectID = b.IPP_IDET  \
    725                    AND b.PSF_INST_FLUX_SIG IS NOT NULL"
    726            
    727             self.scratchDb.execute(sql)
    728             # response = raw_input("add psf flux ")
    729          
    730         #filter dependent
    731         # NOTE : Flux limits : in the current PSPS schema, negative fluxes
    732         # cause problems for sql queries which work in mags as SQL cannot do
    733         # something like (f < 0.0) ? -999 : -2.5*log10(f)
    734         # as a result, the negative fluxes here result in floating point errors
    735         sql = "UPDATE StackObject SET gPSFFlux = 1e20 WHERE gPSFFlux <= 0.0"
    736         self.scratchDb.execute(sql)
    737        
    738         sql = "UPDATE StackObject SET gApFlux = 1e20 WHERE gApFlux <= 0.0"
    739         self.scratchDb.execute(sql)
    740 
    741         sql = "UPDATE StackObject SET gKronFlux = 1e20 WHERE gKronFlux <= 0.0"
    742         self.scratchDb.execute(sql)
    743         sql = "UPDATE StackObject SET rPSFFlux = 1e20 WHERE rPSFFlux <= 0.0"
    744         self.scratchDb.execute(sql)
    745        
    746         sql = "UPDATE StackObject SET rApFlux = 1e20 WHERE rApFlux <= 0.0"
    747         self.scratchDb.execute(sql)
    748 
    749         sql = "UPDATE StackObject SET rKronFlux = 1e20 WHERE rKronFlux <= 0.0"
    750         self.scratchDb.execute(sql)
    751         sql = "UPDATE StackObject SET iPSFFlux = 1e20 WHERE iPSFFlux <= 0.0"
    752         self.scratchDb.execute(sql)
    753        
    754         sql = "UPDATE StackObject SET iApFlux = 1e20 WHERE iApFlux <= 0.0"
    755         self.scratchDb.execute(sql)
    756 
    757         sql = "UPDATE StackObject SET iKronFlux = 1e20 WHERE iKronFlux <= 0.0"
    758         self.scratchDb.execute(sql)
    759         sql = "UPDATE StackObject SET zPSFFlux = 1e20 WHERE zPSFFlux <= 0.0"
    760         self.scratchDb.execute(sql)
    761        
    762         sql = "UPDATE StackObject SET zApFlux = 1e20 WHERE zApFlux <= 0.0"
    763         self.scratchDb.execute(sql)
    764 
    765         sql = "UPDATE StackObject SET zKronFlux = 1e20 WHERE zKronFlux <= 0.0"
    766         self.scratchDb.execute(sql)
    767         sql = "UPDATE StackObject SET yPSFFlux = 1e20 WHERE yPSFFlux <= 0.0"
    768         self.scratchDb.execute(sql)
    769        
    770         sql = "UPDATE StackObject SET yApFlux = 1e20 WHERE yApFlux <= 0.0"
    771         self.scratchDb.execute(sql)
    772 
    773         sql = "UPDATE StackObject SET yKronFlux = 1e20 WHERE yKronFlux <= 0.0"
    774         self.scratchDb.execute(sql)
    775 
    776         #leave null instflux in
    777         #self.scratchDb.reportAndDeleteRowsWithNULLS("StackObject", "instFlux")
    778        
    779         self.scratchDb.reportAndDeleteRowsWithNULLS("StackObject", "objID")
    780         # response = raw_input("delete nulls ")
    781        
    782         sql="DELETE FROM StackObject where objID = 0"
    783        
    784         self.scratchDb.execute(sql)
    785         self.logger.infoPair("Deleting", "entries with StackObject.objID = 0")
    786         # response = raw_input("deleted objID is 0 ")
    787     '''
    788     Populates the SkinnyObject table
    789     '''
    790     def populateSkinnyObject(self):
    791 
    792         self.logger.infoPair("Procesing table", "SkinnyObject")
    793 
    794         sql = "INSERT INTO SkinnyObject (\
    795                objID \
    796                ,ippObjID \
    797                ,projectionCellID \
    798                ) \
    799                SELECT \
    800                DISTINCT objID \
    801                ,ippObjID \
    802                ,projectionCellID \
    803                FROM StackDetection"
    804         self.scratchDb.execute(sql)
    805 
    806         self.scratchDb.updateAllRows("SkinnyObject", "surveyID", str(self.surveyID))
    807         self.scratchDb.updateAllRows("SkinnyObject", "dataRelease", str(self.skychunk.dataRelease))
    808          
    809 
    810     '''
    811     Populates the StackApFlx table
    812     '''
    813     def populateStackApFlx(self):
    814         filter = ['g','r','i','z','y']
    815 
    816         for f in filter:
    817             skip = 0
    818             if (f == 'g'):
    819                 if self.gstackID > 0:
    820                     self.header = self.gheader
    821                 else:
    822                     skip = 1
    823             if (f == 'r'):
    824                 if self.rstackID > 0:
    825                     self.header = self.rheader
    826                 else:
    827                     skip = 1
    828             if (f == 'i'):
    829                 if self.istackID > 0:
    830                     self.header = self.iheader
    831                 else:
    832                     skip = 1
    833             if (f == 'z'):
    834                 if self.zstackID > 0:
    835                     self.header = self.zheader
    836                 else:
    837                     skip = 1
    838             if (f == 'y'):
    839                 if self.ystackID > 0:
    840                     self.header = self.yheader
    841                 else:
    842                     skip =1
    843 
    844             if skip == 0:
    845                 self.logger.infoPair("Adding fluxes", "un-convolved")
    846                 self.updateModelFitFlxs("", "((b.table_index -1) % 3 = 0)", "StackApFlx", f)
    847                 self.logger.infoPair("Adding fluxes", "1st convolved")
    848                 self.updateModelFitFlxs("c1", "((b.table_index -1) % 3 = 1)","StackApFlx",f)
    849                 self.logger.infoPair("Adding fluxes", "2nd convolved")
    850                 self.updateModelFitFlxs("c2", "((b.table_index -1) % 3 = 2)","StackApFlx",f)
    851 
    852                 self.deleteDetectionsNotInStackObject("StackApFlx",f)
    853 
    854         self.scratchDb.reportAndDeleteRowsWithNULLS("StackApFlx", "objID")
    855        
    856 
    857 
    858     '''
    859     Populates the StackModelFit table
    860     '''
    861     def populateStackModelFit(self, filter):
    862         # for each filter
    863         f =filter
    864         if (filter == 'g'):
    865             self.header = self.gheader
    866            
    867         if (filter == 'r'):
    868             self.header = self.rheader
    869         if (filter == 'i'):
    870             self.header = self.iheader
    871         if (filter == 'z'):
    872             self.header = self.zheader
    873         if (filter == 'y'):
    874             self.header = self.yheader
    875            
    876 
    877 
    878 
    879 
    880         self.logger.infoPair("getting","imageID")
    881         imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
    882         self.logger.infoPair("obtained","imageID")
    883         self.logger.infoPair("Procesing table", "StackModelFit")
    884 
    885 
    886         # insert all the detections
    887 
    888         # populate model parameters
    889         self.logger.infoPair("Adding model fit", "deVaucouleurs")
    890         self.updateModelFit("deV", "PS_MODEL_DEV", filter, self.header['EXPTIME'])
    891         self.logger.infoPair("Adding model fit", "exponential")
    892         self.updateModelFit("deV", "PS_MODEL_EXP", filter, self.header['EXPTIME'])
    893         self.logger.infoPair("Adding model fit", "sersic")
    894         self.updateModelFit("deV", "PS_MODEL_SERSIC", filter, self.header['EXPTIME'])
    895  
    896 
    897         self.logger.infoPair("Adding fluxes", "un-convolved")
    898         self.updateModelFitFlxs("", "((b.table_index -1) % 3 = 0)","StackModelFit",f)
    899         self.logger.infoPair("Adding fluxes", "1st convolved")
    900         self.updateModelFitFlxs("c1", "((b.table_index -1) % 3 = 1)","StackModelFit",f)
    901         self.logger.infoPair("Adding fluxes", "2nd convolved")
    902         self.updateModelFitFlxs("c2", "((b.table_index -1) % 3 = 2)","StackModelFit",f)
    903 
    904  
    905         self.logger.infoPair("Adding", "petrosians for extended sources")
    906         sql = "UPDATE StackModelFit as a, "+f+"SkyChip_xsrc AS b SET \
    907         "+f+"petRadius=b.PETRO_RADIUS \
    908         ,"+f+"petRadiusErr=b.PETRO_RADIUS_ERR \
    909         ,"+f+"petFlux=POW(10.0, -0.4 * b.PETRO_MAG) /" + str(self.header['EXPTIME']) + " \
    910         ,"+f+"petFluxErr=-999  \
    911         ,"+f+"petR50=b.PETRO_RADIUS_50 \
    912         ,"+f+"petR50Err=b.PETRO_RADIUS_50_ERR \
    913         ,"+f+"petR90=b.PETRO_RADIUS_90 \
    914         ,"+f+"petR90Err=b.PETRO_RADIUS_90_ERR \
    915         ,"+f+"petCf=b.PETRO_FILL \
    916         WHERE a."+f+"ippDetectID=b.IPP_IDET"
    917         self.scratchDb.execute(sql)
    918 
    919         self.logger.infoPair("Adding", "petFluxErr for non nulls")
    920         sql = "UPDATE StackModelFit as a, "+f+"SkyChip_xsrc AS b SET \
    921         "+f+"petFluxErr=ABS(b.PETRO_MAG_ERR) * POW(10.0, (-0.4*b.PETRO_MAG)) / " + str(self.header['EXPTIME']) + " / 1.085736  \
    922         WHERE a."+f+"ippDetectID=b.IPP_IDET \
    923         AND (b.PETRO_MAG_ERR is not NULL AND b.PETRO_MAG is not NULL AND PETRO_MAG_ERR < 1000.0)"
    924         # added this because when the petromagerr is crazy large (10^29 it out of ranges the flux err calc)
    925         self.logger.infoPair("sql", sql)
    926         self.scratchDb.execute(sql)
    927 
    928 
    929 
    930         self.scratchDb.updateAllRows("StackModelFit", "surveyID", str(self.surveyID))
    931         self.scratchDb.updateAllRows("StackModelFit", "dataRelease", str(self.skychunk.dataRelease))
    932 
    933         self.logger.infoPair("not adding"," PrimaryF to stackApFlx")
    934         sql = "UPDATE StackModelFit AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
    935                a.primaryF = ((b.flags & 0x10000) >> 16 ) \
    936                WHERE a.ippDetectID = b.ippDetectID \
    937                AND b.imageID = " + str(imageID)
    938 
    939 #        try:
    940 #            self.scratchDb.execute(sql)
    941 #        except:
    942 #            return
    943 
    944 ##        self.scratchDb.updateAllRows("StackModelFit", "activeFlag", "0")
    945         ##self.updateStackMetaID("StackModelFit")
    946 ##        self.updateStackTypeID("StackModelFit")
    947        
    948         self.scratchDb.reportAndDeleteRowsWithNULLS("StackModelFit", "objID")
    949         self.deleteDetectionsNotInStackObject("StackModelFit", f)
    950 
    951     '''
    952     Reports and deletes detections in this table that are not in StackObject
    953     '''
    954     def deleteDetectionsNotInStackObject(self, table, filter):
    955         f= filter
    956 
    957         sql = "SELECT COUNT(*) FROM " + table + " WHERE "+f+"ippDetectID NOT IN (SELECT "+f+"ippDetectID FROM StackObject)"
    958         rs = self.scratchDb.executeQuery(sql)
    959         rs.first()
    960         nMissing = rs.getInt(1)
    961  
    962         if nMissing < 1: return
    963        
    964         sql = "DELETE FROM " + table + " WHERE "+f+"ippDetectID NOT IN (SELECT "+f+"ippDetectID FROM StackObject)"
    965         self.scratchDb.execute(sql)
    966         self.logger.infoPair("Detections not in StackObject", "%d deleted from %s" % (nMissing, table))
    967        
    968 
    969     '''
    970     Populates the StackToImage table
    971     '''
    972     def populateStackToImage(self):
    973 
    974         self.logger.infoPair("Procesing table", "StackToImage")
    975         filters = ['g','r','i','z','y']
    976         for f in filters:
    977            
    978             if f == 'g':
    979                 stackmetaid = self.gstackID
    980             if f == 'r':
    981                 stackmetaid = self.rstackID
    982             if f == 'i':
    983                 stackmetaid = self.istackID
    984             if f == 'z':
    985                 stackmetaid = self.zstackID
    986             if f == 'y':
    987                 stackmetaid = self.ystackID
    988             if stackmetaid > 0:
    989    
    990                 imageIDs = self.gpc1Db.getImageIDsForThisStackID(stackmetaid)
    991 
    992                 for imageID in imageIDs:
    993                     sql = "INSERT INTO StackToImage (stackMetaID, imageID) \
    994                    VALUES (\
    995                    " + str(stackmetaid) + ", " + imageID + ")"
    996                     self.scratchDb.execute(sql)
    997 
    998         # now update StackMeta with correct number of inputs
    999                     sql = "UPDATE "+f+"StackMeta SET nP2Images = (SELECT COUNT(distinct(floor(imageID/100))) FROM StackToImage where stackMetaID = "+str(stackmetaid)+")"
    1000                     self.scratchDb.execute(sql)
    1001 
    1002     '''
    1003     Generates the randomStackIds
    1004     '''
    1005     def populateRandomsAndSkyCellID(self):
    1006 
    1007         self.logger.infoPair("Generating Randoms","for StackObject")
    1008         sql = "update StackObject set randomStackObjID = FLOOR(RAND()*9223372036854775807) \
    1009               ,skyCellID = " + str(self.skycell)+ " \
    1010               ,surveyID = " + str(self.surveyID)
    1011         try:
    1012             self.scratchDb.execute(sql)
    1013         except:
    1014             self.logger.infoPair("failed sql", sql)
    1015 
    1016     '''
    1017     copies randomStackIds from StackObject to tableName
    1018     '''
    1019     def copyRandomsAndSkyCellIDFromStackObject(self, tableName):
    1020 
    1021         self.logger.infoPair("copying Randoms from StackObject to ", tableName)
    1022         sql = "update " + tableName + " join StackObject using (objID) \
    1023         set " + tableName + ".randomStackObjID = StackObject.randomStackObjID \
    1024         , " + tableName + ".skyCellID = StackObject.skyCellID \
    1025         , " + tableName + ".surveyID = StackObject.surveyID"
    1026         self.logger.infoPair("sql", sql)
    1027         try:
    1028             self.scratchDb.execute(sql)
    1029         except:
    1030             self.logger.infoPair("failed sql", sql)
    1031 
    1032 
    1033        
    1034     def populateStackIPPDetectIDFromDvo(self, tableName, all):
    1035 
    1036         #tableName = "StackObject"
    1037         self.logger.infoPair("Processing table", tableName)
    1038 
    1039         filters = ['g','r','i','z','y']
    1040        
    1041         for f in filters:
    1042             skip = 0
    1043             #first: do we skip this filter
    1044             if f == 'g':
    1045                 if self.gstackID < 0:
    1046                     skip = 1
    1047                 else:
    1048                     self.header=self.gheader
    1049                     stackmetaid = self.gstackID
    1050             elif f == 'r':
    1051                 if self.rstackID < 0:
    1052                     skip = 1
    1053                 else:
    1054                     self.header = self.rheader
    1055                     stackmetaid = self.rstackID
    1056             elif f == 'i':
    1057                 if self.istackID < 0:
    1058                     skip = 1
    1059                 else:
    1060                     self.header = self.iheader
    1061                     stackmetaid = self.istackID
    1062             elif f == 'z':
    1063                 if self.zstackID < 0:
    1064                     skip = 1
    1065                 else:
    1066                     self.header = self.zheader
    1067                     stackmetaid = self.zstackID
    1068             elif f == 'y':
    1069                 if self.ystackID < 0:
    1070                     skip = 1
    1071                 else:
    1072                     self.header = self.yheader
    1073                     stackmetaid = self.ystackID
    1074             if skip == 0:       
    1075                 imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
    1076                 self.logger.infoPair("obtained","imageID")
    1077                 addsql = ""
    1078                 if (all == 1):
    1079                     addsql = "a." + f + "ra = b.ra, \
    1080                       a." + f + "dec = b.dec_, \
    1081                       a." + f + "raErr = b.raErr, \
    1082                       a." + f + "decErr = b.decErr, \
    1083                       a." + f + "zp = b.zp, \
    1084                       a." + f + "expTime = b.expTime,"
    1085 
    1086                    
    1087                 sql = "UPDATE " + tableName + " AS a, "  + self.scratchDb.dvoDetectionTable + " AS b \
    1088                       SET a." + f + "ippDetectID = b.ippDetectID, \
    1089                       " + addsql + " \
    1090                       a." + f + "stackDetectID = b.detectID,   \
    1091                       a." + f + "ippObjID = b.ippObjID, \
    1092                       a." + f + "stackMetaID = " + str(stackmetaid) +  " \
    1093                       WHERE a.objID = b.objID  AND b.imageID = " + str(imageID)
    1094                 self.logger.infoPair('sql',sql)   
    1095                 self.scratchDb.execute(sql)
    1096             else:
    1097                 self.logger.infoPair("skipping ingest of dvo for filter",f)
    1098         #out of the loops - give dataRelase to all       
    1099         self.scratchDb.updateAllRows(tableName, "dataRelease", str(self.skychunk.dataRelease))
    1100 
    1101 
    1102     def deleteNULLippDetectIDs(self, tableName):
    1103 
    1104         self.logger.infoPair("Deleting NULL ippdetectIDs from table", tableName)
    1105         sql = "DELETE FROM " + tableName + " WHERE \
    1106               gippDetectID is NULL AND \
    1107               rippDetectID is NULL AND \
    1108               iippDetectID is NULL AND \
    1109               zippDetectID is NULL AND \
    1110               yippDetectID is NULL "
    1111         self.logger.infoPair('sql',sql)   
    1112         self.scratchDb.execute(sql)
    1113 
    1114     '''
    1115     Applies indexes to the PSPS tables
    1116     '''
    1117     def alterPspsTables(self):
    1118 
    1119         self.logger.debug("Altering PSPS tables")
    1120         # heather uncommented the unique line -- well that no worky
    1121         #self.scratchDb.makeColumnUnique("StackObject", "objID")
    1122         self.scratchDb.createIndex("StackObject", "ippDetectID")
    1123         self.scratchDb.createIndex("StackObject", "stackDetectID")
    1124         self.scratchDb.createIndex("StackApFlx", "ippDetectID")
    1125         self.scratchDb.createIndex("StackModelFit", "ippDetectID")
    1126 
    1127         return True
    1128 
    1129     '''
    1130     Applies indexes to the IPP tables
    1131     '''
    1132     def indexIppTables(self):
    1133 
    1134         self.logger.infoPair("Creating indexes on", "IPP tables")
    1135         self.scratchDb.createIndex("SkyChip_psf", "IPP_IDET")
    1136         self.scratchDb.createIndex("SkyChip_xfit", "IPP_IDET")
    1137         self.scratchDb.createIndex("SkyChip_xrad", "IPP_IDET")
    1138         self.scratchDb.createIndex("SkyChip_xsrc", "IPP_IDET")
    1139 
    1140         return True
    1141     '''
    1142     Insert objid (from dvo) into table
    1143     '''
    1144     def insertDvoIDs(self, table, filterName):
    1145         self.logger.infoPair("getting imageID for ","filter")
    1146         if (filterName == 'g.00000'):
    1147             self.header=self.gheader
    1148         if (filterName == 'r.00000'):
    1149             self.header=self.rheader
    1150         if (filterName == 'i.00000'):
    1151             self.header=self.iheader
    1152         if (filterName == 'z.00000'):
    1153             self.header=self.zheader
    1154         if (filterName == 'y.00000'):
    1155             self.header=self.yheader
    1156 
    1157         imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
    1158         self.logger.infoPair("obtained","imageID")
    1159         self.logger.debug("Updating table '" + table + "' with DVO IDs...")
    1160         sql = "INSERT IGNORE INTO " + table + " ( \
    1161                objID ) \
    1162                SELECT (objID) FROM " + self.scratchDb.dvoDetectionTable + "  \
    1163                WHERE " + self.scratchDb.dvoDetectionTable + ".imageID = " + str(imageID)
    1164         self.logger.infoPair("sql",sql)
    1165         self.scratchDb.execute(sql)
    1166    
    1167 
    1168 
    1169     '''
    1170     Updates provided table with DVO IDs from DVO table
    1171     '''
    1172     def updateDvoIDs(self, table, filterName):
    1173         self.logger.infoPair("getting imageID for ","filter")
    1174         imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
    1175         self.logger.infoPair("obtained","imageID")
    1176         self.logger.debug("Updating table '" + table + "' with DVO IDs...")
    1177         sql = "UPDATE " + table + " AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
    1178                a.ippObjID = b.ippObjID, \
    1179                a.stackDetectID = b.detectID, \
    1180                a.objID = b.objID \
    1181                WHERE a.ippDetectID = b.ippDetectID \
    1182                AND b.imageID = " + str(imageID)
    1183         self.scratchDb.execute(sql)
    1184    
    1185     '''
    1186     Updates Flags
    1187     '''
    1188     def updateDvoIDsAndFlags(self, table):
    1189         self.logger.infoPair("getting","imageID")
    1190         imageID = self.scratchDb.getImageIDFromExternID(self.header['IMAGEID'])
    1191         self.logger.infoPair("obtained","imageID")
    1192         self.logger.debug("Updating table '" + table + "' with DVO IDs...")
    1193         sql = "UPDATE " + table + " AS a, " + self.scratchDb.dvoDetectionTable + " AS b SET \
    1194                a.ippObjID = b.ippObjID, \
    1195                a.stackDetectID = b.detectID, \
    1196                a.objID = b.objID, \
    1197                a.infoFlag = b.flags << 45 | a.infoFlag,  \
    1198                a.primaryF = ((b.flags & 0x10000) >> 16 ) \
    1199                WHERE a.ippDetectID = b.ippDetectID \
    1200                AND b.imageID = " + str(imageID)
    1201 
    1202         print "update dvo sql: ", sql
    1203         self.scratchDb.execute(sql)
    1204    
     999            self.logger.errorPair('failed sql',sql)
     1000            return
    12051001   
    12061002    '''
     
    12101006        self.logger.infoPair("starting","populatePspsTables");
    12111007        self.skipBatch = False
    1212         if not self.useFullTables:
    1213              if not self.getIDsFromDVO():
    1214                 return False
    1215         #do some basics first
    1216         # populate stack meta per filter
    1217         # insert objid/stackdetectid per filter to each table           
     1008
     1009        # each of the "populate*" methods below add their tables to the list:
    12181010        self.tablesToExport=[]   
    12191011
    1220         if self.gstackID > 0:       
    1221             self.logger.infoPair("populating","gStackMeta")   
    1222             self.populateStackMeta("g.00000")
    1223             self.insertDvoIDs("StackObject","g.00000")
    1224             self.insertDvoIDs("StackModelFit","g.00000")
    1225             self.insertDvoIDs("StackApFlx","g.00000")
    1226             self.tablesToExport.append("gStackMeta")
    1227         if self.rstackID > 0:   
    1228             self.logger.infoPair("populating","rStackMeta")   
    1229             self.populateStackMeta("r.00000")
    1230             self.insertDvoIDs("StackObject","r.00000")
    1231             self.insertDvoIDs("StackModelFit","r.00000")
    1232             self.insertDvoIDs("StackApFlx","r.00000")
    1233             self.tablesToExport.append("rStackMeta")
    1234         if self.istackID > 0:   
    1235             self.logger.infoPair("populating","iStackMeta")   
    1236             self.populateStackMeta("i.00000")
    1237             self.insertDvoIDs("StackObject","i.00000")
    1238             self.insertDvoIDs("StackModelFit","i.00000")
    1239             self.insertDvoIDs("StackApFlx","i.00000")
    1240             self.tablesToExport.append("iStackMeta")
    1241         if self.zstackID > 0:   
    1242             self.logger.infoPair("populating","zStackMeta")   
    1243             self.populateStackMeta("z.00000")
    1244             self.insertDvoIDs("StackObject","z.00000")
    1245             self.insertDvoIDs("StackModelFit","z.00000")
    1246             self.insertDvoIDs("StackApFlx","z.00000")
    1247             self.tablesToExport.append("zStackMeta")
    1248         if self.ystackID > 0:   
    1249             self.logger.infoPair("populating","yStackMeta")   
    1250             self.populateStackMeta("y.00000")
    1251             self.insertDvoIDs("StackObject","y.00000")
    1252             self.insertDvoIDs("StackModelFit","y.00000")
    1253             self.insertDvoIDs("StackApFlx","y.00000")
    1254             self.tablesToExport.append("yStackMeta")
    1255 
    1256         self.logger.infoPair("populating ","StackObject")
    1257         # need to index on objid and ippdetectid  or it is stupidly slow
    1258         self.scratchDb.createIndex("StackObject", "objID")
    1259         #populate from dvo the (f)ippDetectID into StackObject 
    1260         self.populateStackIPPDetectIDFromDvo("StackObject",1)
    1261         #index the ippDetectids for the next step
    1262         self.scratchDb.createIndex("StackObject", "gippDetectID")
    1263         self.scratchDb.createIndex("StackObject", "rippDetectID")
    1264         self.scratchDb.createIndex("StackObject", "iippDetectID")
    1265         self.scratchDb.createIndex("StackObject", "zippDetectID")
    1266         self.scratchDb.createIndex("StackObject", "yippDetectID")
    1267         self.populateStackObject()
    1268         self.populateRandomsAndSkyCellID()
    1269         # stackObject should be done, pending a few NULL columns (need help)
     1012        # EAM 20140730 : I have revised the StackObjectXX construction
     1013        # process.  The challenge here is that we have dvo-generated
     1014        # objIDs and ippObjIDs for each stack detection in seperate
     1015        # rows, but we want to merge the 5 filter sets into a single
     1016        # set of rows.  The old code was relying on INSERT IGNORE,
     1017        # making it hard to catch errors, and probably not doing the
     1018        # insert very efficiently
     1019       
     1020        # Now we do a first pass with SELECT DISTINCT to get the
     1021        # complete set of objIDs which are associated with detections
     1022        # from one of the relevant images (ie, measure.imageID matches
     1023        # the set of image IDs). 
     1024
     1025        # once we have determined the complete set of desired objects,
     1026        # then we can use an update to set the per-field fields with
     1027        # data selected for each filter.  Once we have constructed
     1028        # this basic common information in StackObjectThin, then we
     1029        # can uses this table to seed the same rows in the other Stack
     1030        # tables
     1031
     1032        for filter in self.filters:
     1033            if self.stackIDs[filter] > 0:       
     1034                self.populateStackMeta(filter)
     1035
     1036        self.populateStackObjectThin()
     1037
     1038        self.populateStackObjectRaw()
    12701039
    12711040        if self.stackType != "NIGHTLY_STACK":
    12721041
     1042            self.logger.infoPair("populating ","StackModelFitExtra")
     1043            self.populateStackModelFitExtra()
     1044
    12731045            self.logger.infoPair("populating ","StackModelFit")
    1274 
    1275             self.scratchDb.createIndex("StackModelFit", "objID")
    1276         #populate from dvo the (f)ippdetectid into stackModelFit
    1277             self.populateStackIPPDetectIDFromDvo("StackModelFit",0)
    1278         #index the ippDetectIds for the next step
    1279             self.scratchDb.createIndex("StackModelFit", "gippDetectID")
    1280             self.scratchDb.createIndex("StackModelFit", "rippDetectID")
    1281             self.scratchDb.createIndex("StackModelFit", "iippDetectID")
    1282             self.scratchDb.createIndex("StackModelFit", "zippDetectID")
    1283             self.scratchDb.createIndex("StackModelFit", "yippDetectID")
    1284         #cull the entries that should not be (how?)       
    1285             self.deleteNULLippDetectIDs("StackModelFit")
    1286         #populate stackModelFit
    1287             if self.gstackID > 0:
    1288                 self.logger.infoPair("populating g filter for stackModelFit, stackmetaid =", self.gstackID)
    1289                 self.populateStackModelFit("g")
    1290             if self.rstackID > 0:
    1291                 self.logger.infoPair("populating r filter for stackModelFit, stackmetaid =", self.rstackID)
    1292                 self.populateStackModelFit("r")
    1293             if self.istackID > 0:
    1294                 self.logger.infoPair("populating i filter for stackModelFit, stackmetaid =", self.istackID)
    1295                 self.populateStackModelFit("i")
    1296             if self.zstackID > 0:
    1297                 self.logger.infoPair("populating z filter for stackModelFit, stackmetaid =", self.zstackID)
    1298                 self.populateStackModelFit("z")
    1299             if self.ystackID > 0:
    1300                 self.logger.infoPair("populating y filter for stackModelFit, stackmetaid =", self.ystackID)
    1301                 self.populateStackModelFit("y")
    1302            
    1303             self.copyRandomsAndSkyCellIDFromStackObject("StackModelFit")
    1304  
    1305             self.logger.infoPair("populating ","StackApFlx")
    1306            
    1307             self.scratchDb.createIndex("StackApFlx", "objID")
    1308         #populate from dvo the (f)ippDetectID into StackApFlx
    1309             self.populateStackIPPDetectIDFromDvo("StackApFlx",0)
    1310         #index the ippDetectIDs for the next step
    1311             self.scratchDb.createIndex("StackApFlx", "gippDetectID")
    1312             self.scratchDb.createIndex("StackApFlx", "rippDetectID")
    1313             self.scratchDb.createIndex("StackApFlx", "iippDetectID")
    1314             self.scratchDb.createIndex("StackApFlx", "zippDetectID")
    1315             self.scratchDb.createIndex("StackApFlx", "yippDetectID")
    1316         #populate StackApFlx
    1317             self.deleteNULLippDetectIDs("StackApFlx")
     1046            self.populateStackModelFit("Exp", "PS_MODEL_EXP")
     1047            self.populateStackModelFit("DeV", "PS_MODEL_DEV")
     1048            self.populateStackModelFit("Ser", "PS_MODEL_SERSIC")
     1049
     1050            self.populateStackPetrosian()
     1051
     1052            self.logger.infoPair("populating ","StackApFlx Tables")
    13181053            self.populateStackApFlx()
    1319             self.copyRandomsAndSkyCellIDFromStackObject("StackApFlx")
    1320         #cull the entries that should not be (how?)
    1321        
    1322        
     1054
     1055            self.populateStackApFlxFull("")
     1056            self.populateStackApFlxFull("C1")
     1057            self.populateStackApFlxFull("C2")
     1058
     1059        # delete rows with no content. for the other tables, this is done in
     1060        # the 'populate' functions, but StackObjectThin needs to retain all rows
     1061        # until those tables are done
     1062        self.deleteRowsWithNoStackData("StackObjectThin")
     1063
    13231064        self.logger.infoPair("populating","StackToImage")
    13241065        self.populateStackToImage()
    13251066       
    1326         self.setMinMaxObjID(["StackObject"])
    1327       #  self.updateStackTypeID("StackModelFit")
    1328 
    1329         ##if self.totalDetections < 1:
    1330         #self.logger.infoPair("populating","SkinnyObject")
    1331         self.populateSkinnyObject()
    1332 
    1333             ##self.logger.error("No detections to publish")
    1334             ##return False
    1335         self.tablesToExport.append("StackToImage")
    1336         self.tablesToExport.append("StackObject")
    1337         self.tablesToExport.append("StackModelFit")
    1338         self.tablesToExport.append("StackApFlx")
    1339         self.tablesToExport.append("SkinnyObject")
     1067        self.setMinMaxObjID(["StackObjectThin"])
     1068
    13401069        self.logger.infoPair("finishing","populatePspsTables");
    13411070        return True
     1071
    13421072    '''
    13431073    overidding this method - use regex to trimoff letter before stack
     
    13451075    def exportPspsTablesToFits(self, regex="(.*)"):
    13461076        return super(StackBatch, self).exportPspsTablesToFits("(Stack.*)")
     1077
     1078    '''
     1079    Imports IPP tables from FITS file
     1080    Accepts a regular expression to match the tables so not all tables need to be imported
     1081    (This regex feature is not currently used...)
     1082    '''
     1083    def importIppTables(self, columns="*", tableRE=""):
     1084       
     1085        if self.config.retry: return True
     1086
     1087        self.logger.infoPair("Importing ST tables with table match expression: ", tableRE)
     1088
     1089        count = 0
     1090        for filter in self.filters:
     1091            if self.stackIDs[filter] <= 0: 
     1092                self.logger.infoPair("no files for filter" , filter)
     1093                continue
     1094
     1095            fileName = self.fits[filter].getPath()
     1096           
     1097            self.logger.infoPair("using filename:",fileName)
     1098           
     1099            try:
     1100                tables = stilts.treads(fileName)
     1101            except:
     1102                self.logger.errorPair("STILTS could not import from", fileName)
     1103                return False
     1104           
     1105            # count = 0
     1106            for table in tables:
     1107             
     1108                match = re.match(tableRE, table.name)
     1109                if not match: continue
     1110
     1111                self.logger.infoPair("Reading IPP table", filter + table.name)
     1112                table = stilts.tpipe(table, cmd='addcol table_index $0')
     1113                table = stilts.tpipe(table, cmd='explodeall')
     1114                 
     1115                # drop any previous tables before import
     1116                self.scratchDb.dropTable(filter + table.name)
     1117                 
     1118                # IPP FITS files are littered with infinities, so remove these
     1119                self.logger.info("Removing Infinity values from all columns")
     1120                table = stilts.tpipe(table, cmd='keepcols "' + columns + '"')
     1121                table = stilts.tpipe(table, cmd='replaceval -Infinity null *')
     1122                table = stilts.tpipe(table, cmd='replaceval Infinity null *')
     1123                 
     1124                try:
     1125                    table.write(self.scratchDb.url + '#' + filter + table.name)
     1126                    count = count + 1
     1127                except:
     1128                    self.logger.exception("Problem writing table '" + filter + table.name + "' to the database")
     1129                     
     1130        self.logger.infoPair("Done. Imported", "%d tables" % count)
     1131        self.indexIppTables()
     1132                     
     1133        return True
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/Detection

    r37000 r37246  
    11objID           dimensionless   BIGINT  8         NA    ODM object identifier
    2 gcObjID         dimensionless   BIGINT  8         NA    ODM galactic coordinates identifier
    32detectID        dimensionless   BIGINT  8         NA    ODM detection identifier
    43ippObjID        dimensionless   BIGINT  8         NA    detection id generated by IPP
     
    4847apFluxErr       adu/seconds     REAL    4       -999    Aperture flux error
    4948apFillF         dimensionless   REAL    4       -999    Aperture fill factor
     49apRadius        arcsec          REAL    4       -999    Aperture radius
    5050kronFlux        adu/seconds     REAL    4       -999    Kron flux
    5151kronFluxErr     adu/seconds     REAL    4       -999    Kron flux error
    5252kronRad         arcsec          REAL    4       -999    Kron radius
    53 kronRadErr      arcsec          REAL    4       -999    Kron radius error (DROP)
    5453sky             adu/sec/pixel   REAL    4       -999    PSF sky level at source
    5554skyErr          adu/sec/pixel   REAL    4       -999    estimated error in sky
     
    5958--
    6059-- [231 bytes/det]
     60
     61### do we want apRadius?
     62### relevant code spots:
     63### config/tables.P2.vot, detectionbatch.py:315
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/Detection.txt

    r37000 r37246  
    1 objID           = dvo / addstar
    2 gcObjID         = dvo / addstar [EAM: add to addstar]
    3 detectID        = dvo / addstar
    4 ippObjID        = dvo / addstar
    5 ippDetectID     = dvo / addstar
    6 filterID        = smf / ipptopsps
    7 surveyID        = ipptopsps
    8 imageID         = smf header
    9 randomDetID     = ipptopsps
    10 dvoRegionID     = dvo / catID [EAM: add to dvopsps]
    11 obsTime         = smf
    12 xPos            = smf
    13 yPos            = smf
    14 xPosErr         = smf [EAM: modify errors to match relastro?]
    15 yPosErr         = smf
    16 pltScale        = smf
    17 posAngle        = smf
    18 ----------------=
    19 ra              = dvo / relastro
    20 dec             = dvo / relastro
    21 raErr           = dvo / relastro
    22 decErr          = dvo / relastro
    23 zp              = dvo / relphot
    24 telluricExt     = zp - zpNominal (dvopsps) [EAM: add to dvopsps]
    25 expTime         = smf
    26 airMass         = smf
    27 ----------------=
    28 psfFlux         = smf [OK: ipptopsps uses PSF_FLUX]
    29 psfFluxErr      = smf
    30 psfMajorFWHM    = smf [PSF_MAJOR is Sxx parameter, NOT FWHM] [EAM: add PSF_FWHM_MAJ to smf, keep PSF_MAJOR]
    31 psfMinorFWHM    = smf [PSF_MINOR is Sxx parameter, NOT FWHM] [EAM: add PSF_FWHM_MIN to smf, keep PSF_MINOR]
    32 psfTheta        = smf
    33 psfCore         = smf [EAM: add PSF_CORE to smf]
    34 psfQf           = smf
    35 psfQfPerfect    = smf
    36 psfChiSq        = smf
    37 psfLikelihood   = ipptopsps
    38 momentXX        = smf
    39 momentXY        = smf
    40 momentYY        = smf
    41 momentR1        = smf
    42 momentRH        = smf [XXX : MOMENTS_RH is NOT half-light radius : keep as MOMENTS_RH or calculate?]
    43 momentM3C       = smf
    44 momentM3S       = smf
    45 momentM4C       = smf
    46 momentM4S       = smf
    47 apFlux          = smf [requires PS1_V4]
    48 apFluxErr       = smf [requires PS1_V4]
    49 apFillF         = smf [EAM: add to pmSource and smf]
    50 kronFlux        = smf
    51 kronFluxErr     = smf
    52 kronRad         = (2.5*R1) : Ken : drop this or MOMENTS_R1?
    53 kronRadErr      = [not calculated] : drop this
    54 sky             = smf
    55 skyErr          = smf
    56 infoFlag        = smf
    57 infoFlag2       = smf
    58 dataRelease     = ippToPsps
     1objID           + dvo = average.extID [calculated in addstar]
     2detectID        + dvo = measure.extID [calculated in addstar]
     3ippObjID        + dvo = average.objID + (average.catID << 32) [NOTE: this is a change in definition]
     4ippDetectID     + smf:IPP_IDET
     5filterID        + ipptopsps : internal, lookup from filter (grizy)
     6surveyID        + ipptopsps : internal, from survey name
     7imageID         - ipptopsps : expID x y (*** is this right???) (smf:IMAGEID / gpc1.chipRun.chip_image_id)_
     8randomDetID     + ipptopsps : RANDOM from sql
     9dvoRegionID     + dvo:average.catID
     10obsTime         + smf:MJD-OBS + 0.5 EXPTIME / 84600
     11xPos            + smf:X_PSF
     12yPos            + smf:Y_PSF
     13xPosErr         + smf:X_PSF_SIG
     14yPosErr         + smf:Y_PSF_SIG
     15pltScale        + smf:PLTSCALE (negative -> sky parity)
     16posAngle        + smf:POSANGLE
     17---------------
     18ra              + dvo:measure.ra
     19dec             + dvo:measure.dec
     20raErr           + smf:X_PSF_SIG * abs(PLTSCALE)
     21decErr          + smf:Y_PSF_SIG * abs(PLTSCALE)
     22zp              + dvo / dvopsps : zp
     23telluricExt     + dvo / dvopsps : zp - zpNominal (dvopsps)
     24expTime         + dvo:measure.dt [converted to seconds]
     25airMass         + dvo:measure.airmass
     26---------------
     27psfFlux         + smf:PSF_INST_FLUX / EXPTIME
     28psfFluxErr      + smf:PSF_INST_FLUX_SIG / EXPTIME
     29psfMajorFWHM    + smf:PSF_FWHM_MAJ
     30psfMinorFWHM    + smf:PSF_FWHM_MIN
     31psfTheta        + smf:PSF_THETA
     32psfCore         + smf:PSF_CORE
     33psfQf           + smf:PSF_QF
     34psfQfPerfect    + smf:PSF_QF_PERFECT
     35psfChiSq        + smf:PSF_CHISQ
     36psfLikelihood   + smf:psfLikelihood(EXT_NSIGMA)
     37momentXX        + smf:MOMENTS_XX
     38momentXY        + smf:MOMENTS_XY
     39momentYY        + smf:MOMENTS_YY
     40momentR1        + smf:MOMENTS_R1
     41momentRH        + smf:MOMENTS_RH
     42momentM3C       + smf:MOMENTS_M3C
     43momentM3S       + smf:MOMENTS_M3S
     44momentM4C       + smf:MOMENTS_M4C
     45momentM4S       + smf:MOMENTS_M4S
     46apFlux          + smf:AP_FLUX
     47apFluxErr       + smf:AP_FLUX_SIG
     48apFillF         + smf:AP_NPIX / (pi * (AP_MAG_RADIUS - 0.5)^2)
     49kronFlux        + smf:KRON_FLUX
     50kronFluxErr     + smf:KRON_FLUX_ERR
     51kronRad         + smf:2.5*MOMENTS_R1
     52sky             + smf:SKY / exptime
     53skyErr          + smf:SKY_SIGMA / exptime
     54infoFlag        + smf:FLAGS
     55infoFlag2       + smf:FLAGS2 | (dvo.measure.flags << 13)
     56dataRelease     + ippToPsps : user input (skychunk.dataRelease)
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/ForcedWarpMeasurement

    r37000 r37246  
     1
    12objID           dimensionless   BIGINT  8       NA      ODM object identifier
    23gcObjID         dimensionless   BIGINT  8       NA      ODM galactic coordinates identifier
     
    3738momentM4S       arcsec^4        REAL    4       -999    4th moment cos(theta)
    3839
    39 lensObjSmearX11 arcsec^-2       REAL    4       -999    per-object smear polarizability X11 term
    40 lensObjSmearX12 arcsec^-2       REAL    4       -999    per-object smear polarizability X12 term
    41 lensObjSmearX22 arcsec^-2       REAL    4       -999    per-object smear polarizability X22 term
    42 lensObjSmearE1  arcsec^-2       REAL    4       -999    per-object smear polarizability E1 term
    43 lensObjSmearE2  arcsec^-2       REAL    4       -999    per-object smear polarizability E2 term
    44 lensObjShearX11 dimensionless   REAL    4       -999    per-object shear polarizability X11 term
    45 lensObjShearX12 dimensionless   REAL    4       -999    per-object shear polarizability X12 term
    46 lensObjShearX22 dimensionless   REAL    4       -999    per-object shear polarizability X22 term
    47 lensObjShearE1  dimensionless   REAL    4       -999    per-object shear polarizability E1 term
    48 lensObjShearE2  dimensionless   REAL    4       -999    per-object shear polarizability E2 term
    49 lensPSFSmearX11 arcsec^-2       REAL    4       -999    psf model smear polarizability X11 term
    50 lensPSFSmearX12 arcsec^-2       REAL    4       -999    psf model smear polarizability X12 term
    51 lensPSFSmearX22 arcsec^-2       REAL    4       -999    psf model smear polarizability X22 term
    52 lensPSFSmearE1  arcsec^-2       REAL    4       -999    psf model smear polarizability E1 term
    53 lensPSFSmearE2  arcsec^-2       REAL    4       -999    psf model smear polarizability E2 term
    54 lensPSFShearX11 dimensionless   REAL    4       -999    psf model shear polarizability X11 term
    55 lensPSFShearX12 dimensionless   REAL    4       -999    psf model shear polarizability X12 term
    56 lensPSFShearX22 dimensionless   REAL    4       -999    psf model shear polarizability X22 term
    57 lensPSFShearE1  dimensionless   REAL    4       -999    psf model shear polarizability E1 term
    58 lensPSFShearE2  dimensionless   REAL    4       -999    psf model shear polarizability E2 term
    59 
    6040apFlux          adu/seconds     REAL    4       -999    Aperture flux
    6141apFluxErr       adu/seconds     REAL    4       -999    Aperture flux error
     
    6646kronRadErr      arcsed          REAL    4       -999    Kron radius error
    6747------------------------------------------------------
    68 flxR5           adu/seconds     REAL    4       -999    Flux inside r = 5
    69 flxR5Err        adu/seconds     REAL    4       -999    estimated error is flxR5
    70 flxR5Std        adu/seconds     REAL    4       -999    estimated standard deviation in flxR5
    71 flxR5Fill       dimensionless   REAL    4       -999    estimated filling factor at R5
    72 flxR6           adu/seconds     REAL    4       -999    Flux inside r = 6
    73 flxR6Err        adu/seconds     REAL    4       -999    estimated error is flxR6
    74 flxR6Std        adu/seconds     REAL    4       -999    estimated standard deviation in flxR6
    75 flxR6Fill       dimensionless   REAL    4       -999    estimated filling factor at R6
    76 ------------------------------------------------------
    7748sky             adu/sec/pixel   REAL    4       -999    PSF sky level at source
    7849skyErr          adu/sec/pixel   REAL    4       -999    estimated error in sky
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/ForcedWarpMeasurement.txt

    r37000 r37246  
    3838momentM4S        = smf
    3939                 =
    40 lensObjSmearX11  = smf [PS1_V5]
    41 lensObjSmearX12  = smf [PS1_V5]
    42 lensObjSmearX22  = smf [PS1_V5]
    43 lensObjSmearE1   = smf [PS1_V5]
    44 lensObjSmearE2   = smf [PS1_V5]
    45 lensObjShearX11  = smf [PS1_V5]
    46 lensObjShearX12  = smf [PS1_V5]
    47 lensObjShearX22  = smf [PS1_V5]
    48 lensObjShearE1   = smf [PS1_V5]
    49 lensObjShearE2   = smf [PS1_V5]
    50 lensPSFSmearX11  = smf [PS1_V5]
    51 lensPSFSmearX12  = smf [PS1_V5]
    52 lensPSFSmearX22  = smf [PS1_V5]
    53 lensPSFSmearE1   = smf [PS1_V5]
    54 lensPSFSmearE2   = smf [PS1_V5]
    55 lensPSFShearX11  = smf [PS1_V5]
    56 lensPSFShearX12  = smf [PS1_V5]
    57 lensPSFShearX22  = smf [PS1_V5]
    58 lensPSFShearE1   = smf [PS1_V5]
    59 lensPSFShearE2   = smf [PS1_V5]
    60                  =
    6140apFlux           = smf [PS1_V4]
    6241apFluxErr        = smf [PS1_V4]
     
    6746kronRadErr       = [drop : not currently calculated]
    6847---------------- =
    69 flxR5            = smf [?? calculated?]
    70 flxR5Err         = smf [?? calculated?]
    71 flxR5Std         = smf [?? calculated?]
    72 flxR5Fill        = smf [?? calculated?]
    73 flxR6            = smf [?? calculated?]
    74 flxR6Err         = smf [?? calculated?]
    75 flxR6Std         = smf [?? calculated?]
    76 flxR6Fill        = smf [?? calculated?]
    77 ---------------- =
    7848sky              = smf
    7949skyErr           = smf
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/MeanObject

    r37000 r37246  
    44
    55objID           dimensionless   BIGINT   8       NA      ODM object identifier index
    6 gcObjID         dimensionless   BIGINT   8       NA     ODM galactic coordinates identifier
    76gQfPerfect      dimensionless   REAL     4       -999    maximum psf qfPerfect from best available g band detections
    87gMeanPSFMag     AB_magnitude    REAL     4       -999    mean g psf AB magnitude from best available measurements (best available as current defined by ipp "waterfall logic" 
    98gMeanPSFMagErr  AB_magnitude    REAL     4       -999    estimated error of best availalbe g-band psf AB magnitudes (individual errors added in quadrature)
    10 gnIncPSFMag     dimensionless   SMALLINT 2       -999    number of best available detections included in mean psfMag
    119gMeanPSFMagStd  dimensioless    REAL     4       -999    standard deviation of best available measurements - compared with MeanErr this is one measure of true variability 
    12 gMinPSFMag      AB_magnitude    REAL     4       -999    minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability. 
    13 gMaxPSFMag      AB_magnitude    REAL     4       -999    maximum best available PSFMag   
     10gMeanPSFMagMin  AB_magnitude    REAL     4       -999    minimum best available PSFMag - min and max are given for PSFMag as they may indicate variability. 
     11gMeanPSFMagMax  AB_magnitude    REAL     4       -999    maximum best available PSFMag   
     12gMeanPSFMagNpt  dimensionless   SMALLINT 2       -999    number of best available detections included in mean psfMag
    1413                                         
    1514gMeanKronMag    AB_magnitude    REAL     4       -999    mean g kron AB magnitude from best available measurements     
    1615gMeanKronMagErr AB_magnitude    REAL     4       -999    estimated error of mean g kron AB magnitude
    17 gnIncKronMag    dimensionless   SMALLINT 2       -999    number of best available detections included mean Kron mag
    18 gMeanKronMagStd dimensioless    REAL     4       -999    standard deviation of best available measurements 
     16gMeanKronMagStd dimensionless   REAL     4       -999    standard deviation of best available measurements 
     17gMeanKronMagNpt dimensionless   SMALLINT 2       -999    number of best available detections included mean Kron mag
    1918                                         
    2019gMeanApMag      AB_magnitude    REAL     4       -999    mean g kron AB magnitude from best available measurements
    2120gMeanApMagErr   AB_magnitude    REAL     4       -999    estimated error of g kron AB magnitude mean
    22 gnIncApMag      dimensionless   SMALLINT 2       -999    number of detections included in best available mean of Kron mag in g filter
    2321gMeanApMagStd   dimensioless    REAL     4       -999    standard deviation of best available measurements   
    24 gFlags          dimensionless   BIGINT   8       NA      flags for g mean
     22gMeanApMagNpt   dimensionless   SMALLINT 2       -999    number of detections included in best available mean of Kron mag in g filter
     23
     24gFlags          dimensionless   INT      4          0    flags for g mean [XXX secfilt.flags is 4byte]
    2525-- duplicate for other filters
    2626
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/MeanObject.txt

    r37000 r37246  
    11
     2*** I've checked that these are plausible, not exact
    23
     4objID           + dvo / addstar
     5gQfPerfect      + dvo / relphot / secfilt.psfQfMax
     6gMeanPSFMag     + dvo / relphot / secfilt.M
     7gMeanPSFMagErr  + dvo / relphot / secfilt.dM
     8gMeanPSFMagStd  + dvo / relphot / secfilt.Mstdev
     9gMeanPSFMagMin  + dvo / relphot / secfilt.Min
     10gMeanPSFMagMax  + dvo / relphot / secfilt.Max
     11gMeanPSFMagNpt  + dvo / relphot / secfilt.Nused
    312
     13gMeanKronMag    + dvo / relphot / secfilt.Mkron
     14gMeanKronMagErr + dvo / relphot / secfilt.dMkron
     15gMeanKronMagStd + dvo / relphot / secfilt.sMkron
     16gMeanKronMagNpt + dvo / relphot / secfilt.NusedKron
    417
    5 objID           = dvo / addstar
    6 gcObjID         = dvo / addstar
    7 gQfPerfect      = dvo / relphot / secfilt. [XXX Not calculated]
    8 gMeanPSFMag     = dvo / relphot / secfilt.M
    9 gMeanPSFMagErr  = dvo / relphot / secfilt.dM
    10 gnIncPSFMag     = dvo / relphot / secfilt.Nused [XXX : ensure .Nused matches .M]
    11 gMeanPSFMagStd  = dvo / relphot / secfilt.Mstdev
    12 gMinPSFMag      = dvo / relphot / secfilt.Min [XXX: replace M_20, M_80 with Min, Max]
    13 gMaxPSFMag      = dvo / relphot / secfilt.Max [XXX: replace M_20, M_80 with Min, Max]
    14                 =
    15 gMeanKronMag    = dvo / relphot / secfilt.Mkron
    16 gMeanKronMagErr = dvo / relphot / secfilt.dMkron
    17 gnIncKronMag    = dvo / relphot / secfilt.nMkron [XXX : not calculated]
    18 gMeanKronMagStd = dvo / relphot / secfilt.MstdevKron [XXX : not calculated]
    19                 =
    20 gMeanApMag      = dvo / relphot / secfilt.Map
    21 gMeanApMagErr   = dvo / relphot / secfilt.? [XXX : not calculated]
    22 gnIncApMag      = dvo / relphot / secfilt.? [XXX : not calculated]
    23 gMeanApMagStd   = dvo / relphot / secfilt.? [XXX : not calculated]
     18gMeanApMag      + dvo / relphot / secfilt.Map
     19gMeanApMagErr   + dvo / relphot / secfilt.dMap
     20gMeanApMagStd   + dvo / relphot / secfilt.sMap
     21gMeanApMagNpt   + dvo / relphot / secfilt.NusedAp
    2422
    25 gFlags          = dvo / relphot / secfilt.flags
     23gFlags          + dvo / relphot / secfilt.flags
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/ObjectThin

    r37000 r37246  
    22objName          string         VAR      8      NA      IAU Name constructed from objID postion PS1.x JHHMMSS.SS+/-DDMMSS.S where x is leading number of procesing version       
    33objID            dimensionless  BIGINT   8      NA      ODM object identifier index
    4 gcObjID          dimensionless  BIGINT  8         NA    ODM galactic coordinates identifier
    54ippObjID         dimensionless  BIGINT   8      NA      IPP object number
    65surveyID         dimensionless  TINYINT  1      255     Survey ID
    7 skyCellID        dimensionless  REAL     4      -999     single float giving PrimaryCell.SkyCell identifier
    86htmID            dimensionless  BIGINT   8      NA      HTM index
    97zoneID           dimensionless  INT      4      NA      Zone index
     8tessID           dimensionless  TINYINT  1       -1     ID mapping to tessellation names (eg, RINGS.V3, MD01.V3, etc)
     9projectionID     dimensionless  SMALLINT 2       -999   valid values 0 - < 10000
     10skyCellID        dimensionless  TINYINT  1       255    valid values 0 - 143 (12x12 grid)
    1011randomID         dimensionless  BIGINT   8      0       Random integer between 0 and 2^32 = 4,394,967,296 remaining ramdom integer 0 
    1112batchID          dimensionless  BIGINT   8      -999    batch id       
     
    2324raMeanErr        arcsec         REAL     4      -999    Combination of the measurement Errors in the Right Ascension from the mean detections if they exist
    2425decMeanErr       arcsec         REAL     4      -999    Combination of the measurement Errors in the  Declination measurements if they exist 
    25 raMeanStd        arcsec         Real     4      -999    standard deviation of Right Ascension measurements in detections if they exist
    26 decMeanStd       arcsec         REAL     4      -999    standard deviation of the  Declination measurements if they exist 
     26posMeanChisq     dimensionless  REAL     4      -999    chisq of mean position
    2727--------------------------------------------------------------------------------------------------------
    2828--                                                      Note: the following three sets of coordinate systems are based on stack if it exists, and mean if it does not.
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/ObjectThin.txt

    r37000 r37246  
    11
    2 objName           = ipptopsps
    3 objID             = dvo / addstar
    4 gcobjID           = dvo / addstar
    5 ippObjID          = dvo / addstar
    6 surveyID          = ipptopsps
    7 skyCellID         = smf header
    8 htmID             = PSPS
    9 zoneID            = PSPS
    10 randomID          = ipptopsps
    11 batchID           = ipptopsps
    12 dvoRegionID       = dvo / catID
    13 dataRelease       = ipptopsps
    14 objInfoFlag       = dvo / relastro,relphot [define]
    15 qualityFlag       = dvo / relastro,relphot [define]
    16 consistencyFlag   = ipptopsps?
    17 raStack           = dvo / allow recalibration? [ADD to average.d]
    18 decStack          = dvo / allow recalibration?
    19 raStackErr        = dvo / allow recalibration?
    20 decStackErr       = dvo / allow recalibration?
    21 raMean            = dvo / relastro
    22 decMean           = dvo / relastro
    23 raMeanErr         = dvo / relastro
    24 decMeanErr        = dvo / relastro
    25 raMeanStd         = dvo / relastro
    26 decMeanStd        = dvo / relastro
    27 ----------------- =
    28 --                =
    29 --                =
    30 --                =
    31 --                =
    32 --                =
    33 cx                = PSPS
    34 cy                = PSPS
    35 cz                = PSPS
    36 lambda            = PSPS
    37 beta              = PSPS
    38 l                 = PSPS
    39 b                 = PSPS
    40 ----------------- =
    41 nStackObjectRows  = dvo [ADD to average.d]
    42 --                =
    43 nStackDetections  = dvo / relphot [Sum of not-forced stack detections]
    44 nDetections       = dvo / relphot [Sum of ng+nr, etc?]
    45 ng                = dvo / relphot [Sum of GPC1.g.XY?? measure.d]
    46 nr                = dvo / relphot [ditto]
    47 ni                = dvo / relphot
    48 nz                = dvo / relphot
    49 ny                = dvo / relphot
     2objName           - ipptopsps : move to dvopsps?
     3objID             + dvo:average.extID
     4ippObjID          + dvo:(average.objID | average.catID << 32)
     5surveyID          + ipptopsps : internal, from survey name
     6htmID             - PSPS
     7zoneID            - PSPS
     8tessID            + average.tessID
     9projectionID      + average.projectionID
     10skycellID         + average.skycellID
     11randomID          + ipptopsps : RANDOM from sql
     12batchID           + ipptopsps : internal
     13dvoRegionID       + dvo:average.catID
     14dataRelease       + ipptopsps : user input (skychunk.dataRelease)
     15objInfoFlag       + dvo:average.flags
     16qualityFlag       - (dvo:average.flags >> 24) & 0xFF *** correct??
     17consistencyFlag   - *** hard-wired in ipptopsps to 0
     18raStack           + dvo:average.Rstk *** not calculated?
     19decStack          + dvo:average.Dstk *** not calculated?
     20raStackErr        + dvo:average.dRstk *** not calculated?
     21decStackErr       + dvo:average.dDstk *** not calculated?
     22raMean            + dvo:average.R
     23decMean           + dvo:average.D
     24raMeanErr         + dvo:average.dR
     25decMeanErr        + dvo:average.dD
     26posMeanChisq      + dvo:average.ChiSqAve
     27-----------------  
     28--                 
     29--                 
     30--                 
     31--                 
     32--                 
     33cx                - PSPS
     34cy                - PSPS
     35cz                - PSPS
     36lambda            - PSPS
     37beta              - PSPS
     38l                 - PSPS
     39b                 - PSPS
     40-----------------
     41nStackObjectRows  - do in dvopsps
     42--               
     43nStackDetections  - sum of secfilt.NstackDet (sum in sql)
     44nDetections       + ipptopsps:Sum of ng+nr in sql
     45ng                + dvo:secfilt.ncode ** check that this is right
     46nr                + dvo:secfilt.ncode ** check that this is right
     47ni                + dvo:secfilt.ncode ** check that this is right
     48nz                + dvo:secfilt.ncode ** check that this is right
     49ny                + dvo:secfilt.ncode ** check that this is right
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/StackApFlx

    r37000 r37246  
    11
    22objID            dimensionless  BIGINT  8       NA      ODM object identifier
    3 gcObjID          dimensionless  BIGINT  8       NA      ODM galactic coordinates identifier
    43ippObjID         dimensionless  BIGINT  8       NA      ipp object identifier
    5 surveyID         dimensionless  TINYINT 1       0       stack type identifier
    6 skyCellID        dimensionless  REAL    4       -999    single float giving PrimaryCell.SkyCell identifier
    74randomStackObjID dimensionless  BIGINT  8       NA      random stack id
    85stackDetectRowID dimensionless  BIGINT  8       NA      identifies which of up to 5 possible stackdetctions this Row refers to: Primary, up to 3 Secondary, 1 best 
     
    107bestDetection    dimensionless  TINYINT 1       255     identifies if this row is a best detection or not. Also set if only a primary detection exists.   
    118--                                                      the Primary Dectection, 0 to 3 possible secondary dectections, and the "best" per filter. 
    12 dvoRegionID     dimensionless   INT    4       -999    identifier to dvo spatial region
    13 dataRelease     dimensionless   TINYINT 1       NA      Data release when this table was loaded.
    149------------------------------------------------------- replicate to end for each filter g,r,i,z,y
    1510gippDetectID    dimensionless   BIGINT  8       NA      stack identifier
     
    1712gstackMetaID    dimensionless   BIGINT  8       NA      stack identifier
    1813--------------------------------------------------------unconvolved
    19 gflxR3          adu/seconds     REAL    4       -999    Flux inside r = 3
    20 gflxR3Err       adu/seconds     REAL    4       -999    estimated error is flxR3
    21 gflxR3Std       adu/seconds     REAL    4       -999    estimated standard deviation in flxR3
     14gflxR3          Jy              REAL    4       -999    Flux inside r = 3
     15gflxR3Err       Jy              REAL    4       -999    estimated error is flxR3
     16gflxR3Std       Jy              REAL    4       -999    estimated standard deviation in flxR3
    2217gflxR3Fill      dimensionless   REAL    4       -999    estimated filling factor at R3
    23 gflxR4          adu/seconds     REAL    4       -999    Flux inside r = 4
    24 gflxR4Err       adu/seconds     REAL    4       -999    estimated error is flxR4
    25 gflxR4Std       adu/seconds     REAL    4       -999    estimated standard deviation in flxR4
     18gflxR4          Jy              REAL    4       -999    Flux inside r = 4
     19gflxR4Err       Jy              REAL    4       -999    estimated error is flxR4
     20gflxR4Std       Jy              REAL    4       -999    estimated standard deviation in flxR4
    2621gflxR4Fill      dimensionless   REAL    4       -999    estimated filling factor at R4
    27 gflxR5          adu/seconds     REAL    4       -999    Flux inside r = 5
    28 gflxR5Err       adu/seconds     REAL    4       -999    estimated error is flxR5
    29 gflxR5Std       adu/seconds     REAL    4       -999    estimated standard deviation in flxR5
     22gflxR5          Jy              REAL    4       -999    Flux inside r = 5
     23gflxR5Err       Jy              REAL    4       -999    estimated error is flxR5
     24gflxR5Std       Jy              REAL    4       -999    estimated standard deviation in flxR5
    3025gflxR5Fill      dimensionless   REAL    4       -999    estimated filling factor at R5
    3126----------------------------------------------------    convolved across all bands to 6 or 8 pixels
    32 gc1flxR3        adu/seconds     REAL    4       -999    Flux inside r = 3
    33 gc1flxR3Err     adu/seconds     REAL    4       -999    estimated error is c1flxR3
    34 gc1flxR3Std     adu/seconds     REAL    4       -999    estimated standard deviation in c1flxR3
     27gc1flxR3        Jy              REAL    4       -999    Flux inside r = 3
     28gc1flxR3Err     Jy              REAL    4       -999    estimated error is c1flxR3
     29gc1flxR3Std     Jy              REAL    4       -999    estimated standard deviation in c1flxR3
    3530gc1flxR3Fill    dimensionless   REAL    4       -999    estimated filling factor at R3
    36 gc1flxR4        adu/seconds     REAL    4       -999    Flux inside r = 4
    37 gc1flxR4Err     adu/seconds     REAL    4       -999    estimated error is c1flxR4
    38 gc1flxR4Std     adu/seconds     REAL    4       -999    estimated standard deviation in c1flxR4
     31gc1flxR4        Jy              REAL    4       -999    Flux inside r = 4
     32gc1flxR4Err     Jy              REAL    4       -999    estimated error is c1flxR4
     33gc1flxR4Std     Jy              REAL    4       -999    estimated standard deviation in c1flxR4
    3934gc1flxR4Fill    dimensionless   REAL    4       -999    estimated filling factor at R4
    40 gc1flxR5        adu/seconds     REAL    4       -999    Flux inside r = 5
    41 gc1flxR5Err     adu/seconds     REAL    4       -999    estimated error is c1flxR5
    42 gc1flxR5Std     adu/seconds     REAL    4       -999    estimated standard deviation in c1flxR5
     35gc1flxR5        Jy              REAL    4       -999    Flux inside r = 5
     36gc1flxR5Err     Jy              REAL    4       -999    estimated error is c1flxR5
     37gc1flxR5Std     Jy              REAL    4       -999    estimated standard deviation in c1flxR5
    4338gc1flxR5Fill    dimensionless   REAL    4       -999    estimated filling factor at R5
    4439----------------------------------------------------    convolved across all bands to 6 or 8 pixels
    45 gc2flxR3        adu/seconds     REAL    4       -999    Flux inside r = 3
    46 gc2flxR3Err     adu/seconds     REAL    4       -999    estimated error in c2flxR3
    47 gc2flxR3Std     adu/seconds     REAL    4       -999    estimated standard deviation in c2flxR3
     40gc2flxR3        Jy              REAL    4       -999    Flux inside r = 3
     41gc2flxR3Err     Jy              REAL    4       -999    estimated error in c2flxR3
     42gc2flxR3Std     Jy              REAL    4       -999    estimated standard deviation in c2flxR3
    4843gc2flxR3Fill    dimensionless   REAL    4       -999    estimated filling factor at R3
    49 gc2flxR4        adu/seconds     REAL    4       -999    Flux inside r = 4
    50 gc2flxR4Err     adu/seconds     REAL    4       -999    estimated error in c2flxR4
    51 gc2flxR4Std     adu/seconds     REAL    4       -999    estimated standard deviation in c2flxR4
     44gc2flxR4        Jy              REAL    4       -999    Flux inside r = 4
     45gc2flxR4Err     Jy              REAL    4       -999    estimated error in c2flxR4
     46gc2flxR4Std     Jy              REAL    4       -999    estimated standard deviation in c2flxR4
    5247gc2flxR4Fill    dimensionless   REAL    4       -999    estimated filling factor at R4
    53 gc2flxR5        adu/seconds     REAL    4       -999    Flux inside r = 5
    54 gc2flxR5Err     adu/seconds     REAL    4       -999    estimated error in c2flxR5
    55 gc2flxR5Std     adu/seconds     REAL    4       -999    estimated standard deviation in c2flxR5
     48gc2flxR5        Jy              REAL    4       -999    Flux inside r = 5
     49gc2flxR5Err     Jy              REAL    4       -999    estimated error in c2flxR5
     50gc2flxR5Std     Jy              REAL    4       -999    estimated standard deviation in c2flxR5
    5651gc2flxR5Fill    dimensionless   REAL    4       -999    estimated filling factor at R5
    5752
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/StackApFlx.txt

    r37000 r37246  
    11
    2 objID            = dvo/addstar
    3 gcObjID          = dvo/addstar
    4 ippObjID         = dvo/addstar average.objID + (average.catID << 32)
    5 surveyID         = ipptopsps
    6 skyCellID        = smf header
    7 randomStackObjID = ipptopsps
    8 stackDetectRowID = PSPS ?
    9 primaryDetection = dvo
    10 bestDetection    = dvo
    11 --               =
    12 dvoRegionID      = dvo / catID
    13 dataRelease      = ipptopsps
    14 ---------------- =
    15 gippDetectID     = dvo/addstar
    16 gstackDetectID   = dvopsps (see StackObject.txt)
    17 gstackMetaID     = dvopsps (see StackObject.txt)
    18 ---------------- =
    19 gflxR3           = smf
    20 gflxR3Err        = smf
    21 gflxR3Std        = smf
    22 gflxR3Fill       = smf
    23 gflxR4           = smf
    24 gflxR4Err        = smf
    25 gflxR4Std        = smf
    26 gflxR4Fill       = smf
    27 gflxR5           = smf
    28 gflxR5Err        = smf
    29 gflxR5Std        = smf
    30 gflxR5Fill       = smf
    31 ---------------- =
    32 gc1flxR3         = smf
    33 gc1flxR3Err      = smf
    34 gc1flxR3Std      = smf
    35 gc1flxR3Fill     = smf
    36 gc1flxR4         = smf
    37 gc1flxR4Err      = smf
    38 gc1flxR4Std      = smf
    39 gc1flxR4Fill     = smf
    40 gc1flxR5         = smf
    41 gc1flxR5Err      = smf
    42 gc1flxR5Std      = smf
    43 gc1flxR5Fill     = smf
    44 ---------------- =
    45 gc2flxR3         = smf
    46 gc2flxR3Err      = smf
    47 gc2flxR3Std      = smf
    48 gc2flxR3Fill     = smf
    49 gc2flxR4         = smf
    50 gc2flxR4Err      = smf
    51 gc2flxR4Std      = smf
    52 gc2flxR4Fill     = smf
    53 gc2flxR5         = smf
    54 gc2flxR5Err      = smf
    55 gc2flxR5Std      = smf
    56 gc2flxR5Fill     = smf
     2objID            + from StackObjectThin                               
     3ippObjID         + from StackObjectThin                               
     4randomStackObjID + from StackObjectThin                               
     5stackDetectRowID - PSPS                                               
     6primaryDetection - from StackObjectThin NOT YET TESTED               
     7bestDetection    - from StackObjectThin CANNOT BE SET until after PV3
     8--               
     9----------------
     10gippDetectID     + from StackObjectThin
     11gstackDetectID   + from StackObjectThin
     12gstackMetaID     + from StackObjectThin
     13---------------- 
     14gflxR3           + cmf : APER_FLUX_3
     15gflxR3Err        + cmf : APER_FLUX_ERR_3
     16gflxR3Std        - cmf : APER_FLUX_STDEV_3 : ** badly defined in cmf
     17gflxR3Fill       + cmf : APER_FILL_3     
     18gflxR4           + cmf : APER_FLUX_4     
     19gflxR4Err        + cmf : APER_FLUX_ERR_4 
     20gflxR4Std        - cmf : APER_FLUX_STDEV_4 : ** badly defined in cmf
     21gflxR4Fill       + cmf : APER_FILL_4     
     22gflxR5           + cmf : APER_FLUX_5     
     23gflxR5Err        + cmf : APER_FLUX_ERR_5 
     24gflxR5Std        - cmf : APER_FLUX_STDEV_5 : ** badly defined in cmf
     25gflxR5Fill       + cmf : APER_FILL_5     
     26----------------
     27gc1flxR3         + cmf : APER_FLUX_3     
     28gc1flxR3Err      + cmf : APER_FLUX_ERR_3 
     29gc1flxR3Std      - cmf : APER_FLUX_STDEV_3 : ** badly defined in cmf
     30gc1flxR3Fill     + cmf : APER_FILL_3     
     31gc1flxR4         + cmf : APER_FLUX_4     
     32gc1flxR4Err      + cmf : APER_FLUX_ERR_4 
     33gc1flxR4Std      - cmf : APER_FLUX_STDEV_4 : ** badly defined in cmf
     34gc1flxR4Fill     + cmf : APER_FILL_4     
     35gc1flxR5         + cmf : APER_FLUX_5     
     36gc1flxR5Err      + cmf : APER_FLUX_ERR_5 
     37gc1flxR5Std      - cmf : APER_FLUX_STDEV_5 : ** badly defined in cmf
     38gc1flxR5Fill     + cmf : APER_FILL_5     
     39----------------
     40gc2flxR3         + cmf : APER_FLUX_3     
     41gc2flxR3Err      + cmf : APER_FLUX_ERR_3 
     42gc2flxR3Std      - cmf : APER_FLUX_STDEV_3 : ** badly defined in cmf
     43gc2flxR3Fill     + cmf : APER_FILL_3     
     44gc2flxR4         + cmf : APER_FLUX_4     
     45gc2flxR4Err      + cmf : APER_FLUX_ERR_4 
     46gc2flxR4Std      - cmf : APER_FLUX_STDEV_4 : ** badly defined in cmf
     47gc2flxR4Fill     + cmf : APER_FILL_4     
     48gc2flxR5         + cmf : APER_FLUX_5     
     49gc2flxR5Err      + cmf : APER_FLUX_ERR_5 
     50gc2flxR5Std      - cmf : APER_FLUX_STDEV_5 : ** badly defined in cmf
     51gc2flxR5Fill     + cmf : APER_FILL_5     
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/StackModelFitDeV

    r37000 r37246  
    11
    22objID            dimensionless  BIGINT  8       NA      ODM object identifier
    3 gcObjID          dimensionless  BIGINT  8       NA      ODM galactic coordinates identifier
    4 surveyID         dimensionless  TINYINT 1       NA      survey flag identifier
    5 skyCellID        dimensionless  REAL    4       -999    single float giving PrimaryCell.SkyCell identifier
     3ippObjID         dimensionless  BIGINT  8       NA      object ID generated by IPP
    64randomStackObjID dimensionless  BIGINT  8       NA      random stack id
    75stackDetectRowID dimensionless  BIGINT  8       NA      identifies which of up to 5 possible stackdetctions this Row refers to: Primary, up to 3 Secondary, 1 best 
     
    97bestDetection    dimensionless  TINYINT 1       255     identifies if this row is a best detection or not. Also set if only a primary detection exists.   
    108--                                                      the Primary Dectection, 0 to 3 possible secondary dectections, and the "best" per filter. 
    11 dvoRegionID      dimensionless  INT     4       -999    identifier to dvo spatial region
    12 dataRelease      dimensionless  TINYINT 1       NA      Data release when this table was loaded
    139-------------------------------------------------------- replicate below for all filters (grizy)
    14 ippObjID         dimensionless  BIGINT  8       NA      ipp object identifier
    1510gippDetectID    dimensionless   BIGINT  8       NA      ipp detect identifier
    1611gstackDetectID  dimensionless   BIGINT  8       NA      ODM detection identifier
    1712gstackMetaID    dimensionless   BIGINT  8       NA      stack identifier
    1813----------------------------------------------------------------------------------------
    19 gdeVRadius      arcsec          REAL    4       -999    deVaucouleurs radius
    20 gdeVRadiusErr   arcsec          REAL    4       -999    estimated error in deVaucouleurs radius
    21 gdeVFlux        adu/seconds     REAL    4       -999    deVaucouleurs flux
    22 gdeVFluxErr     adu/seconds     REAL    4       -999    estimated error in deVaucouleurs flux
    23 gdeVAb          dimensionless   REAL    4       -999    deVaucoulerus axis ratio
    24 gdeVAbErr       dimensionless   REAL    4       -999    estimated error in deVaucoulerus axis ratio
    25 gdeVPhi         degrees         REAL    4       -999    estmated phi of deVaucouleurs axis. Degrees East of North.
    26 gdeVPhiErr      degrees         REAL    4       -999    estmated error of phi of deVaucouleurs axis
    27 graDeVOff       arcsec          REAL    4       -999    Offset in RA of deVaucouleurs fit from PSF RA
    28 gdecDeVOff      arcsec          REAL    4       -999    Offset in DEC of deVaucouleurs fit from PSF DEC
     14gDeVRadius      arcsec          REAL    4       -999    DeVaucouleurs radius
     15gDeVRadiusErr   arcsec          REAL    4       -999    estimated error in DeVaucouleurs radius
     16gDeVMag         AB_mag          REAL    4       -999    DeVaucouleurs flux
     17gDeVMagErr      AB_mag          REAL    4       -999    estimated error in DeVaucouleurs flux
     18gDeVAb          dimensionless   REAL    4       -999    DeVaucoulerus axis ratio
     19gDeVAbErr       dimensionless   REAL    4       -999    estimated error in DeVaucoulerus axis ratio
     20gDeVPhi         degrees         REAL    4       -999    estmated phi of DeVaucouleurs axis. Degrees East of North.
     21gDeVPhiErr      degrees         REAL    4       -999    estmated error of phi of DeVaucouleurs axis
     22graDeVOff       arcsec          REAL    4       -999    Offset in RA of DeVaucouleurs fit from PSF RA
     23gdecDeVOff      arcsec          REAL    4       -999    Offset in DEC of DeVaucouleurs fit from PSF DEC
    2924graDeVOffErr    arcsec          REAL    4       -999    estimated error in ra offset
    3025gdecDeVOffErr   arcsec          REAL    4       -999    estimated error in dec offset
    31 gdeVCf          dimensionless   REAL    4       -999    deVaucouleurs fit coverage factor
    32 gdeVLikelihood  dimensionless   REAL    4       -999    deVaucouleurs fit likelihood factor
     26gDeVCf          dimensionless   REAL    4       -999    DeVaucouleurs fit coverage factor
     27gDeVLikelihood  dimensionless   REAL    4       -999    DeVaucouleurs fit likelihood factor
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/StackModelFitExp

    r37000 r37246  
    11
    22objID            dimensionless  BIGINT  8       NA      ODM object identifier
    3 gcObjID          dimensionless  BIGINT  8       NA      ODM galactic coordinates identifier
    4 surveyID         dimensionless  TINYINT 1       NA      survey flag identifier
    5 skyCellID        dimensionless  REAL    4       -999    single float giving PrimaryCell.SkyCell identifier
     3ippObjID         dimensionless  BIGINT  8       NA      object ID generated by IPP
    64randomStackObjID dimensionless  BIGINT  8       NA      random stack id
    75stackDetectRowID dimensionless  BIGINT  8       NA      identifies which of up to 5 possible stackdetctions this Row refers to: Primary, up to 3 Secondary, 1 best 
     
    97bestDetection    dimensionless  TINYINT 1       255     identifies if this row is a best detection or not. Also set if only a primary detection exists.   
    108--                                                      the Primary Dectection, 0 to 3 possible secondary dectections, and the "best" per filter. 
    11 dvoRegionID      dimensionless  INT     4       -999    identifier to dvo spatial region
    12 dataRelease      dimensionless  TINYINT 1       NA      Data release when this table was loaded
    13 -------------------------------------------------------- replicate below for all filters (grizy)
    14 gippObjID         dimensionless  BIGINT  8       NA      ipp object identifier
     9------------------------------------------------------- replicate below for all filters (grizy)
    1510gippDetectID    dimensionless   BIGINT  8       NA      ipp detect identifier
    1611gstackDetectID  dimensionless   BIGINT  8       NA      ODM detection identifier
    1712gstackMetaID    dimensionless   BIGINT  8       NA      stack identifier
    1813----------------------------------------------------------------------------------------
    19 gexpRadius      arcsec          REAL    4       -999    Exponential fit radius
    20 gexpRadiusErr   arcsec          REAL    4       -999    estimated error in Exponential fit radius
    21 gexpFlux        adu/seconds     REAL    4       -999    Exponential fit flux
    22 gexpFluxErr     adu/seconds     REAL    4       -999    estimated error in expFlux
    23 gexpAb          dimensionless   REAL    4       -999    Exponential fit axis ratio
    24 gexpAbErr       dimensionless   REAL    4       -999    estimated error in Exponential fit axis ratio
    25 gexpPhi         degrees         REAL    4       -999    estmated phi of Exponential axis
    26 gexpPhiErr      degrees         REAL    4       -999    estmated error of phi of Exponential axis
    27 graExpOff       dimensionless   REAL    4       -999    Offset in RA of Exponential fit from PSF RA
    28 gdecExpOff      dimensionless   REAL    4       -999    Offset in DEC of Exponential fit from PSF DEC
    29 graExpOffErr    dimensionless   REAL    4       -999    estimated error in raExpOff
    30 gdecExpOffErr   dimensionless   REAL    4       -999    estimated error in decExpOff
    31 gexpCf          dimensionless   REAL    4       -999    Exponential fit coverage factor
    32 gexpLikelihood  dimensionless   REAL    4       -999    Exponential fit likelihood factor
    33 
     14gExpRadius      arcsec          REAL    4       -999    Exponential fit radius
     15gExpRadiusErr   arcsec          REAL    4       -999    estimated error in Exponential fit radius
     16gExpMag         AB_mag          REAL    4       -999    Exponential fit flux
     17gExpMagErr      AB_mag          REAL    4       -999    estimated error in expFlux
     18gExpAb          dimensionless   REAL    4       -999    Exponential fit axis ratio (minor / major)
     19gExpAbErr       dimensionless   REAL    4       -999    estimated error in Exponential fit axis ratio
     20gExpPhi         degrees         REAL    4       -999    estmated phi of Exponential axis
     21gExpPhiErr      degrees         REAL    4       -999    estmated error of phi of Exponential axis
     22gExpRa          degrees         DOUBLE  8       -999    RA of Exponential fit
     23gExpDec         degrees         DOUBLE  8       -999    DEC of Exponential fit
     24gExpRaErr       arcsec          REAL    4       -999    estimated error in RA
     25gExpDecErr      arcsec          REAL    4       -999    estimated error in DEC
     26gExpCf          dimensionless   REAL    4       -999    Exponential fit coverage factor
     27gExpChisq       dimensionless   REAL    4       -999    Exponential fit chi square
     28-- gExpLikelihood  dimensionless   REAL    4       -999    Exponential fit likelihood factor
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/StackModelFitSer

    r37000 r37246  
    11
    22objID            dimensionless  BIGINT  8       NA      ODM object identifier
    3 gcObjID          dimensionless  BIGINT  8       NA      ODM galactic coordinates identifier
    4 surveyID         dimensionless  TINYINT 1       NA      survey flag identifier
    5 skyCellID        dimensionless  REAL    4       -999    single float giving PrimaryCell.SkyCell identifier
     3ippObjID         dimensionless  BIGINT  8       NA      object ID generated by IPP
    64randomStackObjID dimensionless  BIGINT  8       NA      random stack id
    75stackDetectRowID dimensionless  BIGINT  8       NA      identifies which of up to 5 possible stackdetctions this Row refers to: Primary, up to 3 Secondary, 1 best 
     
    97bestDetection    dimensionless  TINYINT 1       255     identifies if this row is a best detection or not. Also set if only a primary detection exists.   
    108--                                                      the Primary Dectection, 0 to 3 possible secondary dectections, and the "best" per filter. 
    11 dvoRegionID      dimensionless  INT     4       -999    identifier to dvo spatial region
    12 dataRelease      dimensionless  TINYINT 1       NA      Data release when this table was loaded
    139-------------------------------------------------------- replicate below for all filters (grizy)
    14 gippObjID         dimensionless  BIGINT  8       NA      ipp object identifier
    1510gippDetectID    dimensionless   BIGINT  8       NA      ipp detect identifier
    1611gstackDetectID  dimensionless   BIGINT  8       NA      ODM detection identifier
    1712gstackMetaID    dimensionless   BIGINT  8       NA      stack identifier
    1813----------------------------------------------------------------------------------------
    19 gserRadius      arcsec          REAL    4       -999    Sersic radius
    20 gserRadiusErr   arcsed          REAL    4       -999    estimated error in Sersic radius
    21 gserFlux        adu/seconds     REAL    4       -999    Sersic Flux
    22 gserFluxErr     adu/seconds     REAL    4       -999    estimated error in serFlux
    23 gserAb          dimensionless   REAL    4       -999    Sersic axis ratio
    24 gserAbErr       dimensionlessn  REAL    4       -999    estimated error in Sersic axis ratio
    25 gserNu          dimensionlessn  REAL    4       -999    Sersic index
    26 gserNuErr       diemensionless  REAL    4       -999    estimated error in Sersic index
    27 gserPhi         degrees         REAL    4       -999    estmated phi of Sersic axis
    28 gserPhiErr      degrees         REAL    4       -999    estmated error of phi of Sersic axis
     14gSerRadius      arcsec          REAL    4       -999    Sersic radius
     15gSerRadiusErr   arcsed          REAL    4       -999    estimated error in Sersic radius
     16gSerMag         AB_mag          REAL    4       -999    Sersic Flux
     17gSerMagErr      AB_mag          REAL    4       -999    estimated error in serFlux
     18gSerAb          dimensionless   REAL    4       -999    Sersic axis ratio
     19gSerAbErr       dimensionlessn  REAL    4       -999    estimated error in Sersic axis ratio
     20gSerNu          dimensionlessn  REAL    4       -999    Sersic index
     21gSerNuErr       diemensionless  REAL    4       -999    estimated error in Sersic index
     22gSerPhi         degrees         REAL    4       -999    estmated phi of Sersic axis
     23gSerPhiErr      degrees         REAL    4       -999    estmated error of phi of Sersic axis
    2924graSerOff       dimensionless   REAL    4       -999    Offset in RA of Sersic fit from PSF RA
    3025gdecSerOff      dimensionless   REAL    4       -999    Offset in DEC of Sersic fit from PSF DEC
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/StackObjectThin

    r37000 r37246  
    11
    2 objID             dimensionless   BIGINT  8       NA      ODM object identifier
    3 gcObjID           dimensionless   BIGINT  8       NA      ODM galactic coordinates identifier
    4 surveyID          dimensionless   TINYINT 1       NA      survey flag identifier
    5 skyCellID         dimensionless   REAL    4       -999    single float giving PrimaryCell.SkyCell identifier
    6 randomStackObjID  dimensionless   BIGINT  8       NA      random stack id
    7 stackDetectRowID  dimensionless   BIGINT  8       NA      identifies which of up to 5 possible stackdetctions this Row refers to: Primary, up to 3 Secondary, 1 best 
    8 primaryDetection  dimensionless   TINYINT 1       255     identifies if this row is a primary stack detection. True about 80% of time.
    9 bestDetection     dimensionless   TINYINT 1       255     identifies if this row is a best detection or not. Also set if only a primary detection exists.   
    10                                                           the Primary Dectection, 0 to 3 possible secondary dectections, and the "best" per filter. 
    11 dvoRegionID       dimensionless   INT     4       -999    identifier to dvo spatial region
    12 dataRelease       dimensionless   TINYINT 1       NA      Data release when this detection was originally taken.
     2objID             dimensionless   BIGINT   8       NA      ODM object identifier
     3ippObjID          dimensionless   BIGINT   8       NA      object ID generated by IPP  [this is a per-object, not per-filter value]
     4surveyID          dimensionless   TINYINT  1       NA      survey flag identifier
     5tessID            dimensionless   TINYINT  1       -1      ID mapping to tessellation names (eg, RINGS.V3, MD01.V3, etc)
     6projectionID      dimensionless   SMALLINT 2       -999    valid values 0 - < 10000
     7skyCellID         dimensionless   TINYINT  1       255     valid values 0 - 143 (12x12 grid)
     8randomStackObjID  dimensionless   BIGINT   8       NA      random stack id
     9stackDetectRowID  dimensionless   BIGINT   8       NA      identifies which of up to 5 possible stackdetctions this Row refers to: Primary, up to 3 Secondary, 1 best 
     10primaryDetection  dimensionless   TINYINT  1       255     identifies if this row is a primary stack detection. True about 80% of time.
     11bestDetection     dimensionless   TINYINT  1       255     identifies if this row is a best detection or not. Also set if only a primary detection exists.   
     12--                                                         the Primary Dectection, 0 to 3 possible secondary dectections, and the "best" per filter. 
     13dvoRegionID       dimensionless   INT      4       -999    identifier to dvo spatial region
     14dataRelease       dimensionless   TINYINT  1       NA      Data release when this detection was originally taken.
    1315------------------------------------------------------------------------------------------
    1416-- attributes for all stack detections in all filters (these are currently forced anyway)
    1517-- Replicate the section below for each filter, changing the prefex ("g" in this example)
    1618------------------------------------------------------------------------------------------
    17 gippObjID      dimensionless   BIGINT  8       NA      object ID generated by IPP
    18 gippDetectID      dimensionless   BIGINT  8       NA      detection ID generated by IPP
    19 gstackDetectID    dimensionless   BIGINT  8       NA      ODM detection identifier
    20 gstackMetaID      dimensionless   BIGINT  8       NA      stack identifier
     19gippDetectID      dimensionless   BIGINT   8       NA      detection ID generated by IPP
     20gstackDetectID    dimensionless   BIGINT   8       NA      ODM detection identifier
     21gstackMetaID      dimensionless   BIGINT   8       NA      stack identifier
    2122------------------------------------------------------------------------------------------
    22 gra               degrees         FLOAT   8       NA      Right Ascension   
    23 gdec              degrees         FLOAT   8       NA      Declination       
    24 graErr            arcsec          REAL    4       NA      Right Ascension error
    25 gdecErr           arcsec          REAL    4       NA      Declination error  (same as RA error - need?)
    26 gzp               magnitude       REAL    4       0       zeropoint , no error given
    27 gPSFMag           AB_magnitude    REAL    4       -999    g psf AB magnitude from stack
    28 gPSFMagErr        AB_magnitude    REAL    4       -999    estimated error of g psf AB magnitude from stack
    29 gApMag            AB_magnitude    REAL    4       -999    g Aperture AB magnitude from stack
    30 gApMagErr         AB_magnitude    REAL    4       -999    estimated error of g Ap Mag AB magnitude from stack
    31 gKronMag          AB_magnitude    REAL    4       -999    g kron AB magnitude from stack
    32 gKronMagErr       AB_magnitude    REAL    4       -999    estimated error of g kron AB magnitude from stack
    33 gsky              adu/secs/arcsec REAL    4       -999    PSF sky level at source (adu)
    34 gskyErr           adu/secs/arcsec REAL    4       -999    estimated error in sky
    35 ginfoFlag         dimensionless   INT     4       -999    indicator of strange propeties
    36 ginfoFlag2        dimensionless   INT     4       -999    indicator of strange propeties
    37 gnFrames          dimensionless   INT     4       -999    Number of frames contributing to source
     23gra               degrees         FLOAT    8       NA      Right Ascension   
     24gdec              degrees         FLOAT    8       NA      Declination       
     25graErr            arcsec          REAL     4       NA      Right Ascension error
     26gdecErr           arcsec          REAL     4       NA      Declination error  (same as RA error - need?)
     27gPSFMag           AB_magnitude    REAL     4       -999    g psf AB magnitude from stack
     28gPSFMagErr        AB_magnitude    REAL     4       -999    estimated error of g psf AB magnitude from stack
     29gApMag            AB_magnitude    REAL     4       -999    g Aperture AB magnitude from stack
     30gApMagErr         AB_magnitude    REAL     4       -999    estimated error of g Ap Mag AB magnitude from stack
     31gKronMag          AB_magnitude    REAL     4       -999    g kron AB magnitude from stack
     32gKronMagErr       AB_magnitude    REAL     4       -999    estimated error of g kron AB magnitude from stack
     33gsky              adu/secs/arcsec REAL     4       -999    PSF sky level at source (adu)
     34gskyErr           adu/secs/arcsec REAL     4       -999    estimated error in sky
     35ginfoFlag         dimensionless   INT      4          0    informational bits
     36ginfoFlag2        dimensionless   INT      4          0    informational bits
     37gnFrames          dimensionless   INT      4       -999    Number of frames contributing to source
    3838
    3939-- [220 byte/filter/obj + 44 byte/obj]
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/MetaData_Tables/FrameMeta

    r37000 r37246  
    1 frameID dimensionless   INT     4       NA      unique exposure/frame identifier.
    2 frameName       dimensionless   VARCHAR(32)     32      NA      frame name provided by camera software
    3 surveyID        dimensionless   TINYINT 1       NA      survey flag identifier
    4 filterID        dimensionless   TINYINT 1       NA      filter identifier
    5 cameraID        dimensionless   SMALLINT        2       NA      camera identifier
    6 cameraConfigID  dimensionless   SMALLINT        2       NA      camera configuration identifier
    7 telescopeID     dimensionless   SMALLINT        2       NA      telescope identifier
    8 analysisVer     alphanumeric    VARCHAR(MAX)    8000            IPP software analysis release
    9 p1Recip alphanumeric    VARCHAR(MAX)    8000            IPP phase 1 MD5 Checksum
    10 p2Recip alphanumeric    VARCHAR(MAX)    8000            IPP phase 2 MD5 Checksum
    11 p3Recip alphanumeric    VARCHAR(MAX)    8000            IPP phase 3 MD5 Checksum
    12 nOTA    alphanumeric    SMALLINT        2       -999    number of valid OTA/CCD images in this exposure
    13 photoScat       magnitude       REAL    4       -999    global photometric scatter
    14 numPhotoRef     dimensionless   INT     4       -999    number of photometric reference sources
    15 expStart        days    FLOAT   8       -999    exposure start time in MJD
    16 expTime seconds REAL    4       -999    exposure time
    17 airmass dimensionless   REAL    4       -999    airmass at mid-exposure
    18 raBore  degrees FLOAT   8       -999    RA of telescope boresight
    19 decBore degrees FLOAT   8       -999    DEC of telescope boresight
    20 ctype1  alphanumeric    VARCHAR(MAX)    8000            name of astrometric projection in RA
    21 ctype2          VARCHAR(MAX)    8000            name of astrometric projection in DEC
    22 crval1  degrees FLOAT   8       -999    RA corresponding to reference pixel
    23 crval2  degrees FLOAT   8       -999    DEC corresponding to reference pixel
    24 crpix1  pc001001        FLOAT   8       -999    reference pixel value for RA
    25 crpix2  dimensionless   FLOAT   8       -999    reference pixel value for DEC
    26 cdelt1  degrees/pixel   FLOAT   8       -999    scale factor for RA
    27 cdelt2  degrees/pixel   FLOAT   8       -999    scale factor for DEC
    28 pc001001        dimensionless   FLOAT   8       -999    elements of rotation/Dcale matrix
    29 pc001002        dimensionless   FLOAT   8       -999    elements of rotation/Dcale matrix
    30 pc002001        dimensionless   FLOAT   8       -999    elements of rotation/Dcale matrix
    31 pc002002        dimensionless   FLOAT   8       -999    elements of rotation/Dcale matrix
    32 polyOrder       dimensionless   TINYINT 1       255     polynomial order of astrometry fit
    33 pca1x3y0        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    34 pca1x2y1        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    35 pca1x1y2        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    36 pca1x0y3        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    37 pca1x2y0        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    38 pca1x1y1        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    39 pca1x0y2        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    40 pca2x3y0        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    41 pca2x2y1        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    42 pca2x1y2        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    43 pca2x0y3        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    44 pca2x2y0        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    45 pca2x1y1        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    46 pca2x0y2        dimensionless   FLOAT   8       -999    polynomial coefficients for the astrometric fit
    47 calibModNum     dimensionless   SMALLINT        2       NA      calibration modification number
    48 batchID         dimensionless   BIGINT  8       NA      batch ID
    49 dataRelease     dimensionless   TINYINT 1       NA      Data release Version of this table
     1frameID         dimensionless   INT             4       NA      unique exposure/frame identifier.
     2frameName       dimensionless   VARCHAR(32)     32      NA      frame name provided by camera software
     3surveyID        dimensionless   TINYINT         1       NA      survey flag identifier
     4filterID        dimensionless   TINYINT         1       NA      filter identifier
     5cameraID        dimensionless   SMALLINT        2       NA      camera identifier
     6cameraConfigID  dimensionless   SMALLINT        2       NA      camera configuration identifier
     7telescopeID     dimensionless   SMALLINT        2       NA      telescope identifier
     8analysisVer     alphanumeric    VARCHAR(MAX)    8000    NA      IPP software analysis release
     9p1Recip         alphanumeric    VARCHAR(MAX)    8000    NA      IPP phase 1 MD5 Checksum
     10p2Recip         alphanumeric    VARCHAR(MAX)    8000    NA      IPP phase 2 MD5 Checksum
     11p3Recip         alphanumeric    VARCHAR(MAX)    8000    NA      IPP phase 3 MD5 Checksum
     12nOTA            alphanumeric    SMALLINT        2       -999    number of valid OTA/CCD images in this exposure
     13photoScat       magnitude       REAL            4       -999    global photometric scatter
     14numPhotoRef     dimensionless   INT             4       -999    number of photometric reference sources
     15expStart        days            FLOAT           8       -999    exposure start time in MJD
     16expTime         seconds         REAL            4       -999    exposure time
     17airmass         dimensionless   REAL            4       -999    airmass at mid-exposure
     18raBore          degrees         FLOAT           8       -999    RA of telescope boresight
     19decBore         degrees         FLOAT           8       -999    DEC of telescope boresight
     20ctype1          alphanumeric    VARCHAR(MAX)    8000    NA      name of astrometric projection in RA
     21ctype2          alphanumeric    VARCHAR(MAX)    8000    NA      name of astrometric projection in DEC
     22crval1          degrees         FLOAT           8       -999    RA corresponding to reference pixel
     23crval2          degrees         FLOAT           8       -999    DEC corresponding to reference pixel
     24crpix1          dimensionless   FLOAT           8       -999    reference pixel value for RA
     25crpix2          dimensionless   FLOAT           8       -999    reference pixel value for DEC
     26cdelt1          degrees/pixel   FLOAT           8       -999    scale factor for RA
     27cdelt2          degrees/pixel   FLOAT           8       -999    scale factor for DEC
     28pc001001        dimensionless   FLOAT           8       -999    elements of rotation/Dcale matrix
     29pc001002        dimensionless   FLOAT           8       -999    elements of rotation/Dcale matrix
     30pc002001        dimensionless   FLOAT           8       -999    elements of rotation/Dcale matrix
     31pc002002        dimensionless   FLOAT           8       -999    elements of rotation/Dcale matrix
     32polyOrder       dimensionless   TINYINT         1       255     polynomial order of astrometry fit
     33pca1x3y0        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     34pca1x2y1        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     35pca1x1y2        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     36pca1x0y3        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     37pca1x2y0        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     38pca1x1y1        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     39pca1x0y2        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     40pca2x3y0        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     41pca2x2y1        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     42pca2x1y2        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     43pca2x0y3        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     44pca2x2y0        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     45pca2x1y1        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     46pca2x0y2        dimensionless   FLOAT           8       -999    polynomial coefficients for the astrometric fit
     47calibModNum     dimensionless   SMALLINT        2       NA      calibration modification number
     48batchID         dimensionless   BIGINT          8       NA      batch ID
     49dataRelease     dimensionless   TINYINT         1       NA      Data release Version of this table
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/MetaData_Tables/ImageMeta

    r37000 r37246  
    2222psfWidMinor     arcsec          REAL    4       -999    model PSF parameters at chip center
    2323psfTheta        degrees         REAL    4       -999    model PSF parameters at chip center
    24 momentXX        pixels          REAL    4       -999    moment XX
    25 momentXY        pixels          REAL    4       -999    moment XY
    26 momentYY        pixels          REAL    4       -999    moment YY
    27 momentM3C       pixels squared  REAL    4       -999    moment M3C
    28 momentM3S       pixels squared  REAL    4       -999    moment M3S
    29 momentM4C       pixels squared  REAL    4       -999    moment M4C
    30 momentM4S       pixels squared  REAL    4       -999    moment M4S
    31 momentR1        pixels          REAL    4       -999    moment R1
    32 momentRH        sqrt pixels     REAL    4       -999    moment RH
    33 apResid         magnitide       REAL    4       -999    corrected aperture residual
    34 dapResid        magnitide       REAL    4       -999    scatter of aperture corrections
     24momentMajor     pixels          REAL    4       -999    momentMajor
     25momentMinor     pixels          REAL    4       -999    momentMinor
     26momentM2C       pixels squared  REAL    4       -999    momentM2C 
     27momentM2S       pixels squared  REAL    4       -999    momentM2S 
     28momentM3        pixels squared  REAL    4       -999    momentM3   
     29momentM4        pixels squared  REAL    4       -999    momentM4   
     30apResid         magnitude       REAL    4       -999    corrected aperture residual
     31dapResid        magnitude       REAL    4       -999    scatter of aperture corrections
    3532detectorID      alphanumeric    VARCHAR(32)     32              identifier for actual CCD chip
    3633qaFlags         dimensionless   BIGINT  8       -999    Q/A flags for this OTA
  • trunk/ippToPsps/pspsschema/SchemaNew18.0/PSPS_TABLES/MetaData_Tables/StackMeta

    r37000 r37246  
    1 stackMetaID dimensionless   BIGINT 8 NA stack identifier
    2 batchID     dimensionless   BIGINT 8 NA batch identifier
    3 surveyID    dimensionless   TINYINT 1 NA survey flag identifier
    4 filterID    dimensionless   TINYINT 1 NA fnilutemr eidriecnatl ifidier
    5 stackTypeID dimensionless   TINYINT 1 0 stack type identifier
    6 skyCellID   dimensionless   REAL 4 NA skycell region identifier
    7 photoCalID  dimensionless   INT 4 NA photometry code
    8 magSat      dimensionless   REAL 4 -999 saturation magnitude level
    9 analVer     dimensionless   SMALLINT 2 -999 analysis version index
    10 expTime     seconds         REAL 4 -999 exposure time
    11 nP2Images   dimensionless   SMALLINT 2 -999 number of P2 images contributing to this cell
    12 completMag  magnitudes      REAL 4 -999 95% completion level in mag
    13 astroScat   dimensionless   REAL 4 -999 astrometric scatter for chip
    14 photoScat   dimensionless   REAL 4 -999 photometric scatter for chip
    15 nAstroRef   dimensionless   INT 4 -999 number of astrometric reference sources
    16 nPhoRef     dimensionless   INT 4 -999 number of photometric reference sources
    17 psfModelID  dimensionless   VARCHAR(MAX) 8000 PSF model identifier
    18 psfFwhm_mean arcsec         FLOAT 8 -999 mean PSF FWHM in the stack
    19 psfFwhm_max  arcsec         FLOAT 8 -999 maximum PSF FWHM in the stack
    20 photoZero    magnitudes     REAL 4 -999 local derived photometric zero point
    21 photoColor   magnitudes     REAL 4 -999 local derived photometric color term
    22 ctype1       alphanumeric   VARCHAR(MAX) 8000 name of astrometric projection in RA
    23 ctype2       alphanumeric   VARCHAR(MAX) 8000 name of astrometric projection in DEC
    24 crval1       degrees        FLOAT 8 -999 RA corresponding to reference pixel
    25 crval2       degrees        FLOAT 8 -999 DEC corresponding to reference pixel
    26 crpix1       dimensionless  FLOAT 8 -999 reference pixel value for RA
    27 crpix2       dimensionless  FLOAT 8 -999 reference pixel value for DEC
    28 cdelt1       deg/pixel      FLOAT 8 -999 scale factor for RA
    29 cdelt2       deg/pixel      FLOAT 8 -999 scale factor for DEC
    30 pc001001     dimensionless  FLOAT 8 -999 elements of rotation/Dcale matrix
    31 pc001002     dimensionless  FLOAT 8 -999 elements of rotation/Dcale matrix
    32 pc002001     dimensionless  FLOAT 8 -999 elements of rotation/Dcale matrix
    33 pc002002     dimensionless  FLOAT 8 -999 elements of rotation/Dcale matrix
    34 calibModNum  dimensionless  SMALLINT 2 NA calibration modification number
    35 dataRelease  dimensionless  TINYINT 1 NA Data release
     1stackMetaID  dimensionless   BIGINT   8 NA stack identifier
     2batchID      dimensionless   BIGINT   8 NA batch identifier
     3surveyID     dimensionless   TINYINT  1 NA survey flag identifier
     4filterID     dimensionless   TINYINT  1 NA filter number identifier
     5stackTypeID  dimensionless   TINYINT  1 0 stack type identifier
     6tessID       dimensionless   TINYINT  1       -1      ID mapping to tessellation names (eg, RINGS.V3, MD01.V3, etc)
     7projectionID dimensionless   SMALLINT 2       -999    valid values 0 - < 10000
     8skyCellID    dimensionless   TINYINT  1       255     valid values 0 - 143 (12x12 grid)
     9photoCalID   dimensionless   INT      4 NA photometry code
     10magSat       dimensionless   REAL     4 -999 saturation magnitude level
     11analysisVer  dimensionless   INT      4 -999 analysis version index x
     12expTime      seconds         REAL     4 -999 exposure time
     13nP2Images    dimensionless   SMALLINT 2 -999 number of P2 images contributing to this cell
     14completMag   magnitudes      REAL     4 -999 95% completion level in mag
     15astroScat    dimensionless   REAL     4 -999 astrometric scatter for chip
     16photoScat    dimensionless   REAL     4 -999 photometric scatter for chip
     17nAstroRef    dimensionless   INT      4 -999 number of astrometric reference sources
     18nPhotomRef   dimensionless   INT      4 -999 number of photometric reference sources
     19psfModelID   dimensionless   VARCHAR(MAX) 8000 PSF model identifier
     20psfFwhm_mean arcsec          FLOAT 8 -999 mean PSF FWHM in the stack
     21psfFwhm_max  arcsec          FLOAT 8 -999 maximum PSF FWHM in the stack
     22photoZero    magnitudes      REAL 4 -999 local derived photometric zero point
     23photoColor   magnitudes      REAL 4 -999 local derived photometric color term
     24ctype1       alphanumeric    VARCHAR(MAX) 8000 name of astrometric projection in RA
     25ctype2       alphanumeric    VARCHAR(MAX) 8000 name of astrometric projection in DEC
     26crval1       degrees         FLOAT 8 -999 RA corresponding to reference pixel
     27crval2       degrees         FLOAT 8 -999 DEC corresponding to reference pixel
     28crpix1       dimensionless   FLOAT 8 -999 reference pixel value for RA
     29crpix2       dimensionless   FLOAT 8 -999 reference pixel value for DEC
     30cdelt1       deg/pixel       FLOAT 8 -999 scale factor for RA
     31cdelt2       deg/pixel       FLOAT 8 -999 scale factor for DEC
     32pc001001     dimensionless   FLOAT 8 -999 elements of rotation/Dcale matrix
     33pc001002     dimensionless   FLOAT 8 -999 elements of rotation/Dcale matrix
     34pc002001     dimensionless   FLOAT 8 -999 elements of rotation/Dcale matrix
     35pc002002     dimensionless   FLOAT 8 -999 elements of rotation/Dcale matrix
     36calibModNum  dimensionless   SMALLINT 2 NA calibration modification number
     37dataRelease  dimensionless   TINYINT 1 NA Data release
  • trunk/ippToPsps/test/fulltest.sh

    r35456 r37246  
    11#!/bin/csh -f
    22
    3 chmod +x *.dvo *.sh
     3chmod +x mkgpc1data.dvo mkgpc1.sh
    44
    55# a bit crude : get the datadir path by interpollation of the PATH element for psconfig
     
    1414# before running this test, you must have a mysql user:
    1515# mkgpc1.sh user localhost eam eam
     16
    1617set mkgpc1       = 1
    1718set initdb       = 1
     
    157158  mysql -h localhost -u dvo -pdvo -e "create database ipptopsps_test"
    158159  mysql -h localhost -u dvo -pdvo ipptopsps_test < $IPPTOPSPS_DATA/ippToPspsDbSchema.sql
    159 
    160160endif
    161161
     
    168168  mysql -h localhost -u dvo -pdvo -e "drop database ipptopsps_test_scratch"
    169169  mysql -h localhost -u dvo -pdvo -e "create database ipptopsps_test_scratch"
    170   ippjython setupScratchDb.py -test
    171 endif
    172 
    173 #  `name`
    174 #  `datastore_product`
    175 #  `datastore_type`
    176 #  `datastore_publish`
    177 #  `dvo_label`
    178 #  `dvo_location`
    179 #  `min_ra`
    180 #  `max_ra`
    181 #  `min_dec`
    182 #  `max_dec`
    183 #  `box_size`
    184 #  `base_path`
    185 #  `data_release`
    186 #  `delete_local`
    187 #  `delete_datastore`
    188 #  `delete_dxlayer`
    189 #  `epoch`
    190 #  `survey`
    191 #  `psps_survey`
    192 #  `queue_P2`
    193 #  `queue_ST`
    194 #  `queue_OB`
    195 #  `active`
    196 #  `parallel`
     170  ippjython setupScratchDb.py -test < /dev/null
     171  if ($status) exit
     172endif
    197173
    198174# this is poor : we need to queue something in order to generate an init batch
     
    203179  echo " ---- make skychunk for IN batches ----"
    204180
    205   ippjython queue.py -test edit <<EOF
    206 initbatch
    207 test_ds
    208 IPP_PSPS
    209 0
    210 none
    211 none
    212 0
    213 0
    214 0
    215 0
    216 2
    217 none
    218 0
    219 0
    220 1
    221 1
    222 2012-12-10 00:00:00.0
    223 3PI
    224 3PI
    225 0
    226 0
    227 0
    228 1
    229 0
    230 y
    231 y
    232 EOF
     181  echo "initbatch              " >  initbatch.dat # skychunk name
     182  echo "test_ds                " >> initbatch.dat # datastore_product
     183  echo "IPP_PSPS               " >> initbatch.dat # datastore_type
     184  echo "0                      " >> initbatch.dat # datastore_publish
     185  echo "none                   " >> initbatch.dat # dvo_label
     186  echo "none                   " >> initbatch.dat # dvo_location
     187  echo "0                      " >> initbatch.dat # min_ra
     188  echo "0                      " >> initbatch.dat # max_ra
     189  echo "0                      " >> initbatch.dat # min_dec
     190  echo "0                      " >> initbatch.dat # max_dec
     191  echo "2                      " >> initbatch.dat # box_size
     192  echo "none                   " >> initbatch.dat # base_path
     193  echo "0                      " >> initbatch.dat # data_release
     194  echo "0                      " >> initbatch.dat # delete_local
     195  echo "1                      " >> initbatch.dat # delete_datastore
     196  echo "1                      " >> initbatch.dat # delete_dxlayer
     197  echo "2012-12-10 00:00:00.0  " >> initbatch.dat # epoch
     198  echo "3PI                    " >> initbatch.dat # survey
     199  echo "3PI                    " >> initbatch.dat # psps_survey
     200  echo "0                      " >> initbatch.dat # queue_P2
     201  echo "0                      " >> initbatch.dat # queue_ST
     202  echo "0                      " >> initbatch.dat # queue_OB
     203  echo "0                      " >> initbatch.dat # queue_DF
     204  echo "0                      " >> initbatch.dat # queue_DO
     205  echo "0                      " >> initbatch.dat # queue_FW
     206  echo "0                      " >> initbatch.dat # queue_FO
     207  echo "1                      " >> initbatch.dat # active
     208  echo "0                      " >> initbatch.dat # parallel
     209  echo "use_new                " >> initbatch.dat # P2_smf_version
     210  echo "any                    " >> initbatch.dat # ST_cmf_version
     211  echo "2000-01-01 00:00:00.0  " >> initbatch.dat # trange_start
     212  echo "2020-01-01 00:00:00.0  " >> initbatch.dat # trange_end
     213  cat initbatch.dat | ippjython queue.py -test edit
     214  if ($status) exit
    233215
    234216  echo ""
     
    236218
    237219  rm -rf $OUTDIR/IN
    238   ippjython loader.py -test initbatch init
     220  ippjython loader.py -test initbatch init -simtest < /dev/null
     221  if ($status) exit
    239222endif
    240223
     
    244227  echo " ---- queue P2 batches ----"
    245228
    246   ippjython queue.py -test edit <<EOF
    247 $queuename
    248 test_ds
    249 IPP_PSPS
    250 0
    251 catdir.cam
    252 $OUTDIR/catdir.cam
    253 9
    254 11
    255 19
    256 21
    257 2
    258 $OUTDIR
    259 0
    260 0
    261 1
    262 1
    263 2012-12-10 00:00:00.0
    264 3PI
    265 3PI
    266 1
    267 0
    268 0
    269 1
    270 0
    271 y
    272 y
    273 EOF
     229  echo "$queuename            " >  cambatch.dat # skychunk name
     230  echo "test_ds               " >> cambatch.dat # datastore_product
     231  echo "IPP_PSPS              " >> cambatch.dat # datastore_type
     232  echo "0                     " >> cambatch.dat # datastore_publish
     233  echo "catdir.cam            " >> cambatch.dat # dvo_label
     234  echo "$OUTDIR/catdir.cam    " >> cambatch.dat # dvo_location
     235  echo "9                     " >> cambatch.dat # min_ra
     236  echo "11                    " >> cambatch.dat # max_ra
     237  echo "19                    " >> cambatch.dat # min_dec
     238  echo "21                    " >> cambatch.dat # max_dec
     239  echo "2                     " >> cambatch.dat # box_size
     240  echo "$OUTDIR               " >> cambatch.dat # base_path
     241  echo "0                     " >> cambatch.dat # data_release
     242  echo "0                     " >> cambatch.dat # delete_local
     243  echo "1                     " >> cambatch.dat # delete_datastore
     244  echo "1                     " >> cambatch.dat # delete_dxlayer
     245  echo "2012-12-10 00:00:00.0 " >> cambatch.dat # epoch
     246  echo "3PI                   " >> cambatch.dat # survey
     247  echo "3PI                   " >> cambatch.dat # psps_survey
     248  echo "1                     " >> cambatch.dat # queue_P2
     249  echo "0                     " >> cambatch.dat # queue_ST
     250  echo "0                     " >> cambatch.dat # queue_OB
     251  echo "0                     " >> cambatch.dat # queue_DF
     252  echo "0                     " >> cambatch.dat # queue_DO
     253  echo "0                     " >> cambatch.dat # queue_FW
     254  echo "0                     " >> cambatch.dat # queue_FO
     255  echo "1                     " >> cambatch.dat # active
     256  echo "0                     " >> cambatch.dat # parallel
     257  echo "use_new               " >> cambatch.dat # P2_smf_version
     258  echo "any                   " >> cambatch.dat # ST_cmf_version
     259  echo "2000-01-01 00:00:00.0 " >> cambatch.dat # trange_start
     260  echo "2020-01-01 00:00:00.0 " >> cambatch.dat # trange_end
     261  cat cambatch.dat | ippjython queue.py -test edit -simtest
     262  if ($status) exit
    274263endif
    275264
     
    279268
    280269  rm -rf $OUTDIR/P2
    281   ippjython loader.py -test $queuename once
     270  ippjython loader.py -test $queuename once -simtest < /dev/null
     271  if ($status) exit
    282272endif
    283273
     
    290280    set stackqueuename = $queuename\_stk
    291281  endif
    292   ippjython queue.py -test edit <<EOF
    293 $stackqueuename
    294 test_ds
    295 IPP_PSPS
    296 0
    297 catdir.stk
    298 $OUTDIR/catdir.stk
    299 9
    300 11
    301 19
    302 21
    303 2
    304 $OUTDIR
    305 0
    306 0
    307 1
    308 1
    309 2012-12-10 00:00:00.0
    310 3PI
    311 3PI
    312 0
    313 1
    314 0
    315 1
    316 0
    317 y
    318 y
    319 EOF
     282  echo "$stackqueuename       " >  stackbatch.dat # skychunk name
     283  echo "test_ds               " >> stackbatch.dat # datastore_product
     284  echo "IPP_PSPS              " >> stackbatch.dat # datastore_type
     285  echo "0                     " >> stackbatch.dat # datastore_publish
     286  echo "catdir.stk            " >> stackbatch.dat # dvo_label
     287  echo "$OUTDIR/catdir.stk    " >> stackbatch.dat # dvo_location
     288  echo "9                     " >> stackbatch.dat # min_ra
     289  echo "11                    " >> stackbatch.dat # max_ra
     290  echo "19                    " >> stackbatch.dat # min_dec
     291  echo "21                    " >> stackbatch.dat # max_dec
     292  echo "2                     " >> stackbatch.dat # box_size
     293  echo "$OUTDIR               " >> stackbatch.dat # base_path
     294  echo "0                     " >> stackbatch.dat # data_release
     295  echo "0                     " >> stackbatch.dat # delete_local
     296  echo "1                     " >> stackbatch.dat # delete_datastore
     297  echo "1                     " >> stackbatch.dat # delete_dxlayer
     298  echo "2012-12-10 00:00:00.0 " >> stackbatch.dat # epoch
     299  echo "3PI                   " >> stackbatch.dat # survey
     300  echo "3PI                   " >> stackbatch.dat # psps_survey
     301  echo "0                     " >> stackbatch.dat # queue_P2
     302  echo "1                     " >> stackbatch.dat # queue_ST
     303  echo "0                     " >> stackbatch.dat # queue_OB
     304  echo "0                     " >> stackbatch.dat # queue_DF
     305  echo "0                     " >> stackbatch.dat # queue_DO
     306  echo "0                     " >> stackbatch.dat # queue_FW
     307  echo "0                     " >> stackbatch.dat # queue_FO
     308  echo "1                     " >> stackbatch.dat # active
     309  echo "0                     " >> stackbatch.dat # parallel
     310  echo "use_new               " >> stackbatch.dat # P2_smf_version
     311  echo "any                   " >> stackbatch.dat # ST_cmf_version
     312  echo "2000-01-01 00:00:00.0 " >> stackbatch.dat # trange_start
     313  echo "2020-01-01 00:00:00.0 " >> stackbatch.dat # trange_end
     314  cat stackbatch.dat | ippjython queue.py -test edit -simtest
     315  if ($status) exit
    320316endif
    321317
     
    328324  endif
    329325  rm -rf $OUTDIR/ST
    330   ippjython loader.py -test $stackqueuename once
     326  ippjython loader.py -test $stackqueuename once -simtest < /dev/null
     327  if ($status) exit
    331328endif
    332329
     
    339336    set objectqueuename = $queuename\_obj
    340337  endif
    341   ippjython queue.py -test edit <<EOF
    342 $objectqueuename
    343 test_ds
    344 IPP_PSPS
    345 0
    346 catdir.stk
    347 $OUTDIR/catdir.stk
    348 9
    349 11
    350 19
    351 21
    352 2
    353 $OUTDIR
    354 0
    355 0
    356 1
    357 1
    358 2012-12-10 00:00:00.0
    359 3PI
    360 3PI
    361 0
    362 0
    363 1
    364 1
    365 0
    366 y
    367 y
    368 EOF
     338  echo "$objectqueuename      " >  objectbatch.dat # skychunk name
     339  echo "test_ds               " >> objectbatch.dat # datastore_product
     340  echo "IPP_PSPS              " >> objectbatch.dat # datastore_type
     341  echo "0                     " >> objectbatch.dat # datastore_publish
     342  echo "catdir.cam            " >> objectbatch.dat # dvo_label
     343  echo "$OUTDIR/catdir.cam    " >> objectbatch.dat # dvo_location
     344  echo "9                     " >> objectbatch.dat # min_ra
     345  echo "11                    " >> objectbatch.dat # max_ra
     346  echo "19                    " >> objectbatch.dat # min_dec
     347  echo "21                    " >> objectbatch.dat # max_dec
     348  echo "2                     " >> objectbatch.dat # box_size
     349  echo "$OUTDIR               " >> objectbatch.dat # base_path
     350  echo "0                     " >> objectbatch.dat # data_release
     351  echo "0                     " >> objectbatch.dat # delete_local
     352  echo "1                     " >> objectbatch.dat # delete_datastore
     353  echo "1                     " >> objectbatch.dat # delete_dxlayer
     354  echo "2012-12-10 00:00:00.0 " >> objectbatch.dat # epoch
     355  echo "3PI                   " >> objectbatch.dat # survey
     356  echo "3PI                   " >> objectbatch.dat # psps_survey
     357  echo "0                     " >> objectbatch.dat # queue_P2
     358  echo "0                     " >> objectbatch.dat # queue_ST
     359  echo "1                     " >> objectbatch.dat # queue_OB
     360  echo "0                     " >> objectbatch.dat # queue_DF
     361  echo "0                     " >> objectbatch.dat # queue_DO
     362  echo "0                     " >> objectbatch.dat # queue_FW
     363  echo "0                     " >> objectbatch.dat # queue_FO
     364  echo "1                     " >> objectbatch.dat # active
     365  echo "0                     " >> objectbatch.dat # parallel
     366  echo "use_new               " >> objectbatch.dat # P2_smf_version
     367  echo "any                   " >> objectbatch.dat # ST_cmf_version
     368  echo "2000-01-01 00:00:00.0 " >> objectbatch.dat # trange_start
     369  echo "2020-01-01 00:00:00.0 " >> objectbatch.dat # trange_end
     370  cat objectbatch.dat | ippjython queue.py -test edit once -simtest
     371  if ($status) exit
    369372endif
    370373
     
    377380  endif
    378381  rm -rf $OUTDIR/OB
    379    ippjython loader.py -test $objectqueuename once
    380 endif
    381 
     382
     383  ippjython loader.py -test $objectqueuename once -simtest < /dev/null
     384  if ($status) exit
     385endif
     386
  • trunk/ippToPsps/test/mkgpc1.sh

    r35224 r37246  
    4747   bg_stdev REAL,
    4848   ra FLOAT,
    49    decl FLOAT
     49   decl FLOAT,
     50   dateobs DATETIME
    5051  );
    5152  CREATE TABLE chipRun (
     
    8889  );
    8990  CREATE TABLE stackSumSkyfile (
    90    stack_id INT
     91   stack_id INT,
     92   mjd_obs DOUBLE
    9193  );
    9294  CREATE TABLE skycalRun (
     95   sky_id INT,
    9396   skycal_id INT,
    9497   stack_id INT
     
    155158  echo ntable: $ntable
    156159  if ($ntable != 21) then
    157     echo "expected 21 lines (19 tables), but got $ntable, not deleting"
     160    echo "expected 21 lines (20 tables), but got $ntable, not deleting"
    158161    exit 2
    159162  endif
  • trunk/ippToPsps/test/mkgpc1data.dvo

    r35753 r37246  
    1515# exp_id stack_id raw_file exp_file offset
    1616list imagedata
    17  1 1 $OUTDIR/test.01  0.000
    18  2 1 $OUTDIR/test.02 -0.025
    19  3 1 $OUTDIR/test.03  0.025
    20  4 1 $OUTDIR/test.04  0.010
    21  5 2 $OUTDIR/test.05  0.000
    22  6 2 $OUTDIR/test.06 -0.025
    23  7 2 $OUTDIR/test.07  0.025
    24  8 2 $OUTDIR/test.08  0.010
    25  9 3 $OUTDIR/test.09  0.000
    26 10 3 $OUTDIR/test.10 -0.025
    27 11 3 $OUTDIR/test.11  0.025
    28 12 3 $OUTDIR/test.12  0.010
     17 1 1 $OUTDIR/test.01  0.000 2010/01/01 01:00:00
     18 2 1 $OUTDIR/test.02 -0.025 2010/01/01 02:00:00
     19 3 1 $OUTDIR/test.03  0.025 2010/01/01 03:00:00
     20 4 1 $OUTDIR/test.04  0.010 2010/01/01 04:00:00
     21 5 2 $OUTDIR/test.05  0.000 2010/01/01 05:00:00
     22 6 2 $OUTDIR/test.06 -0.025 2010/01/01 06:00:00
     23 7 2 $OUTDIR/test.07  0.025 2010/01/01 07:00:00
     24 8 2 $OUTDIR/test.08  0.010 2010/01/01 08:00:00
     25 9 3 $OUTDIR/test.09  0.000 2010/01/01 09:00:00
     2610 3 $OUTDIR/test.10 -0.025 2010/01/01 10:00:00
     2711 3 $OUTDIR/test.11  0.025 2010/01/01 11:00:00
     2812 3 $OUTDIR/test.12  0.010 2010/01/01 12:00:00
    2929end
    3030
     
    3939  # mkcatdir.cam PS1_V3 PS1_V4
    4040  # mkcatdir.stk PS1_V3 PS1_V4
    41   mkcatdir.cam PS1_V4 PS1_V4
    42   mkcatdir.stk PS1_V4 PS1_V4
     41  # mkcatdir.cam PS1_V4 PS1_V4
     42  # mkcatdir.stk PS1_V4 PS1_V4
     43  mkcatdir.cam PS1_V5 PS1_V5
     44  mkcatdir.stk PS1_V5 PS1_V5
    4345  insert.stack.set
    4446end
     
    9496    $offset = $word:3
    9597
    96     ctimes -abs 2008/01/01,$i\:00:00 -var mjd
     98    sprintf myDATE "%s" $word:4
     99    sprintf myTIME "%s" $word:5
     100    echo ctimes -abs $myDATE,$myTIME -var mjd
     101    ctimes -abs $myDATE,$myTIME -var mjd
    97102
    98103    # XXX for a simple test of ippToPsps, i need to generate smf files with some correspondence to gpc1 exposure smfs
     
    142147
    143148    mkinput $offset $rawfile
    144     exec mkcmf -no-noise -append $rawfile $cmffile -date 2008/1/1 -time $i\:00:00 -radec $RA $DEC -type $1 -imageID $ID -sourceID 0
     149    exec mkcmf -photcode SIMTEST.r.Chip -no-noise -append $rawfile $cmffile -date $myDATE -time $myTIME -radec $RA $DEC -type $1 -imageID $ID -sourceID 0
    145150
    146151    # keywords which are read from image extension
     
    203208    end
    204209
    205     if ($i == 5)
     210    if (0 && ($i == 5))
    206211      echo "NOTE: adding image $i 2x to DVO, but without detections : this simulates a failure in LAP dvo"
    207212
    208       echo addstar -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -image -dup-images
    209       exec addstar -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -image -dup-images
     213      echo addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -image -dup-images
     214      exec addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -image -dup-images
    210215    end
    211216
    212     if ($i == 7)
     217    if (0 && ($i == 7))
    213218      echo "NOTE: adding detections from image $i 2x to DVO, but with wrong photcode and duplicate image ID : this simulates a failure in LAP dvo"
    214       echo addstar -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -dup-images -image-id-override 7 -photcode 2MASS_J
    215       exec addstar -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -dup-images -image-id-override 7 -photcode 2MASS_J
     219      echo addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -dup-images -image-id-override 7 -photcode 2MASS_J
     220      exec addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass -dup-images -image-id-override 7 -photcode 2MASS_J
    216221    end
    217222
    218     echo addstar -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass
    219     exec addstar -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass
    220   end
     223    echo addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass
     224    exec addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass
     225  end
     226
     227  echo relphot -D CATDIR $catdir -region 8 12 18 22 -images g,r,i,z,y -update
     228  exec relphot -D CATDIR $catdir -region 8 12 18 22 -images g,r,i,z,y -update
    221229
    222230  if ($PARALLEL)
     
    264272    $offset = $word:2
    265273
     274    ## this is not generating photcodes recognized as stack by relphot
     275
    266276    mkinput $offset $rawfile
    267     exec mkcmf $rawfile $cmffile -extname SkyChip -date 2008/1/1 -time $i\:00:00 -radec $RA $DEC -type $1 -imageID $ID -sourceID 1
     277    exec mkcmf -photcode SIMTEST.r.SkyChip $rawfile $cmffile -extname SkyChip -date 2008/1/1 -time $i\:00:00 -radec $RA $DEC -type $1 -imageID $ID -sourceID 1
    268278
    269279    # add some required header keywords:
    270280    exec echo "HIERARCH FPA.ZP =          25. / Magnitude zero point" > tmp.hdr
     281    exec echo "TESS_ID = 'RINGS.V3'" >> tmp.hdr
     282    exec echo "SKYCELL = 'skycell.1133.081'" >> tmp.hdr
    271283    exec fits_insert $cmffile tmp.hdr
    272284
    273     exec addstar -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass
    274   end
     285    echo addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass
     286    exec addstar -D SKY_DEPTH 4 -D CATDIR $catdir -D CAMERA simtest $cmffile -D CATFORMAT $2 -quick-airmass
     287  end
     288
     289  echo relphot -D CATDIR $catdir -region 8 12 18 22 -images g,r,i,z,y -update
     290  exec relphot -D CATDIR $catdir -region 8 12 18 22 -images g,r,i,z,y -update
    275291
    276292  if ($PARALLEL)
     
    308324
    309325  # a single exposure
    310   dbinsert rawExp (exp_id, exp_name, exp_time, bg, bg_stdev, ra, decl) values ($myID, "test.$myID", 10.0, 100.0, 2.0, {$RA*3.1415/180.0}, {$DEC*3.1415/180.0})
     326  echo $myDATE
     327  echo $myTIME
     328
     329  dbinsert rawExp (exp_id, exp_name, exp_time, bg, bg_stdev, ra, decl, dateobs) values ($myID, "test.$myID", 10.0, 100.0, 2.0, {$RA*3.1415/180.0}, {$DEC*3.1415/180.0}, '$myDATE $myTIME')
    311330  dbinsert chipRun (exp_id, chip_id) values ($myID, $myID)
    312   dbinsert camRun (chip_id, cam_id, dist_group, software_ver) values ($myID, $myID, "testgroup", "testsoft")
     331  dbinsert camRun (chip_id, cam_id, dist_group, software_ver) values ($myID, $myID, "testgroup", "38000M")
    313332  dbinsert camProcessedExp (cam_id, path_base, fault) values ($myID, "$filename", 0)
    314333  dbinsert fakeRun (fake_id, cam_id) values ($myID, $myID)
     
    332351  $stkfile = $2
    333352
    334   dbinsert stackRun (stack_id, skycell_id, filter, software_ver) values ($stkID, "skycell.0000.000", "g.00000", "testsoft")
     353  dbinsert stackRun (stack_id, skycell_id, filter, software_ver) values ($stkID, "skycell.0000.000", "g.00000", "37500")
     354
     355  $TIMEFORMAT = mjd
     356  $TIMEREF = 2001/01/01,00:00:00
     357
     358  $mjdsum = 0.0
     359  $Nstk = 0
    335360
    336361  for i 0 $imagedata:n
     
    341366    $expID = $tmp:0
    342367    $expfile = $tmp:2
     368    sprintf myDATE "%s" $tmp:4
     369    sprintf myTIME "%s" $tmp:5
    343370    insert.exp $expID $expfile
    344371    dbinsert stackInputSkyfile (stack_id, warp_id) values ($stkID, $expID)
    345   end
    346   dbinsert stackSumSkyfile (stack_id) values ($stkID)
    347   dbinsert skycalRun (skycal_id, stack_id) values ($stkID, $stkID)
     372
     373    echo ctimes -abs $myDATE,$myTIME -var mjd
     374         ctimes -abs $myDATE,$myTIME -var mjd
     375    $mjdsum += $mjd
     376    $Nstk ++
     377  end
     378  $mjd = $mjdsum / $Nstk
     379
     380  dbinsert stackSumSkyfile (stack_id, mjd_obs) values ($stkID, $mjd)
     381  dbinsert skycalRun (sky_id, skycal_id, stack_id) values ($stkID, $stkID, $stkID)
    348382  dbinsert skycalResult (skycal_id, path_base) values ($stkID, "$stkfile")
    349383 
  • trunk/ippToPsps/test/mksasdata.dvo

    r35097 r37246  
    44
    55if (not($?VERBOSE)) set VERBOSE = 0
     6if (not($?PARALLEL)) set PARALLEL = 0
    67
    7 $OUTDIR = sas12
     8$OUTDIR = sasdata
     9
     10if (not($?KEEPDVO)) set KEEPDVO = 0
     11
     12list expfiles
     13  sasdata/o5745g0495o.356867.cm.982612
     14  sasdata/o5745g0507o.356882.cm.982626
     15  sasdata/o5745g0517o.356892.cm.982636
     16  sasdata/o5745g0527o.356909.cm.982650
     17end
    818
    919macro mkfull
    1020  init.db
    11   mkcatdir
     21  mkcatdir.cam
     22  mkcatdir.stk
     23  mkcal
     24  mkgpc1.cam
     25  mkgpc1.stk
    1226end
    1327
     
    1832  $dbpass = dvo
    1933
    20   # exposure center
    21   $RA = 333.8
    22   $DEC = 1.6
    23 
    24   # stack center
    25   # XXX the selected stack centers come from the input exposures, so I should use a gpc1 db with stacks associated with real exposures
    26   $RA = 331.6
    27   $DEC = -6.0
     34  # are these used to find the exposures in any way?
     35  # center of the test skycell
     36  $RA = 333.5
     37  $DEC = -5.0
    2838
    2939  break -auto off
     
    3646  # system-wide info
    3747  dbinsert ippToPspsFake (my_id) values (2)
    38   dbinsert skycell (radeg, decdeg, skycell_id) values ($RA, $DEC, "skycell.0000.000")
     48  dbinsert skycell (radeg, decdeg, skycell_id) values ($RA, $DEC, "skycell.1225.070")
    3949end
    4050
    4151# create a populated catdir with a set of cmf files, save the filenames in list for use by insert.exp
    42 macro mkcatdir
     52macro mkcatdir.cam
    4353  if ($0 != 1)
    4454    echo "mkcatdir"
     
    4959
    5060  local catdir
    51   $catdirbase = catdir.sas12
     61  $catdirbase = catdir.sas.cam
     62  $catdir = $OUTDIR/$catdirbase
     63
     64  exec rm -rf $catdir
     65
     66  for i 0 $expfiles:n
     67    $expfile = $expfiles:$i
     68
     69    exec addstar -D CAMERA gpc1 -D CATDIR $catdir -D CATFORMAT PS1_V5 $expfile.smf -update
     70  end
     71  exec addstar -D CATDIR $catdir -region 330 340 -10 0 -resort
     72end
     73
     74# create a populated catdir with a set of cmf files, save the filenames in list for use by insert.exp
     75macro mkcatdir.stk
     76  if ($0 != 1)
     77    echo "mkcatdir"
     78    break
     79  end
     80
     81  mkdir $OUTDIR
     82
     83  local catdir
     84  $catdirbase = catdir.sas.stk
    5285  $catdir = $OUTDIR/$catdirbase
    5386  exec rm -rf $catdir
    5487
    55   $expfile = sas12.test.psps/o5745g0620o.356996.cm.473458
    56   exec addstar -D CAMERA gpc1 -D CATDIR $catdir $expfile.smf
     88  # a single stack
     89  $stkfile = sasdata/RINGS.V3.skycell.1225.070.stk.3366216.skycal.1589960
     90  exec addstar -D CAMERA gpc1 -D CATFORMAT PS1_V5 -D CATDIR $catdir $stkfile.cmf
     91end
    5792
    58   # are these used to find the exposures in any way?
    59   $RA = 333.8
    60   $DEC = 1.6
     93macro mkcal
    6194
    62   # a single exposure
    63   $expID = 1
    64   dbinsert rawExp (exp_id, exp_name, exp_time, bg, bg_stdev, ra, decl) values ($expID, "o5745g0620o", 10.0, 100.0, 2.0, {$RA*3.1415/180.0}, {$DEC*3.1415/180.0})
    65   dbinsert chipRun (exp_id, chip_id) values ($expID, $expID)
    66   dbinsert camRun (chip_id, cam_id, dist_group, software_ver) values ($expID, $expID, "testgroup", "testsoft")
    67   dbinsert camProcessedExp (cam_id, path_base) values ($expID, "$expfile")
    68   dbinsert fakeRun (fake_id, cam_id) values ($expID, $expID)
    69   dbinsert warpRun (warp_id, fake_id) values ($expID, $expID)
    70   dbinsert warpSkyCellMap (warp_id, skycell_id, class_id) values ($expID, "skycell.0000.000", "XY00")
    71   dbinsert addRun (stage, state, stage_id, minidvodb_name) values ("cam", "full", $expID, "$catdirbase")
     95  local catdir
     96  $catdir = $OUTDIR/catdir.sas.cam
     97
     98  # merge the cam and stk databases together:
     99  exec dvomerge $OUTDIR/catdir.sas.stk into $catdir
     100
     101  # run relphot
     102  echo relphot -D CATDIR $catdir -region 330 340 -10 0 -images g,r,i,z,y -update -boundary-tree tess.3pi.fits
     103  exec relphot -D CATDIR $catdir -region 330 340 -10 0 -images g,r,i,z,y -update -boundary-tree tess.3pi.fits
     104
     105  echo relastro -v -D CATDIR $catdir -images -update-chips -region 330 340 -10 0 -update
     106  exec relastro -v -D CATDIR $catdir -images -update-chips -region 330 340 -10 0 -update
     107end
     108
     109# create a populated catdir with a set of cmf files, save the filenames in list for use by insert.exp
     110macro mkgpc1.cam
     111  if ($0 != 1)
     112    echo "mkgpc1.cam"
     113    break
     114  end
     115
     116  local catdirbase
     117  $catdirbase = catdir.sas.cam
     118
     119  for i 0 $expfiles:n
     120    $expfile = $expfiles:$i
     121
     122    # are these used to find the exposures in any way?
     123    $RA = 333.9
     124    $DEC = -3.8
     125
     126    # a single exposure
     127    $expID = $i + 1
     128    substr $expfile 8 11 expname
     129
     130    dbinsert rawExp (exp_id, exp_name, exp_time, bg, bg_stdev, ra, decl, dateobs) values ($expID, "$expname", 10.0, 100.0, 2.0, {$RA*3.1415/180.0}, {$DEC*3.1415/180.0}, "2010/01/01 00:00:00")
     131    dbinsert chipRun (exp_id, chip_id) values ($expID, $expID)
     132    dbinsert camRun (chip_id, cam_id, dist_group, software_ver) values ($expID, $expID, "testgroup", "38000M")
     133    dbinsert camProcessedExp (cam_id, path_base, fault) values ($expID, "$expfile", 0)
     134    dbinsert fakeRun (fake_id, cam_id) values ($expID, $expID)
     135    dbinsert warpRun (warp_id, fake_id) values ($expID, $expID)
     136    dbinsert warpSkyCellMap (warp_id, skycell_id, class_id) values ($expID, "skycell.1225.070", "XY00")
     137    dbinsert addRun (add_id, stage, state, stage_id, minidvodb_name) values ($expID, "cam", "full", $expID, "$catdirbase")
     138    dbinsert addProcessedExp (add_id, fault) values ($expID, 0)
     139   
     140    # catdirs for the exposures
     141    dbinsert minidvodbRun (minidvodb_name, minidvodb_id, state) values ("$catdirbase", 1, "merged")
     142    dbinsert minidvodbProcessed (minidvodb_id, fault) values (1, 0)
     143   
     144    dbinsert mergedvodbRun (minidvodb_id, merge_id, state, mergedvodb) values (1, 1, "full", "$catdirbase")
     145    dbinsert mergedvodbProcessed (merge_id, fault) values (1, 0)
     146  end
     147end
     148
     149# create a populated catdir with a set of cmf files, save the filenames in list for use by insert.exp
     150macro mkgpc1.stk
     151  if ($0 != 1)
     152    echo "mkgpc1.stk"
     153    break
     154  end
     155
     156  local catdirbase
     157  $catdirbase = catdir.sas.cam
     158
     159  $TIMEFORMAT = mjd
     160  $TIMEREF = 2001/01/01,00:00:00
     161  ctimes -abs 2010/01/01,00:00:00 -var mjd
    72162
    73163  # a single stack
    74   $stkfile = sas12.test.psps/RINGS.V3.skycell.1225.070.stk.1032983.skycal.40531
    75   exec addstar -D CAMERA gpc1 -D CATDIR $catdir $stkfile.cmf
     164  $stkfile = sasdata/RINGS.V3.skycell.1225.070.stk.3366216.skycal.1589960
    76165
    77   $stkID = 1
    78   dbinsert stackRun (stack_id, skycell_id, filter, software_ver) values ($stkID, "skycell.0000.000", "g.00000", "testsoft")
     166  break -auto off
     167  $tmpline = `echo $stkfile.cmf | fields IMAGEID`
     168  list words -split $tmpline
     169  $stkID = $words:1
     170  break -auto on
     171
     172  $expID = 1
     173  dbinsert stackRun (stack_id, skycell_id, filter, software_ver) values ($stkID, "skycell.1225.070", "i.00000", "37500M")
    79174  dbinsert stackInputSkyfile (stack_id, warp_id) values ($stkID, $expID)
    80   dbinsert stackSumSkyfile (stack_id) values ($stkID)
    81   dbinsert skycalRun (skycal_id, stack_id) values ($stkID, $stkID)
     175  dbinsert stackSumSkyfile (stack_id, mjd_obs) values ($stkID, $mjd)
     176  dbinsert skycalRun (sky_id, skycal_id, stack_id) values ($stkID, $stkID, $stkID)
    82177  dbinsert skycalResult (skycal_id, path_base) values ($stkID, "$stkfile")
    83178  dbinsert addRun (stage, state, stage_id, minidvodb_name) values ("skycal", "full", $stkID, "$catdirbase")
    84 
    85   # catdirs for the exposures
    86   dbinsert minidvodbRun (minidvodb_name, minidvodb_id, state) values ("$catdirbase", 1, "merged")
    87   dbinsert minidvodbProcessed (minidvodb_id, fault) values (1, 0)
    88  
    89   dbinsert mergedvodbRun (minidvodb_id, merge_id, state, mergedvodb) values (1, 1, "full", "$catdirbase")
    90   dbinsert mergedvodbProcessed (merge_id, fault) values (1, 0)
    91179
    92180  # catdirs for the stack
  • trunk/ippToPsps/test/sastest.sh

    r35179 r37246  
    11#!/bin/csh -f
    22
    3 set stackqueuename = 0
    4 if ($#argv > 0) then
    5   set stackqueuename = $1
    6   echo "stackqueue: $stackqueuename"
    7 endif
     3chmod +x mksasdata.dvo mkgpc1.sh
    84
    95# a bit crude : get the datadir path by interpolation of the PATH element for psconfig
     
    1915# mkgpc1.sh user localhost eam eam
    2016
    21 set mkgpc1      = 1
    22 set initdb      = 1
    23 set mkdummy     = 1
    24 set initscratch = 1
    25 set initbatch   = 1
    26 set camqueue    = 1
    27 set cambatch    = 1
    28 set stackqueue  = 0
    29 set stackbatch  = 0
    30 
    31 set OUTDIR = "sas12"
     17set mkgpc1       = 1
     18set initdb       = 1
     19set mkdummy      = 1
     20set initscratch  = 1
     21set initbatch    = 1
     22set camqueue     = 1
     23set cambatch     = 1
     24set stackqueue   = 1
     25set stackbatch   = 1
     26set objectqueue  = 1
     27set objectbatch  = 1
     28
     29set targ = ($argv)
     30set args = ""
     31
     32while ($#targ)
     33 switch ("$targ[1]")
     34  case -h
     35  case -help
     36    echo "USAGE: fulltest.sh [-XX] [+XX]"
     37    echo " -XX : turn off features"
     38    echo " +XX : turn on features"
     39    echo "  features: all, mkgpc1, initdb, initscratch, initbatch, camera, stack, object"
     40    exit 2
     41  case -all
     42    set mkgpc1       = 0
     43    set initdb       = 0
     44    set initscratch  = 0
     45    set initbatch    = 0
     46    set camqueue     = 0
     47    set cambatch     = 0
     48    set stackqueue   = 0
     49    set stackbatch   = 0
     50    set objectqueue  = 0
     51    set objectbatch  = 0
     52    breaksw;
     53  case -mkgpc1
     54    set mkgpc1 = 0
     55    breaksw;
     56  case -initdb
     57    set initdb = 0
     58    breaksw;
     59  case -initscratch
     60    set initscratch = 0
     61    breaksw;
     62  case -initbatch
     63    set initbatch = 0
     64    breaksw;
     65  case -camera
     66    set camqueue = 0
     67    set cambatch = 0
     68    breaksw;
     69  case -stack
     70    set stackqueue = 0
     71    set stackbatch = 0
     72    breaksw;
     73  case -object
     74    set objectqueue = 0
     75    set objectbatch = 0
     76    breaksw;
     77  default:
     78    set args=($args $targ[1]);
     79    breaksw;
     80  endsw
     81  shift targ
     82end
     83
     84set targ = ($args)
     85set args = ""
     86
     87while ($#targ)
     88 switch ("$targ[1]")
     89  case +all
     90    set mkgpc1       = 1
     91    set initdb       = 1
     92    set initscratch  = 1
     93    set initbatch    = 1
     94    set camqueue     = 1
     95    set cambatch     = 1
     96    set stackqueue   = 1
     97    set stackbatch   = 1
     98    set objectqueue  = 1
     99    set objectbatch  = 1
     100    breaksw;
     101  case +mkgpc1
     102    set mkgpc1 = 1
     103    breaksw;
     104  case +initdb
     105    set initdb = 1
     106    breaksw;
     107  case +initscratch
     108    set initscratch = 1
     109    breaksw;
     110  case +initbatch
     111    set initbatch = 1
     112    breaksw;
     113  case "+camera"
     114    set camqueue = 1
     115    set cambatch = 1
     116    breaksw;
     117  case +stack
     118    set stackqueue = 1
     119    set stackbatch = 1
     120    breaksw;
     121  case +object
     122    set objectqueue = 1
     123    set objectbatch = 1
     124    breaksw;
     125  default:
     126    set args=($args $targ[1]);
     127    breaksw;
     128  endsw
     129  shift targ
     130end
     131
     132if ($args[1] != "") then
     133    echo "USAGE: sastest.sh [-XX] [+XX]"
     134    echo " -XX : turn off features"
     135    echo " +XX : turn on features"
     136    echo "  features: all, mkgpc1, initdb, initscratch, initbatch, camera, stack, object"
     137    exit 2
     138endif
     139
     140set stackqueuename = 0
     141set objectqueuename = 0
     142
     143set OUTDIR = "sasdata"
    32144set queuename = "test"
    33145
    34146if ($mkgpc1) then
     147  echo ""
     148  echo " ---- mksasdata.dvo : creating the dvo & gpc1 database entries ----"
    35149  mksasdata.dvo
    36150endif
     
    38152# create the ipptopsps database
    39153if ($initdb) then
     154  echo ""
     155  echo " ---- init ipptopsps_test ----"
    40156
    41157  # does the database already exist?
     
    43159  mysql -h localhost -u dvo -pdvo -e "create database ipptopsps_test"
    44160  mysql -h localhost -u dvo -pdvo ipptopsps_test < $IPPTOPSPS_DATA/ippToPspsDbSchema.sql
    45 
    46161endif
    47162
     
    52167  mysql -h localhost -u dvo -pdvo -e "drop database ipptopsps_scratch"
    53168  mysql -h localhost -u dvo -pdvo -e "create database ipptopsps_scratch"
    54   ippjython setupScratchDb.py -test
     169  ippjython setupScratchDb.py -test < /dev/null
     170  if ($status) exit
     171endif
     172
     173# this is poor : we need to queue something in order to generate an init batch
     174# this is because a skychunk carries the info about the datastore used to publish
     175# the batch
     176if ($initbatch) then
     177  echo ""
     178  echo " ---- make skychunk for IN batches ----"
     179
     180  echo "initbatch              " >  initbatch.dat # skychunk name
     181  echo "test_ds                " >> initbatch.dat # datastore_product
     182  echo "IPP_PSPS               " >> initbatch.dat # datastore_type
     183  echo "0                      " >> initbatch.dat # datastore_publish
     184  echo "none                   " >> initbatch.dat # dvo_label
     185  echo "none                   " >> initbatch.dat # dvo_location
     186  echo "0                      " >> initbatch.dat # min_ra
     187  echo "0                      " >> initbatch.dat # max_ra
     188  echo "0                      " >> initbatch.dat # min_dec
     189  echo "0                      " >> initbatch.dat # max_dec
     190  echo "2                      " >> initbatch.dat # box_size
     191  echo "none                   " >> initbatch.dat # base_path
     192  echo "0                      " >> initbatch.dat # data_release
     193  echo "0                      " >> initbatch.dat # delete_local
     194  echo "1                      " >> initbatch.dat # delete_datastore
     195  echo "1                      " >> initbatch.dat # delete_dxlayer
     196  echo "2012-12-10 00:00:00.0  " >> initbatch.dat # epoch
     197  echo "3PI                    " >> initbatch.dat # survey
     198  echo "3PI                    " >> initbatch.dat # psps_survey
     199  echo "0                      " >> initbatch.dat # queue_P2
     200  echo "0                      " >> initbatch.dat # queue_ST
     201  echo "0                      " >> initbatch.dat # queue_OB
     202  echo "0                      " >> initbatch.dat # queue_DF
     203  echo "0                      " >> initbatch.dat # queue_DO
     204  echo "0                      " >> initbatch.dat # queue_FW
     205  echo "0                      " >> initbatch.dat # queue_FO
     206  echo "1                      " >> initbatch.dat # active
     207  echo "0                      " >> initbatch.dat # parallel
     208  echo "use_new                " >> initbatch.dat # P2_smf_version
     209  echo "any                    " >> initbatch.dat # ST_cmf_version
     210  echo "2000-01-01 00:00:00.0  " >> initbatch.dat # trange_start
     211  echo "2020-01-01 00:00:00.0  " >> initbatch.dat # trange_end
     212  cat initbatch.dat | ippjython queue.py -test edit
     213  if ($status) exit
     214
     215  echo ""
     216  echo " ---- create init batch ----"
     217
     218  rm -rf $OUTDIR/IN
     219  ippjython loader.py -test initbatch init < /dev/null
     220  if ($status) exit
    55221endif
    56222
    57223# this code is sensitive to a previously existing database?
    58224if ($camqueue) then
    59   ippjython queue.py -test edit <<EOF
    60 $queuename
    61 test_ds
    62 IPP_PSPS
    63 0
    64 catdir.sas12
    65 $OUTDIR/catdir.sas12
    66 330
    67 340
    68 -8
    69 2
    70 1
    71 $OUTDIR
    72 0
    73 0
    74 1
    75 1
    76 2012-12-10 00:00:00.0
    77 3PI
    78 3PI
    79 1
    80 1
    81 1
    82 1
    83 0
    84 1
    85 y
    86 y
    87 EOF
    88 endif
    89 
    90 if ($initbatch) then
    91   ippjython loader.py -test $queuename init
     225  echo ""
     226  echo " ---- queue P2 batches ----"
     227
     228  echo "$queuename            " >  cambatch.dat # skychunk name
     229  echo "test_ds               " >> cambatch.dat # datastore_product
     230  echo "IPP_PSPS              " >> cambatch.dat # datastore_type
     231  echo "0                     " >> cambatch.dat # datastore_publish
     232  echo "catdir.sas.cam        " >> cambatch.dat # dvo_label
     233  echo "$OUTDIR/catdir.sas.cam" >> cambatch.dat # dvo_location
     234  echo "330                   " >> cambatch.dat # min_ra
     235  echo "340                   " >> cambatch.dat # max_ra
     236  echo "-10                   " >> cambatch.dat # min_dec
     237  echo "0                     " >> cambatch.dat # max_dec
     238  echo "1                     " >> cambatch.dat # box_size
     239  echo "$OUTDIR               " >> cambatch.dat # base_path
     240  echo "0                     " >> cambatch.dat # data_release
     241  echo "0                     " >> cambatch.dat # delete_local
     242  echo "1                     " >> cambatch.dat # delete_datastore
     243  echo "1                     " >> cambatch.dat # delete_dxlayer
     244  echo "2012-12-10 00:00:00.0 " >> cambatch.dat # epoch
     245  echo "3PI                   " >> cambatch.dat # survey
     246  echo "3PI                   " >> cambatch.dat # psps_survey
     247  echo "1                     " >> cambatch.dat # queue_P2
     248  echo "0                     " >> cambatch.dat # queue_ST
     249  echo "0                     " >> cambatch.dat # queue_OB
     250  echo "0                     " >> cambatch.dat # queue_DF
     251  echo "0                     " >> cambatch.dat # queue_DO
     252  echo "0                     " >> cambatch.dat # queue_FW
     253  echo "0                     " >> cambatch.dat # queue_FO
     254  echo "1                     " >> cambatch.dat # active
     255  echo "0                     " >> cambatch.dat # parallel
     256  echo "use_new               " >> cambatch.dat # P2_smf_version
     257  echo "any                   " >> cambatch.dat # ST_cmf_version
     258  echo "2000-01-01 00:00:00.0 " >> cambatch.dat # trange_start
     259  echo "2020-01-01 00:00:00.0 " >> cambatch.dat # trange_end
     260  cat cambatch.dat | ippjython queue.py -test edit
     261  if ($status) exit
    92262endif
    93263
    94264if ($cambatch) then
    95   ippjython loader.py -test $queuename once
     265  echo ""
     266  echo " ---- load P2 batches ----"
     267
     268  rm -rf $OUTDIR/P2
     269  ippjython loader.py -test $queuename once < /dev/null
     270  if ($status) exit
    96271endif
    97272
    98273# this code is sensitive to a previously existing database?
    99274if ($stackqueue) then
     275  echo ""
     276  echo " ---- queue ST batches ----"
     277
    100278  if ($stackqueuename == 0) then
    101279    set stackqueuename = $queuename\_stk
    102280  endif
    103   ippjython queue.py -test edit <<EOF
    104 $stackqueuename
    105 test_ds
    106 IPP_PSPS
    107 0
    108 catdir.sas12
    109 $OUTDIR/catdir.sas12
    110 330
    111 340
    112 -8
    113 2
    114 1
    115 $OUTDIR
    116 0
    117 0
    118 1
    119 1
    120 2012-12-10 00:00:00.0
    121 3PI
    122 3PI
    123 0
    124 1
    125 0
    126 1
    127 0
    128 1
    129 y
    130 y
    131 EOF
     281  echo "$stackqueuename       " >  stackbatch.dat # skychunk name
     282  echo "test_ds               " >> stackbatch.dat # datastore_product
     283  echo "IPP_PSPS              " >> stackbatch.dat # datastore_type
     284  echo "0                     " >> stackbatch.dat # datastore_publish
     285  echo "catdir.sas.cam        " >> stackbatch.dat # dvo_label
     286  echo "$OUTDIR/catdir.sas.cam" >> stackbatch.dat # dvo_location
     287  echo "332                   " >> stackbatch.dat # min_ra
     288  echo "335                   " >> stackbatch.dat # max_ra
     289  echo "-6                    " >> stackbatch.dat # min_dec
     290  echo "-4                    " >> stackbatch.dat # max_dec
     291  echo "1                     " >> stackbatch.dat # box_size
     292  echo "$OUTDIR               " >> stackbatch.dat # base_path
     293  echo "0                     " >> stackbatch.dat # data_release
     294  echo "0                     " >> stackbatch.dat # delete_local
     295  echo "1                     " >> stackbatch.dat # delete_datastore
     296  echo "1                     " >> stackbatch.dat # delete_dxlayer
     297  echo "2012-12-10 00:00:00.0 " >> stackbatch.dat # epoch
     298  echo "3PI                   " >> stackbatch.dat # survey
     299  echo "3PI                   " >> stackbatch.dat # psps_survey
     300  echo "0                     " >> stackbatch.dat # queue_P2
     301  echo "1                     " >> stackbatch.dat # queue_ST
     302  echo "0                     " >> stackbatch.dat # queue_OB
     303  echo "0                     " >> stackbatch.dat # queue_DF
     304  echo "0                     " >> stackbatch.dat # queue_DO
     305  echo "0                     " >> stackbatch.dat # queue_FW
     306  echo "0                     " >> stackbatch.dat # queue_FO
     307  echo "1                     " >> stackbatch.dat # active
     308  echo "0                     " >> stackbatch.dat # parallel
     309  echo "use_new               " >> stackbatch.dat # P2_smf_version
     310  echo "any                   " >> stackbatch.dat # ST_cmf_version
     311  echo "2000-01-01 00:00:00.0 " >> stackbatch.dat # trange_start
     312  echo "2020-01-01 00:00:00.0 " >> stackbatch.dat # trange_end
     313  cat stackbatch.dat | ippjython queue.py -test edit
     314  if ($status) exit
    132315endif
    133316
    134317if ($stackbatch) then
     318  echo ""
     319  echo " ---- load ST batches ----"
     320
    135321  if ($stackqueuename == 0) then
    136322    set stackqueuename = $queuename\_stk
    137323  endif
    138   ippjython loader.py -test $stackqueuename once
    139 endif
    140 
     324  rm -rf $OUTDIR/ST
     325  ippjython loader.py -test $stackqueuename once < /dev/null
     326  if ($status) exit
     327endif
     328
     329# this code is sensitive to a previously existing database?
     330if ($objectqueue) then
     331  echo ""
     332  echo " ---- queue OB batches ----"
     333
     334  if ($objectqueuename == 0) then
     335    set objectqueuename = $queuename\_obj
     336  endif
     337  echo "$objectqueuename       " >  objectbatch.dat # skychunk name
     338  echo "test_ds                " >> objectbatch.dat # datastore_product
     339  echo "IPP_PSPS               " >> objectbatch.dat # datastore_type
     340  echo "0                      " >> objectbatch.dat # datastore_publish
     341  echo "catdir.sas.cam         " >> objectbatch.dat # dvo_label
     342  echo "$OUTDIR/catdir.sas.cam " >> objectbatch.dat # dvo_location
     343  echo "330                    " >> objectbatch.dat # min_ra
     344  echo "340                    " >> objectbatch.dat # max_ra
     345  echo "-10                    " >> objectbatch.dat # min_dec
     346  echo "0                      " >> objectbatch.dat # max_dec
     347  echo "2                      " >> objectbatch.dat # box_size
     348  echo "$OUTDIR                " >> objectbatch.dat # base_path
     349  echo "0                      " >> objectbatch.dat # data_release
     350  echo "0                      " >> objectbatch.dat # delete_local
     351  echo "1                      " >> objectbatch.dat # delete_datastore
     352  echo "1                      " >> objectbatch.dat # delete_dxlayer
     353  echo "2012-12-10 00:00:00.0  " >> objectbatch.dat # epoch
     354  echo "3PI                    " >> objectbatch.dat # survey
     355  echo "3PI                    " >> objectbatch.dat # psps_survey
     356  echo "0                      " >> objectbatch.dat # queue_P2
     357  echo "0                      " >> objectbatch.dat # queue_ST
     358  echo "1                      " >> objectbatch.dat # queue_OB
     359  echo "0                      " >> objectbatch.dat # queue_DF
     360  echo "0                      " >> objectbatch.dat # queue_DO
     361  echo "0                      " >> objectbatch.dat # queue_FW
     362  echo "0                      " >> objectbatch.dat # queue_FO
     363  echo "1                      " >> objectbatch.dat # active
     364  echo "0                      " >> objectbatch.dat # parallel
     365  echo "use_new                " >> objectbatch.dat # P2_smf_version
     366  echo "any                    " >> objectbatch.dat # ST_cmf_version
     367  echo "2000-01-01 00:00:00.0  " >> objectbatch.dat # trange_start
     368  echo "2020-01-01 00:00:00.0  " >> objectbatch.dat # trange_end
     369  cat objectbatch.dat | ippjython queue.py -test edit once
     370  if ($status) exit
     371endif
     372
     373if ($objectbatch) then
     374  echo ""
     375  echo " ---- load OB batches ----"
     376
     377  if ($objectqueuename == 0) then
     378    set objectqueuename = $queuename\_obj
     379  endif
     380  rm -rf $OUTDIR/OB
     381
     382  ippjython loader.py -test $objectqueuename once < /dev/null
     383  if ($status) exit
     384endif
     385
Note: See TracChangeset for help on using the changeset viewer.