IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 33649


Ignore:
Timestamp:
Apr 1, 2012, 2:28:17 PM (14 years ago)
Author:
eugene
Message:

new query fields (secfilt flags; mean airmass; mcal offset, photcode_klam, photcode_c); updates to the measure,average,secfilt bit flags (relphot & relastr); support for distributed hosts & flat-field corrections in dvo; support for PS1_V3 schema; remove strdup from code (break ohana memory management); better support for Average,Measure Tiny values (used by relphot and relastro)

Location:
trunk/Ohana/src/libdvo
Files:
30 edited
6 copied

Legend:

Unmodified
Added
Removed
  • trunk/Ohana/src/libdvo/Makefile

    r31636 r33649  
    3434$(DESTINC)/ps1_v1_defs.h \
    3535$(DESTINC)/ps1_v2_defs.h \
     36$(DESTINC)/ps1_v3_defs.h \
    3637$(DESTINC)/ps1_ref_defs.h
    3738
     
    4344$(SRC)/dvosorts.$(ARCH).o        \
    4445$(SRC)/dvo_photcode_ops.$(ARCH).o \
     46$(SRC)/dvo_photcode_utils.$(ARCH).o \
    4547$(SRC)/LoadPhotcodes.$(ARCH).o   \
    4648$(SRC)/LoadPhotcodesText.$(ARCH).o   \
     
    5153$(SRC)/mosaic_astrom.$(ARCH).o   \
    5254$(SRC)/fits_db.$(ARCH).o         \
     55$(SRC)/dvo_tiny_values.$(ARCH).o       \
    5356$(SRC)/dvo_image.$(ARCH).o       \
    5457$(SRC)/dvo_image_raw.$(ARCH).o   \
     
    6972$(SRC)/dvo_convert_PS1_V1.$(ARCH).o \
    7073$(SRC)/dvo_convert_PS1_V2.$(ARCH).o \
     74$(SRC)/dvo_convert_PS1_V3.$(ARCH).o \
    7175$(SRC)/dvo_convert_PS1_REF.$(ARCH).o \
     76$(SRC)/flatcorr_io.$(ARCH).o    \
    7277$(SRC)/skyregion_io.$(ARCH).o    \
    7378$(SRC)/skyregion_gsc.$(ARCH).o    \
     
    9499$(SRC)/match_image.$(ARCH).o            \
    95100$(SRC)/db_utils.$(ARCH).o               \
    96 $(SRC)/convert.$(ARCH).o
     101$(SRC)/convert.$(ARCH).o                \
     102$(SRC)/HostTable.$(ARCH).o
    97103
    98104
  • trunk/Ohana/src/libdvo/include/dvo.h

    r31663 r33649  
    2626  DVO_FORMAT_PS1_V1,
    2727  DVO_FORMAT_PS1_V2,
     28  DVO_FORMAT_PS1_V3,
    2829} DVOTableFormat;
    2930
     
    9596/* Image.code values -- these values are 32 bit (as of PS1_V1) */
    9697typedef enum {
    97   ID_IMAGE_NEW          = 0x00000000,  /* no calibrations yet attempted */
    98   ID_IMAGE_PHOTOM_NOCAL = 0x00000001,  /* user-set value used within relphot: ignore */
    99   ID_IMAGE_PHOTOM_POOR  = 0x00000002,  /* relphot says image is bad (dMcal > limit) */
    100   ID_IMAGE_PHOTOM_SKIP  = 0x00000004,  /* user-set value: assert that this image has bad photometry */
    101   ID_IMAGE_PHOTOM_FEW   = 0x00000008,  /* currently too few measurements for photometry */
    102   ID_IMAGE_ASTROM_NOCAL = 0x00000010,  /* user-set value used within relastro: ignore */
    103   ID_IMAGE_ASTROM_POOR  = 0x00000020,  /* relastro says image is bad (dR,dD > limit) */
    104   ID_IMAGE_ASTROM_FAIL  = 0x00000040,  /* relastro fit diverged, fit not applied */
    105   ID_IMAGE_ASTROM_SKIP  = 0x00000080,  /* user-set value: assert that this image has bad astrometry */
    106   ID_IMAGE_ASTROM_FEW   = 0x00000100,  /* currently too few measurements for astrometry */
     98  ID_IMAGE_NEW            = 0x00000000,  /* no calibrations yet attempted */
     99  ID_IMAGE_PHOTOM_NOCAL   = 0x00000001,  /* user-set value used within relphot: ignore */
     100  ID_IMAGE_PHOTOM_POOR    = 0x00000002,  /* relphot says image is bad (dMcal > limit) */
     101  ID_IMAGE_PHOTOM_SKIP    = 0x00000004,  /* user-set value: assert that this image has bad photometry */
     102  ID_IMAGE_PHOTOM_FEW     = 0x00000008,  /* currently too few measurements for photometry */
     103  ID_IMAGE_ASTROM_NOCAL   = 0x00000010,  /* user-set value used within relastro: ignore */
     104  ID_IMAGE_ASTROM_POOR    = 0x00000020,  /* relastro says image is bad (dR,dD > limit) */
     105  ID_IMAGE_ASTROM_FAIL    = 0x00000040,  /* relastro fit diverged, fit not applied */
     106  ID_IMAGE_ASTROM_SKIP    = 0x00000080,  /* user-set value: assert that this image has bad astrometry */
     107  ID_IMAGE_ASTROM_FEW     = 0x00000100,  /* currently too few measurements for astrometry */
     108  ID_IMAGE_PHOTOM_UBERCAL = 0x00000200,  /* externally-supplied photometry zero point from ubercal analysis */
    107109} DVOImageFlags;
    108110
    109111/* Measure.flags values -- these values are 32 bit (as of PS1_V1) */
    110112typedef enum {
    111   ID_MEAS_NOCAL        = 0x00000001,  // detection ignored for this analysis (photcode, time range) -- internal only
    112   ID_MEAS_POOR_PHOTOM  = 0x00000002,  // detection is photometry outlier                                                 
    113   ID_MEAS_SKIP_PHOTOM  = 0x00000004,  // detection was ignored for photometry measurement                                 
    114   ID_MEAS_AREA         = 0x00000008,  // detection near image edge                                                   
    115   ID_MEAS_POOR_ASTROM  = 0x00000010,  // detection is astrometry outlier                                                 
    116   ID_MEAS_SKIP_ASTROM  = 0x00000020,  // detection was ignored for astrometry measurement                                 
    117   ID_MEAS_USED_OBJ     = 0x00000040,  // detection was used during opdate objects                                   
    118   ID_MEAS_USED_CHIP    = 0x00000080,  // detection was used during update chips                                     
    119   ID_MEAS_BLEND_MEAS   = 0x00000100,  // detection is within radius of multiple objects                             
    120   ID_MEAS_BLEND_OBJ    = 0x00000200,  // multiple detections within radius of object                               
    121   ID_MEAS_UNDEF_3      = 0x00000400,  // unused                                                                     
    122   ID_MEAS_UNDEF_4      = 0x00000800,  // unused                                                                     
    123   ID_MEAS_BLEND_MEAS_X = 0x00001000,  // detection is within radius of multiple objects across catalogs             
    124   ID_MEAS_ARTIFACT     = 0x00002000,  // detection is thought to be non-astronomical                                 
    125   ID_MEAS_UNDEF_5      = 0x00004000,  // unused                                                                     
    126   ID_MEAS_UNDEF_6      = 0x00008000,  // unused                                                                     
     113  ID_MEAS_NOCAL          = 0x00000001,  // detection ignored for this analysis (photcode, time range) -- internal only
     114  ID_MEAS_POOR_PHOTOM    = 0x00000002,  // detection is photometry outlier                                               
     115  ID_MEAS_SKIP_PHOTOM    = 0x00000004,  // detection was ignored for photometry measurement                               
     116  ID_MEAS_AREA           = 0x00000008,  // detection near image edge                                                 
     117  ID_MEAS_POOR_ASTROM    = 0x00000010,  // detection is astrometry outlier                                               
     118  ID_MEAS_SKIP_ASTROM    = 0x00000020,  // detection was ignored for astrometry measurement                               
     119  ID_MEAS_USED_OBJ       = 0x00000040,  // detection was used during update objects 
     120  ID_MEAS_USED_CHIP      = 0x00000080,  // detection was used during update chips (XXX this probably does not make it into the db)
     121  ID_MEAS_BLEND_MEAS     = 0x00000100,  // detection is within radius of multiple objects
     122  ID_MEAS_BLEND_OBJ      = 0x00000200,  // multiple detections within radius of object
     123  ID_MEAS_UNDEF_3        = 0x00000400,  // unused
     124  ID_MEAS_UNDEF_4        = 0x00000800,  // unused
     125  ID_MEAS_BLEND_MEAS_X   = 0x00001000,  // detection is within radius of multiple objects across catalogs                   
     126  ID_MEAS_ARTIFACT       = 0x00002000,  // detection is thought to be non-astronomical                               
     127  ID_MEAS_UNDEF_5        = 0x00004000,  // unused
     128  ID_MEAS_PHOTOM_UBERCAL = 0x00008000,  // externally-supplied zero point from ubercal analysis
    127129} DVOMeasureFlags;
    128130
     
    141143*/
    142144
    143 /* Average.code values -- these values are 32 bit (as of PS1_V1) */
     145/* Average.flags values -- these values are 32 bit (as of PS1_V1) */
    144146typedef enum {
    145147  ID_STAR_FEW     = 0x00000001, // used within relphot: skip star
     
    168170} DVOAverageFlags;
    169171
     172/* Secfilt.flags values -- these values are 32 bit (as of PS1_V1) */
     173typedef enum {
     174  ID_SECF_STAR_FEW    = 0x00000001, // used within relphot: skip star
     175  ID_SECF_STAR_POOR   = 0x00000002, // used within relphot: skip star
     176  ID_SECF_USE_SYNTH   = 0x00000004, // synthetic photometry used in average measurement
     177  ID_SECF_USE_UBERCAL = 0x00000008, // synthetic photometry used in average measurement
     178  ID_PHOTOM_PASS_0    = 0x00000100, // average magnitude calculated in 0th pass
     179  ID_PHOTOM_PASS_1    = 0x00000200, // average magnitude calculated in 1th pass
     180  ID_PHOTOM_PASS_2    = 0x00000400, // average magnitude calculated in 2th pass
     181  ID_PHOTOM_PASS_3    = 0x00000800, // average magnitude calculated in 3th pass
     182  ID_PHOTOM_PASS_4    = 0x00001000, // average magnitude calculated in 4th pass
     183  ID_SECF_OBJ_EXT     = 0x01000000, // extended in this band
     184} DVOSecfiltFlags;
     185
    170186/*** general dvo structures (internal use only / not IO) ***/
    171187
     
    196212  char **filename;
    197213  SkyRegion *regions;
     214  char hosts[80];
    198215} SkyTable;
    199216
     
    203220  char **filename;
    204221  SkyRegion **regions;
     222  char hosts[80];
    205223} SkyList;
     224
     225typedef struct {
     226  off_t Nimage;
     227  FlatCorrectionImage *image;
     228  off_t Ncorr;
     229  int *IDtoSeq;
     230  FlatCorrection *corr;
     231  float ***offset; // the correction images represented as a set of arrays (same sequence as *image)
     232  int Nseason;
     233  e_time *tstart;
     234  e_time *tstop;
     235} FlatCorrectionTable;
     236
     237/* definitions for parallel dvo host information
     238   XXX : need better names (safer namespace)
     239 */
     240
     241typedef enum {
     242  DATA_ON_TGT  = 0x01,
     243  DATA_ON_BCK  = 0x02,
     244  DATA_USE_BCK = 0x04,
     245
     246  DATA_COPY_FAILURE = 0x80,
     247} SkyTableDataFlags;
     248
     249typedef enum {
     250  HOST_STDIN = 0,
     251  HOST_STDOUT = 1,
     252  HOST_STDERR = 2,
     253} HostInfoIOfd;
     254
     255typedef struct {
     256  char *hostname;             // name of remote machine
     257  char *pathname;             // name of directory for this machine's data
     258  char *results;              // name of file machine's result data
     259  int hostID;                 // remove machine ID in SkyTable
     260  int stdio[3];               // fd's for communication with the remote host
     261  int pid;                    // remote process ID
     262  int status;                 // job exit status
     263  IOBuffer stdout;
     264  IOBuffer stderr;
     265} HostInfo;
     266
     267typedef struct {
     268  int Nhosts;
     269  HostInfo *hosts;
     270  unsigned short *index;
     271} HostTable;
    206272
    207273// special-case function:
     
    218284} PhotCodeData;
    219285
     286typedef enum {
     287  DVO_TV_MEASURE = 0x01,
     288  DVO_TV_AVERAGE = 0x02,
     289} DVOTinyValueMode;
     290
     291// XXX DROP? // a reduced-subset structure for relastro
     292// XXX DROP? typedef struct {
     293// XXX DROP?   double         R;
     294// XXX DROP?   double         D;
     295// XXX DROP?   unsigned short Nmeasure;
     296// XXX DROP?   int            measureOffset;
     297// XXX DROP?   uint32_t       flags;
     298// XXX DROP?   int            catID;
     299// XXX DROP? } AverageTinyAstro;
     300
    220301// a reduced-subset structure for relphot
    221302typedef struct {
     
    225306  int            measureOffset;
    226307  uint32_t       flags;
     308  int            catID;
    227309} AverageTiny;
    228310
    229 // a reduced-subset structure for relphot
     311// a reduced-subset structure for relphot & relastro
    230312typedef struct {
    231313  float          dR;
     
    242324  unsigned int   imageID;
    243325  unsigned int   dbFlags;
     326  unsigned int   photFlags;
     327  int            catID; // unsigned int?
    244328  unsigned short photcode;
     329  short          dXccd;
     330  short          dYccd;
     331  short          dRsys;
    245332} MeasureTiny;
    246333
     
    383470int PhotColorTiny (AverageTiny *average, SecFilt *secfilt, MeasureTiny *measure, int c1, int c2, double *color);
    384471
    385 
    386472PhotCodeData *GetPhotcodeTable (void);
    387473void SetPhotcodeTable (PhotCodeData *);
    388474
    389475int *GetSecFiltMap(PhotCodeData *ouput, PhotCodeData* input);
     476PhotCode **ParsePhotcodeList (char *rawlist, int *nphotcodes, int needAve);
    390477
    391478int LoadPhotcodes (char *catdir_file, char *master_file, int readwrite);
     
    450537int WriteRawSecFilt (FILE *f, SecFilt *secfilt, off_t Nsecfilt, char format);
    451538
     539DVOTableFormat FtableGetFormat (FTable *ftable);
     540
    452541Average *FtableToAverage (FTable *ftable, off_t *Naverage, char *format, SecFilt **primary);
    453542Measure *FtableToMeasure (FTable *ftable, off_t *Nmeasure, char *format);
     
    470559# include "ps1_v1_defs.h"
    471560# include "ps1_v2_defs.h"
     561# include "ps1_v3_defs.h"
    472562# include "ps1_ref_defs.h"
    473563
     
    484574void dvo_image_create (FITS_DB *db, double ZeroPoint);
    485575
     576/* flatcorr APIs */
     577FlatCorrectionTable *FlatCorrectionLoad (char *filename, int VERBOSE);
     578int FlatCorrectionInternal(FlatCorrectionTable *flatcorrTable);
     579int FlatCorrectionSave (FlatCorrectionTable *flatcorrTable, char *filename);
     580float FlatCorrectionOffset (FlatCorrectionTable *flatcorr, int ID, int X, int Y);
     581
    486582/* skyregion APIs */
    487583int        SkyTableSave            PROTO((SkyTable *table, char *filename));
    488584SkyTable  *SkyTableLoad            PROTO((char *filename, int VERBOSE));
     585char      *SkyTableFilename        PROTO((char *catdir));
    489586SkyTable  *SkyTableFromGSC         PROTO((char *filename, int depth, int VERBOSE));
    490587SkyTable  *SkyTableLoadOptimal     PROTO((char *catdir, char *SKYFILE, char *GSCFILE, int readwrite, int depth, int VERBOSE));
     
    528625#endif
    529626
    530 # endif
     627// functions for parallel DVO
     628HostTable    *HostTableLoad (char *catdir, char *rootname);
     629int HostTableWaitJobs (HostTable *table, char *file, int lineno);
     630int HostTableWaitJobsGetIO (HostTable *table, char *file, int lineno, int VERBOSE);
     631int HostTableTestHost (SkyRegion *region, int hostID);
     632
     633// functions to support tiny versions of Average and Measure
     634void CopyAverageToTiny (AverageTiny *averageT, Average *average);
     635void CopyMeasureToTiny (MeasureTiny *measureT, Measure *measure);
     636int populate_tiny_values (Catalog *catalog, DVOTinyValueMode mode);
     637int free_tiny_values (Catalog *catalog);
     638
     639# endif // DVO_H
     640
  • trunk/Ohana/src/libdvo/include/dvodb.h

    r31647 r33649  
    11# ifndef DVODB_H
    22# define DVODB_H
     3
     4# define MEASURE_HAS_XCCD 1
    35
    46typedef enum {
     
    7476      MEAS_NPOS,
    7577      MEAS_OBJ_FLAGS,
     78      MEAS_SECFILT_FLAGS,
    7679      MEAS_MAG,
    7780      MEAS_MINST,
     
    8285      MEAS_EXPTIME,
    8386      MEAS_AIRMASS,
     87      MEAS_MEAN_AIRMASS,
    8488      MEAS_ALT,
    8589      MEAS_AZ,
    8690      MEAS_PHOTCODE,
    8791      MEAS_PHOTCODE_EQUIV,
     92      MEAS_PHOTCODE_KLAM,
     93      MEAS_PHOTCODE_C,
    8894      MEAS_TIME,
    8995      MEAS_FWHM,
     
    120126      MEAS_EXT_NSIGMA,
    121127      MEAS_EXTERN_ID,
     128      MEAS_MCAL_OFFSET,
     129      MEAS_FLAT,
    122130};
    123131
  • trunk/Ohana/src/libdvo/src/LoadImages.c

    r31635 r33649  
    7373    cacheNimage = *Nimage;
    7474    imageCache = image;
    75     lastFilename = strdup(filename);
     75    lastFilename = strcreate(filename);
    7676    lastModified = getLastModified(filename);
    7777  }
  • trunk/Ohana/src/libdvo/src/LoadPhotcodesFITS.c

    r29001 r33649  
    4141  gfits_scan (&db.theader, "EXTNAME", "%s", 1, extname);
    4242
    43   if (!strcmp (extname, "DVO_PHOTCODE")) {
    44     PhotCode_Elixir *photcode_elixir = gfits_table_get_PhotCode_Elixir (&db.ftable, &Ncode, &db.swapped);
    45     if (!photcode_elixir) {
    46       fprintf (stderr, "ERROR: failed to read photcodes\n");
    47       exit (2);
    48     }
    49     photcode = PhotCode_Elixir_To_Internal (photcode_elixir, Ncode);
    50     free (photcode_elixir);
    51   }
     43# define CONVERT_FORMAT(NAME, FORMAT)                                   \
     44  if (!strcmp (extname, NAME)) {                                        \
     45    PhotCode_##FORMAT *photcode_input = gfits_table_get_PhotCode_##FORMAT (&db.ftable, &Ncode, &db.swapped); \
     46    if (!photcode_input) {                                                      \
     47      fprintf (stderr, "ERROR: failed to read photcodes in LoadPhotcodesFITS.c\n");             \
     48      fprintf (stderr, "file is either corrupted or this is a programming error\n");            \
     49      fprintf (stderr, "exiting to avoid damaging dvo db\n");           \
     50      exit (2);                                                         \
     51    }                                                                   \
     52    photcode = PhotCode_##FORMAT##_To_Internal (photcode_input, Ncode); \
     53    free (photcode_input);                                              \
     54  }
    5255
    53   if (!strcmp (extname, "DVO_PHOTCODE_ELIXIR")) {
    54     PhotCode_Elixir *photcode_elixir = gfits_table_get_PhotCode_Elixir (&db.ftable, &Ncode, &db.swapped);
    55     if (!photcode_elixir) {
    56       fprintf (stderr, "ERROR: failed to read photcodes\n");
    57       exit (2);
    58     }
    59     photcode = PhotCode_Elixir_To_Internal (photcode_elixir, Ncode);
    60     free (photcode_elixir);
    61   }
    62 
    63   if (!strcmp (extname, "DVO_PHOTCODE_PS1_DEV_1")) {
    64     PhotCode_PS1_DEV_1 *photcode_ps1_dev_1 = gfits_table_get_PhotCode_PS1_DEV_1 (&db.ftable, &Ncode, &db.swapped);
    65     if (!photcode_ps1_dev_1) {
    66       fprintf (stderr, "ERROR: failed to read photcodes\n");
    67       exit (2);
    68     }
    69     photcode = PhotCode_PS1_DEV_1_To_Internal (photcode_ps1_dev_1, Ncode);
    70     free (photcode_ps1_dev_1);
    71   }
    72 
    73   if (!strcmp (extname, "DVO_PHOTCODE_PS1_DEV_2")) {
    74     PhotCode_PS1_DEV_2 *photcode_ps1_dev_2 = gfits_table_get_PhotCode_PS1_DEV_2 (&db.ftable, &Ncode, &db.swapped);
    75     if (!photcode_ps1_dev_2) {
    76       fprintf (stderr, "ERROR: failed to read photcodes\n");
    77       exit (2);
    78     }
    79     photcode = PhotCode_PS1_DEV_2_To_Internal (photcode_ps1_dev_2, Ncode);
    80     free (photcode_ps1_dev_2);
    81   }
    82 
    83   if (!strcmp (extname, "DVO_PHOTCODE_PS1_DEV_3")) {
    84     PhotCode_PS1_DEV_3 *photcode_ps1_dev_3 = gfits_table_get_PhotCode_PS1_DEV_3 (&db.ftable, &Ncode, &db.swapped);
    85     if (!photcode_ps1_dev_3) {
    86       fprintf (stderr, "ERROR: failed to read photcodes\n");
    87       exit (2);
    88     }
    89     photcode = PhotCode_PS1_DEV_3_To_Internal (photcode_ps1_dev_3, Ncode);
    90     free (photcode_ps1_dev_3);
    91   }
    92 
    93   if (!strcmp (extname, "DVO_PHOTCODE_PS1_V1")) {
    94     PhotCode_PS1_V1 *photcode_ps1_v1 = gfits_table_get_PhotCode_PS1_V1 (&db.ftable, &Ncode, &db.swapped);
    95     if (!photcode_ps1_v1) {
    96       fprintf (stderr, "ERROR: failed to read photcodes\n");
    97       exit (2);
    98     }
    99     photcode = PhotCode_PS1_V1_To_Internal (photcode_ps1_v1, Ncode);
    100     free (photcode_ps1_v1);
    101   }
    102 
    103   if (!strcmp (extname, "DVO_PHOTCODE_PS1_V2")) {
    104     PhotCode_PS1_V2 *photcode_ps1_v2 = gfits_table_get_PhotCode_PS1_V2 (&db.ftable, &Ncode, &db.swapped);
    105     if (!photcode_ps1_v2) {
    106       fprintf (stderr, "ERROR: failed to read photcodes\n");
    107       exit (2);
    108     }
    109     photcode = PhotCode_PS1_V2_To_Internal (photcode_ps1_v2, Ncode);
    110     free (photcode_ps1_v2);
    111   }
    112 
    113   if (!strcmp (extname, "DVO_PHOTCODE_PS1_REF")) {
    114     PhotCode_PS1_REF *photcode_ps1_ref = gfits_table_get_PhotCode_PS1_REF (&db.ftable, &Ncode, &db.swapped);
    115     if (!photcode_ps1_ref) {
    116       fprintf (stderr, "ERROR: failed to read photcodes\n");
    117       exit (2);
    118     }
    119     photcode = PhotCode_PS1_REF_To_Internal (photcode_ps1_ref, Ncode);
    120     free (photcode_ps1_ref);
    121   }
     56  CONVERT_FORMAT("DVO_PHOTCODE",           Elixir);
     57  CONVERT_FORMAT("DVO_PHOTCODE_ELIXIR",    Elixir);
     58  CONVERT_FORMAT("DVO_PHOTCODE_PS1_DEV_1", PS1_DEV_1);
     59  CONVERT_FORMAT("DVO_PHOTCODE_PS1_DEV_2", PS1_DEV_2);
     60  CONVERT_FORMAT("DVO_PHOTCODE_PS1_DEV_3", PS1_DEV_3);
     61  CONVERT_FORMAT("DVO_PHOTCODE_PS1_REF",   PS1_REF);
     62  CONVERT_FORMAT("DVO_PHOTCODE_PS1_V1",    PS1_V1);
     63  CONVERT_FORMAT("DVO_PHOTCODE_PS1_V2",    PS1_V2);
     64  CONVERT_FORMAT("DVO_PHOTCODE_PS1_V3",    PS1_V3);
    12265
    12366  table = GetPhotcodeTable ();
  • trunk/Ohana/src/libdvo/src/SavePhotcodesFITS.c

    r28246 r33649  
    2929  // for the moment, we simply support the latest photcode format for output
    3030  // XXX update this as needed as new formats are defined
    31   PhotCode_PS1_V2 *photcode_output = PhotCode_Internal_To_PS1_V2 (table[0].code, table[0].Ncode);
     31  PhotCode_PS1_V3 *photcode_output = PhotCode_Internal_To_PS1_V3 (table[0].code, table[0].Ncode);
    3232
    3333  /* convert FITS format data to internal format (byteswaps & EXTNAME) */
    3434  if (!gfits_db_create (&db)) return (FALSE);
    35   if (!gfits_table_set_PhotCode_PS1_V2 (&db.ftable, photcode_output, table[0].Ncode)) return (FALSE);
     35  if (!gfits_table_set_PhotCode_PS1_V3 (&db.ftable, photcode_output, table[0].Ncode)) return (FALSE);
    3636  if (!gfits_db_save (&db)) return (FALSE);
    3737  if (!gfits_db_close (&db)) return (FALSE);
  • trunk/Ohana/src/libdvo/src/dbExtractAverages.c

    r31635 r33649  
    208208            }
    209209          } else {
    210             value.Int = 0;
     210            Nsec = GetPhotcodeNsec (field->photcode->code);
     211            if (Nsec == -1) break;
     212            value.Int = secfilt[Nsec].flags;
    211213          }
    212214          break;
  • trunk/Ohana/src/libdvo/src/dbExtractMeasures.c

    r32695 r33649  
    277277      value.Int = average[0].flags;
    278278      break;
     279    case MEAS_SECFILT_FLAGS: /* OK */
     280      equiv = GetPhotcodeEquivbyCode (measure[0].photcode);
     281      Nsec = GetPhotcodeNsec (equiv->code);
     282      if (Nsec == -1) break;
     283      value.Int = secfilt[Nsec].flags;
     284      break;
     285
    279286    // note that these represent the ra displacement relative to the average, not
    280287    // the error.
     
    302309      value.Flt = measure[0].airmass;
    303310      break;
     311    case MEAS_MEAN_AIRMASS: /* OK */
     312      {
     313        Image *image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     314        if (image == NULL) break;
     315        value.Flt = image[0].secz;
     316        break;
     317      }
    304318    case MEAS_AZ: /* OK */
    305319      value.Flt = measure[0].az;
     
    317331      value.Int = measure[0].photcode;
    318332      break;
     333    case MEAS_PHOTCODE_KLAM: /* OK */
     334      {
     335        PhotCode *code = GetPhotcodebyCode (measure[0].photcode);
     336        if (!code) break;
     337        value.Flt = code->K;
     338        break;
     339      }
     340    case MEAS_PHOTCODE_C: /* OK */
     341      {
     342        PhotCode *code = GetPhotcodebyCode (measure[0].photcode);
     343        if (!code) break;
     344        value.Flt = code->C;
     345        break;
     346      }
    319347    case MEAS_TIME: /* OK */
    320348      value.Flt = TimeValue (measure[0].t, TimeReference, TimeFormat);
     
    351379      break;
    352380    case MEAS_XCCD: /* OK */
    353 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */     
    354 # if 1
     381# if MEASURE_HAS_XCCD
    355382      value.Flt = measure[0].Xccd;
    356383# else
    357384      {
     385        // I'm keeping this code because it gives a way of handing dvo dbs that don't have
     386        // measure.xccd if we need it
    358387        Image *image;
    359388        ra  = average[0].R - measure[0].dR / 3600.0;
     
    367396      break;
    368397    case MEAS_YCCD: /* OK */
    369 /* I need to perform this conversion for ELIXIR and LONEOS formats on load */     
    370 # if 1
     398# if MEASURE_HAS_XCCD
    371399      value.Flt = measure[0].Yccd;
    372400# else
     
    456484      break;
    457485
     486    case MEAS_MCAL_OFFSET: /* OK */
     487      value.Flt = measure[0].Mcal;
     488      break;
     489
     490    case MEAS_FLAT: /* OK */
     491      // flat = measure.Mcal - image.Mcal
     492      {
     493        Image *image;
     494        image = MatchImageDVO (measure[0].t, measure[0].photcode, measure[0].imageID);
     495        if (image == NULL) break;
     496        value.Flt = measure[0].Mcal - image[0].Mcal;
     497      }
     498      break;
     499
    458500      // add the star/galaxy sep --
    459501  }
  • trunk/Ohana/src/libdvo/src/dbFields.c

    r31635 r33649  
    4242  if (!strcasecmp (string, "aveerr"))    return (MAG_AVE_ERR);
    4343  if (!strcasecmp (string, "photflags")) return (MAG_PHOT_FLAGS);
     44  if (!strcasecmp (string, "flags"))     return (MAG_PHOT_FLAGS);
    4445  if (!strcasecmp (string, "chisq"))     return (MAG_CHISQ);
    4546  if (!strcasecmp (string, "ncode"))     return (MAG_NCODE);
     
    169170  if (!strcasecmp (fieldName, "OBJFLAGS"))       ESCAPE (MEAS_OBJ_FLAGS,      MAG_NONE, OPIHI_INT);
    170171  if (!strcasecmp (fieldName, "OBJ_FLAGS"))      ESCAPE (MEAS_OBJ_FLAGS,      MAG_NONE, OPIHI_INT);
     172  if (!strcasecmp (fieldName, "OBJ_PHOT_FLAGS")) ESCAPE (MEAS_SECFILT_FLAGS,      MAG_NONE, OPIHI_INT);
     173  if (!strcasecmp (fieldName, "SECFLAGS"))       ESCAPE (MEAS_SECFILT_FLAGS,      MAG_NONE, OPIHI_INT);
     174  if (!strcasecmp (fieldName, "SEC_FLAGS"))      ESCAPE (MEAS_SECFILT_FLAGS,      MAG_NONE, OPIHI_INT);
     175  if (!strcasecmp (fieldName, "SECFILT_FLAGS"))  ESCAPE (MEAS_SECFILT_FLAGS,      MAG_NONE, OPIHI_INT);
    171176  if (!strcasecmp (fieldName, "DB_FLAGS"))       ESCAPE (MEAS_DB_FLAGS,       MAG_NONE, OPIHI_INT);
    172177  if (!strcasecmp (fieldName, "PHOT_FLAGS"))     ESCAPE (MEAS_PHOT_FLAGS,     MAG_NONE, OPIHI_INT);
     
    174179  if (!strcasecmp (fieldName, "PHOTFLAGS"))      ESCAPE (MEAS_PHOT_FLAGS,     MAG_NONE, OPIHI_INT);
    175180  if (!strcasecmp (fieldName, "AIRMASS"))        ESCAPE (MEAS_AIRMASS,        MAG_NONE, OPIHI_FLT);
     181  if (!strcasecmp (fieldName, "MEAN_AIRMASS"))   ESCAPE (MEAS_MEAN_AIRMASS,   MAG_NONE, OPIHI_FLT);
    176182  if (!strcasecmp (fieldName, "ALT"))            ESCAPE (MEAS_ALT,            MAG_NONE, OPIHI_FLT);
    177183  if (!strcasecmp (fieldName, "AZ"))             ESCAPE (MEAS_AZ,             MAG_NONE, OPIHI_FLT);
    178184  if (!strcasecmp (fieldName, "EXPTIME"))        ESCAPE (MEAS_EXPTIME,        MAG_NONE, OPIHI_FLT);
    179185  if (!strcasecmp (fieldName, "PHOTCODE"))       ESCAPE (MEAS_PHOTCODE,       MAG_NONE, OPIHI_INT);
     186  if (!strcasecmp (fieldName, "PHOTCODE:KLAM"))  ESCAPE (MEAS_PHOTCODE_KLAM,  MAG_NONE, OPIHI_FLT);
     187  if (!strcasecmp (fieldName, "PHOTCODE:C"))     ESCAPE (MEAS_PHOTCODE_C,     MAG_NONE, OPIHI_FLT);
    180188  if (!strcasecmp (fieldName, "PHOTCODE:EQUIV")) ESCAPE (MEAS_PHOTCODE_EQUIV, MAG_NONE, OPIHI_INT);
    181189  if (!strcasecmp (fieldName, "TIME"))           ESCAPE (MEAS_TIME,           MAG_NONE, OPIHI_FLT);
     
    215223  if (!strcasecmp (fieldName, "SKY_ERR"))        ESCAPE (MEAS_dSKY,           MAG_NONE, OPIHI_FLT);
    216224  if (!strcasecmp (fieldName, "externID"))       ESCAPE (MEAS_EXTERN_ID,      MAG_NONE, OPIHI_INT);
     225  if (!strcasecmp (fieldName, "MCAL_OFFSET"))    ESCAPE (MEAS_MCAL_OFFSET,    MAG_NONE, OPIHI_FLT);
     226  if (!strcasecmp (fieldName, "FLAT"))           ESCAPE (MEAS_FLAT,           MAG_NONE, OPIHI_FLT);
    217227
    218228  // for words that don't parse, try a photcode
     
    286296  if (!strcasecmp (fieldName, "dPAR"))      ESCAPE (AVE_PAR_ERR,   MAG_NONE, OPIHI_FLT);
    287297  if (!strcasecmp (fieldName, "ChiSqPos"))  ESCAPE (AVE_CHISQ_POS, MAG_NONE, OPIHI_FLT);
    288   if (!strcasecmp (fieldName, "ChiSqPM"))   ESCAPE (AVE_CHISQ_PM, MAG_NONE, OPIHI_FLT);
     298  if (!strcasecmp (fieldName, "ChiSqPM"))   ESCAPE (AVE_CHISQ_PM,  MAG_NONE, OPIHI_FLT);
    289299  if (!strcasecmp (fieldName, "ChiSqPar"))  ESCAPE (AVE_CHISQ_PAR, MAG_NONE, OPIHI_FLT);
    290300  if (!strcasecmp (fieldName, "Tmean"))     ESCAPE (AVE_TMEAN,     MAG_NONE, OPIHI_FLT);
  • trunk/Ohana/src/libdvo/src/dvo_catalog.c

    r31663 r33649  
    5454  if (!strcasecmp (catformat, "PS1_V1"))          return (DVO_FORMAT_PS1_V1);
    5555  if (!strcasecmp (catformat, "PS1_V2"))          return (DVO_FORMAT_PS1_V2);
     56  if (!strcasecmp (catformat, "PS1_V3"))          return (DVO_FORMAT_PS1_V3);
    5657  if (!strcasecmp (catformat, "PS1_REF"))         return (DVO_FORMAT_PS1_REF);
    5758  return (DVO_FORMAT_UNDEF);
     
    250251
    251252  dvo_catalog_init (catalog, FALSE);
     253
     254  // reset the file pointer in case we've already read some data
     255  fseeko (catalog[0].f, 0, SEEK_SET);
    252256
    253257  // load the main catalog header, determine characteristics
  • trunk/Ohana/src/libdvo/src/dvo_catalog_mef.c

    r29938 r33649  
    33int dvo_catalog_load_mef (Catalog *catalog, int VERBOSE) {
    44 
     5  off_t Nbytes;
     6  off_t Naverage;
     7  off_t Nmeasure;
     8  off_t Nmissing;
     9  off_t Nitems, Nexpect;
    510  int Nsecfilt;
    6   off_t Nitems, Nbytes, Nexpect, Naverage, Nmeasure, Nmissing;
    7   FILE *f;
    811
    912  Header header;
    10   Matrix matrix;
    1113  FTable ftable;
    12   SecFilt *primary;
    13 
    14   f = catalog[0].f;
     14
     15  SecFilt *primary = NULL;
     16
    1517  ftable.header = &header;
    1618
    17   /* move pointer past header -- must be already read (load_catalog) */
    18   fseeko (f, catalog[0].header.datasize, SEEK_SET);
    19 
    20   /* matrix should be empty */
    21   if (!gfits_fread_matrix (f, &matrix, &catalog[0].header)) {
    22     if (VERBOSE) fprintf (stderr, "can't read primary matrix");
    23     return (FALSE);
    24   }
    2519  /* get the components from the header */
    2620  if (!gfits_scan (&catalog[0].header, "NSTARS",   OFF_T_FMT, 1,  &Naverage)) return (FALSE);
     
    5751  catalog[0].secfilt = NULL;
    5852
    59   /* validate table mode */
     53  /* validate table mode ?*/
     54
     55  /*** Average Table ***/
     56
     57  /* need to read the table header to determine format (whether or not we read averages) */
     58  /* move pointer past PHU header -- must be already read (load_catalog) */
     59  Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header);
     60  fseeko (catalog[0].f, Nbytes, SEEK_SET);
    6061
    6162  /* read Average table header */
    62   if (!gfits_fread_header (f, &header)) {
     63  if (!gfits_fread_header (catalog[0].f, &header)) {
    6364    if (VERBOSE) fprintf (stderr, "can't read table average header");
    6465    return (FALSE);
    6566  }
     67
    6668  /* read Average table data (or skip) */
    6769  if (catalog[0].catflags & LOAD_AVES) {
    68     if (!gfits_fread_ftable_data (f, &ftable, FALSE)) {
     70    if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) {
    6971      if (VERBOSE) fprintf (stderr, "can't read table average data");
    7072      return (FALSE);
     
    7880    catalog[0].Naves_off = 0;
    7981  } else {
     82    catalog[0].catformat = FtableGetFormat (&ftable);
    8083    Nbytes = gfits_data_size (&header);
    81     fseeko (f, Nbytes, SEEK_CUR);
     84    fseeko (catalog[0].f, Nbytes, SEEK_CUR);
    8285    ALLOCATE (catalog[0].average, Average, 1);
    8386    catalog[0].Naverage = 0;
     
    8891
    8992  /* read Measure table header */
    90   if (!gfits_fread_header (f, &header)) {
     93  if (!gfits_fread_header (catalog[0].f, &header)) {
    9194    if (VERBOSE) fprintf (stderr, "can't read table measure header");
    9295    return (FALSE);
     
    9497  /* read Measure table data */
    9598  if (catalog[0].catflags & LOAD_MEAS) {
    96     if (!gfits_fread_ftable_data (f, &ftable, FALSE)) {
     99    if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) {
    97100      if (VERBOSE) fprintf (stderr, "can't read table measure data");
    98101      return (FALSE);
     
    106109  } else {
    107110    Nbytes = gfits_data_size (&header);
    108     fseeko (f, Nbytes, SEEK_CUR);
     111    fseeko (catalog[0].f, Nbytes, SEEK_CUR);
    109112    ALLOCATE (catalog[0].measure, Measure, 1);
    110113    catalog[0].Nmeasure = 0;
     
    113116
    114117  /* read Missing table header */
    115   if (!gfits_fread_header (f, &header)) {
     118  if (!gfits_fread_header (catalog[0].f, &header)) {
    116119    if (VERBOSE) fprintf (stderr, "can't read table missing header");
    117120    return (FALSE);
     
    119122  /* read Missing table data */
    120123  if (catalog[0].catflags & LOAD_MISS) {
    121     if (!gfits_fread_ftable_data (f, &ftable, FALSE)) {
     124    if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) {
    122125      if (VERBOSE) fprintf (stderr, "can't read table missing data");
    123126      return (FALSE);
     
    136139  } else {
    137140    Nbytes = gfits_data_size (&header);
    138     fseeko (f, Nbytes, SEEK_CUR);
     141    fseeko (catalog[0].f, Nbytes, SEEK_CUR);
    139142    ALLOCATE (catalog[0].missing, Missing, 1);
    140143    catalog[0].Nmissing = 0;
     
    143146
    144147  /* read secfilt table header */
    145   if (!gfits_fread_header (f, &header)) {
     148  if (!gfits_fread_header (catalog[0].f, &header)) {
    146149    if (VERBOSE) fprintf (stderr, "can't read table secfilt header");
    147150    return (FALSE);
     
    149152  /* read secfilt table data */
    150153  if (catalog[0].catflags & LOAD_SECF) {
    151     if (!gfits_fread_ftable_data (f, &ftable, FALSE)) {
     154    if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) {
    152155      if (VERBOSE) fprintf (stderr, "can't read table secfilt data");
    153156      return (FALSE);
     
    187190    /* no real need to skip the data array here... */
    188191    Nbytes = gfits_data_size (&header);
    189     fseeko (f, Nbytes, SEEK_CUR);
     192    fseeko (catalog[0].f, Nbytes, SEEK_CUR);
    190193    if (primary != NULL) {
    191194      free (primary);
  • trunk/Ohana/src/libdvo/src/dvo_catalog_raw.c

    r28241 r33649  
    8888      FORMAT_CASE (PS1_V1,    PS1_V1);
    8989      FORMAT_CASE (PS1_V2,    PS1_V2);
     90      FORMAT_CASE (PS1_V3,    PS1_V3);
    9091      FORMAT_CASE (PS1_REF,   PS1_REF);
    9192
     
    280281  if (catalog[0].catformat == DVO_FORMAT_PS1_V1)          gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V1");
    281282  if (catalog[0].catformat == DVO_FORMAT_PS1_V2)          gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V2");
     283  if (catalog[0].catformat == DVO_FORMAT_PS1_V3)          gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_V3");
    282284  if (catalog[0].catformat == DVO_FORMAT_PS1_REF)         gfits_modify (&catalog[0].header, "FORMAT", "%s", 1, "PS1_REF");
    283285
     
    381383      FORMAT_CASE (PS1_V1,    PS1_V1);
    382384      FORMAT_CASE (PS1_V2,    PS1_V2);
     385      FORMAT_CASE (PS1_V3,    PS1_V3);
    383386      FORMAT_CASE (PS1_REF,   PS1_REF);
    384387
     
    430433      FORMAT_CASE (PS1_V1,    PS1_V1);
    431434      FORMAT_CASE (PS1_V2,    PS1_V2);
     435      FORMAT_CASE (PS1_V3,    PS1_V3);
    432436      FORMAT_CASE (PS1_REF,   PS1_REF);
    433437
     
    483487      FORMAT_CASE (PS1_V1,    PS1_V1);
    484488      FORMAT_CASE (PS1_V2,    PS1_V2);
     489      FORMAT_CASE (PS1_V3,    PS1_V3);
    485490      FORMAT_CASE (PS1_REF,   PS1_REF);
    486491
     
    532537      FORMAT_CASE (PS1_V1,    PS1_V1);
    533538      FORMAT_CASE (PS1_V2,    PS1_V2);
     539      FORMAT_CASE (PS1_V3,    PS1_V3);
    534540      FORMAT_CASE (PS1_REF,   PS1_REF);
    535541
     
    585591      FORMAT_CASE (PS1_V1,    PS1_V1);
    586592      FORMAT_CASE (PS1_V2,    PS1_V2);
     593      FORMAT_CASE (PS1_V3,    PS1_V3);
    587594      FORMAT_CASE (PS1_REF,   PS1_REF);
    588595
     
    634641      FORMAT_CASE (PS1_V1,    PS1_V1);
    635642      FORMAT_CASE (PS1_V2,    PS1_V2);
     643      FORMAT_CASE (PS1_V3,    PS1_V3);
    636644      FORMAT_CASE (PS1_REF,   PS1_REF);
    637645
  • trunk/Ohana/src/libdvo/src/dvo_catalog_split.c

    r31663 r33649  
    160160
    161161  off_t Nbytes;
    162   off_t Naverage, Nmeasure, Nmissing;
     162  off_t Naverage;
     163  off_t Nmeasure;
     164  off_t Nmissing;
    163165  off_t Nitems;
    164166  int status, Nsecfilt;
     
    209211
    210212  /*** Average Table ***/
     213
     214  /* need to read the table header to determine format (whether or not we read averages) */
     215  /* move pointer past PHU header -- must be already read (load_catalog) */
     216  Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header);
     217  fseeko (catalog[0].f, Nbytes, SEEK_SET);
     218
     219  /* read Average table header */
     220  if (!gfits_fread_header (catalog[0].f, &header)) {
     221    if (VERBOSE) fprintf (stderr, "can't read table average header");
     222    return (FALSE);
     223  }
    211224  if (catalog[0].catflags & LOAD_AVES) {
    212     /* move pointer past header -- must be already read (load_catalog) */
    213     Nbytes = catalog[0].header.datasize + gfits_data_size (&catalog[0].header);
    214     fseeko (catalog[0].f, Nbytes, SEEK_SET);
    215     /* read Average table header */
    216     if (!gfits_fread_header (catalog[0].f, &header)) {
    217       if (VERBOSE) fprintf (stderr, "can't read table average header");
    218       return (FALSE);
    219     }
    220225    /* read Average table data : format is irrelevant here */
    221226    if (!gfits_fread_ftable_data (catalog[0].f, &ftable, FALSE)) {
     
    234239    catalog[0].Naves_off = 0;
    235240  } else {
     241    catalog[0].catformat = FtableGetFormat (&ftable);
    236242    ALLOCATE (catalog[0].average, Average, 1);
    237243    catalog[0].Naverage = 0;
  • trunk/Ohana/src/libdvo/src/dvo_convert.c

    r29001 r33649  
    1010/** this file might be more readable if I use macros for the repetative
    1111    constructions below **/
     12
     13DVOTableFormat FtableGetFormat (FTable *ftable) {
     14
     15  DVOTableFormat format;
     16  char extname[80];
     17
     18  /* read the format of this table */
     19  if (!gfits_scan (ftable[0].header, "EXTNAME", "%s", 1, extname)) {
     20    fprintf (stderr, "EXTNAME missing for average table\n");
     21    return (DVO_FORMAT_UNDEF);
     22  }
     23
     24  if (!strcmp (extname, "DVO_AVERAGE")) {
     25    format = DVO_FORMAT_INTERNAL;
     26    return (format);
     27  }
     28# define CONVERT_FORMAT(NAME, FORMAT)           \
     29  if (!strcmp (extname, NAME)) {                \
     30    format = DVO_FORMAT_##FORMAT;               \
     31    return (format); }
     32
     33  CONVERT_FORMAT ("DVO_AVERAGE_ELIXIR",          ELIXIR);
     34  CONVERT_FORMAT ("DVO_AVERAGE_LONEOS",          LONEOS);
     35  CONVERT_FORMAT ("DVO_AVERAGE_PANSTARRS_DEV_0", PANSTARRS_DEV_0);
     36  CONVERT_FORMAT ("DVO_AVERAGE_PANSTARRS_DEV_1", PANSTARRS_DEV_1);
     37  CONVERT_FORMAT ("DVO_AVERAGE_PS1_DEV_1",       PS1_DEV_1);
     38  CONVERT_FORMAT ("DVO_AVERAGE_PS1_DEV_2",       PS1_DEV_2);
     39  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V1",          PS1_V1);
     40  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V2",          PS1_V2);
     41  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V3",          PS1_V3);
     42  CONVERT_FORMAT ("DVO_AVERAGE_PS1_REF",         PS1_REF);
     43# undef CONVERT_FORMAT
     44
     45  fprintf (stderr, "table format unknown: %s\n", extname);
     46  return (DVO_FORMAT_UNDEF);
     47}
    1248
    1349/*** Average / FTable conversion functions ***/
     
    5995  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V1",          PS1_V1,          PS1_V1);
    6096  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V2",          PS1_V2,          PS1_V2);
     97  CONVERT_FORMAT ("DVO_AVERAGE_PS1_V3",          PS1_V3,          PS1_V3);
    6198  CONVERT_FORMAT ("DVO_AVERAGE_PS1_REF",         PS1_REF,         PS1_REF);
    6299# undef CONVERT_FORMAT
     
    92129      FORMAT_CASE (PS1_V1,          PS1_V1);
    93130      FORMAT_CASE (PS1_V2,          PS1_V2);
     131      FORMAT_CASE (PS1_V3,          PS1_V3);
    94132      FORMAT_CASE (PS1_REF,         PS1_REF);
    95133# undef FORMAT_CASE
     
    146184  CONVERT_FORMAT ("DVO_MEASURE_PS1_V1",          PS1_V1,          PS1_V1);
    147185  CONVERT_FORMAT ("DVO_MEASURE_PS1_V2",          PS1_V2,          PS1_V2);
     186  CONVERT_FORMAT ("DVO_MEASURE_PS1_V3",          PS1_V3,          PS1_V3);
    148187  CONVERT_FORMAT ("DVO_MEASURE_PS1_REF",         PS1_REF,         PS1_REF);
    149188# undef CONVERT_FORMAT
     
    179218      FORMAT_CASE (PS1_V1,          PS1_V1);
    180219      FORMAT_CASE (PS1_V2,          PS1_V2);
     220      FORMAT_CASE (PS1_V3,          PS1_V3);
    181221      FORMAT_CASE (PS1_REF,         PS1_REF);
    182222# undef FORMAT_CASE
     
    233273  CONVERT_FORMAT ("DVO_SECFILT_PS1_V1",          PS1_V1,          PS1_V1);
    234274  CONVERT_FORMAT ("DVO_SECFILT_PS1_V2",          PS1_V2,          PS1_V2);
     275  CONVERT_FORMAT ("DVO_SECFILT_PS1_V3",          PS1_V3,          PS1_V3);
    235276  CONVERT_FORMAT ("DVO_SECFILT_PS1_REF",         PS1_REF,         PS1_REF);
    236277# undef CONVERT_FORMAT
     
    266307      FORMAT_CASE (PS1_V1,          PS1_V1);
    267308      FORMAT_CASE (PS1_V2,          PS1_V2);
     309      FORMAT_CASE (PS1_V3,          PS1_V3);
    268310      FORMAT_CASE (PS1_REF,         PS1_REF);
    269311# undef FORMAT_CASE
     
    344386  CONVERT_FORMAT ("DVO_IMAGE_PS1_V1",          PS1_V1,          PS1_V1);
    345387  CONVERT_FORMAT ("DVO_IMAGE_PS1_V2",          PS1_V2,          PS1_V2);
     388  CONVERT_FORMAT ("DVO_IMAGE_PS1_V3",          PS1_V3,          PS1_V3);
    346389  CONVERT_FORMAT ("DVO_IMAGE_PS1_REF",         PS1_REF,         PS1_REF);
    347390
     
    381424      FORMAT_CASE (PS1_V1,          PS1_V1);
    382425      FORMAT_CASE (PS1_V2,          PS1_V2);
     426      FORMAT_CASE (PS1_V3,          PS1_V3);
    383427      FORMAT_CASE (PS1_REF,         PS1_REF);
    384428
     
    434478      FORMAT_CASE (PS1_V1,          PS1_V1);
    435479      FORMAT_CASE (PS1_V2,          PS1_V2);
     480      FORMAT_CASE (PS1_V3,          PS1_V3);
    436481      FORMAT_CASE (PS1_REF,         PS1_REF);
    437482
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_1.c

    r30605 r33649  
    147147    out[i].Npos          = 0.0;
    148148    out[i].extID         = 0;
     149
     150    // added in PS1_V3
     151    out[i].photFlagsUpper = 0;
     152    out[i].photFlagsLower = 0;
    149153  }
    150154  return (out);
     
    206210    // changed or added for PS1_V2
    207211    out[i].flags = 0;
     212
     213    // added in PS1_V3
     214    out[i].Map         = 0;
     215    out[i].ubercalDist = 0;
    208216 }
    209217  return (out);
     
    268276    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    269277    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    270     out[i].dummy3           = in[i].dummy3;
     278    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    271279    out[i].dXpixSys         = in[i].dXpixSys;
    272280    out[i].dYpixSys         = in[i].dYpixSys;
     
    335343    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    336344    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    337     out[i].dummy3           = in[i].dummy3;
     345    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    338346    out[i].dXpixSys         = in[i].dXpixSys;
    339347    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_2.c

    r30605 r33649  
    141141    out[i].Npos          = 0.0;
    142142    out[i].extID         = 0;
     143
     144    // added in PS1_V3
     145    out[i].photFlagsUpper = 0;
     146    out[i].photFlagsLower = 0;
    143147  }
    144148  return (out);
     
    200204    // changed or added for PS1_V2
    201205    out[i].flags = 0;
     206
     207    // added in PS1_V3
     208    out[i].Map         = 0;
     209    out[i].ubercalDist = 0;
    202210 }
    203211  return (out);
     
    264272    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    265273    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    266     out[i].dummy3           = in[i].dummy3;
     274    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    267275    out[i].dXpixSys         = in[i].dXpixSys;
    268276    out[i].dYpixSys         = in[i].dYpixSys;
     
    329337    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    330338    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    331     out[i].dummy3           = in[i].dummy3;
     339    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    332340    out[i].dXpixSys         = in[i].dXpixSys;
    333341    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_DEV_3.c

    r30605 r33649  
    4848    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    4949    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    50     out[i].dummy3           = in[i].dummy3;
     50    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    5151    out[i].dXpixSys         = in[i].dXpixSys;
    5252    out[i].dYpixSys         = in[i].dYpixSys;
     
    107107    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    108108    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    109     out[i].dummy3           = in[i].dummy3;
     109    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    110110    out[i].dXpixSys         = in[i].dXpixSys;
    111111    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_REF.c

    r30605 r33649  
    114114    out[i].catID         = in[i].catID;
    115115    out[i].extID         = 0;
     116
     117    // added in PS1_V3
     118    out[i].photFlagsUpper = 0;
     119    out[i].photFlagsLower = 0;
    116120  }
    117121  return (out);
     
    160164    // changed or added for PS1_V2
    161165    out[i].flags = 0;
     166
     167    // added in PS1_V3
     168    out[i].Map         = 0;
     169    out[i].ubercalDist = 0;
    162170 }
    163171  return (out);
     
    223231    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    224232    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    225     out[i].dummy3           = in[i].dummy3;
     233    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    226234    out[i].dXpixSys         = in[i].dXpixSys;
    227235    out[i].dYpixSys         = in[i].dYpixSys;
     
    285293    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    286294    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    287     out[i].dummy3           = in[i].dummy3;
     295    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    288296    out[i].dXpixSys         = in[i].dXpixSys;
    289297    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V1.c

    r30605 r33649  
    146146    out[i].catID         = in[i].catID;
    147147    out[i].extID         = in[i].extID;
     148
     149    // added in PS1_V3
     150    out[i].photFlagsUpper = 0;
     151    out[i].photFlagsLower = 0;
    148152  }
    149153  return (out);
     
    204208    // changed or added for PS1_V2
    205209    out[i].flags = 0;
     210
     211    // added in PS1_V3
     212    out[i].Map         = 0;
     213    out[i].ubercalDist = 0;
    206214 }
    207215  return (out);
     
    272280    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    273281    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    274     out[i].dummy3           = in[i].dummy3;
     282    out[i].ubercalDist      = in[i].dummy3;
    275283    out[i].dXpixSys         = in[i].dXpixSys;
    276284    out[i].dYpixSys         = in[i].dYpixSys;
     
    336344    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    337345    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    338     out[i].dummy3           = in[i].dummy3;
     346    out[i].dummy3           = in[i].ubercalDist;
    339347    out[i].dXpixSys         = in[i].dXpixSys;
    340348    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_PS1_V2.c

    r30605 r33649  
    147147    out[i].catID         = in[i].catID;
    148148    out[i].extID         = in[i].extID;
     149
     150    // added in PS1_V3
     151    out[i].photFlagsUpper = 0;
     152    out[i].photFlagsLower = 0;
    149153  }
    150154  return (out);
     
    207211    out[i].M_20  = in[i].M_20;     
    208212    out[i].M_80  = in[i].M_80;     
     213
     214    // added in PS1_V3
     215    out[i].Map         = 0;
     216    out[i].ubercalDist = 0;
    209217 }
    210218  return (out);
     
    281289    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    282290    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    283     out[i].dummy3           = in[i].dummy3;
     291    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    284292    out[i].dXpixSys         = in[i].dXpixSys;
    285293    out[i].dYpixSys         = in[i].dYpixSys;
     
    343351    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    344352    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    345     out[i].dummy3           = in[i].dummy3;
     353    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    346354    out[i].dXpixSys         = in[i].dXpixSys;
    347355    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_elixir.c

    r30605 r33649  
    158158    out[i].Npos          = 0.0;
    159159    out[i].extID         = 0;
     160
     161    // added in PS1_V3
     162    out[i].photFlagsUpper = 0;
     163    out[i].photFlagsLower = 0;
    160164  }
    161165  return (out);
     
    215219    // changed or added for PS1_V2
    216220    out[i].flags = 0;
     221
     222    // added in PS1_V3
     223    out[i].Map         = 0;
     224    out[i].ubercalDist = 0;
    217225  }
    218226  return (out);
     
    271279    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    272280    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    273     out[i].dummy3           = in[i].dummy3;
     281    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    274282    out[i].dXpixSys         = in[i].dXpixSys;
    275283    out[i].dYpixSys         = in[i].dYpixSys;
     
    341349    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    342350    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    343     out[i].dummy3           = in[i].dummy3;
     351    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    344352    out[i].dXpixSys         = in[i].dXpixSys;
    345353    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_loneos.c

    r30605 r33649  
    150150    out[i].Npos          = 0.0;
    151151    out[i].extID         = 0;
     152
     153    // added in PS1_V3
     154    out[i].photFlagsUpper = 0;
     155    out[i].photFlagsLower = 0;
    152156  }
    153157  return (out);
     
    208212    // changed or added for PS1_V2
    209213    out[i].flags = 0;
     214
     215    // added in PS1_V3
     216    out[i].Map         = 0;
     217    out[i].ubercalDist = 0;
    210218  }
    211219  return (out);
     
    264272    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    265273    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    266     out[i].dummy3           = in[i].dummy3;
     274    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    267275    out[i].dXpixSys         = in[i].dXpixSys;
    268276    out[i].dYpixSys         = in[i].dYpixSys;
     
    334342    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    335343    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    336     out[i].dummy3           = in[i].dummy3;
     344    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    337345    out[i].dXpixSys         = in[i].dXpixSys;
    338346    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_0.c

    r30605 r33649  
    154154    out[i].Npos          = 0.0;
    155155    out[i].extID         = 0;
     156
     157    // added in PS1_V3
     158    out[i].photFlagsUpper = 0;
     159    out[i].photFlagsLower = 0;
    156160  }
    157161  return (out);
     
    215219    // changed or added for PS1_V2
    216220    out[i].flags = 0;
     221
     222    // added in PS1_V3
     223    out[i].Map         = 0;
     224    out[i].ubercalDist = 0;
    217225 }
    218226  return (out);
     
    278286    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    279287    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    280     out[i].dummy3           = in[i].dummy3;
     288    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    281289    out[i].dXpixSys         = in[i].dXpixSys;
    282290    out[i].dYpixSys         = in[i].dYpixSys;
     
    347355    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    348356    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    349     out[i].dummy3           = in[i].dummy3;
     357    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    350358    out[i].dXpixSys         = in[i].dXpixSys;
    351359    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_convert_panstarrs_DEV_1.c

    r30605 r33649  
    154154    out[i].Npos          = 0.0;
    155155    out[i].extID         = 0;
     156
     157    // added in PS1_V3
     158    out[i].photFlagsUpper = 0;
     159    out[i].photFlagsLower = 0;
    156160  }
    157161  return (out);
     
    215219    // changed or added for PS1_V2
    216220    out[i].flags = 0;
     221
     222    // added in PS1_V3
     223    out[i].Map         = 0;
     224    out[i].ubercalDist = 0;
    217225 }
    218226  return (out);
     
    278286    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    279287    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    280     out[i].dummy3           = in[i].dummy3;
     288    out[i].ubercalDist      = in[i].dummy3; // new name PS1_V3
    281289    out[i].dXpixSys         = in[i].dXpixSys;
    282290    out[i].dYpixSys         = in[i].dYpixSys;
     
    347355    out[i].nLinkAstrom      = in[i].nLinkAstrom;
    348356    out[i].nLinkPhotom      = in[i].nLinkPhotom;
    349     out[i].dummy3           = in[i].dummy3;
     357    out[i].dummy3           = in[i].ubercalDist; // new name PS1_V3
    350358    out[i].dXpixSys         = in[i].dXpixSys;
    351359    out[i].dYpixSys         = in[i].dYpixSys;
  • trunk/Ohana/src/libdvo/src/dvo_image.c

    r28246 r33649  
    211211  if (db[0].format == DVO_FORMAT_PS1_V1)          gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V1");
    212212  if (db[0].format == DVO_FORMAT_PS1_V2)          gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V2");
     213  if (db[0].format == DVO_FORMAT_PS1_V3)          gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_V3");
    213214  if (db[0].format == DVO_FORMAT_PS1_REF)         gfits_modify (&db[0].header, "FORMAT", "%s", 1, "PS1_REF");
    214215 
  • trunk/Ohana/src/libdvo/src/dvo_image_raw.c

    r28241 r33649  
    5757  if (db[0].format == DVO_FORMAT_PS1_V1)          ImageSize = sizeof(Image_PS1_V1);
    5858  if (db[0].format == DVO_FORMAT_PS1_V2)          ImageSize = sizeof(Image_PS1_V2);
     59  if (db[0].format == DVO_FORMAT_PS1_V3)          ImageSize = sizeof(Image_PS1_V3);
    5960  if (db[0].format == DVO_FORMAT_PS1_REF)         ImageSize = sizeof(Image_PS1_REF);
    6061
     
    8586  if (db[0].format == DVO_FORMAT_PS1_V1)          gfits_table_mkheader_Image_PS1_V1 (&db[0].theader);
    8687  if (db[0].format == DVO_FORMAT_PS1_V2)          gfits_table_mkheader_Image_PS1_V2 (&db[0].theader);
     88  if (db[0].format == DVO_FORMAT_PS1_V3)          gfits_table_mkheader_Image_PS1_V3 (&db[0].theader);
    8789  if (db[0].format == DVO_FORMAT_PS1_REF)         gfits_table_mkheader_Image_PS1_REF (&db[0].theader);
    8890   
  • trunk/Ohana/src/libdvo/src/dvo_photcode_ops.c

    r31450 r33649  
    857857/***********************************************/
    858858
    859 // Create a map between the secfilt values from one photcode table to another
    860 int *GetSecFiltMap(PhotCodeData *output, PhotCodeData *input) {
    861   int i, j;
    862   int NsecfiltIn  = input[0].Nsecfilt;
    863   int NsecfiltOut = output[0].Nsecfilt;
    864   int *map;
    865   ALLOCATE(map, int, NsecfiltIn);
    866 
    867   // loop over entries in the input table
    868   for (i = 0; i < NsecfiltIn; i++) {
    869     int code  = input[0].codeNsec[i];
    870     int entry = -1;
    871     // find the matching entry in the output table
    872     for (j = 0; j < NsecfiltOut; j++) {
    873       int outcode = output[0].codeNsec[j];
    874       if (code == outcode) {
    875          entry = j;
    876          break;
    877       }
    878     }
    879     // if (entry == -1) {
    880     //   // entry is missing fail (no printfs in this file)
    881     //   free(map);
    882     //   return(FALSE);
    883     // }
    884 
    885     // if entry is still -1, we will skip this one (not map into the output db)
    886     map[i] = entry;
    887   }
    888 
    889   return map;
    890 }
    891859
    892860/* photcode table should have the following format:
  • trunk/Ohana/src/libdvo/src/skyregion_gsc.c

    r20936 r33649  
    9191  L0.regions[0].childS  =  0;
    9292  L0.regions[0].childE  =  NDECBANDS;
     93  L0.regions[0].hostFlags = 0;
     94  L0.regions[0].hostID    = 0;
     95  L0.regions[0].backupID  = 0;
    9396  strcpy (L0.regions[0].name, "fullsky");
    9497  if (DEBUG) SkyRegionPrint (&L0.regions[0]);
     
    117120    L1.regions[i].child    = TRUE;
    118121    L1.regions[i].table    = -1;
     122    L1.regions[i].hostFlags = 0;
     123    L1.regions[i].hostID    = 0;
     124    L1.regions[i].backupID  = 0;
    119125    strcpy (L1.regions[i].name, DecNames[i]);
    120126    if (DEBUG) SkyRegionPrint (&L1.regions[i]);
     
    152158  ALLOCATE (skytable[0].regions, SkyRegion, 1);
    153159  skytable[0].Nregions = 0;
     160
     161  // define the host table filename
     162  strcpy (skytable->hosts, "HostTable.dat");
    154163
    155164  // L0, L1, L2, L3, L4 all have index ranges of 0 -> Nregions and parent values pointing
     
    417426    L2[0].regions[Nr].childS   =  0;
    418427    L2[0].regions[Nr].childE   =  0;
     428    L2[0].regions[Nr].hostFlags = 0;
     429    L2[0].regions[Nr].hostID    = 0;
     430    L2[0].regions[Nr].backupID  = 0;
    419431
    420432    /* define names for L2 regions */
     
    464476    L3[0].regions[Nr].childS   =  0;
    465477    L3[0].regions[Nr].childE   =  0;
     478    L3[0].regions[Nr].hostFlags = 0;
     479    L3[0].regions[Nr].hostID    = 0;
     480    L3[0].regions[Nr].backupID  = 0;
    466481
    467482    if (DEBUG >= 3) SkyRegionPrint (&L3[0].regions[Nr]);
     
    514529      L4[0].regions[Nr].childS   =  0;
    515530      L4[0].regions[Nr].childE   =  0;
     531      L4[0].regions[Nr].hostFlags = 0;
     532      L4[0].regions[Nr].hostID    = 0;
     533      L4[0].regions[Nr].backupID  = 0;
    516534
    517535      sprintf (name, "%s.%02d", L3[0].name, Nbox);
  • trunk/Ohana/src/libdvo/src/skyregion_io.c

    r29001 r33649  
    3939
    4040  ALLOCATE (skytable, SkyTable, 1);
     41  memset (skytable->hosts, 0, 80);
    4142  skytable[0].regions = gfits_table_get_SkyRegion (&ftable, &skytable[0].Nregions, NULL);
    4243  if (!skytable[0].regions) {
     
    5051  }
    5152 
     53  // 2012.02.08 : I updated the schema for SkyTable.dat to add 3 fields by stealing the
     54  // last 3 bytes of the 'name' field (going from 21 bytes to 18 bytes).  This was safe
     55  // because no files had yet been defined with more than 16 bytes in the names, leave
     56  // room for 1 more byte includig the EOF char.
     57
     58  // When we load old tables, we need to zero out the values of those 3 new fields (they
     59  // may have garbage left over).  To distinguish old and new tables, I add the field
     60  // 'HOSTS' to the PHU header (which also tells the location of the host table, if used).
     61
     62  int haveHosts = gfits_scan (&header, "HOSTS", "%s", 1, skytable->hosts);
     63  if (!haveHosts) {
     64    strcpy (skytable->hosts, "HostTable.dat");
     65    for (i = 0; i < skytable[0].Nregions; i++) {
     66      if (strlen(skytable[0].regions[i].name) > 17) {
     67        fprintf (stderr, "WARNING : this skytable has some names longer than the adjusted size of 17 bytes.\n");
     68        fprintf (stderr, "  This is not compatible with the current SkyTable definition\n");
     69        exit (1);
     70      }
     71      skytable[0].regions[i].hostFlags = 0;
     72      skytable[0].regions[i].hostID    = 0;
     73      skytable[0].regions[i].backupID  = 0;
     74    }
     75  }
     76
    5277  gfits_free_header (&header);
    5378  gfits_free_matrix (&matrix);
     
    7196  gfits_create_header (&header);
    7297  gfits_create_matrix (&header, &matrix);
     98  gfits_print (&header, "HOSTS", "%s", 1, skytable->hosts);
    7399
    74100  gfits_table_set_SkyRegion (&ftable, skytable[0].regions, skytable[0].Nregions);
     
    91117SkyTable *SkyTableLoadOptimal (char *catdir, char *skyfile, char *gscfile, int readwrite, int depth, int verbose) {
    92118
    93   char filename[256];
     119  char *filename;
    94120  struct stat filestat;
    95121  SkyTable *sky;
    96122
    97   /* first option: CATDIR/SkyTable.fits */
    98   sprintf (filename, "%s/SkyTable.fits", catdir);
     123  /* first option: in CATDIR */
     124  filename = SkyTableFilename (catdir);
    99125  if (stat (filename, &filestat)) goto SKYFILE;
    100126  if (!check_file_access (filename, FALSE, readwrite, verbose)) goto SKYFILE;
     
    115141  if (sky == NULL) {
    116142    fprintf (stderr, "error loading sky table\n");
     143    free (filename);
    117144    return (NULL);
    118145  }
     
    121148
    122149  /* create CATDIR copy */
    123   sprintf (filename, "%s/SkyTable.fits", catdir);
    124150  check_file_access (filename, FALSE, readwrite, verbose);
    125   if (!SkyTableSave (sky, filename)) return NULL;
     151  if (!SkyTableSave (sky, filename)) {
     152    free (filename);
     153    return NULL;
     154  }
    126155
    127156  gfits_convert_SkyRegion (sky[0].regions, sizeof (SkyTable), sky[0].Nregions);
     157  free (filename);
    128158  return (sky);
    129159
     
    134164  if (gscfile == NULL) {
    135165    fprintf (stderr, "error loading sky table from existing db (%s)\n", catdir);
     166    free (filename);
    136167    return (NULL);
    137168  }
     
    140171  if (sky == NULL) {
    141172    fprintf (stderr, "error loading sky table\n");
     173    free (filename);
    142174    return (NULL);
    143175  }
    144176
    145177  /* create CATDIR copy */
    146   sprintf (filename, "%s/SkyTable.fits", catdir);
    147178  check_file_access (filename, FALSE, readwrite, verbose);
    148   if (!SkyTableSave (sky, filename)) return NULL;
     179  if (!SkyTableSave (sky, filename)) {
     180    free (filename);
     181    return NULL;
     182  }
    149183
    150184  gfits_convert_SkyRegion (sky[0].regions, sizeof (SkyRegion), sky[0].Nregions);
     185  free (filename);
    151186  return (sky);
    152187}
     
    180215}
    181216
     217// given a CATDIR, return an allocated string with the full skytable name
     218char *SkyTableFilename (char *catdir) {
     219
     220  if (!catdir) return NULL;
     221 
     222  char *skyfile;
     223  ALLOCATE (skyfile, char, strlen(catdir) + strlen("/SkyTable.fits") + 1);
     224  sprintf (skyfile, "%s/SkyTable.fits", catdir);
     225
     226  return skyfile;
     227}
  • trunk/Ohana/src/libdvo/src/skyregion_ops.c

    r29439 r33649  
    2020  list[0].Nregions = 0;
    2121  list[0].ownElements = FALSE; // this list is only holding a view to the elements
     22  strcpy (list[0].hosts, table[0].hosts);
    2223
    2324  region = table[0].regions;
     
    6768  list[0].Nregions = N;
    6869  list[0].ownElements = FALSE; // this list is only holding a view to the elements
     70  strcpy (list[0].hosts, table[0].hosts);
    6971
    7072  region = table[0].regions;
     
    102104  list[0].Nregions = N;
    103105  list[0].ownElements = FALSE; // this list is only holding a view to the elements
     106  strcpy (list[0].hosts, table[0].hosts);
    104107
    105108  region = table[0].regions;
     
    261264  ALLOCATE (list[0].filename, char *, NNEW);
    262265  list[0].ownElements = FALSE; // this list is only holding a view to the elements
     266  strcpy (list[0].hosts, table[0].hosts);
    263267
    264268  region = table[0].regions;
     
    326330  list[0].Nregions = 0;
    327331  list[0].ownElements = FALSE; // this list is only holding a view to the elements
     332  strcpy (list[0].hosts, inList[0].hosts);
    328333
    329334  region = inList[0].regions;
     
    403408  ALLOCATE (list[0].filename, char *, NNEW);
    404409  list[0].ownElements = FALSE; // this list is only holding a view to the elements
     410  strcpy (list[0].hosts, table[0].hosts);
    405411
    406412  region = table[0].regions;
Note: See TracChangeset for help on using the changeset viewer.