{ "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", " .polarization (mm): Var.value = 1.0, .min = 0.0, .max = 1.0, .fit: False, .id: \n", " .mixing_angle (mm): Var.value = 0.0, .min = -45.0, .max = 45.0, .fit: False, .id: \n", " .canting_angle (mm): Var.value = 90.0, .min = -90.0, .max = 90.0, .fit: False, .id: \n", " .matrix:\n", "[[3.74939946e-33+0.j 6.12323400e-17+0.j]\n", " [6.12323400e-17+0.j 1.00000000e+00+0.j]]\n", " .jones_vector:\n", "[[6.123234e-17+0.j]\n", " [1.000000e+00+0.j]]\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(): 1.0\n", " .PhaseDifference() [sigma - pi](rad): 0.0\n", "[[3.74939946e-33+0.j 6.12323400e-17+0.j]\n", " [6.12323400e-17+0.j 1.00000000e+00+0.j]]\n", "\n", "[[6.123234e-17+0.j]\n", " [1.000000e+00+0.j]]\n", "\n", "(1+0j)\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", " .polarization (mm): Var.value = 1.0, .min = 0.0, .max = 1.0, .fit: False, .id: \n", " .mixing_angle (mm): Var.value = 45.0, .min = -45.0, .max = 45.0, .fit: False, .id: \n", " .canting_angle (mm): Var.value = 0.0, .min = -90.0, .max = 90.0, .fit: False, .id: \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(): 1.0\n", " .PhaseDifference() [sigma - pi](rad): -1.5707963267948966\n", "-1j\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": [ "-------------------------------------------------------------------------------------------\n", " NEXUS ERROR in Beam\n", " warning: removed in verison 2.0.0\n", "-------------------------------------------------------------------------------------------\n", "Beam \n", " .id: new beam\n", " .polarization (mm): Var.value = 1.0, .min = 0.0, .max = 1.0, .fit: False, .id: \n", " .mixing_angle (mm): Var.value = 45.0, .min = -45.0, .max = 45.0, .fit: False, .id: \n", " .canting_angle (mm): Var.value = 0.0, .min = -90.0, .max = 90.0, .fit: False, .id: \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(): 1.0\n", " .PhaseDifference() [sigma - pi](rad): -1.5707963267948966\n", "-1j\n" ] } ], "source": [ "# set coherency matrix for unpolarized beam\n", "# not working in verison 2\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", " .polarization (mm): Var.value = 1.0, .min = 0.0, .max = 1.0, .fit: False, .id: \n", " .mixing_angle (mm): Var.value = 45.0, .min = -45.0, .max = 45.0, .fit: False, .id: \n", " .canting_angle (mm): Var.value = 0.0, .min = -90.0, .max = 90.0, .fit: False, .id: \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(): 1.0\n", " .PhaseDifference() [sigma - pi](rad): -1.5707963267948966\n", "-1j\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": [ "-------------------------------------------------------------------------------------------\n", " NEXUS ERROR in Beam\n", " warning: removed in verison 2.0.0\n", "-------------------------------------------------------------------------------------------\n", "Beam \n", " .id: new beam\n", " .polarization (mm): Var.value = 1.0, .min = 0.0, .max = 1.0, .fit: False, .id: \n", " .mixing_angle (mm): Var.value = 0.0, .min = -45.0, .max = 45.0, .fit: False, .id: \n", " .canting_angle (mm): Var.value = 0.0, .min = -90.0, .max = 90.0, .fit: False, .id: \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", "(nan+nanj)\n" ] } ], "source": [ "beam.LinearSigma()\n", "\n", "# not working in verison 2\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", " .polarization (mm): Var.value = 1.0, .min = 0.0, .max = 1.0, .fit: False, .id: \n", " .mixing_angle (mm): Var.value = 45.0, .min = -45.0, .max = 45.0, .fit: False, .id: \n", " .canting_angle (mm): Var.value = 0.0, .min = -90.0, .max = 90.0, .fit: False, .id: \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(): 1.0\n", " .PhaseDifference() [sigma - pi](rad): -1.5707963267948966\n", "1.0\n", "1.0\n", "-1.5707963267948966\n", "-1j\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())" ] }, { "cell_type": "code", "execution_count": 7, "id": "6a5b87c4-a1f7-44d5-9731-6cc5bae08c51", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "set new Jones vector\n", "[[0.70710678+0.j]\n", " [0.70710678+0.j]]\n", "True\n", "[[0.5+0.j 0.5+0.j]\n", " [0.5+0.j 0.5+0.j]]\n" ] } ], "source": [ "print(\"\\nset new Jones vector\")\n", "# set Jones vector for a fully polarized beam at 45 deg from the sigma direction\n", "# angle will rotate the refernece plane away from sigma direction\n", "beam.SetJonesVector(np.array([1.0+0j, 0.0]),\n", " angle = 45)\n", "\n", "print(beam.jones_vector)\n", "print(beam.ValidJonesVector())\n", "print(beam.MatrixFromJonesVector()) # only in version 2.0.0" ] }, { "cell_type": "code", "execution_count": null, "id": "66b59e43-7f6d-4760-b66f-1c84df115adf", "metadata": {}, "outputs": [], "source": [] } ], "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.11.9" }, "widgets": { "application/vnd.jupyter.widget-state+json": { "state": {}, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }