Initial bilby configuration.
This commit is contained in:
@@ -163,6 +163,8 @@ kookaburra: all
|
||||
make -C instrument/kookaburra
|
||||
dingo: all
|
||||
make -C instrument/dingo
|
||||
bilby: all
|
||||
emu: all
|
||||
|
||||
libansto.a: $(OBJ)
|
||||
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'
|
||||
@@ -67,19 +67,21 @@ namespace eval histogram_memory {
|
||||
|
||||
# Frame source for each instrument if freq = 0, this can happen when automatically
|
||||
# setting frequencies from choppers.
|
||||
array set default_frame_source_when_there_is_no_frame_signal {
|
||||
echidna INTERNAL
|
||||
koala INTERNAL
|
||||
kowari EXTERNAL
|
||||
pelican INTERNAL
|
||||
platypus EXTERNAL
|
||||
quokka INTERNAL
|
||||
taipan INTERNAL
|
||||
wombat INTERNAL
|
||||
lyrebird INTERNAL
|
||||
kookaburra INTERNAL
|
||||
dingo INTERNAL
|
||||
}
|
||||
array set default_frame_source_when_there_is_no_frame_signal {
|
||||
echidna INTERNAL
|
||||
koala INTERNAL
|
||||
kowari EXTERNAL
|
||||
pelican INTERNAL
|
||||
platypus EXTERNAL
|
||||
quokka INTERNAL
|
||||
taipan INTERNAL
|
||||
wombat INTERNAL
|
||||
lyrebird INTERNAL
|
||||
kookaburra INTERNAL
|
||||
dingo INTERNAL
|
||||
bilby INTERNAL
|
||||
emu INTERNAL
|
||||
}
|
||||
|
||||
array set default_frame_source_always_internal {
|
||||
echidna "true"
|
||||
@@ -93,6 +95,8 @@ namespace eval histogram_memory {
|
||||
lyrebird "false"
|
||||
kookaburra "false"
|
||||
dingo "false"
|
||||
bilby "false"
|
||||
emu "false"
|
||||
}
|
||||
|
||||
::utility::mkVar detector_active_height_mm Float user active_height true detector true true
|
||||
|
||||
@@ -54,6 +54,8 @@ namespace eval nexus {
|
||||
"taipan" "simple"
|
||||
"kookaburra" "simple"
|
||||
"dingo" "simple"
|
||||
"bilby" "simple"
|
||||
"emu" "simple"
|
||||
}
|
||||
}
|
||||
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
|
||||
proc newFileName {idNum postfix} {
|
||||
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 date_time_arr [split [sicstime] " "]
|
||||
set isodate [lindex $date_time_arr 0]
|
||||
|
||||
@@ -152,6 +152,14 @@ dingo|dingo)
|
||||
INSTRUMENT=dingo
|
||||
DESTHOST=${2:-ics1-dingo.nbi.ansto.gov.au}
|
||||
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
|
||||
INSTCFDIR=$INSTSRC/config
|
||||
|
||||
|
||||
@@ -197,7 +197,7 @@ sicslist setatt $setpoint_script mutable true
|
||||
|
||||
## TODO put all the utility macros in the utility namespace
|
||||
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
|
||||
set base_port 60000
|
||||
set currbase $base_port
|
||||
|
||||
Reference in New Issue
Block a user