Initial bilby configuration.
This commit is contained in:
@@ -163,6 +163,8 @@ kookaburra: all
|
|||||||
make -C instrument/kookaburra
|
make -C instrument/kookaburra
|
||||||
dingo: all
|
dingo: all
|
||||||
make -C instrument/dingo
|
make -C instrument/dingo
|
||||||
|
bilby: all
|
||||||
|
emu: all
|
||||||
|
|
||||||
libansto.a: $(OBJ)
|
libansto.a: $(OBJ)
|
||||||
rm -f libansto.a
|
rm -f libansto.a
|
||||||
|
|||||||
6
site_ansto/instrument/bilby/MANIFEST.TXT
Normal file
6
site_ansto/instrument/bilby/MANIFEST.TXT
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
runsics_def.py
|
||||||
|
bilby_configuration.tcl
|
||||||
|
config
|
||||||
|
util
|
||||||
|
hostport_config.tcl
|
||||||
|
hostport_config_test.tcl
|
||||||
62
site_ansto/instrument/bilby/bilby_configuration.tcl
Normal file
62
site_ansto/instrument/bilby/bilby_configuration.tcl
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
||||||
|
|
||||||
|
# Required by server_config.tcl
|
||||||
|
VarMake Instrument Text Internal
|
||||||
|
Instrument bilby
|
||||||
|
Instrument lock
|
||||||
|
|
||||||
|
#START SERVER CONFIGURATION SECTION
|
||||||
|
source util/dmc2280/dmc2280_util.tcl
|
||||||
|
source server_config.tcl
|
||||||
|
MakeDrive
|
||||||
|
#END SERVER CONFIGURATION SECTION
|
||||||
|
|
||||||
|
########################################
|
||||||
|
# INSTRUMENT SPECIFIC CONFIGURATION
|
||||||
|
|
||||||
|
fileeval $cfPath(motors)/motor_configuration.tcl
|
||||||
|
|
||||||
|
|
||||||
|
fileeval $cfPath(source)/source.tcl
|
||||||
|
source $cfPath(hipadaba)/hipadaba_configuration.tcl
|
||||||
|
fileeval $cfPath(motors)/positmotor_configuration.tcl
|
||||||
|
fileeval $cfPath(velsel)/velsel.tcl
|
||||||
|
fileeval $cfPath(parameters)/parameters.tcl
|
||||||
|
fileeval $cfPath(plc)/plc.tcl
|
||||||
|
fileeval $cfPath(optics)/optics.tcl
|
||||||
|
fileeval $cfPath(counter)/counter.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_lakeshore_340.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_lakeshore_336.tcl
|
||||||
|
fileeval $cfPath(hmm)/hmm_configuration.tcl
|
||||||
|
fileeval $cfPath(nexus)/nxscripts.tcl
|
||||||
|
fileeval $cfPath(hmm)/detector.tcl
|
||||||
|
fileeval $cfPath(scan)/scan.tcl
|
||||||
|
fileeval $cfPath(commands)/commands.tcl
|
||||||
|
fileeval $cfPath(anticollider)/anticollider.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_julabo_lh45.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_qlink.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_watlow_st4.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_watlow_rm.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_rvasm2.tcl
|
||||||
|
fileeval $cfPath(environment)/temperature/sct_oxford_itc.tcl
|
||||||
|
fileeval $cfPath(environment)/magneticField/oxford_labview.tcl
|
||||||
|
fileeval $cfPath(environment)/magneticField/sct_bruker_BEC1.tcl
|
||||||
|
fileeval $cfPath(environment)/environment.tcl
|
||||||
|
fileeval $cfPath(environment)/sct_rheometer.tcl
|
||||||
|
fileeval $cfPath(environment)/sct_protek_common.tcl
|
||||||
|
fileeval $cfPath(beamline)/spin_flipper.tcl
|
||||||
|
fileeval $cfPath(commands)/pulser.tcl
|
||||||
|
fileeval $cfPath(commands)/hvcommands.tcl
|
||||||
|
|
||||||
|
source gumxml.tcl
|
||||||
|
|
||||||
|
::utility::mkVar ::anticollider::protect_detector text manager protect_detector false detector true false
|
||||||
|
::anticollider::protect_detector "true"
|
||||||
|
|
||||||
|
server_init
|
||||||
|
###########################################
|
||||||
|
# WARNING: Do not add any code below server_init, if you do SICS may fail to initialise properly.
|
||||||
|
|
||||||
|
# You can add extra-configuration code in ../extraconfig.tcl
|
||||||
|
sicspoll intervall /instrument/detector/max_binrate 1
|
||||||
|
sicspoll intervall /instrument/detector/total_maprate 1
|
||||||
31
site_ansto/instrument/bilby/config/INSTCFCOMMON.TXT
Normal file
31
site_ansto/instrument/bilby/config/INSTCFCOMMON.TXT
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
config/source/source_common.tcl
|
||||||
|
config/anticollider/anticollider_common.tcl
|
||||||
|
config/plc/plc_common_1.tcl
|
||||||
|
config/counter/counter_common_1.tcl
|
||||||
|
config/hipadaba/hipadaba_configuration_common.tcl
|
||||||
|
config/hipadaba/common_instrument_dictionary.tcl
|
||||||
|
config/hipadaba/instdict_specification.tcl
|
||||||
|
config/hmm/hmm_configuration_common_1.tcl
|
||||||
|
config/hmm/hmm_object.tcl
|
||||||
|
config/hmm/anstohm_linked.xml
|
||||||
|
config/hmm/sct_orhvps_common.tcl
|
||||||
|
config/scan/scan_common_1.hdd
|
||||||
|
config/scan/scan_common_1.tcl
|
||||||
|
config/nexus/nxscripts_common_1.tcl
|
||||||
|
config/commands/commands_common.tcl
|
||||||
|
config/commands/pulser.tcl
|
||||||
|
config/commands/hvcommands.tcl
|
||||||
|
config/motors/sct_positmotor_common.tcl
|
||||||
|
config/environment/sct_protek_common.tcl
|
||||||
|
config/environment/temperature/sct_julabo_lh45.tcl
|
||||||
|
config/environment/temperature/sct_lakeshore_340.tcl
|
||||||
|
config/environment/temperature/sct_lakeshore_336.tcl
|
||||||
|
config/environment/temperature/sct_qlink.tcl
|
||||||
|
config/environment/temperature/sct_watlow_st4.tcl
|
||||||
|
config/environment/temperature/sct_rvasm2.tcl
|
||||||
|
config/environment/temperature/sct_oxford_itc.tcl
|
||||||
|
config/environment/magneticField/sct_bruker_BEC1.tcl
|
||||||
|
config/environment/magneticField/sct_oxford_ips.tcl
|
||||||
|
config/environment/magneticField/sct_oxford_labview.tcl
|
||||||
|
|
||||||
|
config/motors/sct_jogmotor_common.tcl
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Author: Ferdi Franceschini (ffr@ansto.gov.au)
|
||||||
|
|
||||||
|
source $cfPath(anticollider)/anticollider_common.tcl
|
||||||
|
|
||||||
|
# NOTE: This is called with a list of motorname target pairs
|
||||||
|
proc ::anticollider::enable {args} {
|
||||||
|
if {[SplitReply [::anticollider::protect_detector]] == "false"} {
|
||||||
|
return "false"
|
||||||
|
} else {
|
||||||
|
return "true"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
::anticollider::loadscript acscript.txt
|
||||||
216
site_ansto/instrument/bilby/config/commands/commands.tcl
Normal file
216
site_ansto/instrument/bilby/config/commands/commands.tcl
Normal file
@@ -0,0 +1,216 @@
|
|||||||
|
source $cfPath(commands)/commands_common.tcl
|
||||||
|
|
||||||
|
namespace eval motor {
|
||||||
|
# is_homing_list = comma separated list of motors which are safe to send "home"
|
||||||
|
variable is_homing_list ""
|
||||||
|
}
|
||||||
|
|
||||||
|
#namespace eval sample {
|
||||||
|
# command select {int=0:8 sampid} {
|
||||||
|
# SampleNum $sampid
|
||||||
|
# }
|
||||||
|
#}
|
||||||
|
|
||||||
|
##
|
||||||
|
# @brief Beamstop select command
|
||||||
|
# @param bs beamstop, 1,2,3,4,5 or 6
|
||||||
|
# @param bx beam position in detector coordinates
|
||||||
|
# @param bz beam position in detector coordinates
|
||||||
|
# Given
|
||||||
|
# (Xbf,Zbf) = beam pos in frame coords
|
||||||
|
# (Xbd,Zbd) = beam pos in detector coords
|
||||||
|
# (Xbbs, Zbbs) = beam pos in beamstop coords
|
||||||
|
# (Xdf,Zdf) = detector pos in frame coords
|
||||||
|
# (Xbsf,Zbsf) = beamstop pos in frame coords
|
||||||
|
#
|
||||||
|
# (Xbf,Zbf) = (Xdf+Xbd, Zdf+Zbd) = (Xbsf+Xbbs, Zbsf+Zbbs)
|
||||||
|
# Origin of detector coords = frame origin
|
||||||
|
#
|
||||||
|
# Detector and beamstop motor readings with beamstop disk centers
|
||||||
|
# overlapping over detector center mark.
|
||||||
|
# Xdf = 264.542 (7283813) Zdf = 0
|
||||||
|
# Xbbs = 296.291 (8054270)
|
||||||
|
# Zbbs = 259.641 (13488244)
|
||||||
|
# Xbd = dethw, Zbd = (dethh)
|
||||||
|
#
|
||||||
|
# 264.542+dethw = Xbsf+296.291
|
||||||
|
# 0+dethh = Zbsf+259.641
|
||||||
|
#
|
||||||
|
# Xbsf = -31.749 + dethw, Zbsf = -259.641 + dethh
|
||||||
|
proc selbs {bs {bx "UNDEF"} {bz "UNDEF"}} {
|
||||||
|
set bsdriving false
|
||||||
|
set dethw [expr {[SplitReply [detector_active_height_mm]]/2.0}]
|
||||||
|
set dethh [expr {[SplitReply [detector_active_width_mm]]/2.0}]
|
||||||
|
set Xbsf [expr -31.749 + $dethw]
|
||||||
|
set Zbsf [expr -259.641 + $dethh]
|
||||||
|
array set bsl [subst {
|
||||||
|
1 [SplitReply [bs1 softlowerlim]]
|
||||||
|
2 [SplitReply [bs2 softlowerlim]]
|
||||||
|
3 [SplitReply [bs3 softlowerlim]]
|
||||||
|
4 [SplitReply [bs4 softlowerlim]]
|
||||||
|
5 [SplitReply [bs5 softlowerlim]]
|
||||||
|
6 [SplitReply [bs6 softlowerlim]]
|
||||||
|
}]
|
||||||
|
if [ catch {
|
||||||
|
switch $bs {
|
||||||
|
"1" {
|
||||||
|
set bsmot "bs1"
|
||||||
|
set bs_target 93.20
|
||||||
|
set bs_diameter 110
|
||||||
|
set bsdownCmd "drive bs2 $bsl(2) bs3 $bsl(3) bs4 $bsl(4) bs5 $bsl(5) bs6 $bsl(6)"
|
||||||
|
}
|
||||||
|
"2" {
|
||||||
|
set bsmot "bs2"
|
||||||
|
set bs_target 86.84
|
||||||
|
set bs_diameter 88
|
||||||
|
set bsdownCmd "drive bs1 $bsl(1) bs3 $bsl(3) bs4 $bsl(4) bs5 $bsl(5) bs6 $bsl(6)"
|
||||||
|
}
|
||||||
|
"3" {
|
||||||
|
set bsmot "bs3"
|
||||||
|
set bs_target 93.35
|
||||||
|
set bs_diameter 66
|
||||||
|
set bsdownCmd "drive bs2 $bsl(2) bs1 $bsl(1) bs4 $bsl(4) bs5 $bsl(5) bs6 $bsl(6)"
|
||||||
|
}
|
||||||
|
"4" {
|
||||||
|
set bsmot "bs4"
|
||||||
|
set bs_target 86.85
|
||||||
|
set bs_diameter 44
|
||||||
|
set bsdownCmd "drive bs2 $bsl(2) bs3 $bsl(3) bs1 $bsl(1) bs5 $bsl(5) bs6 $bsl(6)"
|
||||||
|
}
|
||||||
|
"5" {
|
||||||
|
set bsmot "bs5"
|
||||||
|
set bs_target 93.27
|
||||||
|
set bs_diameter 22
|
||||||
|
set bsdownCmd "drive bs2 $bsl(2) bs3 $bsl(3) bs4 $bsl(4) bs1 $bsl(1) bs6 $bsl(6)"
|
||||||
|
}
|
||||||
|
"6" {
|
||||||
|
set bsmot "bs6"
|
||||||
|
set bs_target 86.98
|
||||||
|
set bs_diameter 11
|
||||||
|
set bsdownCmd "drive bs2 $bsl(2) bs3 $bsl(3) bs4 $bsl(4) bs5 $bsl(5) bs1 $bsl(1)"
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
error "beamstop selection must be an integer from 1 to 6"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
set detoff_val [SplitReply [detoff]]
|
||||||
|
|
||||||
|
if {$bx == "UNDEF" || $bz == "UNDEF"} {
|
||||||
|
statemon start selbs
|
||||||
|
if {[info level] > 1} {statemon start [lindex [info level -1] 0]}
|
||||||
|
set bsdriving true
|
||||||
|
BeamStop -1
|
||||||
|
BSdiam -1
|
||||||
|
drive $bsmot $bs_target
|
||||||
|
eval $bsdownCmd
|
||||||
|
BeamStop $bs
|
||||||
|
BSdiam $bs_diameter
|
||||||
|
set bsdriving false
|
||||||
|
statemon stop selbs
|
||||||
|
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||||
|
} else {
|
||||||
|
if { [string is double $bx] == false } {
|
||||||
|
if { [string is double $bz] == false } {
|
||||||
|
error "beam coordinates must be floats"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set bsx_target [expr {$bx-$Xbsf+$detoff_val}]
|
||||||
|
set bsz_target [expr {$bz-$Zbsf}]
|
||||||
|
|
||||||
|
statemon start selbs
|
||||||
|
if {[info level] > 1} {statemon start [lindex [info level -1] 0]}
|
||||||
|
set bsdriving true
|
||||||
|
BeamStop -1
|
||||||
|
BSdiam -1
|
||||||
|
drive $bsmot $bs_target bsx $bsx_target bsz $bsz_target
|
||||||
|
eval $bsdownCmd
|
||||||
|
BeamStop $bs
|
||||||
|
BSdiam $bs_diameter
|
||||||
|
set bsdriving false
|
||||||
|
statemon stop selbs
|
||||||
|
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||||
|
}
|
||||||
|
} msg ] {
|
||||||
|
if {$bsdriving} {
|
||||||
|
statemon stop selbs
|
||||||
|
if {[info level] > 1} {statemon stop [lindex [info level -1] 0]}
|
||||||
|
}
|
||||||
|
return -code error $msg
|
||||||
|
}
|
||||||
|
}
|
||||||
|
publish selbs user
|
||||||
|
namespace eval beamstops {
|
||||||
|
command selbsn {int=1,2,3,4,5,6 bs} {
|
||||||
|
selbs $bs "UNDEF" "UNDEF"
|
||||||
|
}
|
||||||
|
command selbsxz {int=1,2,3,4,5,6 bs float bx float bz} {
|
||||||
|
selbs $bs $bx $bz
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace eval optics {
|
||||||
|
VarMake ::optics::select::section text user
|
||||||
|
VarMake ::optics::polarizer::in text user
|
||||||
|
VarMake ::optics::lens::selection text user
|
||||||
|
|
||||||
|
command rotary_attenuator {int=0,15,45,90,180 angle} {
|
||||||
|
drive att $angle
|
||||||
|
}
|
||||||
|
|
||||||
|
command entrance_aperture {
|
||||||
|
int=0,45,90,135,180,270 angle
|
||||||
|
} {
|
||||||
|
drive srce $angle
|
||||||
|
}
|
||||||
|
|
||||||
|
# TODO Do we need this
|
||||||
|
# command sample_aperture {
|
||||||
|
# int=25,50 size
|
||||||
|
# text=circ,squ,open,rect shape
|
||||||
|
# } {
|
||||||
|
# SApXmm $size
|
||||||
|
# SApZmm $size
|
||||||
|
# SApShape $shape
|
||||||
|
# }
|
||||||
|
|
||||||
|
##############################
|
||||||
|
##
|
||||||
|
# @brief The "guide" command uses a lookup table to setup the collimation system
|
||||||
|
# @param row, selects a row from the guide configuration table
|
||||||
|
#
|
||||||
|
# eg\n
|
||||||
|
# guide ga
|
||||||
|
command guide "
|
||||||
|
text=[join [array names ::optics::guide_configuration] , ] configuration
|
||||||
|
" {
|
||||||
|
|
||||||
|
variable guide_configuration
|
||||||
|
variable guide_configuration_columns
|
||||||
|
|
||||||
|
if [ catch {
|
||||||
|
|
||||||
|
foreach {compselection position} $guide_configuration($configuration) {
|
||||||
|
foreach el $compselection guide $guide_configuration_columns {
|
||||||
|
lappend to_config $guide
|
||||||
|
lappend to_config [set ::optics::${guide}_map($el)]
|
||||||
|
}
|
||||||
|
::optics::guide -set feedback status BUSY
|
||||||
|
set msg [eval "drive $to_config"]
|
||||||
|
EApPosY $position
|
||||||
|
}
|
||||||
|
GuideConfig $configuration
|
||||||
|
} message ] {
|
||||||
|
::optics::guide -set feedback status IDLE
|
||||||
|
if {$::errorCode=="NONE"} {return $message}
|
||||||
|
return -code error $message
|
||||||
|
}
|
||||||
|
::optics::guide -set feedback status IDLE
|
||||||
|
}
|
||||||
|
::optics::guide -addfb text status
|
||||||
|
::optics::guide -set feedback status IDLE
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ::commands::isc_initialize {} {
|
||||||
|
::commands::ic_initialize
|
||||||
|
}
|
||||||
32
site_ansto/instrument/bilby/config/counter/counter.tcl
Normal file
32
site_ansto/instrument/bilby/config/counter/counter.tcl
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
source $cfPath(counter)/counter_common_1.tcl
|
||||||
|
|
||||||
|
## TODO Put all the counter macros in the counter namespace
|
||||||
|
namespace eval counter {
|
||||||
|
variable isc_numchannels
|
||||||
|
variable isc_monitor_address
|
||||||
|
variable isc_portlist
|
||||||
|
variable isc_beam_monitor_list
|
||||||
|
proc set_sobj_attributes {} {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ::counter::isc_initialize {} {
|
||||||
|
if [catch {
|
||||||
|
variable isc_numchannels
|
||||||
|
variable isc_monitor_address
|
||||||
|
variable isc_portlist
|
||||||
|
|
||||||
|
dict for {k v} $::MONITOR_HOSTPORT {
|
||||||
|
lappend monlist $k
|
||||||
|
lappend hostlist [dict get $v HOST]
|
||||||
|
lappend isc_portlist [dict get $v PORT]
|
||||||
|
}
|
||||||
|
variable isc_beam_monitor_list $monlist
|
||||||
|
set isc_monitor_address [lindex $hostlist 0]
|
||||||
|
set isc_numchannels [llength $isc_beam_monitor_list]
|
||||||
|
::counter::ic_initialize
|
||||||
|
} message ] {
|
||||||
|
if {$::errorCode=="NONE"} {return $message}
|
||||||
|
return -code error "$message"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
source $cfPath(hipadaba)/hipadaba_configuration_common.tcl
|
||||||
70
site_ansto/instrument/bilby/config/hmm/hmm_configuration.tcl
Normal file
70
site_ansto/instrument/bilby/config/hmm/hmm_configuration.tcl
Normal file
@@ -0,0 +1,70 @@
|
|||||||
|
|
||||||
|
fileeval $cfPath(hmm)/hmm_configuration_common_1.tcl
|
||||||
|
set sim_mode [SplitReply [hmm_simulation]]
|
||||||
|
|
||||||
|
proc ::histogram_memory::init_OAT_TABLE {} {
|
||||||
|
if [ catch {
|
||||||
|
# We don't need a MAX_CHAN parameter for time because the time channel
|
||||||
|
# is scaled by calling the ::histogram_memory::clock_scale function
|
||||||
|
OAT_TABLE X -setdata MAX_CHAN 192
|
||||||
|
OAT_TABLE Y -setdata MAX_CHAN 192
|
||||||
|
OAT_TABLE X -setdata BMIN -0.5
|
||||||
|
OAT_TABLE X -setdata BMAX 191.5
|
||||||
|
OAT_TABLE Y -setdata BMIN -0.5
|
||||||
|
OAT_TABLE Y -setdata BMAX 191.5
|
||||||
|
|
||||||
|
set clock_scale 1000
|
||||||
|
set freq 50
|
||||||
|
hmm configure fat_clock_scale $clock_scale
|
||||||
|
hmm configure fat_frame_frequency $freq
|
||||||
|
hmm configure fat_frame_source INTERNAL
|
||||||
|
|
||||||
|
OAT_TABLE -set X { 191.5 190.5 } NXC 192 Y { -0.5 0.5 } NYC 192 T { 0 20000 } NTC 1
|
||||||
|
} message ] {
|
||||||
|
return -code error $message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
proc ::histogram_memory::pre_count {} {}
|
||||||
|
proc ::histogram_memory::post_count {} {}
|
||||||
|
proc ::histogram_memory::isc_initialize {} {
|
||||||
|
# Instrument specific X and Y dimension names
|
||||||
|
variable INST_NXC "oat_nxc_eff"
|
||||||
|
variable INST_NYC "oat_nyc_eff"
|
||||||
|
|
||||||
|
if [ catch {
|
||||||
|
::histogram_memory::init_hmm_objs
|
||||||
|
if {$::sim_mode == "true"} {
|
||||||
|
hmm configure oat_ntc_eff 1
|
||||||
|
hmm configure $INST_NYC 127
|
||||||
|
hmm configure $INST_NXC 127
|
||||||
|
}
|
||||||
|
BAT_TABLE -init
|
||||||
|
CAT_TABLE -init
|
||||||
|
SAT_TABLE -init
|
||||||
|
OAT_TABLE -init
|
||||||
|
FAT_TABLE -init
|
||||||
|
::histogram_memory::ic_initialize
|
||||||
|
|
||||||
|
detector_active_height_mm [expr 5.08 * 192]
|
||||||
|
detector_active_width_mm [expr 5.08 * 192]
|
||||||
|
detector_active_height_mm lock
|
||||||
|
detector_active_width_mm lock
|
||||||
|
|
||||||
|
# hmm configure FAT_SIMULATED_EVENT_Y0 $y_bb0
|
||||||
|
# hmm configure FAT_SIMULATED_EVENT_Y1 $ybbmax
|
||||||
|
# hmm configure FAT_SIMULATED_EVENT_X0 $x_bb0
|
||||||
|
# hmm configure FAT_SIMULATED_EVENT_X1 $xbbmax
|
||||||
|
::histogram_memory::init_OAT_TABLE
|
||||||
|
::histogram_memory::upload_config Filler_defaults
|
||||||
|
|
||||||
|
set ::histogram_memory::histmem_axes(HOR) /instrument/detector/x_pixel_offset
|
||||||
|
set ::histogram_memory::histmem_axes(VER) /instrument/detector/y_pixel_offset
|
||||||
|
} message ] {
|
||||||
|
return -code error $message
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proc histmem {cmd args} {
|
||||||
|
eval "_histmem $cmd $args"
|
||||||
|
}
|
||||||
|
publish histmem user
|
||||||
4
site_ansto/instrument/bilby/config/nexus/nxscripts.tcl
Normal file
4
site_ansto/instrument/bilby/config/nexus/nxscripts.tcl
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
source $cfPath(nexus)/nxscripts_common_1.tcl
|
||||||
|
proc ::nexus::isc_initialize {} {
|
||||||
|
::nexus::ic_initialize
|
||||||
|
}
|
||||||
1
site_ansto/instrument/bilby/config/optics/README.TXT
Normal file
1
site_ansto/instrument/bilby/config/optics/README.TXT
Normal file
@@ -0,0 +1 @@
|
|||||||
|
Optical Components: Neutron Guides, Apertures, Polariser, Focussing Lenses and Prisms
|
||||||
@@ -0,0 +1,94 @@
|
|||||||
|
namespace eval optics {
|
||||||
|
array set AttRotLookupTable {
|
||||||
|
0 { 0.0 1 }
|
||||||
|
30 { 1.3 0.498782 }
|
||||||
|
60 { 3.3 0.176433 }
|
||||||
|
90 { 4.9 0.0761367 }
|
||||||
|
120 { 6.4 0.0353985 }
|
||||||
|
150 { 8.3 0.0137137 }
|
||||||
|
180 { 9.6 0.00614167 }
|
||||||
|
210 {11.2 0.00264554 }
|
||||||
|
240 {13.1 0.000994504 }
|
||||||
|
270 {15.0 0.000358897 }
|
||||||
|
300 {18.0 7.2845e-05 }
|
||||||
|
330 {25.0 1.67827e-06 }
|
||||||
|
}
|
||||||
|
|
||||||
|
array set EApLookupTable {
|
||||||
|
0 { 5 circ}
|
||||||
|
30 {10 circ}
|
||||||
|
60 {20 circ}
|
||||||
|
90 {30 circ}
|
||||||
|
120 {40 circ}
|
||||||
|
150 {50 circ}
|
||||||
|
180 {50 squ }
|
||||||
|
210 {open open}
|
||||||
|
240 {open open}
|
||||||
|
270 {open open}
|
||||||
|
300 {open open}
|
||||||
|
330 {open open}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ::optics::AttRotLookup {angle column tol} {
|
||||||
|
variable AttRotLookupTable
|
||||||
|
|
||||||
|
set catch_status [ catch {
|
||||||
|
set foundit false
|
||||||
|
foreach vangle [array names AttRotLookupTable] {
|
||||||
|
if {$vangle >= [expr {$angle-$tol}] && $vangle <= [expr {$angle+$tol}]} {
|
||||||
|
set foundit true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if {$foundit == true} {
|
||||||
|
switch $column {
|
||||||
|
"plex" { set index 0 }
|
||||||
|
"attfactor" { set index 1 }
|
||||||
|
default { error "$column is unknown, allowed values are plex or attfactor" }
|
||||||
|
}
|
||||||
|
return [lindex $AttRotLookupTable($vangle) $index]
|
||||||
|
} else {
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
} message ]
|
||||||
|
handle_exception $catch_status $message
|
||||||
|
}
|
||||||
|
|
||||||
|
proc ::optics::EApLookUp {angle param tol} {
|
||||||
|
variable EApLookupTable
|
||||||
|
|
||||||
|
set foundit false
|
||||||
|
if [ catch {
|
||||||
|
if {$param == "size"} {
|
||||||
|
set cgf [SplitReply [GuideConfig]]
|
||||||
|
if {[string first $cgf "g1 g2 g3 g4 g5 g6 g7 g8 g9 p1 p2 p3 p4 p5 p6 p7 p8 p9"] != -1} {
|
||||||
|
return 50
|
||||||
|
}
|
||||||
|
}
|
||||||
|
switch $param {
|
||||||
|
"size" {set index 0}
|
||||||
|
"shape" {set index 1}
|
||||||
|
default {
|
||||||
|
error "ERROR: Invalid lookup parameter $param"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach vangle [array names EApLookupTable] {
|
||||||
|
if {$vangle >= [expr {$angle-$tol}] && $vangle <= [expr {$angle+$tol}]} {
|
||||||
|
set foundit true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if {$foundit == true} {
|
||||||
|
return [lindex $EApLookupTable($vangle) $index]
|
||||||
|
} else {
|
||||||
|
switch $param {
|
||||||
|
"size" {return 0}
|
||||||
|
"shape" {return "UNKNOWN"}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} message ] {
|
||||||
|
if {$::errorCode == "NONE"} {return $message}
|
||||||
|
return -code error "$message"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,66 @@
|
|||||||
|
##
|
||||||
|
# @file
|
||||||
|
# A guide configuration table where each line describes the setup
|
||||||
|
# for a mode of operation.
|
||||||
|
# The table will have a corresponding interpretation list which provides
|
||||||
|
# commands to setup the instrument.
|
||||||
|
|
||||||
|
namespace eval optics {
|
||||||
|
##
|
||||||
|
# @brief These arrays map the component identifiers (G, MT, etc) to the
|
||||||
|
# position index for each guide motor (c1, c2 ... c9)
|
||||||
|
array set c1_map {G 1 MT 2 P 3}
|
||||||
|
array set c2_map {MT 1 G 2 A 3}
|
||||||
|
array set c3_map {MT 1 G 2 A 3}
|
||||||
|
array set c4_map {MT 1 G 2 A 3}
|
||||||
|
array set c5_map {MT 1 G 2 A 3}
|
||||||
|
array set c6_map {MT 1 G 2 A 3}
|
||||||
|
array set c7_map {MT 1 G 2 A 3}
|
||||||
|
array set c8_map {MT 1 G 2 A 3}
|
||||||
|
array set c9_map {L 1 MT 2 G 3 A 4 LP 5}
|
||||||
|
|
||||||
|
# The guide configuration table is indexed by a configuration
|
||||||
|
# identifier (ga, mt, lp, etc). Each row has two elements,
|
||||||
|
# 1. A list of components selected for each guide (MT A ... etc)
|
||||||
|
# 2. The entrance aperature position in mm
|
||||||
|
# Eg $guide_configuration(p2) returns the following list
|
||||||
|
# {{P G A A A A A A A } 6934}
|
||||||
|
array set guide_configuration {
|
||||||
|
ga {{MT A A A A A A A A } 675}
|
||||||
|
mt {{MT MT MT MT MT MT MT MT MT} 675}
|
||||||
|
lp {{MT MT MT MT MT MT MT MT LP} 675}
|
||||||
|
lens {{MT A A A A A A A L } 675}
|
||||||
|
p1 {{P A MT MT MT MT MT MT MT} 4621}
|
||||||
|
p1lp {{P A MT MT MT MT MT MT LP} 4621}
|
||||||
|
p1lens {{P A MT MT MT MT MT MT L } 4621}
|
||||||
|
g1 {{G A A A A A A A A } 4929}
|
||||||
|
p2 {{P G A A A A A A A } 6934}
|
||||||
|
g2 {{G G A A A A A A A } 6934}
|
||||||
|
p3 {{P G G A A A A A A } 8949}
|
||||||
|
g3 {{G G G A A A A A A } 8949}
|
||||||
|
p4 {{P G G G A A A A A } 10955}
|
||||||
|
g4 {{G G G G A A A A A } 10955}
|
||||||
|
p5 {{P G G G G A A A A } 12943}
|
||||||
|
g5 {{G G G G G A A A A } 12943}
|
||||||
|
p6 {{P G G G G G A A A } 14970}
|
||||||
|
g6 {{G G G G G G A A A } 14970}
|
||||||
|
p7 {{P G G G G G G A A } 16971}
|
||||||
|
g7 {{G G G G G G G A A } 16971}
|
||||||
|
p8 {{P G G G G G G G A } 18937}
|
||||||
|
g8 {{G G G G G G G G A } 18937}
|
||||||
|
p9 {{P G G G G G G G G } 19925}
|
||||||
|
g9 {{G G G G G G G G G } 19925}
|
||||||
|
}
|
||||||
|
|
||||||
|
# This list maps the motor names to columns of the
|
||||||
|
# guide_configuration table.
|
||||||
|
set guide_configuration_columns {
|
||||||
|
c1 c2 c3 c4 c5 c6 c7 c8 c9
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace eval optics {
|
||||||
|
variable guide_configuration
|
||||||
|
variable guide_configuration_columns
|
||||||
|
}
|
||||||
2
site_ansto/instrument/bilby/config/optics/optics.tcl
Normal file
2
site_ansto/instrument/bilby/config/optics/optics.tcl
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
fileeval $cfPath(optics)/guide_configuration.tcl
|
||||||
|
fileeval $cfPath(optics)/aperture_configuration.tcl
|
||||||
6
site_ansto/instrument/bilby/config/scan/scan.tcl
Normal file
6
site_ansto/instrument/bilby/config/scan/scan.tcl
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
source $cfPath(scan)/scan_common_1.tcl
|
||||||
|
proc ::scan::pre_hmm_scan_prepare {} {}
|
||||||
|
|
||||||
|
proc ::scan::isc_initialize {} {
|
||||||
|
::scan::ic_initialize
|
||||||
|
}
|
||||||
6
site_ansto/instrument/bilby/config/source/source.tcl
Normal file
6
site_ansto/instrument/bilby/config/source/source.tcl
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
source $cfPath(source)/source_common.tcl
|
||||||
|
|
||||||
|
proc ::source::isc_initialize {} {
|
||||||
|
::source::ic_initialize "cold"
|
||||||
|
}
|
||||||
|
|
||||||
48
site_ansto/instrument/bilby/hostport_config.tcl
Normal file
48
site_ansto/instrument/bilby/hostport_config.tcl
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
# MOTOR HOST AND PORT
|
||||||
|
foreach {mc host port} {
|
||||||
|
MC1 mc1-bilby pmc1-bilby
|
||||||
|
MC2 mc2-bilby pmc2-bilby
|
||||||
|
MC3 mc3-bilby pmc3-bilby
|
||||||
|
MC4 mc4-bilby pmc4-bilby
|
||||||
|
} {
|
||||||
|
dict set MOTOR_HOSTPORT $mc HOST $host
|
||||||
|
dict set MOTOR_HOSTPORT $mc PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# BEAM MONITOR HOST AND PORT
|
||||||
|
foreach {bm host port} {
|
||||||
|
MONITOR_1 das1-bilby 30000
|
||||||
|
MONITOR_2 das1-bilby 30001
|
||||||
|
MONITOR_3 das1-bilby 30002
|
||||||
|
} {
|
||||||
|
dict set MONITOR_HOSTPORT $bm HOST $host
|
||||||
|
dict set MONITOR_HOSTPORT $bm PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# HISTOGRAM SERVER HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
HMM das1-bilby.nbi.ansto.gov.au 8080
|
||||||
|
HMSTAT das1-bilby.nbi.ansto.gov.au 8081
|
||||||
|
ORDELA 137.157.202.71 4001
|
||||||
|
NHQ200 ca1-bilby 4002
|
||||||
|
} {
|
||||||
|
dict set HISTMEM_HOSTPORT $key HOST $host
|
||||||
|
dict set HISTMEM_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# SPIN FLIPPER HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
ANSFR83B 137.157.202.71 4002
|
||||||
|
} {
|
||||||
|
dict set ACGEN_HOSTPORT $key HOST $host
|
||||||
|
dict set ACGEN_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# VELOCITY SELECTOR HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
NVS40 137.157.202.73 10000
|
||||||
|
NVS43 137.157.202.74 10000
|
||||||
|
} {
|
||||||
|
dict set VELSEL_HOSTPORT $key HOST $host
|
||||||
|
dict set VELSEL_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
50
site_ansto/instrument/bilby/hostport_config_test.tcl
Normal file
50
site_ansto/instrument/bilby/hostport_config_test.tcl
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
# Specify NONE for HOST and PORT if there is no fake device to talk to.
|
||||||
|
|
||||||
|
# TEST MOTOR HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
MC1 localhost 63030
|
||||||
|
MC2 localhost 63031
|
||||||
|
MC3 localhost 63032
|
||||||
|
MC4 localhost 63033
|
||||||
|
} {
|
||||||
|
dict set MOTOR_HOSTPORT $key HOST $host
|
||||||
|
dict set MOTOR_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# TEST BEAM MONITOR HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
MONITOR_1 localhost 30000
|
||||||
|
MONITOR_2 localhost 30001
|
||||||
|
MONITOR_3 localhost 30002
|
||||||
|
} {
|
||||||
|
dict set MONITOR_HOSTPORT $key HOST $host
|
||||||
|
dict set MONITOR_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# TEST HISTOGRAM SERVER HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
HMM das1-test.nbi.ansto.gov.au 8080
|
||||||
|
HMSTAT das1-test.nbi.ansto.gov.au 8081
|
||||||
|
ORDELA localhost 4001
|
||||||
|
NHQ200 localhost 4002
|
||||||
|
} {
|
||||||
|
dict set HISTMEM_HOSTPORT $key HOST $host
|
||||||
|
dict set HISTMEM_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# SPIN FLIPPER HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
ANSFR83B localhost 64001
|
||||||
|
} {
|
||||||
|
dict set ACGEN_HOSTPORT $key HOST $host
|
||||||
|
dict set ACGEN_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
|
|
||||||
|
# VELOCITY SELECTOR HOST AND PORT
|
||||||
|
foreach {key host port} {
|
||||||
|
NVS40 localhost 10000
|
||||||
|
NVS43 localhost 10000
|
||||||
|
} {
|
||||||
|
dict set VELSEL_HOSTPORT $key HOST $host
|
||||||
|
dict set VELSEL_HOSTPORT $key PORT $port
|
||||||
|
}
|
||||||
3
site_ansto/instrument/bilby/runsics_def.py
Normal file
3
site_ansto/instrument/bilby/runsics_def.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
inst_user = 'bilby_sics'
|
||||||
|
inst_name = 'bilby'
|
||||||
|
inst_config = 'bilby_configuration.tcl'
|
||||||
@@ -79,6 +79,8 @@ namespace eval histogram_memory {
|
|||||||
lyrebird INTERNAL
|
lyrebird INTERNAL
|
||||||
kookaburra INTERNAL
|
kookaburra INTERNAL
|
||||||
dingo INTERNAL
|
dingo INTERNAL
|
||||||
|
bilby INTERNAL
|
||||||
|
emu INTERNAL
|
||||||
}
|
}
|
||||||
|
|
||||||
array set default_frame_source_always_internal {
|
array set default_frame_source_always_internal {
|
||||||
@@ -93,6 +95,8 @@ namespace eval histogram_memory {
|
|||||||
lyrebird "false"
|
lyrebird "false"
|
||||||
kookaburra "false"
|
kookaburra "false"
|
||||||
dingo "false"
|
dingo "false"
|
||||||
|
bilby "false"
|
||||||
|
emu "false"
|
||||||
}
|
}
|
||||||
|
|
||||||
::utility::mkVar detector_active_height_mm Float user active_height true detector true true
|
::utility::mkVar detector_active_height_mm Float user active_height true detector true true
|
||||||
|
|||||||
@@ -54,6 +54,8 @@ namespace eval nexus {
|
|||||||
"taipan" "simple"
|
"taipan" "simple"
|
||||||
"kookaburra" "simple"
|
"kookaburra" "simple"
|
||||||
"dingo" "simple"
|
"dingo" "simple"
|
||||||
|
"bilby" "simple"
|
||||||
|
"emu" "simple"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
namespace eval ::nexus::histmem {}
|
namespace eval ::nexus::histmem {}
|
||||||
@@ -120,7 +122,7 @@ proc ::nexus::datapath {} {
|
|||||||
# @param postfix This is the filename suffix, must be one of: nx.hdf, hdf, h5, nx5, xml
|
# @param postfix This is the filename suffix, must be one of: nx.hdf, hdf, h5, nx5, xml
|
||||||
proc newFileName {idNum postfix} {
|
proc newFileName {idNum postfix} {
|
||||||
if [ catch {
|
if [ catch {
|
||||||
array set inst_mnem {quokka QKK wombat WBT echidna ECH kowari KWR koala KOL taipan TPN platypus PLP pelican PLN lyrebird LBD kookaburra KKB dingo DNG}
|
array set inst_mnem {quokka QKK wombat WBT echidna ECH kowari KWR koala KOL taipan TPN platypus PLP pelican PLN lyrebird LBD kookaburra KKB dingo DNG bilby BBY emu EMU}
|
||||||
# set prefix [SplitReply [sicsdataprefix]]
|
# set prefix [SplitReply [sicsdataprefix]]
|
||||||
set date_time_arr [split [sicstime] " "]
|
set date_time_arr [split [sicstime] " "]
|
||||||
set isodate [lindex $date_time_arr 0]
|
set isodate [lindex $date_time_arr 0]
|
||||||
|
|||||||
@@ -152,6 +152,14 @@ dingo|dingo)
|
|||||||
INSTRUMENT=dingo
|
INSTRUMENT=dingo
|
||||||
DESTHOST=${2:-ics1-dingo.nbi.ansto.gov.au}
|
DESTHOST=${2:-ics1-dingo.nbi.ansto.gov.au}
|
||||||
INSTSRC=$SRCDIR/dingo;;
|
INSTSRC=$SRCDIR/dingo;;
|
||||||
|
bilby|bilby)
|
||||||
|
INSTRUMENT=bilby
|
||||||
|
DESTHOST=${2:-ics1-bilby.nbi.ansto.gov.au}
|
||||||
|
INSTSRC=$SRCDIR/bilby;;
|
||||||
|
emu|emu)
|
||||||
|
INSTRUMENT=emu
|
||||||
|
DESTHOST=${2:-ics1-emu.nbi.ansto.gov.au}
|
||||||
|
INSTSRC=$SRCDIR/emu;;
|
||||||
esac
|
esac
|
||||||
INSTCFDIR=$INSTSRC/config
|
INSTCFDIR=$INSTSRC/config
|
||||||
|
|
||||||
|
|||||||
@@ -197,7 +197,7 @@ sicslist setatt $setpoint_script mutable true
|
|||||||
|
|
||||||
## TODO put all the utility macros in the utility namespace
|
## TODO put all the utility macros in the utility namespace
|
||||||
namespace eval utility {
|
namespace eval utility {
|
||||||
variable instrument_names [list echidna wombat kowari quokka platypus pelican taipan lyrebird kookaburra]
|
variable instrument_names [list bilby dingo echidna emu kookaburra kowari lyrebird pelican platypus quokka taipan wombat]
|
||||||
variable sics_port
|
variable sics_port
|
||||||
set base_port 60000
|
set base_port 60000
|
||||||
set currbase $base_port
|
set currbase $base_port
|
||||||
|
|||||||
Reference in New Issue
Block a user