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
@@ -1,6 +1,7 @@
|
||||
#----------------- NXmonitor
|
||||
mmode=/$(entryName),NXentry/monitor,NXmonitor/SDS mode -type NX_CHAR
|
||||
mpreset=/$(entryName),NXentry/monitor,NXmonitor/SDS preset -type NX_FLOAT32
|
||||
mdata=/$(entryName),NXentry/monitor,NXmonitor/SDS data -type NX_INT32
|
||||
dcounts=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS \
|
||||
data -type NX_FLOAT32 -LZW -rank 1 -dim {-1} -attr {signal,1}
|
||||
mdistance=/$(entryName),NXentry/monitor,NXmonitor/SDS distance -type NX_FLOAT32 -attr {units,metre}
|
||||
dlayout=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS layout -type NX_CHAR
|
||||
|
||||
@@ -4,9 +4,9 @@ scanvar_longname=xxx
|
||||
|
||||
#----------------NXdata ------------------------------------------------
|
||||
|
||||
scandata=/$(entryName),NXentry/scan_data,NXdata/NXVGROUP
|
||||
scandata=/$(entryName),NXentry/data,NXdata/NXVGROUP
|
||||
scanvertaxis=/$(entryName),NXentry/vertical_axis,NXdata/NXVGROUP
|
||||
scanvar=/$(entryName),NXentry/scan_variable,NXdata/SDS $(scanvar_name) -type NX_FLOAT32 -attr {units,$(scanvar_units)} -attr {long_name,$(scanvar_longname)}
|
||||
scanvar=/$(entryName),NXentry/data,NXdata/SDS $(scanvar_name) -type NX_FLOAT32 -attr {units,$(scanvar_units)} -attr {long_name,$(scanvar_longname)} -rank 1 -dim {-1} -attr {axis,1}
|
||||
scanstep=/$(entryName),NXentry/scan_step,NXdata/SDS value -type NX_FLOAT32 -attr {units,degree} -attr {long_name,stepsize}
|
||||
#histogram=/$(entryName),NXentry/histogram,NXdata/NXVGROUP
|
||||
#scanvar=/$(entryName),NXentry/$(scan_variable),NXdata/NXVGROUP
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -102,7 +102,8 @@ variable scanVariable scan_var scanVarStart 0 scanVarStep 1
|
||||
|
||||
set scanVarPos [expr {$scanVarStart + $point * $scanVarStep} ];
|
||||
nxreopenfile;
|
||||
$nxentryCmd nxscript scan_[format "%05d" $point] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
|
||||
# $nxentryCmd nxscript scan_[format "%05d" $point] $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
|
||||
$nxentryCmd nxscript entry1 $point $scanVariable $scanVarPos $scanVarStep $scan_pt_start_time;
|
||||
nxclosefile;
|
||||
}
|
||||
|
||||
|
||||
@@ -2,21 +2,21 @@ mot_name=xxx
|
||||
mot_units=xxx
|
||||
mot_long_name=xxx
|
||||
#--------------- NXmonochromator
|
||||
nxcrystal_mot=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)}
|
||||
nxcrystal_mot=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS $(mot_name) -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)}
|
||||
#XXX add units command to configurable virtual motors.
|
||||
mth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS mth -type NX_FLOAT32 -attr {units,degrees} -attr {long_name,mono_theta}
|
||||
mth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS mth -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,degrees} -attr {long_name,mono_theta}
|
||||
#--------------- NXsample
|
||||
nxsample_mot=/$(entryName),NXentry/sample,NXsample/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)}
|
||||
nxsample_mot=/$(entryName),NXentry/sample,NXsample/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -rank 1 -dim {-1} -attr {long_name,$(mot_long_name)}
|
||||
#XXX add units command to configurable virtual motors.
|
||||
sth=/$(entryName),NXentry/sample,NXsample/SDS sth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,sth}
|
||||
sth=/$(entryName),NXentry/sample,NXsample/SDS sth -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,degree} -attr {long_name,sth}
|
||||
# Slit motors
|
||||
nxfilter_mot=/$(entryName),NXentry/slits,NXfilter/SDS $(mot_name) -type NX_FLOAT32 -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)}
|
||||
nxfilter_mot=/$(entryName),NXentry/slits,NXfilter/SDS $(mot_name) -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,$(mot_units)} -attr {long_name,$(mot_long_name)}
|
||||
#XXX add units command to configurable virtual motors.
|
||||
ss1vg=/$(entryName),NXentry/slits,NXfilter/SDS ss1vg -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss1vg}
|
||||
ss1vo=/$(entryName),NXentry/slits,NXfilter/SDS ss1vo -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss1vo}
|
||||
ss1hg=/$(entryName),NXentry/slits,NXfilter/SDS ss1hg -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss1hg}
|
||||
ss1ho=/$(entryName),NXentry/slits,NXfilter/SDS ss1ho -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss1ho}
|
||||
ss2vg=/$(entryName),NXentry/slits,NXfilter/SDS ss2vg -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss2vg}
|
||||
ss2vo=/$(entryName),NXentry/slits,NXfilter/SDS ss2vo -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss2vo}
|
||||
ss2hg=/$(entryName),NXentry/slits,NXfilter/SDS ss2hg -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss2hg}
|
||||
ss2ho=/$(entryName),NXentry/slits,NXfilter/SDS ss2ho -type NX_FLOAT32 -attr {units,mm} -attr {long_name,ss2ho}
|
||||
ss1vg=/$(entryName),NXentry/slits,NXfilter/SDS ss1vg -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss1vg}
|
||||
ss1vo=/$(entryName),NXentry/slits,NXfilter/SDS ss1vo -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss1vo}
|
||||
ss1hg=/$(entryName),NXentry/slits,NXfilter/SDS ss1hg -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss1hg}
|
||||
ss1ho=/$(entryName),NXentry/slits,NXfilter/SDS ss1ho -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss1ho}
|
||||
ss2vg=/$(entryName),NXentry/slits,NXfilter/SDS ss2vg -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss2vg}
|
||||
ss2vo=/$(entryName),NXentry/slits,NXfilter/SDS ss2vo -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss2vo}
|
||||
ss2hg=/$(entryName),NXentry/slits,NXfilter/SDS ss2hg -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss2hg}
|
||||
ss2ho=/$(entryName),NXentry/slits,NXfilter/SDS ss2ho -type NX_FLOAT32 -rank 1 -dim {-1} -attr {units,mm} -attr {long_name,ss2ho}
|
||||
|
||||
Reference in New Issue
Block a user