-
DannyHindson authored
* Add algorithm using initial files from Spencer * Replace tabs with spaces so algorithm runs * Added further comments and adjustments around geometry logic * Further updates and clarification comments Added comment to explain use of Rodrigues formula in _q_dir Changed formula used for _vl in _start_point to match approach in Fortran code and also approach in Mancinelli paper Added validation on the fixed input wavelength to ensure it doesn't give qmax smaller than the q range in the input workspace Added comment to explain 4, 27, 16*16 factors when dividing by QSSum * Initial C++ version of MuscatElastic algorithm files * Further work on converting Muscat to C++ * More work on C++ algorithm * Further work on multiple scattering algorithms/MuscatElastic-v1 Add some further validations to input workspaces Fix problem with calculation of new cos two theta * Fix up event and nscatter loops * Add additional comment next to mystery factors * Fix situations where zero track intercepts * Further work on multiple scattering algorithm Performance enhancements: - make LineIntersectVisit use boost small vector - improve the Cylinder::side function by removing the divide by radius and replacing with a multiplication More work onn the algorithm including fixing a few bugs and creation of output workspace * More work on Muscat algorithm Output workspace group for all scattering orders Set exp factor to 1 for final track segment if doing J1* calculation Achieve this by setting mu equal to zero (note DISCUS manual suggests this is achieved by setting path length to zero but end result is same) Move call to new_vector inside the the simulateEvents method so that sigma_total is recalculated with zero absorption correction for the J1* case. Will probably also call new_vector more often for inelastic version of algorithm in future * Various changes Change input workspace units to be wavelength Apply equal bins checker to S(Q) workspace and SigmaS Fix bug in reading kinc from input WS Fix problem with yIndexOfX call with point data * Couple of small adjustments to align better with python results Fix couple of bugs in S(Q) interpolation and adjust code for changes to yIndexOfX method * Various minor improvements and fixes Fix bug in q_dir where track was being passed by value instead of by ref Add comment to python version about q width estimate not being accurate Stop updating SOfQ input workspace when running algorithm * Initial work on unit tests and documentation * Fill out documentation on MuscatElastic * Remove maxweight determination to clean up diff * Changes to tidy up the diff * Remove normalisation of S(Q) after email exchange with Spencer * Implement sparse instrument functionality in Muscat Also add emode switch in anticipation of adding inelastic flavour * Tidy up interpolation logic * Update documentation and rename algorithm to Muscat * Add release note * Fix failing GeometryTest compilation errors and Doxygen errors * Couple of changes Add unit test on interpolateLogQuadratic method Update docs as requested by Spencer * Various changes Fill out Muscat unit tests to cover interpolation scenarios Make it possible to turn off error calculation in InterpolationOption class Pull out the Rodrigues formula into updateTrackDirection method to make it easier to write targeted unit test on it Fix bug in updateTrackDirection where x, y, z coordinates where transposed Fix minor glitch in lambda step size calculation when wavelength interpolation is turned on * Fix Doxygen warning and compilation error (OSX) * Revert factor 0.5 in side method * Fix linux compiler warnings * Incorporate review comments Add various const qualifiers Remove original python version of algorithm (MuscatElasticReactor) that was present just for validation of the new C++ version * Incorporate gatekeeper feedback from Martyn Change algorithm name from Muscat to CalculateMultipleScattering Add alias Muscat to the algorithm Add warning saying algorithm is still in beta testing phase