Skip to content

Commit 9874cc5

Browse files
committed
Test vana norm and bkg subtraction
1 parent 41a4968 commit 9874cc5

File tree

1 file changed

+35
-9
lines changed

1 file changed

+35
-9
lines changed

tests/dream/geant4_reduction_test.py

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
DspacingData,
3131
EmptyCanSubtractedIofDspacing,
3232
Filename,
33+
FocussedDataDspacing,
3334
IofDspacing,
3435
IofDspacingTwoTheta,
3536
IofTof,
@@ -55,9 +56,9 @@
5556
from ess.reduce import time_of_flight
5657
from ess.reduce import workflow as reduce_workflow
5758

58-
sample = sc.vector([0.0, 0.0, 0.0], unit='mm')
59-
source = sc.vector([-3.478, 0.0, -76550], unit='mm')
60-
charge = sc.scalar(1.0, unit='µAh')
59+
sample_position = sc.vector([0.0, 0.0, 0.0], unit='mm')
60+
source_position = sc.vector([-3.478, 0.0, -76550], unit='mm')
61+
proton_charge = sc.scalar(1.0, unit='µAh')
6162
dream_source_position = sc.vector(value=[0, 0, -76.55], unit="m")
6263

6364
params = {
@@ -73,12 +74,12 @@
7374
DspacingBins: sc.linspace('dspacing', 0.0, 2.3434, 201, unit='angstrom'),
7475
TofMask: lambda x: (x < sc.scalar(0.0, unit='us').to(unit=elem_unit(x)))
7576
| (x > sc.scalar(86e3, unit='us').to(unit=elem_unit(x))),
76-
Position[snx.NXsample, SampleRun]: sample,
77-
Position[snx.NXsample, VanadiumRun]: sample,
78-
Position[snx.NXsource, SampleRun]: source,
79-
Position[snx.NXsource, VanadiumRun]: source,
80-
AccumulatedProtonCharge[SampleRun]: charge,
81-
AccumulatedProtonCharge[VanadiumRun]: charge,
77+
Position[snx.NXsample, SampleRun]: sample_position,
78+
Position[snx.NXsample, VanadiumRun]: sample_position,
79+
Position[snx.NXsource, SampleRun]: source_position,
80+
Position[snx.NXsource, VanadiumRun]: source_position,
81+
AccumulatedProtonCharge[SampleRun]: proton_charge,
82+
AccumulatedProtonCharge[VanadiumRun]: proton_charge,
8283
TwoThetaMask: None,
8384
WavelengthMask: None,
8485
CaveMonitorPosition: sc.vector([0.0, 0.0, -4220.0], unit='mm'),
@@ -187,6 +188,31 @@ def test_pipeline_can_compute_dspacing_result_with_integrated_monitor_norm(
187188
assert sc.identical(result.coords['dspacing'], params[DspacingBins])
188189

189190

191+
def test_pipeline_normalizes_and_subtracts_empty_can_as_expected(
192+
workflow: sciline.Pipeline,
193+
) -> None:
194+
workflow[UncertaintyBroadcastMode] = UncertaintyBroadcastMode.drop
195+
workflow = powder.with_pixel_mask_filenames(workflow, [])
196+
results = workflow.compute(
197+
[
198+
EmptyCanSubtractedIofDspacing[SampleRun],
199+
FocussedDataDspacing[SampleRun],
200+
FocussedDataDspacing[VanadiumRun],
201+
FocussedDataDspacing[BackgroundRun],
202+
]
203+
)
204+
result = results[EmptyCanSubtractedIofDspacing[SampleRun]]
205+
206+
sample = results[FocussedDataDspacing[SampleRun]]
207+
empty_can = results[FocussedDataDspacing[BackgroundRun]]
208+
vanadium = results[FocussedDataDspacing[VanadiumRun]]
209+
210+
expected = powder.correction.normalize_by_vanadium_dspacing(
211+
sample.bins.concatenate(-empty_can), vanadium, UncertaintyBroadcastMode.drop
212+
)
213+
sc.testing.assert_allclose(result, expected)
214+
215+
190216
def test_workflow_is_deterministic(workflow):
191217
workflow = powder.with_pixel_mask_filenames(workflow, [])
192218
# This is Sciline's default scheduler, but we want to be explicit here

0 commit comments

Comments
 (0)