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, convert_pulse_shaping
from .conversions import providers as conversion_providers
from .io import mcstas_modulation_period_from_mode, mcstas_providers
from .types import (
    PulseLength,
    RunType,
    SampleRun,
    TwoThetaLimits,
)

default_parameters = {
    PulseLength: sc.scalar(0.003, unit='s'),
    TwoThetaLimits: (
        sc.scalar(75, unit='deg').to(unit='rad', dtype='float64'),
        sc.scalar(105, 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, mcstas_modulation_period_from_mode, *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, mcstas_modulation_period_from_mode, *convert_from_known_peaks_providers, ), params=default_parameters, constraints={RunType: (SampleRun,)}, )
[docs] def BeerMcStasWorkflowPulseShaping(): """Workflow to process BEER (pulse shaping modes) McStas files""" return sl.Pipeline( (*mcstas_providers, *convert_pulse_shaping), params=default_parameters, constraints={RunType: (SampleRun,)}, )