Refactor of thermal scattering
Created by: paulromano
The way that we store and use thermal scattering data can definitely be improved in a number of ways. First, the
ThermalScattering class stores incoherent inelastic data across a few different attributes:
inelastic_e_out(used for discrete representation)
inelastic_mu_out(used for discrete representation)
inelastic_dist(used for continuous representation)
I've started to refactor this so that the
ThermalScattering has two attributes
inelastic that are both instances of a new
ThermalScatteringReaction class that has
distribution attributes. The
distribution will be an instance of
AngleEnergy (new subclasses of
AngleEnergy will be introduced to handle the various representations). If we decide to implement a fancier method in the future (storing alpha/beta PDFs, for example), the new hierarchy should be able to accommodate it.
I'm also adding an ability to get data from the ENDF thermal scattering sublibrary. This will make it possible to treat incoherent elastic scattering exactly since we'll have the Debye-Waller factor from the ENDF file. We'll still need to run NJOY to process incoherent inelastic data, but the elastic data we should be able to handle unmodified.
I'm hoping that we'll also be able to address #101 with this refactoring.
Pinging @ameliajo as the one person I know of who might be interested in this :)