[Ifeffit] problem with normalization
Bruce Ravel
bravel at anl.gov
Thu Aug 31 09:33:26 CDT 2006
On Thursday 31 August 2006 02:57, Bernd Griesebock wrote:
> Hi there,
>
> I have a litte question about normalizing data using the commands that
> athena uses.
>
> I used the following commands (in an ifeffit shell), which I copied from
> the ifeffit buffer from athena, but I replaced most of the values with
> the corresponding variables (see at the "set" commands):
I have taken the liberty of numbering and slightly rearranging the lines of
your script.
1 > read_data(file="Rh_sample_11.dat.spektrum.00040", group=rh, no_sort)
2 > set ___n = npts(rh.1)
3 > set rh.energy = 1000*rh.1
4 > set rh.xmu = (rh.2) / (rh.3)
5 > pre_edge("rh.energy+0", rh.xmu)
6 > erase rh.4
7 > show e0
8 > pre_edge("rh.energy+0", rh.xmu, e0=23228.9989104549, pre1=-150,
9 > pre2=-30, norm_order=3, norm1=150, norm2=514.053)
10 > spline("rh.energy+0", rh.xmu, e0=23228.9989104549, rbkg=1.0, kmin=0.5,
11 > kmax=12.695, kweight=1, dk=0, kwindow=kaiser-bessel, pre1=-150,
12 > pre2=-30, norm_order=3, norm1=150, norm2=514.053, clamp2=24,
13 > nclamp=5, interp=quad)
14 > set rh.preline = pre_offset+pre_slope*(rh.energy + 0)
15 > set rh.postline =
16 > norm_c0+norm_c1*(rh.energy+0.000000)+norm_c2*(rh.energy+0.000000)**2
17 > step rh.energy e0 rh.theta
18 > set flat_c0 =norm_c0 - pre_offset
19 > set flat_c1 =norm_c1 - pre_slope
20 > set flat_c2 =norm_c2
21 > set rh.line = (flat_c0 + flat_c1*(rh.energy+0) +
22 > flat_c2*(rh.energy+0)**2)
23 > set rh.flat = (rh.pre + (edge_step - rh.line)*rh.theta) / edge_step
24 > set rh.fbkg = (rh.bkg-rh.preline+(edge_step-rh.line)*rh.theta)/edge_step
25 > newplot(rh.energy+0, "1*rh.fbkg+0", xlabel="E (eV)", ylabel="norm
26 > x\gm(E)", fg=black, bg=white, grid, gridcolor="grey82",
27 > xmin=23028.99891, xmax=24028.99891, style=lines, color="red",
28 > key=bkg, title="rh_sample_11")
>
> At this point athena plots the normalized background function with all
> data points in the post edge region at arround 1. This is exactly what I
> want, but in the ifeffit shell I get an error message:
> ** plot error: no data in y array
>
> Ifeffit> show rh.fbkg
> rh.fbkg = 399 pts [-0.2709E-01: 1.205 ]
>
> So there is data in that array! Using the following plot command:
>
> newplot(rh.energy+0, rh.fbkg, xlabel="E (eV)", ylabel="norm x\gm(E)",
> fg=black, bg=white, grid, gridcolor="grey82", xmin=23028.99891,
> xmax=24028.99891, style=lines, color="red", key=bkg,
> title="rh_sample_11")
>
> plots the background function but not normalized in the sense, that the
> data points in post edge region are at arround 1.
>
> Where is my mistake??? If you need some plot examples please feel free
> to ask for them.
I suspect that the problem is in line 17 of the ifeffit script. "step" is not
a built-in Ifeffit command. Instead it is a macro that Athena defines when
you start the program. Fire up Athena and look near the beginning of the
ifeffit buffer -- you'll see where the macro is defined.
The purpose of the macro is to define a step function centered at a given
energy and placed on a particular energy grid. If you don't define this macro
the .theta array is undefined, leading to trouble with the .flat and .fbkg
arrays.
Hope that helps,
B
--
Bruce Ravel ---------------------------------------------- bravel at anl.gov
Molecular Environmental Science Group, Building 203, Room E-165
MRCAT, Sector 10, Advanced Photon Source, Building 433, Room B007
Argonne National Laboratory phone and voice mail: (1) 630 252 5033
Argonne IL 60439, USA fax: (1) 630 252 9793
My homepage: http://cars9.uchicago.edu/~ravel
EXAFS software: http://cars9.uchicago.edu/~ravel/software/
More information about the Ifeffit
mailing list