IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 7, 2007, 3:22:17 PM (19 years ago)
Author:
Paul Price
Message:

Images in the detrend database may be in different formats.
Therefore, in order to get a detrend matching the appropriate level,
we need to place a restriction on the class_id (class identifier,
which can be 'fpa', 'ccd00', or even 'ccd00:cell01'). To do this, we
have "detselect -search" return the file level (fpa/chip/cell) for the
detrend, so that we can provide the correct constraint on the class_id
(using "detselect -select"). Introduced a new metadata in the camera
configuration ("CLASSID") that provides rules for the class_id (e.g.,
"{CHIP.NAME}:{CELL.NAME}") according to the file level string.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/detrend/pmDetrendDB.c

    r11876 r12300  
    4747    options->version  = NULL;
    4848    options->dettype  = NULL;
    49     options->exptime  = 0.0; 
    50     options->airmass  = 0.0; 
    51     options->dettemp  = 0.0; 
    52     options->twilight = 0.0; 
     49    options->exptime  = 0.0;
     50    options->airmass  = 0.0;
     51    options->dettemp  = 0.0;
     52    options->twilight = 0.0;
    5353
    5454    options->exptimeSet  = false; // not selected
     
    120120    char *type = NULL;
    121121    if (options->dettype) {
    122         type = psMemIncrRefCounter (options->dettype);
     122        type = psMemIncrRefCounter (options->dettype);
    123123    } else {
    124         type = pmDetrendTypeToString (options->type);
     124        type = pmDetrendTypeToString (options->type);
    125125    }
    126126    unsigned int nFail;
     
    189189
    190190    bool mdstatus;
    191     results->level = 0;
    192191    int detID = psMetadataLookupS32 (&mdstatus, md, "det_id");
     192    if (!mdstatus) {
     193        psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find det_id in output from detselect.");
     194        psLogMsg ("psModule.detrend", PS_LOG_ERROR, "detselect response:\n %s\n", buffer->data);
     195        goto failure;
     196    }
    193197    int iteration  = psMetadataLookupS32 (&mdstatus, md, "iteration");
     198    if (!mdstatus) {
     199        psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find iteration in output from detselect.");
     200        psLogMsg ("psModule.detrend", PS_LOG_ERROR, "detselect response:\n %s\n", buffer->data);
     201        goto failure;
     202    }
     203    psString fileLevel = psMetadataLookupStr(&mdstatus, md, "file_level");
     204    if (!mdstatus || !fileLevel || strlen(fileLevel) == 0) {
     205        psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find file_level in output from detselect.");
     206        psLogMsg ("psModule.detrend", PS_LOG_ERROR, "detselect response:\n %s\n", buffer->data);
     207        goto failure;
     208    }
    194209
    195210    results->detID = NULL; // it should be NULL already from the Alloc above
    196211    psStringAppend (&results->detID, " -det_id %d -iteration %d ", detID, iteration);
     212    results->level = psMemIncrRefCounter(fileLevel);
    197213
    198214    psTrace("psModules.detrend", 5, "generated detID %s\n", results->detID);
     
    225241
    226242    PS_ASSERT_PTR_NON_NULL(detID, NULL);
    227     PS_ASSERT_PTR_NON_NULL(classID, NULL);
    228243
    229244    bool status;
     
    232247
    233248    // generate the detselect command
    234     psStringAppend (&line, "detselect -select %s -class_id %s", detID, classID);
     249    psStringAppend (&line, "detselect -select %s", detID);
     250    if (classID && strlen(classID) > 0) {
     251        psStringAppend(&line, " -class_id %s", classID);
     252    }
    235253    pmConfigDatabaseCommand(&line, config);
    236254    pmConfigTraceCommand(&line);
Note: See TracChangeset for help on using the changeset viewer.