## Feature #2422

Updated by dmitry 9 months ago

Good first issue.

Currently BA features only predefined resolution functions (though one can set different standard deviations for each point on x-axis) in reflectivity simulations.

It is useful to let the user define a free-form distribution as a piecewise-linear function.

From the interface viewpoint, it can look like defining a free-form distribution

*distr = ba.RangedDistributionFreeForm(n_points, n_sig)*

exactly like already existing ones, and then setting it together with probability values to a scan

*scan.setAbsoluteQResolution(distr, q_val, q_prob)*

Here *q_val* is a n-by-m matrix, with m being the number of on-axis points, n - the number of points in piecewise-linear distribution for each on-axis point.

*q_prob* is a corresponding n-by-m matrix with probability values.

In case of angle-based reflectivity, the scan should feature two independent free-form distributions - for wavelength and angle.

Currently BA features only predefined resolution functions (though one can set different standard deviations for each point on x-axis) in reflectivity simulations.

It is useful to let the user define a free-form distribution as a piecewise-linear function.

From the interface viewpoint, it can look like defining a free-form distribution

*distr = ba.RangedDistributionFreeForm(n_points, n_sig)*

exactly like already existing ones, and then setting it together with probability values to a scan

*scan.setAbsoluteQResolution(distr, q_val, q_prob)*

Here *q_val* is a n-by-m matrix, with m being the number of on-axis points, n - the number of points in piecewise-linear distribution for each on-axis point.

*q_prob* is a corresponding n-by-m matrix with probability values.

In case of angle-based reflectivity, the scan should feature two independent free-form distributions - for wavelength and angle.