Added user group, detector angular coverage, vertical axis and polar angle (currently filled with zeros because I recently broke it)

r1573 | ffr | 2007-03-03 09:12:38 +1100 (Sat, 03 Mar 2007) | 2 lines
This commit is contained in:
Ferdi Franceschini
2007-03-03 09:12:38 +11:00
committed by Douglas Clowes
parent b1724bb541
commit 28a32cb950
2 changed files with 44 additions and 25 deletions

View File

@@ -18,6 +18,7 @@ scan_variable=scanvar
samplemotor=samplemotor samplemotor=samplemotor
#---------- NXentry level #---------- NXentry level
etitle=/$(entryName),NXentry/SDS title -type NX_CHAR etitle=/$(entryName),NXentry/SDS title -type NX_CHAR
sics_release=/$(entryName),NXentry/SDS release_tag -type NX_CHAR
estart=/$(entryName),NXentry/SDS start_time -type NX_CHAR estart=/$(entryName),NXentry/SDS start_time -type NX_CHAR
eend=/$(entryName),NXentry/SDS end_time -type NX_CHAR eend=/$(entryName),NXentry/SDS end_time -type NX_CHAR
#----------------- NXinstrument #----------------- NXinstrument
@@ -25,6 +26,12 @@ iname=/$(entryName),NXentry/$(inst),NXinstrument/SDS name -type NX_CHAR \
-rank 1 -dim {132} -rank 1 -dim {132}
#----------------- NXuser
username=/$(entryName),NXentry/user,NXuser/SDS name -type NX_CHAR
userrole=/$(entryName),NXentry/user,NXuser/SDS role -type NX_CHAR
useraddress=/$(entryName),NXentry/user,NXuser/SDS address -type NX_CHAR
userphone=/$(entryName),NXentry/user,NXuser/SDS phone -type NX_CHAR
useremail=/$(entryName),NXentry/user,NXuser/SDS email -type NX_CHAR
#----------------- NXmonitor #----------------- NXmonitor
mmode=/$(entryName),NXentry/monitor,NXmonitor/SDS mode -type NX_CHAR mmode=/$(entryName),NXentry/monitor,NXmonitor/SDS mode -type NX_CHAR
mpreset=/$(entryName),NXentry/monitor,NXmonitor/SDS preset -type NX_FLOAT32 mpreset=/$(entryName),NXentry/monitor,NXmonitor/SDS preset -type NX_FLOAT32
@@ -39,8 +46,12 @@ sprobe=/$(entryName),NXentry/$(inst),NXinstrument/source,NXsource/SDS probe -typ
#------------- counter #------------- counter
#-------------- Detector #-------------- Detector
# histogram data # histogram data
dradius=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS distance -type NX_FLOAT32 dradius=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS distance -type NX_FLOAT32 -attr {units,mm}
dheight=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS detector_height -type NX_FLOAT32 -attr {units,mm} -attr {long_name, active height}
detangle_rad=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS angular_coverage -type NX_FLOAT32 -attr {units,radians}
detangle_degrees=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS angular_coverage -type NX_FLOAT32 -attr {units,degrees}
dtheta=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS polar_angle -type NX_FLOAT32 -LZW -rank 2 -dim {$(padim0),$(padim1)} -attr {units,radians} dtheta=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS polar_angle -type NX_FLOAT32 -LZW -rank 2 -dim {$(padim0),$(padim1)} -attr {units,radians}
dvaxis=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS vertical_axis -type NX_FLOAT32 -LZW -rank 1 -dim {$(padim0)} -attr {units,mm}
dcounts=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS \ dcounts=/$(entryName),NXentry/$(inst),NXinstrument/$(detector),NXdetector/SDS \
data -type NX_INT32 -LZW -rank 2 -dim {$(dim0),$(dim1)} \ data -type NX_INT32 -LZW -rank 2 -dim {$(dim0),$(dim1)} \
@@ -66,7 +77,6 @@ mtth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS m
mth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS mth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,mth} mth=/$(entryName),NXentry/$(inst),NXinstrument/$(monochromator),NXcrystal/SDS mth -type NX_FLOAT32 -attr {units,degree} -attr {long_name,mth}
#--------------- NXsample #--------------- NXsample
saname=/$(entryName),NXentry/sample,NXsample/SDS name -type NX_CHAR saname=/$(entryName),NXentry/sample,NXsample/SDS name -type NX_CHAR
sarot=/$(entryName),NXentry/sample,NXsample/SDS rotation_angle -type NX_FLOAT32 -attr {units,degree}
som=/$(entryName),NXentry/sample,NXsample/SDS som -type NX_FLOAT32 -attr {units,degree} -attr {long_name,som} som=/$(entryName),NXentry/sample,NXsample/SDS som -type NX_FLOAT32 -attr {units,degree} -attr {long_name,som}
schi=/$(entryName),NXentry/sample,NXsample/SDS schi -type NX_FLOAT32 -attr {units,degree} -attr {long_name,schi} schi=/$(entryName),NXentry/sample,NXsample/SDS schi -type NX_FLOAT32 -attr {units,degree} -attr {long_name,schi}
sphi=/$(entryName),NXentry/sample,NXsample/SDS sphi -type NX_FLOAT32 -attr {units,degree} -attr {long_name,sphi} sphi=/$(entryName),NXentry/sample,NXsample/SDS sphi -type NX_FLOAT32 -attr {units,degree} -attr {long_name,sphi}
@@ -93,6 +103,7 @@ ss2hg=/$(entryName),NXentry/slits,NXfilter/SDS ss2hg -type NX_FLOAT32 -attr {un
ss2ho=/$(entryName),NXentry/slits,NXfilter/SDS ss2ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2ho} ss2ho=/$(entryName),NXentry/slits,NXfilter/SDS ss2ho -type NX_FLOAT32 -attr {units,degree} -attr {long_name,ss2ho}
#----------------NXdata ------------------------------------------------ #----------------NXdata ------------------------------------------------
scandata=/$(entryName),NXentry/scan_data,NXdata/NXVGROUP scandata=/$(entryName),NXentry/scan_data,NXdata/NXVGROUP
scanvertaxis=/$(entryName),NXentry/vertical_axis,NXdata/NXVGROUP
scanvar=/$(entryName),NXentry/scan_variable,NXdata/NXVGROUP scanvar=/$(entryName),NXentry/scan_variable,NXdata/NXVGROUP
scanstep=/$(entryName),NXentry/scan_step,NXdata/SDS value -type NX_FLOAT32 -attr {units,degree} -attr {long_name,stepsize} scanstep=/$(entryName),NXentry/scan_step,NXdata/SDS value -type NX_FLOAT32 -attr {units,degree} -attr {long_name,stepsize}
#histogram=/$(entryName),NXentry/histogram,NXdata/NXVGROUP #histogram=/$(entryName),NXentry/histogram,NXdata/NXVGROUP

View File

@@ -10,8 +10,10 @@ proc newFileName {} {
set dataPath [SplitReply [sicsdatapath]]; set dataPath [SplitReply [sicsdatapath]];
set prefix [SplitReply [sicsdataprefix]]; set prefix [SplitReply [sicsdataprefix]];
set postfix [SplitReply [sicsdatapostfix]]; set postfix [SplitReply [sicsdatapostfix]];
set isodate [lindex [split [sicstime] " "] 0]; set date_time_arr [split [sicstime] " "]
return [format "%s/%s_%s_%s%s" $dataPath $prefix $isodate $idNum $postfix]; set isodate [lindex $date_time_arr 0];
set isotime [string map {: -} [lindex $date_time_arr 1]];
return [format "%s/%s_%sT%s_%05d%s" $dataPath $prefix $isodate $isotime $idNum $postfix];
} }
proc nxcreatefile {{type nx.hdf}} { proc nxcreatefile {{type nx.hdf}} {
@@ -21,6 +23,8 @@ proc nxcreatefile {{type nx.hdf}} {
array set nxmode [list nx.hdf create5 h5 create5 nx5 create5 xml createxml]; array set nxmode [list nx.hdf create5 h5 create5 nx5 create5 xml createxml];
set dataFileName [newFileName] set dataFileName [newFileName]
nxscript $nxmode($type) $dataFileName $cfPath(nexus)/nexus.dic; nxscript $nxmode($type) $dataFileName $cfPath(nexus)/nexus.dic;
nxscript updatedictvar entryName sics_release
nxscript puttext sics_release [SplitReply [sics_release]]
set nxFileOpen true set nxFileOpen true
} }
@@ -49,7 +53,7 @@ set pi 3.1415926
set angsep 1.25 set angsep 1.25
# stthmin = (180 - (1.25*127))/2 # stthmin = (180 - (1.25*127))/2
proc polar_angle {dradius det_angle active_length zi zj det_rot y_offset dim0 dim1} { proc polar_angle {dradius det_angle active_length zi zj det_rot y_offset dim0 dim1} {
global tharr global tharr det_height
set angsep [expr $det_angle / ($dim1-1)] set angsep [expr $det_angle / ($dim1-1)]
set ysep [expr $active_length/($dim0-1)] set ysep [expr $active_length/($dim0-1)]
@@ -58,15 +62,17 @@ proc polar_angle {dradius det_angle active_length zi zj det_rot y_offset dim0 di
for {set i 0} {$i < $dim0} {incr i} { for {set i 0} {$i < $dim0} {incr i} {
set height [expr $y_offset - ($i - $imid)*$ysep] set height [expr $y_offset - ($i - $imid)*$ysep]
set det_height($i) $height
for {set j 0} {$j < $dim1} {incr j} { for {set j 0} {$j < $dim1} {incr j} {
set alpha [expr $det_rot - ($j - $jmid)*$angsep] # set alpha [expr $det_rot - ($j - $jmid)*$angsep]
set pang [expr acos($dradius * cos($alpha)/sqrt($dradius*$dradius + $height*$height))] # set pang [expr acos($dradius * cos($alpha)/sqrt($dradius*$dradius + $height*$height))]
set tharr([expr $i*$dim1+$j]) $pang # set tharr([expr $i*$dim1+$j]) $pang
set tharr([expr $i*$dim1+$j]) 0
} }
} }
} }
proc addnxentry {nxobj entryname scanVariable scanVarPos scanVarStep} { proc addnxentry {nxobj entryname scanVariable scanVarPos scanVarStep start_time} {
global dradius ndect angsep; global dradius ndect angsep;
set dim0 [SplitReply [hmm configure dim0]] set dim0 [SplitReply [hmm configure dim0]]
set dim1 [SplitReply [hmm configure dim1]] set dim1 [SplitReply [hmm configure dim1]]
@@ -76,28 +82,24 @@ putmonitor $nxobj
putsample $nxobj putsample $nxobj
set scanVar_value [string trim [lindex [split [$scanVariable] =] 1]] set scanVar_value [string trim [lindex [split [$scanVariable] =] 1]]
$nxobj putfloat $scanVariable $scanVar_value $nxobj putfloat $scanVariable $scanVar_value
# Add thetamin and stth to tharr(i) $nxobj putfloat detangle_degrees [SplitReply [detector_angle_deg]]
# set sampletwotheta [string trim [lindex [split [stth] =] 1]] $nxobj puttext estart $start_time
# for {set i 0} {$i < $ndect} {incr i} { putpolar_angle $nxobj $dim0 $dim1
# set tharr($i) [expr ($i-63.5)*$angsep + $sampletwotheta]
# }
# $nxobj updatedictvar thetadim $ndect
# $nxobj putarray dtheta tharr $ndect
putpolar_angle $nxobj $dim0 $dim1
$nxobj puttext dtype He-3 position sensitive detector, tube active length=335+/-5mm, tube diameter=25.4 +/- 0.8mm $nxobj puttext dtype He-3 position sensitive detector, tube active length=335+/-5mm, tube diameter=25.4 +/- 0.8mm
$nxobj puttext ddesc 128 He-3 proportional counter detector tubes (GE Energy Reuter Stokes Inc. item=RS-P4-0814-217) $nxobj puttext ddesc 128 He-3 proportional counter detector tubes (GE Energy Reuter Stokes Inc. item=RS-P4-0814-217)
$nxobj putfloat dradius $dradius $nxobj putfloat dradius [SplitReply [detector_radius_mm]]
$nxobj puttext dlayout area $nxobj puttext dlayout area
$nxobj puthm dcounts hmm $nxobj puthm dcounts hmm
$nxobj puthm deff hmm $nxobj puthm deff hmm
$nxobj makelink scandata dcounts $nxobj makelink scandata dcounts
$nxobj makelink scanvertaxis dvaxis
$nxobj makelink scandata dtheta $nxobj makelink scandata dtheta
$nxobj makelink scanvar $scanVariable $nxobj makelink scanvar $scanVariable
$nxobj putfloat scanstep $scanVarStep $nxobj putfloat scanstep $scanVarStep
$nxobj puttext eend [sicstime];
} }
proc bm_addnxentry {nxobj entryname scanVariable scanVarPos scanVarStep} { proc bm_addnxentry {nxobj entryname scanVariable scanVarPos scanVarStep start_time} {
global dradius ndect angsep; global dradius ndect angsep;
putcommon $nxobj $entryname $scanVariable putcommon $nxobj $entryname $scanVariable
putcrystal $nxobj putcrystal $nxobj
@@ -109,22 +111,23 @@ putsample $nxobj
# $nxobj puttext dtype He-3 position sensitive detector, tube active length=335+/-5mm, tube diameter=25.4 +/- 0.8mm # $nxobj puttext dtype He-3 position sensitive detector, tube active length=335+/-5mm, tube diameter=25.4 +/- 0.8mm
# $nxobj puttext ddesc 128 He-3 proportional counter detector tubes (GE Energy Reuter Stokes Inc. item=RS-P4-0814-217) # $nxobj puttext ddesc 128 He-3 proportional counter detector tubes (GE Energy Reuter Stokes Inc. item=RS-P4-0814-217)
# $nxobj putfloat dradius $dradius # $nxobj putfloat dradius $dradius
$nxobj puttext estart $start_time
$nxobj puttext dlayout point $nxobj puttext dlayout point
$nxobj makelink scandata mdata $nxobj makelink scandata mdata
$nxobj makelink scanvar $scanVariable $nxobj makelink scanvar $scanVariable
$nxobj putfloat scanstep $scanVarStep $nxobj putfloat scanstep $scanVarStep
$nxobj puttext eend [sicstime];
} }
proc putmonitor {nxobj} { proc putmonitor {nxobj} {
$nxobj puttext mmode [string trim [lindex [split [bm getmode] =] 1]] $nxobj puttext mmode [string trim [lindex [split [bm getmode] =] 1]]
$nxobj putfloat mpreset [string trim [lindex [split [bm getpreset] =] 1]] $nxobj putfloat mpreset [string trim [lindex [split [bm getpreset] =] 1]]
$nxobj putint mdata [string trim [lindex [split [bm getcounts] =] 1]] $nxobj putint mdata [string trim [lindex [split [bm getcounts] =] 1]]
$nxobj putfloat mdistance [getVal [sics_bm_distance]] $nxobj putfloat mdistance [SplitReply [bmon_distance]]
} }
proc putpolar_angle {nxobj dim0 dim1} { proc putpolar_angle {nxobj dim0 dim1} {
global tharr global tharr det_height
set det_radius_mm [SplitReply [detector_radius_mm]] set det_radius_mm [SplitReply [detector_radius_mm]]
set det_angle_rad [SplitReply [detector_angle_rad]] set det_angle_rad [SplitReply [detector_angle_rad]]
set det_active_ht_mm [SplitReply [detector_active_height_mm]] set det_active_ht_mm [SplitReply [detector_active_height_mm]]
@@ -135,6 +138,7 @@ proc putpolar_angle {nxobj dim0 dim1} {
polar_angle $det_radius_mm $det_angle_rad $det_active_ht_mm $det_zxp $det_zyp $det_rot_rad 0 $dim0 $dim1 polar_angle $det_radius_mm $det_angle_rad $det_active_ht_mm $det_zxp $det_zyp $det_rot_rad 0 $dim0 $dim1
$nxobj updatedictvar padim0 $dim0 $nxobj updatedictvar padim0 $dim0
$nxobj updatedictvar padim1 $dim1 $nxobj updatedictvar padim1 $dim1
$nxobj putarray dvaxis det_height $dim0
$nxobj putgenarray dtheta tharr [expr $dim0 * $dim1] $nxobj putgenarray dtheta tharr [expr $dim0 * $dim1]
} }
@@ -142,13 +146,17 @@ proc putsample {nxobj} {
$nxobj puttext saname [getVal [Sample]] $nxobj puttext saname [getVal [Sample]]
} }
proc putcrystal {nxobj} { proc putcrystal {nxobj} {
$nxobj puttext ctype [sics_mono_crystal] $nxobj puttext ctype [SplitReply [crystal_type]]
$nxobj putfloat clambda [SplitReply [crystal_wavelength_A]]
} }
proc putcommon {nxobj entryName scanVariable} { proc putcommon {nxobj entryName scanVariable} {
$nxobj updatedictvar entryName $entryName $nxobj updatedictvar entryName $entryName
$nxobj updatedictvar scan_variable $scanVariable $nxobj updatedictvar scan_variable $scanVariable
$nxobj puttext etitle [getVal [Title]] $nxobj puttext etitle [getVal [Title]]
$nxobj puttext iname [getVal [Instrument]] $nxobj puttext iname [getVal [Instrument]]
$nxobj puttext username [SplitReply [user]]
$nxobj puttext useremail [SplitReply [email]]
$nxobj puttext userphone [SplitReply [phone]]
# NXsource # NXsource
$nxobj puttext sname OPAL $nxobj puttext sname OPAL