Пример #1
0
def main(distance=150):
    thickness = 0.32

    from parallax import (
        derive_absorption_coefficient_Si,
        compute_offset,
        compute_offset_dectris,
    )

    t0_cm = 0.032
    pixel_cm = 0.0172

    for energy_ev in range(8000, 16001, 4000):

        mu_cm = derive_absorption_coefficient_Si(energy_ev * 0.001)

        wavelength = 12.3985 / (energy_ev * 0.001)
        theta_o = run_xds_xycorr(distance, wavelength, thickness)

        fout = open("p%d.dat" % energy_ev, "w")
        for theta in sorted(theta_o):
            model = compute_offset(t0_cm, theta, mu_cm) / pixel_cm
            model_d = compute_offset_dectris(t0_cm, theta, mu_cm) / pixel_cm
            fout.write("%.3f %.3f %.3f %.3f\n" %
                       (theta, theta_o[theta], model, model_d))
        fout.close()
Пример #2
0
def work_dqe():
  from parallax import dqe, derive_absorption_coefficient_Si
  t0 = 0.032
  for j in range(30, 201, 1):
    energy_kev = 0.1 * j
    mu = derive_absorption_coefficient_Si(energy_kev)
    print energy_kev, dqe(0.032, 0.0, mu), dqe(0.05, 0.0, mu), dqe(0.1, 0.0, mu)
Пример #3
0
def work_dqe():
    from parallax import dqe, derive_absorption_coefficient_Si

    t0 = 0.032
    for j in range(30, 201, 1):
        energy_kev = 0.1 * j
        mu = derive_absorption_coefficient_Si(energy_kev)
        print(energy_kev, dqe(0.032, 0.0, mu), dqe(0.05, 0.0, mu),
              dqe(0.1, 0.0, mu))
Пример #4
0
def recover_xds_silicon(wavelength):
  '''SILICON=Fraction of intensity loss per mm due to absorption in silicon.
  In XDS - try to recover this value N.B. calculations still done in cm due to
  cgs nonsense...'''

  from parallax import derive_absorption_coefficient_Si
  import math
  energy_kev = 12.3985 / wavelength
  mu = derive_absorption_coefficient_Si(energy_kev)
  return 1 / (1 - mu * math.exp(- mu * 0.1))
Пример #5
0
def recover_xds_silicon(wavelength):
    """SILICON=Fraction of intensity loss per mm due to absorption in silicon.
    In XDS - try to recover this value N.B. calculations still done in cm due to
    cgs nonsense..."""

    from parallax import derive_absorption_coefficient_Si
    import math

    energy_kev = 12.3985 / wavelength
    mu = derive_absorption_coefficient_Si(energy_kev)
    return 1 / (1 - mu * math.exp(-mu * 0.1))
Пример #6
0
def main_plot(distance, energy_ev):
    thickness = 0.32

    from parallax import (
        derive_absorption_coefficient_Si,
        compute_offset,
        compute_offset_dectris,
    )

    t0_cm = 0.032
    pixel_cm = 0.0172

    mu_cm = derive_absorption_coefficient_Si(energy_ev * 0.001)

    wavelength = 12.3985 / (energy_ev * 0.001)
    theta_o = run_xds_xycorr(distance, wavelength, thickness)

    import math

    displacement = []
    xds = []
    m_gw = []
    m_dec = []

    for theta in sorted(theta_o):
        model = compute_offset(t0_cm, theta, mu_cm) / pixel_cm
        model_d = compute_offset_dectris(t0_cm, theta, mu_cm) / pixel_cm
        displacement.append(distance * math.tan(theta))
        xds.append(theta_o[theta])
        m_gw.append(model)
        m_dec.append(model_d)

    import matplotlib

    matplotlib.use("Agg")
    from matplotlib import pyplot

    p1, p2, p3 = pyplot.plot(displacement, xds, displacement, m_gw,
                             displacement, m_dec)
    pyplot.xlabel("Displacement, pixels")
    pyplot.ylabel("Offset, pixels")
    pyplot.title("Parallax correction offsets at %deV" % energy_ev)
    pyplot.legend([p1, p2, p3],
                  ["Calculated by XDS", "GW model", "Dectris model"],
                  loc=2)
    pyplot.savefig("%d.png" % energy_ev)
def main_plot(distance, energy_ev):
  thickness = 0.32

  from parallax import derive_absorption_coefficient_Si, compute_offset, \
     compute_offset_dectris

  t0_cm = 0.032
  pixel_cm = 0.0172

  mu_cm = derive_absorption_coefficient_Si(energy_ev * 0.001)

  wavelength = 12.3985  / (energy_ev * 0.001)
  theta_o = run_xds_xycorr(distance, wavelength, thickness)

  import math
  displacement = []
  xds = []
  m_gw = []
  m_dec = []

  for theta in sorted(theta_o):
    model = compute_offset(t0_cm, theta, mu_cm) / pixel_cm
    model_d = compute_offset_dectris(t0_cm, theta, mu_cm) / pixel_cm
    displacement.append(distance * math.tan(theta))
    xds.append(theta_o[theta])
    m_gw.append(model)
    m_dec.append(model_d)

  import matplotlib
  matplotlib.use('Agg')
  from matplotlib import pyplot
  p1, p2, p3 = pyplot.plot(displacement, xds, displacement, m_gw,
                           displacement, m_dec)
  pyplot.xlabel('Displacement, pixels')
  pyplot.ylabel('Offset, pixels')
  pyplot.title('Parallax correction offsets at %deV' % energy_ev)
  pyplot.legend([p1, p2, p3], ['Calculated by XDS', 'GW model', 'Dectris model'],
                loc=2)
  pyplot.savefig('%d.png' % energy_ev)
def main(distance=150):
  thickness = 0.32

  from parallax import derive_absorption_coefficient_Si, compute_offset, \
     compute_offset_dectris

  t0_cm = 0.032
  pixel_cm = 0.0172

  for energy_ev in range(8000, 16001, 4000):

    mu_cm = derive_absorption_coefficient_Si(energy_ev * 0.001)

    wavelength = 12.3985  / (energy_ev * 0.001)
    theta_o = run_xds_xycorr(distance, wavelength, thickness)

    fout = open('p%d.dat' % energy_ev, 'w')
    for theta in sorted(theta_o):
      model = compute_offset(t0_cm, theta, mu_cm) / pixel_cm
      model_d = compute_offset_dectris(t0_cm, theta, mu_cm) / pixel_cm
      fout.write('%.3f %.3f %.3f %.3f\n' % (theta, theta_o[theta], model, model_d))
    fout.close()