IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14837


Ignore:
Timestamp:
Sep 14, 2007, 2:58:34 PM (19 years ago)
Author:
Paul Price
Message:

Adding note on where possible SEGVs might come from.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmSourceIO_PS1_DEV_0.c

    r14652 r14837  
    33 *  @author EAM, IfA
    44 *
    5  *  @version $Revision: 1.11 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2007-08-24 00:11:02 $
     5 *  @version $Revision: 1.12 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2007-09-15 00:58:34 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4242// followed by a zero-size matrix, followed by the table data
    4343
    44 // this output format is valid for psphot analysis of an image, and does not include calibrated 
     44// this output format is valid for psphot analysis of an image, and does not include calibrated
    4545// values derived in the DVO database.
    4646// XXX how do I generate the source tables which I need to send to PSPS?
     
    6363        pmSource *source = (pmSource *) sources->data[i];
    6464
    65         // no difference between PSF and non-PSF model
     65        // no difference between PSF and non-PSF model
    6666        pmModel *model = pmSourceGetModel (NULL, source);
    6767
    6868        if (model != NULL) {
    69             PAR = model->params->data.F32;
    70             dPAR = model->dparams->data.F32;
    71             xPos = PAR[PM_PAR_XPOS];
    72             yPos = PAR[PM_PAR_YPOS];
    73             xErr = dPAR[PM_PAR_XPOS];
    74             yErr = dPAR[PM_PAR_YPOS];
    75 
    76             axes = pmPSF_ModelToAxes (PAR, 20.0);
    77         } else {
    78             xPos = source->peak->xf;
    79             yPos = source->peak->yf;
    80             xErr = 0.0; // XXX a better choice, please
    81             yErr = 0.0; // XXX a better choice, please
    82             axes.major = 0.0;
    83             axes.minor = 0.0;
    84             axes.theta = 0.0;
    85         }
    86 
    87         float peakMag = (source->peak->flux > 0) ? -2.5*log10(source->peak->flux) : NAN;
    88         psS16 nImageOverlap = 1;
    89         psS32 ID = 0; // XXX need to figure out how to generate this
     69            PAR = model->params->data.F32;
     70            dPAR = model->dparams->data.F32;
     71            xPos = PAR[PM_PAR_XPOS];
     72            yPos = PAR[PM_PAR_YPOS];
     73            xErr = dPAR[PM_PAR_XPOS];
     74            yErr = dPAR[PM_PAR_YPOS];
     75
     76            axes = pmPSF_ModelToAxes (PAR, 20.0);
     77        } else {
     78            xPos = source->peak->xf;
     79            yPos = source->peak->yf;
     80            xErr = 0.0; // XXX a better choice, please
     81            yErr = 0.0; // XXX a better choice, please
     82            axes.major = 0.0;
     83            axes.minor = 0.0;
     84            axes.theta = 0.0;
     85        }
     86
     87        float peakMag = (source->peak->flux > 0) ? -2.5*log10(source->peak->flux) : NAN;
     88        psS16 nImageOverlap = 1;
     89        psS32 ID = 0; // XXX need to figure out how to generate this
    9090
    9191        row = psMetadataAlloc ();
    92         // XXX we are not writing out the mode (flags) or the type (psf, ext, etc)
    93         psMetadataAdd (row, PS_LIST_TAIL, "IPP_IDET",         PS_DATA_U32, "IPP detection identifier index",             ID);
    94         psMetadataAdd (row, PS_LIST_TAIL, "X_PSF",            PS_DATA_F32, "PSF x coordinate",                           xPos);
    95         psMetadataAdd (row, PS_LIST_TAIL, "Y_PSF",            PS_DATA_F32, "PSF y coordinate",                          yPos);
    96         psMetadataAdd (row, PS_LIST_TAIL, "X_PSF_SIG",        PS_DATA_F32, "Sigma in PSF x coordinate",                  xErr);
    97         psMetadataAdd (row, PS_LIST_TAIL, "Y_PSF_SIG",        PS_DATA_F32, "Sigma in PSF y coordinate",                  yErr);
    98         psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_MAG",     PS_DATA_F32, "PSF fit instrumental magnitude",            PS_MIN (99.0, source->psfMag));
    99         psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude",        PS_MIN (99.0, source->errMag));
    100         psMetadataAdd (row, PS_LIST_TAIL, "PEAK_FLUX_AS_MAG", PS_DATA_F32, "Peak flux expressed as magnitude",          PS_MIN (99.0, peakMag));
    101         psMetadataAdd (row, PS_LIST_TAIL, "SKY",              PS_DATA_F32, "Sky level",                                  source->sky);
    102         psMetadataAdd (row, PS_LIST_TAIL, "SKY_SIGMA",        PS_DATA_F32, "Sigma of sky level",                        source->skyErr);
    103         // XXX this is called STAR_GALAXY_SEP in the ICD; PSF_PROB is better
    104         // XXX need to set this value in psphotEvalPSF
    105         // XXX can I use the 2d polynomial peak fit to constrain this for the low-sn sources?
    106         psMetadataAdd (row, PS_LIST_TAIL, "PSF_PROBABILITY",  PS_DATA_F32,  "Probability of PSF-ness",                  NAN);
    107         // XXX these should be major and minor, not 'x' and 'y'
    108         psMetadataAdd (row, PS_LIST_TAIL, "PSF_WIDTH_X",      PS_DATA_F32, "PSF width in x coordinate",                  axes.major);
    109         psMetadataAdd (row, PS_LIST_TAIL, "PSF_WIDTH_Y",      PS_DATA_F32, "PSF width in y coordinate",                  axes.minor);
    110         psMetadataAdd (row, PS_LIST_TAIL, "PSF_THETA",        PS_DATA_F32, "PSF orientation angle",                      axes.theta);
    111         psMetadataAdd (row, PS_LIST_TAIL, "PSF_QF",           PS_DATA_F32, "PSF coverage/quality factor",                source->pixWeight);
    112         // XXX not sure how to get this : need to load Nimages with weight
     92        // XXX we are not writing out the mode (flags) or the type (psf, ext, etc)
     93        psMetadataAdd (row, PS_LIST_TAIL, "IPP_IDET",         PS_DATA_U32, "IPP detection identifier index",             ID);
     94        psMetadataAdd (row, PS_LIST_TAIL, "X_PSF",            PS_DATA_F32, "PSF x coordinate",                           xPos);
     95        psMetadataAdd (row, PS_LIST_TAIL, "Y_PSF",            PS_DATA_F32, "PSF y coordinate",                          yPos);
     96        psMetadataAdd (row, PS_LIST_TAIL, "X_PSF_SIG",        PS_DATA_F32, "Sigma in PSF x coordinate",                  xErr);
     97        psMetadataAdd (row, PS_LIST_TAIL, "Y_PSF_SIG",        PS_DATA_F32, "Sigma in PSF y coordinate",                  yErr);
     98        psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_MAG",     PS_DATA_F32, "PSF fit instrumental magnitude",            PS_MIN (99.0, source->psfMag));
     99        psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude",        PS_MIN (99.0, source->errMag));
     100        psMetadataAdd (row, PS_LIST_TAIL, "PEAK_FLUX_AS_MAG", PS_DATA_F32, "Peak flux expressed as magnitude",          PS_MIN (99.0, peakMag));
     101        psMetadataAdd (row, PS_LIST_TAIL, "SKY",              PS_DATA_F32, "Sky level",                                  source->sky);
     102        psMetadataAdd (row, PS_LIST_TAIL, "SKY_SIGMA",        PS_DATA_F32, "Sigma of sky level",                        source->skyErr);
     103        // XXX this is called STAR_GALAXY_SEP in the ICD; PSF_PROB is better
     104        // XXX need to set this value in psphotEvalPSF
     105        // XXX can I use the 2d polynomial peak fit to constrain this for the low-sn sources?
     106        psMetadataAdd (row, PS_LIST_TAIL, "PSF_PROBABILITY",  PS_DATA_F32,  "Probability of PSF-ness",                  NAN);
     107        // XXX these should be major and minor, not 'x' and 'y'
     108        psMetadataAdd (row, PS_LIST_TAIL, "PSF_WIDTH_X",      PS_DATA_F32, "PSF width in x coordinate",                  axes.major);
     109        psMetadataAdd (row, PS_LIST_TAIL, "PSF_WIDTH_Y",      PS_DATA_F32, "PSF width in y coordinate",                  axes.minor);
     110        psMetadataAdd (row, PS_LIST_TAIL, "PSF_THETA",        PS_DATA_F32, "PSF orientation angle",                      axes.theta);
     111        psMetadataAdd (row, PS_LIST_TAIL, "PSF_QF",           PS_DATA_F32, "PSF coverage/quality factor",                source->pixWeight);
     112        // XXX not sure how to get this : need to load Nimages with weight
    113113        psMetadataAdd (row, PS_LIST_TAIL, "N_FRAMES",         PS_DATA_U16, "Number of frames overlapping source center", nImageOverlap);
    114114        psMetadataAdd (row, PS_LIST_TAIL, "DUMMY",            PS_DATA_U16, "padding", 0);
    115115
    116         // XXX these calibrated values are not supplied by psphot analysis
    117         // psMetadataAdd (row, PS_LIST_TAIL, "RA_PSF",           PS_DATA_F64, "RA from PSF fit",                        RA);
    118         // psMetadataAdd (row, PS_LIST_TAIL, "DEC_PSF",          PS_DATA_F64, "DEC from PSF fit",                        DEC);
    119         // psMetadataAdd (row, PS_LIST_TAIL, "RA_PSF_SIG",       PS_DATA_F32, "Sigma of PSF fit RA",                    dRA);
    120         // psMetadataAdd (row, PS_LIST_TAIL, "DEC_PSF_SIG",      PS_DATA_F32, "Sigma of PSF fit DEC",                    dDEC);
    121         // psMetadataAdd (row, PS_LIST_TAIL, "CAL_PSF_MAG",      PS_DATA_F32, "Calibrated magnitude",                    calMag);
    122         // psMetadataAdd (row, PS_LIST_TAIL, "CAL_PSF_MAG_sIG",  PS_DATA_F32, "Sigma of calibrated magnitude",          calMagErr);
     116        // XXX these calibrated values are not supplied by psphot analysis
     117        // psMetadataAdd (row, PS_LIST_TAIL, "RA_PSF",           PS_DATA_F64, "RA from PSF fit",                        RA);
     118        // psMetadataAdd (row, PS_LIST_TAIL, "DEC_PSF",          PS_DATA_F64, "DEC from PSF fit",                        DEC);
     119        // psMetadataAdd (row, PS_LIST_TAIL, "RA_PSF_SIG",       PS_DATA_F32, "Sigma of PSF fit RA",                    dRA);
     120        // psMetadataAdd (row, PS_LIST_TAIL, "DEC_PSF_SIG",      PS_DATA_F32, "Sigma of PSF fit DEC",                    dDEC);
     121        // psMetadataAdd (row, PS_LIST_TAIL, "CAL_PSF_MAG",      PS_DATA_F32, "Calibrated magnitude",                    calMag);
     122        // psMetadataAdd (row, PS_LIST_TAIL, "CAL_PSF_MAG_sIG",  PS_DATA_F32, "Sigma of calibrated magnitude",          calMagErr);
    123123
    124124        psArrayAdd (table, 100, row);
     
    172172        source->type = PM_SOURCE_TYPE_STAR;
    173173
     174        // NOTE: A SEGV here because "model" is NULL is probably caused by not initialising the models.
    174175        PAR = model->params->data.F32;
    175176        dPAR = model->dparams->data.F32;
     
    184185        axes.minor        = psMetadataLookupF32 (&status, row, "PSF_WIDTH_Y");
    185186        axes.theta        = psMetadataLookupF32 (&status, row, "PSF_THETA");
    186        
     187
    187188        PAR[PM_PAR_SKY]   = psMetadataLookupF32 (&status, row, "SKY");
    188189        dPAR[PM_PAR_SKY]  = psMetadataLookupF32 (&status, row, "SKY_SIGMA");
    189         source->sky = PAR[PM_PAR_SKY];
    190         source->skyErr = dPAR[PM_PAR_SKY];
    191 
    192         // XXX use these to determine PAR[PM_PAR_I0]?
     190        source->sky = PAR[PM_PAR_SKY];
     191        source->skyErr = dPAR[PM_PAR_SKY];
     192
     193        // XXX use these to determine PAR[PM_PAR_I0]?
    193194        source->psfMag    = psMetadataLookupF32 (&status, row, "PSF_INST_MAG");
    194195        source->errMag    = psMetadataLookupF32 (&status, row, "PSF_INST_MAG_SIG");
    195196
    196         pmPSF_AxesToModel (PAR, axes);
     197        pmPSF_AxesToModel (PAR, axes);
    197198
    198199        float lflux = psMetadataLookupF32 (&status, row, "PEAK_FLUX_AS_MAG");
    199         float flux = (isfinite(lflux)) ? pow(10.0, -0.4*lflux) : NAN;
    200         source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], flux, PM_PEAK_LONE);
    201         source->peak->flux = flux;
     200        float flux = (isfinite(lflux)) ? pow(10.0, -0.4*lflux) : NAN;
     201        source->peak = pmPeakAlloc(PAR[PM_PAR_XPOS], PAR[PM_PAR_YPOS], flux, PM_PEAK_LONE);
     202        source->peak->flux = flux;
    202203
    203204        source->pixWeight = psMetadataLookupF32 (&status, row, "PSF_QF");
    204205
    205         // XXX other values saved but not loaded?
    206         // psMetadataLookupS64 (&status, row, "IPP_IDET");
     206        // XXX other values saved but not loaded?
     207        // psMetadataLookupS64 (&status, row, "IPP_IDET");
    207208        // psMetadataLookupF32 (&status, row, "PSF_PROBABILITY");
    208209        // psMetadataLookupF32 (&status, row, "N_FRAMES");
Note: See TracChangeset for help on using the changeset viewer.