IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 26, 2010, 12:30:29 PM (16 years ago)
Author:
Serge CHASTEL
Message:

-version option vs file version taken into account/Field CMF_VERSION added to FITS file

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/ppTranslate/src/ppMopsRead.c

    r29560 r29565  
    88#include "ppMops.h"
    99
    10 psArray *ppMopsRead(const ppMopsArguments *args)
     10/*
     11  ppMopsRead possibly modifies the args->version if the user did not
     12  set it explicitely.
     13 */
     14psArray *ppMopsRead(ppMopsArguments *args)
    1115{
    1216    psTrace("ppMops.read", 1, "Reading input detections\n");
     
    1721    for (int i = 0; i < num; i++) {
    1822        psFits *fits = psFitsOpen(inNames->data[i], "r"); // FITS file
     23
    1924        if (!fits) {
    2025            psError(PS_ERR_IO, false, "Unable to open input %d", i);
     
    3742            return false;
    3843        }
     44        int skyChipPsfVersion = ppMopsGetSkyChipPsfVersion(fits);
     45        if (args->version == 0) {
     46          psTrace("ppMops.read", 1, "Changing args->version to %d\n", skyChipPsfVersion);
     47          args->version = skyChipPsfVersion;
     48        }
     49        if (skyChipPsfVersion == 0) {
     50          // Try to read with the user specified version?
     51          skyChipPsfVersion = args->version;
     52        }
     53        /* Display a warning message if there are version
     54           inconsistencies between the file and the flag (note that
     55           those inconsistencies might be wanted) */
     56        if (skyChipPsfVersion != args->version) {
     57          if (skyChipPsfVersion > args->version) {
     58            psWarning("The FITS data will be downgraded from PS1_DV%d to PS1_DV%d\n",
     59                      skyChipPsfVersion, args->version);
     60          } else { // Necessarily: skyChipPsfVersion > args->version
     61            psWarning("The FITS data will be upgraded from PS1_DV%d to PS1_DV%d (new values set to default 0, NaN...)\n",
     62                      skyChipPsfVersion, args->version);           
     63          }
     64        }
    3965
    4066        long size = psFitsTableSize(fits); // Size of table
     
    117143            //Additions of 2010-10-25
    118144            if (args->version == 2) {
    119               det->psfInstFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX");
    120               det->psfInstFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX_SIG");
    121               det->apMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG");
    122               det->apMagRaw->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RAW");
    123               det->apMagRadius->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RADIUS");
    124               det->apFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX");
    125               det->apFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX_SIG");
    126               det->peakFluxAsMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PEAK_FLUX_AS_MAG");
    127               det->calPsfMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG");
    128               det->calPsfMagSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG_SIG");
    129               det->sky->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY");
    130               det->skySig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY_SIGMA");
    131               det->qualityPerfect->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_QF_PERFECT");
    132               det->momentsR1->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_R1");
    133               det->momentsRH->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_RH");
    134               det->kronFlux->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX");
    135               det->kronFluxErr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_ERR");
    136               det->kronFluxInner->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_INNER");
    137               det->kronFluxOuter->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_OUTER");
    138               det->diffRP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_P");
    139               det->diffSnP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_P");
    140               det->diffRM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_M");
    141               det->diffSnM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_M");
    142               det->flags2->data.U32[numGood] = psMetadataLookupU32(NULL, row, "FLAGS2");
    143               det->ippIdet->data.U32[numGood] = psMetadataLookupU32(NULL, row, "IPP_IDET");
    144               det->nFrames->data.U16[numGood] = psMetadataLookupU16(NULL, row, "N_FRAMES");
    145               det->padding->data.S16[numGood] = psMetadataLookupS16(NULL, row, "PADDING");
    146             } else {
    147               det->psfInstFlux->data.F32[numGood] = NAN;
    148               det->psfInstFluxSig->data.F32[numGood] = NAN;
    149               det->apMag->data.F32[numGood] = NAN;
    150               det->apMagRaw->data.F32[numGood] = NAN;
    151               det->apMagRadius->data.F32[numGood] = NAN;
    152               det->apFlux->data.F32[numGood] = NAN;
    153               det->apFluxSig->data.F32[numGood] = NAN;
    154               det->peakFluxAsMag->data.F32[numGood] = NAN;
    155               det->calPsfMag->data.F32[numGood] = NAN;
    156               det->calPsfMagSig->data.F32[numGood] = NAN;
    157               det->sky->data.F32[numGood] = NAN;
    158               det->skySig->data.F32[numGood] = NAN;
    159               det->qualityPerfect->data.F32[numGood] = NAN;
    160               det->momentsR1->data.F32[numGood] = NAN;
    161               det->momentsRH->data.F32[numGood] = NAN;
    162               det->kronFlux->data.F32[numGood] = NAN;
    163               det->kronFluxErr->data.F32[numGood] = NAN;
    164               det->kronFluxInner->data.F32[numGood] = NAN;
    165               det->kronFluxOuter->data.F32[numGood] = NAN;
    166               det->diffRP->data.F32[numGood] = NAN;
    167               det->diffSnP->data.F32[numGood] = NAN;
    168               det->diffRM->data.F32[numGood] = NAN;
    169               det->diffSnM->data.F32[numGood] = NAN;
    170               det->flags2->data.U32[numGood] = 0;
    171               det->ippIdet->data.U32[numGood] = 0;
    172               det->nFrames->data.U16[numGood] = 0;
    173               det->padding->data.S16[numGood] = 0;
     145              //Values are set only if the version is 2
     146              if (skyChipPsfVersion == 2) {
     147                det->psfInstFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX");
     148                det->psfInstFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PSF_INST_FLUX_SIG");
     149                det->apMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG");
     150                det->apMagRaw->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RAW");
     151                det->apMagRadius->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_MAG_RADIUS");
     152                det->apFlux->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX");
     153                det->apFluxSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "AP_FLUX_SIG");
     154                det->peakFluxAsMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "PEAK_FLUX_AS_MAG");
     155                det->calPsfMag->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG");
     156                det->calPsfMagSig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "CAL_PSF_MAG_SIG");
     157                det->sky->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY");
     158                det->skySig->data.F32[numGood] = psMetadataLookupS32(NULL, row, "SKY_SIGMA");
     159                det->qualityPerfect->data.F32[numGood] = psMetadataLookupF32(NULL, row, "PSF_QF_PERFECT");
     160                det->momentsR1->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_R1");
     161                det->momentsRH->data.F32[numGood] = psMetadataLookupF32(NULL, row, "MOMENTS_RH");
     162                det->kronFlux->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX");
     163                det->kronFluxErr->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_ERR");
     164                det->kronFluxInner->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_INNER");
     165                det->kronFluxOuter->data.F32[numGood] = psMetadataLookupF32(NULL, row, "KRON_FLUX_OUTER");
     166                det->diffRP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_P");
     167                det->diffSnP->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_P");
     168                det->diffRM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_R_M");
     169                det->diffSnM->data.F32[numGood] = psMetadataLookupF32(NULL, row, "DIFF_SN_M");
     170                det->flags2->data.U32[numGood] = psMetadataLookupU32(NULL, row, "FLAGS2");
     171                det->ippIdet->data.U32[numGood] = psMetadataLookupU32(NULL, row, "IPP_IDET");
     172                det->nFrames->data.U16[numGood] = psMetadataLookupU16(NULL, row, "N_FRAMES");
     173                det->padding->data.S16[numGood] = psMetadataLookupS16(NULL, row, "PADDING");
     174              } else {
     175                det->psfInstFlux->data.F32[numGood] = NAN;
     176                det->psfInstFluxSig->data.F32[numGood] = NAN;
     177                det->apMag->data.F32[numGood] = NAN;
     178                det->apMagRaw->data.F32[numGood] = NAN;
     179                det->apMagRadius->data.F32[numGood] = NAN;
     180                det->apFlux->data.F32[numGood] = NAN;
     181                det->apFluxSig->data.F32[numGood] = NAN;
     182                det->peakFluxAsMag->data.F32[numGood] = NAN;
     183                det->calPsfMag->data.F32[numGood] = NAN;
     184                det->calPsfMagSig->data.F32[numGood] = NAN;
     185                det->sky->data.F32[numGood] = NAN;
     186                det->skySig->data.F32[numGood] = NAN;
     187                det->qualityPerfect->data.F32[numGood] = NAN;
     188                det->momentsR1->data.F32[numGood] = NAN;
     189                det->momentsRH->data.F32[numGood] = NAN;
     190                det->kronFlux->data.F32[numGood] = NAN;
     191                det->kronFluxErr->data.F32[numGood] = NAN;
     192                det->kronFluxInner->data.F32[numGood] = NAN;
     193                det->kronFluxOuter->data.F32[numGood] = NAN;
     194                det->diffRP->data.F32[numGood] = NAN;
     195                det->diffSnP->data.F32[numGood] = NAN;
     196                det->diffRM->data.F32[numGood] = NAN;
     197                det->diffSnM->data.F32[numGood] = NAN;
     198                det->flags2->data.U32[numGood] = 0;
     199                det->ippIdet->data.U32[numGood] = 0;
     200                det->nFrames->data.U16[numGood] = 0;
     201                det->padding->data.S16[numGood] = 0;
     202              }
    174203            }
    175204
Note: See TracChangeset for help on using the changeset viewer.