66from ..reflectometry .conversions import reflectometry_q
77from ..reflectometry .types import (
88 BeamDivergenceLimits ,
9+ CoordTransformationGraph ,
910 WavelengthBins ,
1011 YIndexLimits ,
1112 ZIndexLimits ,
1213)
1314from .geometry import Detector
14- from .types import CoordTransformationGraph
1515
1616
17- def theta (wavelength , divergence_angle , L2 , sample_rotation , detector_rotation ):
17+ def theta (wavelength , pixel_divergence_angle , L2 , sample_rotation , detector_rotation ):
1818 '''
1919 Angle of reflection.
2020
@@ -61,14 +61,15 @@ def theta(wavelength, divergence_angle, L2, sample_rotation, detector_rotation):
6161 '''
6262 c = sc .constants .g * sc .constants .m_n ** 2 / sc .constants .h ** 2
6363 out = (c * L2 * wavelength ** 2 ).to (unit = 'dimensionless' ) + sc .sin (
64- divergence_angle .to (unit = 'rad' , copy = False ) + detector_rotation .to (unit = 'rad' )
64+ pixel_divergence_angle .to (unit = 'rad' , copy = False )
65+ + detector_rotation .to (unit = 'rad' )
6566 )
6667 out = sc .asin (out , out = out )
6768 out -= sample_rotation .to (unit = 'rad' )
6869 return out
6970
7071
71- def angle_of_divergence (theta , sample_rotation , angle_to_center_of_beam ):
72+ def divergence_angle (theta , sample_rotation , angle_to_center_of_beam ):
7273 """
7374 Difference between the incident angle and the center of the incident beam.
7475 Useful for filtering parts of the beam that have too high divergence.
@@ -84,7 +85,7 @@ def angle_of_divergence(theta, sample_rotation, angle_to_center_of_beam):
8485
8586
8687def wavelength (
87- event_time_offset , divergence_angle , L1 , L2 , chopper_phase , chopper_frequency
88+ event_time_offset , pixel_divergence_angle , L1 , L2 , chopper_phase , chopper_frequency
8889):
8990 "Converts event_time_offset to wavelength using the chopper settings."
9091 out = event_time_offset .to (unit = "ns" , dtype = "float64" , copy = True )
@@ -108,37 +109,22 @@ def wavelength(
108109 )
109110 # Correction for path length through guides being different
110111 # depending on incident angle.
111- out -= (divergence_angle .to (unit = "rad" ) / (np .pi * sc .units .rad )) * tau
112+ out -= (pixel_divergence_angle .to (unit = "rad" ) / (np .pi * sc .units .rad )) * tau
112113 out *= (sc .constants .h / sc .constants .m_n ) / (L1 + L2 )
113114 return out .to (unit = 'angstrom' , copy = False )
114115
115116
116117def coordinate_transformation_graph () -> CoordTransformationGraph :
117118 return {
118- "divergence_angle" : "pixel_divergence_angle" ,
119119 "wavelength" : wavelength ,
120120 "theta" : theta ,
121- "angle_of_divergence " : angle_of_divergence ,
121+ "divergence_angle " : divergence_angle ,
122122 "Q" : reflectometry_q ,
123123 "L1" : lambda chopper_distance : sc .abs (chopper_distance ),
124124 "L2" : lambda distance_in_detector : distance_in_detector + Detector .distance ,
125125 }
126126
127127
128- def add_coords (
129- da : sc .DataArray ,
130- graph : dict ,
131- ) -> sc .DataArray :
132- "Adds scattering coordinates to the raw detector data."
133- return da .transform_coords (
134- ("wavelength" , "theta" , "angle_of_divergence" , "Q" , "L1" , "L2" ),
135- graph ,
136- rename_dims = False ,
137- keep_intermediate = False ,
138- keep_aliases = False ,
139- )
140-
141-
142128def _not_between (v , a , b ):
143129 return (v < a ) | (v > b )
144130
@@ -161,9 +147,9 @@ def add_masks(
161147 )
162148 da = da .bins .assign_masks (
163149 divergence_too_large = _not_between (
164- da .bins .coords ["angle_of_divergence " ],
165- bdlim [0 ].to (unit = da .bins .coords ["angle_of_divergence " ].bins .unit ),
166- bdlim [1 ].to (unit = da .bins .coords ["angle_of_divergence " ].bins .unit ),
150+ da .bins .coords ["divergence_angle " ],
151+ bdlim [0 ].to (unit = da .bins .coords ["divergence_angle " ].bins .unit ),
152+ bdlim [1 ].to (unit = da .bins .coords ["divergence_angle " ].bins .unit ),
167153 ),
168154 wavelength = _not_between (
169155 da .bins .coords ['wavelength' ],
0 commit comments