#!/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