mretegan / crispy

Core-Level Spectroscopy Simulations in Python

Home Page:http://www.esrf.eu/computing/scientific/crispy

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Transition operators for quadrupolar transitions are wrong

mretegan opened this issue · comments

The function that calculates the transition operators for an arbitrary polarization and k-vector has wrong prefactors. Isotropic spectra are correct, but the XMCD and XMLD are not.

The correct function is:

function CalculateT(e, k)
    -- Calculate the transition operator for arbitrary
    -- polarization and wave vectors.
    if k == nil then
        T = e[1] * Tx_1s_4p + e[2] * Ty_1s_4p + e[3] * Tz_1s_4p
    else
        T = (e[1] * k[2] + e[2] * k[1]) * Txy_1s_3d / math.sqrt(3)
          + (e[1] * k[3] + e[3] * k[1]) * Txz_1s_3d / math.sqrt(3)
          + (e[2] * k[3] + e[3] * k[2]) * Tyz_1s_3d / math.sqrt(3)
          + (e[1] * k[1] - e[2] * k[2]) * Tx2y2_1s_3d / math.sqrt(3)
          + e[3] * k[3] * Tz2_1s_3d
    end
    return Chop(T)
end