Create single entry nexus files for scans with instrument state in 1D arrays indexed by scan point.
Use putslab and sics data objects to grow arrays. r1725 | ffr | 2007-03-27 08:04:19 +1000 (Tue, 27 Mar 2007) | 3 lines
This commit is contained in:
committed by
Douglas Clowes
parent
6921d0426c
commit
d49a7be3bb
@@ -2,6 +2,7 @@
|
||||
# with filename
|
||||
|
||||
MakeNXScript
|
||||
sicsdatafactory new nxscript_data
|
||||
|
||||
proc getVal {msg} {
|
||||
return [string trim [lindex [split $msg =] 1 ] ]
|
||||
@@ -67,11 +68,11 @@ proc det_height_arr {active_height_mm row_zero dim0} {
|
||||
}
|
||||
}
|
||||
|
||||
proc hmm_save {nxobj entryname} {
|
||||
proc hmm_save {nxobj entryname point} {
|
||||
global dradius ndect angsep;
|
||||
set dim0 [SplitReply [hmm configure dim0]];
|
||||
set dim1 [SplitReply [hmm configure dim1]];
|
||||
putcommon $nxobj $entryname;
|
||||
putcommon $nxobj $entryname $point;
|
||||
putcrystal $nxobj;
|
||||
putmonitor $nxobj;
|
||||
putsample $nxobj;
|
||||
@@ -88,52 +89,64 @@ proc hmm_save {nxobj entryname} {
|
||||
$nxobj makelink scanvertaxis dvaxis
|
||||
}
|
||||
|
||||
proc hmm_addnxscanentry {nxobj entryname scanVariable scanVarPos scanVarStep start_time} {
|
||||
proc hmm_addnxscanentry {nxobj entryname point scanVariable scanVarPos scanVarStep start_time} {
|
||||
$nxobj puttext estart $start_time
|
||||
$nxobj updatedictvar scan_variable $scanVariable
|
||||
|
||||
set scanVar_value [string trim [lindex [split [$scanVariable] =] 1]]
|
||||
$nxobj updatedictvar scanvar_name $scanVariable
|
||||
$nxobj updatedictvar scanvar_units [SplitReply [$scanVariable units]]
|
||||
#TODO $nxobj updatedictvar scanvar_units [SplitReply [$scanVariable units]]
|
||||
$nxobj updatedictvar scanvar_units "unknown"
|
||||
$nxobj updatedictvar scanvar_longname $scanVariable
|
||||
$nxobj putfloat scanvar $scanVar_value
|
||||
$nxobj putfloat scanstep $scanVarStep
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 $scanVar_value
|
||||
$nxobj putslab scanvar [list $point] [list 1] nxscript_data
|
||||
# $nxobj putfloat scanstep $scanVarStep
|
||||
|
||||
hmm_save $nxobj $entryname;
|
||||
hmm_save $nxobj $entryname $point;
|
||||
$nxobj puttext eend [sicstime];
|
||||
}
|
||||
|
||||
#TODO Refactor: Add bm_save command and use it here.
|
||||
proc bm_addnxscanentry {nxobj entryname scanVariable scanVarPos scanVarStep start_time} {
|
||||
proc bm_save {nxobj entryname point} {
|
||||
global dradius ndect angsep;
|
||||
$nxobj updatedictvar scan_variable $scanVariable;
|
||||
putcommon $nxobj $entryname
|
||||
# $nxobj updatedictvar scan_variable $scanVariable;
|
||||
putcommon $nxobj $entryname $point
|
||||
putcrystal $nxobj
|
||||
putmonitor $nxobj
|
||||
putmonitor $nxobj $point
|
||||
putsample $nxobj
|
||||
$nxobj puttext dlayout point
|
||||
$nxobj makelink scandata dcounts
|
||||
}
|
||||
|
||||
#TODO Refactor: Add bm_save command and use it here.
|
||||
proc bm_addnxscanentry {nxobj entryname point scanVariable scanVarPos scanVarStep start_time} {
|
||||
$nxobj puttext estart $start_time
|
||||
|
||||
set scanVar_value [string trim [lindex [split [$scanVariable] =] 1]]
|
||||
$nxobj updatedictvar scanvar_name $scanVariable
|
||||
#TODO $nxobj updatedictvar scanvar_units [SplitReply [$scanVariable units]]
|
||||
$nxobj updatedictvar scanvar_units "unknown"
|
||||
|
||||
$nxobj updatedictvar scanvar_units "unknown"
|
||||
$nxobj updatedictvar scanvar_longname $scanVariable
|
||||
$nxobj putfloat scanvar $scanVar_value
|
||||
$nxobj putfloat scanstep $scanVarStep
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 $scanVar_value
|
||||
$nxobj putslab scanvar [list $point] [list 1] nxscript_data
|
||||
bm_save $nxobj $entryname $point
|
||||
# $nxobj putfloat scanstep $scanVarStep
|
||||
# Add thetamin and stth to tharr(i)
|
||||
# $nxobj puttext dtype He-3 position sensitive detector, tube active length=335+/-5mm, tube diameter=25.4 +/- 0.8mm
|
||||
# $nxobj puttext ddesc 128 He-3 proportional counter detector tubes (GE Energy Reuter Stokes Inc. item=RS-P4-0814-217)
|
||||
# $nxobj putfloat dradius $dradius
|
||||
$nxobj puttext estart $start_time
|
||||
#TODO add dtype ddesc
|
||||
$nxobj puttext dlayout point
|
||||
$nxobj makelink scandata mdata
|
||||
$nxobj puttext eend [sicstime];
|
||||
}
|
||||
|
||||
proc putmonitor {nxobj} {
|
||||
proc putmonitor {nxobj point} {
|
||||
$nxobj puttext mmode [string trim [lindex [split [bm getmode] =] 1]]
|
||||
$nxobj putfloat mpreset [string trim [lindex [split [bm getpreset] =] 1]]
|
||||
$nxobj putint mdata [string trim [lindex [split [bm getcounts] =] 1]]
|
||||
# $nxobj putint mdata [string trim [lindex [split [bm getcounts] =] 1]]
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 [SplitReply [bm getcounts]]
|
||||
$nxobj putslab dcounts [list $point] [list 1] nxscript_data
|
||||
$nxobj putfloat mdistance [SplitReply [bmon_distance]]
|
||||
}
|
||||
|
||||
@@ -168,7 +181,7 @@ proc putcrystal {nxobj} {
|
||||
$nxobj puttext ctype [SplitReply [crystal_type]]
|
||||
$nxobj putfloat clambda [SplitReply [crystal_wavelength_A]]
|
||||
}
|
||||
proc putcommon {nxobj entryName} {
|
||||
proc putcommon {nxobj entryName point} {
|
||||
$nxobj updatedictvar entryName $entryName
|
||||
$nxobj puttext etitle [getVal [Title]]
|
||||
$nxobj puttext iname [getVal [Instrument]]
|
||||
@@ -180,42 +193,54 @@ proc putcommon {nxobj entryName} {
|
||||
$nxobj puttext sname OPAL
|
||||
$nxobj puttext stype Reactor Neutron Source
|
||||
$nxobj puttext sprobe Neutron
|
||||
putsamplemotors $nxobj
|
||||
putslitmotors $nxobj
|
||||
putmonomotors $nxobj
|
||||
putsamplemotors $nxobj $point
|
||||
putslitmotors $nxobj $point
|
||||
putmonomotors $nxobj $point
|
||||
}
|
||||
|
||||
proc putsamplemotors {nxobj} {
|
||||
proc putsamplemotors {nxobj point} {
|
||||
foreach motor { som schi sphi sx sy stth } {
|
||||
$nxobj updatedictvar mot_name $motor;
|
||||
$nxobj updatedictvar mot_long_name $motor;
|
||||
$nxobj updatedictvar mot_units [SplitReply [$motor units]];
|
||||
$nxobj putfloat nxsample_mot [getVal [$motor] ];
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 [getVal [$motor] ]
|
||||
$nxobj putslab nxsample_mot [list $point] [list 1] nxscript_data;
|
||||
}
|
||||
# sth is a virtual motor
|
||||
$nxobj putfloat sth [getVal [sth ]];
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 [getVal [sth ]]
|
||||
$nxobj putslab sth [list $point] [list 1] nxscript_data;
|
||||
}
|
||||
|
||||
proc putmonomotors {nxobj} {
|
||||
proc putmonomotors {nxobj point} {
|
||||
foreach motor { mom mchi mphi mx my mtth } {
|
||||
$nxobj updatedictvar mot_name $motor;
|
||||
$nxobj updatedictvar mot_long_name $motor;
|
||||
$nxobj updatedictvar mot_units [SplitReply [$motor units]];
|
||||
$nxobj putfloat nxcrystal_mot [getVal [$motor] ];
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 [getVal [$motor] ]
|
||||
$nxobj putslab nxcrystal_mot [list $point] [list 1] nxscript_data;
|
||||
}
|
||||
# mth is a virtual motor
|
||||
$nxobj putfloat mth [getVal [mth ]];
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 [getVal [mth ]]
|
||||
$nxobj putslab mth [list $point] [list 1] nxscript_data;
|
||||
}
|
||||
|
||||
proc putslitmotors {nxobj} {
|
||||
proc putslitmotors {nxobj point} {
|
||||
foreach motor {ss1u ss1d ss1l ss1r ss2u ss2d ss2l ss2r } {
|
||||
$nxobj updatedictvar mot_name $motor;
|
||||
$nxobj updatedictvar mot_long_name $motor;
|
||||
$nxobj updatedictvar mot_units [SplitReply [$motor units]];
|
||||
$nxobj putfloat nxfilter_mot [getVal [$motor] ];
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 [getVal [$motor] ]
|
||||
$nxobj putslab nxfilter_mot [list $point] [list 1] nxscript_data;
|
||||
}
|
||||
foreach motor {ss1vg ss1vo ss1hg ss1ho ss2vg ss2vo ss2hg ss2ho } {
|
||||
$nxobj putfloat $motor [getVal [$motor] ];
|
||||
nxscript_data clear
|
||||
nxscript_data putfloat 0 [getVal [$motor] ]
|
||||
$nxobj putslab $motor [list $point] [list 1] nxscript_data;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user