Changeset 21230
- Timestamp:
- Jan 29, 2009, 4:26:37 PM (17 years ago)
- Location:
- branches/pap_branch_20090128/ppSim/src
- Files:
-
- 9 edited
-
ppSimInsertStars.c (modified) (4 diffs)
-
ppSimLoadForceSources.c (modified) (5 diffs)
-
ppSimLoop.c (modified) (8 diffs)
-
ppSimMakeBias.c (modified) (3 diffs)
-
ppSimMakeDark.c (modified) (2 diffs)
-
ppSimMakeSky.c (modified) (5 diffs)
-
ppSimMergeReadouts.c (modified) (3 diffs)
-
ppSimPhotomReadoutFake.c (modified) (8 diffs)
-
ppSimPhotomReadoutForce.c (modified) (8 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap_branch_20090128/ppSim/src/ppSimInsertStars.c
r20367 r21230 39 39 float skyRate = psMetadataLookupF32(NULL, recipe, "SKY.RATE"); // Sky rate 40 40 if (isnan(skyRate)) { 41 float zp = psMetadataLookupF32(&mdok, recipe, "ZEROPOINT"); assert (mdok);42 float scale = psMetadataLookupF32(&mdok, recipe, "PIXEL.SCALE"); assert (mdok);43 float skyMags = psMetadataLookupF32(&mdok, recipe, "SKY.MAGS"); assert (mdok);41 float zp = psMetadataLookupF32(&mdok, recipe, "ZEROPOINT"); assert (mdok); 42 float scale = psMetadataLookupF32(&mdok, recipe, "PIXEL.SCALE"); assert (mdok); 43 float skyMags = psMetadataLookupF32(&mdok, recipe, "SKY.MAGS"); assert (mdok); 44 44 skyRate = scale * scale * ppSimMagToFlux (skyMags, zp); 45 45 } … … 75 75 FILE *outfile = fopen (outname, "w"); 76 76 77 // add sources to the readout image & weight77 // add sources to the readout image & variance 78 78 psTrace("ppSim", 1, "Inserting %ld stars...\n", stars->n); 79 79 for (long i = 0; i < stars->n; i++) { … … 118 118 psF64 Area = 2.0 * M_PI * axes.major * axes.minor; 119 119 120 // this value is the pure (input) flux, and is saved in the output source cmf files120 // this value is the pure (input) flux, and is saved in the output source cmf files 121 121 source->psfMag = -2.5*log10(star->flux); 122 122 source->errMag = sqrt(Area*PS_SQR(roughNoise) + flux) / flux; … … 132 132 // Blow away the image parts of the source, which makes the memory explode 133 133 RESET(source->pixels); 134 RESET(source-> weight);134 RESET(source->variance); 135 135 RESET(source->maskObj); 136 136 RESET(source->maskView); -
branches/pap_branch_20090128/ppSim/src/ppSimLoadForceSources.c
r18011 r21230 56 56 // Select the spots within range of this readout. Project the spots to this chip 57 57 for (int i = 0; i < spots->n; i++) { 58 pmAstromObj *obj = spots->data[i];58 pmAstromObj *obj = spots->data[i]; 59 59 60 psProject (obj->TP, obj->sky, fpa->toSky);61 psPlaneTransformApply (obj->FP, fpa->fromTPA, obj->TP);62 psPlaneTransformApply (obj->chip, chip->fromFPA, obj->FP);60 psProject (obj->TP, obj->sky, fpa->toSky); 61 psPlaneTransformApply (obj->FP, fpa->fromTPA, obj->TP); 62 psPlaneTransformApply (obj->chip, chip->fromFPA, obj->FP); 63 63 64 // limit the X,Y range of the objs to the selected chip65 if (obj->chip->x < minX) continue;66 if (obj->chip->x > maxX) continue;67 if (obj->chip->y < minY) continue;68 if (obj->chip->y > maxY) continue;64 // limit the X,Y range of the objs to the selected chip 65 if (obj->chip->x < minX) continue; 66 if (obj->chip->x > maxX) continue; 67 if (obj->chip->y < minY) continue; 68 if (obj->chip->y > maxY) continue; 69 69 70 // convert the pmAstromObj to pmSource70 // convert the pmAstromObj to pmSource 71 71 72 72 // instantiate a model for the PSF at this location, Io = 1.0 … … 74 74 75 75 // XXX let the flux limit be a user-defined number of sky sigmas (not just 1.0) 76 // XXX use a fixed radius??76 // XXX use a fixed radius?? 77 77 // float radius = model->modelRadius (model->params, roughNoise); 78 78 // radius = PS_MAX (radius, 1.0); 79 float radius = 5.0;79 float radius = 5.0; 80 80 81 81 // construct a source, with model flux pixels set, based on the model … … 87 87 // psF64 Area = 2.0 * M_PI * axes.major * axes.minor; 88 88 89 // these are not really needed since we will be fitting for them89 // these are not really needed since we will be fitting for them 90 90 source->psfMag = NAN; 91 91 source->errMag = NAN; 92 92 93 93 // insert the source flux in the image 94 // XXX not sure the offset is really 0,094 // XXX not sure the offset is really 0,0 95 95 pmSourceAddWithOffset (source, PM_MODEL_OP_FULL, 0xff, 0.0, 0.0); 96 96 pmSourceAddWithOffset (source, PM_MODEL_OP_FULL | PM_MODEL_OP_NOISE, 0xff, 0.0, 0.0); … … 98 98 // Blow away the image parts of the source, which makes the memory explode 99 99 RESET(source->pixels); 100 RESET(source-> weight);100 RESET(source->variance); 101 101 RESET(source->maskObj); 102 102 RESET(source->maskView); … … 105 105 RESET(source->blends); 106 106 107 psArrayAdd (sources, 100, source);107 psArrayAdd (sources, 100, source); 108 108 psFree(source); // Drop local reference 109 109 } -
branches/pap_branch_20090128/ppSim/src/ppSimLoop.c
r18011 r21230 34 34 psArray *galaxies = psArrayAllocEmpty (1); 35 35 if (type == PPSIM_TYPE_OBJECT) { 36 // Load forced-photometry positions (these are placed on fpa->analysis for use in ppSimPhotomReadout)37 if (!ppSimLoadSpots (fpa, config)) ESCAPE (PS_ERR_UNKNOWN, "failed to load forced-photometry spots");38 39 // Load catalogue stars36 // Load forced-photometry positions (these are placed on fpa->analysis for use in ppSimPhotomReadout) 37 if (!ppSimLoadSpots (fpa, config)) ESCAPE (PS_ERR_UNKNOWN, "failed to load forced-photometry spots"); 38 39 // Load catalogue stars 40 40 if (!ppSimLoadStars (stars, fpa, config)) ESCAPE (PS_ERR_UNKNOWN, "failed to load catalog stars"); 41 41 42 // Add random stars42 // Add random stars 43 43 if (!ppSimMakeStars (stars, fpa, config, rng)) ESCAPE (PS_ERR_UNKNOWN, "failed to make random stars"); 44 44 45 // Add random galaxies45 // Add random galaxies 46 46 if (!ppSimMakeGalaxies (galaxies, fpa, config, rng)) ESCAPE (PS_ERR_UNKNOWN, "failed to make random galaxies"); 47 47 } … … 105 105 // TO DO: Decide if cell is to be windowed, reduce numCols, numRows appropriately 106 106 readout->image = psImageAlloc(numCols, numRows, PS_TYPE_F32); // Signal in pixels 107 readout-> weight= psImageAlloc(numCols, numRows, PS_TYPE_F32); // Noise in pixels107 readout->variance = psImageAlloc(numCols, numRows, PS_TYPE_F32); // Noise in pixels 108 108 109 109 psImageInit (readout->image, 0.0); 110 psImageInit (readout-> weight, 0.0);110 psImageInit (readout->variance, 0.0); 111 111 112 112 psFree(readout); // Drop reference … … 115 115 psVector *biasCols = ppSimMakeBiassec (cell, config); 116 116 117 pmReadout *readout;118 while ((readout = pmFPAviewNextReadout (view, fpa, 1))) {119 120 // if we have not read in a weightor generated a fake image above, we need to117 pmReadout *readout; 118 while ((readout = pmFPAviewNextReadout (view, fpa, 1))) { 119 120 // if we have not read in a variance or generated a fake image above, we need to 121 121 // build one here 122 if (!readout-> weight) {123 if (!pmReadoutGenerate Weight(readout, true)) {124 psError (PS_ERR_UNKNOWN, false, "trouble creating weight");122 if (!readout->variance) { 123 if (!pmReadoutGenerateVariance(readout, true)) { 124 psError (PS_ERR_UNKNOWN, false, "trouble creating variance"); 125 125 return false; 126 126 } … … 133 133 134 134 psVector *biasRows = ppSimMakeBias (&status, readout, config, rng); 135 if (!status) ESCAPE (PS_ERR_UNKNOWN, "problem generating dark structure");135 if (!status) ESCAPE (PS_ERR_UNKNOWN, "problem generating dark structure"); 136 136 if (type == PPSIM_TYPE_BIAS) goto done; 137 137 138 if (!ppSimMakeDark (readout, config)) ESCAPE (PS_ERR_UNKNOWN, "problem generating dark structure");138 if (!ppSimMakeDark (readout, config)) ESCAPE (PS_ERR_UNKNOWN, "problem generating dark structure"); 139 139 if (type == PPSIM_TYPE_DARK) goto done; 140 140 … … 153 153 154 154 done: 155 if (!ppSimAddNoise(readout->image, readout-> weight, cell, config, rng)) ESCAPE (PS_ERR_UNKNOWN, "problem adding noise");155 if (!ppSimAddNoise(readout->image, readout->variance, cell, config, rng)) ESCAPE (PS_ERR_UNKNOWN, "problem adding noise"); 156 156 if (!ppSimSaturate(readout, config)) ESCAPE (PS_ERR_UNKNOWN, "problem setting saturation levels"); 157 157 … … 165 165 readout->parent->parent->data_exists = true; 166 166 167 // if there is an input image, merge it with the simulated image168 if (!ppSimMergeReadouts (config, view)) ESCAPE (PS_ERR_UNKNOWN, "problem merging input image with simulated image");167 // if there is an input image, merge it with the simulated image 168 if (!ppSimMergeReadouts (config, view)) ESCAPE (PS_ERR_UNKNOWN, "problem merging input image with simulated image"); 169 169 } 170 170 psFree(biasCols); … … 173 173 174 174 if (cell->hdu) { 175 // XXX only do this if there is no INPUT image?175 // XXX only do this if there is no INPUT image? 176 176 if (!ppSimInitHeader(config, NULL, NULL, cell)) ESCAPE (PS_ERR_UNKNOWN, "problem setting output header"); 177 177 } … … 186 186 } 187 187 188 // XXX why no UpdateConceptsChip??188 // XXX why no UpdateConceptsChip?? 189 189 190 190 if (chip->hdu) { 191 // XXX only do this if there is no INPUT image191 // XXX only do this if there is no INPUT image 192 192 if (!ppSimInitHeader(config, NULL, chip, NULL)) ESCAPE (PS_ERR_UNKNOWN, "problem setting output header"); 193 193 } 194 194 195 195 // we perform photometry on the readouts of this chip in the output 196 if (!ppSimPhotom (config, view)) ESCAPE (PS_ERR_UNKNOWN, "problem performing photometry");196 if (!ppSimPhotom (config, view)) ESCAPE (PS_ERR_UNKNOWN, "problem performing photometry"); 197 197 198 198 if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) { -
branches/pap_branch_20090128/ppSim/src/ppSimMakeBias.c
r18011 r21230 20 20 float readnoise = psMetadataLookupF32(NULL, cell->concepts, "CELL.READNOISE");// CCD read noise, e 21 21 if (isnan(readnoise)) { 22 psWarning("CELL.READNOISE is not set; reverting to recipe value READNOISE.");23 readnoise = psMetadataLookupF32(&mdok, recipe, "READNOISE");24 if (!mdok) {25 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to find READNOISE in recipe.");26 *status = false;27 return NULL;28 }22 psWarning("CELL.READNOISE is not set; reverting to recipe value READNOISE."); 23 readnoise = psMetadataLookupF32(&mdok, recipe, "READNOISE"); 24 if (!mdok) { 25 psError(PS_ERR_BAD_PARAMETER_VALUE, false, "Unable to find READNOISE in recipe."); 26 *status = false; 27 return NULL; 28 } 29 29 } 30 30 31 31 psImage *signal = readout->image; 32 psImage *variance = readout-> weight;32 psImage *variance = readout->variance; 33 33 34 34 int numRows = signal->numRows; … … 38 38 psPolynomial1D *biasPoly = psPolynomial1DAlloc(PS_POLYNOMIAL_CHEB, biasOrder); 39 39 for (int j = 0; j < biasOrder + 1; j++) { 40 biasPoly->coeff[j] = biasRange * psRandomGaussian(rng);40 biasPoly->coeff[j] = biasRange * psRandomGaussian(rng); 41 41 } 42 42 … … 45 45 46 46 for (int y = 0; y < numRows; y++) { 47 // Adjust bias level for this row48 biasRows->data.F32[y] = psPolynomial1DEval(biasPoly, (float)(y + biasOffset) /49 (float)numRows - 0.5) + biasLevel;47 // Adjust bias level for this row 48 biasRows->data.F32[y] = psPolynomial1DEval(biasPoly, (float)(y + biasOffset) / 49 (float)numRows - 0.5) + biasLevel; 50 50 51 for (int x = 0; x < numCols; x++) {51 for (int x = 0; x < numCols; x++) { 52 52 53 // Bias level54 signal->data.F32[y][x] += biasRows->data.F32[y];55 variance->data.F32[y][x] += PS_SQR(readnoise);53 // Bias level 54 signal->data.F32[y][x] += biasRows->data.F32[y]; 55 variance->data.F32[y][x] += PS_SQR(readnoise); 56 56 57 }57 } 58 58 } 59 59 psFree(biasPoly); -
branches/pap_branch_20090128/ppSim/src/ppSimMakeDark.c
r18011 r21230 7 7 8 8 psImage *signal = readout->image; 9 psImage *variance = readout-> weight;9 psImage *variance = readout->variance; 10 10 11 11 psMetadata *recipe = psMetadataLookupMetadata(&mdok, config->recipes, PPSIM_RECIPE); // Recipe … … 29 29 30 30 for (int y = 0; y < signal->numRows; y++) { 31 for (int x = 0; x < signal->numCols; x++) {32 33 // Dark current34 float darkCurrent = darkRate * expTime; // Dark current accumulated35 signal->data.F32[y][x] += darkCurrent;36 variance->data.F32[y][x] += darkCurrent;37 }31 for (int x = 0; x < signal->numCols; x++) { 32 33 // Dark current 34 float darkCurrent = darkRate * expTime; // Dark current accumulated 35 signal->data.F32[y][x] += darkCurrent; 36 variance->data.F32[y][x] += darkCurrent; 37 } 38 38 } 39 39 return true; -
branches/pap_branch_20090128/ppSim/src/ppSimMakeSky.c
r20366 r21230 9 9 10 10 psImage *signal = readout->image; 11 psImage *variance = readout-> weight;11 psImage *variance = readout->variance; 12 12 13 13 pmCell *cell = readout->parent; … … 19 19 bool sky = psMetadataLookupBool(&status, recipe, "SKY"); // Generate a SKY flux? 20 20 bool flat = psMetadataLookupBool(&status, recipe, "FLAT"); // Apply flat-field term? 21 21 22 22 float expTime = psMetadataLookupF32(&status, recipe, "EXPTIME"); // Exposure time 23 23 … … 29 29 float skyMags = psMetadataLookupF32(&status, recipe, "SKY.MAGS"); assert (status); 30 30 if (!isnan(skyMags)) { 31 float zp = psMetadataLookupF32(&status, recipe, "ZEROPOINT"); assert (status);32 float scale = psMetadataLookupF32(&status, recipe, "PIXEL.SCALE"); assert (status);33 skyRate = scale * scale * ppSimMagToFlux (skyMags, zp);31 float zp = psMetadataLookupF32(&status, recipe, "ZEROPOINT"); assert (status); 32 float scale = psMetadataLookupF32(&status, recipe, "PIXEL.SCALE"); assert (status); 33 skyRate = scale * scale * ppSimMagToFlux (skyMags, zp); 34 34 } 35 35 if (type == PPSIM_TYPE_FLAT) { … … 37 37 } 38 38 39 int x0Chip = psMetadataLookupS32(&status, chip->concepts, "CHIP.X0");40 int y0Chip = psMetadataLookupS32(&status, chip->concepts, "CHIP.Y0");39 int x0Chip = psMetadataLookupS32(&status, chip->concepts, "CHIP.X0"); 40 int y0Chip = psMetadataLookupS32(&status, chip->concepts, "CHIP.Y0"); 41 41 int xParityChip = psMetadataLookupS32(&status, chip->concepts, "CHIP.XPARITY"); 42 42 int yParityChip = psMetadataLookupS32(&status, chip->concepts, "CHIP.YPARITY"); 43 43 44 int x0Cell = psMetadataLookupS32(&status, cell->concepts, "CELL.X0");45 int y0Cell = psMetadataLookupS32(&status, cell->concepts, "CELL.Y0");44 int x0Cell = psMetadataLookupS32(&status, cell->concepts, "CELL.X0"); 45 int y0Cell = psMetadataLookupS32(&status, cell->concepts, "CELL.Y0"); 46 46 int xParityCell = psMetadataLookupS32(&status, cell->concepts, "CELL.XPARITY"); 47 47 int yParityCell = psMetadataLookupS32(&status, cell->concepts, "CELL.YPARITY"); … … 72 72 // Gaussian flat-field over the FPA with flatValue = 1.0 at the field center 73 73 float flatValue = 1.0; 74 if (flat) {75 // we make the flat-field have a response of 1.0 at the field center (like a vignetting)76 flatValue = expf(-0.5 / PS_SQR(flatSigma) * (PS_SQR(yFPA) + PS_SQR(xFPA)));77 }74 if (flat) { 75 // we make the flat-field have a response of 1.0 at the field center (like a vignetting) 76 flatValue = expf(-0.5 / PS_SQR(flatSigma) * (PS_SQR(yFPA) + PS_SQR(xFPA))); 77 } 78 78 79 float scatterRate = 0.0;79 float scatterRate = 0.0; 80 80 81 if (sky) {82 // add a scattered light term to the flat-field images83 if (type == PPSIM_TYPE_FLAT) {84 scatterRate = scatterFrac * PS_SQR(xFPA);85 }81 if (sky) { 82 // add a scattered light term to the flat-field images 83 if (type == PPSIM_TYPE_FLAT) { 84 scatterRate = scatterFrac * PS_SQR(xFPA); 85 } 86 86 87 // Sky background88 float skyFlux = (skyRate * (flatValue + scatterRate)) * realExpTime; // Flux from sky89 signal->data.F32[y][x] += skyFlux;90 variance->data.F32[y][x] += skyFlux;91 }87 // Sky background 88 float skyFlux = (skyRate * (flatValue + scatterRate)) * realExpTime; // Flux from sky 89 signal->data.F32[y][x] += skyFlux; 90 variance->data.F32[y][x] += skyFlux; 91 } 92 92 93 // used later to modify the star and galaxy photometry 94 if (expCorr) {95 // exposure correction is (effective exposure time) * (flatValue)96 expCorr->data.F32[y][x] = flatValue * realExpTime / expTime;97 }93 // used later to modify the star and galaxy photometry 94 if (expCorr) { 95 // exposure correction is (effective exposure time) * (flatValue) 96 expCorr->data.F32[y][x] = flatValue * realExpTime / expTime; 97 } 98 98 99 99 // TO DO: Add fringes -
branches/pap_branch_20090128/ppSim/src/ppSimMergeReadouts.c
r18011 r21230 14 14 if (!inReadout) return true; 15 15 16 if (!inReadout-> weight) {17 if (!pmReadoutGenerate Weight(inReadout, true)) {18 psError (PS_ERR_UNKNOWN, false, "trouble creating weight");19 return false;16 if (!inReadout->variance) { 17 if (!pmReadoutGenerateVariance(inReadout, true)) { 18 psError (PS_ERR_UNKNOWN, false, "trouble creating variance"); 19 return false; 20 20 } 21 21 } … … 30 30 31 31 psImage *inSignal = inReadout->image; 32 psImage *inVariance = inReadout-> weight;32 psImage *inVariance = inReadout->variance; 33 33 34 34 psImage *outSignal = outReadout->image; 35 psImage *outVariance = outReadout-> weight;35 psImage *outVariance = outReadout->variance; 36 36 37 37 assert (inSignal->numRows == outSignal->numRows); … … 39 39 40 40 for (int y = 0; y < inSignal->numRows; y++) { 41 for (int x = 0; x < inSignal->numCols; x++) {42 outSignal->data.F32[y][x] += inSignal->data.F32[y][x];43 outVariance->data.F32[y][x] += inVariance->data.F32[y][x];44 }41 for (int x = 0; x < inSignal->numCols; x++) { 42 outSignal->data.F32[y][x] += inSignal->data.F32[y][x]; 43 outVariance->data.F32[y][x] += inVariance->data.F32[y][x]; 44 } 45 45 } 46 46 return true; -
branches/pap_branch_20090128/ppSim/src/ppSimPhotomReadoutFake.c
r20403 r21230 12 12 } 13 13 14 # if 0 14 # if 0 15 15 // set the photcode for this image 16 16 if (!psphotAddPhotcode (recipe, config, view, "PPSIM.FAKE.CHIP")) { … … 22 22 // *** in this section, perform the photometry for real + fake sources on PPSIM.FAKE.CHIP *** 23 23 24 // find the currently selected readout. 24 // find the currently selected readout. 25 25 // we always perform photometry on the mosaiced chip 26 26 pmReadout *readout = pmFPAfileThisReadout (config->files, view, "PPSIM.FAKE.CHIP"); … … 35 35 PS_ASSERT_PTR_NON_NULL (injectedSources, false); 36 36 37 // Generate the mask and weightimages, including the user-defined analysis region of interest38 psphotSetMaskAnd Weight(config, readout, recipe);37 // Generate the mask and variance images, including the user-defined analysis region of interest 38 psphotSetMaskAndVariance (config, readout, recipe); 39 39 40 40 // XXX need to define the source pixels … … 53 53 psArray *realSources = psArrayAlloc (realMeasuredSources->n); 54 54 for (int i = 0; i < realMeasuredSources->n; i++) { 55 realSources->data[i] = pmSourceCopy (realMeasuredSources->data[i]);55 realSources->data[i] = pmSourceCopy (realMeasuredSources->data[i]); 56 56 } 57 57 58 58 // load the psf model, if suppled. FWHM_X,FWHM_Y,etc are saved in the recipe 59 // this function uses PSPHOT.PSF.LOAD as the pmFPAfile 59 // this function uses PSPHOT.PSF.LOAD as the pmFPAfile 60 60 pmPSF *psf = psphotLoadPSF (config, view, recipe); 61 61 assert (psf); 62 62 63 // remove all sources 63 // remove all sources 64 64 psphotRemoveAllSources (realSources, recipe); 65 65 … … 76 76 77 77 // XXX fake sources should measure peak->x,y, force sources should not 78 psMaskType maskVal = 0xff; 78 psMaskType maskVal = 0xff; 79 79 psImage *significance = psphotSignificanceImage (readout, recipe, 1, maskVal); 80 80 ppSimDetections (significance, recipe, fakeSources); … … 90 90 psphotGuessModels (config, readout, realSources, psf); 91 91 psphotGuessModels (config, readout, fakeSources, psf); 92 92 93 93 // linear fit to real + fake sources 94 94 psArray *sources = ppSimMergeSources (realSources, fakeSources); … … 98 98 99 99 // calculate source magnitudes (for which set??) 100 psphotMagnitudes(config, view, fakeSources, recipe, psf);100 psphotMagnitudes(config, readout, view, fakeSources, psf); 101 101 102 102 // drop the references to the image pixels held by each source … … 113 113 pmReadout *fakeReadout = pmFPAfileThisReadout (config->files, view, "PPSIM.FAKE.SOURCES"); 114 114 if (!fakeReadout) { 115 fakeReadout = pmReadoutAlloc (fakeCell);116 psFree (fakeReadout); // there is a copy on 'cell' as well115 fakeReadout = pmReadoutAlloc (fakeCell); 116 psFree (fakeReadout); // there is a copy on 'cell' as well 117 117 } 118 118 psAssert (fakeReadout, "no fakeReadout?"); -
branches/pap_branch_20090128/ppSim/src/ppSimPhotomReadoutForce.c
r20403 r21230 12 12 } 13 13 14 # if 0 14 # if 0 15 15 // set the photcode for this image 16 16 if (!psphotAddPhotcode (recipe, config, view, "PPSIM.FAKE.CHIP")) { … … 22 22 // *** in this section, perform the photometry for real + force sources on PPSIM.FORCE.CHIP *** 23 23 24 // find the currently selected readout. 24 // find the currently selected readout. 25 25 // we always perform photometry on the mosaiced chip 26 26 pmReadout *readout = pmFPAfileThisReadout (config->files, view, "PPSIM.FORCE.CHIP"); … … 35 35 psAssert (forceSources, "failed to load force photometry sources"); 36 36 37 // Generate the mask and weightimages, including the user-defined analysis region of interest38 psphotSetMaskAnd Weight(config, readout, recipe);37 // Generate the mask and variance images, including the user-defined analysis region of interest 38 psphotSetMaskAndVariance (config, readout, recipe); 39 39 40 40 // XXX need to define the source pixels … … 46 46 psArray *realSources = psArrayAlloc (realMeasuredSources->n); 47 47 for (int i = 0; i < realMeasuredSources->n; i++) { 48 realSources->data[i] = pmSourceCopy (realMeasuredSources->data[i]);48 realSources->data[i] = pmSourceCopy (realMeasuredSources->data[i]); 49 49 } 50 50 51 51 // load the psf model, if suppled. FWHM_X,FWHM_Y,etc are saved in the recipe 52 // this function uses PSPHOT.PSF.LOAD as the pmFPAfile 52 // this function uses PSPHOT.PSF.LOAD as the pmFPAfile 53 53 pmPSF *psf = psphotLoadPSF (config, view, recipe); 54 54 assert (psf); 55 55 56 // remove all sources 56 // remove all sources 57 57 psphotRemoveAllSources (realSources, recipe); 58 58 … … 69 69 70 70 // XXX fake sources should measure peak->x,y, force sources should not 71 psMaskType maskVal = 0xff; 71 psMaskType maskVal = 0xff; 72 72 psImage *significance = psphotSignificanceImage (readout, recipe, 1, maskVal); 73 73 ppSimDetections (significance, recipe, forceSources); … … 83 83 psphotGuessModels (config, readout, realSources, psf); 84 84 psphotGuessModels (config, readout, forceSources, psf); 85 85 86 86 // linear fit to real + force sources 87 87 psArray *sources = ppSimMergeSources (realSources, forceSources); … … 91 91 92 92 // calculate source magnitudes (for which set??) 93 psphotMagnitudes(config, view, forceSources, recipe, psf);93 psphotMagnitudes(config, readout, view, forceSources, psf); 94 94 95 95 // drop the references to the image pixels held by each source … … 106 106 pmReadout *forceReadout = pmFPAfileThisReadout (config->files, view, "PPSIM.FORCE.SOURCES"); 107 107 if (!forceReadout) { 108 forceReadout = pmReadoutAlloc (forceCell);109 psFree (forceReadout); // there is a copy on 'cell' as well108 forceReadout = pmReadoutAlloc (forceCell); 109 psFree (forceReadout); // there is a copy on 'cell' as well 110 110 } 111 111 psAssert (forceReadout, "no forceReadout?");
Note:
See TracChangeset
for help on using the changeset viewer.
