histmem.c
sicvar.c SICS-93 Save histogram data and instrument state during an acquisition hipadaba_configuration_common.tcl SICS-185 Preserve case on hdb node names hmm_configuration_common_1.tcl nxscripts_common_1.tcl sicvar.c SICS-174 Allow saving of histmem data and instrument status during a count operation. wombat_configuration.tcl echidna_configuration.tcl platypus_configuration.tcl kowari_configuration.tcl quokka_configuration.tcl SICS-153 Move setup of statemon to new server_init function for the new sics_uid state variable server_config.tcl SICS-153 set attributes on the sics_suid var which is now created by MakeStateMon SICS-187 Add cold source info (TODO move to platypus,quokka and pelican configs) utility.tcl SICS-185 Added normalgetatt to preserve case on hdb node names etc. sans/config/optics/aperture_configuration.tcl New file, Provides lookup tables for attenuation and entrance apertures. (SICS-157) sans/config/optics/optics.tcl Load the new aperture_configuration.tcl sans/config/parameters/parameters.tcl SICS-157 Add instrument parameters section with derived parameters and their dependencies statemon.c SICS-153 Create sics_suid sicsvariable when loading statemon and increment it on each status change. r2635 | ffr | 2008-06-23 12:41:12 +1000 (Mon, 23 Jun 2008) | 38 lines
This commit is contained in:
committed by
Douglas Clowes
parent
eea4d4d9eb
commit
ef7c2a6f87
@@ -1,16 +1,16 @@
|
||||
##
|
||||
# @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
|
||||
foreach {var lname nxname} {
|
||||
VelSelCoordScheme VelSelCoordScheme coordinate_scheme
|
||||
SApCoordScheme SApCoordScheme coordinate_scheme
|
||||
EApCoordScheme EApCoordScheme coordinate_scheme
|
||||
SampleCoordScheme SampleCoordScheme coordinate_scheme
|
||||
DetCoordScheme DetCoordScheme coordinate_scheme
|
||||
BeamstopCoordScheme BeamstopCoordScheme coordinate_scheme
|
||||
CollCoordScheme CollCoordScheme coordinate_scheme
|
||||
} {
|
||||
::utility::mkVar $var text readonly $var true @none false true
|
||||
::utility::mkVar $var text readonly $lname true @none false true
|
||||
$var Cartesian
|
||||
$var lock
|
||||
}
|
||||
@@ -22,68 +22,73 @@ foreach {var nxname} {
|
||||
# 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
|
||||
foreach {var lname nxname priv klass} {
|
||||
SApShape SApShape shape user parameter
|
||||
BSShape BSShape shape user parameter
|
||||
} {
|
||||
::utility::mkVar $var text $priv $var true @none true true
|
||||
::utility::mkVar $var text $priv $lname true $klass 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
|
||||
foreach {var lname nxname units klass} {
|
||||
VelSelPosXmm VelSelPosXmm x mm @none
|
||||
VelSelPosYmm VelSelPosYmm y mm @none
|
||||
VelSelPosZmm VelSelPosZmm z mm @none
|
||||
EndFacePosYmm EndFacePosYmm y mm parameter
|
||||
RotApPosYmm RotApPosYmm y mm @none
|
||||
} {
|
||||
::utility::mkVar $var float readonly $var true @none true true
|
||||
::utility::mkVar $var float readonly $lname true $klass true true
|
||||
if {$units != 1} {
|
||||
sicslist setatt $var units $units
|
||||
}
|
||||
}
|
||||
|
||||
::utility::mkVar SampleNum int readonly changer_position true sample true true
|
||||
::utility::mkVar SampleNum int readonly changer_position true parameter 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
|
||||
AttFactor attenuation_factor 1 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
|
||||
# Parameter SicsVariables
|
||||
foreach {var lname nxname units priv } {
|
||||
LambdaA LambdaA wavelength nm user
|
||||
LambdaResFWHM% LambdaResFWHM% wavelength_spread 1 user
|
||||
VSdeg VSdeg twist degrees user
|
||||
VSrpm VSrpm rotation_speed rpm user
|
||||
EApYmm EApYmm y mm user
|
||||
EApPosYmm EApPosYmm y mm user
|
||||
SApXmm SApXmm x mm user
|
||||
SApZmm SApZmm z mm user
|
||||
SApPosXmm SApPosXmm x mm user
|
||||
SApPosYmm SApPosYmm y mm user
|
||||
SApPosZmm SApPosZmm z mm user
|
||||
SamplePosXmm SamplePosXmm x mm user
|
||||
SamplePosYmm SamplePosYmm y mm user
|
||||
SamplePosZmm SamplePosZmm z mm user
|
||||
DetPosYOffsetmm DetPosYOffsetmm detposyoffset mm user
|
||||
BSXmm BSXmm x mm user
|
||||
BSZmm BSZmm z mm user
|
||||
} {
|
||||
::utility::mkVar $var float $priv $var true @none true true
|
||||
::utility::mkVar $var float $priv $lname true parameter true true
|
||||
if {$units != 1} {
|
||||
sicslist setatt $var units $units
|
||||
}
|
||||
}
|
||||
|
||||
# Derived Parameter SicsVariables
|
||||
foreach {var type lname units depends} {
|
||||
AttFactor float AttFactor 1 AttRotDeg,LambdaA,LambdaResFWHM%
|
||||
PleXmm float PleXmm mm AttRotDeg
|
||||
EApXmm float EApXmm mm RotApDeg
|
||||
EApZmm float EApZmm mm RotApDeg
|
||||
RotApXmm float RotApXmm mm RotApDeg
|
||||
RotApZmm float RotApZmm mm RotApDeg
|
||||
EApShape text EApShape 1 RotApDeg
|
||||
RotApShape text RotApShape 1 RotApDeg
|
||||
} {
|
||||
::utility::mkVar $var $type user $lname true derived_parameter true true
|
||||
sicslist setatt $var depends $depends
|
||||
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]]
|
||||
@@ -91,9 +96,10 @@ proc sicsmsgfmt {args} {return "[info level -1] = $args"}
|
||||
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 long_name L1mm
|
||||
sicslist setatt L1mm klass derived_parameter
|
||||
sicslist setatt L1mm units mm
|
||||
sicslist setatt L1mm depends EndFacePosYmm,SApPosYmm,EApPosYmm
|
||||
|
||||
::utility::macro::getset float L2mm {} {
|
||||
set detpy [SplitReply [DetPosYmm]]
|
||||
@@ -101,23 +107,92 @@ sicslist setatt L1mm units mm
|
||||
set sapy [SplitReply [SamplePosYmm]]
|
||||
return [sicsmsgfmt [expr {$detpyos + $detpyos - $sapy}]]
|
||||
}
|
||||
sicslist setatt L2mm klass detector
|
||||
sicslist setatt L2mm long_name sample_det_dist
|
||||
sicslist setatt L2mm long_name L2mm
|
||||
sicslist setatt L2mm klass derived_parameter
|
||||
sicslist setatt L2mm units mm
|
||||
sicslist setatt L2mm depends DetPosYmm,DetPosYOffsetmm,SamplePosYmm
|
||||
|
||||
foreach {pname motor hdbname units} {
|
||||
DetPosXmm detoff x mm
|
||||
DetPosYmm det y mm
|
||||
BSPosXmm bsx x mm
|
||||
BSPosZmm bsz z mm
|
||||
# Derive motor parameters
|
||||
foreach {pname motor units} {
|
||||
DetPosXmm detoff mm
|
||||
DetPosYmm det mm
|
||||
BSPosXmm bsx mm
|
||||
BSPosZmm bsz mm
|
||||
SampleTiltXDeg samphi degrees
|
||||
SampleTiltYDeg samchi degrees
|
||||
SampleRotDeg samthet degrees
|
||||
} {
|
||||
::utility::macro::getset float $pname {} [subst -nocommands {
|
||||
return [sicsmsgfmt [SplitReply [$motor]]]
|
||||
}]
|
||||
sicslist setatt $pname units $units
|
||||
sicslist setatt $pname long_name $pname
|
||||
sicslist setatt $pname long_name $pname
|
||||
sicslist setatt $pname klass derived_parameter
|
||||
sicslist setatt $pname depends $motor
|
||||
}
|
||||
|
||||
foreach {pname motor units} {
|
||||
AttRotDeg att degrees
|
||||
} {
|
||||
::utility::macro::getset float $pname {args} [subst -nocommands {
|
||||
# TODO AttFactor
|
||||
if {[set args] == ""} {
|
||||
return [sicsmsgfmt [SplitReply [$motor]]]
|
||||
} else {
|
||||
set target [lindex [set args] 0]
|
||||
Plexmm -1
|
||||
drive $motor \$target
|
||||
set motpos [SplitReply [$motor]]
|
||||
set tolerance [SplitReply [$motor precision] ]
|
||||
if {[expr abs(\$motpos - \$target)] > \$tolerance} {
|
||||
error "ERROR: failed to set $pname target \$target"
|
||||
} else {
|
||||
Plexmm [::optics::AttRotLookup \$target]
|
||||
}
|
||||
}
|
||||
}]
|
||||
sicslist setatt $pname units $units
|
||||
sicslist setatt $pname long_name $pname
|
||||
sicslist setatt $pname klass derived_parameter
|
||||
sicslist setatt $pname depends $motor
|
||||
}
|
||||
|
||||
foreach {pname motor units} {
|
||||
RotApDeg srce degrees
|
||||
} {
|
||||
::utility::macro::getset float $pname {args} [subst -nocommands {
|
||||
if {[set args] == ""} {
|
||||
return [sicsmsgfmt [SplitReply [$motor]]]
|
||||
} else {
|
||||
set target [lindex [set args] 0]
|
||||
RotApXmm 0
|
||||
RotApZmm 0
|
||||
RotApShape "UNKNOWN"
|
||||
EApXmm 0
|
||||
EApZmm 0
|
||||
EApShape "UNKNOWN"
|
||||
drive $motor \$target
|
||||
set motpos [SplitReply [$motor]]
|
||||
set tolerance [SplitReply [$motor precision] ]
|
||||
if {[expr abs(\$motpos - \$target)] > \$tolerance} {
|
||||
error "ERROR: failed to set $pname target \$target"
|
||||
} else {
|
||||
set size [::optics::EApLookUp \$target "size"]
|
||||
set shape [::optics::EApLookUp \$target "shape"]
|
||||
RotApXmm \$size
|
||||
RotApZmm \$size
|
||||
RotApShape \$shape
|
||||
EApXmm \$size
|
||||
EApZmm \$size
|
||||
EApShape \$shape
|
||||
}
|
||||
}
|
||||
}]
|
||||
sicslist setatt $pname units $units
|
||||
sicslist setatt $pname long_name $pname
|
||||
sicslist setatt $pname klass derived_parameter
|
||||
sicslist setatt $pname depends $motor
|
||||
}
|
||||
################################################################################
|
||||
##
|
||||
# @brief This is the position of the velocity selector bunker face. It is used
|
||||
@@ -153,12 +228,12 @@ foreach {pname motor hdbname units} {
|
||||
refpos VelSelPosYmm
|
||||
}
|
||||
|
||||
::hdb::MakeGeometry sample_geometry sample {
|
||||
coordinate_scheme SampleCoordScheme
|
||||
position {SamplePosXmm SamplePosYmm SamplePosZmm}
|
||||
orientation {SampleTiltXdeg SampleTiltYdeg SampleRotDeg}
|
||||
refpos {VelSelPosXmm EndFacePosYmm VelSelPosZmm}
|
||||
}
|
||||
#::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
|
||||
@@ -204,82 +279,70 @@ RotApPosYmm 675
|
||||
################################################################################
|
||||
# Check Config
|
||||
namespace eval parameters {
|
||||
set paramlist {
|
||||
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
|
||||
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
|
||||
}
|
||||
foreach p $paramlist {
|
||||
if [::utility::obj_exists $p] {
|
||||
sicslist setatt $p klass parameter
|
||||
}
|
||||
}
|
||||
set derived_paramlist {
|
||||
AttFactor
|
||||
L1mm
|
||||
L2mm
|
||||
}
|
||||
foreach p $derived_paramlist {
|
||||
if [::utility::obj_exists $p] {
|
||||
sicslist setatt $p klass derived_parameter
|
||||
}
|
||||
}
|
||||
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
|
||||
DetPosYOffsetmm
|
||||
EApPosYmm
|
||||
EApShape
|
||||
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
|
||||
}
|
||||
}
|
||||
##
|
||||
# @brief List undefined parameters
|
||||
@@ -294,6 +357,8 @@ proc ::parameters::missingparams {} {
|
||||
}
|
||||
if {$num > 0} {
|
||||
clientput "There are $num missing parameters"
|
||||
} else {
|
||||
clientput "OK"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,7 +367,7 @@ proc ::parameters::missingparams {} {
|
||||
proc check {args} {
|
||||
switch $args {
|
||||
"missing" {
|
||||
missingparams
|
||||
::parameters::missingparams
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user