Skip to content

Commit dd88e14

Browse files
committed
Explicitly request sample and source pos
Required to work around scipp/essreduce#292
1 parent dea5cb7 commit dd88e14

File tree

2 files changed

+40
-5
lines changed

2 files changed

+40
-5
lines changed

src/ess/powder/conversion.py

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
GravityVector,
2121
IntensityDspacing,
2222
IntensityTof,
23+
MonitorCoordTransformGraph,
2324
MonitorType,
2425
Position,
2526
RunType,
@@ -268,22 +269,52 @@ def convert_reduced_to_empty_can_subtracted_tof(
268269
)
269270

270271

272+
def powder_monitor_coordinate_transformation_graph(
273+
source_position: Position[snx.NXsource, RunType],
274+
sample_position: Position[snx.NXsample, RunType],
275+
gravity: GravityVector,
276+
) -> MonitorCoordTransformGraph[RunType]:
277+
"""Generate a coordinate transformation graph for monitors,
278+
279+
Parameters
280+
----------
281+
source_position:
282+
Position of the neutron source.
283+
sample_position:
284+
Position of the sample.
285+
gravity:
286+
Gravity vector.
287+
288+
Returns
289+
-------
290+
:
291+
A dictionary with the graph for the transformation.
292+
"""
293+
return MonitorCoordTransformGraph(
294+
{
295+
**scn.conversion.graph.beamline.beamline(scatter=False),
296+
**scn.conversion.graph.tof.elastic("tof"),
297+
'source_position': lambda: source_position,
298+
'sample_position': lambda: sample_position,
299+
'gravity': lambda: gravity,
300+
}
301+
)
302+
303+
271304
def convert_monitor_to_wavelength(
272305
monitor: TofMonitor[RunType, MonitorType],
306+
graph: MonitorCoordTransformGraph[RunType],
273307
) -> WavelengthMonitor[RunType, MonitorType]:
274-
graph = {
275-
**scn.conversion.graph.beamline.beamline(scatter=False),
276-
**scn.conversion.graph.tof.elastic("tof"),
277-
}
278308
return WavelengthMonitor[RunType, MonitorType](
279309
monitor.transform_coords("wavelength", graph=graph, keep_intermediate=False)
280310
)
281311

282312

283313
providers = (
284-
powder_coordinate_transformation_graph,
285314
add_scattering_coordinates_from_positions,
286315
convert_reduced_to_tof,
287316
convert_reduced_to_empty_can_subtracted_tof,
288317
convert_monitor_to_wavelength,
318+
powder_coordinate_transformation_graph,
319+
powder_monitor_coordinate_transformation_graph,
289320
)

src/ess/powder/types.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,10 @@ class ElasticCoordTransformGraph(sciline.Scope[RunType, dict], dict):
107107
"""Graph for transforming coordinates in elastic scattering."""
108108

109109

110+
class MonitorCoordTransformGraph(sciline.Scope[RunType, dict], dict):
111+
"""Graph for transforming coordinates of a monitor."""
112+
113+
110114
class FocussedDataDspacing(sciline.Scope[RunType, sc.DataArray], sc.DataArray):
111115
"""Intensity vs d-spacing after focussing pixels."""
112116

0 commit comments

Comments
 (0)