Changeset 38297
- Timestamp:
- May 21, 2015, 9:23:17 AM (11 years ago)
- Location:
- branches/eam_branches/ipp-20150419/Ohana/src/relphot
- Files:
-
- 5 edited
-
include/relphot.h (modified) (7 diffs)
-
src/StarOps.c (modified) (8 diffs)
-
src/extra.c (modified) (1 diff)
-
src/setMrelCatalog.c (modified) (28 diffs)
-
src/setMrelFinal.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20150419/Ohana/src/relphot/include/relphot.h
r38293 r38297 136 136 float *psfQfPerfMax; // max psfQfperf value for this secfilt 137 137 138 int *Nmeas; // count of PS1 exposure (chip) measurements for this secfilt 138 139 int *Next; // count of PS1 exposure (chip) measurements for this secfilt 139 140 int *NexpPS1; // count of PS1 exposure (chip) measurements for this secfilt … … 141 142 142 143 float *minUbercalDist; 143 144 int NextPS1; // count of PS1 exposure (chip) measurements for this secfilt145 int NpsfPS1; // count of PS1 exposure (chip) measurements for this secfilt146 144 147 145 StatType psfstats; … … 396 394 void liststats_setmode PROTO((StatType *stats, char *strmode)); 397 395 int liststats PROTO((double *value, double *dvalue, double *wvalue, int N, StatType *stats)); 396 int liststats_init PROTO((StatType *stats)); 398 397 Catalog *load_catalogs PROTO((SkyList *skylist, int *Ncatalog, int hostID, char *hostpath, char *syncfile)); 399 398 Catalog *load_catalogs_parallel PROTO((SkyList *sky, int *Ncatalog, char *syncfile)); … … 433 432 int setMrel PROTO((Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr)); 434 433 void setMrelFinal PROTO((Catalog *catalog, FlatCorrectionTable *flatcorr, int simpleAverage)); 435 int setMrelOutput PROTO((Catalog *catalog, int Ncatalog, int pass,FlatCorrectionTable *flatcorr));434 int setMrelOutput PROTO((Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr)); 436 435 int setMave PROTO((Catalog *catalog, int Ncatalog)); 437 436 void set_ZP PROTO((double ZERO)); … … 495 494 496 495 int print_measure_set_alt (Average *average, SecFilt *secfilt, Measure *measure); 497 int setMrel_catalog_alt (Catalog *catalog, int Nc, int pass, FlatCorrectionTable *flatcorr, SetMrelInfo *results, int Nsecfilt);498 int setMrelAverageExposure ( off_t measureOffset, int cat, int isSetMrelFinal, FlatCorrectionTable *flatcorr, SetMrelInfo *results, Average *average, AverageTiny *averageT, SecFilt *secfilt, Measure *measure, MeasureTiny *measureT);499 int setMrelAverageStack ( off_t measureOffset, int cat, FlatCorrectionTable *flatcorr, SetMrelInfo *results, Average *average, SecFilt *secfilt, Measure *measure, off_t Nmeasure);500 int setMrelAverageForcedWarp ( off_t measureOffset, int cat, int pass, SetMrelInfo *results, Average *average, SecFilt *secfilt, Measure *measure, off_t *found, off_t Nmeasure);496 int setMrel_catalog_alt (Catalog *catalog, int Nc, int isSetMrelFinal, FlatCorrectionTable *flatcorr, SetMrelInfo *results, int Nsecfilt); 497 int setMrelAverageExposure (Catalog *catalog, int cat, off_t ave, int Nsecfilt, int isSetMrelFinal, FlatCorrectionTable *flatcorr, SetMrelInfo *results); 498 int setMrelAverageStack (Catalog *catalog, int cat, off_t ave, int Nsecfilt, FlatCorrectionTable *flatcorr, SetMrelInfo *results); 499 int setMrelAverageForcedWarp (Catalog *catalog, int cat, off_t ave, int Nsecfilt, FlatCorrectionTable *flatcorr, SetMrelInfo *results); 501 500 502 501 int setGlobalObjStats (Average *average, Measure *measure); … … 562 561 int whichGPC1filter (int photcode); 563 562 int is2MASS (int photcode); 563 int isTYCHO (int photcode); 564 565 int magStatsByRanking (StatDataSet *dataset, StatType *stats); 564 566 565 567 SynthZeroPoints *SynthZeroPointsLoad (char *filename); … … 570 572 int relphot_synthphot_catalog (Catalog *catalog, SynthZeroPoints *zpts); 571 573 int relphot_synthphot_average (Average *average, SecFilt *secfilt, Measure *measure, SynthZeroPoints *zpts); 574 575 void setMeasureRank (Catalog *catalog); 576 int getImageFlags (off_t meas, int cat); 577 int getMosaicFlags (off_t meas, int cat); 578 -
branches/eam_branches/ipp-20150419/Ohana/src/relphot/src/StarOps.c
r38293 r38297 111 111 results->psfQfPerfMax[i] = NAN; 112 112 113 results->Nmeas[i] = 0; 113 114 results->Next[i] = 0; 114 115 results->NexpPS1[i] = 0; … … 121 122 results->kronData[i].Nlist = 0; 122 123 } 123 results->NextPS1 = 0;124 results->NpsfPS1 = 0;125 124 } 126 125 … … 149 148 ALLOCATE (results->psfQfPerfMax, float, results->Nsecfilt); 150 149 150 ALLOCATE (results->Nmeas, int, results->Nsecfilt); 151 151 ALLOCATE (results->Next, int, results->Nsecfilt); 152 152 ALLOCATE (results->NexpPS1, int, results->Nsecfilt); … … 156 156 ALLOCATE (results->minUbercalDist, float, results->Nsecfilt); 157 157 158 SetMrelInfoResetObject (results , results->Nsecfilt);158 SetMrelInfoResetObject (results); 159 159 160 160 for (i = 0; i < NsynthNames; i++) { … … 259 259 break; 260 260 case 1: 261 setMrel_catalog_alt (catalog, i, -1, flatcorr, &results, Nsecfilt);261 setMrel_catalog_alt (catalog, i, FALSE, flatcorr, &results, Nsecfilt); 262 262 break; 263 263 default: … … 274 274 } 275 275 276 int setMrelOutput (Catalog *catalog, int Ncatalog, int pass,FlatCorrectionTable *flatcorr) {276 int setMrelOutput (Catalog *catalog, int Ncatalog, FlatCorrectionTable *flatcorr) { 277 277 278 278 int i; … … 293 293 // break; 294 294 case 1: 295 setMrel_catalog_alt (catalog, i, pass, flatcorr, &results, Nsecfilt);295 setMrel_catalog_alt (catalog, i, TRUE, flatcorr, &results, Nsecfilt); 296 296 break; 297 297 default: … … 400 400 break; 401 401 case 1: 402 setMrel_catalog_alt (catalog, i, -1, flatcorr, &results, Nsecfilt);402 setMrel_catalog_alt (catalog, i, FALSE, flatcorr, &results, Nsecfilt); 403 403 break; 404 404 default: -
branches/eam_branches/ipp-20150419/Ohana/src/relphot/src/extra.c
r38293 r38297 77 77 } 78 78 79 int isTYCHO (int photcode) { 80 81 if ((photcode == 2020) || (photcode == 2021)) return TRUE; 82 return FALSE; 83 } 84 -
branches/eam_branches/ipp-20150419/Ohana/src/relphot/src/setMrelCatalog.c
r38293 r38297 1 1 # include "relphot.h" 2 2 # define UBERCAL_WEIGHT 100.0 3 void sort_StatDataSet (StatDataSet *dataset); 3 4 4 5 # define SKIP_THIS_MEAS(REASON) { \ … … 16 17 # define CHECK_VALID_MAG(MAG) (!isnan(MAG) && (MAG > 0.0) && (MAG < 30.0)) 17 18 19 # if (0) 18 20 static float MagToFlux (float Mag) { 19 21 float Flux = pow(10.0, -0.4*(Mag)); 20 22 return (Flux); 21 23 } 24 # endif 22 25 23 26 int print_measure_set_alt (Average *average, SecFilt *secfilt, Measure *measure) { … … 38 41 } 39 42 40 int setMrel_catalog_alt (Catalog *catalog, int Nc, int pass, FlatCorrectionTable *flatcorr, SetMrelInfo *results, int Nsecfilt) {43 int setMrel_catalog_alt (Catalog *catalog, int Nc, int isSetMrelFinal, FlatCorrectionTable *flatcorr, SetMrelInfo *results, int Nsecfilt) { 41 44 42 45 off_t j; … … 48 51 SetMrelInfoReset (results); // reset the countesrs 49 52 50 int isSetMrelFinal = (pass >= 0);51 52 53 for (j = 0; j < catalog[Nc].Naverage; j++) { 53 // we are guaranteed to have averageT, but not average 54 off_t m = catalog[Nc].averageT[j].measureOffset; 55 Average *average = catalog[Nc].average ? &catalog[Nc].average[j] : NULL; 56 Measure *measure = catalog[Nc].measure ? &catalog[Nc].measure[m] : NULL; 57 SecFilt *secfilt = catalog[Nc].secfilt ? &catalog[Nc].secfilt[j*Nsecfilt] : NULL; 58 setMrelAverageExposure (m, Nc, isSetMrelFinal, flatcorr, results, average, &catalog[Nc].averageT[j], secfilt, measure, &catalog[Nc].measureT[m], &catalog[Nc].found_t[Nsecfilt*j]); 54 55 setMrelAverageExposure (&catalog[Nc], Nc, j, Nsecfilt, isSetMrelFinal, flatcorr, results); 59 56 60 57 // only apply Stack operation on setMrelFinal in first pass 61 if (isSetMrelFinal && (pass == 0) && !IS_DIFF_DB) { 62 setMrelAverageStack (m, Nc, flatcorr, results, average, secfilt, &catalog[Nc].measure[m], catalog[Nc].Nmeasure); 63 setGlobalObjStats (&catalog[Nc].average[j], &catalog[Nc].measure[m]); 58 if (isSetMrelFinal && !IS_DIFF_DB) { 59 setMrelAverageStack (&catalog[Nc], Nc, j, Nsecfilt, flatcorr, results); 64 60 } 65 61 66 62 // only measure force-warp mean values if issetMrelFinal (make it optional?) 67 63 if (isSetMrelFinal) { 68 setMrelAverageForcedWarp (m, Nc, pass, results, average, secfilt, measure, &catalog[Nc].foundWarp_t[Nsecfilt*j], catalog[Nc].Nmeasure); 69 setGlobalObjStats (average, measure); 64 setMrelAverageForcedWarp (&catalog[Nc], Nc, j, Nsecfilt, flatcorr, results); 70 65 } 71 66 } … … 91 86 // 4) some reference photcode of some kind can be specified as fixed and have a high weight 92 87 88 static SynthZeroPoints *synthzpts = NULL; 89 93 90 // set mean of chip measurements (selected by photcode range for now): 94 int setMrelAverageExposure (off_t measureOffset, int cat, int isSetMrelFinal, FlatCorrectionTable *flatcorr, SetMrelInfo *results, Average *average, AverageTiny *averageT, SecFilt *secfilt, Measure *measure, MeasureTiny *measureT) { 95 91 int setMrelAverageExposure (Catalog *catalog, int cat, off_t ave, int Nsecfilt, int isSetMrelFinal, FlatCorrectionTable *flatcorr, SetMrelInfo *results) { 92 93 int Nsec; 96 94 off_t k; 95 96 // we are guaranteed to have averageT, but not average 97 AverageTiny *averageT = &catalog[cat].averageT[ave]; 98 99 off_t measureOffset = averageT->measureOffset; 100 MeasureTiny *measureT = &catalog[cat].measureT[measureOffset]; 101 102 // we are NOT guaranteed to have average, measure, secfilt 103 Average *average = catalog[cat].average ? &catalog[cat].average[ave] : NULL; 104 Measure *measure = catalog[cat].measure ? &catalog[cat].measure[measureOffset] : NULL; 105 SecFilt *secfilt = catalog[cat].secfilt ? &catalog[cat].secfilt[ave*Nsecfilt] : NULL; 106 char *measureRank = catalog[cat].measureRank ? &catalog[cat].measureRank[measureOffset] : NULL; 97 107 98 108 // we are measuring means for 3 types of mags: psf, ap, kron. … … 110 120 111 121 SetMrelInfoResetObject (results); // reset the per-object arrays 122 123 int NextPS1 = 0; 124 int NpsfPS1 = 0; 125 int GoodPS1 = FALSE; 126 int Good2MASS = FALSE; 127 int Galaxy2MASS = FALSE; 128 int haveTYCHO = FALSE; 112 129 113 130 // assign measurements to the photcode lists … … 124 141 if (isGPC1warp(measureT[k].photcode)) continue; 125 142 126 if (isT ycho(measureT[k].photcode)) { haveTYCHO = TRUE; }143 if (isTYCHO(measureT[k].photcode)) { haveTYCHO = TRUE; } 127 144 128 145 if (is2MASS(measureT[k].photcode)) { … … 138 155 int Nsec = GetPhotcodeNsec (code->equiv); 139 156 if (Nsec < 0) continue; // skip measurements which do not have an equiv average photcode 157 158 results->Nmeas[Nsec] ++; 140 159 141 160 // force the use of SYN even if we have PS1 mags? … … 148 167 149 168 // assign the max psfQF values for each Nsec value 150 if (measureT[k].psfQF > results->psfQfMax[Nsec]) results->psfQfMax[Nsec] = measureT[k].psfQF; 151 if (measureT[k].psfQFperf > results->psfQfPerfMax[Nsec]) results->psfQfPerfMax[Nsec] = measureT[k].psfQFperf; 152 169 if (isSetMrelFinal) { 170 if (measure[k].psfQF > results->psfQfMax[Nsec]) results->psfQfMax[Nsec] = measure[k].psfQF; 171 if (measure[k].psfQFperf > results->psfQfPerfMax[Nsec]) results->psfQfPerfMax[Nsec] = measure[k].psfQFperf; 172 } 173 153 174 // are we a PS1 exposure photcode? (hard-wired photcodes) 154 175 if (isGPC1chip(measureT[k].photcode)) { results->NexpPS1[Nsec] ++; results->havePS1[Nsec] = TRUE; } … … 156 177 // ** Choose the calibration (depends on the mode : do I have an image reference or not?) 157 178 float Mcal = 0, Mmos = 0, Mgrid = 0; 158 if (getImageEntry (measureOffset + k, cat) < 0) { 179 off_t meas = measureOffset + k; 180 if (getImageEntry (meas, cat) < 0) { 159 181 // measurements without an image are either external reference photometry or 160 182 // data for which the associated image has not been loaded (probably because of … … 173 195 // XXX ubercal dist should be by Nsec 174 196 int myUbercalDist = getUbercalDist(meas, cat); 175 result ->minUbercalDist[Nsec] = MIN(result->minUbercalDist[Nsec], myUbercalDist);197 results->minUbercalDist[Nsec] = MIN(results->minUbercalDist[Nsec], myUbercalDist); 176 198 177 199 int isUbercal = (measureT[k].dbFlags & ID_MEAS_PHOTOM_UBERCAL); … … 184 206 if (isSetMrelFinal) { 185 207 Map = PhotCat (&measure[k], MAG_CLASS_APER); 186 dMap = MAX (hypot(measure T[k].dMap, code->photomErrSys), MIN_ERROR);208 dMap = MAX (hypot(measure[k].dMap, code->photomErrSys), MIN_ERROR); 187 209 if (CHECK_VALID_MAG(Map)) { 188 // XXX need to carry a counter for each list set 189 int Nap = results->apData[Nsec].Nlist; 190 results->apData[Nsec].flxlist[Nap] = Map - Mcal - Mmos - Mgrid; 191 results->apData[Nsec].errlist[Nap] = dMpsf; // no other option 192 results->apData[Nsec].wgtlist[Nap] = useUbercalWeight ? UBERCAL_WEIGHT : 1.0; 193 results->apData[Nsec].ranking[Nap] = measureRank[k]; 194 results->apData[Nsec].measSeq[Nap] = k; 195 results->apData[Nsec].Nlist ++; 210 int Nap = results->aperData[Nsec].Nlist; 211 results->aperData[Nsec].flxlist[Nap] = Map - Mcal - Mmos - Mgrid; 212 results->aperData[Nsec].errlist[Nap] = dMap; 213 results->aperData[Nsec].wgtlist[Nap] = useUbercalWeight ? UBERCAL_WEIGHT : 1.0; 214 results->aperData[Nsec].ranking[Nap] = measureRank[k]; 215 results->aperData[Nsec].measSeq[Nap] = k; 216 results->aperData[Nsec].Nlist ++; 196 217 } 197 218 } … … 200 221 if (isSetMrelFinal) { 201 222 Mkron = PhotCat (&measure[k], MAG_CLASS_KRON); 202 dMkron = MAX (hypot(measure T[k].dMkron, code->photomErrSys), MIN_ERROR);223 dMkron = MAX (hypot(measure[k].dMkron, code->photomErrSys), MIN_ERROR); 203 224 if (CHECK_VALID_MAG(Mkron)) { 204 225 int Nkron = results->kronData[Nsec].Nlist; 205 226 results->kronData[Nsec].flxlist[Nkron] = Mkron - Mcal - Mmos - Mgrid; 206 results->kronData[Nsec].errlist[Nkron] = measure[k].dMkron;227 results->kronData[Nsec].errlist[Nkron] = dMkron; 207 228 results->kronData[Nsec].wgtlist[Nkron] = isUbercal ? UBERCAL_WEIGHT : 1.0; 208 229 results->kronData[Nsec].ranking[Nkron] = measureRank[k]; … … 237 258 if (dMagAp > SigmaAp) { 238 259 results->Next[Nsec] ++; 239 results->NextPS1 ++;260 NextPS1 ++; 240 261 } else { 241 results->NpsfPS1 ++;262 NpsfPS1 ++; 242 263 } 243 264 } … … 246 267 // now calculate the mean stats for the Nsec bands. 247 268 for (Nsec = 0; Nsec < Nsecfilt; Nsec++) { 248 dvo_ init_secfilt (&secfilt[Nsec]);269 dvo_secfilt_init (&secfilt[Nsec]); // XXX does this reset astrometry bits? no, right? 249 270 250 271 // XXX hardwired 251 if (( thisCode < 6) || (thisCode == 9)) {272 if ((Nsec < 4) || (Nsec == 8)) { 252 273 secfilt[Nsec].Ncode = results->NexpPS1[Nsec]; 253 274 } else { 254 secfilt[Nsec].Ncode = results->Ncode[Nsec]; // 2MASS data if it exists 275 secfilt[Nsec].Ncode = results->Nmeas[Nsec]; // 2MASS data if it exists 276 } 277 278 if (haveTYCHO) { 279 // secfilt[Nsec].flags |= ID_SECF_HAVE_TYCHO; 255 280 } 256 281 … … 263 288 float ZP = 0.0; 264 289 265 if (!haveTycho) { 290 // if we have loaded the synth zpt correction, and do NOT have a tycho measurement, apply the correction 291 if (!haveTYCHO && synthzpts) { 266 292 // need to look up the (X,Y) coords from this (R,D) location 267 293 double X, Y; 268 294 double R = ohana_normalize_angle_to_midpoint (measure->R, 0.0); // XXX 0.0 or 180.0 for center? 269 RD_to_XY (&X, &Y, R, measure->D, & zpts->coords);295 RD_to_XY (&X, &Y, R, measure->D, &synthzpts->coords); 270 296 if (X < 0) return FALSE; 271 297 if (Y < 0) return FALSE; 272 if (X >= zpts->Nx) return FALSE;273 if (Y >= zpts->Ny) return FALSE;298 if (X >= synthzpts->Nx) return FALSE; 299 if (Y >= synthzpts->Ny) return FALSE; 274 300 275 301 int Xpix = X; 276 302 int Ypix = Y; 277 int Npix = Xpix + Ypix* zpts->Nx;303 int Npix = Xpix + Ypix*synthzpts->Nx; 278 304 279 float *value = (float *) zpts->matrix[Nsec].buffer;305 float *value = (float *) synthzpts->matrix[Nsec].buffer; 280 306 ZP = !isnan(value[Npix]) ? value[Npix] : 0.0; 281 secfilt[Nsec].flags |= ID_SECF_HAVE_TYCHO;282 307 } 283 308 secfilt[Nsec].M = Mpsf + ZP; 284 309 secfilt[Nsec].dM = 0.6; 285 secfilt[Nsec]. chipsq = 0.0;310 secfilt[Nsec].Mchisq = 0.0; 286 311 secfilt[Nsec].flags |= ID_SECF_USE_SYNTH; 287 312 continue; … … 289 314 290 315 // if too few valid measurements meet the minimum criteria, go to the next entry 291 int Nranking = magStatsByRanking (&results->psfData[Nsec], &results->psfstats); 316 StatType *psfstats = &results->psfstats; 317 int Nranking = magStatsByRanking (&results->psfData[Nsec], psfstats); 292 318 if (Nranking < Nminmeas) { 293 319 secfilt[Nsec].flags |= ID_STAR_FEW; … … 300 326 301 327 // when running -averages, we have no information about the images, so we cannot set this 302 if ( minUbercalDist> -1) {303 secfilt[Nsec].ubercalDist = minUbercalDist;328 if (results->minUbercalDist[Nsec] > -1) { 329 secfilt[Nsec].ubercalDist = results->minUbercalDist[Nsec]; 304 330 } 305 331 306 332 if (isSetMrelFinal) { 307 secfilt[Nsec].Mstdev = psfstats->sigma; 308 secfilt[Nsec].Nused = psfstats->Nmeas; 309 secfilt[Nsec].Mmax = psfstats->max; 310 secfilt[Nsec].Mmin = psfstats->min; 311 312 secfilt[Nsec].psfQfMax = psfQfMax; 313 secfilt[Nsec].psfQfPerfMax = psfQfPerfMax; 314 315 Nranking = magStatsByRanking (&results->aperData[Nsec], results->apstats); 316 secfilt[Nsec].Map = apstats->mean; 317 secfilt[Nsec].dMap = apstats->error; 318 secfilt[Nsec].sMap = apstats->sigma; 319 secfilt[Nsec].NusedAp = Nranking; 320 333 if (Nranking) { 334 secfilt[Nsec].Mstdev = psfstats->sigma; 335 secfilt[Nsec].Nused = psfstats->Nmeas; 336 secfilt[Nsec].Mmax = psfstats->max; 337 secfilt[Nsec].Mmin = psfstats->min; 338 } 339 340 secfilt[Nsec].psfQfMax = results->psfQfMax[Nsec]; 341 secfilt[Nsec].psfQfPerfMax = results->psfQfPerfMax[Nsec]; 342 343 StatType *apstats = &results->apstats; 344 Nranking = magStatsByRanking (&results->aperData[Nsec], apstats); 345 if (Nranking) { 346 secfilt[Nsec].Map = apstats->mean; 347 secfilt[Nsec].dMap = apstats->error; 348 secfilt[Nsec].sMap = apstats->sigma; 349 secfilt[Nsec].NusedAp = Nranking; 350 } 351 352 StatType *kronstats = &results->kronstats; 321 353 Nranking = magStatsByRanking (&results->kronData[Nsec], kronstats); 322 secfilt[Nsec].Mkron = kronstats->mean; 323 secfilt[Nsec].dMkron = kronstats->error; 324 secfilt[Nsec].sMkron = kronstats->sigma; 325 secfilt[Nsec].NusedKron = Nranking; 354 if (Nranking) { 355 secfilt[Nsec].Mkron = kronstats->mean; 356 secfilt[Nsec].dMkron = kronstats->error; 357 secfilt[Nsec].sMkron = kronstats->sigma; 358 secfilt[Nsec].NusedKron = Nranking; 359 } 326 360 327 361 // does this object appear extended in > 50% of measurements? 328 if ((results->Next[Nsec] > 0) && (results->Next[Nsec] > 0.5* results->Npsf[Nsec])) {362 if ((results->Next[Nsec] > 0) && (results->Next[Nsec] > 0.5*psfstats->Nmeas)) { 329 363 secfilt[Nsec].flags |= ID_SECF_OBJ_EXT; 330 364 } … … 362 396 363 397 if (isSetMrelFinal) { 364 if ( results->NextPS1 && (results->NextPS1 > results->NpsfPS1)) {398 if (NextPS1 && (NextPS1 > NpsfPS1)) { 365 399 average[0].flags |= ID_OBJ_EXT; 366 400 } … … 378 412 } 379 413 414 # if (0) 380 415 // set mean of chip measurements (selected by photcode range for now): 381 416 int setMrelAverageExposure_old (off_t measureOffset, int cat, int pass, FlatCorrectionTable *flatcorr, SetMrelInfo *results, Average *average, AverageTiny *averageT, SecFilt *secfilt, Measure *measure, MeasureTiny *measureT, off_t *found) { … … 750 785 return (TRUE); 751 786 } 787 # endif 752 788 753 789 // only apply Stack operation on setMrelFinal in first pass … … 756 792 // 2) select the BEST detections per filter (regardless of PRIMARY) 757 793 // 3) apply the zero point and AB->Jy transformations 758 int setMrelAverageStack (off_t measureOffset, int cat, FlatCorrectionTable *flatcorr, SetMrelInfo *results, Average *average, SecFilt *secfilt, Measure *measure, off_t Nmeasure) { 794 int setMrelAverageStack (Catalog *catalog, int cat, off_t ave, int Nsecfilt, FlatCorrectionTable *flatcorr, SetMrelInfo *results) { 795 796 // we are guaranteed to have average, measure, secfilt 797 Average *average = &catalog[cat].average[ave]; 798 off_t measureOffset = average->measureOffset; 799 int Nmeasure = average->Nmeasure; 800 801 Measure *measure = &catalog[cat].measure[measureOffset]; 802 SecFilt *secfilt = &catalog[cat].secfilt[ave*Nsecfilt]; 759 803 760 804 off_t k; 761 805 762 float Mcal = 0, Mmos = 0, Mgrid = 0, Finst = 0;806 float Mcal = 0, Mmos = 0, Mgrid = 0, Finst = 0; 763 807 764 808 // set the primary projection cell and skycell for this coordinate … … 801 845 802 846 off_t meas = measureOffset; 803 for (k = 0; k < average[0].Nmeasure; k++, meas++) {847 for (k = 0; k < Nmeasure; k++, meas++) { 804 848 805 849 // only examine gpc1 stack data … … 962 1006 average[0].flags |= ID_OBJ_BAD_STACK; 963 1007 } 1008 1009 setGlobalObjStats (average, measure); 1010 964 1011 return (TRUE); 965 1012 } … … 974 1021 // somewhat simplified relative to chip-photometry: 975 1022 // * no grid, no mosaic, no 2MASS, no SYNTH, no Ubercal, no flatcorr 976 int setMrelAverageForcedWarp (off_t measureOffset, int cat, int pass, SetMrelInfo *results, Average *average, SecFilt *secfilt, Measure *measure, off_t *found, off_t Nmeasure) { 1023 int setMrelAverageForcedWarp (Catalog *catalog, int cat, off_t ave, int Nsecfilt, FlatCorrectionTable *flatcorr, SetMrelInfo *results) { 1024 1025 # if (0) 1026 1027 off_t measureOffset = average->measureOffset; 1028 1029 // we are guaranteed to have average, measure, secfilt 1030 Average *average = &catalog[cat].average[ave]; 1031 Measure *measure = &catalog[cat].measure[measureOffset]; 1032 SecFilt *secfilt = &catalog[cat].secfilt[ave*Nsecfilt]; 977 1033 978 1034 off_t k; 979 float Mcal = 0;1035 float Mcal = 0; 980 1036 981 1037 // we are measuring means for 3 types of FLUXes: psf, ap, kron. I am using the psf mag … … 1180 1236 secfilt[Nsec].NwarpGood = NwarpGood; 1181 1237 } 1238 1239 setGlobalObjStats (average, measure); 1240 1241 # endif 1242 1182 1243 return (TRUE); 1183 1244 } … … 1220 1281 // we have a list of measurements for this Nsec value, along with errors, weights, and their rank 1221 1282 // first, sort by the rank (increasing) 1222 sort_ measures_by_ranking (dataset->ranking, dataset->measSeq, dataset->flxlist, dataset->errlist, dataset->wgtlist, dataset->Nlist);1283 sort_StatDataSet (dataset); 1223 1284 1224 1285 // find the values with the same minimum rank: … … 1229 1290 for (i = 0; (i < dataset->Nlist) && (dataset->ranking[i] == minRank); i++, Nranking++); 1230 1291 1231 // if no valid measurements meet the minimum criteria, go to the next entry1232 if (Nranking < Nminmeas) {1233 return 0;1234 }1235 1236 1292 liststats (dataset->flxlist, dataset->errlist, dataset->wgtlist, Nranking, stats); 1237 1293 return (Nranking); 1238 1294 } 1295 1296 /* sort a coordinate pair (X,Y) and the associated index (S) */ 1297 void sort_StatDataSet (StatDataSet *dataset) { 1298 1299 # define SWAPFUNC(A,B){ double dtmp; int itmp; \ 1300 dtmp = dataset->flxlist[A]; dataset->flxlist[A] = dataset->flxlist[B]; dataset->flxlist[B] = dtmp; \ 1301 dtmp = dataset->errlist[A]; dataset->errlist[A] = dataset->errlist[B]; dataset->errlist[B] = dtmp; \ 1302 dtmp = dataset->wgtlist[A]; dataset->wgtlist[A] = dataset->wgtlist[B]; dataset->wgtlist[B] = dtmp; \ 1303 itmp = dataset->ranking[A]; dataset->ranking[A] = dataset->ranking[B]; dataset->ranking[B] = itmp; \ 1304 itmp = dataset->measSeq[A]; dataset->measSeq[A] = dataset->measSeq[B]; dataset->measSeq[B] = itmp; \ 1305 } 1306 # define COMPARE(A,B)(dataset->ranking[A] < dataset->ranking[B]) 1307 1308 OHANA_SORT (dataset->Nlist, COMPARE, SWAPFUNC); 1309 1310 # undef SWAPFUNC 1311 # undef COMPARE 1312 1313 } 1314 -
branches/eam_branches/ipp-20150419/Ohana/src/relphot/src/setMrelFinal.c
r38293 r38297 102 102 103 103 ALLOCATE (catalog[0].measureRank, char, catalog[0].Nmeasure); 104 setMeasure mentRank (catalog);105 setMrelOutput (catalog );104 setMeasureRank (catalog); 105 setMrelOutput (catalog, 1, flatcorr); 106 106 if (!simpleAverage) setMcalOutput (catalog, 1, flatcorr); 107 107 … … 311 311 // measurements ranked by inst mag limit (not REF mags) 312 312 if (ImagSelect) { 313 mag = PhotInst (&measure[i], MAG_CLASS_PSF);313 float mag = PhotInst (&measure[i], MAG_CLASS_PSF); 314 314 if (mag < ImagMin) { measureRank[i] = 8; continue; } 315 315 if (mag > ImagMax) { measureRank[i] = 8; continue; }
Note:
See TracChangeset
for help on using the changeset viewer.
