[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