Changeset 34260 for trunk/Ohana/src/relphot
- Timestamp:
- Jul 31, 2012, 4:02:00 PM (14 years ago)
- Location:
- trunk/Ohana/src/relphot
- Files:
-
- 5 edited
- 1 copied
-
Makefile (modified) (2 diffs)
-
include/relphot.h (modified) (3 diffs)
-
src/BoundaryTreeOps.c (copied) (copied from branches/eam_branches/ipp-20120627/Ohana/src/relphot/src/BoundaryTreeOps.c )
-
src/ImageOps.c (modified) (1 diff)
-
src/StarOps.c (modified) (10 diffs)
-
src/args.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/relphot/Makefile
r33963 r34260 49 49 $(SRC)/setExclusions.$(ARCH).o \ 50 50 $(SRC)/setMrelFinal.$(ARCH).o \ 51 $(SRC)/BoundaryTreeOps.$(ARCH).o \ 51 52 $(SRC)/write_coords.$(ARCH).o 52 53 … … 77 78 $(SRC)/setExclusions.$(ARCH).o \ 78 79 $(SRC)/setMrelFinal.$(ARCH).o \ 80 $(SRC)/BoundaryTreeOps.$(ARCH).o \ 79 81 $(SRC)/write_coords.$(ARCH).o 80 82 -
trunk/Ohana/src/relphot/include/relphot.h
r33963 r34260 111 111 char *BCATALOG; 112 112 ModeType MODE; 113 114 char *BOUNDARY_TREE; 113 115 114 116 double MAG_LIM; … … 242 244 float getMrel PROTO((Catalog *catalog, off_t meas, int cat)); 243 245 short getUbercalDist PROTO((off_t meas, int cat)); 246 float getCenterOffset PROTO((off_t meas, int cat, Measure *measure, unsigned int *myID)); 244 247 Image *getimage PROTO((off_t N)); 245 248 Image *getimages PROTO((off_t *N, off_t **LineNumber)); … … 340 343 int client_logger_message (char *format,...); 341 344 345 int MatchImageName (off_t meas, int cat, char *name); 346 347 int load_tree (char *treefile); 348 int BoundaryTreePrimaryCell (char *primaryCellName, double ra, double dec); -
trunk/Ohana/src/relphot/src/ImageOps.c
r33963 r34260 365 365 distance = image[i].ubercalDist; // was dummy3 in structure 366 366 return (distance); 367 } 368 369 // returns image.Mcal - ff(x,y) 370 float getCenterOffset (off_t meas, int cat, Measure *measure, unsigned int *myID) { 371 372 off_t i; 373 float distance; 374 375 if (!MeasureToImage) return -1; 376 377 i = MeasureToImage[cat][meas]; 378 if (i == -1) return (1000); 379 380 float Xcenter = 0.5*image[i].NX; 381 float Ycenter = 0.5*image[i].NY; 382 383 *myID = image[i].imageID; 384 385 distance = hypot (measure[0].Xccd - Xcenter, measure[0].Yccd - Ycenter); 386 return (distance); 387 } 388 389 // returns image.Mcal - ff(x,y) 390 int MatchImageName (off_t meas, int cat, char *name) { 391 392 off_t i; 393 394 if (!name) return FALSE; 395 if (!name[0]) return FALSE; 396 397 if (!MeasureToImage) return FALSE; 398 399 i = MeasureToImage[cat][meas]; 400 if (i == -1) return FALSE; 401 402 // this is a bit crude: stack image names are of the form 403 // RINGS.V3.skycell.1495.027.sky.191211.stk.988232.cmf 404 // the primaryCell has a name of the form RINGS.V3.skycell.1495 405 406 if (!strncmp(image[i].name, name, strlen(name))) return TRUE; 407 return FALSE; 367 408 } 368 409 -
trunk/Ohana/src/relphot/src/StarOps.c
r34088 r34260 15 15 double *wlist; 16 16 double *aplist; 17 double *daplist; 17 double *kronlist; 18 double *dkronlist; 18 19 } SetMrelInfo; 19 20 … … 164 165 SetMrelInfoInit (&results, TRUE); // allocates results->list,dlist,wlist 165 166 ALLOCATE (results.aplist, double, Nmax); 166 ALLOCATE (results.daplist, double, Nmax); 167 ALLOCATE (results.kronlist, double, Nmax); 168 ALLOCATE (results.dkronlist, double, Nmax); 167 169 168 170 for (i = 0; i < Ncatalog; i++) { … … 174 176 SetMrelInfoFree (&results); 175 177 free (results.aplist); 176 free (results.daplist); 178 free (results.kronlist); 179 free (results.dkronlist); 177 180 return (TRUE); 178 181 } … … 303 306 int setMrel_catalog (Catalog *catalog, int Nc, int pass, FlatCorrectionTable *flatcorr, SetMrelInfo *results, int Nsecfilt) { 304 307 305 off_t j, k, m ;308 off_t j, k, m, ID; 306 309 int N; 307 310 float Msys, Mcal, Mmos, Mgrid; 308 311 309 StatType stats, apstats ;312 StatType stats, apstats, kronstats; 310 313 liststats_setmode (&stats, STATMODE); 311 314 liststats_setmode (&apstats, STATMODE); 312 313 double *list = results->list; 314 double *dlist = results->dlist; 315 double *wlist = results->wlist; 316 double *aplist = results->aplist; 317 double *daplist = results->daplist; 315 liststats_setmode (&kronstats, STATMODE); 316 317 double *list = results->list; 318 double *dlist = results->dlist; 319 double *wlist = results->wlist; 320 double *aplist = results->aplist; 321 double *kronlist = results->kronlist; 322 double *dkronlist = results->dkronlist; 318 323 319 324 SetMrelInfoInit (results, FALSE); // do not allocate list,dlist,wlist arrays 320 325 321 326 int isSetMrelFinal = (pass >= 0); 327 328 char *primaryCell = NULL; 329 ALLOCATE (primaryCell, char, DVO_MAX_PATH); 322 330 323 331 for (j = 0; j < catalog[Nc].Naverage; j++) { … … 325 333 326 334 // option for a test print 327 if (FALSE && (catalog[Nc].average[j].objID == 0x 46a4) && (catalog[Nc].average[j].catID == 0xf40e)) {335 if (FALSE && (catalog[Nc].average[j].objID == 0x7146) && (catalog[Nc].average[j].catID == 0x49d8)) { 328 336 fprintf (stderr, "test obj\n"); 329 337 print_measure_set (&catalog[Nc].average[j], &catalog[Nc].secfilt[j*Nsecfilt], catalog[Nc].measure); 330 338 } 339 340 BoundaryTreePrimaryCell(primaryCell, catalog[Nc].average[j].R, catalog[Nc].average[j].D); 331 341 332 342 int GoodPS1 = FALSE; … … 355 365 int haveSynth = FALSE; 356 366 int haveStack = FALSE; 367 368 // need to find the measurement closest to the center of its skycell, as well as the 369 // closest for the subset of primary projection cells 370 371 float stackCenterOffsetMin = 1e9; 372 int stackCenterIDmin = -1; 373 off_t stackCenterMeasureMin = -1; 374 375 float stackPrimaryOffsetMin = 1e9; 376 int stackPrimaryIDmin = -1; 377 off_t stackPrimaryMeasureMin = -1; 357 378 358 379 int forceSynth = FALSE; … … 401 422 float Map = PhotAper (&catalog[Nc].measure[m]); 402 423 aplist[N] = Map - Mcal - Mmos - Mgrid; 424 425 float Mkron = PhotKron (&catalog[Nc].measure[m]); 426 kronlist[N] = Mkron - Mcal - Mmos - Mgrid; 427 dkronlist[N] = catalog[Nc].measure[m].dMkron; 403 428 404 429 // special options for PS1 data … … 416 441 // gpc1 stack data 417 442 if ((catalog[Nc].measure[m].photcode >= 11000) && (catalog[Nc].measure[m].photcode <= 11400)) { 418 if (pass < 2) continue;443 // if (pass < 2) continue; 419 444 haveStack = TRUE; 445 446 unsigned int stackImageID; 447 448 // which stack image should we use for the mean value? 449 // if we request the primary (USE_TREE_FOR_PRIMARY), then find the min distances for data from the primary cell 450 if (MatchImageName (m, Nc, primaryCell)) { 451 float stackPrimaryOffset = getCenterOffset (m, Nc, &catalog[Nc].measure[m], &stackImageID); 452 if (stackPrimaryOffset < stackPrimaryOffsetMin) { 453 stackPrimaryOffsetMin = stackPrimaryOffset; 454 stackPrimaryIDmin = stackImageID; 455 stackPrimaryMeasureMin = m; 456 } 457 } 458 459 // get the center distance for the generic case: 460 float stackCenterOffset = getCenterOffset (m, Nc, &catalog[Nc].measure[m], &stackImageID); 461 if (stackCenterOffset < stackCenterOffsetMin) { 462 stackCenterOffsetMin = stackCenterOffset; 463 stackCenterIDmin = stackImageID; 464 stackCenterMeasureMin = m; 465 } 420 466 } 421 467 … … 549 595 550 596 // NOTE : use the modified weight for apmags as well as psf mags 551 liststats (aplist, daplist, wlist, N, &apstats); 552 597 liststats (aplist, dlist, wlist, N, &apstats); 553 598 catalog[Nc].secfilt[Nsecfilt*j+Nsec].Map = apstats.mean; 599 600 liststats (kronlist, dkronlist, wlist, N, &kronstats); 601 catalog[Nc].secfilt[Nsecfilt*j+Nsec].Mkron = kronstats.mean; 602 catalog[Nc].secfilt[Nsecfilt*j+Nsec].dMkron = kronstats.error; 603 604 if (haveStack) { 605 m = (stackPrimaryMeasureMin >= 0) ? stackPrimaryMeasureMin : stackCenterMeasureMin; 606 ID = (stackPrimaryMeasureMin >= 0) ? stackPrimaryIDmin : stackCenterIDmin; 607 608 // get the zero point for the selected image 609 float zp = Mcal + Mmos + Mgrid + PhotZeroPoint (&catalog[Nc].measure[m], &catalog[Nc].average[j], &catalog[Nc].secfilt[j*Nsecfilt]); 610 611 // flux_cgs : erg sec^1 cm^-2 Hz^-1 612 // mag_inst : -2.5 log (cts/sec) 613 // mag_inst : -2.5 log (flux_inst) 614 // flux_inst = ten(-0.4*mag_inst) 615 616 // mag_AB = -2.5 log (flux_cgs) - 48.6 (~by definition) [~Vega flux in V-band] 617 // flux_cgs = ten(-0.4*(mag_AB + 48.6)) 618 619 // flux_AB : ten(-0.4*mag_AB) 620 621 // flux_cgs = ten(-0.4*48.6) * flux_AB 622 // flux_AB = ten(+0.4*48.6) * flux_cgs 623 624 // flux_Jy : flux_cgs * 10^23 625 626 // flux_AB = ten(+0.4*48.6) * ten(-23) * flux_Jy 627 628 // mag_AB = mag_inst + ZP 629 630 // flux_inst = ten(-0.4*(mag_AB - ZP)) = ten(0.4*ZP) * flux_AB 631 632 // flux_AB = flux_inst * ten(-0.4*ZP) 633 634 // flux_inst * ten(-0.4*ZP) = ten(+0.4*48.6 - 23) * flux_Jy 635 636 // flux_inst = flux_Jy * ten(0.4*ZP + 0.4*48.6 - 23) 637 // flux_inst = flux_Jy * ten(0.4*ZP - 3.56) 638 // flux_Jy = flux_inst * ten(-0.4*ZP + 3.56) 639 640 // zpFactor to go from instrumental flux to Janskies 641 float zpFactor = pow(10.0, -0.4*zp + 3.56); 642 643 // need to put in AB mag factor to get to Janskies (or uJy?) 644 catalog[Nc].secfilt[Nsecfilt*j+Nsec].FluxPSF = zpFactor * catalog[Nc].measure[m].FluxPSF; 645 catalog[Nc].secfilt[Nsecfilt*j+Nsec].dFluxPSF = zpFactor * catalog[Nc].measure[m].dFluxPSF; 646 catalog[Nc].secfilt[Nsecfilt*j+Nsec].FluxKron = zpFactor * catalog[Nc].measure[m].FluxKron; 647 catalog[Nc].secfilt[Nsecfilt*j+Nsec].dFluxKron = zpFactor * catalog[Nc].measure[m].dFluxKron; 648 649 catalog[Nc].secfilt[Nsecfilt*j+Nsec].stackID = ID; 650 } 554 651 555 652 // NOTE: for 2MASS measurements, Next should be 1, as should N … … 607 704 } 608 705 } 706 if (primaryCell) free (primaryCell); 609 707 return (TRUE); 610 708 } -
trunk/Ohana/src/relphot/src/args.c
r33963 r34260 197 197 } 198 198 199 if ((N = get_argument (argc, argv, "-boundary-tree"))) { 200 remove_argument (N, &argc, argv); 201 load_tree (argv[N]); 202 remove_argument (N, &argc, argv); 203 } 204 199 205 SHOW_PARAMS = FALSE; 200 206 if ((N = get_argument (argc, argv, "-params"))) {
Note:
See TracChangeset
for help on using the changeset viewer.
