Changeset 36441 for trunk/psModules
- Timestamp:
- Jan 14, 2014, 2:28:47 PM (12 years ago)
- Location:
- trunk
- Files:
-
- 13 edited
-
. (modified) (1 prop)
-
psModules (modified) (1 prop)
-
psModules/src/camera/pmFPAfile.c (modified) (1 diff)
-
psModules/src/objects/pmModelClass.c (modified) (3 diffs)
-
psModules/src/objects/pmModelClass.h (modified) (1 diff)
-
psModules/src/objects/pmSourceIO.c (modified) (7 diffs)
-
psModules/src/objects/pmSourceIO.h (modified) (1 diff)
-
psModules/src/objects/pmSourceIO_CFF.c (modified) (8 diffs)
-
psModules/src/objects/pmSourceIO_CMF.c.in (modified) (9 diffs)
-
psModules/src/objects/pmSourceIO_PS1_CAL_0.c (modified) (1 diff)
-
psModules/src/objects/pmSourceIO_PS1_DEV_0.c (modified) (1 diff)
-
psModules/src/objects/pmSourceIO_PS1_DEV_1.c (modified) (1 diff)
-
psModules/src/objects/pmSourceIO_SMPDATA.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/bills_branches/bills_201312 (added) merged: 36383,36386,36388-36396,36406-36407,36409-36412,36415-36420,36422-36427,36433,36436-36439
- Property svn:mergeinfo changed
-
trunk/psModules
- Property svn:mergeinfo changed
/branches/bills_branches/bills_201312/psModules (added) merged: 36389,36412,36422-36424
- Property svn:mergeinfo changed
-
trunk/psModules/src/camera/pmFPAfile.c
r36375 r36441 565 565 case PM_FPA_FILE_CMF: 566 566 return ("CMF"); 567 case PM_FPA_FILE_CFF: 568 return ("CFF"); 567 569 case PM_FPA_FILE_WCS: 568 570 return ("WCS"); -
trunk/psModules/src/objects/pmModelClass.c
r34259 r36441 66 66 67 67 static pmModelClass *models = NULL; 68 static psVector *modelClassLookupTable = NULL; // translation between model types in header and here 68 69 static int Nmodels = 0; 69 70 … … 135 136 models = NULL; 136 137 Nmodels = 0; 138 psFree(modelClassLookupTable); 139 modelClassLookupTable = NULL; 137 140 return; 138 141 } … … 193 196 } 194 197 198 199 bool pmModelClassWriteHeader(psMetadata *header) 200 { 201 psMetadataAddS32(header, PS_LIST_TAIL, "MTNUM", PS_META_REPLACE, "number of model types", Nmodels); 202 for (int i = 0; i < Nmodels; i++) { 203 char modelNameKey[16]; 204 char modelValKey[16]; 205 sprintf(modelNameKey, "MTNAM%02d", i); 206 sprintf(modelValKey, "MTVAL%02d", i); 207 psMetadataAddStr(header, PS_LIST_TAIL, modelNameKey, PS_META_REPLACE, "", models[i].name); 208 psMetadataAddS32(header, PS_LIST_TAIL, modelValKey, PS_META_REPLACE, "", i); 209 } 210 211 return true; 212 } 213 214 bool pmModelClassReadHeader(psMetadata *header) { 215 psFree(modelClassLookupTable); 216 217 bool status; 218 int numHeaderModels = psMetadataLookupS32(&status, header, "MTNUM"); 219 if (!status) { 220 return false; 221 } 222 223 psVector *inputTypes = psVectorAlloc(numHeaderModels, PS_TYPE_S32); 224 psVector *localTypes = psVectorAlloc(numHeaderModels, PS_TYPE_S32); 225 int max_val = -1; 226 for (int i = 0; i < numHeaderModels; i++) { 227 char modelNameKey[16]; 228 char modelValKey[16]; 229 sprintf(modelNameKey, "MTNAM%02d", i); 230 sprintf(modelValKey, "MTVAL%02d", i); 231 psString thisName = psMetadataLookupStr(&status, header, modelNameKey); 232 int thisVal = psMetadataLookupS32(&status, header, modelValKey); 233 if (thisVal > max_val) { 234 max_val = thisVal; 235 } 236 inputTypes->data.S32[i] = thisVal; 237 localTypes->data.S32[i] = pmModelClassGetType(thisName); 238 } 239 if (max_val < 0) { 240 psFree(inputTypes); 241 psFree(localTypes); 242 return false; 243 } 244 245 modelClassLookupTable = psVectorAlloc(max_val + 1, PS_TYPE_S32); 246 psVectorInit(modelClassLookupTable, -1); 247 248 for (int i = 0; i < numHeaderModels; i++) { 249 int thisVal = inputTypes->data.S32[i]; 250 int localVal = localTypes->data.S32[i]; 251 modelClassLookupTable->data.S32[thisVal] = localVal; 252 } 253 psFree(inputTypes); 254 psFree(localTypes); 255 256 return true; 257 } 258 259 pmModelType pmModelClassGetLocalType(pmModelType inputType) { 260 pmModelType localType = -1; 261 262 if (modelClassLookupTable) { 263 if (inputType >= 0 && inputType < modelClassLookupTable->n) { 264 localType = modelClassLookupTable->data.S32[inputType]; 265 } 266 } else { 267 // no lookup table defined 268 // for backwards compatability if inputType refers to a defined model, return it 269 if (inputType >= 0 && pmModelClassGetName(inputType)) { 270 localType = inputType; 271 } 272 } 273 274 return localType; 275 } -
trunk/psModules/src/objects/pmModelClass.h
r29004 r36441 76 76 void pmModelClassSetLimits(pmModelLimitsType type); 77 77 78 // write keywords to header definining the model type values used by this program 79 bool pmModelClassWriteHeader(psMetadata *header); 80 // create a lookup table for translating input model type values to local model type values 81 bool pmModelClassReadHeader(psMetadata *header); 82 // translate input model type value to local value 83 pmModelType pmModelClassGetLocalType(pmModelType inputType); 78 84 79 85 /// @} -
trunk/psModules/src/objects/pmSourceIO.c
r36375 r36441 61 61 static bool pmReadoutReadXFIT(pmFPAfile *file, pmReadout *readout, char * exttype, psMetadata *hduHeader, psString xfitname, psArray *sources, long *sourceIndex); 62 62 static bool pmReadoutReadXRAD(pmFPAfile *file, pmReadout *readout, char * exttype, psMetadata *hduHeader, psString xfitname, psArray *sources, long *sourceIndex); 63 static bool pmReadoutReadXGAL(pmFPAfile *file, pmReadout *readout, char * exttype, psMetadata *hduHeader, psString xfitname, psArray *sources, long *sourceIndex); 63 64 64 65 // lookup the EXTNAME values used for table data and image header segments … … 374 375 } \ 375 376 if (xgalname) { \ 376 status &= pmSourcesWrite_##TYPE##_XGAL (file->fits, sources, xgalname, recipe); \377 status &= pmSourcesWrite_##TYPE##_XGAL (file->fits, readout, sources, xgalname, recipe); \ 377 378 } \ 378 379 } … … 1036 1037 bool XFIT_OUTPUT = psMetadataLookupBool(&status, recipe, "EXTENDED_SOURCE_FITS"); 1037 1038 bool XRAD_OUTPUT = psMetadataLookupBool(&status, recipe, "RADIAL_APERTURES"); 1038 bool XGAL_OUTPUT = false; //psMetadataLookupBool(&status, recipe, "GALAXY_SHAPES");1039 bool XGAL_OUTPUT = psMetadataLookupBool(&status, recipe, "GALAXY_SHAPES"); 1039 1040 1040 1041 if (!pmSourceIOextnames(&headname, &dataname, &deteffname, … … 1122 1123 1123 1124 long *sourceIndex = NULL; 1124 if (XSRC_OUTPUT || XFIT_OUTPUT || XRAD_OUTPUT) { 1125 if (XSRC_OUTPUT || XFIT_OUTPUT || XRAD_OUTPUT || XGAL_OUTPUT) { 1126 // Build sourceIndex. Lookup table from source->seq to index in sources array. 1127 // Consists of an array of length max(source->seq) + 1. 1128 1129 // find maximum sequence number 1125 1130 long seq_max = -1; 1126 1131 for (long i = sources->n -1; i >= 0; i--) { … … 1135 1140 } 1136 1141 } 1142 // allocate and initialize the index 1137 1143 sourceIndex = psAlloc((seq_max + 1) * sizeof(long)); 1138 1144 for (long i = 0; i < seq_max; i++) { 1139 1145 sourceIndex[i] = -1; 1140 1146 } 1147 // populate the index 1141 1148 for (long i = 0; i < sources->n; i++) { 1142 1149 pmSource *source = sources->data[i]; … … 1165 1172 psFree(xradname); 1166 1173 } 1174 if (XGAL_OUTPUT && xgalname) { 1175 // a cmf file may have an XGAL extension, but it is not required 1176 if (!pmReadoutReadXGAL(file, readout, exttype, hdu->header, xgalname, sources, sourceIndex)) { 1177 // do anything? 1178 } 1179 psFree(xgalname); 1180 } 1167 1181 psFree(sourceIndex); 1168 1182 … … 1461 1475 return status; 1462 1476 } 1477 static bool pmReadoutReadXGAL(pmFPAfile *file, pmReadout *readout, char *exttype, psMetadata *hduHeader, psString xgalname, psArray *sources, long *sourceIndex) 1478 { 1479 if (!psFitsMoveExtNameClean (file->fits, xgalname)) { 1480 psTrace ("pmFPAfile", 1, "cannot find xgal extension %s in %s, skipping", xgalname, file->filename); 1481 return false; 1482 } 1483 1484 psMetadata *tableHeader = psFitsReadHeader(NULL, file->fits); // The FITS header 1485 if (!tableHeader) psAbort("cannot read table header"); 1486 1487 char *xtension = psMetadataLookupStr (NULL, tableHeader, "XTENSION"); 1488 if (!xtension) psAbort("cannot read table type"); 1489 if (strcmp (xtension, "BINTABLE")) { 1490 psFree(tableHeader); 1491 psWarning ("no binary table in extension %s, skipping\n", xgalname); 1492 return false; 1493 } 1494 1495 # define PM_SOURCES_READ_XGAL(NAME,TYPE) \ 1496 if (!strcmp (exttype, NAME)) { \ 1497 status = pmSourcesRead_##TYPE##_XGAL(file->fits, readout, hduHeader, tableHeader, sources, sourceIndex); \ 1498 } 1499 1500 bool status = false; 1501 if (file->type == PM_FPA_FILE_CMF) { 1502 PM_SOURCES_READ_XGAL("PS1_V1", CMF_PS1_V1); 1503 PM_SOURCES_READ_XGAL("PS1_V2", CMF_PS1_V2); 1504 PM_SOURCES_READ_XGAL("PS1_V3", CMF_PS1_V3); 1505 PM_SOURCES_READ_XGAL("PS1_V4", CMF_PS1_V4); 1506 PM_SOURCES_READ_XGAL("PS1_SV1", CMF_PS1_SV1); 1507 PM_SOURCES_READ_XGAL("PS1_SV2", CMF_PS1_SV2); 1508 PM_SOURCES_READ_XGAL("PS1_DV1", CMF_PS1_DV1); 1509 PM_SOURCES_READ_XGAL("PS1_DV2", CMF_PS1_DV2); 1510 PM_SOURCES_READ_XGAL("PS1_DV3", CMF_PS1_DV3); 1511 } 1512 psFree(tableHeader); 1513 return status; 1514 } -
trunk/psModules/src/objects/pmSourceIO.h
r36375 r36441 21 21 bool pmSourcesWrite_##TYPE##_XFIT(psFits *fits, pmReadout *readout, psArray *sources, psMetadata *imageHeader, char *extname); \ 22 22 bool pmSourcesWrite_##TYPE##_XRAD(psFits *fits, pmReadout *readout, psArray *sources, psMetadata *imageHeader, char *extname, psMetadata *recipe); \ 23 bool pmSourcesWrite_##TYPE##_XGAL(psFits *fits, p sArray *sources, char *extname, psMetadata *recipe); \23 bool pmSourcesWrite_##TYPE##_XGAL(psFits *fits, pmReadout *readout, psArray *sources, char *extname, psMetadata *recipe); \ 24 24 psArray *pmSourcesRead_##TYPE (psFits *fits, psMetadata *header); \ 25 25 bool pmSourcesRead_##TYPE##_XSRC (psFits *fits, pmReadout *readout, psMetadata *header, psMetadata *tableHeader, psArray *sources, long *index); \ 26 26 bool pmSourcesRead_##TYPE##_XFIT (psFits *fits, pmReadout *readout, psMetadata *header, psMetadata *tableHeader, psArray *sources, long *index); \ 27 27 bool pmSourcesRead_##TYPE##_XRAD (psFits *fits, pmReadout *readout, psMetadata *header, psMetadata *tableHeader, psArray *sources, long *index);\ 28 bool pmSourcesRead_##TYPE##_XGAL (psFits *fits, pmReadout *readout, psMetadata *header, psMetadata *tableHeader, psArray *sources, long *index);\ 28 29 29 30 // All of these functions need to use the same API, even if not all elements are used in a specific case -
trunk/psModules/src/objects/pmSourceIO_CFF.c
r36375 r36441 65 65 int modelType = pmModelClassGetType ("PS_MODEL_GAUSS"); 66 66 67 // Read lookup table for model classes (if defined) 68 pmModelClassReadHeader(header); 69 67 70 char *PSF_NAME = psMetadataLookupStr (&status, header, "PSFMODEL"); 68 71 if (PSF_NAME != NULL) { … … 111 114 float theta = psMetadataLookupF32 (&status, row, "THETA"); 112 115 113 // XXX: we need to put a lookup table in the cff header to define the correspondence of the114 // model type values in the cff with our models. (We want to use an interger for efficiency115 // but the value for each model type is set on the organization of the the array in pmModelClass.c116 // For now use the input values verbatim and trust the user that this is valid value117 116 int galaxyModelType = psMetadataLookupS32(&status, row, "MODEL_TYPE"); 117 if (status) { 118 galaxyModelType = pmModelClassGetLocalType(galaxyModelType); 119 } else { 120 galaxyModelType = -1; 121 } 118 122 float Sindex = psMetadataLookupF32 (&status, row, "INDEX"); // Should this be PAR_07 not sersic index 119 123 … … 123 127 source->type = PM_SOURCE_TYPE_STAR; // XXX this should be added to the flags 124 128 125 // XXX we can set this in general, but for a specific image, we need to weed out SATSTARS 129 // XXX we can set this in general, but for a specific image, we need to weed out SATSTARS and 130 // stars that are masked 126 131 if (psfStar) { 127 132 source->tmpFlags |= PM_SOURCE_TMPF_CANDIDATE_PSFSTAR; … … 180 185 } 181 186 182 // XXX: should use < 0 as invalid galaxyModelType 183 184 if (fitGalaxy && galaxyModelType > 0) { 187 if (fitGalaxy && galaxyModelType >= 0) { 185 188 source->modelFits = psArrayAllocEmpty (1); 186 189 pmModel *model = pmModelAlloc(galaxyModelType); … … 235 238 PS_ASSERT(mdok, false); 236 239 240 // write the definition of the model class type values to the header 241 psMetadata *outputHeader = psMetadataAlloc(); 242 pmModelClassWriteHeader(outputHeader); 243 237 244 psArray *table = psArrayAllocEmpty(sources->n); 238 245 … … 246 253 psS32 modelType = 0; 247 254 bool fitGalaxy = false; 248 bool psfStar = false;255 bool psfStar = (source->mode & PM_SOURCE_MODE_PSFSTAR) ? true : false; 249 256 psF32 sersicIndex = 0; 250 if (source->modelFits == NULL) { 257 // For now only perform galaxy fits on extended objects 258 if (source->modelEXT == NULL) { 251 259 pmModel *model = source->modelPSF; 252 260 if (model == NULL) continue; … … 260 268 yPos = model->params->data.F32[PM_PAR_YPOS]; 261 269 flux = source->psfFlux; 262 psfStar = (source->mode & PM_SOURCE_MODE_PSFSTAR) ? true : false;263 270 rMajor = 0; 264 271 rMinor = 0; … … 329 336 330 337 psArrayAdd(table, 100, row); 338 psFree(row); 331 339 } 332 340 333 if (!psFitsWriteTable(fits, NULL, table, extname)) {341 if (!psFitsWriteTable(fits, outputHeader, table, extname)) { 334 342 psError(psErrorCodeLast(), false, "writing ext data %s\n", extname); 335 343 psFree(table); 336 psFree( header);344 psFree(outputHeader); 337 345 return false; 338 346 } 339 347 psFree(table); 340 // psFree(header);348 psFree(outputHeader); 341 349 342 350 return true; -
trunk/psModules/src/objects/pmSourceIO_CMF.c.in
r36375 r36441 708 708 return false; 709 709 } 710 // Find the source with this sequence number. 711 // XXX: I am assuming that sources is sorted in order of seq 710 // Find the source with this sequence number using the sourceIndex. 712 711 long seq = psMetadataLookupU32 (&status, row, "IPP_IDET"); 713 pmSource *source = NULL;714 #ifndef ASSUME_SORTED715 long j = seq < sources->n ? seq : sources->n - 1;716 for (; j >= 0; j--) {717 source = sources->data[j];718 if (source->seq == seq) {719 break;720 }721 }722 #else723 712 long j = sourceIndex[seq]; 724 713 psAssert(j >= 0 && j < sources->n, "invalid sourceIndex"); 725 source = sources->data[j]; 726 #endif 714 pmSource *source = sources->data[j]; 727 715 if (!source) { 728 716 psError(PS_ERR_UNKNOWN, false, "Failed to find source for row %ld sequence number %ld\n", i, seq); … … 793 781 // create a header to hold the output data 794 782 psMetadata *outhead = psMetadataAlloc (); 783 784 pmModelClassWriteHeader(outhead); 795 785 796 786 // write the links to the image header … … 1034 1024 return false; 1035 1025 } 1026 // set up the lookup table to translate between input model types and output model types 1027 // if not defined it is assumed that the tables are the same 1028 pmModelClassReadHeader(tableHeader); 1036 1029 1037 1030 for (long i = 0; i < numSources; i++) { … … 1042 1035 return false; 1043 1036 } 1044 // Find the source with this sequence number.1045 // XXX: I am assuming that sources is sorted in order of seq.1046 1037 long seq = psMetadataLookupU32 (&status, row, "IPP_IDET"); 1047 long j = seq < sources->n ? seq : sources->n - 1; 1048 pmSource *source = NULL; 1049 for (; j >= 0; j--) { 1050 source = sources->data[j]; 1051 if (source->seq == seq) { 1052 break; 1053 } 1054 } 1038 long j = sourceIndex[seq]; 1039 psAssert(j >= 0 && j < sources->n, "invalid sourceIndex"); 1040 pmSource *source = sources->data[j]; 1055 1041 if (!source) { 1056 1042 psError(PS_ERR_UNKNOWN, false, "Failed to find source for row %ld sequence number %ld\n", i, seq); … … 1095 1081 // in the psf table. 1096 1082 psS32 extModelType = psMetadataLookupS32(&status, row, "EXT_MODEL_TYPE"); 1097 if (!status) { 1083 if (status) { 1084 // translate between the type value in xfit and values used by this program 1085 extModelType = pmModelClassGetLocalType(extModelType); 1086 } else { 1098 1087 // older cmfs don't have this column 1099 1088 extModelType = -1; 1100 } 1089 } 1101 1090 1102 1091 psEllipseAxes axes; … … 1339 1328 return false; 1340 1329 } 1341 // Find the source with this sequence number.1342 // XXX: I am assuming that sources is sorted in order of seq.1343 1330 long seq = psMetadataLookupU32 (&status, row, "IPP_IDET"); 1344 long j = seq < sources->n ? seq : sources->n - 1; 1345 pmSource *source = NULL; 1346 for (; j >= 0; j--) { 1347 source = sources->data[j]; 1348 if (source->seq == seq) { 1349 break; 1350 } 1351 } 1331 long j = sourceIndex[seq]; 1332 psAssert(j >= 0 && j < sources->n, "invalid sourceIndex"); 1333 pmSource *source = sources->data[j]; 1352 1334 if (!source) { 1353 1335 psError(PS_ERR_UNKNOWN, false, "Failed to find source for row %ld sequence number %ld\n", i, seq); … … 1407 1389 1408 1390 // XXX where should I record the number of columns?? 1409 bool pmSourcesWrite_CMF_@CMFMODE@_XGAL (psFits *fits, p sArray *sources, char *extname, psMetadata *recipe)1391 bool pmSourcesWrite_CMF_@CMFMODE@_XGAL (psFits *fits, pmReadout *readout, psArray *sources, char *extname, psMetadata *recipe) 1410 1392 { 1411 1393 bool status = false; … … 1422 1404 // write the links to the image header 1423 1405 psMetadataAddStr (outhead, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "galaxy table extension", extname); 1406 1407 psMetadataAddStr (outhead, PS_LIST_TAIL, "HI", PS_META_REPLACE, "does this get through?", "THERE"); 1424 1408 1425 1409 // let's write these out in S/N order … … 1491 1475 } 1492 1476 1477 bool pmSourcesRead_CMF_@CMFMODE@_XGAL(psFits *fits, pmReadout *readout, psMetadata *hduHeader, psMetadata *tableHeader, psArray *sources, long *sourceIndex) 1478 { 1479 PS_ASSERT_PTR_NON_NULL(fits, false); 1480 PS_ASSERT_PTR_NON_NULL(sources, false); 1481 1482 bool status; 1483 long numSources = psFitsTableSize(fits); // Number of sources in table 1484 if (numSources == 0) { 1485 psError(psErrorCodeLast(), false, "XGAL Table contains no entries\n"); 1486 return false; 1487 } 1488 1489 for (long i = 0; i < numSources; i++) { 1490 psMetadata *row = psFitsReadTableRow(fits, i); // Table row 1491 if (!row) { 1492 psError(psErrorCodeLast(), false, "Unable to read row %ld of sources", i); 1493 psFree(row); 1494 return false; 1495 } 1496 // Find the source with this sequence number. 1497 // XXX: I am assuming that sources is sorted in order of seq 1498 long seq = psMetadataLookupU32 (&status, row, "IPP_IDET"); 1499 long j = sourceIndex[seq]; 1500 psAssert(j >= 0 && j < sources->n, "invalid sourceIndex"); 1501 1502 pmSource *source = sources->data[j]; 1503 if (!source) { 1504 psError(PS_ERR_UNKNOWN, false, "Failed to find source for row %ld sequence number %ld\n", i, seq); 1505 psFree(row); 1506 return false; 1507 } 1508 1509 psVector *Flux = psMetadataLookupVector(&status, row, "GAL_FLUX"); 1510 psVector *dFlux = psMetadataLookupVector(&status, row, "GAL_FLUX_ERR"); 1511 psVector *chisq = psMetadataLookupVector(&status, row, "GAL_CHISQ"); 1512 1513 if (Flux && Flux->n > 0) { 1514 psFree(source->galaxyFits); 1515 source->galaxyFits = pmSourceGalaxyFitsAlloc(); 1516 source->galaxyFits->nPix = psMetadataLookupF32(&status, row, "NPIX"); 1517 1518 psFree(source->galaxyFits->Flux); 1519 source->galaxyFits->Flux = psMemIncrRefCounter(Flux); 1520 psFree(source->galaxyFits->dFlux); 1521 source->galaxyFits->dFlux = psMemIncrRefCounter(dFlux); 1522 psFree(source->galaxyFits->chisq); 1523 source->galaxyFits->chisq = psMemIncrRefCounter(chisq); 1524 } 1525 1526 psFree(row); 1527 } 1528 1529 return true; 1530 } -
trunk/psModules/src/objects/pmSourceIO_PS1_CAL_0.c
r36375 r36441 714 714 } 715 715 716 bool pmSourcesWrite_PS1_CAL_0_XGAL (psFits *fits, p sArray *sources, char *extname, psMetadata *recipe)716 bool pmSourcesWrite_PS1_CAL_0_XGAL (psFits *fits, pmReadout *readout, psArray *sources, char *extname, psMetadata *recipe) 717 717 { 718 718 return true; -
trunk/psModules/src/objects/pmSourceIO_PS1_DEV_0.c
r36375 r36441 256 256 } 257 257 258 bool pmSourcesWrite_PS1_DEV_0_XGAL(psFits *fits, p sArray *sources, char *extname, psMetadata *recipe)259 { 260 return true; 261 } 258 bool pmSourcesWrite_PS1_DEV_0_XGAL(psFits *fits, pmReadout *readout, psArray *sources, char *extname, psMetadata *recipe) 259 { 260 return true; 261 } -
trunk/psModules/src/objects/pmSourceIO_PS1_DEV_1.c
r36375 r36441 596 596 } 597 597 598 bool pmSourcesWrite_PS1_DEV_1_XGAL(psFits *fits, p sArray *sources, char *extname, psMetadata *recipe)598 bool pmSourcesWrite_PS1_DEV_1_XGAL(psFits *fits, pmReadout *readout, psArray *sources, char *extname, psMetadata *recipe) 599 599 { 600 600 return true; -
trunk/psModules/src/objects/pmSourceIO_SMPDATA.c
r36375 r36441 226 226 } 227 227 228 bool pmSourcesWrite_SMPDATA_XGAL(psFits *fits, p sArray *sources, char *extname, psMetadata *recipe)228 bool pmSourcesWrite_SMPDATA_XGAL(psFits *fits, pmReadout *readout, psArray *sources, char *extname, psMetadata *recipe) 229 229 { 230 230 return true;
Note:
See TracChangeset
for help on using the changeset viewer.
