Source code for ess.beer.workflow

# SPDX-License-Identifier: BSD-3-Clause
# Copyright (c) 2025 Scipp contributors (https://github.com/scipp)
import sciline as sl
import scipp as sc

from .clustering import providers as clustering_providers
from .conversions import convert_from_known_peaks_providers
from .conversions import providers as conversion_providers
from .io import mcstas_providers
from .types import (
    PulseLength,
    RunType,
    SampleRun,
    TwoThetaMaskFunction,
)

default_parameters = {
    PulseLength: sc.scalar(0.003, unit='s'),
    TwoThetaMaskFunction: lambda two_theta: (
        (two_theta >= sc.scalar(105, unit='deg').to(unit='rad', dtype='float64'))
        | (two_theta <= sc.scalar(75, unit='deg').to(unit='rad', dtype='float64'))
    ),
}


[docs] def BeerModMcStasWorkflow(): '''Workflow to process BEER (modulation regime) McStas files without a list of estimated peak positions.''' return sl.Pipeline( (*mcstas_providers, *clustering_providers, *conversion_providers), params=default_parameters, constraints={RunType: (SampleRun,)}, )
[docs] def BeerModMcStasWorkflowKnownPeaks(): '''Workflow to process BEER (modulation regime) McStas files using a list of estimated peak positions.''' return sl.Pipeline( (*mcstas_providers, *convert_from_known_peaks_providers), params=default_parameters, constraints={RunType: (SampleRun,)}, )