Changeset 8720 for trunk/ppMerge/src
- Timestamp:
- Aug 31, 2006, 12:56:03 PM (20 years ago)
- Location:
- trunk/ppMerge/src
- Files:
-
- 4 edited
-
ppMerge.c (modified) (2 diffs)
-
ppMergeCombine.c (modified) (9 diffs)
-
ppMergeData.c (modified) (2 diffs)
-
ppMergeData.h (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppMerge/src/ppMerge.c
r8405 r8720 2 2 #include <pslib.h> 3 3 #include <psmodules.h> 4 #include <ppStats.h>5 4 6 5 #include "ppMerge.h" … … 50 49 ppMergeCombine(scale, zero, data, options, config); 51 50 51 // Output the statistics 52 52 if (data->statsFile) { 53 psMetadata *stats = ppStats(NULL, data->out, NULL, config); // Statistics for output FPA 54 psString statsOut = psMetadataConfigFormat(stats); // String to write out 53 psString statsOut = psMetadataConfigFormat(data->stats); // String to write out 55 54 fprintf(data->statsFile, "%s", statsOut); 56 55 psFree(statsOut); 57 psFree(stats);58 56 } 59 57 -
trunk/ppMerge/src/ppMergeCombine.c
r8680 r8720 4 4 #include <pslib.h> 5 5 #include <psmodules.h> 6 #include <ppStats.h> 6 7 7 8 #include "ppMerge.h" … … 94 95 95 96 // Iterate over the FPA 96 int cellNum = -1; // Cell number 97 pmFPA *fpa = data->out; // Output FPA 98 pmFPAview *view = pmFPAviewAlloc(0);// View of FPA, for iteration 99 int cellNum = -1; // Cell number in the whole FPA 97 100 pmFPAWrite(data->out, data->outFile, config->database, true, false); // Write header only 98 psArray *chips = data->out->chips; // Array of output chips 99 for (int i = 0; i < chips->n; i++) { 100 pmChip *chip = chips->data[i]; // Output chip of interest 101 if (!chip) { 102 continue; 103 } 101 pmChip *chip; // Chip of interest 102 while ((chip = pmFPAviewNextChip(view, fpa, 1))) { 104 103 pmChipWrite(chip, data->outFile, config->database, true, false); // Write header only 105 psArray *cells = chip->cells; // Array of output cells 106 for (int j = 0; j < cells->n; j++) { 107 pmCell *cell = cells->data[j]; // Output cell of interest 108 if (!cell) { 109 continue; 110 } 104 pmCell *cell; // Cell of interest 105 while ((cell = pmFPAviewNextCell(view, fpa, 1))) { 111 106 cellNum++; 112 107 pmCellWrite(cell, data->outFile, config->database, true); // Write header only … … 130 125 do { 131 126 numRead = 0; 132 for (int k = 0; k < filenames->n; k++) {133 if (! filenames->data[ k] || strlen(filenames->data[k]) == 0) {127 for (int i = 0; i < filenames->n; i++) { 128 if (! filenames->data[i] || strlen(filenames->data[i]) == 0) { 134 129 continue; 135 130 } 136 psFits *fits = data->files->data[ k]; // FITS file handle131 psFits *fits = data->files->data[i]; // FITS file handle 137 132 if (!fits) { 138 133 psError(PS_ERR_IO, false, "Unable to open input file %s --- ignored.\n", 139 (char *)filenames->data[k]);134 (char*)filenames->data[i]); 140 135 continue; 141 136 } 142 137 143 if (!stack->data[ k]) {144 pmFPA *fpaIn = data->in->data[ k]; // Input FPA145 pmChip *chipIn = fpaIn->chips->data[ i]; // Input chip146 pmCell *cellIn = chipIn->cells->data[ j]; // Input cell147 stack->data[ k] = pmReadoutAlloc(cellIn); // Input readout138 if (!stack->data[i]) { 139 pmFPA *fpaIn = data->in->data[i]; // Input FPA 140 pmChip *chipIn = fpaIn->chips->data[view->chip]; // Input chip 141 pmCell *cellIn = chipIn->cells->data[view->cell]; // Input cell 142 stack->data[i] = pmReadoutAlloc(cellIn); // Input readout 148 143 } 149 144 150 145 // Only reading and writing the first readout in each cell (plane 0) 151 if (pmReadoutReadNext(stack->data[ k], fits, 0, options->rows)) {146 if (pmReadoutReadNext(stack->data[i], fits, 0, options->rows)) { 152 147 // For anything except BIAS and DARK, we want a mask 153 148 if (options->scale || options->zero) { 154 pmReadoutSetMask(stack->data[ k]);149 pmReadoutSetMask(stack->data[i]); 155 150 } 156 151 numRead++; … … 160 155 if (numRead > 0) { 161 156 pmReadoutCombine(readout, stack, cellZeros, cellScales, options->combine); 162 psTrace(__func__, 5, "Chip %d, cell %d, scan %d\n", i, j, numScan);157 psTrace(__func__, 5, "Chip %d, cell %d, scan %d\n", view->chip, view->cell, numScan); 163 158 } 164 159 numScan++; … … 169 164 // Read whole cells at a time 170 165 171 printf("Chip %d, cell %d\n", i, j);166 printf("Chip %d, cell %d\n", view->chip, view->cell); 172 167 int numRead = 0; // Number of inputs read 173 for (int k = 0; k < filenames->n; k++) {174 if (! filenames->data[ k] || strlen(filenames->data[k]) == 0) {175 continue; 176 } 177 psFits *fits = data->files->data[ k]; // FITS file handle168 for (int i = 0; i < filenames->n; i++) { 169 if (! filenames->data[i] || strlen(filenames->data[i]) == 0) { 170 continue; 171 } 172 psFits *fits = data->files->data[i]; // FITS file handle 178 173 if (!fits) { 179 174 psError(PS_ERR_IO, false, "Unable to open input file %s --- ignored.\n", 180 filenames->data[ k]);181 continue; 182 } 183 pmFPA *fpaIn = data->in->data[ k]; // Input FPA184 pmChip *chipIn = fpaIn->chips->data[ i]; // Input chip185 pmCell *cellIn = chipIn->cells->data[ j]; // Input cell175 filenames->data[i]); 176 continue; 177 } 178 pmFPA *fpaIn = data->in->data[i]; // Input FPA 179 pmChip *chipIn = fpaIn->chips->data[view->chip]; // Input chip 180 pmCell *cellIn = chipIn->cells->data[view->cell]; // Input cell 186 181 if (!cellIn->file_exists || !cellIn->data_exists) { 187 182 continue; … … 190 185 continue; 191 186 } 192 stack->data[ k] = cellIn->readouts->data[0];187 stack->data[i] = cellIn->readouts->data[0]; 193 188 numRead++; 194 189 } 195 190 if (numRead > 0) { 196 191 pmReadoutCombine(readout, stack, cellZeros, cellScales, options->combine); 197 psTrace(__func__, 5, "Chip %d, cell %d\n", i, j);192 psTrace(__func__, 5, "Chip %d, cell %d\n", view->chip, view->cell); 198 193 } 199 194 … … 204 199 psFree(stack); 205 200 201 // Statistics on the merged cell 202 if (data->statsFile) { 203 data->stats = ppStats(data->stats, data->out, view, config); // Statistics for output FPA 204 } 205 206 206 // Blow away the cell data 207 for (int k = 0; k < filenames->n; k++) {208 pmFPA *fpaIn = data->in->data[ k]; // Input FPA209 pmChip *chipIn = fpaIn->chips->data[ i]; // Input chip210 pmCell *cellIn = chipIn->cells->data[ j]; // Input cell207 for (int i = 0; i < filenames->n; i++) { 208 pmFPA *fpaIn = data->in->data[i]; // Input FPA 209 pmChip *chipIn = fpaIn->chips->data[view->chip]; // Input chip 210 pmCell *cellIn = chipIn->cells->data[view->cell]; // Input cell 211 211 pmCellFreeData(cellIn); 212 212 } … … 221 221 222 222 // Blow away the chip data 223 for (int k = 0; k < filenames->n; k++) {224 pmFPA *fpaIn = data->in->data[ k]; // Input FPA225 pmChip *chipIn = fpaIn->chips->data[ i]; // Input chip223 for (int i = 0; i < filenames->n; i++) { 224 pmFPA *fpaIn = data->in->data[i]; // Input FPA 225 pmChip *chipIn = fpaIn->chips->data[view->chip]; // Input chip 226 226 pmChipFreeData(chipIn); 227 227 } … … 242 242 243 243 // Blow away the FPA data 244 for (int k = 0; k < filenames->n; k++) {245 pmFPA *fpaIn = data->in->data[ k]; // Input FPA244 for (int i = 0; i < filenames->n; i++) { 245 pmFPA *fpaIn = data->in->data[i]; // Input FPA 246 246 pmFPAFreeData(fpaIn); 247 247 } -
trunk/ppMerge/src/ppMergeData.c
r8405 r8720 26 26 data->statsFile = NULL; 27 27 } 28 psFree(data->stats); 28 29 } 29 30 … … 39 40 data->out = NULL; 40 41 data->outFile = NULL; 42 data->stats = NULL; 41 43 data->statsFile = NULL; 42 44 -
trunk/ppMerge/src/ppMergeData.h
r8405 r8720 12 12 pmFPA *out; // Output FPA structure 13 13 psFits *outFile; // FITS file handle for output 14 psMetadata *stats; // Statistics on the combined image 14 15 FILE *statsFile; // File stream for statistics output 15 16 } ppMergeData;
Note:
See TracChangeset
for help on using the changeset viewer.
