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:
Ferdi Franceschini
2007-08-16 17:14:51 +10:00
committed by Douglas Clowes
parent 29cbc6e01f
commit df40d6a26f

View File

@@ -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]
}