Source code for drtsans.mono.transmission

from mantid.kernel import logger
from drtsans.mono.geometry import beam_radius
from drtsans.transmission import calculate_transmission as raw_calculate_transmission
from drtsans.transmission import apply_transmission_correction

# Symbols to be exported to the eqsans namespace
__all__ = ["calculate_transmission", "apply_transmission_correction"]


[docs] def calculate_transmission( input_sample, input_reference, radius=None, radius_unit="mm", transmission_error_tolerance=None, output_workspace=None, ): """ Calculate the raw transmission coefficients at zero scattering angle from already prepared sample and reference data. Parameters ---------- input_sample: str, ~mantid.api.MatrixWorkspace, ~mantid.api.IEventWorkspace Prepared sample workspace (possibly obtained with an attenuated beam) input_reference: str, ~mantid.api.MatrixWorkspace, ~mantid.api.IEventWorkspace Prepared direct beam workspace (possibly obtained with an attenuated beam) radius: float Radius around the beam center for pixel integration, in millimeters. If None, radius will be obtained or calculated using `input_reference` workspace. radius_unit: str Either 'mm' or 'm', and only used in conjunction with option `radius`. transmission_error_tolerance: float | None Maximum relative error for transmission. If None, the error will not be checked. output_workspace: str Name of the output workspace containing the raw transmission values. If None, a hidden random name will be provided. Returns ------- ~mantid.api.MatrixWorkspace Workspace containing the raw transmission values Raises ------ TransmissionNanError If all transmission values are NaN TransmissionToleranceError If there is insufficient statistics to calculate the transmission correction """ if radius is None: logger.information("Calculating beam radius from sample logs") radius = beam_radius(input_reference, unit="mm") zero_angle_transmission_workspace = raw_calculate_transmission( input_sample, input_reference, radius, radius_unit=radius_unit, transmission_error_tolerance=transmission_error_tolerance, output_workspace=output_workspace, ) return zero_angle_transmission_workspace