Files
sics/tcl/ritaframe
2006-12-07 14:07:53 +00:00

52 lines
1.4 KiB
Tcl
Executable File

#!/usr/bin/tclsh
#--------------------------------------------------------------------------
# script for extracting a frame of rita data from a file and to dump
# the frame into an ASCII file
#
# Mark Koennecke, November 2006
#-------------------------------------------------------------------------
set loadnx "/afs/psi.ch/project/sinq/sl-linux/lib/"
load [file join $loadnx nxinter.so]
if {$argc < 2} {
puts stdout "Usage:\n\tritaframe filename number"
exit 1
}
set num [lindex $argv 1]
set f [nx_open [lindex $argv 0] $NXACC_READ]
nx_openpath $f /entry1/data/counts
set info [nx_getinfo $f]
set dim1 [expr int([get_nxds_value $info 2])]
set dim2 [expr int([get_nxds_value $info 3])]
set nFrames [expr int([get_nxds_value $info 4])]
if {$num < 0 || $num > $nFrames-1} {
nx_close $f
puts stdout "Requested frame out of range"
exit1
}
set start [create_nxds 1 $NX_INT32 3]
set end [create_nxds 1 $NX_INT32 3]
put_nxds_value $start 0 0
put_nxds_value $start 0 1
put_nxds_value $start $num 2
put_nxds_value $end $dim1 0
put_nxds_value $end $dim2 1
put_nxds_value $end 1 2
set data [nx_getslab $f $start $end]
for {set y 0} {$y < $dim2} {incr y} {
for {set x 0} {$x < $dim1} {incr x} {
set val [expr int([get_nxds_value $data $x $y])]
puts -nonewline stdout [format " %8d" $val]
}
puts stdout ""
}
drop_nxds $start
drop_nxds $end
drop_nxds $data
nx_close $f
exit 0