52 lines
1.4 KiB
Tcl
Executable File
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
|