Provide cylindrical detector support for Echidna and Wombat.
Includes a proc to generate a two_theta axis from the X bin boundaries. r2135 | ffr | 2007-08-16 17:14:51 +1000 (Thu, 16 Aug 2007) | 3 lines
This commit is contained in:
committed by
Douglas Clowes
parent
29cbc6e01f
commit
df40d6a26f
@@ -0,0 +1,50 @@
|
|||||||
|
namespace eval histogram_memory {
|
||||||
|
::utility::mkVar detector_radius_mm Float user radius true detector true true
|
||||||
|
sicslist setatt detector_radius_mm units mm
|
||||||
|
|
||||||
|
##\brief Calculate two_theta array from X bin boundaries
|
||||||
|
#
|
||||||
|
# requires detector_active_width_mm det_radius_mm deg_per_rad
|
||||||
|
proc two_theta {args} {
|
||||||
|
variable state
|
||||||
|
set opt [lindex $args 0]
|
||||||
|
set arglist [lrange $args 1 end]
|
||||||
|
set proc_name [namespace origin [lindex [info level 0] 0]]
|
||||||
|
set det_width_mm [SplitReply [detector_active_width_mm]]
|
||||||
|
set det_radius_mm [SplitReply [detector_radius_mm]]
|
||||||
|
set deg_per_radian [SplitReply [deg_per_rad]]
|
||||||
|
switch -- $opt {
|
||||||
|
"-centres" - "-boundaries" - "-graph_type" {
|
||||||
|
return [calc_axis $proc_name @none @none @none $opt $args]
|
||||||
|
}
|
||||||
|
"-arrayname" {
|
||||||
|
set max_b [OAT_TABLE -get X_max]
|
||||||
|
set min_b [OAT_TABLE -get X_min]
|
||||||
|
set scale_factor [expr {$deg_per_radian*($det_width_mm/$det_radius_mm) / ($max_b - $min_b)}]
|
||||||
|
set offset [::histogram_memory::detector_posn_degrees]
|
||||||
|
return [calc_axis $proc_name $scale_factor $offset [OAT_TABLE -get X_boundaries] $opt $arglist]
|
||||||
|
}
|
||||||
|
"-units" {
|
||||||
|
return "degrees"
|
||||||
|
}
|
||||||
|
default {
|
||||||
|
set max_b [OAT_TABLE -get X_max]
|
||||||
|
set min_b [OAT_TABLE -get X_min]
|
||||||
|
set scale_factor [expr {$deg_per_radian*($det_width_mm/$det_radius_mm) / ($max_b - $min_b)}]
|
||||||
|
set offset [lindex $arglist 0]
|
||||||
|
return [calc_axis $proc_name $scale_factor $offset [OAT_TABLE -get X_boundaries] $args]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
set script_name ::histogram_memory::two_theta
|
||||||
|
publish $script_name user
|
||||||
|
sicslist setatt $script_name privilege internal
|
||||||
|
sicslist setatt $script_name kind script
|
||||||
|
sicslist setatt $script_name access read_only
|
||||||
|
sicslist setatt $script_name dtype floatvarar
|
||||||
|
sicslist setatt $script_name dlen 100
|
||||||
|
sicslist setatt $script_name klass detector
|
||||||
|
sicslist setatt $script_name mutable false
|
||||||
|
sicslist setatt $script_name long_name two_theta
|
||||||
|
sicslist setatt $script_name units [::histogram_memory::two_theta -units]
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user