Changeset 31333
- Timestamp:
- Apr 21, 2011, 10:59:14 AM (15 years ago)
- Location:
- trunk/psastro/src
- Files:
-
- 4 edited
-
psastroAstromGuess.c (modified) (1 diff)
-
psastroChipAstrom.c (modified) (2 diffs)
-
psastroConvert.c (modified) (3 diffs)
-
psastroRemoveClumps.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psastro/src/psastroAstromGuess.c
r23989 r31333 161 161 psastroPlotRawstars (rawstars, fpa, chip, recipe); 162 162 } 163 164 // Next if we are using a different set of stars for grid search fill out their pmAstromObjs 165 psArray *grid_rawstars = psMetadataLookupPtr (NULL, readout->analysis, "PSASTRO.GRID.RAWSTARS"); 166 if (grid_rawstars == NULL || grid_rawstars == rawstars) { continue; } 167 168 for (int i = 0; i < grid_rawstars->n; i++) { 169 pmAstromObj *raw = grid_rawstars->data[i]; 170 171 psPlaneTransformApply (raw->FP, chip->toFPA, raw->chip); 172 psPlaneTransformApply (raw->TP, fpa->toTPA, raw->FP); 173 psDeproject (raw->sky, raw->TP, fpa->toSky); 174 175 // rationalize ra to sky range centered on boresite 176 while (raw->sky->r < RAminSky) raw->sky->r += 2.0*M_PI; 177 while (raw->sky->r > RAmaxSky) raw->sky->r -= 2.0*M_PI; 178 179 RAmin = PS_MIN (raw->sky->r, RAmin); 180 RAmax = PS_MAX (raw->sky->r, RAmax); 181 182 DECmin = PS_MIN (raw->sky->d, DECmin); 183 DECmax = PS_MAX (raw->sky->d, DECmax); 184 } 185 // XXX: should we plot grid_rawstars? 163 186 } 164 187 } -
trunk/psastro/src/psastroChipAstrom.c
r27639 r31333 60 60 61 61 // select the raw objects for this readout 62 psArray *gridrawstars = psMetadataLookupPtr (&status, readout->analysis, "PSASTRO.GRID.RAWSTARS.SUBSET"); 63 if (gridrawstars == NULL) { 64 gridrawstars = rawstars; 65 } else { 66 // the absolute minimum number of stars is 4 (for order = 1) 67 if (gridrawstars->n < 4) { 68 readout->data_exists = false; 69 psLogMsg ("psastro", 3, "insufficient gird rawstars (%ld)", gridrawstars->n); 70 continue; 71 } 72 } 73 62 74 psArray *refstars = psMetadataLookupPtr (&status, readout->analysis, "PSASTRO.REFSTARS.SUBSET"); 63 75 if (refstars == NULL) { continue; } … … 80 92 81 93 // XXX update the header with info to reflect the failure 82 if (!psastroOneChipGrid (fpa, chip, refstars, rawstars, recipe, updates)) {94 if (!psastroOneChipGrid (fpa, chip, refstars, gridrawstars, recipe, updates)) { 83 95 readout->data_exists = false; 84 96 psLogMsg ("psastro", 3, "failed to find a solution\n"); -
trunk/psastro/src/psastroConvert.c
r31161 r31333 14 14 // leak free 2006.04.27 15 15 16 static psArray * chooseStars(psArray *inStars, char *listName, psArray *sources, psVector *index, int nMax, float iMagMin, float iMagMax, pmSourceMode skip); 17 16 18 bool psastroConvertFPA (pmFPA *fpa, psMetadata *recipe) { 17 19 … … 87 89 } 88 90 91 psArray *rawStars = chooseStars(inStars, "", sources, index, PS_MIN(nMax, inStars->n), iMagMin, iMagMax, skip); 92 psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSASTRO.RAWSTARS", PS_DATA_ARRAY, "astrometry objects", rawStars); 93 94 bool gridSearch = psMetadataLookupBool (&status, recipe, "PSASTRO.GRID.SEARCH"); 95 if (gridSearch) { 96 // See if different magnitude limits have been specified for grid search. If so, create a separate list of stars to use. 97 float iGridMagMax = psMetadataLookupF32 (&status, recipe, "PSASTRO.GRID.MAX.INST.MAG.RAW"); 98 float iGridMagMin = psMetadataLookupF32 (&status, recipe, "PSASTRO.GRID.MIN.INST.MAG.RAW"); 99 int nMaxGrid = psMetadataLookupS32 (&status, recipe, "PSASTRO.GRID.NRAW.MAX"); 100 101 // XXX Should we check PSASTRO.GRID.NRAW.MAX != PSASTRO.MAX.NRAW as well? It usually is smaller so that would cause 102 // us to always create a separate list. So I won't check. 103 104 if ((iGridMagMax != iMagMax) || (iGridMagMin != iMagMin)) { 105 psArray *gridStars = chooseStars(inStars, "grid search ", sources, index, PS_MIN(nMaxGrid, inStars->n), iGridMagMin, iGridMagMax, skip); 106 psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSASTRO.GRID.RAWSTARS", PS_DATA_ARRAY, "astrometry objects for grid search", gridStars); 107 psFree(gridStars); 108 } 109 } 110 111 psFree (index); 112 psFree (inStars); 113 psFree (rawStars); 114 115 return true; 116 } 117 118 119 psArray * chooseStars(psArray *inStars, char *listName, psArray *sources, psVector *index, int nMax, float iMagMin, float iMagMax, pmSourceMode skip) { 89 120 // choose the first nMax sources 90 121 int j = 0; 91 psArray *rawStars = psArrayAlloc (PS_MIN (nMax, inStars->n));122 psArray *rawStars = psArrayAlloc(nMax); 92 123 93 124 float mMin = +100.0; … … 128 159 rawStars->n = j; 129 160 130 psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSASTRO.RAWSTARS", PS_DATA_ARRAY, "astrometry objects", rawStars); 131 132 psLogMsg ("psastro", 4, "loaded %ld sources, using %ld of %ld good sources (inst mag: %f to %f)\n", sources->n, rawStars->n, inStars->n, mMin, mMax); 161 psLogMsg ("psastro", 4, "loaded %ld %ssources, using %ld of %ld good sources (inst mag: %f to %f)\n", sources->n, listName, rawStars->n, inStars->n, mMin, mMax); 133 162 psLogMsg ("psastro", 4, "skip reasons: mode: %d, faint: %d, bright: %d, inf: %d\n", nModeSkip, nFaintSkip, nBrightSkip, nInfSkip); 134 163 135 psFree (index); 136 psFree (inStars); 137 psFree (rawStars); 138 139 return true; 164 return rawStars; 140 165 } 141 166 -
trunk/psastro/src/psastroRemoveClumps.c
r26275 r31333 61 61 psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSASTRO.RAWSTARS.SUBSET", PS_DATA_ARRAY, "astrometry objects", subset); 62 62 psFree (subset); 63 64 psArray *gridstars = psMetadataLookupPtr(&status, readout->analysis, "PSASTRO.GRID.RAWSTARS"); 65 if ((gridstars == rawstars) || (gridstars == NULL)) { continue; } 66 67 psArray *gridstars_subset = psastroRemoveClumpsIterate(gridstars, 150, 3); 68 psMetadataAdd (readout->analysis, PS_LIST_TAIL, "PSASTRO.GRID.RAWSTARS.SUBSET", PS_DATA_ARRAY, "astrometry objects", gridstars_subset); 69 psFree (gridstars_subset); 63 70 } 64 71 }
Note:
See TracChangeset
for help on using the changeset viewer.
