Oops calling the deleted hlistplainprop function instead of the new hlistprop. sans/config/commands/commands.tcl Set beamstop diameter (BSdiam) when selecting a beamstop sans optics/aperture_configuration.tcl The entrance app is 50mm when guide config is g1 to g9 or p1 to p9 sans parameters.tcl Added GuideConfig parameter to record the last configuration set by SICS. r2870 | ffr | 2010-01-15 18:19:22 +1100 (Fri, 15 Jan 2010) | 12 lines
160 lines
4.4 KiB
Tcl
160 lines
4.4 KiB
Tcl
# TODO Make readonly getset macro for AttFactor
|
|
|
|
##
|
|
# @file The velocity selector position is used as the reference for other instrument
|
|
# component positions. For simplicity we set it as the origin x=y=z=0.
|
|
|
|
##
|
|
# Note EndFacePosY and RotApPosY are surveyed positions
|
|
foreach {var lname type priv units klass} {
|
|
BeamCenterX BeamCenterX float user mm parameter
|
|
BeamCenterZ BeamCenterZ float user mm parameter
|
|
BeamStop BeamStop int user none parameter
|
|
BSdiam BSdiam float user mm parameter
|
|
DetPosYOffset DetPosYOffsetfloat float user mm parameter
|
|
EApPosY EApPosY float user mm parameter
|
|
EndFacePosY EndFacePosY float readonly mm parameter
|
|
GuideConfig GuideConfig text user none parameter
|
|
magnetic_field magnetic_field float user T sample
|
|
RotApPosY RotApPosY float readonly mm @none
|
|
SampleThickness SampleThickness float user mm sample
|
|
SamYOffset SamYOffset float user mm parameter
|
|
Transmission Transmission float user 1 parameter
|
|
TransmissionFlag TransmissionFlag int user none sample
|
|
} {
|
|
::utility::mkVar $var $type $priv $lname true $klass true true
|
|
if {$units != "none"} {
|
|
sicslist setatt $var units $units
|
|
}
|
|
}
|
|
|
|
proc sicsmsgfmt {args} {return "[info level -1] = $args"}
|
|
|
|
::utility::macro::getset float SamplePosYmm {} {
|
|
set sy [SplitReply [samy]]
|
|
set syo [SplitReply [SamYOffset]]
|
|
return [sicsmsgfmt [expr {$sy+$syo}]]
|
|
}
|
|
sicslist setatt SamplePosYmm long_name SamplePosYmm
|
|
sicslist setatt SamplePosYmm klass parameter
|
|
sicslist setatt SamplePosYmm units mm
|
|
|
|
::utility::macro::getset float Plex {} {
|
|
return [sicsmsgfmt [ ::optics::AttRotLookup [SplitReply [att]] ]]
|
|
}
|
|
sicslist setatt Plex units mm
|
|
sicslist setatt Plex long_name Plex
|
|
sicslist setatt Plex klass parameter
|
|
|
|
::utility::macro::getset float EApX {} {
|
|
return [sicsmsgfmt [::optics::EApLookUp [SplitReply [srce]] "size"]]
|
|
}
|
|
sicslist setatt EApX units mm
|
|
sicslist setatt EApX long_name EApX
|
|
sicslist setatt EApX klass parameter
|
|
|
|
::utility::macro::getset float EApZ {} {
|
|
return [sicsmsgfmt [::optics::EApLookUp [SplitReply [srce]] "size"]]
|
|
}
|
|
sicslist setatt EApZ units mm
|
|
sicslist setatt EApZ long_name EApZ
|
|
sicslist setatt EApZ klass parameter
|
|
|
|
::utility::macro::getset text EApShape {} {
|
|
return [sicsmsgfmt [::optics::EApLookUp [SplitReply [srce]] "shape"]]
|
|
}
|
|
sicslist setatt EApShape long_name EApShape
|
|
sicslist setatt EApShape klass parameter
|
|
sicslist setatt EApShape mutable false
|
|
|
|
::utility::macro::getset float L1 {} {
|
|
set efpy [SplitReply [EndFacePosY]]
|
|
set samposy [SplitReply [SamplePosYmm]]
|
|
set eapy [SplitReply [EApPosY]]
|
|
return [sicsmsgfmt [expr {$efpy + $samposy - $eapy}]]
|
|
}
|
|
sicslist setatt L1 long_name L1
|
|
sicslist setatt L1 klass parameter
|
|
sicslist setatt L1 units mm
|
|
|
|
::utility::macro::getset float L2 {} {
|
|
set detpy [SplitReply [det]]
|
|
set detpyos [SplitReply [DetPosYOffset]]
|
|
set sapy [SplitReply [SamplePosYmm]]
|
|
return [sicsmsgfmt [expr {$detpy + $detpyos - $sapy}]]
|
|
}
|
|
sicslist setatt L2 long_name L2
|
|
sicslist setatt L2 klass parameter
|
|
sicslist setatt L2 units mm
|
|
|
|
|
|
################################################################################
|
|
# INITIALISE PARAMETERS
|
|
# The collimation system aperture positions
|
|
# Reference position is outer wall of velocity selector bunker, ie VelSelPosYmm
|
|
array set collapposmm {
|
|
inputguide 633
|
|
apwheel 675
|
|
ap1 4929
|
|
ap2 6934
|
|
ap3 8949
|
|
ap4 10955
|
|
ap5 12943
|
|
ap6 14970
|
|
ap7 16971
|
|
ap9 19925
|
|
}
|
|
|
|
EndFacePosY 20095
|
|
RotApPosY 675
|
|
|
|
################################################################################
|
|
# Check Config
|
|
namespace eval parameters {
|
|
set paramlist {
|
|
AttFactor
|
|
BSdiam
|
|
DetPosYOffset
|
|
EApPosY
|
|
EApShape
|
|
EApX
|
|
EApZ
|
|
EndFacePosY
|
|
L1
|
|
L2
|
|
Plex
|
|
SamYOffset
|
|
SamplePosYmm
|
|
Transmission
|
|
}
|
|
}
|
|
##
|
|
# @brief List undefined parameters
|
|
proc ::parameters::missingparams {} {
|
|
variable paramlist
|
|
set num 0
|
|
foreach param $paramlist {
|
|
if {[sicslist match $param] == " "} {
|
|
clientput $param
|
|
incr num
|
|
}
|
|
}
|
|
if {$num > 0} {
|
|
clientput "There are $num missing parameters"
|
|
} else {
|
|
clientput "OK"
|
|
}
|
|
}
|
|
|
|
##
|
|
# @brief Check list
|
|
proc check {args} {
|
|
switch $args {
|
|
"missing" {
|
|
::parameters::missingparams
|
|
}
|
|
}
|
|
}
|
|
publish check user
|
|
|