Changeset 14837
- Timestamp:
- Sep 14, 2007, 2:58:34 PM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/pmSourceIO_PS1_DEV_0.c
r14652 r14837 3 3 * @author EAM, IfA 4 4 * 5 * @version $Revision: 1.1 1$ $Name: not supported by cvs2svn $6 * @date $Date: 2007-0 8-24 00:11:02$5 * @version $Revision: 1.12 $ $Name: not supported by cvs2svn $ 6 * @date $Date: 2007-09-15 00:58:34 $ 7 7 * 8 8 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 42 42 // followed by a zero-size matrix, followed by the table data 43 43 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 45 45 // values derived in the DVO database. 46 46 // XXX how do I generate the source tables which I need to send to PSPS? … … 63 63 pmSource *source = (pmSource *) sources->data[i]; 64 64 65 // no difference between PSF and non-PSF model65 // no difference between PSF and non-PSF model 66 66 pmModel *model = pmSourceGetModel (NULL, source); 67 67 68 68 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, please81 yErr = 0.0; // XXX a better choice, please82 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 this69 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 90 90 91 91 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 better104 // 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 weight92 // 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 113 113 psMetadataAdd (row, PS_LIST_TAIL, "N_FRAMES", PS_DATA_U16, "Number of frames overlapping source center", nImageOverlap); 114 114 psMetadataAdd (row, PS_LIST_TAIL, "DUMMY", PS_DATA_U16, "padding", 0); 115 115 116 // XXX these calibrated values are not supplied by psphot analysis117 // 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); 123 123 124 124 psArrayAdd (table, 100, row); … … 172 172 source->type = PM_SOURCE_TYPE_STAR; 173 173 174 // NOTE: A SEGV here because "model" is NULL is probably caused by not initialising the models. 174 175 PAR = model->params->data.F32; 175 176 dPAR = model->dparams->data.F32; … … 184 185 axes.minor = psMetadataLookupF32 (&status, row, "PSF_WIDTH_Y"); 185 186 axes.theta = psMetadataLookupF32 (&status, row, "PSF_THETA"); 186 187 187 188 PAR[PM_PAR_SKY] = psMetadataLookupF32 (&status, row, "SKY"); 188 189 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]? 193 194 source->psfMag = psMetadataLookupF32 (&status, row, "PSF_INST_MAG"); 194 195 source->errMag = psMetadataLookupF32 (&status, row, "PSF_INST_MAG_SIG"); 195 196 196 pmPSF_AxesToModel (PAR, axes);197 pmPSF_AxesToModel (PAR, axes); 197 198 198 199 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; 202 203 203 204 source->pixWeight = psMetadataLookupF32 (&status, row, "PSF_QF"); 204 205 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"); 207 208 // psMetadataLookupF32 (&status, row, "PSF_PROBABILITY"); 208 209 // psMetadataLookupF32 (&status, row, "N_FRAMES");
Note:
See TracChangeset
for help on using the changeset viewer.
