Changeset 38530
- Timestamp:
- Jun 24, 2015, 8:48:47 AM (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20150616/Ohana/src/addstar/src/ReadStarsFITS.c
r38525 r38530 69 69 70 70 Catalog *catalog = NULL; 71 # if (0)72 71 if (!strcmp (type, "SMPDATA")) { 73 stars = Convert_SMPDATA (&table, &Nstars);72 catalog = Convert_SMPDATA (&table); 74 73 } 75 74 if (!strcmp (type, "PS1_DEV_0")) { 76 stars = Convert_PS1_DEV_0 (&table, &Nstars);75 catalog = Convert_PS1_DEV_0 (&table); 77 76 } 78 77 if (!strcmp (type, "PS1_DEV_1")) { 79 stars = Convert_PS1_DEV_1 (&table, &Nstars);78 catalog = Convert_PS1_DEV_1 (&table); 80 79 } 81 80 if (!strcmp (type, "PS1_V1")) { 82 stars = Convert_PS1_V1 (&table, &Nstars);81 catalog = Convert_PS1_V1 (&table); 83 82 } 84 83 if (!strcmp (type, "PS1_V2")) { … … 87 86 return (NULL); 88 87 } 89 stars = Convert_PS1_V2 (&table, &Nstars);88 catalog = Convert_PS1_V2 (&table); 90 89 } 91 90 if (!strcmp (type, "PS1_V3")) { 92 stars = Convert_PS1_V3 (&table, &Nstars);91 catalog = Convert_PS1_V3 (&table); 93 92 } 94 93 if (!strcmp (type, "PS1_V4")) { 95 stars = Convert_PS1_V4 (&table, &Nstars); 96 } 97 # endif 94 catalog = Convert_PS1_V4 (&table); 95 } 98 96 if (!strcmp (type, "PS1_V5")) { 99 97 switch (table.header[0].Naxis[0]) { 100 98 case 232: 101 catalog = Convert_PS1_V5 (&table); 102 break; 103 # if (0) 99 catalog = Convert_PS1_V5 (&table); 100 break; 104 101 case 312: 105 stars = Convert_PS1_V5_R0_Lensing (&table, &Nstars);106 break;102 catalog = Convert_PS1_V5_R0_Lensing (&table); 103 break; 107 104 case 320: 108 stars = Convert_PS1_V5_R1_Lensing (&table, &Nstars);109 break;105 catalog = Convert_PS1_V5_R1_Lensing (&table); 106 break; 110 107 case 328: 111 stars = Convert_PS1_V5_R2_Lensing (&table, &Nstars); 112 break; 113 # endif 108 catalog = Convert_PS1_V5_R2_Lensing (&table); 109 break; 114 110 default: 115 fprintf (stderr, "invalid PS1_V5 table size %d\n", (int) table.header[0].Naxis[0]); 116 return NULL; 117 } 118 } 119 # if (0) 111 fprintf (stderr, "invalid PS1_V5 table size %d\n", (int) table.header[0].Naxis[0]); 112 return NULL; 113 } 114 } 120 115 if (!strcmp (type, "PS1_SV1")) { 121 stars = Convert_PS1_SV1 (&table, &Nstars);116 catalog = Convert_PS1_SV1 (&table); 122 117 } 123 118 if (!strcmp (type, "PS1_SV2")) { 124 stars = Convert_PS1_SV2 (&table, &Nstars);119 catalog = Convert_PS1_SV2 (&table); 125 120 } 126 121 if (!strcmp (type, "PS1_SV3")) { 127 stars = Convert_PS1_SV3 (&table, &Nstars);122 catalog = Convert_PS1_SV3 (&table); 128 123 } 129 124 if (!strcmp (type, "PS1_SV4")) { 130 stars = Convert_PS1_SV4 (&table, &Nstars);125 catalog = Convert_PS1_SV4 (&table); 131 126 } 132 127 if (!strcmp (type, "PS1_DV3")) { 133 stars = Convert_PS1_DV3 (&table, &Nstars);128 catalog = Convert_PS1_DV3 (&table); 134 129 } 135 130 if (!strcmp (type, "PS1_DV4")) { 136 stars = Convert_PS1_DV4 (&table, &Nstars);131 catalog = Convert_PS1_DV4 (&table); 137 132 } 138 133 if (!strcmp (type, "PS1_DV5")) { 139 stars = Convert_PS1_DV5 (&table, &Nstars); 140 } 141 # endif 134 catalog = Convert_PS1_DV5 (&table); 135 } 142 136 if (catalog == NULL) { 143 137 fprintf (stderr, "invalid table type %s\n", type); … … 166 160 } 167 161 168 # if (0) 169 170 Stars *Convert_SMPDATA (FTable *table, unsigned int *nstars) { 162 Catalog *Convert_SMPDATA (FTable *table) { 171 163 172 164 off_t Nstars; 173 165 unsigned int i; 174 166 double ZeroPt; 175 Stars *stars = NULL;176 167 SMPData *smpdata = NULL; 177 168 … … 183 174 ZeroPt = GetZeroPoint(); 184 175 185 ALLOCATE (stars, Stars, Nstars); 186 for (i = 0; i < Nstars; i++) { 187 InitStar (&stars[i]); 188 189 stars[i].measure.Xccd = smpdata[i].X; 190 stars[i].measure.Yccd = smpdata[i].Y; 191 stars[i].measure.dXccd = NAN_S_SHORT; // not provided by SMPDATA: 192 stars[i].measure.dYccd = NAN_S_SHORT; // not provided by SMPDATA: 176 Catalog *catalog = addstar_catalog_init (Nstars); 177 178 for (i = 0; i < Nstars; i++) { 179 catalog->measure[i].Xccd = smpdata[i].X; 180 catalog->measure[i].Yccd = smpdata[i].Y; 181 catalog->measure[i].dXccd = NAN_S_SHORT; // not provided by SMPDATA: 182 catalog->measure[i].dYccd = NAN_S_SHORT; // not provided by SMPDATA: 193 183 194 stars[i].measure.posangle= NAN_S_SHORT; // not provided by SMPDATA:195 stars[i].measure.pltscale= NAN; // not provided by SMPDATA:184 catalog->measure[i].posangle = NAN_S_SHORT; // not provided by SMPDATA: 185 catalog->measure[i].pltscale = NAN; // not provided by SMPDATA: 196 186 197 187 if ((smpdata[i].M >= ZeroPt) || isnan(smpdata[i].M)) { 198 stars[i].measure.M = NAN;199 stars[i].measure.Map = NAN;200 stars[i].measure.FluxPSF = NAN;201 stars[i].measure.dFluxPSF = NAN;202 } else { 203 stars[i].measure.M = smpdata[i].M;204 stars[i].measure.Map = smpdata[i].M;205 stars[i].measure.FluxPSF = pow(10.0, -0.4*smpdata[i].M);206 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * smpdata[i].dM;207 } 208 stars[i].measure.dM = smpdata[i].dM*0.001;209 stars[i].measure.dMcal= NAN; // not provided by SMPDATA:210 211 stars[i].measure.Mkron= NAN; // not provided by SMPDATA:212 stars[i].measure.dMkron= NAN; // not provided by SMPDATA:213 stars[i].measure.FluxKron = NAN; // not provided by SMPDATA:214 stars[i].measure.dFluxKron = NAN; // not provided by SMPDATA:215 216 stars[i].measure.Sky= NAN; // not provided by SMPDATA:217 stars[i].measure.dSky= NAN; // not provided by SMPDATA:218 219 stars[i].measure.psfChisq = NAN;// not provided by SMPDATA:220 stars[i].measure.psfQF = NAN;// not provided by SMPDATA:221 stars[i].measure.psfNdof = NAN_S_INT; // not provided by SMPDATA:222 stars[i].measure.psfNpix = NAN_S_INT; // not provided by SMPDATA:223 stars[i].measure.extNsigma = NAN;// not provided by SMPDATA:224 225 stars[i].measure.FWx = ToShortPixels (smpdata[i].fx);226 stars[i].measure.FWy = ToShortPixels (smpdata[i].fy);227 stars[i].measure.theta = ToShortDegrees (smpdata[i].df);228 229 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by SMPDATA:230 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by SMPDATA:231 stars[i].measure.Myy = NAN_S_SHORT; // not provided by SMPDATA:188 catalog->measure[i].M = NAN; 189 catalog->measure[i].Map = NAN; 190 catalog->measure[i].FluxPSF = NAN; 191 catalog->measure[i].dFluxPSF = NAN; 192 } else { 193 catalog->measure[i].M = smpdata[i].M; 194 catalog->measure[i].Map = smpdata[i].M; 195 catalog->measure[i].FluxPSF = pow(10.0, -0.4*smpdata[i].M); 196 catalog->measure[i].dFluxPSF = catalog->measure[i].FluxPSF * smpdata[i].dM; 197 } 198 catalog->measure[i].dM = smpdata[i].dM*0.001; 199 catalog->measure[i].dMcal = NAN; // not provided by SMPDATA: 200 201 catalog->measure[i].Mkron = NAN; // not provided by SMPDATA: 202 catalog->measure[i].dMkron = NAN; // not provided by SMPDATA: 203 catalog->measure[i].FluxKron = NAN; // not provided by SMPDATA: 204 catalog->measure[i].dFluxKron = NAN; // not provided by SMPDATA: 205 206 catalog->measure[i].Sky = NAN; // not provided by SMPDATA: 207 catalog->measure[i].dSky = NAN; // not provided by SMPDATA: 208 209 catalog->measure[i].psfChisq = NAN; // not provided by SMPDATA: 210 catalog->measure[i].psfQF = NAN; // not provided by SMPDATA: 211 catalog->measure[i].psfNdof = NAN_S_INT; // not provided by SMPDATA: 212 catalog->measure[i].psfNpix = NAN_S_INT; // not provided by SMPDATA: 213 catalog->measure[i].extNsigma = NAN; // not provided by SMPDATA: 214 215 catalog->measure[i].FWx = ToShortPixels (smpdata[i].fx); 216 catalog->measure[i].FWy = ToShortPixels (smpdata[i].fy); 217 catalog->measure[i].theta = ToShortDegrees (smpdata[i].df); 218 219 catalog->measure[i].Mxx = NAN_S_SHORT; // not provided by SMPDATA: 220 catalog->measure[i].Mxy = NAN_S_SHORT; // not provided by SMPDATA: 221 catalog->measure[i].Myy = NAN_S_SHORT; // not provided by SMPDATA: 232 222 233 223 // the dophot type information gets pushed into the upper 2 bytes of photFlags 234 stars[i].measure.photFlags = (smpdata[i].dophot << 16); 235 } 236 *nstars = Nstars; 237 return (stars); 238 } 239 240 Stars *Convert_PS1_DEV_0 (FTable *table, unsigned int *nstars) { 224 catalog->measure[i].photFlags = (smpdata[i].dophot << 16); 225 } 226 return catalog; 227 } 228 229 Catalog *Convert_PS1_DEV_0 (FTable *table) { 241 230 242 231 off_t Nstars; 243 232 unsigned int i; 244 233 double ZeroPt; 245 Stars *stars;246 234 PS1_DEV_0 *ps1data; 247 235 … … 253 241 ZeroPt = GetZeroPoint(); 254 242 255 ALLOCATE (stars, Stars,Nstars);256 for (i = 0; i < Nstars; i++) { 257 InitStar (&stars[i]);258 stars[i].measure.Xccd= ps1data[i].X;259 stars[i].measure.Yccd= ps1data[i].Y;260 stars[i].measure.dXccd= ToShortPixels(ps1data[i].dX);261 stars[i].measure.dYccd= ToShortPixels(ps1data[i].dY);243 Catalog *catalog = addstar_catalog_init (Nstars); 244 245 for (i = 0; i < Nstars; i++) { 246 catalog->measure[i].Xccd = ps1data[i].X; 247 catalog->measure[i].Yccd = ps1data[i].Y; 248 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 249 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 262 250 263 stars[i].measure.posangle= NAN_S_SHORT; // not provided by PS1_DEV_0:264 stars[i].measure.pltscale= NAN; // not provided by PS1_DEV_0:251 catalog->measure[i].posangle = NAN_S_SHORT; // not provided by PS1_DEV_0: 252 catalog->measure[i].pltscale = NAN; // not provided by PS1_DEV_0: 265 253 266 254 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 267 stars[i].measure.M = NAN; 268 stars[i].measure.FluxPSF = NAN; 269 stars[i].measure.dFluxPSF = NAN; 270 } else { 271 stars[i].measure.M = ps1data[i].M + ZeroPt; 272 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 273 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 274 } 275 stars[i].measure.dM = ps1data[i].dM; 276 stars[i].measure.dMcal = NAN; // not provided by PS1_DEV_0: 277 stars[i].measure.Map = NAN; // not provided by PS1_DEV_0: 278 279 stars[i].measure.Mkron = NAN; // not provided by PS1_DEV_0: 280 stars[i].measure.dMkron = NAN; // not provided by PS1_DEV_0: 281 stars[i].measure.FluxKron = NAN; // not provided by PS1_DEV_0: 282 stars[i].measure.dFluxKron = NAN; // not provided by PS1_DEV_0: 283 284 stars[i].measure.Sky = ps1data[i].sky; 285 stars[i].measure.dSky = ps1data[i].dSky; 286 287 stars[i].measure.psfChisq = ps1data[i].psfChisq; 288 stars[i].measure.psfQF = ps1data[i].psfQF; 289 stars[i].measure.psfNdof = NAN_S_INT; // not provided by PS1_DEV_0: 290 stars[i].measure.psfNpix = NAN_S_INT; // not provided by PS1_DEV_0: 291 stars[i].measure.extNsigma = NAN; // not provided by PS1_DEV_0: 292 293 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 294 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 295 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 296 297 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by PS1_DEV_0: 298 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by PS1_DEV_0: 299 stars[i].measure.Myy = NAN_S_SHORT; // not provided by PS1_DEV_0: 300 301 stars[i].measure.photFlags = 0; // not provided by PS1_DEV_0: 302 303 stars[i].measure.detID = ps1data[i].detID; 304 } 305 *nstars = Nstars; 306 return (stars); 255 catalog->measure[i].M = NAN; 256 catalog->measure[i].FluxPSF = NAN; 257 catalog->measure[i].dFluxPSF = NAN; 258 } else { 259 catalog->measure[i].M = ps1data[i].M + ZeroPt; 260 catalog->measure[i].FluxPSF = pow(10.0, -0.4*ps1data[i].M); 261 catalog->measure[i].dFluxPSF = catalog->measure[i].FluxPSF * ps1data[i].dM; 262 } 263 catalog->measure[i].dM = ps1data[i].dM; 264 catalog->measure[i].dMcal = NAN; // not provided by PS1_DEV_0: 265 catalog->measure[i].Map = NAN; // not provided by PS1_DEV_0: 266 267 catalog->measure[i].Mkron = NAN; // not provided by PS1_DEV_0: 268 catalog->measure[i].dMkron = NAN; // not provided by PS1_DEV_0: 269 catalog->measure[i].FluxKron = NAN; // not provided by PS1_DEV_0: 270 catalog->measure[i].dFluxKron = NAN; // not provided by PS1_DEV_0: 271 272 catalog->measure[i].Sky = ps1data[i].sky; 273 catalog->measure[i].dSky = ps1data[i].dSky; 274 275 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 276 catalog->measure[i].psfQF = ps1data[i].psfQF; 277 catalog->measure[i].psfNdof = NAN_S_INT; // not provided by PS1_DEV_0: 278 catalog->measure[i].psfNpix = NAN_S_INT; // not provided by PS1_DEV_0: 279 catalog->measure[i].extNsigma = NAN; // not provided by PS1_DEV_0: 280 281 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 282 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 283 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 284 285 catalog->measure[i].Mxx = NAN_S_SHORT; // not provided by PS1_DEV_0: 286 catalog->measure[i].Mxy = NAN_S_SHORT; // not provided by PS1_DEV_0: 287 catalog->measure[i].Myy = NAN_S_SHORT; // not provided by PS1_DEV_0: 288 289 catalog->measure[i].photFlags = 0; // not provided by PS1_DEV_0: 290 291 catalog->measure[i].detID = ps1data[i].detID; 292 } 293 return catalog; 307 294 } 308 295 309 296 // XXX I need to make the IPP I/O functions and these functions 310 297 // consistent wrt ZERO_POINT.... 311 Stars *Convert_PS1_DEV_1 (FTable *table, unsigned int *nstars) {298 Catalog *Convert_PS1_DEV_1 (FTable *table) { 312 299 313 300 off_t Nstars; 314 301 unsigned int i; 315 302 double ZeroPt; 316 Stars *stars;317 303 PS1_DEV_1 *ps1data; 318 304 … … 324 310 ZeroPt = GetZeroPoint(); 325 311 326 ALLOCATE (stars, Stars,Nstars);327 for (i = 0; i < Nstars; i++) { 328 InitStar (&stars[i]);329 stars[i].measure.Xccd = ps1data[i].X;330 stars[i].measure.Yccd = ps1data[i].Y;331 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);332 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);333 334 stars[i].measure.posangle = NAN_S_SHORT; // not provided by PS1_DEV_1:335 stars[i].measure.pltscale = NAN; // not provided by PS1_DEV_1:312 Catalog *catalog = addstar_catalog_init (Nstars); 313 314 for (i = 0; i < Nstars; i++) { 315 catalog->measure[i].Xccd = ps1data[i].X; 316 catalog->measure[i].Yccd = ps1data[i].Y; 317 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 318 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 319 320 catalog->measure[i].posangle = NAN_S_SHORT; // not provided by PS1_DEV_1: 321 catalog->measure[i].pltscale = NAN; // not provided by PS1_DEV_1: 336 322 337 323 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 338 stars[i].measure.M = NAN; 339 stars[i].measure.FluxPSF = NAN; 340 stars[i].measure.dFluxPSF = NAN; 341 } else { 342 stars[i].measure.M = ps1data[i].M + ZeroPt; 343 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M); 344 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM; 345 } 346 stars[i].measure.dM = ps1data[i].dM; 347 stars[i].measure.dMcal = NAN; // not provided by PS1_DEV_1: 348 stars[i].measure.Map = NAN; // not provided by PS1_DEV_1: 349 350 stars[i].measure.Mkron = NAN; // not provided by PS1_DEV_1: 351 stars[i].measure.dMkron = NAN; // not provided by PS1_DEV_1: 352 stars[i].measure.FluxKron = NAN; // not provided by PS1_DEV_1: 353 stars[i].measure.dFluxKron = NAN; // not provided by PS1_DEV_1: 354 355 stars[i].measure.Sky = ps1data[i].sky; 356 stars[i].measure.dSky = ps1data[i].dSky; 357 358 stars[i].measure.psfChisq = ps1data[i].psfChisq; 359 stars[i].measure.psfQF = ps1data[i].psfQF; 360 stars[i].measure.psfNdof = NAN_S_INT; // not provided by PS1_DEV_1: 361 stars[i].measure.psfNpix = NAN_S_INT; // not provided by PS1_DEV_1: 362 stars[i].measure.extNsigma = ps1data[i].extNsigma; 363 364 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 365 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 366 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 367 368 stars[i].measure.Mxx = NAN_S_SHORT; // not provided by PS1_DEV_1: 369 stars[i].measure.Mxy = NAN_S_SHORT; // not provided by PS1_DEV_1: 370 stars[i].measure.Myy = NAN_S_SHORT; // not provided by PS1_DEV_1: 371 372 stars[i].measure.photFlags = ps1data[i].flags; 373 374 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 375 stars[i].measure.detID = ps1data[i].detID; 376 } 377 *nstars = Nstars; 378 return (stars); 379 } 380 381 Stars *Convert_PS1_V1 (FTable *table, unsigned int *nstars) { 324 catalog->measure[i].M = NAN; 325 catalog->measure[i].FluxPSF = NAN; 326 catalog->measure[i].dFluxPSF = NAN; 327 } else { 328 catalog->measure[i].M = ps1data[i].M + ZeroPt; 329 catalog->measure[i].FluxPSF = pow(10.0, -0.4*ps1data[i].M); 330 catalog->measure[i].dFluxPSF = catalog->measure[i].FluxPSF * ps1data[i].dM; 331 } 332 catalog->measure[i].dM = ps1data[i].dM; 333 catalog->measure[i].dMcal = NAN; // not provided by PS1_DEV_1: 334 catalog->measure[i].Map = NAN; // not provided by PS1_DEV_1: 335 336 catalog->measure[i].Mkron = NAN; // not provided by PS1_DEV_1: 337 catalog->measure[i].dMkron = NAN; // not provided by PS1_DEV_1: 338 catalog->measure[i].FluxKron = NAN; // not provided by PS1_DEV_1: 339 catalog->measure[i].dFluxKron = NAN; // not provided by PS1_DEV_1: 340 341 catalog->measure[i].Sky = ps1data[i].sky; 342 catalog->measure[i].dSky = ps1data[i].dSky; 343 344 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 345 catalog->measure[i].psfQF = ps1data[i].psfQF; 346 catalog->measure[i].psfNdof = NAN_S_INT; // not provided by PS1_DEV_1: 347 catalog->measure[i].psfNpix = NAN_S_INT; // not provided by PS1_DEV_1: 348 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 349 350 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 351 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 352 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 353 354 catalog->measure[i].Mxx = NAN_S_SHORT; // not provided by PS1_DEV_1: 355 catalog->measure[i].Mxy = NAN_S_SHORT; // not provided by PS1_DEV_1: 356 catalog->measure[i].Myy = NAN_S_SHORT; // not provided by PS1_DEV_1: 357 358 catalog->measure[i].photFlags = ps1data[i].flags; 359 360 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 361 catalog->measure[i].detID = ps1data[i].detID; 362 } 363 return catalog; 364 } 365 366 Catalog *Convert_PS1_V1 (FTable *table) { 382 367 383 368 off_t Nstars; 384 369 unsigned int i; 385 370 double ZeroPt; 386 Stars *stars;387 371 CMF_PS1_V1 *ps1data; 388 372 … … 396 380 397 381 if (table[0].header[0].Naxis[0] == 136) { 398 stars = Convert_PS1_V1_Alt (table, nstars);399 return (stars);382 Catalog *catalog = Convert_PS1_V1_Alt (table); 383 return catalog; 400 384 } 401 385 … … 407 391 ZeroPt = GetZeroPoint(); 408 392 409 ALLOCATE (stars, Stars,Nstars);410 for (i = 0; i < Nstars; i++) { 411 InitStar (&stars[i]);412 stars[i].measure.Xccd = ps1data[i].X;413 stars[i].measure.Yccd = ps1data[i].Y;414 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);415 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);416 417 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);418 stars[i].measure.pltscale = ps1data[i].pltscale;393 Catalog *catalog = addstar_catalog_init (Nstars); 394 395 for (i = 0; i < Nstars; i++) { 396 catalog->measure[i].Xccd = ps1data[i].X; 397 catalog->measure[i].Yccd = ps1data[i].Y; 398 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 399 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 400 401 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 402 catalog->measure[i].pltscale = ps1data[i].pltscale; 419 403 420 404 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 421 stars[i].measure.M = NAN;422 stars[i].measure.FluxPSF = NAN;423 stars[i].measure.dFluxPSF = NAN;424 } else { 425 stars[i].measure.M = ps1data[i].M + ZeroPt;426 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M);427 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM;428 } 429 stars[i].measure.dM = ps1data[i].dM;430 stars[i].measure.dMcal = ps1data[i].dMcal;431 stars[i].measure.Map = ps1data[i].Map + ZeroPt;432 stars[i].measure.dMap = ps1data[i].dM; // a proxy measure433 434 stars[i].measure.Mkron = NAN; // not provided by PS1_V1:435 stars[i].measure.dMkron = NAN; // not provided by PS1_V1:436 stars[i].measure.FluxKron = NAN; // not provided by PS1_V1:437 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V1:438 439 stars[i].measure.Sky = ps1data[i].sky;440 stars[i].measure.dSky = ps1data[i].dSky;441 442 stars[i].measure.psfChisq = ps1data[i].psfChisq;443 stars[i].measure.psfQF = ps1data[i].psfQF;444 stars[i].measure.psfNdof = ps1data[i].psfNdof;445 stars[i].measure.psfNpix = ps1data[i].psfNpix;446 stars[i].measure.extNsigma = ps1data[i].extNsigma;447 448 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);449 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);450 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);451 452 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);453 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);454 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);455 456 stars[i].measure.photFlags = ps1data[i].flags;457 458 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 459 stars[i].measure.detID = ps1data[i].detID;405 catalog->measure[i].M = NAN; 406 catalog->measure[i].FluxPSF = NAN; 407 catalog->measure[i].dFluxPSF = NAN; 408 } else { 409 catalog->measure[i].M = ps1data[i].M + ZeroPt; 410 catalog->measure[i].FluxPSF = pow(10.0, -0.4*ps1data[i].M); 411 catalog->measure[i].dFluxPSF = catalog->measure[i].FluxPSF * ps1data[i].dM; 412 } 413 catalog->measure[i].dM = ps1data[i].dM; 414 catalog->measure[i].dMcal = ps1data[i].dMcal; 415 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 416 catalog->measure[i].dMap = ps1data[i].dM; // a proxy measure 417 418 catalog->measure[i].Mkron = NAN; // not provided by PS1_V1: 419 catalog->measure[i].dMkron = NAN; // not provided by PS1_V1: 420 catalog->measure[i].FluxKron = NAN; // not provided by PS1_V1: 421 catalog->measure[i].dFluxKron = NAN; // not provided by PS1_V1: 422 423 catalog->measure[i].Sky = ps1data[i].sky; 424 catalog->measure[i].dSky = ps1data[i].dSky; 425 426 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 427 catalog->measure[i].psfQF = ps1data[i].psfQF; 428 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 429 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 430 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 431 432 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 433 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 434 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 435 436 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 437 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 438 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 439 440 catalog->measure[i].photFlags = ps1data[i].flags; 441 442 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 443 catalog->measure[i].detID = ps1data[i].detID; 460 444 461 445 // the Average fields and the following Measure fields are set in FilterStars after … … 465 449 // the following fields are currently not being set anywhere: t_msec 466 450 } 467 *nstars = Nstars; 468 return (stars); 469 } 470 471 Stars *Convert_PS1_V1_Alt (FTable *table, unsigned int *nstars) { 451 return catalog; 452 } 453 454 Catalog *Convert_PS1_V1_Alt (FTable *table) { 472 455 473 456 off_t Nstars; 474 457 unsigned int i; 475 458 double ZeroPt; 476 Stars *stars;477 459 CMF_PS1_V2 *ps1data; 478 460 … … 485 467 // call a special conversion function if it is found. 486 468 487 ps1data = gfits_table_get_CMF_PS1_V1_Alt (table, &Nstars, NULL); 469 ps1data = gfits_table_get_CMF_PS1_V1_Alt (table, &Nstars, NULL); 488 470 if (!ps1data) { 489 471 fprintf (stderr, "skipping inconsistent entry\n"); … … 492 474 ZeroPt = GetZeroPoint(); 493 475 494 ALLOCATE (stars, Stars,Nstars);495 for (i = 0; i < Nstars; i++) { 496 InitStar (&stars[i]);497 stars[i].measure.Xccd = ps1data[i].X;498 stars[i].measure.Yccd = ps1data[i].Y;499 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);500 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);501 502 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);503 stars[i].measure.pltscale = ps1data[i].pltscale;476 Catalog *catalog = addstar_catalog_init (Nstars); 477 478 for (i = 0; i < Nstars; i++) { 479 catalog->measure[i].Xccd = ps1data[i].X; 480 catalog->measure[i].Yccd = ps1data[i].Y; 481 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 482 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 483 484 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 485 catalog->measure[i].pltscale = ps1data[i].pltscale; 504 486 505 487 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 506 stars[i].measure.M = NAN;507 stars[i].measure.FluxPSF = NAN;508 stars[i].measure.dFluxPSF = NAN;509 } else { 510 stars[i].measure.M = ps1data[i].M + ZeroPt;511 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M);512 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM;513 } 514 stars[i].measure.dM = ps1data[i].dM;515 stars[i].measure.dMcal = ps1data[i].dMcal;516 stars[i].measure.Map = ps1data[i].Map + ZeroPt;517 stars[i].measure.dMap = ps1data[i].dM; // a proxy measure518 519 stars[i].measure.Mkron = NAN; // not provided by PS1_V1_Alt:520 stars[i].measure.dMkron = NAN; // not provided by PS1_V1_Alt:521 stars[i].measure.FluxKron = NAN; // not provided by PS1_V1_Alt:522 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V1_Alt:523 524 stars[i].measure.Sky = ps1data[i].sky;525 stars[i].measure.dSky = ps1data[i].dSky;526 527 stars[i].measure.psfChisq = ps1data[i].psfChisq;528 stars[i].measure.psfQF = ps1data[i].psfQF;529 stars[i].measure.psfNdof = ps1data[i].psfNdof;530 stars[i].measure.psfNpix = ps1data[i].psfNpix;531 stars[i].measure.extNsigma = ps1data[i].extNsigma;532 533 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);534 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);535 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);536 537 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);538 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);539 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);540 541 stars[i].measure.photFlags = ps1data[i].flags;542 543 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 544 stars[i].measure.detID = ps1data[i].detID;488 catalog->measure[i].M = NAN; 489 catalog->measure[i].FluxPSF = NAN; 490 catalog->measure[i].dFluxPSF = NAN; 491 } else { 492 catalog->measure[i].M = ps1data[i].M + ZeroPt; 493 catalog->measure[i].FluxPSF = pow(10.0, -0.4*ps1data[i].M); 494 catalog->measure[i].dFluxPSF = catalog->measure[i].FluxPSF * ps1data[i].dM; 495 } 496 catalog->measure[i].dM = ps1data[i].dM; 497 catalog->measure[i].dMcal = ps1data[i].dMcal; 498 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 499 catalog->measure[i].dMap = ps1data[i].dM; // a proxy measure 500 501 catalog->measure[i].Mkron = NAN; // not provided by PS1_V1_Alt: 502 catalog->measure[i].dMkron = NAN; // not provided by PS1_V1_Alt: 503 catalog->measure[i].FluxKron = NAN; // not provided by PS1_V1_Alt: 504 catalog->measure[i].dFluxKron = NAN; // not provided by PS1_V1_Alt: 505 506 catalog->measure[i].Sky = ps1data[i].sky; 507 catalog->measure[i].dSky = ps1data[i].dSky; 508 509 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 510 catalog->measure[i].psfQF = ps1data[i].psfQF; 511 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 512 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 513 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 514 515 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 516 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 517 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 518 519 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 520 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 521 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 522 523 catalog->measure[i].photFlags = ps1data[i].flags; 524 525 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 526 catalog->measure[i].detID = ps1data[i].detID; 545 527 546 528 // the Average fields and the following Measure fields are set in FilterStars after … … 550 532 // the following fields are currently not being set anywhere: t_msec 551 533 } 552 *nstars = Nstars; 553 return (stars); 554 } 555 556 Stars *Convert_PS1_V2 (FTable *table, unsigned int *nstars) { 534 return catalog; 535 } 536 537 Catalog *Convert_PS1_V2 (FTable *table) { 557 538 558 539 off_t Nstars; 559 540 unsigned int i; 560 541 double ZeroPt; 561 Stars *stars;562 542 CMF_PS1_V2 *ps1data; 563 543 … … 569 549 ZeroPt = GetZeroPoint(); 570 550 571 ALLOCATE (stars, Stars,Nstars);572 for (i = 0; i < Nstars; i++) { 573 InitStar (&stars[i]);574 stars[i].measure.Xccd = ps1data[i].X;575 stars[i].measure.Yccd = ps1data[i].Y;576 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);577 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);578 579 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);580 stars[i].measure.pltscale = ps1data[i].pltscale;551 Catalog *catalog = addstar_catalog_init (Nstars); 552 553 for (i = 0; i < Nstars; i++) { 554 catalog->measure[i].Xccd = ps1data[i].X; 555 catalog->measure[i].Yccd = ps1data[i].Y; 556 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 557 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 558 559 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 560 catalog->measure[i].pltscale = ps1data[i].pltscale; 581 561 582 562 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 583 stars[i].measure.M = NAN;584 stars[i].measure.FluxPSF = NAN;585 stars[i].measure.dFluxPSF = NAN;586 } else { 587 stars[i].measure.M = ps1data[i].M + ZeroPt;588 stars[i].measure.FluxPSF = pow(10.0, -0.4*ps1data[i].M);589 stars[i].measure.dFluxPSF = stars[i].measure.FluxPSF * ps1data[i].dM;590 } 591 stars[i].measure.dM = ps1data[i].dM;592 stars[i].measure.dMcal = ps1data[i].dMcal;593 stars[i].measure.Map = ps1data[i].Map + ZeroPt;594 stars[i].measure.dMap = ps1data[i].dM; // a proxy measure595 596 stars[i].measure.Mkron = NAN; // not provided by PS1_V2:597 stars[i].measure.dMkron = NAN; // not provided by PS1_V2:598 stars[i].measure.FluxKron = NAN; // not provided by PS1_V2:599 stars[i].measure.dFluxKron = NAN; // not provided by PS1_V2:600 601 stars[i].measure.Sky = ps1data[i].sky;602 stars[i].measure.dSky = ps1data[i].dSky;603 604 stars[i].measure.psfChisq = ps1data[i].psfChisq;605 stars[i].measure.psfQF = ps1data[i].psfQF;606 stars[i].measure.psfNdof = ps1data[i].psfNdof;607 stars[i].measure.psfNpix = ps1data[i].psfNpix;608 stars[i].measure.extNsigma = ps1data[i].extNsigma;609 610 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);611 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);612 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);613 614 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);615 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);616 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);617 618 stars[i].measure.photFlags = ps1data[i].flags;619 620 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 621 stars[i].measure.detID = ps1data[i].detID;563 catalog->measure[i].M = NAN; 564 catalog->measure[i].FluxPSF = NAN; 565 catalog->measure[i].dFluxPSF = NAN; 566 } else { 567 catalog->measure[i].M = ps1data[i].M + ZeroPt; 568 catalog->measure[i].FluxPSF = pow(10.0, -0.4*ps1data[i].M); 569 catalog->measure[i].dFluxPSF = catalog->measure[i].FluxPSF * ps1data[i].dM; 570 } 571 catalog->measure[i].dM = ps1data[i].dM; 572 catalog->measure[i].dMcal = ps1data[i].dMcal; 573 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 574 catalog->measure[i].dMap = ps1data[i].dM; // a proxy measure 575 576 catalog->measure[i].Mkron = NAN; // not provided by PS1_V2: 577 catalog->measure[i].dMkron = NAN; // not provided by PS1_V2: 578 catalog->measure[i].FluxKron = NAN; // not provided by PS1_V2: 579 catalog->measure[i].dFluxKron = NAN; // not provided by PS1_V2: 580 581 catalog->measure[i].Sky = ps1data[i].sky; 582 catalog->measure[i].dSky = ps1data[i].dSky; 583 584 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 585 catalog->measure[i].psfQF = ps1data[i].psfQF; 586 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 587 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 588 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 589 590 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 591 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 592 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 593 594 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 595 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 596 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 597 598 catalog->measure[i].photFlags = ps1data[i].flags; 599 600 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 601 catalog->measure[i].detID = ps1data[i].detID; 622 602 623 603 // the Average fields and the following Measure fields are set in FilterStars after … … 627 607 // the following fields are currently not being set anywhere: t_msec 628 608 } 629 *nstars = Nstars; 630 return (stars); 631 } 632 633 Stars *Convert_PS1_V3 (FTable *table, unsigned int *nstars) { 609 return catalog; 610 } 611 612 Catalog *Convert_PS1_V3 (FTable *table) { 634 613 635 614 off_t Nstars; 636 615 unsigned int i; 637 616 double ZeroPt; 638 Stars *stars;639 617 CMF_PS1_V3 *ps1data; 640 618 … … 646 624 ZeroPt = GetZeroPoint(); 647 625 648 ALLOCATE (stars, Stars,Nstars);649 for (i = 0; i < Nstars; i++) { 650 InitStar (&stars[i]);651 stars[i].measure.Xccd = ps1data[i].X;652 stars[i].measure.Yccd = ps1data[i].Y;653 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);654 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);655 656 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);657 stars[i].measure.pltscale = ps1data[i].pltscale;626 Catalog *catalog = addstar_catalog_init (Nstars); 627 628 for (i = 0; i < Nstars; i++) { 629 catalog->measure[i].Xccd = ps1data[i].X; 630 catalog->measure[i].Yccd = ps1data[i].Y; 631 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 632 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 633 634 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 635 catalog->measure[i].pltscale = ps1data[i].pltscale; 658 636 659 637 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 660 stars[i].measure.M = NAN;661 } else { 662 stars[i].measure.M = ps1data[i].M + ZeroPt;663 } 664 stars[i].measure.dM = ps1data[i].dM;665 stars[i].measure.dMcal = ps1data[i].dMcal;666 stars[i].measure.Map = ps1data[i].Map + ZeroPt;667 stars[i].measure.dMap = ps1data[i].dM; // a proxy measure668 669 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;670 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;638 catalog->measure[i].M = NAN; 639 } else { 640 catalog->measure[i].M = ps1data[i].M + ZeroPt; 641 } 642 catalog->measure[i].dM = ps1data[i].dM; 643 catalog->measure[i].dMcal = ps1data[i].dMcal; 644 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 645 catalog->measure[i].dMap = ps1data[i].dM; // a proxy measure 646 647 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 648 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 671 649 672 650 // these fluxes are converted from counts to counts/sec in FilterStars.c 673 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);674 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);675 stars[i].measure.FluxKron = ps1data[i].kronFlux;676 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;677 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (NAN, ps1data[i].Map);678 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (NAN, stars[i].measure.FluxAp, stars[i].measure.dMap);679 680 stars[i].measure.Sky = ps1data[i].sky;681 stars[i].measure.dSky = ps1data[i].dSky;682 683 stars[i].measure.psfChisq = ps1data[i].psfChisq;684 stars[i].measure.psfQF = ps1data[i].psfQF;685 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;686 stars[i].measure.psfNdof = ps1data[i].psfNdof;687 stars[i].measure.psfNpix = ps1data[i].psfNpix;688 stars[i].measure.extNsigma = ps1data[i].extNsigma;689 690 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);691 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);692 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);693 694 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);695 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);696 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);697 698 stars[i].measure.photFlags = ps1data[i].flags;699 stars[i].measure.photFlags2 = ps1data[i].flags2;700 701 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 702 stars[i].measure.detID = ps1data[i].detID;651 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 652 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 653 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 654 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 655 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (NAN, ps1data[i].Map); 656 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (NAN, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 657 658 catalog->measure[i].Sky = ps1data[i].sky; 659 catalog->measure[i].dSky = ps1data[i].dSky; 660 661 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 662 catalog->measure[i].psfQF = ps1data[i].psfQF; 663 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 664 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 665 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 666 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 667 668 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 669 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 670 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 671 672 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 673 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 674 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 675 676 catalog->measure[i].photFlags = ps1data[i].flags; 677 catalog->measure[i].photFlags2 = ps1data[i].flags2; 678 679 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 680 catalog->measure[i].detID = ps1data[i].detID; 703 681 704 682 // the Average fields and the following Measure fields are set in FilterStars after … … 711 689 // the following fields are currently not being set anywhere: t_msec 712 690 } 713 *nstars = Nstars; 714 return (stars); 715 } 716 717 Stars *Convert_PS1_V4 (FTable *table, unsigned int *nstars) { 691 return catalog; 692 } 693 694 Catalog *Convert_PS1_V4 (FTable *table) { 718 695 719 696 off_t Nstars; 720 697 unsigned int i; 721 698 double ZeroPt; 722 Stars *stars;723 699 CMF_PS1_V4 *ps1data; 724 700 725 701 ps1data = gfits_table_get_CMF_PS1_V4 (table, &Nstars, NULL, NULL); 726 if (!ps1data) {727 fprintf (stderr, "skipping inconsistent entry\n");728 return (NULL);729 }730 ZeroPt = GetZeroPoint();731 732 ALLOCATE (stars, Stars, Nstars);733 for (i = 0; i < Nstars; i++) {734 InitStar (&stars[i]);735 stars[i].measure.Xccd = ps1data[i].X;736 stars[i].measure.Yccd = ps1data[i].Y;737 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);738 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);739 740 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);741 stars[i].measure.pltscale = ps1data[i].pltscale;742 743 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) {744 stars[i].measure.M = NAN;745 } else {746 stars[i].measure.M = ps1data[i].M + ZeroPt;747 }748 stars[i].measure.dM = ps1data[i].dM;749 stars[i].measure.dMcal = ps1data[i].dMcal;750 stars[i].measure.Map = ps1data[i].Map + ZeroPt;751 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;752 753 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;754 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;755 756 // these fluxes are converted from counts to counts/sec in FilterStars.c757 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);758 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);759 stars[i].measure.FluxKron = ps1data[i].kronFlux;760 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;761 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);762 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);763 764 stars[i].measure.Sky = ps1data[i].sky;765 stars[i].measure.dSky = ps1data[i].dSky;766 767 stars[i].measure.psfChisq = ps1data[i].psfChisq;768 stars[i].measure.psfQF = ps1data[i].psfQF;769 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;770 771 stars[i].measure.psfNdof = ps1data[i].psfNdof;772 stars[i].measure.psfNpix = ps1data[i].psfNpix;773 stars[i].measure.extNsigma = ps1data[i].extNsigma;774 775 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);776 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);777 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);778 779 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);780 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);781 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);782 783 stars[i].measure.photFlags = ps1data[i].flags;784 stars[i].measure.photFlags2 = ps1data[i].flags2;785 786 // this is may optionally be replaced by the internal sequence (see FilterStars.c)787 stars[i].measure.detID = ps1data[i].detID;788 789 // the Average fields and the following Measure fields are set in FilterStars after790 // the image metadata is in hand: dR, dD, Mcal, dt, airmass, az, t, imageID, extID.791 792 // averef is set in find_matches793 794 // dbFlags is zero on ingest.795 796 // the following fields are currently not being set anywhere: t_msec797 }798 *nstars = Nstars;799 return (stars);800 }801 802 # endif803 804 Catalog *Convert_PS1_V5 (FTable *table) {805 806 off_t Nstars;807 unsigned int i;808 double ZeroPt;809 CMF_PS1_V5 *ps1data;810 811 ps1data = gfits_table_get_CMF_PS1_V5 (table, &Nstars, NULL);812 702 if (!ps1data) { 813 703 fprintf (stderr, "skipping inconsistent entry\n"); … … 882 772 // the following fields are currently not being set anywhere: t_msec 883 773 } 884 return (catalog); 885 } 886 887 # if (0) 888 889 Stars *Convert_PS1_V5_R0_Lensing (FTable *table, unsigned int *nstars) { 774 return catalog; 775 } 776 777 Catalog *Convert_PS1_V5 (FTable *table) { 890 778 891 779 off_t Nstars; 892 780 unsigned int i; 893 781 double ZeroPt; 894 Stars *stars; 782 CMF_PS1_V5 *ps1data; 783 784 ps1data = gfits_table_get_CMF_PS1_V5 (table, &Nstars, NULL); 785 if (!ps1data) { 786 fprintf (stderr, "skipping inconsistent entry\n"); 787 return (NULL); 788 } 789 ZeroPt = GetZeroPoint(); 790 791 Catalog *catalog = addstar_catalog_init (Nstars); 792 793 for (i = 0; i < Nstars; i++) { 794 catalog->measure[i].Xccd = ps1data[i].X; 795 catalog->measure[i].Yccd = ps1data[i].Y; 796 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 797 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 798 799 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 800 catalog->measure[i].pltscale = ps1data[i].pltscale; 801 802 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 803 catalog->measure[i].M = NAN; 804 } else { 805 catalog->measure[i].M = ps1data[i].M + ZeroPt; 806 } 807 catalog->measure[i].dM = ps1data[i].dM; 808 catalog->measure[i].dMcal = ps1data[i].dMcal; 809 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 810 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 811 812 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 813 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 814 815 // these fluxes are converted from counts to counts/sec in FilterStars.c 816 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 817 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 818 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 819 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 820 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 821 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 822 823 catalog->measure[i].Sky = ps1data[i].sky; 824 catalog->measure[i].dSky = ps1data[i].dSky; 825 826 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 827 catalog->measure[i].psfQF = ps1data[i].psfQF; 828 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 829 830 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 831 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 832 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 833 834 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 835 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 836 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 837 838 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 839 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 840 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 841 842 catalog->measure[i].photFlags = ps1data[i].flags; 843 catalog->measure[i].photFlags2 = ps1data[i].flags2; 844 845 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 846 catalog->measure[i].detID = ps1data[i].detID; 847 848 // the Average fields and the following Measure fields are set in FilterStars after 849 // the image metadata is in hand: dR, dD, Mcal, dt, airmass, az, t, imageID, extID. 850 851 // averef is set in find_matches 852 853 // dbFlags is zero on ingest. 854 855 // the following fields are currently not being set anywhere: t_msec 856 } 857 return catalog; 858 } 859 860 Catalog *Convert_PS1_V5_R0_Lensing (FTable *table) { 861 862 off_t Nstars; 863 unsigned int i; 864 double ZeroPt; 895 865 CMF_PS1_V5_R0_Lensing *ps1data; 896 866 … … 902 872 ZeroPt = GetZeroPoint(); 903 873 904 ALLOCATE (stars, Stars, Nstars); 905 for (i = 0; i < Nstars; i++) { 906 InitStar (&stars[i]); 907 stars[i].measure.Xccd = ps1data[i].X; 908 stars[i].measure.Yccd = ps1data[i].Y; 909 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 910 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 911 912 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle); 913 stars[i].measure.pltscale = ps1data[i].pltscale; 874 Catalog *catalog = addstar_catalog_init (Nstars); 875 ALLOCATE (catalog->lensing, Lensing, Nstars); 876 877 for (i = 0; i < Nstars; i++) { 878 catalog->measure[i].Xccd = ps1data[i].X; 879 catalog->measure[i].Yccd = ps1data[i].Y; 880 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 881 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 882 883 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 884 catalog->measure[i].pltscale = ps1data[i].pltscale; 914 885 915 886 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 916 stars[i].measure.M = NAN;917 } else { 918 stars[i].measure.M = ps1data[i].M + ZeroPt;919 } 920 stars[i].measure.dM = ps1data[i].dM;921 stars[i].measure.dMcal = ps1data[i].dMcal;922 stars[i].measure.Map = ps1data[i].Map + ZeroPt;923 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;924 925 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;926 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;887 catalog->measure[i].M = NAN; 888 } else { 889 catalog->measure[i].M = ps1data[i].M + ZeroPt; 890 } 891 catalog->measure[i].dM = ps1data[i].dM; 892 catalog->measure[i].dMcal = ps1data[i].dMcal; 893 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 894 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 895 896 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 897 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 927 898 928 899 // these fluxes are converted from counts to counts/sec in FilterStars.c 929 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 930 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM); 931 stars[i].measure.FluxKron = ps1data[i].kronFlux; 932 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 933 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 934 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap); 935 936 stars[i].measure.Sky = ps1data[i].sky; 937 stars[i].measure.dSky = ps1data[i].dSky; 938 939 stars[i].measure.psfChisq = ps1data[i].psfChisq; 940 stars[i].measure.psfQF = ps1data[i].psfQF; 941 stars[i].measure.psfQFperf = ps1data[i].psfQFperf; 942 943 stars[i].measure.psfNdof = ps1data[i].psfNdof; 944 stars[i].measure.psfNpix = ps1data[i].psfNpix; 945 stars[i].measure.extNsigma = ps1data[i].extNsigma; 946 947 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 948 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 949 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 950 951 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx); 952 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 953 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 954 955 stars[i].measure.photFlags = ps1data[i].flags; 956 stars[i].measure.photFlags2 = ps1data[i].flags2; 957 958 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 959 stars[i].measure.detID = ps1data[i].detID; 960 961 ALLOCATE (stars[i].lensing, Lensing, 1); 962 dvo_lensing_init (stars[i].lensing); 963 964 stars[i].lensing->X11_sm_obj = ps1data[i].X11_sm_obj; 965 stars[i].lensing->X12_sm_obj = ps1data[i].X12_sm_obj; 966 stars[i].lensing->X22_sm_obj = ps1data[i].X22_sm_obj; 967 stars[i].lensing->E1_sm_obj = ps1data[i].E1_sm_obj; 968 stars[i].lensing->E2_sm_obj = ps1data[i].E2_sm_obj; 969 970 stars[i].lensing->X11_sh_obj = ps1data[i].X11_sh_obj; 971 stars[i].lensing->X12_sh_obj = ps1data[i].X12_sh_obj; 972 stars[i].lensing->X22_sh_obj = ps1data[i].X22_sh_obj; 973 stars[i].lensing->E1_sh_obj = ps1data[i].E1_sh_obj; 974 stars[i].lensing->E2_sh_obj = ps1data[i].E2_sh_obj; 975 976 stars[i].lensing->X11_sm_psf = ps1data[i].X11_sm_psf; 977 stars[i].lensing->X12_sm_psf = ps1data[i].X12_sm_psf; 978 stars[i].lensing->X22_sm_psf = ps1data[i].X22_sm_psf; 979 stars[i].lensing->E1_sm_psf = ps1data[i].E1_sm_psf; 980 stars[i].lensing->E2_sm_psf = ps1data[i].E2_sm_psf; 981 982 stars[i].lensing->X11_sh_psf = ps1data[i].X11_sh_psf; 983 stars[i].lensing->X12_sh_psf = ps1data[i].X12_sh_psf; 984 stars[i].lensing->X22_sh_psf = ps1data[i].X22_sh_psf; 985 stars[i].lensing->E1_sh_psf = ps1data[i].E1_sh_psf; 986 stars[i].lensing->E2_sh_psf = ps1data[i].E2_sh_psf; 987 988 // stars[i].lensing->F_ApR5 = ps1data[i].F_ApR5; 989 // stars[i].lensing->dF_ApR5 = ps1data[i].dF_ApR5; 990 // stars[i].lensing->sF_ApR5 = ps1data[i].sF_ApR5; 991 // stars[i].lensing->fF_ApR5 = ps1data[i].fF_ApR5; 900 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 901 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 902 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 903 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 904 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 905 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 906 907 catalog->measure[i].Sky = ps1data[i].sky; 908 catalog->measure[i].dSky = ps1data[i].dSky; 909 910 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 911 catalog->measure[i].psfQF = ps1data[i].psfQF; 912 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 913 914 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 915 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 916 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 917 918 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 919 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 920 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 921 922 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 923 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 924 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 925 926 catalog->measure[i].photFlags = ps1data[i].flags; 927 catalog->measure[i].photFlags2 = ps1data[i].flags2; 928 929 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 930 catalog->measure[i].detID = ps1data[i].detID; 931 932 dvo_lensing_init (&catalog->lensing[i]); 933 934 catalog->lensing[i].X11_sm_obj = ps1data[i].X11_sm_obj; 935 catalog->lensing[i].X12_sm_obj = ps1data[i].X12_sm_obj; 936 catalog->lensing[i].X22_sm_obj = ps1data[i].X22_sm_obj; 937 catalog->lensing[i].E1_sm_obj = ps1data[i].E1_sm_obj; 938 catalog->lensing[i].E2_sm_obj = ps1data[i].E2_sm_obj; 939 940 catalog->lensing[i].X11_sh_obj = ps1data[i].X11_sh_obj; 941 catalog->lensing[i].X12_sh_obj = ps1data[i].X12_sh_obj; 942 catalog->lensing[i].X22_sh_obj = ps1data[i].X22_sh_obj; 943 catalog->lensing[i].E1_sh_obj = ps1data[i].E1_sh_obj; 944 catalog->lensing[i].E2_sh_obj = ps1data[i].E2_sh_obj; 945 946 catalog->lensing[i].X11_sm_psf = ps1data[i].X11_sm_psf; 947 catalog->lensing[i].X12_sm_psf = ps1data[i].X12_sm_psf; 948 catalog->lensing[i].X22_sm_psf = ps1data[i].X22_sm_psf; 949 catalog->lensing[i].E1_sm_psf = ps1data[i].E1_sm_psf; 950 catalog->lensing[i].E2_sm_psf = ps1data[i].E2_sm_psf; 951 952 catalog->lensing[i].X11_sh_psf = ps1data[i].X11_sh_psf; 953 catalog->lensing[i].X12_sh_psf = ps1data[i].X12_sh_psf; 954 catalog->lensing[i].X22_sh_psf = ps1data[i].X22_sh_psf; 955 catalog->lensing[i].E1_sh_psf = ps1data[i].E1_sh_psf; 956 catalog->lensing[i].E2_sh_psf = ps1data[i].E2_sh_psf; 957 958 // catalog->lensing[i].F_ApR5 = ps1data[i].F_ApR5; 959 // catalog->lensing[i].dF_ApR5 = ps1data[i].dF_ApR5; 960 // catalog->lensing[i].sF_ApR5 = ps1data[i].sF_ApR5; 961 // catalog->lensing[i].fF_ApR5 = ps1data[i].fF_ApR5; 992 962 // 993 // stars[i].lensing->F_ApR6 = ps1data[i].F_ApR6;994 // stars[i].lensing->dF_ApR6 = ps1data[i].dF_ApR6;995 // stars[i].lensing->sF_ApR6 = ps1data[i].sF_ApR6;996 // stars[i].lensing->fF_ApR6 = ps1data[i].fF_ApR6;997 998 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 999 stars[i].lensing->detID = ps1data[i].detID;963 // catalog->lensing[i].F_ApR6 = ps1data[i].F_ApR6; 964 // catalog->lensing[i].dF_ApR6 = ps1data[i].dF_ApR6; 965 // catalog->lensing[i].sF_ApR6 = ps1data[i].sF_ApR6; 966 // catalog->lensing[i].fF_ApR6 = ps1data[i].fF_ApR6; 967 968 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 969 catalog->lensing[i].detID = ps1data[i].detID; 1000 970 1001 971 // the Average fields and the following Measure fields are set in FilterStars after … … 1008 978 // the following fields are currently not being set anywhere: t_msec 1009 979 } 1010 *nstars = Nstars; 1011 return (stars); 1012 } 1013 1014 Stars *Convert_PS1_V5_R1_Lensing (FTable *table, unsigned int *nstars) { 980 return catalog; 981 } 982 983 Catalog *Convert_PS1_V5_R1_Lensing (FTable *table) { 1015 984 1016 985 off_t Nstars; 1017 986 unsigned int i; 1018 987 double ZeroPt; 1019 Stars *stars;1020 988 CMF_PS1_V5_R1_Lensing *ps1data; 1021 989 … … 1027 995 ZeroPt = GetZeroPoint(); 1028 996 1029 ALLOCATE (stars, Stars, Nstars); 1030 for (i = 0; i < Nstars; i++) { 1031 InitStar (&stars[i]); 1032 stars[i].measure.Xccd = ps1data[i].X; 1033 stars[i].measure.Yccd = ps1data[i].Y; 1034 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 1035 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 1036 1037 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle); 1038 stars[i].measure.pltscale = ps1data[i].pltscale; 997 Catalog *catalog = addstar_catalog_init (Nstars); 998 ALLOCATE (catalog->lensing, Lensing, Nstars); 999 1000 for (i = 0; i < Nstars; i++) { 1001 catalog->measure[i].Xccd = ps1data[i].X; 1002 catalog->measure[i].Yccd = ps1data[i].Y; 1003 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1004 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1005 1006 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1007 catalog->measure[i].pltscale = ps1data[i].pltscale; 1039 1008 1040 1009 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1041 stars[i].measure.M = NAN;1042 } else { 1043 stars[i].measure.M = ps1data[i].M + ZeroPt;1044 } 1045 stars[i].measure.dM = ps1data[i].dM;1046 stars[i].measure.dMcal = ps1data[i].dMcal;1047 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1048 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1049 1050 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1051 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1010 catalog->measure[i].M = NAN; 1011 } else { 1012 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1013 } 1014 catalog->measure[i].dM = ps1data[i].dM; 1015 catalog->measure[i].dMcal = ps1data[i].dMcal; 1016 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1017 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1018 1019 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1020 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1052 1021 1053 1022 // these fluxes are converted from counts to counts/sec in FilterStars.c 1054 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1055 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM); 1056 stars[i].measure.FluxKron = ps1data[i].kronFlux; 1057 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 1058 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1059 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap); 1060 1061 stars[i].measure.Sky = ps1data[i].sky; 1062 stars[i].measure.dSky = ps1data[i].dSky; 1063 1064 stars[i].measure.psfChisq = ps1data[i].psfChisq; 1065 stars[i].measure.psfQF = ps1data[i].psfQF; 1066 stars[i].measure.psfQFperf = ps1data[i].psfQFperf; 1067 1068 stars[i].measure.psfNdof = ps1data[i].psfNdof; 1069 stars[i].measure.psfNpix = ps1data[i].psfNpix; 1070 stars[i].measure.extNsigma = ps1data[i].extNsigma; 1071 1072 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 1073 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 1074 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 1075 1076 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx); 1077 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 1078 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 1079 1080 stars[i].measure.photFlags = ps1data[i].flags; 1081 stars[i].measure.photFlags2 = ps1data[i].flags2; 1082 1083 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1084 stars[i].measure.detID = ps1data[i].detID; 1085 1086 ALLOCATE (stars[i].lensing, Lensing, 1); 1087 dvo_lensing_init (stars[i].lensing); 1088 1089 stars[i].lensing->X11_sm_obj = ps1data[i].X11_sm_obj; 1090 stars[i].lensing->X12_sm_obj = ps1data[i].X12_sm_obj; 1091 stars[i].lensing->X22_sm_obj = ps1data[i].X22_sm_obj; 1092 stars[i].lensing->E1_sm_obj = ps1data[i].E1_sm_obj; 1093 stars[i].lensing->E2_sm_obj = ps1data[i].E2_sm_obj; 1094 1095 stars[i].lensing->X11_sh_obj = ps1data[i].X11_sh_obj; 1096 stars[i].lensing->X12_sh_obj = ps1data[i].X12_sh_obj; 1097 stars[i].lensing->X22_sh_obj = ps1data[i].X22_sh_obj; 1098 stars[i].lensing->E1_sh_obj = ps1data[i].E1_sh_obj; 1099 stars[i].lensing->E2_sh_obj = ps1data[i].E2_sh_obj; 1100 1101 stars[i].lensing->X11_sm_psf = ps1data[i].X11_sm_psf; 1102 stars[i].lensing->X12_sm_psf = ps1data[i].X12_sm_psf; 1103 stars[i].lensing->X22_sm_psf = ps1data[i].X22_sm_psf; 1104 stars[i].lensing->E1_sm_psf = ps1data[i].E1_sm_psf; 1105 stars[i].lensing->E2_sm_psf = ps1data[i].E2_sm_psf; 1106 1107 stars[i].lensing->X11_sh_psf = ps1data[i].X11_sh_psf; 1108 stars[i].lensing->X12_sh_psf = ps1data[i].X12_sh_psf; 1109 stars[i].lensing->X22_sh_psf = ps1data[i].X22_sh_psf; 1110 stars[i].lensing->E1_sh_psf = ps1data[i].E1_sh_psf; 1111 stars[i].lensing->E2_sh_psf = ps1data[i].E2_sh_psf; 1112 1113 // stars[i].lensing->F_ApR5 = ps1data[i].F_ApR5; 1114 // stars[i].lensing->dF_ApR5 = ps1data[i].dF_ApR5; 1115 // stars[i].lensing->sF_ApR5 = ps1data[i].sF_ApR5; 1116 // stars[i].lensing->fF_ApR5 = ps1data[i].fF_ApR5; 1023 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1024 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1025 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1026 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1027 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1028 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1029 1030 catalog->measure[i].Sky = ps1data[i].sky; 1031 catalog->measure[i].dSky = ps1data[i].dSky; 1032 1033 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1034 catalog->measure[i].psfQF = ps1data[i].psfQF; 1035 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1036 1037 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1038 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1039 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1040 1041 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1042 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1043 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1044 1045 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1046 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1047 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1048 1049 catalog->measure[i].photFlags = ps1data[i].flags; 1050 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1051 1052 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1053 catalog->measure[i].detID = ps1data[i].detID; 1054 1055 dvo_lensing_init (&catalog->lensing[i]); 1056 1057 catalog->lensing[i].X11_sm_obj = ps1data[i].X11_sm_obj; 1058 catalog->lensing[i].X12_sm_obj = ps1data[i].X12_sm_obj; 1059 catalog->lensing[i].X22_sm_obj = ps1data[i].X22_sm_obj; 1060 catalog->lensing[i].E1_sm_obj = ps1data[i].E1_sm_obj; 1061 catalog->lensing[i].E2_sm_obj = ps1data[i].E2_sm_obj; 1062 1063 catalog->lensing[i].X11_sh_obj = ps1data[i].X11_sh_obj; 1064 catalog->lensing[i].X12_sh_obj = ps1data[i].X12_sh_obj; 1065 catalog->lensing[i].X22_sh_obj = ps1data[i].X22_sh_obj; 1066 catalog->lensing[i].E1_sh_obj = ps1data[i].E1_sh_obj; 1067 catalog->lensing[i].E2_sh_obj = ps1data[i].E2_sh_obj; 1068 1069 catalog->lensing[i].X11_sm_psf = ps1data[i].X11_sm_psf; 1070 catalog->lensing[i].X12_sm_psf = ps1data[i].X12_sm_psf; 1071 catalog->lensing[i].X22_sm_psf = ps1data[i].X22_sm_psf; 1072 catalog->lensing[i].E1_sm_psf = ps1data[i].E1_sm_psf; 1073 catalog->lensing[i].E2_sm_psf = ps1data[i].E2_sm_psf; 1074 1075 catalog->lensing[i].X11_sh_psf = ps1data[i].X11_sh_psf; 1076 catalog->lensing[i].X12_sh_psf = ps1data[i].X12_sh_psf; 1077 catalog->lensing[i].X22_sh_psf = ps1data[i].X22_sh_psf; 1078 catalog->lensing[i].E1_sh_psf = ps1data[i].E1_sh_psf; 1079 catalog->lensing[i].E2_sh_psf = ps1data[i].E2_sh_psf; 1080 1081 // catalog->lensing[i].F_ApR5 = ps1data[i].F_ApR5; 1082 // catalog->lensing[i].dF_ApR5 = ps1data[i].dF_ApR5; 1083 // catalog->lensing[i].sF_ApR5 = ps1data[i].sF_ApR5; 1084 // catalog->lensing[i].fF_ApR5 = ps1data[i].fF_ApR5; 1117 1085 // 1118 // stars[i].lensing->F_ApR6 = ps1data[i].F_ApR6;1119 // stars[i].lensing->dF_ApR6 = ps1data[i].dF_ApR6;1120 // stars[i].lensing->sF_ApR6 = ps1data[i].sF_ApR6;1121 // stars[i].lensing->fF_ApR6 = ps1data[i].fF_ApR6;1122 1123 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1124 stars[i].lensing->detID = ps1data[i].detID;1086 // catalog->lensing[i].F_ApR6 = ps1data[i].F_ApR6; 1087 // catalog->lensing[i].dF_ApR6 = ps1data[i].dF_ApR6; 1088 // catalog->lensing[i].sF_ApR6 = ps1data[i].sF_ApR6; 1089 // catalog->lensing[i].fF_ApR6 = ps1data[i].fF_ApR6; 1090 1091 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1092 catalog->lensing[i].detID = ps1data[i].detID; 1125 1093 1126 1094 // the Average fields and the following Measure fields are set in FilterStars after … … 1133 1101 // the following fields are currently not being set anywhere: t_msec 1134 1102 } 1135 *nstars = Nstars; 1136 return (stars); 1137 } 1138 1139 Stars *Convert_PS1_V5_R2_Lensing (FTable *table, unsigned int *nstars) { 1103 return catalog; 1104 } 1105 1106 Catalog *Convert_PS1_V5_R2_Lensing (FTable *table) { 1140 1107 1141 1108 off_t Nstars; 1142 1109 unsigned int i; 1143 1110 double ZeroPt; 1144 Stars *stars;1145 1111 CMF_PS1_V5_R2_Lensing *ps1data; 1146 1112 … … 1152 1118 ZeroPt = GetZeroPoint(); 1153 1119 1154 ALLOCATE (stars, Stars, Nstars); 1155 for (i = 0; i < Nstars; i++) { 1156 InitStar (&stars[i]); 1157 stars[i].measure.Xccd = ps1data[i].X; 1158 stars[i].measure.Yccd = ps1data[i].Y; 1159 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX); 1160 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY); 1161 1162 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle); 1163 stars[i].measure.pltscale = ps1data[i].pltscale; 1120 Catalog *catalog = addstar_catalog_init (Nstars); 1121 ALLOCATE (catalog->lensing, Lensing, Nstars); 1122 1123 for (i = 0; i < Nstars; i++) { 1124 catalog->measure[i].Xccd = ps1data[i].X; 1125 catalog->measure[i].Yccd = ps1data[i].Y; 1126 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1127 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1128 1129 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1130 catalog->measure[i].pltscale = ps1data[i].pltscale; 1164 1131 1165 1132 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1166 stars[i].measure.M = NAN;1167 } else { 1168 stars[i].measure.M = ps1data[i].M + ZeroPt;1169 } 1170 stars[i].measure.dM = ps1data[i].dM;1171 stars[i].measure.dMcal = ps1data[i].dMcal;1172 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1173 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1174 1175 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1176 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1133 catalog->measure[i].M = NAN; 1134 } else { 1135 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1136 } 1137 catalog->measure[i].dM = ps1data[i].dM; 1138 catalog->measure[i].dMcal = ps1data[i].dMcal; 1139 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1140 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1141 1142 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1143 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1177 1144 1178 1145 // these fluxes are converted from counts to counts/sec in FilterStars.c 1179 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1180 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM); 1181 stars[i].measure.FluxKron = ps1data[i].kronFlux; 1182 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr; 1183 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1184 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap); 1185 1186 stars[i].measure.Sky = ps1data[i].sky; 1187 stars[i].measure.dSky = ps1data[i].dSky; 1188 1189 stars[i].measure.psfChisq = ps1data[i].psfChisq; 1190 stars[i].measure.psfQF = ps1data[i].psfQF; 1191 stars[i].measure.psfQFperf = ps1data[i].psfQFperf; 1192 1193 stars[i].measure.psfNdof = ps1data[i].psfNdof; 1194 stars[i].measure.psfNpix = ps1data[i].psfNpix; 1195 stars[i].measure.extNsigma = ps1data[i].extNsigma; 1196 1197 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx); 1198 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy); 1199 stars[i].measure.theta = ToShortDegrees(ps1data[i].df); 1200 1201 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx); 1202 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy); 1203 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy); 1204 1205 stars[i].measure.photFlags = ps1data[i].flags; 1206 stars[i].measure.photFlags2 = ps1data[i].flags2; 1207 1208 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1209 stars[i].measure.detID = ps1data[i].detID; 1210 1211 ALLOCATE (stars[i].lensing, Lensing, 1); 1212 dvo_lensing_init (stars[i].lensing); 1213 1214 stars[i].lensing->X11_sm_obj = ps1data[i].X11_sm_obj; 1215 stars[i].lensing->X12_sm_obj = ps1data[i].X12_sm_obj; 1216 stars[i].lensing->X22_sm_obj = ps1data[i].X22_sm_obj; 1217 stars[i].lensing->E1_sm_obj = ps1data[i].E1_sm_obj; 1218 stars[i].lensing->E2_sm_obj = ps1data[i].E2_sm_obj; 1219 1220 stars[i].lensing->X11_sh_obj = ps1data[i].X11_sh_obj; 1221 stars[i].lensing->X12_sh_obj = ps1data[i].X12_sh_obj; 1222 stars[i].lensing->X22_sh_obj = ps1data[i].X22_sh_obj; 1223 stars[i].lensing->E1_sh_obj = ps1data[i].E1_sh_obj; 1224 stars[i].lensing->E2_sh_obj = ps1data[i].E2_sh_obj; 1225 1226 stars[i].lensing->X11_sm_psf = ps1data[i].X11_sm_psf; 1227 stars[i].lensing->X12_sm_psf = ps1data[i].X12_sm_psf; 1228 stars[i].lensing->X22_sm_psf = ps1data[i].X22_sm_psf; 1229 stars[i].lensing->E1_sm_psf = ps1data[i].E1_sm_psf; 1230 stars[i].lensing->E2_sm_psf = ps1data[i].E2_sm_psf; 1231 1232 stars[i].lensing->X11_sh_psf = ps1data[i].X11_sh_psf; 1233 stars[i].lensing->X12_sh_psf = ps1data[i].X12_sh_psf; 1234 stars[i].lensing->X22_sh_psf = ps1data[i].X22_sh_psf; 1235 stars[i].lensing->E1_sh_psf = ps1data[i].E1_sh_psf; 1236 stars[i].lensing->E2_sh_psf = ps1data[i].E2_sh_psf; 1237 1238 stars[i].lensing->E1_psf = ps1data[i].E1_psf; 1239 stars[i].lensing->E2_psf = ps1data[i].E2_psf; 1240 1241 // stars[i].lensing->F_ApR5 = ps1data[i].F_ApR5; 1242 // stars[i].lensing->dF_ApR5 = ps1data[i].dF_ApR5; 1243 // stars[i].lensing->sF_ApR5 = ps1data[i].sF_ApR5; 1244 // stars[i].lensing->fF_ApR5 = ps1data[i].fF_ApR5; 1146 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1147 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1148 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1149 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1150 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1151 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1152 1153 catalog->measure[i].Sky = ps1data[i].sky; 1154 catalog->measure[i].dSky = ps1data[i].dSky; 1155 1156 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1157 catalog->measure[i].psfQF = ps1data[i].psfQF; 1158 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1159 1160 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1161 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1162 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1163 1164 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1165 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1166 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1167 1168 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1169 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1170 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1171 1172 catalog->measure[i].photFlags = ps1data[i].flags; 1173 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1174 1175 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1176 catalog->measure[i].detID = ps1data[i].detID; 1177 1178 dvo_lensing_init (&catalog->lensing[i]); 1179 1180 catalog->lensing[i].X11_sm_obj = ps1data[i].X11_sm_obj; 1181 catalog->lensing[i].X12_sm_obj = ps1data[i].X12_sm_obj; 1182 catalog->lensing[i].X22_sm_obj = ps1data[i].X22_sm_obj; 1183 catalog->lensing[i].E1_sm_obj = ps1data[i].E1_sm_obj; 1184 catalog->lensing[i].E2_sm_obj = ps1data[i].E2_sm_obj; 1185 1186 catalog->lensing[i].X11_sh_obj = ps1data[i].X11_sh_obj; 1187 catalog->lensing[i].X12_sh_obj = ps1data[i].X12_sh_obj; 1188 catalog->lensing[i].X22_sh_obj = ps1data[i].X22_sh_obj; 1189 catalog->lensing[i].E1_sh_obj = ps1data[i].E1_sh_obj; 1190 catalog->lensing[i].E2_sh_obj = ps1data[i].E2_sh_obj; 1191 1192 catalog->lensing[i].X11_sm_psf = ps1data[i].X11_sm_psf; 1193 catalog->lensing[i].X12_sm_psf = ps1data[i].X12_sm_psf; 1194 catalog->lensing[i].X22_sm_psf = ps1data[i].X22_sm_psf; 1195 catalog->lensing[i].E1_sm_psf = ps1data[i].E1_sm_psf; 1196 catalog->lensing[i].E2_sm_psf = ps1data[i].E2_sm_psf; 1197 1198 catalog->lensing[i].X11_sh_psf = ps1data[i].X11_sh_psf; 1199 catalog->lensing[i].X12_sh_psf = ps1data[i].X12_sh_psf; 1200 catalog->lensing[i].X22_sh_psf = ps1data[i].X22_sh_psf; 1201 catalog->lensing[i].E1_sh_psf = ps1data[i].E1_sh_psf; 1202 catalog->lensing[i].E2_sh_psf = ps1data[i].E2_sh_psf; 1203 1204 catalog->lensing[i].E1_psf = ps1data[i].E1_psf; 1205 catalog->lensing[i].E2_psf = ps1data[i].E2_psf; 1206 1207 // catalog->lensing[i].F_ApR5 = ps1data[i].F_ApR5; 1208 // catalog->lensing[i].dF_ApR5 = ps1data[i].dF_ApR5; 1209 // catalog->lensing[i].sF_ApR5 = ps1data[i].sF_ApR5; 1210 // catalog->lensing[i].fF_ApR5 = ps1data[i].fF_ApR5; 1245 1211 // 1246 // stars[i].lensing->F_ApR6 = ps1data[i].F_ApR6;1247 // stars[i].lensing->dF_ApR6 = ps1data[i].dF_ApR6;1248 // stars[i].lensing->sF_ApR6 = ps1data[i].sF_ApR6;1249 // stars[i].lensing->fF_ApR6 = ps1data[i].fF_ApR6;1250 1251 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1252 stars[i].lensing->detID = ps1data[i].detID;1212 // catalog->lensing[i].F_ApR6 = ps1data[i].F_ApR6; 1213 // catalog->lensing[i].dF_ApR6 = ps1data[i].dF_ApR6; 1214 // catalog->lensing[i].sF_ApR6 = ps1data[i].sF_ApR6; 1215 // catalog->lensing[i].fF_ApR6 = ps1data[i].fF_ApR6; 1216 1217 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1218 catalog->lensing[i].detID = ps1data[i].detID; 1253 1219 1254 1220 // the Average fields and the following Measure fields are set in FilterStars after … … 1261 1227 // the following fields are currently not being set anywhere: t_msec 1262 1228 } 1263 *nstars = Nstars; 1264 return (stars); 1265 } 1266 1267 Stars *Convert_PS1_SV1 (FTable *table, unsigned int *nstars) { 1229 return catalog; 1230 } 1231 1232 Catalog *Convert_PS1_SV1 (FTable *table) { 1268 1233 1269 1234 off_t Nstars; 1270 1235 unsigned int i; 1271 1236 double ZeroPt; 1272 Stars *stars;1273 1237 CMF_PS1_SV1 *ps1data; 1274 1238 1275 1239 if (table[0].header[0].Naxis[0] == 196) { 1276 stars = Convert_PS1_SV1_Alt (table, nstars);1277 return (stars);1240 Catalog *catalog = Convert_PS1_SV1_Alt (table); 1241 return catalog; 1278 1242 } 1279 1243 … … 1285 1249 ZeroPt = GetZeroPoint(); 1286 1250 1287 ALLOCATE (stars, Stars,Nstars);1288 for (i = 0; i < Nstars; i++) { 1289 InitStar (&stars[i]);1290 stars[i].measure.Xccd = ps1data[i].X;1291 stars[i].measure.Yccd = ps1data[i].Y;1292 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1293 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1294 1295 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1296 stars[i].measure.pltscale = ps1data[i].pltscale;1251 Catalog *catalog = addstar_catalog_init (Nstars); 1252 1253 for (i = 0; i < Nstars; i++) { 1254 catalog->measure[i].Xccd = ps1data[i].X; 1255 catalog->measure[i].Yccd = ps1data[i].Y; 1256 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1257 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1258 1259 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1260 catalog->measure[i].pltscale = ps1data[i].pltscale; 1297 1261 1298 1262 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1299 stars[i].measure.M = NAN;1300 } else { 1301 stars[i].measure.M = ps1data[i].M + ZeroPt;1302 } 1303 stars[i].measure.dM = ps1data[i].dM;1304 stars[i].measure.dMcal = ps1data[i].dMcal;1305 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1306 stars[i].measure.dMap = ps1data[i].dM; // a proxy measure1307 1308 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1309 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1263 catalog->measure[i].M = NAN; 1264 } else { 1265 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1266 } 1267 catalog->measure[i].dM = ps1data[i].dM; 1268 catalog->measure[i].dMcal = ps1data[i].dMcal; 1269 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1270 catalog->measure[i].dMap = ps1data[i].dM; // a proxy measure 1271 1272 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1273 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1310 1274 1311 1275 // these fluxes are converted from counts to counts/sec in FilterStars.c 1312 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1313 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1314 stars[i].measure.FluxKron = ps1data[i].kronFlux;1315 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1316 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (NAN, ps1data[i].Map);1317 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (NAN, stars[i].measure.FluxAp, stars[i].measure.dMap);1318 1319 stars[i].measure.Sky = ps1data[i].sky;1320 stars[i].measure.dSky = ps1data[i].dSky;1321 1322 stars[i].measure.psfChisq = ps1data[i].psfChisq;1323 stars[i].measure.psfQF = ps1data[i].psfQF;1324 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;1325 1326 stars[i].measure.psfNdof = ps1data[i].psfNdof;1327 stars[i].measure.psfNpix = ps1data[i].psfNpix;1328 stars[i].measure.extNsigma = ps1data[i].extNsigma;1329 1330 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1331 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1332 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1333 1334 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1335 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1336 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1337 1338 stars[i].measure.photFlags = ps1data[i].flags;1339 stars[i].measure.photFlags2 = ps1data[i].flags2;1340 1341 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1342 stars[i].measure.detID = ps1data[i].detID;1276 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1277 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1278 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1279 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1280 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (NAN, ps1data[i].Map); 1281 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (NAN, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1282 1283 catalog->measure[i].Sky = ps1data[i].sky; 1284 catalog->measure[i].dSky = ps1data[i].dSky; 1285 1286 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1287 catalog->measure[i].psfQF = ps1data[i].psfQF; 1288 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1289 1290 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1291 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1292 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1293 1294 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1295 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1296 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1297 1298 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1299 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1300 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1301 1302 catalog->measure[i].photFlags = ps1data[i].flags; 1303 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1304 1305 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1306 catalog->measure[i].detID = ps1data[i].detID; 1343 1307 1344 1308 // the Average fields and the following Measure fields are set in FilterStars after … … 1348 1312 // the following fields are currently not being set anywhere: t_msec 1349 1313 } 1350 *nstars = Nstars; 1351 return (stars); 1352 } 1353 1354 Stars *Convert_PS1_SV1_Alt (FTable *table, unsigned int *nstars) { 1314 return catalog; 1315 } 1316 1317 Catalog *Convert_PS1_SV1_Alt (FTable *table) { 1355 1318 1356 1319 off_t Nstars; 1357 1320 unsigned int i; 1358 1321 double ZeroPt; 1359 Stars *stars;1360 1322 CMF_PS1_SV1 *ps1data; 1361 1323 1362 1324 // some test output files were produced called CMF_PS1_SV1 but with mismatch byte boundaries 1363 1364 1325 ps1data = gfits_table_get_CMF_PS1_SV1_Alt (table, &Nstars, NULL); 1365 1326 if (!ps1data) { … … 1369 1330 ZeroPt = GetZeroPoint(); 1370 1331 1371 ALLOCATE (stars, Stars,Nstars);1372 for (i = 0; i < Nstars; i++) { 1373 InitStar (&stars[i]);1374 stars[i].measure.Xccd = ps1data[i].X;1375 stars[i].measure.Yccd = ps1data[i].Y;1376 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1377 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1378 1379 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1380 stars[i].measure.pltscale = ps1data[i].pltscale;1332 Catalog *catalog = addstar_catalog_init (Nstars); 1333 1334 for (i = 0; i < Nstars; i++) { 1335 catalog->measure[i].Xccd = ps1data[i].X; 1336 catalog->measure[i].Yccd = ps1data[i].Y; 1337 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1338 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1339 1340 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1341 catalog->measure[i].pltscale = ps1data[i].pltscale; 1381 1342 1382 1343 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1383 stars[i].measure.M = NAN;1384 } else { 1385 stars[i].measure.M = ps1data[i].M + ZeroPt;1386 } 1387 stars[i].measure.dM = ps1data[i].dM;1388 stars[i].measure.dMcal = ps1data[i].dMcal;1389 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1390 stars[i].measure.dMap = ps1data[i].dM; // a proxy measure1391 1392 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1393 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1344 catalog->measure[i].M = NAN; 1345 } else { 1346 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1347 } 1348 catalog->measure[i].dM = ps1data[i].dM; 1349 catalog->measure[i].dMcal = ps1data[i].dMcal; 1350 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1351 catalog->measure[i].dMap = ps1data[i].dM; // a proxy measure 1352 1353 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1354 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1394 1355 1395 1356 // these fluxes are converted from counts to counts/sec in FilterStars.c 1396 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1397 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1398 stars[i].measure.FluxKron = ps1data[i].kronFlux;1399 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1400 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (NAN, ps1data[i].Map);1401 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (NAN, stars[i].measure.FluxAp, stars[i].measure.dMap);1402 1403 stars[i].measure.Sky = ps1data[i].sky;1404 stars[i].measure.dSky = ps1data[i].dSky;1405 1406 stars[i].measure.psfChisq = ps1data[i].psfChisq;1407 stars[i].measure.psfQF = ps1data[i].psfQF;1408 stars[i].measure.psfNdof = ps1data[i].psfNdof;1409 stars[i].measure.psfNpix = ps1data[i].psfNpix;1410 stars[i].measure.extNsigma = ps1data[i].extNsigma;1411 1412 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1413 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1414 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1415 1416 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1417 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1418 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1419 1420 stars[i].measure.photFlags = ps1data[i].flags;1421 stars[i].measure.photFlags2 = ps1data[i].flags2;1422 1423 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1424 stars[i].measure.detID = ps1data[i].detID;1357 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1358 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1359 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1360 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1361 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (NAN, ps1data[i].Map); 1362 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (NAN, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1363 1364 catalog->measure[i].Sky = ps1data[i].sky; 1365 catalog->measure[i].dSky = ps1data[i].dSky; 1366 1367 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1368 catalog->measure[i].psfQF = ps1data[i].psfQF; 1369 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1370 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1371 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1372 1373 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1374 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1375 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1376 1377 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1378 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1379 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1380 1381 catalog->measure[i].photFlags = ps1data[i].flags; 1382 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1383 1384 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1385 catalog->measure[i].detID = ps1data[i].detID; 1425 1386 1426 1387 // the Average fields and the following Measure fields are set in FilterStars after … … 1430 1391 // the following fields are currently not being set anywhere: t_msec 1431 1392 } 1432 *nstars = Nstars; 1433 return (stars); 1434 } 1435 1436 Stars *Convert_PS1_SV2 (FTable *table, unsigned int *nstars) { 1393 return catalog; 1394 } 1395 1396 Catalog *Convert_PS1_SV2 (FTable *table) { 1437 1397 1438 1398 off_t Nstars; 1439 1399 unsigned int i; 1440 1400 double ZeroPt; 1441 Stars *stars;1442 1401 CMF_PS1_SV2 *ps1data; 1443 1402 … … 1449 1408 ZeroPt = GetZeroPoint(); 1450 1409 1451 ALLOCATE (stars, Stars,Nstars);1452 for (i = 0; i < Nstars; i++) { 1453 InitStar (&stars[i]);1454 stars[i].measure.Xccd = ps1data[i].X;1455 stars[i].measure.Yccd = ps1data[i].Y;1456 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1457 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1458 1459 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1460 stars[i].measure.pltscale = ps1data[i].pltscale;1410 Catalog *catalog = addstar_catalog_init (Nstars); 1411 1412 for (i = 0; i < Nstars; i++) { 1413 catalog->measure[i].Xccd = ps1data[i].X; 1414 catalog->measure[i].Yccd = ps1data[i].Y; 1415 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1416 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1417 1418 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1419 catalog->measure[i].pltscale = ps1data[i].pltscale; 1461 1420 1462 1421 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1463 stars[i].measure.M = NAN;1464 } else { 1465 stars[i].measure.M = ps1data[i].M + ZeroPt;1466 } 1467 stars[i].measure.dM = ps1data[i].dM;1468 stars[i].measure.dMcal = ps1data[i].dMcal;1469 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1470 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1471 1472 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1473 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1422 catalog->measure[i].M = NAN; 1423 } else { 1424 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1425 } 1426 catalog->measure[i].dM = ps1data[i].dM; 1427 catalog->measure[i].dMcal = ps1data[i].dMcal; 1428 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1429 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1430 1431 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1432 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1474 1433 1475 1434 // these fluxes are converted from counts to counts/sec in FilterStars.c 1476 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1477 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1478 stars[i].measure.FluxKron = ps1data[i].kronFlux;1479 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1480 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);1481 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);1482 1483 stars[i].measure.Sky = ps1data[i].sky;1484 stars[i].measure.dSky = ps1data[i].dSky;1485 1486 stars[i].measure.psfChisq = ps1data[i].psfChisq;1487 stars[i].measure.psfQF = ps1data[i].psfQF;1488 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;1489 1490 stars[i].measure.psfNdof = ps1data[i].psfNdof;1491 stars[i].measure.psfNpix = ps1data[i].psfNpix;1492 stars[i].measure.extNsigma = ps1data[i].extNsigma;1493 1494 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1495 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1496 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1497 1498 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1499 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1500 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1501 1502 stars[i].measure.photFlags = ps1data[i].flags;1503 stars[i].measure.photFlags2 = ps1data[i].flags2;1504 1505 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1506 stars[i].measure.detID = ps1data[i].detID;1435 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1436 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1437 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1438 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1439 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1440 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1441 1442 catalog->measure[i].Sky = ps1data[i].sky; 1443 catalog->measure[i].dSky = ps1data[i].dSky; 1444 1445 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1446 catalog->measure[i].psfQF = ps1data[i].psfQF; 1447 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1448 1449 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1450 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1451 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1452 1453 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1454 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1455 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1456 1457 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1458 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1459 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1460 1461 catalog->measure[i].photFlags = ps1data[i].flags; 1462 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1463 1464 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1465 catalog->measure[i].detID = ps1data[i].detID; 1507 1466 1508 1467 // the Average fields and the following Measure fields are set in FilterStars after … … 1512 1471 // the following fields are currently not being set anywhere: t_msec 1513 1472 } 1514 *nstars = Nstars; 1515 return (stars); 1516 } 1517 1518 Stars *Convert_PS1_SV3 (FTable *table, unsigned int *nstars) { 1473 return catalog; 1474 } 1475 1476 Catalog *Convert_PS1_SV3 (FTable *table) { 1519 1477 1520 1478 off_t Nstars; 1521 1479 unsigned int i; 1522 1480 double ZeroPt; 1523 Stars *stars;1524 1481 CMF_PS1_SV3 *ps1data; 1525 1482 … … 1531 1488 ZeroPt = GetZeroPoint(); 1532 1489 1533 ALLOCATE (stars, Stars,Nstars);1534 for (i = 0; i < Nstars; i++) { 1535 InitStar (&stars[i]);1536 stars[i].measure.Xccd = ps1data[i].X;1537 stars[i].measure.Yccd = ps1data[i].Y;1538 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1539 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1540 1541 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1542 stars[i].measure.pltscale = ps1data[i].pltscale;1490 Catalog *catalog = addstar_catalog_init (Nstars); 1491 1492 for (i = 0; i < Nstars; i++) { 1493 catalog->measure[i].Xccd = ps1data[i].X; 1494 catalog->measure[i].Yccd = ps1data[i].Y; 1495 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1496 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1497 1498 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1499 catalog->measure[i].pltscale = ps1data[i].pltscale; 1543 1500 1544 1501 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1545 stars[i].measure.M = NAN;1546 } else { 1547 stars[i].measure.M = ps1data[i].M + ZeroPt;1548 } 1549 stars[i].measure.dM = ps1data[i].dM;1550 stars[i].measure.dMcal = ps1data[i].dMcal;1551 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1552 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1553 1554 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1555 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1502 catalog->measure[i].M = NAN; 1503 } else { 1504 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1505 } 1506 catalog->measure[i].dM = ps1data[i].dM; 1507 catalog->measure[i].dMcal = ps1data[i].dMcal; 1508 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1509 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1510 1511 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1512 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1556 1513 1557 1514 // these fluxes are converted from counts to counts/sec in FilterStars.c 1558 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1559 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1560 stars[i].measure.FluxKron = ps1data[i].kronFlux;1561 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1562 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);1563 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);1564 1565 stars[i].measure.Sky = ps1data[i].sky;1566 stars[i].measure.dSky = ps1data[i].dSky;1567 1568 stars[i].measure.psfChisq = ps1data[i].psfChisq;1569 stars[i].measure.psfQF = ps1data[i].psfQF;1570 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;1571 1572 stars[i].measure.psfNdof = ps1data[i].psfNdof;1573 stars[i].measure.psfNpix = ps1data[i].psfNpix;1574 stars[i].measure.extNsigma = ps1data[i].extNsigma;1575 1576 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1577 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1578 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1579 1580 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1581 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1582 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1583 1584 stars[i].measure.photFlags = ps1data[i].flags;1585 stars[i].measure.photFlags2 = ps1data[i].flags2;1586 1587 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1588 stars[i].measure.detID = ps1data[i].detID;1515 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1516 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1517 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1518 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1519 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1520 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1521 1522 catalog->measure[i].Sky = ps1data[i].sky; 1523 catalog->measure[i].dSky = ps1data[i].dSky; 1524 1525 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1526 catalog->measure[i].psfQF = ps1data[i].psfQF; 1527 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1528 1529 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1530 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1531 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1532 1533 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1534 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1535 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1536 1537 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1538 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1539 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1540 1541 catalog->measure[i].photFlags = ps1data[i].flags; 1542 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1543 1544 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1545 catalog->measure[i].detID = ps1data[i].detID; 1589 1546 1590 1547 // the Average fields and the following Measure fields are set in FilterStars after … … 1594 1551 // the following fields are currently not being set anywhere: t_msec 1595 1552 } 1596 *nstars = Nstars; 1597 return (stars); 1598 } 1599 1600 Stars *Convert_PS1_SV4 (FTable *table, unsigned int *nstars) { 1553 return catalog; 1554 } 1555 1556 Catalog *Convert_PS1_SV4 (FTable *table) { 1601 1557 1602 1558 off_t Nstars; 1603 1559 unsigned int i; 1604 1560 double ZeroPt; 1605 Stars *stars;1606 1561 CMF_PS1_SV4 *ps1data; 1607 1562 … … 1613 1568 ZeroPt = GetZeroPoint(); 1614 1569 1615 ALLOCATE (stars, Stars,Nstars);1616 for (i = 0; i < Nstars; i++) { 1617 InitStar (&stars[i]);1618 stars[i].measure.Xccd = ps1data[i].X;1619 stars[i].measure.Yccd = ps1data[i].Y;1620 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1621 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1622 1623 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1624 stars[i].measure.pltscale = ps1data[i].pltscale;1570 Catalog *catalog = addstar_catalog_init (Nstars); 1571 1572 for (i = 0; i < Nstars; i++) { 1573 catalog->measure[i].Xccd = ps1data[i].X; 1574 catalog->measure[i].Yccd = ps1data[i].Y; 1575 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1576 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1577 1578 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1579 catalog->measure[i].pltscale = ps1data[i].pltscale; 1625 1580 1626 1581 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1627 stars[i].measure.M = NAN;1628 } else { 1629 stars[i].measure.M = ps1data[i].M + ZeroPt;1630 } 1631 stars[i].measure.dM = ps1data[i].dM;1632 stars[i].measure.dMcal = ps1data[i].dMcal;1633 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1634 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1635 1636 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1637 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1582 catalog->measure[i].M = NAN; 1583 } else { 1584 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1585 } 1586 catalog->measure[i].dM = ps1data[i].dM; 1587 catalog->measure[i].dMcal = ps1data[i].dMcal; 1588 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1589 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1590 1591 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1592 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1638 1593 1639 1594 // these fluxes are converted from counts to counts/sec in FilterStars.c 1640 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1641 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1642 stars[i].measure.FluxKron = ps1data[i].kronFlux;1643 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1644 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);1645 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);1646 1647 stars[i].measure.Sky = ps1data[i].sky;1648 stars[i].measure.dSky = ps1data[i].dSky;1649 1650 stars[i].measure.psfChisq = ps1data[i].psfChisq;1651 stars[i].measure.psfQF = ps1data[i].psfQF;1652 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;1653 1654 stars[i].measure.psfNdof = ps1data[i].psfNdof;1655 stars[i].measure.psfNpix = ps1data[i].psfNpix;1656 stars[i].measure.extNsigma = ps1data[i].extNsigma;1657 1658 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1659 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1660 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1661 1662 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1663 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1664 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1665 1666 stars[i].measure.photFlags = ps1data[i].flags;1667 stars[i].measure.photFlags2 = ps1data[i].flags2;1668 1669 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1670 stars[i].measure.detID = ps1data[i].detID;1595 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1596 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1597 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1598 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1599 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1600 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1601 1602 catalog->measure[i].Sky = ps1data[i].sky; 1603 catalog->measure[i].dSky = ps1data[i].dSky; 1604 1605 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1606 catalog->measure[i].psfQF = ps1data[i].psfQF; 1607 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1608 1609 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1610 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1611 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1612 1613 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1614 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1615 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1616 1617 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1618 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1619 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1620 1621 catalog->measure[i].photFlags = ps1data[i].flags; 1622 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1623 1624 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1625 catalog->measure[i].detID = ps1data[i].detID; 1671 1626 1672 1627 // the Average fields and the following Measure fields are set in FilterStars after … … 1676 1631 // the following fields are currently not being set anywhere: t_msec 1677 1632 } 1678 *nstars = Nstars; 1679 return (stars); 1680 } 1681 1682 Stars *Convert_PS1_DV3 (FTable *table, unsigned int *nstars) { 1633 return catalog; 1634 } 1635 1636 Catalog *Convert_PS1_DV3 (FTable *table) { 1683 1637 1684 1638 off_t Nstars; 1685 1639 unsigned int i; 1686 1640 double ZeroPt; 1687 Stars *stars;1688 1641 CMF_PS1_DV3 *ps1data; 1689 1642 … … 1695 1648 ZeroPt = GetZeroPoint(); 1696 1649 1697 ALLOCATE (stars, Stars,Nstars);1698 for (i = 0; i < Nstars; i++) { 1699 InitStar (&stars[i]);1700 stars[i].measure.Xccd = ps1data[i].X;1701 stars[i].measure.Yccd = ps1data[i].Y;1702 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1703 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1704 1705 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1706 stars[i].measure.pltscale = ps1data[i].pltscale;1650 Catalog *catalog = addstar_catalog_init (Nstars); 1651 1652 for (i = 0; i < Nstars; i++) { 1653 catalog->measure[i].Xccd = ps1data[i].X; 1654 catalog->measure[i].Yccd = ps1data[i].Y; 1655 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1656 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1657 1658 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1659 catalog->measure[i].pltscale = ps1data[i].pltscale; 1707 1660 1708 1661 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1709 stars[i].measure.M = NAN;1710 } else { 1711 stars[i].measure.M = ps1data[i].M + ZeroPt;1712 } 1713 stars[i].measure.dM = ps1data[i].dM;1714 stars[i].measure.dMcal = ps1data[i].dMcal;1715 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1716 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1717 1718 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1719 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1662 catalog->measure[i].M = NAN; 1663 } else { 1664 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1665 } 1666 catalog->measure[i].dM = ps1data[i].dM; 1667 catalog->measure[i].dMcal = ps1data[i].dMcal; 1668 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1669 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1670 1671 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1672 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1720 1673 1721 1674 // these fluxes are converted from counts to counts/sec in FilterStars.c 1722 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1723 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1724 stars[i].measure.FluxKron = ps1data[i].kronFlux;1725 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1726 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);1727 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);1728 1729 stars[i].measure.Sky = ps1data[i].sky;1730 stars[i].measure.dSky = ps1data[i].dSky;1731 1732 stars[i].measure.psfChisq = ps1data[i].psfChisq;1733 stars[i].measure.psfQF = ps1data[i].psfQF;1734 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;1735 stars[i].measure.psfNdof = ps1data[i].psfNdof;1736 stars[i].measure.psfNpix = ps1data[i].psfNpix;1737 stars[i].measure.extNsigma = ps1data[i].extNsigma;1738 1739 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1740 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1741 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1742 1743 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1744 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1745 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1746 1747 stars[i].measure.photFlags = ps1data[i].flags;1748 stars[i].measure.photFlags2 = ps1data[i].flags2;1749 1750 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1751 stars[i].measure.detID = ps1data[i].detID;1675 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1676 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1677 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1678 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1679 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1680 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1681 1682 catalog->measure[i].Sky = ps1data[i].sky; 1683 catalog->measure[i].dSky = ps1data[i].dSky; 1684 1685 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1686 catalog->measure[i].psfQF = ps1data[i].psfQF; 1687 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1688 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1689 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1690 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1691 1692 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1693 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1694 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1695 1696 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1697 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1698 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1699 1700 catalog->measure[i].photFlags = ps1data[i].flags; 1701 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1702 1703 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1704 catalog->measure[i].detID = ps1data[i].detID; 1752 1705 1753 1706 // the Average fields and the following Measure fields are set in FilterStars after … … 1760 1713 // the following fields are currently not being set anywhere: t_msec 1761 1714 } 1762 *nstars = Nstars; 1763 return (stars); 1764 } 1765 1766 Stars *Convert_PS1_DV4 (FTable *table, unsigned int *nstars) { 1715 return catalog; 1716 } 1717 1718 Catalog *Convert_PS1_DV4 (FTable *table) { 1767 1719 1768 1720 off_t Nstars; 1769 1721 unsigned int i; 1770 1722 double ZeroPt; 1771 Stars *stars;1772 1723 CMF_PS1_DV4 *ps1data; 1773 1724 … … 1781 1732 fprintf (stderr, "WARNING: Convert_PS1_DV4 not yet updated to match real format\n"); 1782 1733 1783 ALLOCATE (stars, Stars,Nstars);1784 for (i = 0; i < Nstars; i++) { 1785 InitStar (&stars[i]);1786 stars[i].measure.Xccd = ps1data[i].X;1787 stars[i].measure.Yccd = ps1data[i].Y;1788 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1789 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1790 1791 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1792 stars[i].measure.pltscale = ps1data[i].pltscale;1734 Catalog *catalog = addstar_catalog_init (Nstars); 1735 1736 for (i = 0; i < Nstars; i++) { 1737 catalog->measure[i].Xccd = ps1data[i].X; 1738 catalog->measure[i].Yccd = ps1data[i].Y; 1739 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1740 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1741 1742 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1743 catalog->measure[i].pltscale = ps1data[i].pltscale; 1793 1744 1794 1745 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1795 stars[i].measure.M = NAN;1796 } else { 1797 stars[i].measure.M = ps1data[i].M + ZeroPt;1798 } 1799 stars[i].measure.dM = ps1data[i].dM;1800 stars[i].measure.dMcal = ps1data[i].dMcal;1801 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1802 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1803 1804 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1805 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1746 catalog->measure[i].M = NAN; 1747 } else { 1748 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1749 } 1750 catalog->measure[i].dM = ps1data[i].dM; 1751 catalog->measure[i].dMcal = ps1data[i].dMcal; 1752 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1753 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1754 1755 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1756 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1806 1757 1807 1758 // these fluxes are converted from counts to counts/sec in FilterStars.c 1808 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1809 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1810 stars[i].measure.FluxKron = ps1data[i].kronFlux;1811 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1812 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);1813 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);1814 1815 stars[i].measure.Sky = ps1data[i].sky;1816 stars[i].measure.dSky = ps1data[i].dSky;1817 1818 stars[i].measure.psfChisq = ps1data[i].psfChisq;1819 stars[i].measure.psfQF = ps1data[i].psfQF;1820 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;1821 stars[i].measure.psfNdof = ps1data[i].psfNdof;1822 stars[i].measure.psfNpix = ps1data[i].psfNpix;1823 stars[i].measure.extNsigma = ps1data[i].extNsigma;1824 1825 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1826 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1827 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1828 1829 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1830 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1831 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1832 1833 stars[i].measure.photFlags = ps1data[i].flags;1834 stars[i].measure.photFlags2 = ps1data[i].flags2;1835 1836 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1837 stars[i].measure.detID = ps1data[i].detID;1759 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1760 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1761 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1762 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1763 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1764 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1765 1766 catalog->measure[i].Sky = ps1data[i].sky; 1767 catalog->measure[i].dSky = ps1data[i].dSky; 1768 1769 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1770 catalog->measure[i].psfQF = ps1data[i].psfQF; 1771 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1772 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1773 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1774 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1775 1776 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1777 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1778 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1779 1780 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1781 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1782 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1783 1784 catalog->measure[i].photFlags = ps1data[i].flags; 1785 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1786 1787 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1788 catalog->measure[i].detID = ps1data[i].detID; 1838 1789 1839 1790 // the Average fields and the following Measure fields are set in FilterStars after … … 1846 1797 // the following fields are currently not being set anywhere: t_msec 1847 1798 } 1848 *nstars = Nstars; 1849 return (stars); 1850 } 1851 1852 Stars *Convert_PS1_DV5 (FTable *table, unsigned int *nstars) { 1799 return catalog; 1800 } 1801 1802 Catalog *Convert_PS1_DV5 (FTable *table) { 1853 1803 1854 1804 off_t Nstars; 1855 1805 unsigned int i; 1856 1806 double ZeroPt; 1857 Stars *stars;1858 1807 CMF_PS1_DV5 *ps1data; 1859 1808 … … 1865 1814 ZeroPt = GetZeroPoint(); 1866 1815 1867 ALLOCATE (stars, Stars,Nstars);1868 for (i = 0; i < Nstars; i++) { 1869 InitStar (&stars[i]);1870 stars[i].measure.Xccd = ps1data[i].X;1871 stars[i].measure.Yccd = ps1data[i].Y;1872 stars[i].measure.dXccd = ToShortPixels(ps1data[i].dX);1873 stars[i].measure.dYccd = ToShortPixels(ps1data[i].dY);1874 1875 stars[i].measure.posangle = ToShortDegrees(ps1data[i].posangle);1876 stars[i].measure.pltscale = ps1data[i].pltscale;1816 Catalog *catalog = addstar_catalog_init (Nstars); 1817 1818 for (i = 0; i < Nstars; i++) { 1819 catalog->measure[i].Xccd = ps1data[i].X; 1820 catalog->measure[i].Yccd = ps1data[i].Y; 1821 catalog->measure[i].dXccd = ToShortPixels(ps1data[i].dX); 1822 catalog->measure[i].dYccd = ToShortPixels(ps1data[i].dY); 1823 1824 catalog->measure[i].posangle = ToShortDegrees(ps1data[i].posangle); 1825 catalog->measure[i].pltscale = ps1data[i].pltscale; 1877 1826 1878 1827 if ((ps1data[i].M >= 0.0) || isnan(ps1data[i].M)) { 1879 stars[i].measure.M = NAN;1880 } else { 1881 stars[i].measure.M = ps1data[i].M + ZeroPt;1882 } 1883 stars[i].measure.dM = ps1data[i].dM;1884 stars[i].measure.dMcal = ps1data[i].dMcal;1885 stars[i].measure.Map = ps1data[i].Map + ZeroPt;1886 stars[i].measure.dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN;1887 1888 stars[i].measure.Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN;1889 stars[i].measure.dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN;1828 catalog->measure[i].M = NAN; 1829 } else { 1830 catalog->measure[i].M = ps1data[i].M + ZeroPt; 1831 } 1832 catalog->measure[i].dM = ps1data[i].dM; 1833 catalog->measure[i].dMcal = ps1data[i].dMcal; 1834 catalog->measure[i].Map = ps1data[i].Map + ZeroPt; 1835 catalog->measure[i].dMap = (ps1data[i].apFlux > 0.0) ? fabs(ps1data[i].apFluxErr / ps1data[i].apFlux) : NAN; 1836 1837 catalog->measure[i].Mkron = (ps1data[i].kronFlux > 0.0) ? -2.5*log10(ps1data[i].kronFlux) + ZeroPt : NAN; 1838 catalog->measure[i].dMkron = (ps1data[i].kronFlux > 0.0) ? ps1data[i].kronFluxErr / ps1data[i].kronFlux : NAN; 1890 1839 1891 1840 // these fluxes are converted from counts to counts/sec in FilterStars.c 1892 stars[i].measure.FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M);1893 stars[i].measure.dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, stars[i].measure.FluxPSF, ps1data[i].dM);1894 stars[i].measure.FluxKron = ps1data[i].kronFlux;1895 stars[i].measure.dFluxKron = ps1data[i].kronFluxErr;1896 stars[i].measure.FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map);1897 stars[i].measure.dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, stars[i].measure.FluxAp, stars[i].measure.dMap);1898 1899 stars[i].measure.Sky = ps1data[i].sky;1900 stars[i].measure.dSky = ps1data[i].dSky;1901 1902 stars[i].measure.psfChisq = ps1data[i].psfChisq;1903 stars[i].measure.psfQF = ps1data[i].psfQF;1904 stars[i].measure.psfQFperf = ps1data[i].psfQFperf;1905 stars[i].measure.psfNdof = ps1data[i].psfNdof;1906 stars[i].measure.psfNpix = ps1data[i].psfNpix;1907 stars[i].measure.extNsigma = ps1data[i].extNsigma;1908 1909 stars[i].measure.FWx = ToShortPixels(ps1data[i].fx);1910 stars[i].measure.FWy = ToShortPixels(ps1data[i].fy);1911 stars[i].measure.theta = ToShortDegrees(ps1data[i].df);1912 1913 stars[i].measure.Mxx = ToShortPixels(ps1data[i].Mxx);1914 stars[i].measure.Mxy = ToShortPixels(ps1data[i].Mxy);1915 stars[i].measure.Myy = ToShortPixels(ps1data[i].Myy);1916 1917 stars[i].measure.photFlags = ps1data[i].flags;1918 stars[i].measure.photFlags2 = ps1data[i].flags2;1919 1920 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1921 stars[i].measure.detID = ps1data[i].detID;1841 catalog->measure[i].FluxPSF = GetFluxFromFluxOrMag (ps1data[i].Flux, ps1data[i].M); 1842 catalog->measure[i].dFluxPSF = GetFluxErrFromFluxOrMag (ps1data[i].dFlux, catalog->measure[i].FluxPSF, ps1data[i].dM); 1843 catalog->measure[i].FluxKron = ps1data[i].kronFlux; 1844 catalog->measure[i].dFluxKron = ps1data[i].kronFluxErr; 1845 catalog->measure[i].FluxAp = GetFluxFromFluxOrMag (ps1data[i].apFlux, ps1data[i].Map); 1846 catalog->measure[i].dFluxAp = GetFluxErrFromFluxOrMag (ps1data[i].apFluxErr, catalog->measure[i].FluxAp, catalog->measure[i].dMap); 1847 1848 catalog->measure[i].Sky = ps1data[i].sky; 1849 catalog->measure[i].dSky = ps1data[i].dSky; 1850 1851 catalog->measure[i].psfChisq = ps1data[i].psfChisq; 1852 catalog->measure[i].psfQF = ps1data[i].psfQF; 1853 catalog->measure[i].psfQFperf = ps1data[i].psfQFperf; 1854 catalog->measure[i].psfNdof = ps1data[i].psfNdof; 1855 catalog->measure[i].psfNpix = ps1data[i].psfNpix; 1856 catalog->measure[i].extNsigma = ps1data[i].extNsigma; 1857 1858 catalog->measure[i].FWx = ToShortPixels(ps1data[i].fx); 1859 catalog->measure[i].FWy = ToShortPixels(ps1data[i].fy); 1860 catalog->measure[i].theta = ToShortDegrees(ps1data[i].df); 1861 1862 catalog->measure[i].Mxx = ToShortPixels(ps1data[i].Mxx); 1863 catalog->measure[i].Mxy = ToShortPixels(ps1data[i].Mxy); 1864 catalog->measure[i].Myy = ToShortPixels(ps1data[i].Myy); 1865 1866 catalog->measure[i].photFlags = ps1data[i].flags; 1867 catalog->measure[i].photFlags2 = ps1data[i].flags2; 1868 1869 // this is may optionally be replaced by the internal sequence (see FilterStars.c) 1870 catalog->measure[i].detID = ps1data[i].detID; 1922 1871 1923 1872 // the Average fields and the following Measure fields are set in FilterStars after … … 1930 1879 // the following fields are currently not being set anywhere: t_msec 1931 1880 } 1932 *nstars = Nstars; 1933 return (stars); 1934 } 1935 # endif 1936 1937 1881 return catalog; 1882 }
Note:
See TracChangeset
for help on using the changeset viewer.
