{ "cells": [ { "cell_type": "markdown", "id": "db0337e1-fda0-4de4-ab5e-eb20d8d319de", "metadata": {}, "source": [ "# Beam" ] }, { "cell_type": "code", "execution_count": 1, "id": "8df40c47", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Beam \n", " .id: my beam\n", " .matrix:\n", "[[0.000000e+00+0.j 6.123234e-17+0.j]\n", " [6.123234e-17+0.j 1.000000e+00+0.j]]\n", " .jones_vector:\n", "[[nan+nanj]\n", " [nan+nanj]]\n", " .profile: g\n", " .fwhm (mm): Var.value = 0.21, .min = 0.0, .max = 1.0, .fit: True, .id: beam fwhm\n", " .Polarization(): 1.0\n", " .Coherence(): nan\n", " .PhaseDifference() [sigma - pi](rad): nan\n", "\n", "[[0.000000e+00+0.j 6.123234e-17+0.j]\n", " [6.123234e-17+0.j 1.000000e+00+0.j]]\n", "\n", "[[nan+nanj]\n", " [nan+nanj]]\n", "\n", "(nan+nanj)\n" ] } ], "source": [ "import nexus as nx\n", "import numpy as np\n", "\n", "# set beam along pi polarization via initialization parameters\n", "beam = nx.Beam(polarization = 1,\n", " mixing_angle = 0,\n", " canting_angle = 90,\n", " id=\"my beam\",\n", " profile = \"g\", # Gaussian beam profile\n", " fwhm = nx.Var(0.21, min=0, max=1, fit =True, id=\"beam fwhm\")\n", " )\n", "\n", "print(beam)\n", "\n", "print(beam.matrix)\n", "print(\"\")\n", "\n", "print(beam.jones_vector)\n", "print(\"\")\n", "\n", "print(beam.ComplexCoherence())" ] }, { "cell_type": "code", "execution_count": 2, "id": "e5d389b3", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Beam \n", " .id: new beam\n", " .matrix:\n", "[[ 0.5+0.j -0. -0.5j]\n", " [ 0. +0.5j 0.5+0.j ]]\n", " .jones_vector:\n", "[[0.70710678+0.j ]\n", " [0. +0.70710678j]]\n", " .profile: g\n", " .fwhm (mm): Var.value = 0.0, .min = 0.0, .max = inf, .fit: False, .id: FWHM\n", " .Polarization(): 1.0\n", " .Coherence(): 0.9999999999999998\n", " .PhaseDifference() [sigma - pi](rad): -1.5707963267948966\n", "\n", "(-0-0.9999999999999998j)\n" ] } ], "source": [ "beam = nx.Beam(id=\"new beam\")\n", "beam.CircularLeft()\n", "\n", "print(beam)\n", "\n", "print(beam.ComplexCoherence())" ] }, { "cell_type": "code", "execution_count": 3, "id": "7c24b797", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Beam \n", " .id: new beam\n", " .matrix:\n", "[[1.+0.j 0.+0.j]\n", " [0.+0.j 1.+0.j]]\n", " .jones_vector:\n", "[[nan+nanj]\n", " [nan+nanj]]\n", " .profile: g\n", " .fwhm (mm): Var.value = 0.0, .min = 0.0, .max = inf, .fit: False, .id: FWHM\n", " .Polarization(): 0.0\n", " .Coherence(): 0.0\n", " .PhaseDifference() [sigma - pi](rad): 0.0\n", "\n", "0j\n" ] } ], "source": [ "# set coherency matrix for unpolarized beam\n", "beam.SetCoherencyMatrix(np.array([[1,0], [0, 1]], dtype=complex))\n", "\n", "print(beam)\n", "\n", "print(beam.ComplexCoherence())" ] }, { "cell_type": "code", "execution_count": 4, "id": "e73cc311-d054-4f2a-a6bc-0381dd279b82", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Beam \n", " .id: new beam\n", " .matrix:\n", "[[1.+0.j 0.+0.j]\n", " [0.+0.j 0.+0.j]]\n", " .jones_vector:\n", "[[1.+0.j]\n", " [0.+0.j]]\n", " .profile: g\n", " .fwhm (mm): Var.value = 0.0, .min = 0.0, .max = inf, .fit: False, .id: FWHM\n", " .Polarization(): 1.0\n", " .Coherence(): nan\n", " .PhaseDifference() [sigma - pi](rad): nan\n", "\n", "(nan+nanj)\n" ] } ], "source": [ "# set Jones vector for a fully sigma polarized beam\n", "beam.SetJonesVector(np.array([1,0], dtype=complex))\n", "\n", "print(beam)\n", "\n", "print(beam.ComplexCoherence())" ] }, { "cell_type": "code", "execution_count": 5, "id": "1dc5eddf", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Beam \n", " .id: new beam\n", " .matrix:\n", "[[0.5+0.j 0.5+0.j]\n", " [0.5+0.j 0.5+0.j]]\n", " .jones_vector:\n", "[[0.70710678+0.j]\n", " [0.70710678+0.j]]\n", " .profile: g\n", " .fwhm (mm): Var.value = 0.0, .min = 0.0, .max = inf, .fit: False, .id: FWHM\n", " .Polarization(): 1.0\n", " .Coherence(): 1.0\n", " .PhaseDifference() [sigma - pi](rad): 0.0\n", "\n", "(1+0j)\n" ] } ], "source": [ "beam.LinearSigma()\n", "\n", "beam.Rotate(45)\n", "\n", "print(beam)\n", "\n", "print(beam.ComplexCoherence())" ] }, { "cell_type": "code", "execution_count": 6, "id": "d67db1ca", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Beam \n", " .id: new beam\n", " .matrix:\n", "[[ 0.5+0.j -0. -0.5j]\n", " [ 0. +0.5j 0.5+0.j ]]\n", " .jones_vector:\n", "[[0.70710678+0.j ]\n", " [0. +0.70710678j]]\n", " .profile: g\n", " .fwhm (mm): Var.value = 0.0, .min = 0.0, .max = inf, .fit: False, .id: FWHM\n", " .Polarization(): 1.0\n", " .Coherence(): 0.9999999999999998\n", " .PhaseDifference() [sigma - pi](rad): -1.5707963267948966\n", "\n", "1.0\n", "0.9999999999999998\n", "-1.5707963267948966\n", "(-0-0.9999999999999998j)\n" ] } ], "source": [ "beam.CircularLeft()\n", "\n", "print(beam)\n", "\n", "print(beam.Polarization())\n", "\n", "print(beam.Coherence())\n", "\n", "print(beam.PhaseDifference())\n", "\n", "print(beam.ComplexCoherence())" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.12.0" } }, "nbformat": 4, "nbformat_minor": 5 }