update for Lyrebird deployment

r3105 | jgn | 2011-04-20 08:48:12 +1000 (Wed, 20 Apr 2011) | 1 line
This commit is contained in:
Jing Chen
2011-04-20 08:48:12 +10:00
committed by Douglas Clowes
parent 9acffeb772
commit 8b1d0103f4
38 changed files with 8819 additions and 139 deletions

View File

@@ -0,0 +1,348 @@
#-------------------------------------------------------------------------
# Functions for writing NeXus files for a triple axis spectrometer and
# configuration of the internal scan object to support this.
#
# Mark Koennecke, May 2005
# reworked to new NeXus standards, Mark Koennecke, February 2007
#-----------------------------------------------------------------------
catch {sicsdatafactory new __transfer}
set __tasdata(out) ""
#----------------------------------------------------------------------
proc appendMotor {np motor alias} {
set val [tasSplit [$motor]]
if { [string length $val] > 0} {
__transfer putfloat 0 $val
nxscript putslab $alias [list $np] [list 1] __transfer
} else {
clientput "WARNING: failed to read $motor"
}
}
#------------------------------------------------------------------
proc appendIfPresent {np obj alias} {
# sea_get is defined in ~/sea/tcl/remob.tcl
set status [catch {sea_get val $obj} msg]
if {$status != 0} {
return
}
if {$msg} {
__transfer putfloat 0 $val
nxscript putslab $alias [list $np] [list 1] __transfer
}
}
#------------------------------------------------------------------
proc appendFloat {np alias val} {
if {[string length $val] > 0} {
__transfer putfloat 0 $val
nxscript putslab $alias [list $np] [list 1] __transfer
} else {
clientput "WARNING: failed to read $alias"
}
}
#-------------------------------------------------------------------
proc appendCount {np value alias} {
__transfer putint 0 $value
nxscript putslab $alias [list $np] [list 1] __transfer
}
#--------------------------------------------------------------------
proc donothing {obj userobj} {
}
#---------------------------------------------------------------------
proc xmlprepare {obj userobj} {
global __tasdata
#------- normal prepare
tasscan prepare $obj $userobj
#--------- parse out variable
set out [tasSplit [output]]
if {[string compare [string toupper $out] "UNKNOWN"]==0} {
set out ""
}
set out [string map { "=" " " "," " "} $out]
set outlist [split $out]
foreach var $outlist {
if { [string length $var] > 1} {
set ret [catch {tasSplit [$var]} msg]
if {$ret == 0} {
lappend __tasdata(out) $var
}
}
}
#------- build Header
append head " PNT "
set scanvars [split [tasSplit [iscan getscanvars]]]
foreach var $scanvars {
if { [string length $var] > 1} {
append head [format "%9s " [string toupper $var]]
}
}
foreach var $__tasdata(out) {
append head [format "%9s " [string toupper $var]]
}
append head [format "%8s " M1]
append head [format "%8s " M2]
append head [format "%8s " TIME]
append head [format "%8s " CNTS]
append head [format "%8s " CTOT]
clientput $head
set __tasdata(starttime) [sicstime]
xmltaswrite $obj $userobj
}
#--------------------------------------------------------------------
proc xmlwritepoint {obj userobj np} {
global __tasdata scripthome
nxscript reopen $__tasdata(file) $scripthome/tasub.dic
append line [format " %3d" $np]
set scanvars [split [tasSplit [iscan getscanvars]]]
foreach var $scanvars {
if { [string length $var] > 1} {
set val [tasSplit [eval $var]]
append line [format "%9.4f " [tasSplit [$var]]]
appendMotor $np $var sc_$var
lappend storedvars $var
}
}
foreach var $__tasdata(out) {
append line [format "%9.4f " [tasSplit [eval $var]]]
appendMotor $np $var sc_$var
lappend storedvars $var
}
append line [format "%8d " [tasSplit [counter getmonitor 1]]]
append line [format "%8d " [tasSplit [counter getmonitor 2]]]
append line [format "%8.2f " [tasSplit [counter gettime]]]
append line [format "%8d " [tasSplit [counter getcounts]]]
clientput $line
appendCount $np [tasSplit [counter getcounts]] counts
appendCount $np [tasSplit [counter getmonitor 1]] cter_01
appendCount $np [tasSplit [counter getcounts]] cter_02
appendFloat $np motime [tasSplit [counter gettime]]
set varlist [list qh qk ql qm en ei ef a1 a2 a3 a4 a5 a6 sgu sgl]
foreach var $varlist {
if {[lsearch $storedvars $var] < 0} {
appendMotor $np $var sc_${var}
}
}
if {$np == 0} {
makeTASLinks
}
nxscript close
}
#====================== actual XML stuff ============================
proc writeUserData {} {
writeTextVar usnam user
writeTextVar usaff affiliation
writeTextVar usadd address
writeTextVar usmail email
writeTextVar lonam local
}
#-------------------------------------------------------------------
proc writeMonochromator {} {
global __tasdata
nxscript puttext mono_type "Pyrolytic Graphite"
appendMotor 0 mcv sc_mcv
nxscript putfloat mono_dd [tasSplit [tasub mono dd]]
}
#-------------------------------------------------------------------
proc writeAnalyzer {} {
global __tasdata
nxscript puttext ana_type "Pyrolytic Graphite"
nxscript putfloat ana_dd [tasSplit [tasub ana dd]]
set sa [tasSplit [tasub ss]]
if {$sa == 1} {
set az 0.
} else {
set az 180.
}
nxscript putfloat ana_az $az
}
#-------------------------------------------------------------------
proc writeDetector {} {
global __tasdata
set sa [tasSplit [tasub ana ss]]
if {$sa == 1} {
set az 0.
} else {
set az 180.
}
nxscript putfloat det_az $az
}
#-------------------------------------------------------------------
proc writeMonitor {} {
nxscript putcounter cter counter
}
#-----------------------------------------------------------------
proc writeSample {} {
global __tasdata
tasscan nxdump nxscript sa
writeTextVar sanam sample
set sa [tasSplit [tasub mono ss]]
if {$sa == 1} {
set az 0.
} else {
set az 180.
}
nxscript putfloat saaz $az
}
#-----------------------------------------------------------------
proc writePowderSample {} {
global __tasdata
tasscan nxdump nxscript sa
writeTextVar sanam sample
set sa [tasSplit [tasub mono ss]]
if {$sa == 1} {
set az 0.
} else {
set az 180.
}
nxscript putfloat saaz $az
}
#------------------------------------------------------------------
proc makeTASLinks {} {
nxscript makelink dana sc_ei
nxscript makelink dana sc_ef
nxscript makelink dana sc_qh
nxscript makelink dana sc_qk
nxscript makelink dana sc_ql
nxscript makelink dana sc_en
nxscript makelink dana counts
}
#------------------------------------------------------------------
proc makePowderLinks {} {
nxscript makelink dana sc_ei
nxscript makelink dana sc_ef
nxscript makelink dana sc_qm
nxscript makelink dana sc_en
nxscript makelink dana counts
}
#-------------------------------------------------------------------
proc makeScanLinks {} {
set alreadyLinked [list sc_ei sc_ef sc_qh sc_qf sc_qk sc_en sc_qm]
set nscan [tasSplit [iscan noscanvar]]
set axis 0
for {set i 0} {$i < $nscan} {incr i } {
set varpar [iscan getvarpar $i]
set l [split $varpar =]
set var [lindex $l 0]
set idx [string first . $var]
set var [string range $var [expr $idx + 1] end]
set alias [format "sc_%s" [string trim $var]]
set testalias [string trim [tasSplit [nxscript isalias $alias]]]
if {[lsearch $alreadyLinked $alias] < 0} {
if {$testalias == 1} {
nxscript makelink dana $alias
}
}
if {$axis == 0} {
set step [string trim [lindex $l 2]]
if {abs($step) > .001} {
if {$testalias == 1} {
nxscript putattribute $alias axis 1
set axis 1
}
}
}
}
# if axis = 0 there is no alias; so we create something in here from the
# scan data in iscan
if {$axis == 0} {
set data [tasSplit [iscan getvardata 0]]
set count 0
foreach e $data {
set ar($count) [string trim $e]
incr count
}
nxscript putarray danascanvar ar [llength $data]
}
}
#--------------------------------------------------------------------
proc xmltaswrite {obj userobj} {
global home __tasdata
set fil [string trim [tasSplit [iscan getfile]]]
nxscript createxml $fil $home/tasub.dic
set __tasdata(file) $fil
writeTextVar etitle title
nxscript puttext estart $__tasdata(starttime)
nxscript puttext eend [sicstime]
nxscript puttext edef NXmonotas
nxscript putglobal file_name $fil
nxscript putglobal file_time [sicstime]
nxscript updatedictvar NP [tasSplit [iscan np]]
nxscript updatedictvar INSTRUMENT [tasSplit [instrument]]
writeUserData
writeMonochromator
writeMonitor
writeSample
writeAnalyzer
writeDetector
nxscript close
}
#--------------------------------------------------------------------
proc xmlpowderwrite {obj userobj} {
global home __tasdata
set fil [string trim [tasSplit [iscan getfile]]]
nxscript createxml $fil $home/tasub.dic
set __tasData(file) $fil
writeTextVar etitle title
nxscript puttext estart $__tasdata(starttime)
nxscript puttext eend [sicstime]
nxscript puttext edef NXmonotas
nxscript putglobal file_name $fil
nxscript putglobal file_time [sicstime]
nxscript updatedictvar NP [tasSplit [iscan np]]
nxscript updatedictvar INSTRUMENT [tasSplit [instrument]]
writeUserData
writeMonochromator
writeMonitor
writePowderSample
writeAnalyzer
writeDetector
makePowderLinks
nxscript close
}
#--------------------------------------------------------------------
proc xmlfinish {obj userobj} {
}
#----------------------------------------------------------------------
proc initxmlscan {} {
iscan configure script
iscan function writeheader donothing
iscan function prepare xmlprepare
iscan function drive tasscan drive
iscan function count tasscan count
iscan function collect tasscan collect
iscan function writepoint xmlwritepoint
iscan function finish xmlfinish
}

View File

@@ -0,0 +1,83 @@
##NXDICT-1.0
#-----------------------------------------------------------------------
# NeXus dictionary file for a triple axis spectrometer following
# the instrument definition as of May 2005
#
# Do not modify this file if you do not knwo what you are doing,
# you may corrupt your data files!
#
# Mark Koennecke, May 2005
#----------------------------------------------------------------------
NP=1
INSTRUMENT=TASUB
#--------- entry level
etitle=/entry1,NXentry/SDS title -type NX_CHAR -rank 1
estart=/entry1,NXentry/SDS start_time -type DFNT_CHAR -rank 1
eend=/entry1,NXentry/SDS end_time -type DFNT_CHAR -rank 1
edef=/entry1,NXentry/SDS definition -type DFNT_CHAR -rank 1 \
-attr {URL,http://www.nexus.anl.gov/instruments/xml/NXmonotas.xml} \
-attr {version,1.0}
#---------- looser
usnam=/entry1,NXentry/user,NXuser/SDS name -type NX_CHAR -rank 1
usaff=/entry1,NXentry/user,NXuser/SDS affiliation -type NX_CHAR -rank 1
usadd=/entry1,NXentry/user,NXuser/SDS address -type NX_CHAR -rank 1
usmail=/entry1,NXentry/user,NXuser/SDS email -type NX_CHAR -rank 1
#---------- local contact
lonam=/entry1,NXentry/local_contact,NXuser/SDS name -type NX_CHAR -rank 1
#------------- sample
sanam=/entry1,NXentry/sample,NXsample/SDS name -type NX_CHAR -rank 1
sa_cell=/entry1,NXentry/sample,NXsample/SDS unit_cell -rank 1 -dim {6}
sa_norm=/entry1,NXentry/sample,NXsample/SDS plane_normal -rank 1 -dim {3}
sa_vec1=/entry1,NXentry/sample,NXsample/SDS plane_vector_1 -rank 1 -dim {3}
sa_vec2=/entry1,NXentry/sample,NXsample/SDS plane_vector_2 -rank 1 -dim {3}
sa_ub=/entry1,NXentry/sample,NXsample/SDS orientation_matrix -rank 2 \
-dim {3,3}
sapol=/entry1,NXentry/sample,NXsample/SDS polar_angle \
-rank 1 -attr {units,degree}
saa3=/entry1,NXentry/sample,NXsample/SDS rotation_angle \
-rank 1 -attr {units,degree}
sasgl=/entry1,NXentry/sample,NXsample/SDS sgl \
-rank 1 -attr {units,degree}
sasgu=/entry1,NXentry/sample,NXsample/SDS sgu \
-rank 1 -attr {units,degree}
saqh=/entry1,NXentry/sample,NXsample/SDS Qh -rank 1
saqk=/entry1,NXentry/sample,NXsample/SDS Qk -rank 1
saql=/entry1,NXentry/sample,NXsample/SDS Ql -rank 1
saqm=/entry1,NXentry/sample,NXsample/SDS Qm -rank 1
saen=/entry1,NXentry/sample,NXsample/SDS energy_transfer -rank 1 \
-attr {units,mev}
saaz=/entry1,NXentry/sample,NXsample/SDS azimuthal_angle -attr {units,degree}
#----------- monochromator
mono_type=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS type -type NX_CHAR -rank 1
mono_e=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS energy -rank 1 -dim {$(NP)} \
-attr {units,mev}
mono_theta=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS rotation_angle \
-rank 1 -dim {$(NP)} -attr {units,degree}
mono_dd=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS d_spacing -attr {units,Angstroem}
#----------- analyzer
ana_type=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS type -type NX_CHAR -rank 1
ana_e=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS energy -rank 1 -dim {$(NP)} \
-attr {units,mev}
ana_theta=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS rotation_angle \
-rank 1 -dim {$(NP)} -attr {units\,degree}
ana_pol=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS polar_angle -rank 1 -dim {$(NP)} \
-attr {units,degree}
ana_dd=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS d_spacing -attr {units,Angstroem}
ana_az=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS azimuthal_angle -attr {units,degree}
#--------- detector
det_pol=/entry1,NXentry/$(INSTRUMENT),NXinstrument/detector,NXdetector/SDS polar_angle -rank 1 -dim {$(NP)} \
-attr {units,degree}
counts=/entry1,NXentry/$(INSTRUMENT),NXinstrument/detector,NXdetector/SDS counts -type NX_INT32 -rank 1 -dim {$(NP)} \
-attr {units,degree} -attr {signal,1}
det_az=/entry1,NXentry/$(INSTRUMENT),NXinstrument/detector,NXdetector/SDS azimuthal_angle -attr {units,degree}
#------- monitors
cter_mode=/entry1,NXentry/control,NXmonitor/SDS mode -type NX_CHAR -rank 1 -dim {30}
cter_preset=/entry1,NXentry/control,NXmonitor/SDS preset
motime=/entry1,NXentry/control,NXmonitor/SDS time -attr {units,seconds} -rank 1 -dim {$(NP)}
mo01=/entry1,NXentry/control,NXmonitor/SDS data -type NX_INT32 -rank 1 -dim {$(NP)}
mo02=/entry1,NXentry/sample_stage,NXmonitor/SDS data -type NX_INT32 -rank 1 -dim {$(NP)}
#------- NXdata
dana=/entry1,NXentry/data,NXdata/NXVGROUP

View File

@@ -0,0 +1,19 @@
*************************** TOPSI Data File ********************************
Title = !!VAR(Title)!!
User = !!VAR(User)!!
File Creation Stardate: !!DATE!!
****************************************************************************
Monochromator Lamda = !!DRIV(lambda)!!
Monochromator A1 = !!DRIV(A1)!!
Monochromator A2 = !!DRIV(A2)!!
----------------------------------------------------------------------------
Sample STL = !!DRIV(STL)!!
Sample STU = !!DRIV(STU)!!
Sample SGL = !!DRIV(SGL)!!
Sample SGU = !!DRIV(SGU)!!
Zero STL = !!ZERO(STL)!!
Zero STU = !!ZERO(STU)!!
Zero SGL = !!ZERO(SGL)!!
Zero SGU = !!ZERO(SGU)!!
!!SCANZERO!!
**************************** DATA ******************************************

View File

@@ -0,0 +1,286 @@
# --------------------------------------------------------------------------
# Initialization script for Triple Axis Instruments using the
# Mark Lumsden UB matrix calculus
#
# Dr. Mark Koennecke, May 2005
#---------------------------------------------------------------------------
# O P T I O N S
#--------------------------------------------------------------------------
# simMode
# - 0 real instrument
# - 1 development simulation
# - 2 simserver at instrument
#--------------------------------------------------------------------------
set simMode 1
set ts psts230.psi.ch
set mupad 0
#---------- Enable this for more startup debugging
protocol set all
#--------------- define home
if {$simMode == 1} {
set home $env(HOME)/src/workspace/sics/sim/taspub_sics
set scripthome $home
set loghome $env(HOME)/src/workspace/sics/sim/tmp
set datahome $loghome
ServerOption LoggerDir $env(HOME)/src/workspace/sics/test/samenv
} else {
set home /home/taspub
set scripthome $home/taspub_sics
set loghome $home/log
set datahome $home/data/2010
ServerOption LoggerDir $home/sea/logger
}
#ServerOption RedirectFile $loghome/stdtas
ServerOption ReadTimeOut 10
ServerOption AcceptTimeOut 10
ServerOption ReadUserPasswdTimeout 500000
ServerOption LogFileBaseName $loghome/tasplog
ServerOption ServerPort 2911
ServerOption InterruptPort 2917
ServerOption LogFileDir $loghome
ServerOption QuieckPort 2108
ServerOption statusfile $datahome/taspubstat.tcl
# Telnet Options
ServerOption TelnetPort 1301
ServerOption TelWord sicslogin
#---------------------------------------------------------------------------
# U S E R S
# Here the SICS users are specified
# Syntax: SicsUser name password userRightsCode
#SicsUser Spy 007 3
#---------------------------------------------------------------------------
SicsUser Spy 007 1
SicsUser Manager Manager 1
SicsUser lnsmanager lnsSICSlns 1
SicsUser user 10lns1 2
SicsUser taspuser 10lns1 2
#---------------------------------------------------------------------------
# M O T O R S
if {$simMode == 0} {
MakeRS232Controller mota $ts 3002
mota replyterminator 0xd
mota timeout 1000
mota send "RMT 1"
mota send "ECHO 0"
mota send "RMT 1"
mota send "ECHO 0"
#mota debug 1
Motor A1 el734hp mota 1 # Monochromator Theta
a1 interruptmode 1
Motor A2 el734hp mota 9 # Monochromator Two-Theta
a2 interruptmode 1
Motor A3 el734hp mota 10 # Sample theta or omega
a3 interruptmode 1
Motor A4 el734hp mota 11 # Sample Two-Theta
a4 interruptmode 1
Motor MCV el734hp mota 3 # Monochromator curvature vertical
Motor SRO el734hp mota 12 # Sample table second ring
Motor MTL el734hp mota 4 # Monochromator translation lower
Motor MTU el734hp mota 5 # Monochromator Translation upper
Motor MGL el734hp mota 7 # Monochromator lower goniometer
MakeRS232Controller motb $ts 3003
motb replyterminator 0xd
motb timeout 1000
motb send "RMT 1"
motb send "ECHO 0"
motb send "RMT 1"
motb send "ECHO 0"
Motor A5 el734hp motb 5 # Analyzer Theta
a5 interruptmode 1
Motor A6 el734hp motb 9 # Analyzer Two-Theta
a6 interruptmode 1
Motor ACH el734hp motb 6 # Analyzer curvature horizontal
Motor STL el734hp motb 1 # Sample lower translation
Motor STU el734hp motb 2 # Sample upper translation
Motor ATL el734hp motb 7 # Analyzer lower translation
Motor ATU el734hp motb 8 # Analyzer upper translation
#Motor SGL SIM -17 17 -1 .0 # Monochromator upper goniometer
#Motor SGU SIM -17 17 -1 .0 # Monochromator upper goniometer
Motor SGL el734hp motb 3 # Sample lower goniometer
Motor SGU el734hp motb 4 # Sample upper goniometer
Motor AGL el734hp motb 11 # Analyzer lower goniometer
#Motor AGU SIM -30. 30. -.1 2. # Analyzer upper goniometer
#Motor MSC SIM -30. 30. -.1 2. # Monochromator changer
#Motor ASC SIM -30. 30. -.1 2. # Analyzer changer
#Motor CSC SIM -30. 30. -.1 2. # Collimator changer
mcv precision .1
} else {
Motor A1 sim -86.7 6.1 -.1 .1 # Monochromator Theta
Motor A2 sim -128.5 -21.65 -.1 .1 # Monochromator Two-Theta
Motor A3 sim -179 170 -.1 .1 # Sample theta or omega
Motor A4 sim -135 137.9 -.1 .1 # Sample Two-Theta
Motor A5 sim -103 103 -.1 .1 # Analyzer Theta
Motor A6 sim -138 118 -.1 .1 # Analyzer Two-Theta
Motor MCV sim -9 124 -.1 .1 # Monochromator curvature vertical
Motor SRO sim -180 351 -.1 .1 # Sample table second ring
Motor ACH sim -.5 11 -.1 .1 # Analyzer curvature horizontal
Motor MTL sim -17 17 -.1 .1 # Monochromator translation lower
Motor MTU sim -17 17 -.1 .1 # Monochromator Translation upper
Motor SGL sim -19 19 -1. 0 # Sample lower translation
Motor SGU SIM -30. 30. -.1 2. # Sample upper translation
Motor ATL sim -17 17 -.1 .1 # Analyzer lower translation
Motor ATU sim -17 17 -.1 .1 # Analyzer upper translation
Motor MGL sim -10 10 -.1 .1 # Monochromator lower goniometer
Motor SGL sim -16 16 -.1 .1 # Sample lower goniometer
Motor SGU sim -16 16 -.1 .1 # Sample upper goniometer
Motor AGL sim -10 10 -.1 .1 # Analyzer lower goniometer
#--------------------------------------------------------------------------
# C U R R E N T S
Motor I1 sim -2 2 -0.1 0.1
Motor I2 sim -2 2 -0.1 0.1
Motor I3 sim -2 2 -0.1 0.1
Motor I4 sim -2 2 -0.1 0.1
Motor I5 sim -2 2 -0.1 0.1
Motor I6 sim -2 2 -0.1 0.1
Motor I7 sim -2 2 -0.1 0.1
Motor I8 sim -2 2 -0.1 0.1
}
#--------- script for saving motor parameters
Publish savemotorpar Mugger
proc savemotorpar {dir} {
set mot(controllerlist) [list mota motb]
set mot(mota) [list 1 9 10 11 3 12 4 5 7]
set mot(motb) [list 5 9 6 1 2 7 8 3 4 11]
savemotorarray mot $dir
clientput "Done saving motor parameters"
}
#--------------------------------------------------------------------------
# C O U N T E R
#--------------------------------------------------------------------------
if {$simMode == 0} {
MakeCounter counter el737hp $ts 3004
} else {
MakeCounter counter sim -1.
}
#--------------------------------------------------------------------------
VarMake instrument Text Mugger
instrument TASPUB
instrument lock
VarMake title Text User
VarMake user Text User
VarMake affiliation Text User
VarMake address Text User
VarMake email Text User
VarMake lastscancommand Text User
VarMake output Text User
VarMake local Text User
VarMake sample Text User
#--------------------------------------------------------------------------
# I N S T A L L M U P A D
#-------------------------------------------------------------------------
if {$mupad == 1} {
source $scripthome/mupad.tcl
# new mupad commands by M.Z.
set mudata(sim) 0
source $scripthome/muco.tcl
source $scripthome/stddrive.tcl
source $scripthome/slsecho.tcl
if {$simMode == 0} {
makesctcontroller slssct slsecho taspmagnet:5001
slsecho::makeslsecho i1 0 slssct
slsecho::makeslsecho i2 1 slssct
slsecho::makeslsecho i3 2 slssct
slsecho::makeslsecho i4 3 slssct
slsecho::makeslsecho i5 4 slssct
slsecho::makeslsecho i6 5 slssct
}
}
#------------------------------------------------------------------------
# Polarisation file
VarMake polfile Text User
#-------------------------------------------------------------------------
# Datafile generation variables
VarMake SicsDataPath Text Mugger
SicsDataPath "$datahome/"
sicsdatapath lock
VarMake SicsDataPrefix Text Mugger
SicsDataPrefix taspub
SicsDataPrefix lock
VarMake SicsDataPostFix Text Mugger
SicsDataPostFix ".xml"
#SicsDataPostFix ".scn"
SicsDataPostFix lock
MakeDataNumber SicsDataNumber "$datahome/DataNumber"
#----------------------------------------------------------------------
# Collimation etc. parameters
#----------------------------------------------------------------------
VarMake alf1 Float User
VarMake alf2 Float User
VarMake alf3 Float User
VarMake alf4 Float User
VarMake bet1 Float User
VarMake bet2 Float User
VarMake bet3 Float User
VarMake bet4 Float User
VarMake ETAM Float User
VarMake ETAS Float User
VarMake ETAA Float User
#-----------------------------------------------------------------------
# A helper variable for the status display
#-----------------------------------------------------------------------
VarMake scaninfo text Internal
scaninfo "0,Unknown,1.0,.1"
#------------------------------------------------------------------------
# I N S T A L L S P E C I A L T A S C O M M A N D S
#------------------------------------------------------------------------
MakeTasUB tasub
#--------------------------- TAS scan command
MakeScanCommand iscan counter tas.hdd recover.bin
MakePeakCenter iscan
MakeTasScan iscan tasub
#-------------------------- new exe manager
definealias do exe
alias batchroot exe batchpath
#-------------------------- normal drive command
MakeDrive
#-------------------------- for NeXus
MakeNXScript
#------------------------------------------------------------------------
# I N S T A L L T A S U B S C R I P T E D C O M M A N D S
#------------------------------------------------------------------------
source $scripthome/taspubcom.tcl
#--------------------------------------------------------------------------
# stuff for sea
if {$simMode == 0} {
definealias tem temperature
source $home/sea/tcl/remob.tcl
connect_sea
#-------------------------------------------------------------------------
# SPS to look at guide field
#------------------------------------------------------------------------
MakeSPS sps $ts 3006 10
}
restore
sicscron 10 backupCron $datahome/statusHistory

View File

@@ -0,0 +1,47 @@
#---------------------------------------------------------------------------
# The triple axis people love to have the command set emulate the command
# set of TASMAD as closely as possible. This is implemented through
# some scripting. This version is for the new syntax to be used with the
# new UB matrix calculaus for triple axis.
#
# Mark Koennecke, May 2005
#--------------------------------------------------------------------------
proc SplitReply { text } {
set l [split $text =]
return [string trim [lindex $l 1]]
}
source $scripthome/nxtas.tcl
source $scripthome/nxsupport.tcl
source $scripthome/tasscript.tcl
initxmlscan
#------------------------------------------------------------------------
proc wwwsics {} {
append result "<table BORDER=2>\n"
append result "<tr><th>User</th> <td>" [tasSplit [user]] "</td></tr>\n"
append result "<tr><th>Title</th> <td>"
append result [tasSplit [title]] "</td></tr>\n"
append result "<tr><th>Status</th> <td>"
append result [tasSplit [status]] "</td></tr>\n"
append result "<tr><th>Last Scan Command</th> <td>"
append result [tasSplit [lastcommand]] "</td></tr>\n"
append result "<tr><th>A1</td><td>"
append result [tasSplit [a1]] "</td><th>A2</th><td>"
append result [tasSplit [a2]] "</td></tr>\n"
append result "<tr><th>A3</td><td>"
append result [tasSplit [a3]] "</td><th>A4</th><td>"
append result [tasSplit [a4]] "</td></tr>\n"
append result "<tr><th>A5</td><td>"
append result [tasSplit [a5]] "</td><th>A6</th><td>"
append result [tasSplit [a6]] "</td></tr>\n"
append result "<tr><th>Ki</th><td>" [tasSplit [ki]] "</td>"
append result "<th>Kf</th><td>" [tasSplit [kf]] "</td>"
append result "<th>En</th><td>" [tasSplit [en]] "</td></tr>\n"
append result "<tr><th>Qh</th><td>" [tasSplit [qh]] "</td>"
append result "<th>Qk</th><td>" [tasSplit [qk]] "</td>"
append result "<th>Ql</th><td>" [tasSplit [ql]] "</td></tr>\n"
append result "</table>\n"
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,138 @@
##NXDICT-1.0
#-----------------------------------------------------------------------
# NeXus dictionary file for a triple axis spectrometer following
# the instrument definition as of May 2005
#
# Do not modify this file if you do not knwo what you are doing,
# you may corrupt your data files!
#
# Mark Koennecke, May 2005
# Mark Koennecke, August 2006
# Change to new NeXus standards, Mark Koennecke, February 2007
#----------------------------------------------------------------------
NP=1
INSTRUMENT=TASPUB
#--------- entry level
etitle=/entry1,NXentry/SDS title -type NX_CHAR -rank 1
instrument=/entry1,NXentry/SDS instrument -type NX_CHAR -rank 1
escancommand=/entry1,NXentry/SDS scancommand -type NX_CHAR -rank 1
escanvars=/entry1,NXentry/SDS scanvars -type NX_CHAR -rank 1
estart=/entry1,NXentry/SDS start_time -type DFNT_CHAR -rank 1
eend=/entry1,NXentry/SDS end_time -type DFNT_CHAR -rank 1
edef=/entry1,NXentry/SDS definition -type DFNT_CHAR -rank 1 \
-attr {URL,http://www.nexus.anl.gov/instruments/xml/NXmonotas.xml} \
-attr {version,1.0}
#---------- looser
usnam=/entry1,NXentry/user,NXuser/SDS name -type NX_CHAR -rank 1
usaff=/entry1,NXentry/user,NXuser/SDS affiliation -type NX_CHAR -rank 1
usadd=/entry1,NXentry/user,NXuser/SDS address -type NX_CHAR -rank 1
usmail=/entry1,NXentry/user,NXuser/SDS email -type NX_CHAR -rank 1
#---------- local contact
lonam=/entry1,NXentry/local_contact,NXuser/SDS name -type NX_CHAR -rank 1
#------------- sample
sa_temperature=/entry1,NXentry/sample,NXsample/SDS temperature \
-attr {units,K} -rank 1 -dim {-1}
sc_tt=/entry1,NXentry/sample,NXsample/SDS temperature \
-attr {units,K} -rank 1 -dim {-1}
sa_field=/entry1,NXentry/sample,NXsample/SDS magnetic_field \
-attr {units,Tesla} -rank 1 -dim {-1}
sc_temperature=/entry1,NXentry/sample,NXsample/SDS temperature \
-attr {units,K} -rank 1 -dim {-1}
sc_te=/entry1,NXentry/sample,NXsample/SDS temperature \
-attr {units,K} -rank 1 -dim {-1}
sc_field=/entry1,NXentry/sample,NXsample/SDS magnetic_field \
-attr {units,Tesla} -rank 1 -dim {-1}
sc_mf=/entry1,NXentry/sample,NXsample/SDS magnetic_field \
-attr {units,Tesla} -rank 1 -dim {-1}
sanam=/entry1,NXentry/sample,NXsample/SDS name -type NX_CHAR -rank 1
sa_cell=/entry1,NXentry/sample,NXsample/SDS unit_cell -rank 1 -dim {6}
sa_norm=/entry1,NXentry/sample,NXsample/SDS plane_normal -rank 1 -dim {3}
sa_vec1=/entry1,NXentry/sample,NXsample/SDS plane_vector_1 -rank 1 -dim {9}
sa_vec2=/entry1,NXentry/sample,NXsample/SDS plane_vector_2 -rank 1 -dim {9}
sa_ub=/entry1,NXentry/sample,NXsample/SDS orientation_matrix -rank 2 \
-dim {3,3}
sc_a2=/entry1,NXentry/sample,NXsample/SDS polar_angle \
-rank 1 -attr {units,degree} -dim {-1}
sc_a3=/entry1,NXentry/sample,NXsample/SDS rotation_angle \
-rank 1 -attr {units,degree} -dim {-1}
sc_sgl=/entry1,NXentry/sample,NXsample/SDS sgl \
-rank 1 -attr {units,degree} -dim {-1}
sc_sgu=/entry1,NXentry/sample,NXsample/SDS sgu \
-rank 1 -attr {units,degree} -dim {-1}
2tm_zero=/entry1,NXentry/sample,NXsample/SDS polar_angle_zero \
-rank 1 -attr {units,degree}
om_zero=/entry1,NXentry/sample,NXsample/SDS rotation_angle_zero \
-rank 1 -attr {units,degree}
sgl_zero=/entry1,NXentry/sample,NXsample/SDS sgl_zero \
-rank 1 -attr {units,degree}
sgu_zero=/entry1,NXentry/sample,NXsample/SDS sgu_zero \
-rank 1 -attr {units,degree}
sc_qh=/entry1,NXentry/sample,NXsample/SDS Qh -rank 1 -dim {-1}
sc_qk=/entry1,NXentry/sample,NXsample/SDS Qk -rank 1 -dim {-1}
sc_ql=/entry1,NXentry/sample,NXsample/SDS Ql -rank 1 -dim {-1}
sc_qm=/entry1,NXentry/sample,NXsample/SDS Qm -rank 1 -dim {-1}
sc_en=/entry1,NXentry/sample,NXsample/SDS energy_transfer -rank 1 \
-attr {units,mev} -dim {-1}
saaz=/entry1,NXentry/sample,NXsample/SDS azimuthal_angle -attr {units,degree}
sc_tu=/entry1,NXentry/sample,NXsample/SDS x \
-rank 1 -attr {units,degree} -dim {-1}
sc_tl=/entry1,NXentry/sample,NXsample/SDS y \
-rank 1 -attr {units,degree} -dim {-1}
#----------- monochromator
mono_type=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS type -type NX_CHAR -rank 1
sc_ei=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS energy -rank 1 -dim {-1} \
-attr {units,mev} -dim {-1}
sc_a1=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS rotation_angle \
-rank 1 -dim {-1} -attr {units,degree} -dim {-1}
omm_zero=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS rotation_angle_zero \
-rank 1 -dim {-1} -attr {units,degree}
mono_dd=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS d_spacing -attr {units,Angstroem}
sc_mcv=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS curvature \
-rank 1 -dim {-1} -attr {units,degree}
sc_cum=/entry1,NXentry/$(INSTRUMENT),NXinstrument/monochromator,NXcrystal/SDS curvature \
-rank 1 -dim {-1} -attr {units,degree} -dim {-1}
#----------- analyzer
ana_type=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS type -type NX_CHAR -rank 1
sc_ef=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS energy -rank 1 -dim {-1} \
-attr {units,mev}
sc_a5=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS rotation_angle \
-rank 1 -dim {-1} -attr {units,degree}
a5_zero=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS rotation_angle_zero \
-attr {units,degree}
sc_a4=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS polar_angle -rank 1 -dim {-1} \
-attr {units,degree}
2t_zero=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS polar_angle_zero -attr {units,degree}
ana_dd=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS d_spacing -attr {units,Angstroem}
ana_az=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS azimuthal_angle -attr {units,degree}
sdistance=/entry1,NXentry/$(INSTRUMENT),NXinstrument/analyzer,NXcrystal/SDS distance -attr {units,mm}
#--------- detector
set winno 1
sc_a6=/entry1,NXentry/$(INSTRUMENT),NXinstrument/detector,NXdetector/SDS polar_angle -rank 1 -dim {-1} \
-attr {units,degree}
2ta_zero=/entry1,NXentry/$(INSTRUMENT),NXinstrument/detector,NXdetector/SDS polar_angle_zero -attr {units,degree}
counts=/entry1,NXentry/$(INSTRUMENT),NXinstrument/detector,NXdetector/SDS data -type NX_INT32 \
-rank 1 -dim {-1} -attr {signal,1}
det_az=/entry1,NXentry/$(INSTRUMENT),NXinstrument/detector,NXdetector/SDS azimuthal_angle -attr {units,degree}
adistance=/entry1,NXentry/$(INSTRUMENT),NXinstrument/adetector,NXcrystal/SDS distance -attr {units,mm}
#------- monitors
cter_mode=/entry1,NXentry/control,NXmonitor/SDS mode -type NX_CHAR -rank 1 -dim {30}
cter_preset=/entry1,NXentry/control,NXmonitor/SDS preset
motime=/entry1,NXentry/control,NXmonitor/SDS time -attr {units,seconds} -rank 1 -dim {-1}
cter_01=/entry1,NXentry/control,NXmonitor/SDS data -type NX_INT32 -rank 1 -dim {-1}
cter_02=/entry1,NXentry/aux_detector,NXmonitor/SDS data -type NX_INT32 -rank 1 -dim {-1}
#------- NXdata
dana=/entry1,NXentry/data,NXdata/NXVGROUP
emotor_a1=/entry1,NXentry/data,NXdata/SDS a1 \
-rank 1 -dim {-1} -attr {units,degree}
emotor_a2=/entry1,NXentry/data,NXdata/SDS a2 \
-rank 1 -dim {-1} -attr {units,degree}
emotor_a3=/entry1,NXentry/data,NXdata/SDS a3 \
-rank 1 -dim {-1} -attr {units,degree}
emotor_a4=/entry1,NXentry/data,NXdata/SDS a4 -rank 1 -dim {-1} \
-attr {units,degree}
emotor_a5=/entry1,NXentry/data,NXdata/SDS a5 -rank 1 -dim {-1} \
-attr {units,degree}
emotor_a6=/entry1,NXentry/data,NXdata/SDS a6 -rank 1 -dim {-1} \
-attr {units,degree}
danascanvar=/entry1,NXentry/data,NXdata/SDS scanvar \
-type NX_FLOAT32 -attr {axis,1} -rank 1 -dim {-1}