Changeset 32299
- Timestamp:
- Sep 3, 2011, 11:38:19 AM (15 years ago)
- Location:
- branches/eam_branches/ipp-20110710/psphot/src
- Files:
-
- 3 edited
-
psphot.h (modified) (1 diff)
-
psphotKronIterate.c (modified) (4 diffs)
-
psphotSetThreads.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20110710/psphot/src/psphot.h
r32205 r32299 487 487 bool psphotKronIterate (pmConfig *config, const pmFPAview *view, const char *filerule); 488 488 bool psphotKronIterateReadout(pmConfig *config, psMetadata *recipe, const pmFPAview *view, pmReadout *readout, psArray *sources, pmPSF *psf); 489 bool psphotKronIterate_Threaded (psThreadJob *job); 489 490 490 491 #endif -
branches/eam_branches/ipp-20110710/psphot/src/psphotKronIterate.c
r32238 r32299 94 94 // maskVal is used to test for rejected pixels, and must include markVal 95 95 maskVal |= markVal; 96 97 // psphotSaveImage (NULL, readout->mask, "kron.unmasked.fits");98 99 // XXX tmp visualization100 // int kapa = psphotKapaChannel (1);101 96 102 97 // source analysis is done in S/N order (brightest first) … … 123 118 psphotKronWindowSetSource (source, kronWindow, false, true); 124 119 } 125 // psphotVisualRangeImage (kapa, kronWindow, "kronwin", 0, 0.0, 1.0); 126 127 // psphotSaveImage (NULL, kronWindow, "kron.window.v0.fits"); 120 121 // threaded measurement of the source magnitudes 122 // choose Cx, Cy (see psphotThreadTools.c for overview of the concepts) 123 int Cx = 1, Cy = 1; 124 psphotChooseCellSizes (&Cx, &Cy, readout, nThreads); 125 126 psArray *cellGroups = psphotAssignSources (Cx, Cy, sources); 127 128 for (int i = 0; i < cellGroups->n; i++) { 129 130 psArray *cells = cellGroups->data[i]; 131 132 for (int j = 0; j < cells->n; j++) { 133 134 // allocate a job -- if threads are not defined, this just runs the job 135 psThreadJob *job = psThreadJobAlloc ("PSPHOT_KRON_ITERATE"); 136 137 psArrayAdd(job->args, 1, readout); 138 psArrayAdd(job->args, 1, kronWindow); 139 psArrayAdd(job->args, 1, cells->data[j]); // sources 140 PS_ARRAY_ADD_SCALAR(job->args, markVal, PS_TYPE_IMAGE_MASK); 141 PS_ARRAY_ADD_SCALAR(job->args, maskVal, PS_TYPE_IMAGE_MASK); 142 PS_ARRAY_ADD_SCALAR(job->args, RADIUS, PS_TYPE_F32); 143 PS_ARRAY_ADD_SCALAR(job->args, MIN_KRON_RADIUS, PS_TYPE_F32); 144 PS_ARRAY_ADD_SCALAR(job->args, EXT_FIT_MAX_RADIUS, PS_TYPE_F32); 145 146 // set this to 0 to run without threading 147 # if (1) 148 if (!psThreadJobAddPending(job)) { 149 psError(PS_ERR_UNKNOWN, false, "Unable to guess model."); 150 return false; 151 } 152 # else 153 if (!psphotExtendedSourceFits_Threaded(job)) { 154 psError(PS_ERR_UNKNOWN, false, "Unable to guess model."); 155 psFree(AnalysisRegion); 156 return false; 157 } 158 psFree(job); 159 # endif 160 } 161 162 // wait for the threads to finish and manage results 163 if (!psThreadPoolWait (false)) { 164 psError(PS_ERR_UNKNOWN, false, "Unable to guess model."); 165 return false; 166 } 167 168 // we have only supplied one type of job, so we can assume the types here 169 psThreadJob *job = NULL; 170 while ((job = psThreadJobGetDone()) != NULL) { 171 if (job->args->n < 1) { 172 fprintf (stderr, "error with job\n"); 173 } 174 psFree(job); 175 } 176 } 177 psFree (cellGroups); 178 psFree (kronWindow); 179 180 psLogMsg ("psphot.kron", PS_LOG_WARN, "measure masked kron magnitudes : %f sec for %ld objects\n", psTimerMark ("psphot.kron"), sources->n); 181 return true; 182 } 183 184 bool psphotKronIterate_Threaded (psThreadJob *job) { 185 186 pmReadout *readout = job->args->data[0]; 187 psImage *kronWindow = job->args->data[1]; 188 psArray *sources = job->args->data[2]; 189 psImageMaskType markVal = PS_SCALAR_VALUE(job->args->data[3],PS_TYPE_IMAGE_MASK_DATA); 190 psImageMaskType maskVal = PS_SCALAR_VALUE(job->args->data[4],PS_TYPE_IMAGE_MASK_DATA); 191 float RADIUS = PS_SCALAR_VALUE(job->args->data[5],F32); 192 float MIN_KRON_RADIUS = PS_SCALAR_VALUE(job->args->data[6],F32); 193 float EXT_FIT_MAX_RADIUS = PS_SCALAR_VALUE(job->args->data[7],F32); 128 194 129 195 for (int j = 0; j < 5; j++) { … … 151 217 // clear the window function for this source based on the moments 152 218 psphotKronWindowSetSource (source, kronWindow, (j > 0), false); 153 // psphotVisualRangeImage (kapa, kronWindow, "kronwin", 1, 0.0, 1.0);154 219 155 220 // this function populates moments->Mrf,KronFlux,KronFluxErr … … 165 230 } 166 231 } 167 // char name[64]; 168 // sprintf (name, "kron.window.v%d.fits", j+1); 169 // psphotSaveImage (NULL, kronWindow, name); 170 } 171 psFree (kronWindow); 172 173 psLogMsg ("psphot.kron", PS_LOG_WARN, "measure masked kron magnitudes : %f sec for %ld objects\n", psTimerMark ("psphot.kron"), sources->n); 174 232 } 175 233 return true; 176 234 } -
branches/eam_branches/ipp-20110710/psphot/src/psphotSetThreads.c
r32023 r32299 30 30 psFree(task); 31 31 32 task = psThreadTaskAlloc("PSPHOT_KRON_ITERATE", 8); 33 task->function = &psphotKronIterate_Threaded; 34 psThreadTaskAdd(task); 35 psFree(task); 36 32 37 task = psThreadTaskAlloc("PSPHOT_BLEND_FIT", 10); 33 38 task->function = &psphotBlendFit_Threaded;
Note:
See TracChangeset
for help on using the changeset viewer.
