Merging release 2.0 branch with CVS trunk
r2601 | ffr | 2008-05-30 10:26:57 +1000 (Fri, 30 May 2008) | 2 lines
This commit is contained in:
committed by
Douglas Clowes
parent
4a937e1608
commit
0749b0effa
294
site_ansto/instrument/sans/config/parameters/parameters.tcl
Normal file
294
site_ansto/instrument/sans/config/parameters/parameters.tcl
Normal file
@@ -0,0 +1,294 @@
|
||||
##
|
||||
# @brief We can't change the coordinate scheme at runtime because this would require
|
||||
# restructuring the hdb tree, but we should save it.
|
||||
foreach {var nxname} {
|
||||
VelSelCoordScheme coordinate_scheme
|
||||
SApCoordScheme coordinate_scheme
|
||||
EApCoordScheme coordinate_scheme
|
||||
SampleCoordScheme coordinate_scheme
|
||||
DetCoordScheme coordinate_scheme
|
||||
BeamstopCoordScheme coordinate_scheme
|
||||
CollCoordScheme coordinate_scheme
|
||||
} {
|
||||
::utility::mkVar $var text readonly $nxname true @none false true
|
||||
$var Cartesian
|
||||
$var lock
|
||||
}
|
||||
|
||||
##
|
||||
# @brief User privilege text variables
|
||||
#
|
||||
# TODO SICS-117 Redo as get/set macros like the "kind=command" macros but kind=getset and it is saveable
|
||||
# The set parameter will have a domain. If the param is readonly then the hdb privilege is readonly
|
||||
# Pros, GumTree will know the data type of the parameter (text params will have a list of valid values).
|
||||
# Cons, There is no "instant" feedback, macros are polled on the hdb tree.
|
||||
foreach {var nxname priv} {
|
||||
EApShape shape user
|
||||
RotApshape shape readonly
|
||||
SApShape shape readonly
|
||||
BSShape shape user
|
||||
} {
|
||||
::utility::mkVar $var text $priv $nxname true @none true true
|
||||
}
|
||||
|
||||
# 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.
|
||||
foreach {var nxname units} {
|
||||
VelSelPosXmm x mm
|
||||
VelSelPosYmm y mm
|
||||
VelSelPosZmm z mm
|
||||
EndFacePosYmm y mm
|
||||
RotApPosYmm y mm
|
||||
} {
|
||||
::utility::mkVar $var float readonly $nxname true @none true true
|
||||
if {$units != 1} {
|
||||
sicslist setatt $var units $units
|
||||
}
|
||||
}
|
||||
|
||||
::utility::mkVar SampleNum int readonly changer_position true sample true true
|
||||
|
||||
foreach {var nxname units priv} {
|
||||
LambdaA wavelength nm user
|
||||
LambdaResFWHM% wavelength_spread 1 user
|
||||
VSdeg twist degrees user
|
||||
VSrpm rotation_speed rpm user
|
||||
AttRotDeg AttRotDeg degrees readonly
|
||||
PleXmm x mm user
|
||||
RotApXmm x mm user
|
||||
RotApZmm z mm user
|
||||
RotApDeg RotApDeg degrees readonly
|
||||
EApXmm x mm user
|
||||
EApYmm y mm user
|
||||
EApZmm z mm user
|
||||
EApPosYmm y mm user
|
||||
SApXmm x mm readonly
|
||||
SApZmm z mm readonly
|
||||
SApPosXmm x mm user
|
||||
SApPosYmm y mm user
|
||||
SApPosZmm z mm user
|
||||
SamplePosXmm x mm user
|
||||
SamplePosYmm y mm user
|
||||
SamplePosZmm z mm user
|
||||
SampleRotDeg SampleRotDeg degrees user
|
||||
SampleTiltXdeg SampleTiltXdeg degrees user
|
||||
SampleTiltYdeg SampleTiltYdeg degrees user
|
||||
DetPosYOffsetmm detposyoffset mm user
|
||||
BSXmm x mm user
|
||||
BSZmm z mm user
|
||||
} {
|
||||
::utility::mkVar $var float $priv $nxname true @none true true
|
||||
if {$units != 1} {
|
||||
sicslist setatt $var units $units
|
||||
}
|
||||
}
|
||||
|
||||
proc sicsmsgfmt {args} {return "[info level -1] = $args"}
|
||||
::utility::macro::getset float L1mm {} {
|
||||
set efpy [SplitReply [EndFacePosYmm]]
|
||||
set sapy [SplitReply [SApPosYmm]]
|
||||
set eapy [SplitReply [EApPosYmm]]
|
||||
return [sicsmsgfmt [expr {$efpy + $sapy - $eapy}]]
|
||||
}
|
||||
sicslist setatt L1mm klass sample
|
||||
sicslist setatt L1mm long_name eap_sap_dist
|
||||
sicslist setatt L1mm units mm
|
||||
|
||||
::utility::macro::getset float L2mm {} {
|
||||
set detpy [SplitReply [DetPosYmm]]
|
||||
set detpyos [SplitReply [DetPosYOffsetmm]]
|
||||
set sapy [SplitReply [SApPosYmm]]
|
||||
return [sicsmsgfmt [expr {$detpyos + $detpyos - $sapy}]]
|
||||
}
|
||||
sicslist setatt L2mm klass detector
|
||||
sicslist setatt L2mm long_name sample_det_dist
|
||||
sicslist setatt L2mm units mm
|
||||
|
||||
foreach {pname motor hdbname units} {
|
||||
DetPosXmm detoff x mm
|
||||
DetPosYmm det y mm
|
||||
BSPosXmm bsx x mm
|
||||
BSPosZmm bsz z mm
|
||||
} {
|
||||
::utility::macro::getset float $pname {} [subst -nocommands {
|
||||
return [sicsmsgfmt [SplitReply [$motor]]]
|
||||
}]
|
||||
sicslist setatt $pname units $units
|
||||
sicslist setatt $pname long_name $hdbname
|
||||
}
|
||||
|
||||
################################################################################
|
||||
##
|
||||
# @brief This is the position of the velocity selector bunker face. It is used
|
||||
# as the reference for other positions. x=y=z=0.
|
||||
::hdb::MakeVelocity_Selector velocity_selector {
|
||||
wavelength LambdaA
|
||||
wavelength_spread LambdaResFWHM%
|
||||
coordinate_scheme VelSelCoordScheme
|
||||
position {VelSelPosXmm VelSelPosYmm VelSelPosZmm}
|
||||
}
|
||||
|
||||
::hdb::MakeAperture sample_aperture {
|
||||
shape SApShape
|
||||
size {SApXmm SApZmm}
|
||||
coordinate_scheme SApCoordScheme
|
||||
position {SApPosXmm SApPosYmm SApPosZmm}
|
||||
refpos {VelSelPosXmm EndFacePosYmm VelSelPosZmm}
|
||||
}
|
||||
|
||||
::hdb::MakeAperture entrance_aperture {
|
||||
shape EApShape
|
||||
size {EApXmm EApYmm EApZmm}
|
||||
coordinate_scheme EApCoordScheme
|
||||
position EApPosYmm
|
||||
refpos VelSelPosYmm
|
||||
}
|
||||
|
||||
::hdb::MakeAperture rotary_aperture {
|
||||
shape RotApShape
|
||||
size {RotApXmm RotApZmm}
|
||||
position RotApPosYmm
|
||||
orientation RotApDeg
|
||||
refpos VelSelPosYmm
|
||||
}
|
||||
|
||||
::hdb::MakeGeometry sample_geometry sample {
|
||||
coordinate_scheme SampleCoordScheme
|
||||
position {SamplePosXmm SamplePosYmm SamplePosZmm}
|
||||
orientation {SampleTiltXdeg SampleTiltYdeg SampleRotDeg}
|
||||
refpos {VelSelPosXmm EndFacePosYmm VelSelPosZmm}
|
||||
}
|
||||
|
||||
::hdb::MakeGeometry detector_geometry detector {
|
||||
coordinate_scheme DetCoordScheme
|
||||
position {DetPosXmm DetPosYmm}
|
||||
offset DetPosYOffsetmm
|
||||
refpos {VelSelPosXmm EndFacePosYmm}
|
||||
}
|
||||
|
||||
::hdb::MakeGeometry collimator_geometry collimator {
|
||||
coordinate_scheme CollCoordScheme
|
||||
position EndFacePosYmm
|
||||
refpos VelSelPosYmm
|
||||
}
|
||||
|
||||
::hdb::MakeGeometry beamstop_geometry beam_stop {
|
||||
shape BSShape
|
||||
position {BSPosXmm BSPosZmm}
|
||||
size {BSXmm BSZmm}
|
||||
}
|
||||
|
||||
# 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
|
||||
}
|
||||
|
||||
VelSelPosXmm 0.0
|
||||
VelSelPosYmm 0.0
|
||||
VelSelPosZmm 0.0
|
||||
EndFacePosYmm 20095
|
||||
RotApPosYmm 675
|
||||
|
||||
################################################################################
|
||||
# Check Config
|
||||
|
||||
##
|
||||
# @brief List undefined parameters
|
||||
proc missingparams {} {
|
||||
set paramlist {
|
||||
AttFactor
|
||||
AttRotDeg
|
||||
BS1
|
||||
BS2
|
||||
BS3
|
||||
BS4
|
||||
BS5
|
||||
BSPosXmm
|
||||
BSPosZmm
|
||||
BSShape
|
||||
BSXmm
|
||||
BSZmm
|
||||
C1
|
||||
C2
|
||||
C3
|
||||
C4
|
||||
C5
|
||||
C6
|
||||
C7
|
||||
C8
|
||||
C9
|
||||
DetPosXmm
|
||||
DetPosYmm
|
||||
DetPosYmm
|
||||
DetPosYOffsetmm
|
||||
EApPosYmm
|
||||
EApShape
|
||||
EApXmm
|
||||
EApYmm
|
||||
EApZmm
|
||||
EndFacePosYmm
|
||||
L1mm
|
||||
L2mm
|
||||
LambdaA
|
||||
LambdaResFWHM%
|
||||
Pent
|
||||
Plexmm
|
||||
RotApDeg
|
||||
RotApShape
|
||||
RotApXmm
|
||||
RotApZmm
|
||||
SampleAttributes
|
||||
SampleComments
|
||||
SampleName
|
||||
SampleNum
|
||||
SamplePosXmm
|
||||
SamplePosYmm
|
||||
SamplePosYmm
|
||||
SamplePosZmm
|
||||
SampleRotDeg
|
||||
SampleTiltXDeg
|
||||
SampleTiltYDeg
|
||||
SampleTitle
|
||||
SApPosXmm
|
||||
SApPosYmm
|
||||
SApPosYmm
|
||||
SApPosZmm
|
||||
SApShape
|
||||
SApXmm
|
||||
SApZmm
|
||||
VSdeg
|
||||
VSrpm
|
||||
}
|
||||
set num 0
|
||||
foreach param $paramlist {
|
||||
if {[sicslist match $param] == " "} {
|
||||
clientput $param
|
||||
incr num
|
||||
}
|
||||
}
|
||||
if {$num > 0} {
|
||||
clientput "There are $num missing parameters"
|
||||
}
|
||||
}
|
||||
|
||||
##
|
||||
# @brief Check list
|
||||
proc check {args} {
|
||||
switch $args {
|
||||
"missing" {
|
||||
missingparams
|
||||
}
|
||||
}
|
||||
}
|
||||
publish check user
|
||||
Reference in New Issue
Block a user