IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 37389


Ignore:
Timestamp:
Sep 12, 2014, 9:24:36 AM (12 years ago)
Author:
eugene
Message:

adding stellar params; associating image maps

Location:
branches/eam_branches/ipp-20140904/Ohana/src
Files:
2 added
6 edited

Legend:

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

    r37386 r37389  
    653653  Lensobj *lensobj;
    654654
     655  StarPar *starpar;
     656
    655657  int Nsecfilt;  /* number of secfilt entries for each average entry */
    656   off_t Naverage,   Nmeasure,   Nmissing,   Nlensing,      Nlensobj,      Nsecf_mem;  /* current number of each component in memory */
    657   off_t Naves_disk, Nmeas_disk, Nmiss_disk, Nlensing_disk, Nlensobj_disk, Nsecf_disk; /* current number of each component on disk */
    658   off_t Naves_off,  Nmeas_off,  Nmiss_off,  Nlensing_off,  Nlensobj_off,  Nsecf_off;  /* index of first loaded data value */
     658  off_t Naverage,   Nmeasure,   Nmissing,   Nlensing,      Nlensobj,      Nstarpar,      Nsecf_mem;  /* current number of each component in memory */
     659  off_t Naves_disk, Nmeas_disk, Nmiss_disk, Nlensing_disk, Nlensobj_disk, Nstarpar_disk, Nsecf_disk; /* current number of each component on disk */
     660  off_t Naves_off,  Nmeas_off,  Nmiss_off,  Nlensing_off,  Nlensobj_off,  Nstarpar_off,  Nsecf_off;  /* index of first loaded data value */
    659661
    660662  // note that we use these for the full-sky relphot analysis
     
    677679  struct Catalog *lensing_catalog;              /* lensing catalog data (split) */
    678680  struct Catalog *lensobj_catalog;              /* lensobj catalog data (split) */
     681  struct Catalog *starpar_catalog;              /* starpar catalog data (split) */
    679682
    680683  unsigned int objID;
     
    869872Lensing *FtableToLensing (FTable *ftable, off_t *Nlensing, char *format);
    870873Lensobj *FtableToLensobj (FTable *ftable, off_t *Nlensobj, char *format);
     874StarPar *FtableToStarPar (FTable *ftable, off_t *Nstarpar, char *format);
    871875int      FtableToImage   (FTable *ftable, Header *theader, char *format);
    872876
     
    876880int LensingToFtable (FTable *ftable, Lensing *lensing, off_t Nlensing, char format);
    877881int LensobjToFtable (FTable *ftable, Lensobj *lensobj, off_t Nlensobj, char format);
     882int StarParToFtable (FTable *ftable, StarPar *starpar, off_t Nstarpar, char format);
    878883int ImageToFtable (FTable *ftable, Header *theader, char format);
    879884int ImageToVtable (VTable *vtable, Header *theader, char format);
     
    10031008void dvo_lensobj_init (Lensobj *lensobj, int toZero);
    10041009
     1010void dvo_starpar_init (StarPar *starpar);
     1011
    10051012void InitRegionHosts (RegionHostInfo *hosts, int Nhosts, int NHOSTS);
    10061013void FreeRegionHosts (RegionHostInfo *hosts, int Nhosts);
  • branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapIO.c

    r37387 r37389  
    107107  ALLOCATE (table->map, AstromOffsetMap, Nmap);
    108108
    109   // find the max value of ID
     109  // find the max value of imageID
    110110  int MaxID = 0;
    111111  for (i = 0; i < Nmap; i++) {
    112     MaxID = MAX(map_disk[i].ID, MaxID);
     112    MaxID = MAX(map_disk[i].imageID, MaxID);
    113113  }
    114114  MaxID ++; // we want the outer bound, not the last value
     
    119119    table->IDtoSeq[i] = -1;
    120120  }
    121   table->MaxID = MaxID;
     121  table->MaxID = MaxID - 1;
    122122
    123123  // assign the ID values
    124124  for (i = 0; i < Nmap; i++) {
    125     int ID = map_disk[i].ID;
    126     myAssert (table->IDtoSeq[ID] == -1, "oops, duplicate map IDs");
     125    int ID = map_disk[i].imageID;
     126    myAssert (table->IDtoSeq[ID] == -1, "oops, duplicate image IDs");
    127127    table->IDtoSeq[ID] = i;
    128128  }
     
    162162
    163163  AstromOffsetMap_Disk_6x6 *map_disk = NULL;
    164   ALLOCATE (map_disk, AstromOffsetMap_Disk_6x6, Nmap);
     164  ALLOCATE (map_disk, AstromOffsetMap_Disk_6x6, table->Nmap);
    165165
    166166  // assign the map values (this allocates just the area needed for each image, not the
  • branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/AstromOffsetMapOps.c

    r37387 r37389  
    6565int AstromOffsetMapFit (AstromOffsetMap *map, float *x, float *y, float *f, int Npts, int xdir) {
    6666
    67   int i, ix, iy, jx, jy;
     67  int i, j, ix, iy, jx, jy;
    6868
    6969  // choose to map direction:
  • branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dvo_catalog.c

    r37356 r37389  
    437437
    438438// init all data, or just catalog data
     439void dvo_starpars_init (StarPars *starpars) {
     440  starpars->galLat = NAN;
     441  starpars->galLon = NAN;
     442  starpars->MKtype = NAN;
     443  starpars->Par    = NAN;
     444  starpars->dPar   = NAN;
     445  starpars->uRA    = NAN;
     446  starpars->uDEC   = NAN;
     447  starpars->averef = -1;
     448  starpars->objID  = -1;
     449  starpars->catID  = -1;
     450}
     451
     452// init all data, or just catalog data
    439453void dvo_catalog_init (Catalog *catalog, int complete) {
    440454
     
    462476  catalog[0].lensobj = NULL;
    463477
     478  catalog[0].starpar = NULL;
     479
    464480  catalog[0].averageT = NULL;
    465481  catalog[0].measureT = NULL;
     
    477493  catalog[0].Nlensobj = 0;
    478494
     495  catalog[0].Nstarpar = 0;
     496
    479497  catalog[0].Naves_disk = 0;
    480498  catalog[0].Nmeas_disk = 0;
     
    485503  catalog[0].Nlensobj_disk = 0;
    486504
     505  catalog[0].Nstarpar_disk = 0;
     506
    487507  catalog[0].Naves_off  = 0;
    488508  catalog[0].Nmeas_off  = 0;
     
    492512  catalog[0].Nlensing_off  = 0;
    493513  catalog[0].Nlensobj_off  = 0;
     514
     515  catalog[0].Nstarpar_off  = 0;
    494516
    495517  /* pointers to SPLIT data files */
     
    499521  catalog[0].lensing_catalog = NULL;
    500522  catalog[0].lensobj_catalog = NULL;
     523  catalog[0].starpar_catalog = NULL;
    501524
    502525  /* pointers for data manipulation */
     
    560583    if (catalog[0].lensing_catalog) dvo_catalog_unlock (catalog[0].lensing_catalog);
    561584    if (catalog[0].lensobj_catalog) dvo_catalog_unlock (catalog[0].lensobj_catalog);
     585    if (catalog[0].starpar_catalog) dvo_catalog_unlock (catalog[0].starpar_catalog);
    562586  }
    563587  return (1);
     
    835859      free (catalog[0].lensobj_catalog);
    836860    }
     861    if (catalog[0].starpar_catalog) {
     862      free (catalog[0].starpar_catalog[0].filename);
     863      dvo_catalog_free (catalog[0].starpar_catalog);
     864      free (catalog[0].starpar_catalog);
     865    }
    837866  }
    838867  dvo_catalog_free_data (catalog);
     
    873902    catalog[0].Nlensobj = 0;
    874903    catalog[0].lensobj = NULL;
     904  }
     905  if (catalog[0].starpar) {
     906    free (catalog[0].starpar);
     907    catalog[0].Nstarpar = 0;
     908    catalog[0].starpar = NULL;
    875909  }
    876910  if (catalog[0].nOwn_t)      { free (catalog[0].nOwn_t); catalog[0].nOwn_t = NULL; }
     
    9851019      }
    9861020    }
     1021    if (catalog[0].starpar_catalog != NULL) {
     1022      if (catalog[0].Nstarpar_disk == 0) {
     1023        // need to relock (and re-open) file for close elsewhere
     1024        status = dvo_catalog_lock (catalog[0].starpar_catalog, lockmode);
     1025      } else {
     1026        if (!dvo_catalog_backup (catalog[0].starpar_catalog, FALSE)) {
     1027          return FALSE;
     1028        }
     1029      }
     1030    }
    9871031  }
    9881032  return TRUE;
     
    10361080      }
    10371081    }
     1082    if ((catalog[0].starpar_catalog != NULL) && (catalog[0].Nstarpar_disk > 0)) {
     1083      if (!dvo_catalog_unlink_backup (catalog[0].starpar_catalog, FALSE)) {
     1084        return FALSE;
     1085      }
     1086    }
    10381087  }
    10391088  return TRUE;
  • branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dvo_catalog_create.c

    r37035 r37389  
    9595    free (file);
    9696
     97    /* define starpar catalog file */
     98    ALLOCATE (catalog[0].starpar_catalog, Catalog, 1);
     99    dvo_catalog_init (catalog[0].starpar_catalog, TRUE);
     100
     101    /* create basic data for starpar catalog file */
     102    gfits_create_header (&catalog[0].starpar_catalog[0].header);
     103    ALLOCATE (catalog[0].starpar_catalog[0].filename, char, length);
     104    sprintf (catalog[0].starpar_catalog[0].filename, "%s/%s.cpy", path, root);
     105    file = filebasename (catalog[0].starpar_catalog[0].filename);
     106    gfits_modify (&catalog[0].header, "STARPAR", "%s", 1, file);
     107    free (file);
     108
    97109    free (path);
    98110    free (root);
     
    117129    }
    118130    if (dvo_catalog_lock (catalog[0].lensobj_catalog, catalog[0].lockmode) != DVO_CAT_OPEN_EMPTY) {
     131      fprintf (stderr, "error with file lock\n");
     132      exit (2);
     133    }
     134    if (dvo_catalog_lock (catalog[0].starpar_catalog, catalog[0].lockmode) != DVO_CAT_OPEN_EMPTY) {
    119135      fprintf (stderr, "error with file lock\n");
    120136      exit (2);
     
    146162  ALLOCATE (catalog[0].lensing, Lensing, 1);
    147163  ALLOCATE (catalog[0].lensobj, Lensobj, 1);
     164  ALLOCATE (catalog[0].starpar, StarPar, 1);
    148165
    149166  /* setup secondary filters to match photcodes:
  • branches/eam_branches/ipp-20140904/Ohana/src/libdvo/src/dvo_catalog_split.c

    r37035 r37389  
    134134  if (!gfits_scan (&catalog[0].header, name,  "%s", 1, string)) {
    135135    free (path);
    136     // databases created prior to ~2014.07.01 did not have the LENSING or LENSOBJ paths in their headers.
     136    // databases created prior to ~2014.07.01 did not have the LENSING, LENSOBJ, STARPAR paths in their headers.
    137137    // in these cases, we do not try to lock or open the relevant file
    138138    if (!strcmp (name, "LENSING")) return (DVO_CAT_OPEN_EMPTY);
    139139    if (!strcmp (name, "LENSOBJ")) return (DVO_CAT_OPEN_EMPTY);
     140    if (!strcmp (name, "STARPAR")) return (DVO_CAT_OPEN_EMPTY);
    140141    return (DVO_CAT_OPEN_FAIL);
    141142  }
     
    182183  off_t Nlensing;
    183184  off_t Nlensobj;
     185  off_t Nstarpar;
    184186  off_t Nitems;
    185187  int status, Nsecfilt;
     
    196198
    197199  /* get the components from the header - these duplicate information in the split files (NAXIS2) */
    198   // NSTARS, NMEAS, NMISS are required; NLENSING, NLENSOBJ are not (0 if not found)
     200  // NSTARS, NMEAS, NMISS are required; NLENSING, NLENSOBJ, NSTARPAR are not (0 if not found)
    199201  if (!gfits_scan (&catalog[0].header, "NSTARS",   OFF_T_FMT, 1,  &Naverage)) return (FALSE);
    200202  if (!gfits_scan (&catalog[0].header, "NMEAS",    OFF_T_FMT, 1,  &Nmeasure)) return (FALSE);
     
    203205  if (!gfits_scan (&catalog[0].header, "NLENSING", OFF_T_FMT, 1,  &Nlensing)) Nlensing = 0;
    204206  if (!gfits_scan (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1,  &Nlensobj)) Nlensobj = 0;
     207  if (!gfits_scan (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1,  &Nstarpar)) Nstarpar = 0;
    205208
    206209  /* the OBJID is a counter that uniquely defines an average entry and never changes.  if
     
    223226  catalog[0].Nlensing_disk = Nlensing;
    224227  catalog[0].Nlensobj_disk = Nlensobj;
     228  catalog[0].Nstarpar_disk = Nstarpar;
    225229
    226230  /**  Nsecfilt is unusual: it does not list the number of data items in the table
     
    235239  catalog[0].lensing = NULL;
    236240  catalog[0].lensobj = NULL;
     241  catalog[0].starpar = NULL;
    237242
    238243  /*** Average Table ***/
     
    465470  gfits_free_header (&header);
    466471
     472  /*** Starpar Table ***/
     473  if (!(catalog[0].catflags & SKIP_STARPAR)) {
     474    // unless we specify 'skip', we still need to load the
     475    status = dvo_catalog_open_subcat (catalog, &catalog[0].starpar_catalog, ftable.header, "STARPAR", VERBOSE);
     476    if (status == DVO_CAT_OPEN_FAIL) {
     477      return (FALSE);
     478    }
     479    // the Starpar file need not exist, unless we expect data to exist
     480    if ((status == DVO_CAT_OPEN_EMPTY) && (catalog[0].Nstarpar_disk > 0)) {
     481      return (FALSE);
     482    }
     483  }
     484  if ((status != DVO_CAT_OPEN_EMPTY) && (catalog[0].catflags & LOAD_STARPAR)) {
     485    // only read the Starpar table if the file actually exists
     486    /* read Starpar table data */
     487    if (!gfits_fread_ftable_data (catalog[0].starpar_catalog[0].f, &ftable, FALSE)) {
     488      if (VERBOSE) fprintf (stderr, "can't read table starpar data\n");
     489      return (FALSE);
     490    }
     491    /* convert data format to internal : returns number of row read in Nstarpar */
     492    catalog[0].starpar = FtableToStarpar (&ftable, &Nstarpar, &catalog[0].catformat);
     493    if (Nstarpar != catalog[0].Nstarpar_disk) {
     494      fprintf (stderr, "Warning: mismatch between Nstarpar in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n",  Nstarpar,  catalog[0].Nstarpar_disk);
     495    }
     496    catalog[0].Nstarpar = catalog[0].Nstarpar_disk;
     497    catalog[0].Nstarpar_off = 0;
     498  } else {
     499    if (catalog[0].starpar_catalog) {
     500      gfits_free_header (&catalog[0].starpar_catalog[0].header);
     501    } else {
     502      ALLOCATE (catalog[0].starpar_catalog, Catalog, 1);
     503      dvo_catalog_init (catalog[0].starpar_catalog, TRUE);
     504    }
     505    gfits_create_header (&catalog[0].starpar_catalog[0].header);
     506    ALLOCATE (catalog[0].starpar, Starpar, 1);
     507    catalog[0].Nstarpar = 0;
     508    catalog[0].Nstarpar_off = catalog[0].Nstarpar_disk;
     509  }
     510  gfits_free_header (&header);
     511
    467512  return (TRUE);
    468513}
     
    473518
    474519  off_t Nbytes;
    475   off_t Naverage, Nexpect, Nitems, Nmeasure, Nmissing, Nlensing, Nlensobj;
     520  off_t Naverage, Nexpect, Nitems, Nmeasure, Nmissing, Nlensing, Nlensobj, Nstarpar;
    476521  Header header;
    477522  FTable ftable;
     
    675720  }
    676721
     722  // XXX check the open status of the catalog
     723  if (catalog[0].catflags & LOAD_STARPAR) {
     724
     725    Catalog *subcat = catalog[0].starpar_catalog;
     726
     727    /* move pointer past header -- must be already read (load_catalog) */
     728    Nbytes = subcat[0].header.datasize + gfits_data_size (&subcat[0].header);
     729    fseeko (subcat[0].f, Nbytes, SEEK_SET);
     730
     731    /* read Starpar table header */
     732    if (!gfits_fread_header (subcat[0].f, &header)) {
     733      if (VERBOSE) fprintf (stderr, "can't read table starpar header");
     734      return (FALSE);
     735    }
     736    /* read Starpar table data : format is irrelevant here */
     737    if (!gfits_fread_ftable_range (subcat[0].f, &ftable, start, Nrows)) {
     738      if (VERBOSE) fprintf (stderr, "can't read table starpar data");
     739      return (FALSE);
     740    }
     741
     742    /* convert data format to internal : returns number of row read in Nstarpar */
     743    catalog[0].starpar = FtableToStarpar (&ftable, &Nstarpar, &catalog[0].catformat);
     744    if (Nstarpar != Nrows) {
     745      // XXX this condition denotes the eof has been reached; not an error or a warning
     746      // fprintf (stderr, "Warning: mismatch between Nstarpar in PHU and Table headers ("OFF_T_FMT" vs "OFF_T_FMT")\n",  Nstarpar,  Nrows);
     747    }
     748    gfits_free_header (&header);
     749    catalog[0].Nstarpar = Nstarpar;
     750    catalog[0].Nstarpar_off = start;
     751  }
     752
    677753  return (TRUE);
    678754}
     
    686762  SecFilt *primary, *secfilt;
    687763  int Nsecfilt;
    688   off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new;
     764  off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new;
    689765  off_t first, start, Nrows;
    690766
     
    719795  Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off);
    720796  Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off);
     797  Nstarpar_disk_new = MAX (catalog[0].Nstarpar_disk, catalog[0].Nstarpar + catalog[0].Nstarpar_off);
    721798
    722799  /* make sure header is consistent with data */
     
    727804  gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1,  Nlensing_disk_new);
    728805  gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1,  Nlensobj_disk_new);
     806  gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1,  Nstarpar_disk_new);
    729807  gfits_modify_alt (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
    730808  gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
     
    893971    if (!dvo_catalog_save_subcat (catalog[0].lensobj_catalog, &ftable, start, Nrows, catalog[0].Nlensobj_disk, Nlensobj_disk_new)) {
    894972      fprintf (stderr, "trouble writing Lensobj table\n");
     973      goto failure;
     974    }
     975    gfits_free_header (&header);
     976    gfits_free_table (&ftable);
     977  }
     978
     979  /*** Lensobj Table ***/
     980  if ((catalog[0].catflags & LOAD_STARPAR) && (catalog[0].starpar != NULL)) {
     981
     982    first  = 0;                    // first row in memory to write
     983    start  = catalog[0].Nstarpar_off; // first disk row to write
     984    Nrows  = catalog[0].Nstarpar - first;
     985
     986    assert (Nrows >= 0);
     987    assert (first >= 0);
     988    assert (first <= catalog[0].Nstarpar);
     989    assert (catalog[0].Nstarpar_disk >= catalog[0].Nstarpar_off);
     990
     991    // convert to external table format (note that the block above does not damage or free catalog.average)
     992    if (!StarparToFtable (&ftable, &catalog[0].starpar[first], Nrows, catalog[0].catformat)) {
     993      fprintf (stderr, "trouble converting format\n");
     994      goto failure;
     995    }
     996
     997    // write out Starpar table
     998    if (!dvo_catalog_save_subcat (catalog[0].starpar_catalog, &ftable, start, Nrows, catalog[0].Nstarpar_disk, Nstarpar_disk_new)) {
     999      fprintf (stderr, "trouble writing Starpar table\n");
    8951000      goto failure;
    8961001    }
     
    9251030  SecFilt *primary, *secfilt;
    9261031  int Nsecfilt;
    927   off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new;
     1032  off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nstarpar_disk_new;
    9281033  off_t first, start, Nrows;
    9291034
     
    9561061  if (catalog[0].Nlensobj_off > 0) {
    9571062    fprintf (stderr, "ERROR: only partial catalog (Lensobj) was loaded\n");
     1063    goto failure;
     1064  }
     1065  if (catalog[0].Nstarpar_off > 0) {
     1066    fprintf (stderr, "ERROR: only partial catalog (Starpar) was loaded\n");
    9581067    goto failure;
    9591068  }
     
    9841093  Nlensing_disk_new = catalog[0].Nlensing;
    9851094  Nlensobj_disk_new = catalog[0].Nlensobj;
     1095  Nstarpar_disk_new = catalog[0].Nstarpar;
    9861096
    9871097  /* make sure header is consistent with data */
     
    9921102  gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1,  Nlensing_disk_new);
    9931103  gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1,  Nlensobj_disk_new);
     1104  gfits_modify (&catalog[0].header, "NSTARPAR", OFF_T_FMT, 1,  Nstarpar_disk_new);
    9941105  gfits_modify_alt (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
    9951106  gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
     
    11391250  /*** Lensobj Table ***/
    11401251  if ((catalog[0].catflags & LOAD_LENSOBJ) && (catalog[0].lensobj != NULL)) {
     1252
     1253    first  = 0;                    // first row in memory to write
     1254    start  = catalog[0].Nlensobj_off; // first disk row to write
     1255    Nrows  = catalog[0].Nlensobj - first;
     1256
     1257    assert (Nrows >= 0);
     1258    assert (first >= 0);
     1259    assert (first <= catalog[0].Nlensobj);
     1260    assert (catalog[0].Nlensobj_disk >= catalog[0].Nlensobj_off);
     1261
     1262    // convert to external table format
     1263    if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat)) {
     1264      fprintf (stderr, "trouble converting format\n");
     1265      goto failure;
     1266    }
     1267
     1268    // write out Lensobj table
     1269    if (!dvo_catalog_save_subcat (catalog[0].lensobj_catalog, &ftable, start, Nrows, catalog[0].Nlensobj_disk, Nlensobj_disk_new)) {
     1270      fprintf (stderr, "trouble writing Lensobj table\n");
     1271      goto failure;
     1272    }
     1273    gfits_free_header (&header);
     1274    gfits_free_table (&ftable);
     1275  }
     1276
     1277  /*** Starpar Table ***/
     1278  if ((catalog[0].catflags & LOAD_STARPAR) && (catalog[0].lensobj != NULL)) {
    11411279
    11421280    first  = 0;                    // first row in memory to write
     
    11891327  SecFilt *primary, *secfilt;
    11901328  int Nsecfilt;
    1191   off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new;
     1329  off_t Naves_disk_new, Nmeas_disk_new, Nmiss_disk_new, Nsecf_disk_new, Nlensing_disk_new, Nlensobj_disk_new, Nlensobj_disk_new;
    11921330  off_t first, start, Nrows;
    11931331
     
    12211359  Nlensing_disk_new = MAX (catalog[0].Nlensing_disk, catalog[0].Nlensing + catalog[0].Nlensing_off);
    12221360  Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off);
     1361  Nlensobj_disk_new = MAX (catalog[0].Nlensobj_disk, catalog[0].Nlensobj + catalog[0].Nlensobj_off);
    12231362
    12241363  /* make sure header is consistent with data */
     
    12291368  gfits_modify (&catalog[0].header, "NLENSING", OFF_T_FMT, 1,  Nlensing_disk_new);
    12301369  gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1,  Nlensobj_disk_new);
     1370  gfits_modify (&catalog[0].header, "NLENSOBJ", OFF_T_FMT, 1,  Nlensobj_disk_new);
    12311371  gfits_modify_alt (&catalog[0].header, "EXTEND",   "%t", 1, TRUE);
    12321372  gfits_modify (&catalog[0].header, "OBJID",    "%d", 1, catalog[0].objID);
     
    13711511    if (!dvo_catalog_save_subcat (catalog[0].lensing_catalog, &ftable, start, Nrows, catalog[0].Nlensing_disk, Nlensing_disk_new)) {
    13721512      fprintf (stderr, "trouble writing Lensing table\n");
     1513      goto failure;
     1514    }
     1515    gfits_free_header (&header);
     1516    gfits_free_table (&ftable);
     1517  }
     1518
     1519  /*** Lensobj Table ***/
     1520  if (catalog[0].lensobj != NULL) {
     1521
     1522    first  = catalog[0].Nlensobj_disk - catalog[0].Nlensobj_off;  // first row in memory to write
     1523    start  = catalog[0].Nlensobj_disk; // first disk row to write
     1524    Nrows  = catalog[0].Nlensobj - first;
     1525
     1526    assert (Nrows >= 0);
     1527    assert (first >= 0);
     1528    assert (first <= catalog[0].Nlensobj);
     1529    assert (catalog[0].Nlensobj_disk >= catalog[0].Nlensobj_off);
     1530
     1531    // convert to external table format
     1532    // XXX does catalog.lensobj have averef correctly set up?
     1533    if (!LensobjToFtable (&ftable, &catalog[0].lensobj[first], Nrows, catalog[0].catformat)) {
     1534      fprintf (stderr, "trouble converting format\n");
     1535      goto failure;
     1536    }
     1537
     1538    // write out Lensobj table
     1539    if (!dvo_catalog_save_subcat (catalog[0].lensobj_catalog, &ftable, start, Nrows, catalog[0].Nlensobj_disk, Nlensobj_disk_new)) {
     1540      fprintf (stderr, "trouble writing Lensobj table\n");
    13731541      goto failure;
    13741542    }
Note: See TracChangeset for help on using the changeset viewer.