From 5b74f793cfb2f1046ba91cc766580d2723b7d85f Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Fri, 13 Feb 2026 13:56:49 +0100 Subject: [PATCH 1/3] different error thresholds for different components --- src/ess/dream/workflows.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/src/ess/dream/workflows.py b/src/ess/dream/workflows.py index b8742f05..5b629172 100644 --- a/src/ess/dream/workflows.py +++ b/src/ess/dream/workflows.py @@ -2,10 +2,15 @@ # Copyright (c) 2025 Scipp contributors (https://github.com/scipp) import itertools +from collections import defaultdict import sciline import scipp as sc import scippnexus as snx +from ess.reduce.nexus.types import DetectorBankSizes, NeXusName +from ess.reduce.parameter import parameter_mappers +from ess.reduce.time_of_flight import GenericTofWorkflow +from ess.reduce.workflow import register_workflow from scippneutron.metadata import Software from ess.powder import providers as powder_providers @@ -29,10 +34,6 @@ VanadiumRun, WavelengthMask, ) -from ess.reduce.nexus.types import DetectorBankSizes, NeXusName -from ess.reduce.parameter import parameter_mappers -from ess.reduce.time_of_flight import GenericTofWorkflow -from ess.reduce.workflow import register_workflow from .beamline import InstrumentConfiguration from .io.cif import ( @@ -122,6 +123,14 @@ def DreamWorkflow(**kwargs) -> sciline.Pipeline: wf[NeXusName[CaveMonitor]] = "monitor_cave" wf.insert(_get_lookup_table_filename_from_configuration) wf[ReducerSoftware] = _collect_reducer_software() + wf[LookupTableRelativeErrorThreshold] = defaultdict( + lambda: float('inf'), + endcap_backward_detector=float('inf'), + endcap_forward_detector=float('inf'), + mantle_detector=float('inf'), + high_resolution_detector=float('inf'), + sans_detector=float('inf'), + ) return wf @@ -210,7 +219,12 @@ def DreamGeant4Workflow(*, run_norm: RunNormalization, **kwargs) -> sciline.Pipe AccumulatedProtonCharge[VanadiumRun]: charge, AccumulatedProtonCharge[EmptyCanRun]: charge, CaveMonitorPosition: sc.vector([0.0, 0.0, -4220.0], unit='mm'), - LookupTableRelativeErrorThreshold: 0.02, + LookupTableRelativeErrorThreshold: { + "mantle": 0.02, + "endcap_forward": 0.02, + "endcap_backward": 0.02, + "high_resolution": 0.02, + }, } for key, value in additional_parameters.items(): wf[key] = value From 56616d15c546b7280778378f4abc5be436253272 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Wed, 18 Feb 2026 14:39:42 +0100 Subject: [PATCH 2/3] do not use defaultdict --- src/ess/dream/workflows.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/ess/dream/workflows.py b/src/ess/dream/workflows.py index 5b629172..593321c4 100644 --- a/src/ess/dream/workflows.py +++ b/src/ess/dream/workflows.py @@ -2,15 +2,10 @@ # Copyright (c) 2025 Scipp contributors (https://github.com/scipp) import itertools -from collections import defaultdict import sciline import scipp as sc import scippnexus as snx -from ess.reduce.nexus.types import DetectorBankSizes, NeXusName -from ess.reduce.parameter import parameter_mappers -from ess.reduce.time_of_flight import GenericTofWorkflow -from ess.reduce.workflow import register_workflow from scippneutron.metadata import Software from ess.powder import providers as powder_providers @@ -34,6 +29,10 @@ VanadiumRun, WavelengthMask, ) +from ess.reduce.nexus.types import DetectorBankSizes, NeXusName +from ess.reduce.parameter import parameter_mappers +from ess.reduce.time_of_flight import GenericTofWorkflow +from ess.reduce.workflow import register_workflow from .beamline import InstrumentConfiguration from .io.cif import ( @@ -123,14 +122,15 @@ def DreamWorkflow(**kwargs) -> sciline.Pipeline: wf[NeXusName[CaveMonitor]] = "monitor_cave" wf.insert(_get_lookup_table_filename_from_configuration) wf[ReducerSoftware] = _collect_reducer_software() - wf[LookupTableRelativeErrorThreshold] = defaultdict( - lambda: float('inf'), - endcap_backward_detector=float('inf'), - endcap_forward_detector=float('inf'), - mantle_detector=float('inf'), - high_resolution_detector=float('inf'), - sans_detector=float('inf'), - ) + wf[LookupTableRelativeErrorThreshold] = { + "endcap_backward_detector": float('inf'), + "endcap_forward_detector": float('inf'), + "mantle_detector": float('inf'), + "high_resolution_detector": float('inf'), + "sans_detector": float('inf'), + "monitor_bunker": float('inf'), + "monitor_cave": float('inf'), + } return wf From e9481a4fb3e6c331d052e1000e7b237f90850ad9 Mon Sep 17 00:00:00 2001 From: Neil Vaytet Date: Wed, 18 Feb 2026 15:18:25 +0100 Subject: [PATCH 3/3] add monitors in geant4 dict also --- src/ess/dream/workflows.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ess/dream/workflows.py b/src/ess/dream/workflows.py index 593321c4..9c8d9ce6 100644 --- a/src/ess/dream/workflows.py +++ b/src/ess/dream/workflows.py @@ -224,6 +224,8 @@ def DreamGeant4Workflow(*, run_norm: RunNormalization, **kwargs) -> sciline.Pipe "endcap_forward": 0.02, "endcap_backward": 0.02, "high_resolution": 0.02, + "monitor_bunker": float("inf"), + "monitor_cave": float("inf"), }, } for key, value in additional_parameters.items():