Changeset 41529 for trunk/ppStack/src/ppStackCamera.c
- Timestamp:
- Apr 3, 2021, 11:41:29 AM (5 years ago)
- File:
-
- 1 edited
-
trunk/ppStack/src/ppStackCamera.c (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppStack/src/ppStackCamera.c
r35556 r41529 31 31 } 32 32 33 33 pmConfig *pmConfigMakeTemp (pmConfig *config) { 34 pmConfig *altconfig = pmConfigAlloc(); 35 36 // these are NULL on pmConfigAlloc 37 altconfig->user = psMemIncrRefCounter(config->user); // inherit from primary camera 38 altconfig->site = psMemIncrRefCounter(config->site); // inherit from primary camera 39 altconfig->system = psMemIncrRefCounter(config->system); // inherit from primary camera 40 41 psFree (altconfig->files); 42 altconfig->files = psMemIncrRefCounter(config->files); // inherit from primary camera 43 44 psFree (altconfig->arguments); 45 altconfig->arguments = psMemIncrRefCounter(config->arguments); // inherit from primary camera 46 47 psFree (altconfig->recipes); 48 altconfig->recipes = psMetadataCopy(NULL, config->recipes); // container for camera-specific recipe values (to be dropped) 49 50 return (altconfig); 51 } 34 52 35 53 bool ppStackCamera(pmConfig *config) … … 48 66 bool convolve = psMetadataLookupBool(NULL, recipe, "CONVOLVE"); // Convolve images before stack? 49 67 50 psArray *runImages = pmFPAfileDefineMultipleFromRun(&status, NULL, config, 51 "PPSTACK.INPUT"); // Input images from previous run 68 psArray *runImages = pmFPAfileDefineMultipleFromRun(&status, NULL, config, "PPSTACK.INPUT"); // Input images from previous run 52 69 if (runImages) { 53 70 // Defining files from the RUN metadata 54 71 num = runImages->n; 55 72 56 psArray *runMasks = pmFPAfileDefineMultipleFromRun(&status, runImages, config, 57 "PPSTACK.INPUT.MASK"); // Input masks 73 psArray *runMasks = pmFPAfileDefineMultipleFromRun(&status, runImages, config, "PPSTACK.INPUT.MASK"); // Input masks 58 74 if (!status) { 59 75 psError(psErrorCodeLast(), false, "Unable to define input masks from RUN metadata."); … … 63 79 psFree(runMasks); 64 80 65 psArray *runVars = pmFPAfileDefineMultipleFromRun(&status, runImages, config, 66 "PPSTACK.INPUT.VARIANCE"); // Input variances 81 psArray *runVars = pmFPAfileDefineMultipleFromRun(&status, runImages, config, "PPSTACK.INPUT.VARIANCE"); // Input variances 67 82 if (!status) { 68 83 psError(psErrorCodeLast(), false, "Unable to define input variances from RUN metadata."); … … 75 90 psFree(runVars); 76 91 77 psArray *runSrc = pmFPAfileDefineMultipleFromRun(&status, runImages, config, 78 "PPSTACK.INPUT.SOURCES"); // Input sources 92 psArray *runSrc = pmFPAfileDefineMultipleFromRun(&status, runImages, config, "PPSTACK.INPUT.SOURCES"); // Input sources 79 93 if (!status) { 80 94 psError(psErrorCodeLast(), false, "Unable to define input sources from RUN metadata."); … … 91 105 if (convolve) { 92 106 { 93 psArray *runPSF = pmFPAfileDefineMultipleFromRun(&status, runImages, config, 94 "PPSTACK.INPUT.PSF"); // Input PSFs 107 psArray *runPSF = pmFPAfileDefineMultipleFromRun(&status, runImages, config, "PPSTACK.INPUT.PSF"); // Input PSFs 95 108 if (!status) { 96 109 psError(psErrorCodeLast(), false, "Unable to define input PSFs from RUN metadata."); … … 105 118 { 106 119 107 psArray *runKernel = pmFPAfileDefineMultipleFromRun(&status, runImages, config, 108 "PPSTACK.CONV.KERNEL"); // Conv'n kernels 120 psArray *runKernel = pmFPAfileDefineMultipleFromRun(&status, runImages, config, "PPSTACK.CONV.KERNEL"); // Conv'n kernels 109 121 if (!status) { 110 122 psError(psErrorCodeLast(), false, … … 158 170 psString bkgmodel = psMetadataLookupStr(&mdok, input, "BKGMODEL"); // Name of warped background model 159 171 160 pmFPAfile *imageFile = defineFile(config, NULL, "PPSTACK.INPUT", 172 // Use a temporary config for all but the first image, keeping the main user, 173 // site, system, files, arguments entries loaded for the first image. This 174 // allows the images to be from different cameras than the first input image. 175 // NOTE: there is no check that these images match in terms of size, pixel 176 // scale, etc. That is up to the user. 177 178 pmConfig *tempConfig = (i == 0) ? psMemIncrRefCounter(config) : pmConfigMakeTemp(config); 179 180 pmFPAfile *imageFile = defineFile(tempConfig, NULL, "PPSTACK.INPUT", 161 181 image, PM_FPA_FILE_IMAGE); // File for image 162 182 if (!imageFile) { … … 166 186 167 187 if (mask && strlen(mask) > 0 && 168 !defineFile( config, imageFile, "PPSTACK.INPUT.MASK", mask, PM_FPA_FILE_MASK)) {188 !defineFile(tempConfig, imageFile, "PPSTACK.INPUT.MASK", mask, PM_FPA_FILE_MASK)) { 169 189 psError(psErrorCodeLast(), false, "Unable to define file from mask %d (%s)", i, mask); 170 190 return false; … … 173 193 if (variance && strlen(variance) > 0) { 174 194 haveVariances = true; 175 if (!defineFile( config, imageFile, "PPSTACK.INPUT.VARIANCE", variance,195 if (!defineFile(tempConfig, imageFile, "PPSTACK.INPUT.VARIANCE", variance, 176 196 PM_FPA_FILE_VARIANCE)) { 177 197 psError(psErrorCodeLast(), false, … … 186 206 } else { 187 207 havePSFs = true; 188 if (!defineFile( config, imageFile, "PPSTACK.INPUT.PSF", psf, PM_FPA_FILE_PSF)) {208 if (!defineFile(tempConfig, imageFile, "PPSTACK.INPUT.PSF", psf, PM_FPA_FILE_PSF)) { 189 209 psError(psErrorCodeLast(), false, "Unable to define file from psf %d (%s)", i, psf); 190 210 return false; … … 200 220 return false; 201 221 } 202 if (!defineFile( config, imageFile, "PPSTACK.INPUT.SOURCES", sources, PM_FPA_FILE_CMF)) {222 if (!defineFile(tempConfig, imageFile, "PPSTACK.INPUT.SOURCES", sources, PM_FPA_FILE_CMF)) { 203 223 psError(psErrorCodeLast(), false, "Unable to define file from sources %d (%s)", 204 224 i, sources); … … 207 227 208 228 if (convolve) { 209 pmFPAfile *kernel = pmFPAfileDefineOutput( config, imageFile->fpa, "PPSTACK.CONV.KERNEL");229 pmFPAfile *kernel = pmFPAfileDefineOutput(tempConfig, imageFile->fpa, "PPSTACK.CONV.KERNEL"); 210 230 if (!kernel) { 211 231 psError(psErrorCodeLast(), false, … … 221 241 psMetadataAddBool(recipe, PS_LIST_TAIL, "BACKGROUND.MODEL", PS_META_REPLACE, "Do photometry on stacked image?", false); 222 242 } else { 223 pmFPAfile *inputBKG = defineFile( config,NULL,"PPSTACK.INPUT.BKGMODEL",bkgmodel, PM_FPA_FILE_IMAGE);243 pmFPAfile *inputBKG = defineFile(tempConfig,NULL,"PPSTACK.INPUT.BKGMODEL",bkgmodel, PM_FPA_FILE_IMAGE); 224 244 if (!inputBKG) { 225 245 psMetadataAddBool(recipe, PS_LIST_TAIL, "BACKGROUND.MODEL", PS_META_REPLACE, "Do photometry on stacked image?", false); … … 232 252 } 233 253 } // End bkgmodel 254 psFree(tempConfig); 234 255 i++; 235 256 }
Note:
See TracChangeset
for help on using the changeset viewer.
