Feature ideas

IntensityData object

Things to consider on the way to the better IntensityData object

  • What it is? Container to hold arbitrary binned data in N-space, or linear buffer of items holding all what you need to start DWBA Simulation?
  • 1D/2D data storage

IntensityData1D, IntensityData2D or just universal IntensityData?
Universal container to hold GISAS pattern, or R,T coeeficients, or results of reflectometry scans?

  • Revise constructors
  • Revise access to the data

Current way is cumbersome

    const IAxis *p_axis0 = output.getAxis(0);
    const IAxis *p_axis1 = output.getAxis(1);
    size_t axis0_index = output.toCoordinate(it.getIndex(), 0);
    size_t axis1_index = output.toCoordinate(it.getIndex(), 1);
    double axis0_value = (*p_axis0)[axis0_index];
    double axis1_value = (*p_axis1)[axis1_index];

Look for inspiration in ROOT histograms

  intensity->fill(alpha, phi, counts)
  • Masks and weights on board

Possibly any additional data as dynamic property

  • Minimum import/exprot functionality

Currently serialized to our own format 'int' but

  • Extra functionality

Slicing of IntensityData objects

Toward Specular Reflectivity in BornAgain

This is a temporary list of issues which we have to implement on the way toward Specular Reflectivity in BornAgain.
The idea is to discuss and to write them down here, and, as soon as the list is complete, move issues to the usual place.

On the Kernel side
  • Agree on SpecularSimulation class and its functionality
    • Access to R,T coefficients
    • Access to the evanescent wave map
  • Agree on SpecularBeam, SpecularScan objects, their properties etc
    • size of the beam
  • Develop theory for the contribution of the diffuse scattering into the specular peak and normalization
  • Revise IntensityData object functionality and agree on new functionality
    • dedicated 1D, 2D intensity object or universal one?
    • Slicing of IntensityData objects
    • Masks and weights on board
    • Agree on minimal Import/Export functionality for the IntensityData object
    • User API of IntensityData object
  • Provide all necessary functional tests and user examples
On the GUI side
  • InstrumentView: Implement SpecularInstrument widget
    • Implement SpecularDetectorItem, SpecularBeamItem
  • JobView: implement universal widget to plot 1D graphs on one canvas
  • JobView: implement widget to plot 1D IntensityData object

Other ideas

  • In Feature #120, a new chi-squared function was implemented, based on the Fourier transform of the difference map. Could one improve on fitting speed/stability by replacing the Fourier transform with a more appropriate transform (eg. wavelets)?