esrf

Beamline Instrument Software Support
SPEC Macro documentation: [ Macro Index | BCU Home ]

#%TITLE% PERTAB.MAC
#%NAME%
#%B%PerTab.mac%B% - extract from files different parameters for the
# elements of the periodical table
#%END%

#%IU% (elem, edge)
#%MDESC% Extract from a file the electron binding energy in KeV for the couple
#%B%elem%B%-%B%edge%B%.
def _ElBind(elem, edge) '{
local line ftemp
local EEdge
local _fname

  _fname = "/users/blissadm/local/spec/userconf/BindingEnergies.dat"
  line = getline(_fname)
  while (line != -1) {
    split(line, ftemp)
    if (ftemp[1] == elem) {
      #file data in eV, we need keV
      EEdge = ftemp[edge+2]/1000.
      if (_DEBUG == 1) {
        (edge < 1 ) ? (ename="K") : (ename = sprintf("L%d",edge))
        printf("%d edge energy: %2.4f KeV\n", ename, EEdge)
      }
      #close file before exit
      getline(_fname, "close")
         return(EEdge)
      }
      line=getline(_fname)
    }

  # close file
  getline(_fname, "close")
  return(-1)
}'

#%IU% (elem, edge)
#%MDESC% Extract from a file the natural width in KeV for the couple
#%B%elem%B%-%B%edge%B%.
def _NWidth(elem, edge) '{
local line ftemp
local Gamma
local _fname ename

  if (edge > 3)
    return (-1)
  ename = ""
  _fname = "/users/blissadm/local/spec/userconf/NaturalWidth.dat"
  line = getline(_fname)
  while (line != -1) {
    split(line, ftemp)
    if (ftemp[1] == elem) {
      #file data in eV, we need keV
      Gamma = ftemp[edge+2]/1000.
      if (_DEBUG == 1) {
        (edge < 1 ) ? (ename="K") : (ename = sprintf("L%d",edge))
        printf("%s %s: gamma=%g KeV\n",  elem, ename, Gamma)
      }
      #close file before exit
      getline(_fname, "close")
         return(Gamma)
      }
      line=getline(_fname)
    }

  # close file
  getline(_fname, "close")
  return(-1)
}'

#%IMACROS%
#%TOC%
#%AUTHOR% A.Beteva/BLISS %BR%
#$Revision: 1.1 $, $Date: 2010/07/28 14:30:02 $
#%END%
#%LOG%
#$Log: PerTab.mac,v $
#Revision 1.1  2010/07/28 14:30:02  beteva
#Initial revision
#