Changeset 23688 for trunk/ppSub/src/ppSubLoop.c
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/pap (added) merged: 23511,23520-23521,23532,23578-23581,23596-23599,23603-23604,23606-23608,23619-23621,23638-23639,23641,23646-23648,23651-23653,23656,23672-23674,23677-23684
- Property svn:mergeinfo changed
-
trunk/ppSub
- Property svn:mergeinfo changed
/branches/pap/ppSub (added) merged: 23580,23597,23599,23672-23674,23684
- Property svn:mergeinfo changed
-
trunk/ppSub/src/ppSubLoop.c
r23315 r23688 28 28 pmConfigRecipesCull(config, "PPSUB,PPSTATS,PSPHOT,MASKS,JPEG"); 29 29 30 ppSubData *data = ppSubDataAlloc(); // Processing data 31 30 32 bool mdok; // Status of MD lookup 31 33 const char *statsName = psMetadataLookupStr(&mdok, config->arguments, "STATS"); // Filename for statistics 32 psMetadata *stats = NULL; // Container for statistics33 34 FILE *statsFile = NULL; // File stream for statistics 34 35 if (statsName && strlen(statsName) > 0) { … … 38 39 psError(PS_ERR_IO, true, "Unable to open statistics file %s for writing.\n", resolved); 39 40 psFree(resolved); 40 return false; 41 } else { 42 stats = psMetadataAlloc(); 41 goto ERROR; 43 42 } 44 43 psFree(resolved); … … 48 47 if (!input) { 49 48 psError(PS_ERR_UNEXPECTED_NULL, false, "Can't find input data!\n"); 50 return false;49 goto ERROR; 51 50 } 52 51 … … 54 53 if (!reference) { 55 54 psError(PS_ERR_UNEXPECTED_NULL, false, "Can't find reference data!\n"); 56 return false;55 goto ERROR; 57 56 } 58 57 … … 60 59 if (!output) { 61 60 psError(PS_ERR_UNEXPECTED_NULL, false, "Can't find output data!\n"); 62 return false;61 goto ERROR; 63 62 } 64 63 … … 67 66 // Iterate over the FPA hierarchy 68 67 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { 69 return false;68 goto ERROR; 70 69 } 71 70 … … 77 76 psError(PS_ERR_BAD_PARAMETER_VALUE, true, "FPA format discrepency between input and reference"); 78 77 psFree(view); 79 return false;78 goto ERROR; 80 79 } 81 80 … … 85 84 86 85 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { 87 return false;86 goto ERROR; 88 87 } 89 88 … … 96 95 "FPA format discrepency between input and reference"); 97 96 psFree(view); 98 return false;97 goto ERROR; 99 98 } 100 99 if (!inCell->file_exists) { … … 102 101 } 103 102 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { 104 return false;103 goto ERROR; 105 104 } 106 105 … … 108 107 while ((inRO = pmFPAviewNextReadout(view, input->fpa, 1))) { 109 108 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { 110 return false;109 goto ERROR; 111 110 } 112 111 pmReadout *refRO = pmFPAviewThisReadout(view, reference->fpa);// Reference readout of interest … … 116 115 "FPA format discrepency between input and reference"); 117 116 psFree(view); 118 return false;117 goto ERROR; 119 118 } 120 119 if (!inRO->data_exists) { … … 123 122 124 123 // Perform the analysis 125 if (!ppSubReadout(config, stats, view)) {124 if (!ppSubReadout(config, data, view)) { 126 125 psError(PS_ERR_UNKNOWN, false, "Unable to subtract images.\n"); 127 return false;126 goto ERROR; 128 127 } 129 128 130 129 if (!pmFPAfileIOChecks(config, view, PM_FPA_BEFORE)) { 131 return false;130 goto ERROR; 132 131 } 133 132 } 134 133 135 134 // Perform statistics on the cell 136 if (stats ) {135 if (statsFile) { 137 136 pmFPAfile *output = psMetadataLookupPtr(NULL, config->files, "PPSUB.OUTPUT"); // Output file 138 137 if (!output) { 139 138 psError(PS_ERR_UNEXPECTED_NULL, true, "Unable to find file PPSUB.OUTPUT.\n"); 140 return false;139 goto ERROR; 141 140 } 142 141 psImageMaskType maskValue = pmConfigMaskGet("MASK.VALUE", config); 143 ppStatsFPA( stats, output->fpa, view, maskValue, config);142 ppStatsFPA(data->stats, output->fpa, view, maskValue, config); 144 143 } 145 144 146 145 if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) { 147 return false;146 goto ERROR; 148 147 } 149 148 } 150 149 151 150 if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) { 152 return false;151 goto ERROR; 153 152 } 154 153 } 155 154 156 155 if (!pmFPAfileIOChecks(config, view, PM_FPA_AFTER)) { 157 return false;156 goto ERROR; 158 157 } 159 158 … … 161 160 162 161 // Write out summary statistics 163 if (stats ) {164 psMetadataAddF32( stats, PS_LIST_TAIL, "TIME_SUB", 0, "Time for subtraction completion",162 if (statsFile) { 163 psMetadataAddF32(data->stats, PS_LIST_TAIL, "TIME_SUB", 0, "Time for subtraction completion", 165 164 psTimerMark("ppSub")); 166 165 167 const char *statsMDC = psMetadataConfigFormat( stats);166 const char *statsMDC = psMetadataConfigFormat(data->stats); 168 167 if (!statsMDC || strlen(statsMDC) == 0) { 169 168 psWarning("Unable to generate statistics MDC file.\n"); … … 173 172 psFree((void *)statsMDC); 174 173 fclose(statsFile); 175 176 psFree(stats);177 174 } 178 175 179 176 psString dump_file = psMetadataLookupStr(&mdok, config->arguments, "-dumpconfig"); 180 177 if (dump_file) { 181 182 178 pmFPAfile *input = psMetadataLookupPtr(NULL, config->files, "PPSUB.INPUT"); // Input file 183 179 pmConfigDump(config, input->fpa, dump_file); 184 180 } 185 181 182 psFree(data); 186 183 return true; 184 185 ERROR: 186 psFree(data); 187 return false; 187 188 }
Note:
See TracChangeset
for help on using the changeset viewer.
