IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 9645


Ignore:
Timestamp:
Oct 18, 2006, 5:03:42 PM (20 years ago)
Author:
eugene
Message:

rationalized ra range, added error checks, better getstar line creation

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psastro/src/psastroLoadRefstars.c

    r9627 r9645  
    22// int mkstemp(char *template);
    33# define ELIXIR_MODE 1
    4 # define PIPE_MODE 0
    54
    65psArray *psastroLoadRefstars (pmConfig *config) {
     
    87    int fd;
    98    bool status;
    10     char tempLine[256];
     9    char *catformat = NULL;
     10    char *getstarLine = NULL;
    1111
    1212    // select the DVO database?
     
    2424    char *CATDIR = psMetadataLookupStr(NULL, recipe, "DVO.CATDIR");
    2525    if (CATDIR == NULL) {
    26         psLogMsg ("psastro", 2, "warning: missing DVO.CATDIR, using HOME/.ptolemyrc definition\n");
     26        psLogMsg ("psastro", 2, "warning: missing DVO.CATDIR, using ~/.ptolemyrc definition\n");
    2727    }
    2828
    29     // XXX need to add a padding area
    3029    // issue the following command:
    3130    // getstar -region RAmin RAmax DECmin DECmax
     
    3433    sprintf (tempFile, "/tmp/psastro.XXXXXX");
    3534    if ((fd = mkstemp (tempFile)) == -1) {
    36         fprintf (stderr, "error creating temp output file\n");
     35        psError(PSASTRO_ERR_REFSTARS, true, "error creating temp output file\n");
    3736        return NULL;
    3837    }
     
    4241
    4342    // use fork to add timeout capability
    44     // use cfitsio |filename format to avoid tempFile
    45     # if ELIXIR_MODE
     43    if (ELIXIR_MODE) {
     44        psStringAppend (&catformat, "-D CATFORMAT elixir ");
     45    } else {
     46        psStringAppend (&catformat, "-D CATFORMAT panstarrs ");
     47    }   
     48
    4649    if (CATDIR) {
    47         sprintf (tempLine, "getstar -D CATDIR %s -D CATFORMAT elixir -D CATMODE mef -maglim %f -region %f %f %f %f -o %s", CATDIR, MAGmax, RAmin, DECmin, RAmax, DECmax, tempFile);
    48     } else {
    49         sprintf (tempLine, "getstar -D CATFORMAT elixir -D CATMODE mef -maglim %f -region %f %f %f %f -o %s", MAGmax, RAmin, DECmin, RAmax, DECmax, tempFile);
    50     }
    51     # else
    52     if (CATDIR) {
    53         sprintf (tempLine, "getstar -D CATDIR %s -D CATFORMAT panstarrs -D CATMODE mef -maglim %f -region %f %f %f %f -o %s", CATDIR, MAGmax, RAmin, DECmin, RAmax, DECmax, tempFile);
    54     } else {
    55         sprintf (tempLine, "getstar -D CATFORMAT panstarrs -D CATMODE mef -maglim %f -region %f %f %f %f -o %s", MAGmax, RAmin, DECmin, RAmax, DECmax, tempFile);
    56     }
    57     # endif
     50        psStringAppend (&catformat, "-D CATDIR %s ", CATDIR);
     51    }
    5852
    59     psTrace ("psastro", 3, "%s\n", tempLine);
    60     status = system (tempLine);
     53    psStringAppend (&getstarLine, "getstar %s -D CATMODE mef -maglim %f -region %f %f %f %f -o %s", catformat, MAGmax, RAmin, DECmin, RAmax, DECmax, tempFile);
     54    psTrace ("psastro", 3, "%s\n", getstarLine);
     55
     56    // XXX use psPipe: catch stderr, stdout, allow for Nsec timeout...
     57    status = system (getstarLine);
    6158    if (status) {
    62         fprintf (stderr, "error loading reference data\n");
     59        psError(PSASTRO_ERR_REFSTARS, true, "error loading reference data\n");
    6360        return NULL;
    6461    }
     62    psFree (getstarLine);
     63    psFree (catformat);
    6564
    6665    psLogMsg ("psastro", 3, "ran getstar : %f sec\n", psTimerMark ("psastro"));
     
    6968    psFits *fits = psFitsOpen (tempFile, "r");
    7069
    71     # if ELIXIR_MODE
    72     psFitsMoveExtName (fits, "DVO_AVERAGE_ELIXIR");
    73     # else
    74     psFitsMoveExtName (fits, "DVO_AVERAGE_PANSTARRS");
    75     # endif
     70    if (ELIXIR_MODE) {
     71        psFitsMoveExtName (fits, "DVO_AVERAGE_ELIXIR");
     72    } else {
     73        psFitsMoveExtName (fits, "DVO_AVERAGE_PANSTARRS");
     74    }
    7675
    7776    psTimerStart ("psastro");
     
    9291
    9392        // DVO tables are stored in degrees
    94         # if ELIXIR_MODE
    95         ref->sky->r   = RAD_DEG*psMetadataLookupF32 (&status, row, "RA");
    96         ref->sky->d   = RAD_DEG*psMetadataLookupF32 (&status, row, "DEC");
    97         ref->Mag      = 0.001*psMetadataLookupS32 (&status, row, "MAG");  // XXX ELIXIR uses millimags, PANSTARRS uses mags
    98         # else
    99         ref->sky->r   = RAD_DEG*psMetadataLookupF64 (&status, row, "RA");
    100         ref->sky->d   = RAD_DEG*psMetadataLookupF64 (&status, row, "DEC");
    101         ref->Mag      = psMetadataLookupF32 (&status, row, "MAG");
    102         # endif
     93        if (ELIXIR_MODE) {
     94            ref->sky->r   = RAD_DEG*psMetadataLookupF32 (&status, row, "RA");
     95            ref->sky->d   = RAD_DEG*psMetadataLookupF32 (&status, row, "DEC");
     96            ref->Mag      = 0.001*psMetadataLookupS32 (&status, row, "MAG");  // ELIXIR uses millimags
     97        } else {
     98            ref->sky->r   = RAD_DEG*psMetadataLookupF64 (&status, row, "RA");
     99            ref->sky->d   = RAD_DEG*psMetadataLookupF64 (&status, row, "DEC");
     100            ref->Mag      = psMetadataLookupF32 (&status, row, "MAG"); // PANSTARRS uses mags
     101        }
    103102
    104103        psArrayAdd (refs, 100, ref);
     
    114113    return refs;
    115114}
    116 
    117 // XXX this function needs clarifiction of the getstar output format
Note: See TracChangeset for help on using the changeset viewer.