IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 12321


Ignore:
Timestamp:
Mar 8, 2007, 11:42:19 AM (19 years ago)
Author:
eugene
Message:

fixed errors related to load/save photcode table; automatically save fits version in catdir

Location:
branches/dvo-mods-2007-02/Ohana/src
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/dvo-mods-2007-02/Ohana/src/libautocode/def/photcode.d

    r6454 r12321  
    22EXTNAME      DVO_PHOTCODE
    33TYPE         BINTABLE
    4 SIZE         77
     4SIZE         80
    55DESCRIPTION  DVO Photcode Description Table
    66
     
    99FIELD  name,        NAME,        char[32],       name for filter combination
    1010FIELD  type,        TYPE,        char,           PRI/SEC/DEP/REF
     11FIELD  dummy,       DUMMY,       char[3],        padding
    1112FIELD  C,           C_LAM,       short,          primary phot calibration terms (millimags)
    1213FIELD  dC,          C_LAM_ERR,   short,          primary phot calibration terms (millimags)
  • branches/dvo-mods-2007-02/Ohana/src/libdvo/Makefile

    r12275 r12321  
    3333$(SRC)/LoadPhotcodesText.$(ARCH).o   \
    3434$(SRC)/LoadPhotcodesFITS.$(ARCH).o   \
     35$(SRC)/SavePhotcodesText.$(ARCH).o   \
     36$(SRC)/SavePhotcodesFITS.$(ARCH).o   \
    3537$(SRC)/imreg_datatypes.$(ARCH).o \
    3638$(SRC)/mosaic_astrom.$(ARCH).o   \
  • branches/dvo-mods-2007-02/Ohana/src/libdvo/include/dvo.h

    r12275 r12321  
    279279int LoadPhotcodesText (char *filename);
    280280int LoadPhotcodesFITS (char *filename);
     281int SavePhotcodesText (char *filename);
     282int SavePhotcodesFITS (char *filename);
     283
     284void PrintPhotcodeNamebyCode (FILE *f, char *format, int code);
    281285
    282286int GetPhotcodeCodebyName (char *name);
  • branches/dvo-mods-2007-02/Ohana/src/libdvo/src/LoadPhotcodes.c

    r12274 r12321  
    77 
    88  /* next try to load the photcodes from the master text photcode file */
    9   if (LoadPhotcodesText (master_file)) return TRUE;
     9  /* automatically (or on demand?) save the text file to the FITS version */
     10  if (LoadPhotcodesText (master_file)) {
     11      if (!check_file_access (catdir_file, TRUE, TRUE)) return TRUE;
     12      SavePhotcodesFITS (catdir_file);
     13      return TRUE;
     14  }
    1015
    1116  return FALSE;
  • branches/dvo-mods-2007-02/Ohana/src/libdvo/src/LoadPhotcodesFITS.c

    r12295 r12321  
    1010  FITS_DB db;
    1111
    12   int i, code, Ncode, Nsec;
     12  int i, code, Ncode, Nsec, Nsecfilt;
    1313
    1414  /* XXX choose more sensible lock timeouts! */
     
    5252
    5353  /* set up photcode indexes (see dvo_photcode_ops.c) */
    54   Nsec = 0;
     54  Nsecfilt = 0;
    5555  for (i = 0; i < Ncode; i++) {
    5656    if (photcode[i].type == PHOT_ALT) continue; /* no hashcode for ALT codes */
     
    6565    table[0].hashcode[photcode[i].code] = i;
    6666    if (photcode[i].type == PHOT_SEC) {
    67       table[0].hashNsec[photcode[i].code] = Nsec;
    68       table[0].codeNsec[Nsec] = photcode[i].code;
    69       Nsec ++;
     67      table[0].hashNsec[photcode[i].code] = Nsecfilt;
     68      table[0].codeNsec[Nsecfilt] = photcode[i].code;
     69      Nsecfilt ++;
    7070    }
    7171  }
    7272
    73   /* validity check for references */
     73  // validity check for references
     74  // photcode.equiv of 0 means "undefined"
    7475  for (i = 0; i < Ncode; i++) {
    7576    if (photcode[i].type == PHOT_DEP) {
    76       if (photcode[i].equiv) {
    77         Nsec = table[0].hashcode[photcode[i].equiv];
    78         if ((Nsec >= Ncode) || (Nsec < 0)) {
    79           fprintf (stderr, "reference for dependent photcode is not in photcodes\n");
    80           free (photcode);
    81           return FALSE;
    82         }
     77      if (photcode[i].equiv == 0) continue;
     78      Nsec = table[0].hashcode[photcode[i].equiv];
     79      if ((Nsec >= Ncode) || (Nsec < 0)) {
     80        fprintf (stderr, "reference for dependent photcode is not in photcodes\n");
     81        free (photcode);
     82        return FALSE;
    8383      }
    8484      if (photcode[Nsec].type != PHOT_SEC) {
     
    105105  table[0].code     = photcode;
    106106  table[0].Ncode    = Ncode;
    107   table[0].Nsecfilt = Nsec;
     107  table[0].Nsecfilt = Nsecfilt;
    108108
    109109  return (TRUE);
  • branches/dvo-mods-2007-02/Ohana/src/libdvo/src/LoadPhotcodesText.c

    r12295 r12321  
    99
    1010  FILE *f;
    11   int i, Nsec, Ncode, NPHOTCODE, Nfield;
     11  int i, Nsecfilt, Nsec, Ncode, NPHOTCODE, Nfield;
    1212  int code;
    1313  char *c;
     
    6060    photcode[Ncode].type = 0;
    6161    photcode[Ncode].code = code;
     62    memset (photcode[Ncode].name, 0, 32);
    6263    strcpy (photcode[Ncode].name, name);
    6364    if (!strncasecmp (type, "pri", 3)) {
     
    133134 
    134135  /* set up photcode indexes (see dvo_photcode_ops.c) */
    135   Nsec = 0;
     136  Nsecfilt = 0;
    136137  for (i = 0; i < Ncode; i++) {
    137138    if (photcode[i].type == PHOT_ALT) continue; /* no hashcode for ALT codes */
     
    146147    table[0].hashcode[photcode[i].code] = i;
    147148    if (photcode[i].type == PHOT_SEC) {
    148       table[0].hashNsec[photcode[i].code] = Nsec;
    149       table[0].codeNsec[Nsec] = photcode[i].code;
    150       Nsec ++;
    151     }
    152   }
    153   table[0].Nsecfilt = Nsec;
    154 
    155   /* validity check for references */
     149      table[0].hashNsec[photcode[i].code] = Nsecfilt;
     150      table[0].codeNsec[Nsecfilt] = photcode[i].code;
     151      Nsecfilt ++;
     152    }
     153  }
     154
     155  // validity check for references
     156  // photcode.equiv of 0 means "undefined"
    156157  for (i = 0; i < Ncode; i++) {
    157158    if (photcode[i].type == PHOT_DEP) {
    158       // photcode.equiv of 0 means "undefined"
    159       if (photcode[i].equiv) {
    160         Nsec = table[0].hashcode[photcode[i].equiv];
    161         if ((Nsec >= Ncode) || (Nsec < 0)) {
    162           fprintf (stderr, "reference for dependent photcode is not a valid photcode\n");
    163           free (photcode);
    164           return (FALSE);
    165         }
    166         if (photcode[Nsec].type != PHOT_SEC) {
    167           fprintf (stderr, "reference for dependent photcode is not an average photcode\n");
    168           free (photcode);
    169           return (FALSE);
    170         }
     159      if (photcode[i].equiv == 0) continue;
     160      Nsec = table[0].hashcode[photcode[i].equiv];
     161      if ((Nsec >= Ncode) || (Nsec < 0)) {
     162        fprintf (stderr, "reference for dependent photcode is not a valid photcode\n");
     163        free (photcode);
     164        return (FALSE);
     165      }
     166      if (photcode[Nsec].type != PHOT_SEC) {
     167        fprintf (stderr, "reference for dependent photcode is not an average photcode\n");
     168        free (photcode);
     169        return (FALSE);
    171170      }
    172171    }
     
    185184    }
    186185  }
    187   table[0].code = photcode;
    188   table[0].Ncode = Ncode;
     186  table[0].code     = photcode;
     187  table[0].Ncode    = Ncode;
     188  table[0].Nsecfilt = Nsecfilt;
    189189
    190190  return (TRUE);
Note: See TracChangeset for help on using the changeset viewer.