Four column data¶
This example reuses the spin-value model for a completely unrelated measurement. The goal is to demonstrate loading of four column data files (Q, R, dR, dQ) produced by the NCNR reductus fitting program.
The following is copied directly from the spin value example
from refl1d.names import *
Si = SLD(name="Si", rho=2.0737, irho=2.376e-5)
Cu = SLD(name="Cu", rho=6.5535, irho=8.925e-4)
Ta = SLD(name="Ta", rho=3.8300, irho=3.175e-3)
TaOx = SLD(name="TaOx", rho=1.6325, irho=3.175e-3)
NiFe = SLD(name="NiFe", rho=9.1200, irho=1.032e-3)
CoFe = SLD(name="CoFe", rho=4.3565, irho=7.986e-3) # 60:40
IrMn = SLD(name="IrMn", rho=-0.21646, irho=4.245e-2)
sample = (
Si(0, 2.13)
| Ta(38.8, 2)
| NiFe(25.0, 5, magnetism=Magnetism(rhoM=1.4638, thetaM=270, interface_below=2, interface_above=3))
| CoFe(12.7, 5, magnetism=Magnetism(rhoM=3.7340, thetaM=270, interface_above=4))
| Cu(28, 2)
| CoFe(30.2, 5, MagnetismTwist(rhoM=[4.5102, 1.7860], thetaM=[270, 85], interface_below=9, interface_above=7))
| IrMn(4.74, 1.7)
| Cu(5.148, 2)
| Ta(55.4895, 2)
| TaOx(47.42, 3.5)
| air
)
sample[2].thickness.pmp(20)
sample[2].magnetism.rhoM.pmp(20)
sample[2].magnetism.interface_below.range(0, 10)
sample[2].magnetism.interface_above.range(0, 10)
sample[3].magnetism.interface_above.range(0, 10)
sample[5].magnetism.interface_below.range(0, 10)
sample[5].magnetism.interface_above.range(0, 10)
Here’s the new loader. Much simplified since the reduction computes the
appropriate \(\Delta Q\) for the data points, and we don’t need to specify
the slit openings and distances for the data set. The options to the
refl1d.probe.data_loaders.load4.load4()
function allow you to override things during
load, such as the sample broadening of the resolution.
probe = load4("refl.txt")
experiment = Experiment(probe=probe, sample=sample, dz=0.3, dA=None, interpolation=10)
problem = FitProblem(experiment)