Changeset 34260 for trunk/Ohana/src/addstar/src/ReadStarsFITS.c
- Timestamp:
- Jul 31, 2012, 4:02:00 PM (14 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/addstar/src/ReadStarsFITS.c (modified) (20 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/addstar/src/ReadStarsFITS.c
r31160 r34260 10 10 Header theader; 11 11 FTable table; 12 Stars *stars; 12 Stars *stars; // Stars contains Average and Measure 13 13 14 14 if (in_theader == NULL) { … … 89 89 InitStar (&stars[i]); 90 90 91 stars[i].measure.Xccd = smpdata[i].X; 92 stars[i].measure.Yccd = smpdata[i].Y; 91 stars[i].measure.Xccd = smpdata[i].X; 92 stars[i].measure.Yccd = smpdata[i].Y; 93 stars[i].measure.dXccd = NAN_S_SHORT; // not provided by SMPDATA: 94 stars[i].measure.dYccd = NAN_S_SHORT; // not provided by SMPDATA: 95 96 stars[i].measure.posangle = NAN_S_SHORT; // not provided by SMPDATA: 97 stars[i].measure.pltscale = NAN; // not provided by SMPDATA: 93 98 94 99 if ((smpdata[i].M >= ZeroPt) || isnan(smpdata[i].M)) { 95 stars[i].measure.M = NAN; 96 stars[i].measure.Map = NAN; 97 } else { 98 stars[i].measure.M = smpdata[i].M; 99 stars[i].measure.Map = smpdata[i].M; 100 } 101 102 stars[i].measure.dM = smpdata[i].dM*0.001; 103 100 stars[i].measure.M = NAN; 101 stars[i].measure.Map = NAN; 102 stars[i].measure.FluxPSF = NAN; 103 stars[i].measure.dFluxPSF = NAN; 104 } else { 105 stars[i].measure.M = smpdata[i].M; 106 stars[i].measure.Map = smpdata[i].M; 107 stars[i].measure.FluxPSF = pow(10.0, -0.4*smpdata[i].M); 108 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * smpdata[i].dM; 109 } 110 stars[i].measure.dM = smpdata[i].dM*0.001; 111 stars[i].measure.dMcal = NAN; // not provided by SMPDATA: 112 113 stars[i].measure.Mkron = NAN; // not provided by SMPDATA: 114 stars[i].measure.dMkron = NAN; // not provided by SMPDATA: 115 stars[i].measure.FluxKron = NAN; // not provided by SMPDATA: 116 stars[i].measure.dFluxKron = NAN; // not provided by SMPDATA: 117 118 stars[i].measure.Sky = NAN; // not provided by SMPDATA: 119 stars[i].measure.dSky = NAN; // not provided by SMPDATA: 120 121 stars[i].measure.psfChisq = NAN; // not provided by SMPDATA: 122 stars[i].measure.psfQual = NAN; // not provided by SMPDATA: 123 stars[i].measure.psfNdof = NAN_S_INT; // not provided by SMPDATA: 124 stars[i].measure.psfNpix = NAN_S_INT; // not provided by SMPDATA: 125 stars[i].measure.crNsigma = NAN; // not provided by SMPDATA: 126 stars[i].measure.extNsigma = NAN; // not provided by SMPDATA: 127 128 stars[i].measure.FWx = ToShortPixels (smpdata[i].fx); 129 stars[i].measure.FWy = ToShortPixels (smpdata[i].fy); 130 stars[i].measure.theta = ToShortDegrees (smpdata[i].df); 131 132 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by SMPDATA: 133 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by SMPDATA: 134 stars[i].measure.Myy = NAN_S_SHORT; // not provided by SMPDATA: 135 104 136 // the dophot type information gets pushed into the upper 2 bytes of photFlags 105 stars[i].measure.photFlags = (smpdata[i].dophot << 16); 106 107 stars[i].measure.FWx = ToShortPixels (smpdata[i].fx); 108 stars[i].measure.FWy = ToShortPixels (smpdata[i].fy); 109 stars[i].measure.theta = ToShortDegrees (smpdata[i].df); 137 stars[i].measure.photFlags = (smpdata[i].dophot << 16); 110 138 } 111 139 *nstars = Nstars; … … 131 159 for (i = 0; i < Nstars; i++) { 132 160 InitStar (&stars[i]); 133 stars[i].measure.Xccd = ps1data[i].X; 134 stars[i].measure.Yccd = ps1data[i].Y; 135 136 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 137 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 161 stars[i].measure.Xccd = ps1data[i].X; 162 stars[i].measure.Yccd = ps1data[i].Y; 163 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 164 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 138 165 166 stars[i].measure.posangle = NAN_S_SHORT; // not provided by PS1_DEV_0: 167 stars[i].measure.pltscale = NAN; // not provided by PS1_DEV_0: 168 139 169 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 140 stars[i].measure.M = NAN; 141 } else { 142 stars[i].measure.M = ps1data[i].M + ZeroPt; 143 } 144 stars[i].measure.Map = NAN; 145 stars[i].measure.dM = ps1data[i].dM; 146 stars[i].measure.Sky = ps1data[i].sky; 147 stars[i].measure.dSky = ps1data[i].dSky; 148 149 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 150 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 151 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 152 153 stars[i].measure.psfChisq = ps1data[i].psfChisq; 154 stars[i].measure.psfQual = ps1data[i].psfQual; 155 156 stars[i].measure.detID = ps1data[i].detID; 170 stars[i].measure.M = NAN; 171 stars[i].measure.FluxPSF = NAN; 172 stars[i].measure.dFluxPSF = NAN; 173 } else { 174 stars[i].measure.M = ps1data[i].M + ZeroPt; 175 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 176 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 177 } 178 stars[i].measure.dM = ps1data[i].dM; 179 stars[i].measure.dMcal = NAN; // not provided by PS1_DEV_0: 180 stars[i].measure.Map = NAN; // not provided by PS1_DEV_0: 181 182 stars[i].measure.Mkron = NAN; // not provided by PS1_DEV_0: 183 stars[i].measure.dMkron = NAN; // not provided by PS1_DEV_0: 184 stars[i].measure.FluxKron = NAN; // not provided by PS1_DEV_0: 185 stars[i].measure.dFluxKron = NAN; // not provided by PS1_DEV_0: 186 187 stars[i].measure.Sky = ps1data[i].sky; 188 stars[i].measure.dSky = ps1data[i].dSky; 189 190 stars[i].measure.psfChisq = ps1data[i].psfChisq; 191 stars[i].measure.psfQual = ps1data[i].psfQual; 192 stars[i].measure.psfNdof = NAN_S_INT; // not provided by PS1_DEV_0: 193 stars[i].measure.psfNpix = NAN_S_INT; // not provided by PS1_DEV_0: 194 stars[i].measure.crNsigma = NAN; // not provided by PS1_DEV_0: 195 stars[i].measure.extNsigma = NAN; // not provided by PS1_DEV_0: 196 197 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 198 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 199 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 200 201 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by PS1_DEV_0: 202 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by PS1_DEV_0: 203 stars[i].measure.Myy = NAN_S_SHORT; // not provided by PS1_DEV_0: 204 205 stars[i].measure.photFlags = 0; // not provided by PS1_DEV_0: 206 207 stars[i].measure.detID = ps1data[i].detID; 157 208 } 158 209 *nstars = Nstars; … … 182 233 stars[i].measure.Xccd = ps1data[i].X; 183 234 stars[i].measure.Yccd = ps1data[i].Y; 184 185 235 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 186 236 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 187 237 238 stars[i].measure.posangle = NAN_S_SHORT; // not provided by PS1_DEV_1: 239 stars[i].measure.pltscale = NAN; // not provided by PS1_DEV_1: 240 188 241 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 189 stars[i].measure.M = NAN; 190 } else { 191 stars[i].measure.M = ps1data[i].M + ZeroPt; 192 } 193 stars[i].measure.Map = NAN; 242 stars[i].measure.M = NAN; 243 stars[i].measure.FluxPSF = NAN; 244 stars[i].measure.dFluxPSF = NAN; 245 } else { 246 stars[i].measure.M = ps1data[i].M + ZeroPt; 247 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 248 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 249 } 194 250 stars[i].measure.dM = ps1data[i].dM; 251 stars[i].measure.dMcal = NAN; // not provided by PS1_DEV_1: 252 stars[i].measure.Map = NAN; // not provided by PS1_DEV_1: 253 254 stars[i].measure.Mkron = NAN; // not provided by PS1_DEV_1: 255 stars[i].measure.dMkron = NAN; // not provided by PS1_DEV_1: 256 stars[i].measure.FluxKron = NAN; // not provided by PS1_DEV_1: 257 stars[i].measure.dFluxKron = NAN; // not provided by PS1_DEV_1: 258 195 259 stars[i].measure.Sky = ps1data[i].sky; 196 260 stars[i].measure.dSky = ps1data[i].dSky; 261 262 stars[i].measure.psfChisq = ps1data[i].psfChisq; 263 stars[i].measure.psfQual = ps1data[i].psfQual; 264 stars[i].measure.psfNdof = NAN_S_INT; // not provided by PS1_DEV_1: 265 stars[i].measure.psfNpix = NAN_S_INT; // not provided by PS1_DEV_1: 266 stars[i].measure.crNsigma = ps1data[i].crNsigma; 267 stars[i].measure.extNsigma = ps1data[i].extNsigma; 197 268 198 269 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); … … 200 271 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 201 272 202 stars[i].measure.psfChisq = ps1data[i].psfChisq; 203 stars[i].measure.psfQual = ps1data[i].psfQual; 204 stars[i].measure.crNsigma = ps1data[i].crNsigma; 205 stars[i].measure.extNsigma = ps1data[i].extNsigma; 206 207 stars[i].measure.detID = ps1data[i].detID; 273 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by PS1_DEV_1: 274 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by PS1_DEV_1: 275 stars[i].measure.Myy = NAN_S_SHORT; // not provided by PS1_DEV_1: 276 208 277 stars[i].measure.photFlags = ps1data[i].flags; 278 279 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 280 stars[i].measure.detID = ps1data[i].detID; 209 281 } 210 282 *nstars = Nstars; … … 229 301 230 302 if (table[0].header[0].Naxis[0] == 136) { 231 stars = Convert_PS1_V1_Alt (table, nstars);232 return (stars);303 stars = Convert_PS1_V1_Alt (table, nstars); 304 return (stars); 233 305 } 234 306 … … 252 324 253 325 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 254 stars[i].measure.M = NAN; 255 } else { 256 stars[i].measure.M = ps1data[i].M + ZeroPt; 326 stars[i].measure.M = NAN; 327 stars[i].measure.FluxPSF = NAN; 328 stars[i].measure.dFluxPSF = NAN; 329 } else { 330 stars[i].measure.M = ps1data[i].M + ZeroPt; 331 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 332 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 257 333 } 258 334 stars[i].measure.dM = ps1data[i].dM; 259 335 stars[i].measure.dMcal = ps1data[i].dMcal; 260 336 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 261 337 338 stars[i].measure.Mkron = NAN; // not provided by PS1_V1: 339 stars[i].measure.dMkron = NAN; // not provided by PS1_V1: 340 stars[i].measure.FluxKron = NAN; // not provided by PS1_V1: 341 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V1: 342 262 343 stars[i].measure.Sky = ps1data[i].sky; 263 344 stars[i].measure.dSky = ps1data[i].dSky; 264 345 265 346 stars[i].measure.psfChisq = ps1data[i].psfChisq; 266 347 stars[i].measure.psfQual = ps1data[i].psfQual; … … 277 358 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 278 359 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 279 360 280 361 stars[i].measure.photFlags = ps1data[i].flags; 281 362 … … 328 409 329 410 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 330 stars[i].measure.M = NAN; 331 } else { 332 stars[i].measure.M = ps1data[i].M + ZeroPt; 411 stars[i].measure.M = NAN; 412 stars[i].measure.FluxPSF = NAN; 413 stars[i].measure.dFluxPSF = NAN; 414 } else { 415 stars[i].measure.M = ps1data[i].M + ZeroPt; 416 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 417 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 333 418 } 334 419 stars[i].measure.dM = ps1data[i].dM; 335 420 stars[i].measure.dMcal = ps1data[i].dMcal; 336 421 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 337 422 423 stars[i].measure.Mkron = NAN; // not provided by PS1_V1_Alt: 424 stars[i].measure.dMkron = NAN; // not provided by PS1_V1_Alt: 425 stars[i].measure.FluxKron = NAN; // not provided by PS1_V1_Alt: 426 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V1_Alt: 427 338 428 stars[i].measure.Sky = ps1data[i].sky; 339 429 stars[i].measure.dSky = ps1data[i].dSky; 340 430 341 431 stars[i].measure.psfChisq = ps1data[i].psfChisq; 342 432 stars[i].measure.psfQual = ps1data[i].psfQual; … … 353 443 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 354 444 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 355 445 356 446 stars[i].measure.photFlags = ps1data[i].flags; 357 447 … … 396 486 397 487 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 398 stars[i].measure.M = NAN; 399 } else { 400 stars[i].measure.M = ps1data[i].M + ZeroPt; 488 stars[i].measure.M = NAN; 489 stars[i].measure.FluxPSF = NAN; 490 stars[i].measure.dFluxPSF = NAN; 491 } else { 492 stars[i].measure.M = ps1data[i].M + ZeroPt; 493 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 494 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 401 495 } 402 496 stars[i].measure.dM = ps1data[i].dM; 403 497 stars[i].measure.dMcal = ps1data[i].dMcal; 404 498 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 405 499 500 stars[i].measure.Mkron = NAN; // not provided by PS1_V2: 501 stars[i].measure.dMkron = NAN; // not provided by PS1_V2: 502 stars[i].measure.FluxKron = NAN; // not provided by PS1_V2: 503 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V2: 504 406 505 stars[i].measure.Sky = ps1data[i].sky; 407 506 stars[i].measure.dSky = ps1data[i].dSky; 408 507 409 508 stars[i].measure.psfChisq = ps1data[i].psfChisq; 410 509 stars[i].measure.psfQual = ps1data[i].psfQual; … … 421 520 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 422 521 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 423 522 424 523 stars[i].measure.photFlags = ps1data[i].flags; 425 524 … … 464 563 465 564 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 466 stars[i].measure.M = NAN;467 } else { 468 stars[i].measure.M = ps1data[i].M + ZeroPt;565 stars[i].measure.M = NAN; 566 } else { 567 stars[i].measure.M = ps1data[i].M + ZeroPt; 469 568 } 470 569 stars[i].measure.dM = ps1data[i].dM; 471 570 stars[i].measure.dMcal = ps1data[i].dMcal; 472 571 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 473 572 573 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 574 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 575 576 // these fluxes are converted from counts to counts/sec in FilterStars.c 577 stars[i].measure.FluxPSF = ps1data[i].Flux; 578 stars[i].measure.dFluxPSF = ps1data[i].dFlux; 579 stars[i].measure.FluxKron = ps1data[i].kronFlux; 580 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 581 474 582 stars[i].measure.Sky = ps1data[i].sky; 475 583 stars[i].measure.dSky = ps1data[i].dSky; 476 584 477 585 stars[i].measure.psfChisq = ps1data[i].psfChisq; 478 586 stars[i].measure.psfQual = ps1data[i].psfQual; … … 489 597 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 490 598 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 491 599 492 600 stars[i].measure.photFlags = ps1data[i].flags; 493 601 … … 496 604 497 605 // the Average fields and the following Measure fields are set in FilterStars after 498 // the image metadata is in hand: dR, dD, Mcal, dt, airmass, az, t, imageID, extID, 499 // averef is set in find_matches, dbFlags is zero on ingest. 606 // the image metadata is in hand: dR, dD, Mcal, dt, airmass, az, t, imageID, extID. 607 608 // averef is set in find_matches 609 610 // dbFlags is zero on ingest. 500 611 501 612 // the following fields are currently not being set anywhere: t_msec … … 514 625 515 626 if (table[0].header[0].Naxis[0] == 196) { 516 stars = Convert_PS1_SV1_Alt (table, nstars);517 return (stars);627 stars = Convert_PS1_SV1_Alt (table, nstars); 628 return (stars); 518 629 } 519 630 … … 537 648 538 649 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 539 stars[i].measure.M = NAN;540 } else { 541 stars[i].measure.M = ps1data[i].M + ZeroPt;650 stars[i].measure.M = NAN; 651 } else { 652 stars[i].measure.M = ps1data[i].M + ZeroPt; 542 653 } 543 654 stars[i].measure.dM = ps1data[i].dM; 544 655 stars[i].measure.dMcal = ps1data[i].dMcal; 545 656 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 546 657 658 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 659 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 660 661 // these fluxes are converted from counts to counts/sec in FilterStars.c 662 stars[i].measure.FluxPSF = ps1data[i].Flux; 663 stars[i].measure.dFluxPSF = ps1data[i].dFlux; 664 stars[i].measure.FluxKron = ps1data[i].kronFlux; 665 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 666 547 667 stars[i].measure.Sky = ps1data[i].sky; 548 668 stars[i].measure.dSky = ps1data[i].dSky; 549 669 550 670 stars[i].measure.psfChisq = ps1data[i].psfChisq; 551 671 stars[i].measure.psfQual = ps1data[i].psfQual; … … 562 682 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 563 683 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 564 684 565 685 stars[i].measure.photFlags = ps1data[i].flags; 566 686 … … 607 727 608 728 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 609 stars[i].measure.M = NAN;610 } else { 611 stars[i].measure.M = ps1data[i].M + ZeroPt;729 stars[i].measure.M = NAN; 730 } else { 731 stars[i].measure.M = ps1data[i].M + ZeroPt; 612 732 } 613 733 stars[i].measure.dM = ps1data[i].dM; 614 734 stars[i].measure.dMcal = ps1data[i].dMcal; 615 735 stars[i].measure.Map = ps1data[i].Map + ZeroPt; 616 736 737 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 738 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 739 740 // these fluxes are converted from counts to counts/sec in FilterStars.c 741 stars[i].measure.FluxPSF = ps1data[i].Flux; 742 stars[i].measure.dFluxPSF = ps1data[i].dFlux; 743 stars[i].measure.FluxKron = ps1data[i].kronFlux; 744 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 745 617 746 stars[i].measure.Sky = ps1data[i].sky; 618 747 stars[i].measure.dSky = ps1data[i].dSky; 619 748 620 749 stars[i].measure.psfChisq = ps1data[i].psfChisq; 621 750 stars[i].measure.psfQual = ps1data[i].psfQual; … … 632 761 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 633 762 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 634 763 635 764 stars[i].measure.photFlags = ps1data[i].flags; 636 765
Note:
See TracChangeset
for help on using the changeset viewer.
