Changeset 16294 for trunk/psModules/src/objects/pmSourceIO_PS1_DEV_1.c
- Timestamp:
- Feb 3, 2008, 12:04:47 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/pmSourceIO_PS1_DEV_1.c
r15980 r16294 3 3 * @author EAM, IfA 4 4 * 5 * @version $Revision: 1. 7$ $Name: not supported by cvs2svn $6 * @date $Date: 2008-0 1-02 20:39:04$5 * @version $Revision: 1.8 $ $Name: not supported by cvs2svn $ 6 * @date $Date: 2008-02-03 22:04:47 $ 7 7 * 8 8 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii … … 284 284 // we write out all sources, regardless of quality. the source flags tell us the state 285 285 for (i = 0; i < sources->n; i++) { 286 pmSource *source = (pmSource *) sources->data[i]; 287 source->seq = i; 286 // source->seq is set during the PSF output step, which must be called 287 // XXX test here if seq is set? 288 288 289 289 // skip source if it is not a ext sourc 290 291 // no difference between PSF and non-PSF model 292 // XXX the PSF output should report the value for the psf, not the ext, model 293 pmModel *model = source->modelEXT; 290 // XXX we have two places that extended source parameters are measured: 291 // psphotExtendedSources, which measures the aperture-like parameters and (potentially) the psf-convolved extended source models, 292 // psphotFitEXT, which does the simple extended source model fit (not psf-convolved) 293 // should we require both? 294 295 pmSource *source = sources->data[i]; 296 297 // choose the convolved EXT model, if available, otherwise the simple one 298 pmModel *model = source->modelConv; 299 if (model == NULL) { 300 model = source->modelEXT; 301 } 294 302 if (model == NULL) continue; 303 304 // XXX do we need to do this? 305 if (source->extpars == NULL) continue; 295 306 296 307 PAR = model->params->data.F32; … … 306 317 // XXX we are not writing out the mode (flags) or the type (psf, ext, etc) 307 318 psMetadataAdd (row, PS_LIST_TAIL, "IPP_IDET", PS_DATA_U32, "IPP detection identifier index", source->seq); 308 psMetadataAdd (row, PS_LIST_TAIL, "X_EXT", PS_DATA_F32, "PSF x coordinate", xPos); 309 psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT", PS_DATA_F32, "PSF y coordinate", yPos); 310 psMetadataAdd (row, PS_LIST_TAIL, "X_EXT_SIG", PS_DATA_F32, "Sigma in PSF x coordinate", xErr); 311 psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT_SIG", PS_DATA_F32, "Sigma in PSF y coordinate", yErr); 312 psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG", PS_DATA_F32, "PSF fit instrumental magnitude", PS_MIN (99.0, source->extMag)); 313 // XXX need to calculate psfMag, psfMagErr, extMag, extMagErr... 314 psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude", PS_MIN (99.0, source->errMag)); 319 psMetadataAdd (row, PS_LIST_TAIL, "X_EXT", PS_DATA_F32, "EXT model x coordinate", xPos); 320 psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT", PS_DATA_F32, "EXT model y coordinate", yPos); 321 psMetadataAdd (row, PS_LIST_TAIL, "X_EXT_SIG", PS_DATA_F32, "Sigma in EXT x coordinate", xErr); 322 psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT_SIG", PS_DATA_F32, "Sigma in EXT y coordinate", yErr); 323 psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG", PS_DATA_F32, "EXT fit instrumental magnitude", source->extMag); 324 psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude", source->errMag); 315 325 316 326 // XXX these should be major and minor, not 'x' and 'y' 317 psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_X", PS_DATA_F32, "PSF width in x coordinate", axes.major); 318 psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_Y", PS_DATA_F32, "PSF width in y coordinate", axes.minor); 319 psMetadataAdd (row, PS_LIST_TAIL, "EXT_THETA", PS_DATA_F32, "PSF orientation angle", axes.theta); 327 psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ", PS_DATA_F32, "EXT width in x coordinate", axes.major); 328 psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_MIN", PS_DATA_F32, "EXT width in y coordinate", axes.minor); 329 psMetadataAdd (row, PS_LIST_TAIL, "EXT_THETA", PS_DATA_F32, "EXT orientation angle", axes.theta); 330 331 // XXX at the moment, this will be a fixed size table, but perhaps have multiple output formats depending on what is measured? 320 332 321 333 // other values that I need to report: 322 334 // R, Mag Petrosian, ..... 335 if (source->extpars) { 336 337 // Petrosian measurements 338 pmSourcePetrosianValues *petrosian = source->extpars->petrosian; 339 if (petrosian) { 340 psMetadataAdd (row, PS_LIST_TAIL, "PETRO_MAG", PS_DATA_F32, "Petrosian Magnitude", petrosian->mag); 341 psMetadataAdd (row, PS_LIST_TAIL, "PETRO_MAG_ERR", PS_DATA_F32, "Petrosian Magnitude Error", petrosian->magErr); 342 psMetadataAdd (row, PS_LIST_TAIL, "PETRO_RADIUS", PS_DATA_F32, "Petrosian Radius", petrosian->rad); 343 psMetadataAdd (row, PS_LIST_TAIL, "PETRO_RADIUS_ERR", PS_DATA_F32, "Petrosian Radius Error", petrosian->radErr); 344 } 345 346 // Kron measurements 347 pmSourceKronValues *kron = source->extpars->kron; 348 if (kron) { 349 psMetadataAdd (row, PS_LIST_TAIL, "KRON_MAG", PS_DATA_F32, "Kron Magnitude", kron->mag); 350 psMetadataAdd (row, PS_LIST_TAIL, "KRON_MAG_ERR", PS_DATA_F32, "Kron Magnitude Error", kron->magErr); 351 psMetadataAdd (row, PS_LIST_TAIL, "KRON_RADIUS", PS_DATA_F32, "Kron Radius", kron->rad); 352 psMetadataAdd (row, PS_LIST_TAIL, "KRON_RADIUS_ERR", PS_DATA_F32, "Kron Radius Error", kron->radErr); 353 } 354 355 // Isophot measurements 356 // XXX insert header data: isophotal level 357 pmSourceIsophotalValues *isophot = source->extpars->isophot; 358 if (isophot) { 359 psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_MAG", PS_DATA_F32, "Isophot Magnitude", isophot->mag); 360 psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_MAG_ERR", PS_DATA_F32, "Isophot Magnitude Error", isophot->magErr); 361 psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_RADIUS", PS_DATA_F32, "Isophot Radius", isophot->rad); 362 psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_RADIUS_ERR", PS_DATA_F32, "Isophot Radius Error", isophot->radErr); 363 } 364 365 pmSourceAnnuli *annuli = source->extpars->annuli; 366 if (annuli) { 367 psVector *fluxVal = annuli->flux; 368 psVector *fluxErr = annuli->fluxErr; 369 psVector *fluxVar = annuli->fluxVar; 370 371 for (int j = 0; j < fluxVal->n; j++) { 372 char name[32]; 373 sprintf (name, "FLUX_VAL_R_%02d", j); 374 psMetadataAdd (row, PS_LIST_TAIL, name, PS_DATA_F32, "flux value in annulus", fluxVal->data.F32[j]); 375 sprintf (name, "FLUX_ERR_R_%02d", j); 376 psMetadataAdd (row, PS_LIST_TAIL, name, PS_DATA_F32, "flux error in annulus", fluxErr->data.F32[j]); 377 sprintf (name, "FLUX_VAR_R_%02d", j); 378 psMetadataAdd (row, PS_LIST_TAIL, name, PS_DATA_F32, "flux stdev in annulus", fluxVar->data.F32[j]); 379 } 380 } 381 } 323 382 324 383 psArrayAdd (table, 100, row);
Note:
See TracChangeset
for help on using the changeset viewer.
