diff options
Diffstat (limited to 'ds9/library/markeranalysisradial.tcl')
-rw-r--r-- | ds9/library/markeranalysisradial.tcl | 177 |
1 files changed, 177 insertions, 0 deletions
diff --git a/ds9/library/markeranalysisradial.tcl b/ds9/library/markeranalysisradial.tcl new file mode 100644 index 0000000..7eb2f3d --- /dev/null +++ b/ds9/library/markeranalysisradial.tcl @@ -0,0 +1,177 @@ +# Copyright (C) 1999-2016 +# Smithsonian Astrophysical Observatory, Cambridge, MA, USA +# For conditions of distribution and use, see copyright notice in "copyright" + +package provide DS9 1.0 + +proc MarkerAnalysisRadialDialog {varname} { + upvar #0 $varname var + global $varname + + global imarker + + set id $var(id) + set frame $var(frame) + + set vvarname ${imarker(prefix,radial)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + set var(radial) [info exists ${vvarname}(top)] + + $var(mb).analysis add checkbutton -label [msgcat::mc {Radial Profile}] \ + -variable ${varname}(radial) \ + -command "MarkerAnalysisRadialCmd $varname" +} + +proc MarkerAnalysisRadialCmd {varname} { + upvar #0 $varname var + global $varname + + MarkerAnalysisRadial $var(frame) $var(id) $var(radial) +} + +proc MarkerAnalysisRadial {frame id radial} { + global imarker + + $frame marker $id analysis radial $radial + if {$radial} { + MarkerAnalysisRadialCB $frame $id + + set vvarname ${imarker(prefix,radial)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + PlotRaise $vvarname + } else { + MarkerAnalysisRadialDeleteCB $frame $id + } +} + +proc MarkerAnalysisRadialSystem {varname} { + upvar #0 $varname var + global $varname + + global imarker + + set frame $var(frame) + set id $var(id) + + set vvarname ${imarker(prefix,radial)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + if {[info exists var(radial)]} { + if {$var(radial)} { + MarkerAnalysisRadialCB $var(frame) $var(id) + MarkerAnalysisRadialAxisTitle $vvarname + } + } +} + +# hardcoded marker.C +proc MarkerAnalysisRadialCB {frame id} { + global imarker + + set varname ${imarker(prefix,dialog)}${id}${frame} + global $varname + upvar #0 $varname var + + set vvarname ${imarker(prefix,radial)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + set vvar(frame) $frame + set vvar(id) $id + + if {[info exists var(system)]} { + set vvar(system) $var(system) + set sys $var(system) + } elseif {[info exists vvar(system)]} { + set sys $vvar(system) + } else { + global wcs + set vvar(system) $wcs(system) + set sys $wcs(system) + } + + set xdata ${imarker(prefix,radial)}${id}${frame}x + set ydata ${imarker(prefix,radial)}${id}${frame}y + set yedata ${imarker(prefix,radial)}${id}${frame}ye + global $xdata $ydata $yedata + + set ping [PlotPing $vvarname] + + if {!$ping} { + set tt [string totitle [$frame get marker $id type]] + PlotLineDialog $vvarname $tt "Radial Profile" $sys {} + MarkerAnalysisRadialAxisTitle $vvarname + + set vvar(manage) 0 + set vvar(dim) xyey + set vvar(xdata) $xdata + set vvar(ydata) $ydata + set vvar(yedata) $yedata + blt::vector create $xdata $ydata $yedata + } + + $frame get marker $id analysis radial $xdata $ydata $yedata $sys + + if {!$ping} { + PlotExternal $vvarname + $vvar(proc,updateelement) $vvarname + $vvar(proc,updategraph) $vvarname + } + + PlotStats $vvarname + PlotList $vvarname +} + +proc MarkerAnalysisRadialDeleteCB {frame id} { + # this routine could be called by the region + # after the dialog has been deleted + + global imarker + + set vvarname ${imarker(prefix,radial)}${id}${frame} + upvar #0 $vvarname vvar + global $vvarname + + # clear any errors + global errorInfo + set errorInfo {} + + PlotDestroy $vvarname +} + +proc MarkerAnalysisRadialAxisTitle {vvarname} { + upvar #0 $vvarname vvar + global $vvarname + + switch -- $vvar(system) { + image - + physical - + amplifier - + detector { + set xtitle "Avg Radius (pixels)" + set ytitle "Surface Brightness (cnts/pixels**2)" + } + default { + if {[$vvar(frame) has wcs equatorial $vvar(system)]} { + set xtitle "Avg Radius (arcsecs)" + set ytitle "Surface Brightness (cnts/arcsec**2)" + } else { + set xtitle "Avg Radius (pixels)" + set ytitle "Surface Brightness (cnts/pixels**2)" + } + } + } + + # set for plot code + set vvar(axis,x,title) $xtitle + set vvar(axis,y,title) $ytitle + + # update now (may not make it into plot code) + $vvar(graph) xaxis configure -title $xtitle + $vvar(graph) yaxis configure -title $ytitle +} |