Today I will switch finally to Fityk and it's many uses.
One of them is spectroscopy, Mossbauer spectroscopy. A very fascinating and useful method.
I will skip large part of introduction. For people using Mossbauer for the first time I highly recommend to get a copy of [1] or [2]. Well, yes, one can use Fityk for Mossbauer, but mostly for the simple cases and the following restrictions apply.
- The effective thickness teff of the sample must be small, so that the fitting of the spectra can be done with Lorentzian peakshapes.
The values you estimate are not too presize.
teff = d * na * s0 * f * aa,
where: d is the thickness of the studied material in cm;
na - the number of the Mossbauer atoms, for example, iron per unit cell volume (1/cm3);
aa - abundance of the Mossbauer isotope (natural abundence of 57Fe is 0.02119);
s0 - the maximum resonance crossection, it is constant for every Mossbauer isotope (depending on excitations of nuclear spin) and has value of 256.6*10-20 cm2 for iron;
f - recoiless fraction or Lamb-Mossbauer factor, in general it has value ~0.7, and this value changes depending on the isotope, crystallographic environment, etc. With heating f->0, and f->1 under pressure or with cooling.
Effective thickness is unitless. If teff<<1, than we can use Lorentz functions to extract quantitative information from Mossbauer spectra. The basic desctiption of the lineshapes is:
- singlet(one Lorentz function)
- duplet (two Lorentz functions)
- sixtet (six Lorentz functions)
Singlet is a single Lorentz function, it has been already builtin. Doublet and sixtet shapes one adds to the Fityk commands like this:
define DubletLorentzUA(areaL=0.1, areaR=0.1, fwhm=0.19, center=0, qua=0)=
LorentzianA(areaL, center-qua/2, fwhm)+
LorentzianA(areaR, center+qua/2, fwhm)+
define SixtetLorentzA(area16=3, area25=2, area34=0.1, width16=1, width25=1, width34=0.19, center, qua=0, bhf=10.59)=
LorentzianA(area16*area34, center+qua/2-0.5*bhf, width16*width34)+
LorentzianA(area25*area34, center-qua/2-0.289*bhf, width25*width34)+
LorentzianA(area34, center-qua/2-0.079*bhf, width34)+
LorentzianA(area34, center-qua/2+0.079*bhf, width34)+
LorentzianA(area25*area34, center-qua/2+0.289*bhf, width25*width34)+
LorentzianA(area16*area34, center+qua/2+0.5*bhf, width16*width34)
LorentzianA(areaL, center-qua/2, fwhm)+
LorentzianA(areaR, center+qua/2, fwhm)+
define SixtetLorentzA(area16=3, area25=2, area34=0.1, width16=1, width25=1, width34=0.19, center, qua=0, bhf=10.59)=
LorentzianA(area16*area34, center+qua/2-0.5*bhf, width16*width34)+
LorentzianA(area25*area34, center-qua/2-0.289*bhf, width25*width34)+
LorentzianA(area34, center-qua/2-0.079*bhf, width34)+
LorentzianA(area34, center-qua/2+0.079*bhf, width34)+
LorentzianA(area25*area34, center-qua/2+0.289*bhf, width25*width34)+
LorentzianA(area16*area34, center+qua/2+0.5*bhf, width16*width34)
This is all folks. Couple of comments in the end. Hyperfine magnetic field is used in Tesla units in literature, however, one measures this parameter in mm/s, velocity (this is why bhf=10.59). The conversion factor from mm/s to T is 3.097.
What about folding spectra? The simple recipy is below, if we assume channel 256 as folding point:
Y[0..256]=y[256-n-1]+y[256+n] in @0
a[256..512]=false
delete(not a) in @0
plot [:] [:]
a[256..512]=false
delete(not a) in @0
plot [:] [:]
At first line we fold, at second and at the third line we delete channels above the folding point. We do not need them after folding anymore. And the last thing to mention is the recallibration of the velocity limits of the Mossbauer experiment:
#calibration using known values of speeds
a=true
$xconv=-10.0955 #here we provide calibration velocity
X=-2*n/(M-1)*$xconv+$xconv
plot [] []
$xconv=-10.0955 #here we provide calibration velocity
X=-2*n/(M-1)*$xconv+$xconv
plot [] []
I hope this post was not too technical and some can find something usefull.