rxmc.elastic_diffxs_observation.ElasticDifferentialXSObservation#

class rxmc.elastic_diffxs_observation.ElasticDifferentialXSObservation(x: ndarray, y: ndarray, Elab: float, reaction: Reaction, quantity: str, measurement_quantity: str, y_units: str, y_stat_err=None, y_sys_err_normalization=None, y_sys_err_offset=None, dataset_label: str | None = None, lmax: int = 20, wavelengths_beyond_range=2.0, zeros_per_node=5, angles_vis: ndarray = array([1.00000000e-02, 1.82808081e+00, 3.64616162e+00, 5.46424242e+00, 7.28232323e+00, 9.10040404e+00, 1.09184848e+01, 1.27365657e+01, 1.45546465e+01, 1.63727273e+01, 1.81908081e+01, 2.00088889e+01, 2.18269697e+01, 2.36450505e+01, 2.54631313e+01, 2.72812121e+01, 2.90992929e+01, 3.09173737e+01, 3.27354545e+01, 3.45535354e+01, 3.63716162e+01, 3.81896970e+01, 4.00077778e+01, 4.18258586e+01, 4.36439394e+01, 4.54620202e+01, 4.72801010e+01, 4.90981818e+01, 5.09162626e+01, 5.27343434e+01, 5.45524242e+01, 5.63705051e+01, 5.81885859e+01, 6.00066667e+01, 6.18247475e+01, 6.36428283e+01, 6.54609091e+01, 6.72789899e+01, 6.90970707e+01, 7.09151515e+01, 7.27332323e+01, 7.45513131e+01, 7.63693939e+01, 7.81874747e+01, 8.00055556e+01, 8.18236364e+01, 8.36417172e+01, 8.54597980e+01, 8.72778788e+01, 8.90959596e+01, 9.09140404e+01, 9.27321212e+01, 9.45502020e+01, 9.63682828e+01, 9.81863636e+01, 1.00004444e+02, 1.01822525e+02, 1.03640606e+02, 1.05458687e+02, 1.07276768e+02, 1.09094848e+02, 1.10912929e+02, 1.12731010e+02, 1.14549091e+02, 1.16367172e+02, 1.18185253e+02, 1.20003333e+02, 1.21821414e+02, 1.23639495e+02, 1.25457576e+02, 1.27275657e+02, 1.29093737e+02, 1.30911818e+02, 1.32729899e+02, 1.34547980e+02, 1.36366061e+02, 1.38184141e+02, 1.40002222e+02, 1.41820303e+02, 1.43638384e+02, 1.45456465e+02, 1.47274545e+02, 1.49092626e+02, 1.50910707e+02, 1.52728788e+02, 1.54546869e+02, 1.56364949e+02, 1.58183030e+02, 1.60001111e+02, 1.61819192e+02, 1.63637273e+02, 1.65455354e+02, 1.67273434e+02, 1.69091515e+02, 1.70909596e+02, 1.72727677e+02, 1.74545758e+02, 1.76363838e+02, 1.78181919e+02, 1.80000000e+02]), ObservationClass: Type[Observation] = <class 'rxmc.observation.Observation'>, error_kwargs: dict = None, compound_correction: ndarray = None)[source]#

Bases: object

Observation for elastic differential cross sections.

This class dynamically inherits from Observation or any other derived class of Observation based on the ObservationClass parameter in the initializer. The default behavior is to inherit from Observation, but users can specify a different subclass, such as FixedCovarianceObservation, to precompute the covariance matrix inverse in cases where the covariance is fixed.

It is designed to handle elastic differential cross section measurements, specifically absolute differential cross sections, Rutherford normalized differential cross sections, and analyzing powers (Ay).

Internally, this involves initializing a jitr.xs.elastic.DifferentialWorkspace which precomputes things like boundary conditions to speed up computation of observables for a given set of interaction parameter.

__init__(x: ndarray, y: ndarray, Elab: float, reaction: Reaction, quantity: str, measurement_quantity: str, y_units: str, y_stat_err=None, y_sys_err_normalization=None, y_sys_err_offset=None, dataset_label: str | None = None, lmax: int = 20, wavelengths_beyond_range=2.0, zeros_per_node=5, angles_vis: ndarray = array([1.00000000e-02, 1.82808081e+00, 3.64616162e+00, 5.46424242e+00, 7.28232323e+00, 9.10040404e+00, 1.09184848e+01, 1.27365657e+01, 1.45546465e+01, 1.63727273e+01, 1.81908081e+01, 2.00088889e+01, 2.18269697e+01, 2.36450505e+01, 2.54631313e+01, 2.72812121e+01, 2.90992929e+01, 3.09173737e+01, 3.27354545e+01, 3.45535354e+01, 3.63716162e+01, 3.81896970e+01, 4.00077778e+01, 4.18258586e+01, 4.36439394e+01, 4.54620202e+01, 4.72801010e+01, 4.90981818e+01, 5.09162626e+01, 5.27343434e+01, 5.45524242e+01, 5.63705051e+01, 5.81885859e+01, 6.00066667e+01, 6.18247475e+01, 6.36428283e+01, 6.54609091e+01, 6.72789899e+01, 6.90970707e+01, 7.09151515e+01, 7.27332323e+01, 7.45513131e+01, 7.63693939e+01, 7.81874747e+01, 8.00055556e+01, 8.18236364e+01, 8.36417172e+01, 8.54597980e+01, 8.72778788e+01, 8.90959596e+01, 9.09140404e+01, 9.27321212e+01, 9.45502020e+01, 9.63682828e+01, 9.81863636e+01, 1.00004444e+02, 1.01822525e+02, 1.03640606e+02, 1.05458687e+02, 1.07276768e+02, 1.09094848e+02, 1.10912929e+02, 1.12731010e+02, 1.14549091e+02, 1.16367172e+02, 1.18185253e+02, 1.20003333e+02, 1.21821414e+02, 1.23639495e+02, 1.25457576e+02, 1.27275657e+02, 1.29093737e+02, 1.30911818e+02, 1.32729899e+02, 1.34547980e+02, 1.36366061e+02, 1.38184141e+02, 1.40002222e+02, 1.41820303e+02, 1.43638384e+02, 1.45456465e+02, 1.47274545e+02, 1.49092626e+02, 1.50910707e+02, 1.52728788e+02, 1.54546869e+02, 1.56364949e+02, 1.58183030e+02, 1.60001111e+02, 1.61819192e+02, 1.63637273e+02, 1.65455354e+02, 1.67273434e+02, 1.69091515e+02, 1.70909596e+02, 1.72727677e+02, 1.74545758e+02, 1.76363838e+02, 1.78181919e+02, 1.80000000e+02]), ObservationClass: Type[Observation] = <class 'rxmc.observation.Observation'>, error_kwargs: dict = None, compound_correction: ndarray = None)[source]#
Parameters:
  • x (np.ndarray) – Measured angle grid in degrees.

  • y (np.ndarray) – Measured observable values.

  • Elab (float) – Laboratory energy in MeV.

  • reaction (jitr.reactions.Reaction) – Reaction system definition.

  • quantity (str) – Observable to compute: "dXS/dA", "dXS/dRuth", or "Ay".

  • measurement_quantity (str) – Observable represented by the supplied y values.

  • y_units (str) – Units of the supplied y values (e.g. "mb/sr").

  • y_stat_err (np.ndarray, optional) – Statistical errors associated with y.

  • y_sys_err_normalization (float or array-like, optional) – Systematic normalization error(s) associated with y.

  • y_sys_err_offset (float or array-like, optional) – Systematic offset error(s) associated with y.

  • dataset_label (str, optional) – Human-readable dataset identifier used in error messages.

  • lmax (int, optional) – Maximum angular momentum. Defaults to 20.

  • wavelengths_beyond_range (float, optional) – Number of wavelengths beyond the interaction range used to set the channel radius. Defaults to 2.0.

  • zeros_per_node (int, optional) – Number of basis-function zeros per node in the R-matrix solver. Defaults to 5.

  • angles_vis (np.ndarray, optional) – Angle grid in degrees for visualisation. Defaults to np.linspace(0.01, 180, 100).

  • ObservationClass (type, optional) – Observation subclass to use for covariance and residual computations. Supply FixedCovarianceObservation to pre-compute the inverse covariance. Defaults to Observation.

  • error_kwargs (dict, optional) – Extra keyword arguments forwarded to ObservationClass.

  • compound_correction (np.ndarray, optional) – Compound-nuclear contribution to dXS/dΩ in mb/sr, added to the calculated cross section before comparing to data.

Methods

__init__(x, y, Elab, reaction, quantity, ...)

calculate_normalization(...)

covariance(y)

from_measurement(measurement, reaction, ...)

num_pts_within_interval(interval)

residual(ym)

covariance(y)[source]#
residual(ym)[source]#
num_pts_within_interval(interval)[source]#
classmethod from_measurement(measurement: Distribution, reaction: Reaction, quantity: str, lmax: int = 20, wavelengths_beyond_range=2.0, zeros_per_node=5, angles_vis: ndarray = array([1.00000000e-02, 1.82808081e+00, 3.64616162e+00, 5.46424242e+00, 7.28232323e+00, 9.10040404e+00, 1.09184848e+01, 1.27365657e+01, 1.45546465e+01, 1.63727273e+01, 1.81908081e+01, 2.00088889e+01, 2.18269697e+01, 2.36450505e+01, 2.54631313e+01, 2.72812121e+01, 2.90992929e+01, 3.09173737e+01, 3.27354545e+01, 3.45535354e+01, 3.63716162e+01, 3.81896970e+01, 4.00077778e+01, 4.18258586e+01, 4.36439394e+01, 4.54620202e+01, 4.72801010e+01, 4.90981818e+01, 5.09162626e+01, 5.27343434e+01, 5.45524242e+01, 5.63705051e+01, 5.81885859e+01, 6.00066667e+01, 6.18247475e+01, 6.36428283e+01, 6.54609091e+01, 6.72789899e+01, 6.90970707e+01, 7.09151515e+01, 7.27332323e+01, 7.45513131e+01, 7.63693939e+01, 7.81874747e+01, 8.00055556e+01, 8.18236364e+01, 8.36417172e+01, 8.54597980e+01, 8.72778788e+01, 8.90959596e+01, 9.09140404e+01, 9.27321212e+01, 9.45502020e+01, 9.63682828e+01, 9.81863636e+01, 1.00004444e+02, 1.01822525e+02, 1.03640606e+02, 1.05458687e+02, 1.07276768e+02, 1.09094848e+02, 1.10912929e+02, 1.12731010e+02, 1.14549091e+02, 1.16367172e+02, 1.18185253e+02, 1.20003333e+02, 1.21821414e+02, 1.23639495e+02, 1.25457576e+02, 1.27275657e+02, 1.29093737e+02, 1.30911818e+02, 1.32729899e+02, 1.34547980e+02, 1.36366061e+02, 1.38184141e+02, 1.40002222e+02, 1.41820303e+02, 1.43638384e+02, 1.45456465e+02, 1.47274545e+02, 1.49092626e+02, 1.50910707e+02, 1.52728788e+02, 1.54546869e+02, 1.56364949e+02, 1.58183030e+02, 1.60001111e+02, 1.61819192e+02, 1.63637273e+02, 1.65455354e+02, 1.67273434e+02, 1.69091515e+02, 1.70909596e+02, 1.72727677e+02, 1.74545758e+02, 1.76363838e+02, 1.78181919e+02, 1.80000000e+02]), ObservationClass: Type[Observation] = <class 'rxmc.observation.Observation'>, error_kwargs: dict = None, compound_correction: ndarray = None)[source]#
calculate_normalization(measurement_quantity: str, measurement_y_units: str)[source]#