Changeset 35855 for tags/ipp-20130712
- Timestamp:
- Jul 25, 2013, 3:21:58 PM (13 years ago)
- Location:
- tags/ipp-20130712
- Files:
-
- 8 edited
-
ippScripts/scripts/lap_science.pl (modified) (5 diffs, 1 prop)
-
ippScripts/scripts/skycell_jpeg.pl (modified) (8 diffs, 1 prop)
-
ppSkycell/src (modified) (1 prop)
-
ppSkycell/src/ppSkycell.h (modified) (1 diff)
-
ppSkycell/src/ppSkycellArguments.c (modified) (2 diffs)
-
ppSkycell/src/ppSkycellCamera.c (modified) (2 diffs)
-
ppSkycell/src/ppSkycellData.c (modified) (2 diffs)
-
ppSkycell/src/ppSkycellLoop.c (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
tags/ipp-20130712/ippScripts/scripts/lap_science.pl
- Property svn:mergeinfo changed
/trunk/ippScripts/scripts/lap_science.pl (added) merged: 35853-35854
r35810 r35855 309 309 my $magicDS_update_cmd = "magicdstool -setfiletoupdate -magic_ds_id $chip_magicDS_id -set_label $label"; 310 310 $magicDS_update_cmd .= " -dbname $dbname " if defined $dbname; 311 my $warptool_preupdate_cmd = "warptool -revertwarped -warp_id $warp_id -fault 26"; 312 $warptool_preupdate_cmd .= " -dbname $dbname " if defined $dbname; 311 313 my $warptool_update_cmd = "warptool -setskyfiletoupdate -warp_id $warp_id -set_label $label"; 312 314 $warptool_update_cmd .= " -dbname $dbname " if defined $dbname; … … 314 316 # only need to update the data if the warps are not full 315 317 if ($warp->{state} ne 'full') { 316 if ($chip->{state} eq 'cleaned') { 318 if (($chip->{state} eq 'cleaned')|| # Exposure is cleaned 319 (($chip->{state} eq 'update')&&($chip->{label} ne $label))) { # Exposure is owned by an interloper. 317 320 ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 318 321 run(command => $chiptool_update_cmd, verbose => $verbose); … … 341 344 } 342 345 346 347 ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 348 run(command => $warptool_preupdate_cmd, verbose => $verbose); 349 unless ($success) { 350 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 351 &my_die("Unable to perform warptool --revertwarped: $error_code", $exposure->{exp_id}, $data_group); 352 } 353 343 354 ($success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = 344 355 run(command => $warptool_update_cmd, verbose => $verbose); … … 364 375 if (S64_IS_NOT_NULL($exposure->{chip_id})) { 365 376 if (($exposure->{chip_state} eq 'cleaned')|| 377 ($exposure->{chip_state} eq 'update')|| 366 378 ($exposure->{chip_state} eq 'goto_cleaned')|| 367 379 ($exposure->{chip_state} eq 'error_cleaned')) { … … 1407 1419 'difftool -dbname @DBNAME@ -updaterun -set_state goto_cleaned -set_label goto_cleaned -label @LABEL@ -diff_id @DIFF_ID@', 1408 1420 'magictool -dbname @DBNAME@ -updaterun -set_state full -set_label @LABEL@.old -magic_id @MAGIC_ID@', 1409 'magicdstool -dbname @DBNAME@ -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -stage chip -stage_id @CHIP_ID@',1410 'magicdstool -dbname @DBNAME@ -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -stage warp -stage_id @WARP_ID@',1411 'magicdstool -dbname @DBNAME@ -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -stage diff -stage_id @DIFF_ID@');1421 # 'magicdstool -dbname @DBNAME@ -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -stage chip -stage_id @CHIP_ID@', 1422 # 'magicdstool -dbname @DBNAME@ -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -stage warp -stage_id @WARP_ID@', 1423 # 'magicdstool -dbname @DBNAME@ -updaterun -set_state goto_cleaned -state full -set_label goto_cleaned -stage diff -stage_id @DIFF_ID@'); 1412 1424 1413 1425 foreach my $exposure (@$exposures) { - Property svn:mergeinfo changed
-
tags/ipp-20130712/ippScripts/scripts/skycell_jpeg.pl
- Property svn:mergeinfo set to
r34800 r35855 17 17 my ($help,$masks); 18 18 my ($tempFile,$tempName,$maskFile,$maskName); 19 $verbose = 0; 19 20 my $ppSkycell = can_run('ppSkycell') or (warn "Can't find ppSkycell" and $missing_tools = 1); 20 21 my $warptool = can_run('warptool') or (warn "Can't find warptool" and $missing_tools = 1); … … 38 39 pod2usage( -msg => "Unknown option: @ARGV", -exitval => 2) if @ARGV; 39 40 pod2usage( 40 -msg => "Required options: --stage --stage_id -- path_base\nHelpful options: --camera --dbname",41 -msg => "Required options: --stage --stage_id --outroot\nHelpful options: --camera --dbname", 41 42 -exitval => 3, 42 43 ) unless … … 100 101 } 101 102 } 102 print "$skycell_id $projection_cell\n";103 # print "$skycell_id $projection_cell\n"; 103 104 my $file = $ipprc->filename("PSWARP.OUTPUT", $path_base, $skycell_id); 104 print "$file $state $quality\n";105 # print "$file $state $quality\n"; 105 106 my $f_fh = $tangents{$projection_cell}{FILE}; 106 107 print $f_fh "$file\n"; 107 108 if ($masks) { 108 109 my $mask = $ipprc->filename("PSWARP.OUTPUT.MASK", $path_base, $skycell_id); 109 print "$mask\n";110 # print "$mask\n"; 110 111 my $m_fh = $tangents{$projection_cell}{MFILE}; 111 112 print $m_fh "$mask\n"; … … 118 119 } 119 120 $command .= " ${outroot}.${projection_cell} "; 120 print "$command\n";121 # print "$command\n"; 121 122 ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = run(command => $command, verbose => $verbose); 122 123 unless ($success) { … … 197 198 } 198 199 } 199 print "$skycell_id $projection_cell\n";200 # print "$skycell_id $projection_cell\n"; 200 201 my $file = $ipprc->filename("PPSUB.OUTPUT", $path_base, $skycell_id); 201 print "$file $state $quality\n";202 # print "$file $state $quality\n"; 202 203 my $f_fh = $tangents{$projection_cell}{FILE}; 203 204 print $f_fh "$file\n"; 204 205 if ($masks) { 205 206 my $mask = $ipprc->filename("PPSUB.OUTPUT.MASK", $path_base, $skycell_id); 206 print "$mask\n";207 # print "$mask\n"; 207 208 my $m_fh = $tangents{$projection_cell}{MFILE}; 208 209 print $m_fh "$mask\n"; … … 215 216 } 216 217 $command .= " ${outroot}.${projection_cell} "; 217 print "$command\n";218 # print "$command\n"; 218 219 ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = run(command => $command, verbose => $verbose); 219 220 unless ($success) { … … 297 298 $tangents{$projection_cell}{$key}{FILE} = $tempFile; 298 299 $tangents{$projection_cell}{$key}{NAME} = $tempName; 300 $tangents{$projection_cell}{$key}{N} = 0; 299 301 } 300 302 } 301 303 foreach my $key (keys %products) { 302 print "$skycell_id $projection_cell\n";304 # print "$skycell_id $projection_cell\n"; 303 305 my $file = $ipprc->filename($products{$key}, $path_base, $skycell_id); 304 print "$file $state $quality\n";306 # print "$file $state $quality\n"; 305 307 my $f_fh = $tangents{$projection_cell}{$key}{FILE}; 306 print $f_fh "$file\n"; 308 if ($ipprc->file_exists($file)) { 309 print $f_fh "$file\n"; 310 $tangents{$projection_cell}{$key}{N} ++; 311 } 307 312 } 308 313 } … … 322 327 $command .= " -Di BIN1 1 -Di BIN2 1 "; 323 328 } 324 elsif ($key eq 'image') { 325 $command .= " -masks $tangents{$projection_cell}{mask}{NAME} "; 326 } 327 elsif ($key eq 'mask') { 328 next; # This should be made with the images. 329 } 330 print "$command\n"; 331 ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = run(command => $command, verbose => $verbose); 332 unless ($success) { 333 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 334 &my_die("unable to perform ppSkycell: $error_code", $stage_id, $error_code); 329 # elsif ($key eq 'image') { 330 # $command .= " -masks $tangents{$projection_cell}{mask}{NAME} "; 331 # } 332 # elsif ($key eq 'mask') { 333 # next; # This should be made with the images. 334 # } 335 else { 336 # Append the image list to other objects, in case the WCS information is unpopulated 337 $command .= " -wcsref $tangents{$projection_cell}{image}{NAME} "; 338 } 339 if ($tangents{$projection_cell}{$key}{N} > 0) { 340 print "$command\n"; 341 ( $success, $error_code, $full_buf, $stdout_buf, $stderr_buf ) = run(command => $command, verbose => $verbose); 342 unless ($success) { 343 $error_code = (($error_code >> 8) or $PS_EXIT_PROG_ERROR); 344 # print "Was unable to perform ppSkycell $stage_id $error_code $key\n"; 345 &my_die("unable to perform ppSkycell: $error_code", $stage_id, $error_code); 346 } 335 347 } 336 348 } -
tags/ipp-20130712/ppSkycell/src
- Property svn:mergeinfo set to
-
tags/ipp-20130712/ppSkycell/src/ppSkycell.h
r28375 r35855 11 11 psString imagesName; // Filename with images 12 12 psString masksName; // Filename with masks 13 psString wcsrefName; // Filename with WCS references 13 14 psString outRoot; // Output root name 14 15 int numInputs; // Number of inputs -
tags/ipp-20130712/ppSkycell/src/ppSkycellArguments.c
r23996 r35855 51 51 psMetadataAddStr(arguments, PS_LIST_TAIL, "-images", 0, "Filename with input images", NULL); 52 52 psMetadataAddStr(arguments, PS_LIST_TAIL, "-masks", 0, "Filename with input masks", NULL); 53 psMetadataAddStr(arguments, PS_LIST_TAIL, "-wcsref", 0, "Filename with WCS references", NULL); 53 54 if (argc == 1 || !psArgumentParse(arguments, &argc, argv) || argc != 2) { 54 55 usage(argv[0], arguments, data); … … 57 58 data->imagesName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-images")); 58 59 data->masksName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-masks")); 60 data->wcsrefName = psMemIncrRefCounter(psMetadataLookupStr(NULL, arguments, "-wcsref")); 61 59 62 data->outRoot = psStringCopy(argv[1]); 60 63 -
tags/ipp-20130712/ppSkycell/src/ppSkycellCamera.c
r34800 r35855 73 73 } 74 74 75 psArray *wcsref = NULL; // Names of WCS reference images 76 if (data->wcsrefName) { 77 wcsref = fileList(data->wcsrefName); 78 if (!wcsref) { 79 psError(psErrorCodeLast(), false, "No WCSrefs provided."); 80 psFree(images); 81 psFree(masks); 82 return(false); 83 } 84 if (wcsref->n != data->numInputs) { 85 psError(PS_ERR_BAD_PARAMETER_SIZE, true, "Number of images (%ld) and wcsrefs (%ld) do not match", 86 images->n, wcsref->n); 87 psFree(images); 88 psFree(masks); 89 psFree(wcsref); 90 return(false); 91 } 92 } 93 75 94 psMetadataAddStr(data->config->arguments, PS_LIST_TAIL, "OUTPUT", 0, "Output root", data->outRoot); 76 95 … … 93 112 } 94 113 } 114 115 if (data->wcsrefName) { 116 fileArguments("WCSREF", wcsref->data[i], "Name of the WCS reference", data->config); 117 pmFPAfile *wcsref = pmFPAfileDefineFromArgs(&status, data->config, "PPSKYCELL.WCSREF", "WCSREF"); 118 if (!status || !wcsref) { 119 psError(PS_ERR_IO, false, "Failed to build file from PPSKYCELL.WCSREF"); 120 return(false); 121 } 122 /* if (!pmFPAfileBindFromArgs(&status, image, data->config, "PPSKYCELL.WCSREF", "WCSREF") || !status) { */ 123 /* psError(PS_ERR_IO, false, "Failed to build file from PPSKYCELL.WCSREF"); */ 124 /* return false; */ 125 /* } */ 126 } 127 95 128 } 96 129 -
tags/ipp-20130712/ppSkycell/src/ppSkycellData.c
r24073 r35855 15 15 psFree(data->imagesName); 16 16 psFree(data->masksName); 17 psFree(data->wcsrefName); 17 18 psFree(data->outRoot); 18 19 psFree(data->config); … … 28 29 data->imagesName = NULL; 29 30 data->masksName = NULL; 31 data->wcsrefName = NULL; 30 32 data->outRoot = NULL; 31 33 data->numInputs = 0; -
tags/ipp-20130712/ppSkycell/src/ppSkycellLoop.c
r34800 r35855 10 10 11 11 #define BUFFER 16 // Size of buffer for projections 12 13 #if (0) 14 // This is all junk that is basically useless, because it calculates things we already know. 12 15 13 16 static void regionMinMax(psRegion *base,// Base region; modified … … 22 25 } 23 26 27 24 28 static psRegion *skycellRegion(pmAstromWCS *wcs, // World Coordinate System 25 29 int numCols, int numRows // Size of image … … 34 38 fromCoords->y = (Y); \ 35 39 psPlaneTransformApply(toCoords, wcs->trans, fromCoords); \ 40 printf("%f %f %f %f\n",toCoords->x,toCoords->y,fromCoords->x,fromCoords->y); \ 36 41 toCoords->x /= wcs->cdelt1; \ 37 42 toCoords->y /= wcs->cdelt2; \ 38 toCoords->x += wcs->crpix1;\39 toCoords->y += wcs->crpix2; \43 toCoords->x -= wcs->crpix1; \ 44 toCoords->y += wcs->crpix2; \ 40 45 region->x0 = PS_MAX(region->x0, toCoords->x); \ 41 46 region->x1 = PS_MIN(region->x1, toCoords->x); \ 42 47 region->y0 = PS_MIN(region->y0, toCoords->y); \ 43 48 region->y1 = PS_MAX(region->y1, toCoords->y); 44 49 // 45 50 REGION_RANGE(0, 0); // Lower left 46 51 psTrace("ppSkycell", 9, "Start: %.0f %.0f", toCoords->x, toCoords->y); … … 49 54 REGION_RANGE(numCols, numRows); // Upper right 50 55 psTrace("ppSkycell", 9, "Stop: %.0f %.0f\n", toCoords->x, toCoords->y); 51 56 psTrace("ppSkycell", 7, "%g %g %g %g\n",wcs->cdelt1,wcs->cdelt2,wcs->crpix1,wcs->crpix2); 52 57 return region; 53 58 } 59 #endif 54 60 55 61 // Activate/deactivate a single element for a list … … 150 156 pmAstromWCS *wcs = pmAstromWCSfromHeader(hdu->header); // World Coordinate System 151 157 if (!wcs) { 158 if (data->wcsrefName) { 159 pmFPAfile *wcsref = pmFPAfileSelectSingle(data->config->files, "PPSKYCELL.WCSREF", i); 160 wcs = pmAstromWCSfromHeader(wcsref->fpa->hdu->header); 161 } 162 if (!wcs) { 152 163 psError(psErrorCodeLast(), false, "Unable to read WCS for image %d", i); 153 164 return false; 154 } 155 156 psRegion *region = imageRegions->data[i] = skycellRegion(wcs, numCols, numRows); // Region of image 165 } 166 } 167 168 psRegion *region = psRegionAlloc(-1.0 * wcs->crpix1,numCols - wcs->crpix1, 169 -1.0 * wcs->crpix2,numRows - wcs->crpix2); 170 imageRegions->data[i] = region; 157 171 psTrace("ppSkycell", 5, "Image region %d is: [%.0f:%.0f,%.0f:%.0f]\n", 158 172 i, region->x0, region->x1, region->y0, region->y1); … … 162 176 if (wcs->crval1 == crval1->data.F64[j] && wcs->crval2 == crval2->data.F64[j] && 163 177 wcs->cdelt1 == cdelt1->data.F64[j] && wcs->cdelt2 == cdelt1->data.F64[j]) { 164 regionMinMax(projRegions->data[j], region); 178 // regionMinMax(projRegions->data[j], region); 179 psRegion *proj = projRegions->data[j]; 180 proj->x0 = PS_MIN(region->x0,proj->x0); 181 proj->x1 = PS_MAX(region->x1,proj->x1); 182 proj->y0 = PS_MIN(region->y0,proj->y0); 183 proj->y1 = PS_MAX(region->y1,proj->y1); 165 184 target->data.S32[i] = j; 166 185 found = true; … … 188 207 for (int i = 0; i < numProj; i++) { 189 208 psRegion *projRegion = projRegions->data[i]; // Region for skycell projection 209 // projRegion->x0 += 5760; 210 //projRegion->x1 += 5760; 211 // projRegion->x0 += 212 // projRegion->x1 += 190 213 psTrace("ppSkycell", 2, "Projection %d: [%.0f:%.0f,%.0f:%.0f]\n", 191 214 i, projRegion->x0, projRegion->x1, projRegion->y0, projRegion->y1); 192 int xSize = -projRegion->x1 +projRegion->x0 + 1; // Size of unbinned image215 int xSize = projRegion->x1 - projRegion->x0 + 1; // Size of unbinned image 193 216 int ySize = projRegion->y1 - projRegion->y0 + 1; // Size of unbinned image 194 217 // Size of binned image 1 … … 209 232 psImageInit(mask2, 0xFF); 210 233 } 234 // HDU containing the WCS we plan on using 211 235 pmHDU *projhdu = NULL; 236 237 // Do we need to modify the WCS? This flips to zero after we've done it once. 212 238 int modify_wcs1 = 1; 213 239 int modify_wcs2 = 1; 240 241 // Because we may have holes, we need to ensure that we set the CRPIX in the binned image correction. 242 // Find the minimum/maximum, so we know where the zero is. 243 float maxCRPIX1 = -99e99; 244 float maxCRPIX2 = -99e99; 214 245 // Loop over inputs to this projection. 215 246 for (int j = 0; j < data->numInputs; j++) { … … 229 260 } 230 261 262 // Read the HDU/WCS information from the first entry, and use that as the reference. 231 263 pmFPAfile *file = pmFPAfileSelectSingle(data->config->files, "PPSKYCELL.IMAGE", j); 264 pmAstromWCS *wcs = pmAstromWCSfromHeader(file->fpa->hdu->header); // World Coordinate System 265 if (!wcs) { 266 if (data->wcsrefName) { 267 pmFPAfile *wcsref = pmFPAfileSelectSingle(data->config->files, "PPSKYCELL.WCSREF", j); 268 wcs = pmAstromWCSfromHeader(wcsref->fpa->hdu->header); 269 if (!projhdu) { 270 projhdu = wcsref->fpa->hdu; 271 } 272 } 273 if (!wcs) { 274 psError(psErrorCodeLast(), false, "Unable to read WCS for image %d", j); 275 return false; 276 } 277 } 232 278 if (!projhdu) { 233 279 projhdu = file->fpa->hdu; 234 // psMetadataCopy(projhdu->header,file->fpa->hdu->header); 235 } 236 #if 0 237 else { 238 if ((psMetadataLookupF32(NULL,file->fpa->hdu->header,"CRPIX1") >= 239 psMetadataLookupF32(NULL,projhdu->header,"CRPIX1"))&& 240 (psMetadataLookupF32(NULL,file->fpa->hdu->header,"CRPIX2") >= 241 psMetadataLookupF32(NULL,projhdu->header,"CRPIX1"))) { 242 projhdu = file->fpa->hdu; 243 psMetadataCopy(projhdu->header,file->fpa->hdu->header); 244 } 245 } 246 #endif 247 280 } 281 282 // However, we need to check to see if we've found the maximum CRPIX 283 if (wcs->crpix1 > maxCRPIX1) { 284 maxCRPIX1 = wcs->crpix1; 285 } 286 if (wcs->crpix2 < maxCRPIX2) { 287 maxCRPIX2 = wcs->crpix2; 288 } 289 290 // Actuall do the binning. 248 291 pmReadout *inRO = pmFPAviewThisReadout(view, file->fpa); // Readout with input 249 292 psFree(view); 250 293 251 // data->maskVal = 0xffff;252 294 pmReadout *bin1RO = pmReadoutAlloc(NULL), *bin2RO = pmReadoutAlloc(NULL); // Binned readouts 253 295 if (!pmReadoutRebin(bin1RO, inRO, data->maskVal, data->bin1, data->bin1)) { … … 262 304 } 263 305 306 #if (0) 264 307 psRegion *imageRegion = imageRegions->data[j]; // Region for image 265 // Offsets for image on skycell 266 int xOffset1 = (-imageRegion->x0 + projRegion->x0) / (float)data->bin1; 267 int yOffset1 = (-imageRegion->y1 + projRegion->y1) / (float)data->bin1; 308 fprintf(stderr,"%d IM %f %f %f %f PR %f %f %f %f\n", 309 j, 310 imageRegion->x0,imageRegion->x1, 311 imageRegion->y0,imageRegion->y1, 312 projRegion->x0,projRegion->x1, 313 projRegion->y0,projRegion->y1); 314 #endif 315 // Offsets for image on this projection cell are just differences in CRPIX positions. 316 int xOffset1 = (-1 * wcs->crpix1 - projRegion->x0) / (float)(data->bin1); 317 int yOffset1 = (-1 * wcs->crpix2 - projRegion->y0) / (float)(data->bin1); 318 268 319 int xOffset2 = xOffset1 / (float)data->bin2, yOffset2 = yOffset1 / (float)data->bin2; 320 psTrace("ppSkycell",5,"Offsets: %d %d : %d %d", 321 xOffset1,yOffset1,xOffset2,yOffset2); 322 323 // Overlay the data onto the appropriate pixels in the final outputs 269 324 // XXX Completely neglecting rotations 270 325 // The skycells are divided up neatly with them all having the same orientation … … 276 331 } 277 332 333 // Cleanup on input loop. 278 334 psFree(bin1RO); 279 335 psFree(bin2RO); … … 345 401 WCS->cdelt1 *= cd1f; 346 402 WCS->cdelt2 *= cd2f; 347 WCS->crpix1 = WCS->crpix1 / cd1f; 348 WCS->crpix2 = WCS->crpix2 / cd2f; 403 // Fudge the CRPIX incase we have missing corners 404 if (maxCRPIX1 > WCS->crpix1) { 405 WCS->crpix1 = maxCRPIX1 / cd1f; 406 } 407 else { 408 WCS->crpix1 = WCS->crpix1 / cd1f; 409 } 410 if (maxCRPIX2 > WCS->crpix2) { 411 WCS->crpix2 = maxCRPIX2 / cd2f; 412 } 413 else { 414 WCS->crpix2 = WCS->crpix2 / cd2f; 415 } 349 416 #if WCS_DEBUG 350 417 fprintf(stderr,">>> %d %d (%g %g) (%g %g) (%g %g) %d %d %d %d\n",data->bin1,data->bin2, … … 376 443 } 377 444 pmAstromWCStoHeader (fits1->fpa->hdu->header,WCS); 445 #if WCS_DEBUG 378 446 WCS = pmAstromWCSfromHeader(fits1->fpa->hdu->header); 379 #if WCS_DEBUG380 447 fprintf(stderr,">>> %d %d (%g %g) (%g %g) (%g %g)\n",data->bin1,data->bin2, 381 448 cd1f,cd2f,WCS->cdelt1,WCS->cdelt2, … … 448 515 WCS->crpix2 = WCS->crpix2 / cd2f; 449 516 450 for (int q = 0; q < WCS->trans->x->nX; q++) {451 for (int r = 0; r < WCS->trans->x->nY; r++) {517 for (int q = 0; q <= WCS->trans->x->nX; q++) { 518 for (int r = 0; r <= WCS->trans->x->nY; r++) { 452 519 WCS->trans->x->coeff[q][r] *= pow(cd1f,q) * pow(cd2f,r); 453 520 } 454 521 } 455 for (int q = 0; q < WCS->trans->y->nX; q++) {456 for (int r = 0; r < WCS->trans->y->nY; r++) {522 for (int q = 0; q <= WCS->trans->y->nX; q++) { 523 for (int r = 0; r <= WCS->trans->y->nY; r++) { 457 524 WCS->trans->y->coeff[q][r] *= pow(cd1f,q) * pow(cd2f,r); 458 525 }
Note:
See TracChangeset
for help on using the changeset viewer.
