Skip to content

Instantly share code, notes, and snippets.

@adrn
Created October 3, 2025 12:37
Show Gist options
  • Select an option

  • Save adrn/824ce4f2e7988fc09c2c0a163d1a76cd to your computer and use it in GitHub Desktop.

Select an option

Save adrn/824ce4f2e7988fc09c2c0a163d1a76cd to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "4033afc2",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import gala.potential as gp\n",
"from gala.units import galactic\n",
"from scipy.spatial.transform import Rotation"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "13fad64b",
"metadata": {},
"outputs": [],
"source": [
"fiducial_mw = gp.MilkyWayPotential2022()"
]
},
{
"cell_type": "markdown",
"id": "aff7a7d4",
"metadata": {},
"source": [
"Just to make it visually obvious, I made it 70% tilted halo and 30% spherical, but you can adjust the weights (0.7 and 0.3 below). Also, I made the axis ratios of the tilted halo 1:0.8:0.6, but you can adjust those too - these are the flattenings in the *potential* which are different from what they would be in the density. If you want to specify them in the density, you could use the LeeSutoTriaxialNFWPotential instead of the NFWPotential below:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "756d30e6",
"metadata": {},
"outputs": [],
"source": [
"halo1 = gp.NFWPotential(\n",
" m=0.3 * fiducial_mw[\"halo\"].parameters[\"m\"],\n",
" **{k: v for k, v in fiducial_mw[\"halo\"].parameters.items() if k != \"m\"},\n",
" units=galactic,\n",
")\n",
"halo2 = gp.NFWPotential(\n",
" m=0.7 * fiducial_mw[\"halo\"].parameters[\"m\"],\n",
" r_s=fiducial_mw[\"halo\"].parameters[\"r_s\"],\n",
" a=0.6,\n",
" b=0.8,\n",
" c=1.0,\n",
" units=galactic,\n",
" R=Rotation.from_euler(\"z\", -22., degrees=True), # .as_matrix()\n",
")"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "e40d0cfc",
"metadata": {},
"outputs": [],
"source": [
"tilted_halo_mw = gp.CCompositePotential(\n",
" **{k: p for k, p in fiducial_mw.items() if k != \"halo\"}\n",
")\n",
"tilted_halo_mw[\"halo1\"] = halo1\n",
"tilted_halo_mw[\"halo2\"] = halo2"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "3b34fed2",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA3AAAANwCAYAAABu6ojXAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjYsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvq6yFwwAAAAlwSFlzAAAWJQAAFiUBSVIk8AAAWDpJREFUeJzt3QmUXFWBP+CbFUgkG0sIW8KwO8oaRpBREAbZRAVxPMoiHpwB1GFG/qI4MCCLCgjqgDOIy8EROaICAyrLEc3hjEFAw5KwDEsEwxYgCUlYgiQk+Z/7nGo63VWdqu6qeu++933n9OlKV1Xn9av33r2/e++7d9jq1atXBwAAAApveN4bAAAAQHMEOAAAgEQIcAAAAIkQ4AAAABIhwAEAACRCgAMAAEiEAAcAAJAIAQ4AACARAhwAAEAiBDgAAIBECHAAAACJEOAAAAASIcABAAAkQoADAABIhAAHAACQiJEhQU888US4+eabw6JFi8LChQvDCy+8EDbccMOw5557hsMOOyyMGzduwPcvXbo0XH311WH27Nlh9OjRYfny5WG77bYLRx11VNhoo4269ncAAAC0Ytjq1atXh4T88pe/DE8//XQ45phjwtixY7Ofvfrqq+GKK64IN9xwQxbevvjFL4bp06fXfX9876mnnhr22muvcOKJJ2YBbuXKleHHP/5xuO6668J5550X3vrWt3b5rwIAAChZgHvooYfCTTfdFD73uc/Vff5LX/pSuP3228O6664bvvWtb4WpU6eu8fxLL70U/umf/ikLbZdffnkYPnzNEaRf+MIXwuOPPx4uueSSMGXKlI7+LQAAAKW+By72kL3rXe9q+PwRRxyRff/zn/+cDZHs6zvf+U549tlnw3vf+95+4S068MADw5IlS8I3vvGNNm85AABAxQLcvHnzwl133RVef/31us9vvfXWPY/nzJmzxnMxuP3617/OHu+0005131/7+b333tvv/QAAAHlLKsCNGTMm/OIXvwgf/vCHw3e/+91+z48c+eacLIsXL17juVtuuSW7123YsGFhyy23rPv740Qo66+/fvb4xhtvbPv2AwAAVCbA7bPPPtn31157Lfz0pz8N8+fPX+P5OCNlzWabbbbGc7Nmzcq+jx8/Pqy33noN/4/avW/33HNPSOj2QAAAoAKSWkbgAx/4QLYEwG233Ra22GKLrMestz/8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J2QCsDYCHAClJxiVm5kogSoR4ACgQIoQNvWaAhSXAAdAqRUhEAFAuwhwAFAwQifQl8W8qRkZKuzBBx8MV199dVi8eHEYMWJE9rP3vOc94bDDDuv5NwAAQFFUNsBdf/314fvf/34488wzwx577JH9bNGiReHss88Ot99+e/jyl78cRo8enfdmAlBAU8av2+9n85f+OZdtgb6LeT/19NK8NwPooEoOoZw5c2a47LLLwlFHHdUT3qINNtggnH766WHOnDnh/PPPD6tXr851OwEo1lDEGNzqhbfac+1kGCUA9VQuwL366qvh61//ehbODjrooH7PT548Oey6667ht7/9bfjNb36TyzYCUDzNBLR2h7g8mYkSoJgqF+Cuu+668PLLL4ctt9wyTJgwoe5rdtppp+z7j370o7By5coubyEARdNKMCtTiAOgeCoX4G688cbs+9SpUxu+Zquttsq+P/PMM+G+++7r2rYBAINjMW+gKioV4J544olsopJok002afi6KVOm9DyeNWtWV7YNgLRsPG6d7KsevXAAdEqlZqG8//77ex43Gj7Z97kHHnhgrb93zIpFYfrzPxj0ds2afNyg3wtVEWdVi7OrQbetLYzFEPfCS693bXsAaI+h1N/vWhE7hSaFPFSqB67W+xatt956DV83ZsyYuu8BoHosDwBAkVSqB27p0jfXRRk5svGf3vu5JUuWrPX3Lhu1gV40ANouLiUwd8kreW8GQCnNGkL9fdmouSEvlQpw66zz5r0Kq1atavi63s+tu677GADorxvDJoU3ACo9hHLixIk9j1esWNHwdcuXL2/qXjmKZ/6TC/LeBADDLgHomEoFuM0337zn8UsvvdTwdb2f22KLLTq+XQAUuwdLIAOKYMqWG+W9CRRApQLcrrvuGkaMGLHWyUl6P7f77rt3ZdsAKLZmQ5ywB0AnVSrAjR07Nuy88849i3Q38tRTT2Xfhw8fHvbcc8+ubR8AxRbDWaOANtBzANAulZrEJPrYxz4W7rnnnvDYY49lk5XEkNbXww8/nH0/4IADwsYbb5zDVgJQZIIaAHmpVA9cFHvgYq/aq6++usbC3jUrV64Mv//977PeuqOPPjqXbQQYyNz5je/hLaLZ85fl+v+nOpNjqtsNQGdVLsBFp512Wpg2bVq48sors8DW20033RQWL14czjzzzLDJJpvkto0AAACh6kMoo9i7dsEFF4QLL7wwnHrqqeHQQw8NY8aMCffee2+44447wjnnnBN22223vDcTACrbcwpAfZUMcNGkSZPC+eefHx599NHwwAMPhAULFoRddtklfPKTnwyjR4/Oe/MAaPNwxG0mvCWkwvBJABqpbICr2W677bIvoPieenpp2GLz8XlvBgBAbip5DxwA1RuOp1cLgDIQ4Cid+U8uyHsTgIJKIcSlsI0A5EeAA0hQaksJ0BzhbfCcE0BVCHAAVIqQlMaQVwDqE+AAqFwoKGKIK+I2AVA8AhwAlVSkwFSkbQGg2AQ4ILmlBKBMwakI2wBAOgQ4gESlOGlDkYZRFiFAFTG8FfEzAuBNAhwAlZdHkCpieAOg+AQ4SslacFBcRe3h6WagEt4AGKyRg34nAJRMLVhtM+EtHf39tFeKw4kBBksPHADUCVrtDlsphLei9o4C8CYBDkiOmSjT73lIJSgMNcjV3p9CeAMgDYZQAsBa1Atg9YZZCmoAdJoAB0BuvXA7TxkTUlW2sJZKryhA1RlCCZC4VIdRAgCtE+AoLUsJQPHp9SmGlD8HDRhA1QhwAAAlYZInKD8BDkiSSkp5pNz7Uwb2P0BaBDiAEkh9GJkQAQDNEeAAoKIEZ4D0CHAAFIIwQdV6ngEGQ4ADkuU+uDWpzNIKgRkgTQIcpWYpAUiLUAEAAxPgAEqkDL1wQlzn2ccA6RLgACgcAaNzyrJvy9BYATAYAhwAQAm4LxiqQYADkqbCUt6eibL0FBWJfQqQPgEOgMISONqnTPuyLI0UAIMhwFF6ZqKEtJUpeOTFPgQoDwEOSJ5hlOXvoRBABs++AygXAQ6AJAgilLFxAqBVAhxASZWxoivEtcb+AigfAQ6ApAglzbGfqsVQcqgOAY5KMJFJ+am8VKcXLhJOqrl/yno8A7RCgAMgSWUNKUNlvwCUmwAHUHJl7rWIYUVgeVOZ90WZj2OAVghwQGkYRlldZQ4uzRBkoRrcEkIkwAFUQBV6L6oaYKr6d/MmjVdQLQIclaHVCsqvaj1RVflbq9AAAdAsAQ6gIqpUCS57sKlaUAXgTQIcUCqGElH2kFPGv2kgVWp4AGjGyKZeBUBpKsPbTBkXqqQWeHaeMiakrGrBDYD69MBRKe6Dg+r2aKTaI5fqdrdDVY/VVhh1ANWjBw4oZYVmi83H570ZFFQqPXJVDW0ADEyAA6igKg6lHCggFSnMCW5/ofcNoD4BDiglvXCkFOaENgCaJcABVJReuPzCnMA2ML1vAI0JcFRyIpMpW26U92ZAIQhxgw9azYQ7QY1OMoEJVJMAB5SWYZR0knDWGXrfAAZmGQGAilNhBig+SyFRI8ABIMRRCI7D5hk+CdUlwFFJWrGqQyUHACgTAQ6AjN4P8uT4A2iOAAeUnl645qlEkwfHHUDzBDgA1qAyDcWmUQqqTYCjstwHB5A/DQYArRHggErQYt0alWq6wXEG0DoBDoC6VK4BoHgEOKAy9MK1ToijUxxbg+M6Vk1u+6A3AY5Kc0GEtVPRpt0cUwCDJ8ABlaL1GgBImQAHwFrpMaFdHEuDpwEKiAQ4Ks8wSmiOijdD5RgCGDoBDqgcrdiDpwLOYDl2ANpDgAOgJSritMoxM3QanoAaAQ6oJJWhoVEhB+gOt3rQlwAHLo4wKEIczXCcALSXAAdUll64oVM5ZyCOj/ZwrQJ6E+AAGBKVdOpxXAB0hgAH/8cwymrSst0eKuv05nhoH9cooC8BDoC2UGknchwAdJYAB1SeFu72UXmvNp8/QOcJcAC0vRKvIl89PvP207iE2zuoR4CDXlwoq0tFqf1U6KvDZw3QPQIcAB2jYl9+PuPO0KgENCLAAfwfFabOUMEvL58tQPcJcNCHYZTQfu6LKxefJ0B+BDiAXvTCdZZKf/p8hp3nOgQMRIAD6EPlqbMEgHT57KB7jAiikcoFuBdeeGHA5xcscLLgogmdZgheenxe3aEBCVibkaFCHnzwwXDKKaeEd7/73WHvvfcOW221VVhnnXXCK6+8EubNmxfuvPPOsHTp0nDeeeeF0aNH5725QM6VqC02H5/3ZlQiFGwzZVzem8EABDeAYqlUgHvjjTfCqlWrwm233ZZ99bXvvvuGs88+W3gDyCEgCHLFI7x1l943oBmVCnDRJptsErbYYousN+71118PkyZNCjvssEN43/veF3bbbbe8N4+CDaOcsuVGeW8GOdIL111644pDcAMorsoFuI033jh85StfyXszgEQIcd2lNy5/whvkz734DKRyAQ6A4hPkuk9wy5fhk0CzKjcLJbRCCxiRilV+zFbZHfYxQDoq2QMXlwq49tprsyUFFi5cGJ5//vmw5ZZbhv333z8ccMABYcSIES39vjErFoXpz/9g0Nsza/Jxg34vQBXokesMwa0YNBJBPqYPof5+14pFIYRJIQ+VC3BPP/10+Na3vhVOPvnksMEGG2Q/i0sHnH/++eHiiy8Ov/rVr8K5554bxo4dm/emAgXiXrhiEOTaQ3ADSFflAtxrr70WPvvZz4YJEyb0/Gz8+PHhjDPOCMccc0y4//77w0UXXRTOOuuspn/nslEb6EUrMbNRUiPEFYcgNziCW/HofaMvt290z6wh1N+XjZob8lKpe+BGjRoVdtxxxzXCW03scdtnn32yxzNnzgwPP/xwDlsIQCvcI9cc+wmgPCoV4GJ4O/PMMxs+v/322/c8vv3227u0VaRAaxg1WsuLHVCElDXZJ8XmegIkOYTywgsvDLfeemvHfn/v3z1s2LAB722Li3rXPPXUUx3bJiBthlIWW9WHVwpsaRDegGQD3AknnBCOPfbYrvxfq1evDnPmzMmC3E477dTv+fjzmuXLl3dlmwDofJApe5gT2gCqI/cAFycQiV/dECcnibNMRnEik0MOOWSN55csWdLzeKONTFrBmkxmQm964dJSxjAntKVL7xuNuGWDJAJct8Q132rhLXriiSf6vWbx4sU9j7fddtuubRuQJiGuHMEnlUAnsAFQqQD34osv9jzedNNNw+GHH97vNffdd1/2fd111w377bdfV7cPgOIEoyKEOoGtnPS+AUNVmQAXQ9vIkSPDmDFjwmWXXZZ97+2VV17pCXDHH398v+chMoySvvTClVOj8NSJYCeoAdCKygS4cePGhcMOOyzccsstdZ+/4oorwooVK8Khhx4aPvjBD3Z9+4B0CXHVIWwxFHrfGIj732hWZQJcbcbL4cOHh1NPPTUcfPDBYfLkyeG1114LM2bMCI8++mg45ZRTsp/DQPTCUY8QBwB0Q6UC3IgRI8KJJ56YTVZyzz33hD/+8Y9hvfXWC+9///vDzjvvnD0PANBuet+AdqlUgKuZOHFi2H///fPeDKBk9MIB9QhvQDsNb+tvg4owTp1GVNQAgE4S4ADaTIgDalwPaIaGYVohwMEgudgCANBtAhxAB2h1B1wHgE4Q4AA6ROUNqsv5D3SKAAdDYBgla6MSB8BA1CVolQAH0GFCHFSLcx7oJAEOhkjLGQA1whvQaQIcQBeo1AHQl0ZgBkOAgzZwAaYZQhyUm3Mc6AYBDqCLVPCgnJzbQLcIcABdpqIH5eKcBrpJgIM2MYySVqjwAVSbegODJcAB5ESIg/Q5j4FuE+CgjbSmAVSH8AbkQYADyJEKIKTJuctQaPBlKAQ4aDMXZVqlIggANEuAAygAIQ7S4XwF8iTAQQfohWMwVAqh+JynQN4EOIACUTmE4nJ+0g4aeRkqAQ6gYFQSoXicl0BRCHDQIVrYGAqVRSgO5yNQJAIcQEGpNAKUi8Zd2kGAgw5yoWaohDjIl3MQKBoBDqDgVCAhH849oIgEOOgwvXC0g4okdJdzjnZTH6BdBDiARKhQQnc414AiE+CgC7S60c6KpcoldI7zCyg6AQ4gQSqZ0H7OKzpFQy7tJMBBl7h4024qm9A+zicgFQIcQMJUOmHonEdASgQ46CK9cHSCyicMnvOHTlP2024CHEAJqIRC65w3QIoEOOgyLXF0ihkqoXnOFSBVAhxAyaiYwsCcI3SLRls6QYCDHLig02kqqFCfcwNInQAHUFIqqrAm5wRQBgIc5EQvHN3gvjj4C+cB3aacp1MEOIAKUHmlyhz/QJkIcJAjrXN0k0osVaMHmrwo3+kkAQ5y5iJPN6nQUhWOc6CsBDiAClK5pcwc30CZCXBQAHrhyINKLmXkuCZvynQ6bWTH/wcACl/Z3WLz8XlvCgyJ4AZUhR44KAgtduRJ5ZeUOX6BKhHgAMiY4IQUOWYpEo2xdIMABwXiwk8RqBCTAg0OQFUJcAD0o3JMkTk2KSKNsHSLAAcFowCgSAQ5isbxCFSdAAcFJMRRNCrN5E1jAsBfCHAANEUFmrw47ig6Da90kwAHBaUwoKgEObrFsQbQn4W8ARgUi4DTKUIbKdHgSrfpgYMCUyiQApVt2snxBDAwAQ4KTogjBYa6MVSOIVKkjCYPhlAC0DaGVdIqoQ2gNXrgIAFa+EiN3hTWxjECMDgCHAAdo5JOPY4JykDjKnkxhBISKiimbLlR3psBQ66wG15ZXYIbwNDpgYOEaO2jDPTKVY/PnLJRHpMnPXAA5MKEJ+UmsAF0hgAHiTGUkrIxvLJcBDfKTu8beTOEEhKk8KCsDLVLl88OoDv0wAFQOHrl0iCwUTUaUCkCAQ4SZSglVSHMFY/gBpAfAQ6AZAhz+RHaqDq9bxSFAAcJ0wtHlQlznSe0ARSPAAeJE+JAmGsnoQ360/tGkQhwAJQ6gAh0AxPYANIiwEEJ6IWDxgS6NQls0Bq9bxSNAAclIcTB4ANMWUOdsAZQPgIcAJXXKOikEuwENegMvW8UkQAHJaIXDrofjLoR8gQ0AGoEOCgZIQ66S7iCctL7RlENz3sDgPZT6AAAlJMABwAAvWgIpcgEOCgphQ8AQPkIcFBiQhwAtEbZSdEJcAAAAIkQ4KDktCQCQHOUmaQg+WUEHnnkkXDuueeGH/3oRy2979Zbbw0333xzWLlyZVi1alUYM2ZMOPLII8Mee+zRsW2FvFhaAACgHJIPcFdffXVLr49h7atf/WqYO3duOO+888Jmm23WEwRPP/30cPDBB4fjjz++Q1sL+RHiAKAxvW+kItkhlIsXLw4XXXRRmDlzZkvvu/zyy8Ntt90WPv/5z/eEt2j77bcPJ554YhYIr7/++g5sMQAAQIV64ObNmxcuueSSsHz58rBkyZKwaNGilt4/Z86ccN1114Vp06aFHXfcsd/z++yzT7j00kuzkPeOd7wjTJkypY1bD/nTCwcA/el9IyVJ9cBNnTo1XHzxxVnIuvLKK+uGsIH88Ic/zL6//e1vr/v8qFGjwg477BDeeOONcNVVV7Vlm6FoFFIAAOlKKsANxdNPPx1mz56dPY49cI1stdVW2fcZM2aE1157rWvbBwBA92nYJDVJDaEcilmzZvU83mSTTRq+rjZscsWKFVng23PPPdf6u8esWBSmP/+DwW/b5OMG/V4YDEMpAUB4q7rpQ6i/37Ui3so1KeShMj1w999/f8/jCRMmNHxd7+d6vwfKRqEFAJCeyvTA9Z7wZL311mv4urgeXL33DGTZqA30opEkPXEAVJWGTGYNof6+bNTckJfK9MAtXbq05/HIkY1za+/ner8HAAAgb5UJcOuss84ai3k30vu53u+BstICCUDVKPuo9BDKCy+8MNx6662hU9r1uydOnNjzOE5Q0khcY67ee6DMDKUEoCqEN0LVA9wJJ5wQjj322FB0m2++ec9MlC+99FLD1/V+bosttujKtkERCHEAABUIcOPHj8++im769Onh+uuvX+vkJL2f23333buybVAUQhwAZab3jTKozD1wO++8cxg7dmz2+Jlnnhlwwe9os802C1OnTu3a9gEAAKxNZQLcuuuuG4444ojs8SOPPNLwdQ8//HD2/aijjuratkGRaJ0EoIyUb5RFZQJc9KEPfShstNFGYc6cOeG1116r2/v21FNPhW233Tbst99+uWwjFIFCDoAyUa5RJkkHuNqMkb1njhxIHEJ57rnnhtWrV4err7663/P/9V//lQW8c845J4wYMaLt2wspUdgBAJRwEpNumjdvXrjkkkuyx2+88UZ49NFHs8eLFy8OJ510UhgzZkz276OPPjrsuuuudX/H1ltvnS19cMEFF2QTluy1117Z7/r1r38dlixZEi666KKw4YYbdvGvguIyqQkAqdMgSdkkFeDipCIXX3zxkH/PDjvsEL73ve+Fe+65Jzz++ONh+PDh4SMf+Uh429ve1pbtBAAgf8IbZZRUgGunOERyjz32yL6AxvTCAQAUR9L3wAHdoQUTgNQouygrAQ5oioIQACB/AhzQNCEOgBQorygzAQ5oiUIRgCJTTlF2AhzQMoUjAEA+BDgAAEpBAyNVIMABg6KQBKBIlEtUhQAHDJrCEoAiUB5RJQIcMCQKTQCA7hHggCET4gDIizKIqhHggLZQgALQbcoeqkiAA9pGQQoA0FkCHNBWQhwA3aC8oaoEOKDtFKoAdJJyhioT4ICOULgC0AnKF6pOgAM6RiELANBeAhwAAEnQMAgCHNBhClsA2kF5An8hwAEdp9AFYCiUI/AmAQ7oCoUvAMDQCXBA1whxALRK2QFrEuCArlIQA9AsZQb0J8ABXadABmBtlBVQnwAH5ELBDEAjyghoTIADcqOABgBojQAH5EqIA6A35QIMTIADcqewBiBSHsDaCXBAISi0AapNOQDNEeCAwlB4A1ST6z80T4ADCleIK8gBAOoT4IBCEuIAqsH1HlojwAGFpVAHKDfXeWidAAcUmsIdoJxc32FwBDig8BTyAOXiug6DJ8ABSVDYA5SD6zkMjQAHJEOhD5A213EYOgEOSIrCHyBNrt/QHgIckByVAIC0uG5D+whwQJJUBgDS4HoN7SXAAUlXClQMAIAqEeCA5AlxAMXk+gztJ8ABpaCSAFAsrsvQGQIcUBoqCwDF4HoMnSPAAaWi0gCQL9dh6CwBDigdlQeAfLj+QucJcEApmaESoLtcc6E7BDig1FQoADrPtRa6R4ADSk/FAqBzXGOhuwQ4oBJUMADaz7UVuk+AAyrDfXEA7eN6CvkQ4IDKUekAGBrXUciPAAdUksoHQOuMZID8CXBAZamEADTPNROKQYADKk1rMsDauU5CcQhwAConAA25PkKxCHAA/0clBWBNrotQPAIcQC+GVAL8hWshFJMAB1CHigtQZa6BUFwCHEADeuOAKnLdg2IT4ADWQmUGqAKNVpAGAQ6gCSo1QJm5xkE6BDiAJmmdBsrIdQ3SIsABtEhlBygL1zNIjwAHMAh644DUuYZBmgQ4gCFQAQJSowEK0ibAAQyRyhCQCtcqSJ8AB9AmKkZAkblGQTmMzHsDAMpYQZqy5UZ5bwpARnCDctEDB9ABKkxAEbgWQfkIcAAd4t44IE+uP1BOAhxAh6lEAd2k8QjKTYAD6AIVKqAbXGeg/AQ4gC4S5IBOcW2BahDgAHKgogW0i4YhqBYBDiAnKl3AULmGQPVYBw4gZ9aOA1oluEF16YEDKAgVMqAZrhVQbXrgAApEbxzQiOAGRHrgAArI/XFAb64HQGUD3MKFC8OqVasaPr98+fKwdOnSrm4TQCOCHFSbawBQuiGUjzzySDj33HPDj370o6Ze/7nPfS6MHj06HHjggeGtb31rmDhxYhbann/++TBnzpxw++23hy984Qth/PjxHd92gGYZWgnVI7gBpQxwV199dUuvf+ONN8IzzzwTvv3tb/d7btNNNw2nnXZa2H777du4hQDtrdAJcVBughtQygC3ePHi8P3vfz/MnDkzTJ48uaX37rfffuH+++8PL774YlhvvfXC5ptvnv3soIMOyv4NUGR646CcBDegdAFu3rx54ZJLLsmGPC5ZsiQsWrRoUL/nE5/4RNhkk03avn0A3STIQXkIb0ApA9zUqVPDxRdf3PPv//f//l923xpAlQlykC7BDSh1gAOgMUEO0iG4AYNVyQAXlxH4+c9/Hh588MHsXrr58+eHddddN0yfPj186EMfChtuuGFLv2/MikVh+vM/GPT2zJp83KDfC9CXIAfFJbhBcUwfQv39rhXxVq5JIQ+VDHAXXHBB+NjHPhbe//73rxHo/vM//zPcfPPN4Utf+lLYZZdd8t5MgCER5KA4BDegXSoZ4P7u7/4uvOMd7+j59/Dhw8MHP/jB8Pjjj2cB7uyzzw6XX3552HjjjZv6fctGbaAXDSgsQQ7yJbxBMc0aQv192ai5IS/DQ8XERbz32muvus8dfPDB2fdXXnml5fXlAFKoRNa+gM5zvgGdULkA9+///u8N73Hbdttts9646Pbbb+/ylgF0j4oldI7zCyj0EMoLL7ww3HrrraFT2v27119//YbPjRw5MowbNy5bYy4u8v3qq6+GsWPHtvX/BygSwyuhfYQ2IIkAd8IJJ4Rjjz02pCLOOPnEE09kk5SMGTOm3/O1HrgoLhguwAFVIMjB4AluQFIBbvz48dlXCmbNmhXOPPPMsGLFivDXf/3X4Zvf/OYaz69evTosXbo0ezxq1KgwYcKEnLYUIP+KqDAHjQltQF4qNQvlT37ykyy8RbEXrq8Y3lauXJk93mabbcKwYcO6vo0ARaFXDvoT3IC8VSrAxfvaohEjRmRDP/uaPXt2z+NDDjmkq9sGUFR65UBwA4qjUgFu6tSp4cknnwyf//znw3777dfv+f/5n//Jvu+4447ZWnEArEmvHFUjuAFFk3SAi5OM9P6+Nn//938f7rzzzrqvf+ihh8LMmTPDZpttFs4444xsRkoA6tMrR5kJbUCRJZVS5s2bFy655JLs8RtvvBEeffTR7PHixYvDSSed1DOr5NFHHx123XXXfu/fYYcdwtlnnx2+/e1vh+eeey5b9y1OVvLwww+HG264IRxwwAHZ7zHzJEDz9MpRFoIbkIJhq+PUixUTw1+83y0Gwvh48uTJYaeddgoTJ05s+XftvvvuYfafXgzrH3xeR7YVIEXCHKkQ2oDBePnmM8LO0yaFu+++O3RbUj1w7RKHR8bgFb8AaD9DLCk6wQ1IVSUDHADdI8xRFEIbUAYCHABdI8zRbUIbUDYCHAC5EOboFKENKDMBDoDCVbgFOloltAFVIcABUDh652iG0AZUkQAHQKHpnaNGYAMQ4ABIjEBXLUIbwJoEOACSJtCVi8AGMDABDoDSBwChrpiENYDWCXAAlJ5QVwwCG8DQCXAAVJJQ1zmCGkDnCHAA0ETwEO76E9QAuk+AA4AmVDXcCWkAxSLAAUCXQ07egU8oA0iXAAcAXSZAATBYwwf9TgAAALpKgAMAAEiEAAcAAJAIAQ4AACARAhwAAEAiBDgAAIBECHAAAACJEOAAAAASIcABAAAkQoADAABIhAAHAACQCAEOAAAgEQIcAABAIgQ4AACARAhwAAAAiRDgAAAAEiHAAQAAJEKAAwAASIQABwAAkAgBDgAAIBECHAAAQCIEOAAAgEQIcAAAAIkQ4AAAABIhwAEAACRCgAMAAEiEAAcAAJAIAQ4AACARAhwAAEAiBDgAAIBECHAAAACJEOAAAAASIcABAAAkQoADAABIhAAHAACQCAEOAAAgEQIcAABAIgQ4AACARAhwAAAAiRDgAAAAEiHAAQAAJEKAAwAASIQABwAAkAgBDgAAIBECHAAAQCIEOAAAgEQIcAAAAIkQ4AAAABIhwAEAACRCgAMAAEiEAAcAAJAIAQ4AACARAhwAAEAiBDgAAIBECHAAAACJEOAAAAASIcABAAAkYmTeG5C6xx57LIzJeyMqbPrzP8i+z5p8XN6bUkn2f77s/3zZ//my//PnM8iX/Z+vMSsWhcceW5TL/60Hrk3+/NQf894EAACg5AQ4AACARAhwbaQXDgAA6CQBrs2EOAAAoFMEuA4Q4gAAgE4Q4DpEiAMAANpNgAMAAEhEcuvAvfbaa+HnP/95ePzxx8PLL78cnn766TBs2LCwyy67hIMOOijsuOOOTf2eW2+9Ndx8881h5cqVYdWqVWHMmDHhyCOPDHvssUdbe+HW3WLrtv0+AACg2pIKcPPnzw+XX355OProo8NHPvKRnp/PnDkzXHzxxVkg+8AHPhA+9alPZaGunhjWvvrVr4a5c+eG8847L2y22WbZzx955JFw+umnh4MPPjgcf/zxbdtmIQ4AAKjcEMoYvL72ta+FU045JWyzzTZrPPe3f/u34dRTTw2rV68O119/ffjRj37U8PfEAHjbbbeFz3/+8z3hLdp+++3DiSeeGK6++ursd7ST++EAAIBKBbhZs2aFCRMmhHHjxtV9/p3vfGeYMmVK9viaa64Jr776ar/XzJkzJ1x33XVh2rRpdYda7rPPPtlQyhjyYm8fAABAkSQT4ObNmxf++Mc/hmeffbbha/7qr/4q+75s2bLw2GOP9Xv+hz/8Yfb97W9/e933jxo1Kuywww7hjTfeCFdddVVoJ71wAABAZQLc2LFjs/B23HHHhc9+9rNhwYIF/V4zcuSbt/QtXrx4jefiZCezZ8/OHsceuEa22mqr7PuMGTOyCVPaSYgDAAAqEeD+5m/+Jqy77rrZfW4PPPBAuOmmm/q9ZuHChT2Pe9/fVhuCWbPJJps0/H9qwzBXrFjRE/jaSYgDAABKPwvlhhtuGM4+++xwxRVXhFdeeaXfdP8vvfRSePTRR7PHb3vb28J22223xvP3339/z+N4L10jvZ+L79lzzz0H3K7YSxcnWBl770VN/y0r713z38tGbdD0e1nTXSsWZd+XjZqb96ZUkv2fL/s/X/Z/vuz//PkM8mX/D92Y/9uHgxHn2xg+PJ++sGQCXLTbbrtlX/X87Gc/y3rNYu/aF7/4xX7PL1r05ge03nrrNfw/4iQm9d7TSOzpe+aZZ8JQ7Dxt0pDeX232Xb7s/3zZ//my//Nl/+fPZ5Av+3+oHnts8AEuhre+I/66JakA10gcHvnTn/40TJ06NVvjbaONNur3mqVLl9a9V66v3s/1fk8jf/rTnwa1zQAAAJULcL/73e+yBbnf8573hH/+539u2Lu2zjrr9DyOQx4b6f1c7/cAAAAkH+AuvPDCcOutt4ZOGeh3x163uGj3Zz7zmXDIIYcM+HsmTpzY8zgOtWxk+fLldd8DAACQfIA74YQTwrHHHhu6Ka7T9s1vfjM88sgj4dJLL82GTq7N5ptv3jMTZZzwpJHez22xxRZt2mIAAIACBLjx48dnX93y5z//OZx11lnZZCXf+ta36g5z/PWvfx3+7u/+bo2fTZ8+PVx//fVrnZyk93O77757W7cdAACgEuvARXENuC9/+cvhrW99a7aYd6N71H7/+9/3+9nOO++cLQYeDTRrZFzwO4qzyjTTswcAANAtSQW4m2++OZv18Zhjjmn4mjhzZG09uN7iIuBHHHFE9jgOvWzk4Ycfzr4fddRRbdlmAACASs5C+Ytf/CKbZOT222/PAllfL7/8crjhhhuye+Tq+dCHPhRuueWWMGfOnGwB7r4zVsbet6eeeipsu+22Yb/99uvY30GxLFy4MEyaNKnhYozxmIvHSzeHCkO7vPDCC2HjjTdu+PyCBQvqLr0CRRQXzo1qI2rqcUxTVa731TFsdRyXmIDYs3bkkUc29drJkydns1PW88c//jEbfnn44YeHT3ziE2s8F4dnPvjgg+GSSy4JG264YVP/V6zY//znPw+PP/54FiBjCBw2bFjYZZddwkEHHRR23HHHpmfbjD2MK1euzJYyiAuKx793jz32aOr9vCn2sJ577rkNj4G+jjvuuDB69Ohw4IEHZsNz4+yjMbQ9//zzWdiPDQZf+MIXwvbbb9/xba/i/q9xDrRfvJ6dcsop4d3vfnfYe++9w1ZbbZUNPX/llVfCvHnzwp133pldW+NSLPEcoPn9evXVV4fFixeHESNGZD+LS9kcdthhPf+mM77xjW9kx228Xu+6667Z/fDxevHiiy9mI2hmzJiRzUodPwvaI04WFxswm52wLl5T4vkxe/bs7LoSy9PtttsuG9kkPHRu/7vet8cTTzyR1UXinBixgT+G4pgJ9txzz+y6Mm7cuEIc/8n0wMXKdDtsvfXW2dIHF1xwQfbh7LXXXlmPXZz4ZMmSJeGiiy5qOrzNnz8/XH755eHoo48OH/nIR3p+PnPmzHDxxRdnB8AHPvCB8KlPfSoLdfXEgicuPj537tzspKqt6B4rwaeffno4+OCDw/HHH9+Wv70q4onTivj5x/siv/3tb/d7btNNNw2nnXaa8NbB/e8c6Jx4bMf9e9ttt2Vffe27777h7LPPVpi3IE6G9f3vfz+ceeaZPY0LsSyJ+zE29sSGQPuzc+IyQDGs/fjHP86+eouNPrG8jeGO9oiV1xiKY6N3M2Ij9qmnnprVreJs4fFciI1y8bOKs5bHa3xsKKX9+9/1fuh++ctfZsfwxz/+8Z5e/tjrf8UVV4Qf/OAH4brrrgtf/OIXs4kR8z7+kwlwMb22a725HXbYIXzve98L99xzT9ZzFofOxQD2tre9renfEU+Sr33ta+FLX/pSvzT+t3/7t9nvjLNlxsI+Pt/ovr0YAOOJFnv9ahXXKAaGE088MQuaG2ywQfjgBz84hL+4GmJreKxYxQAde2FbEYfM3n///VnFIA6tjctOxJ/FXtRGi8PTnv3vHOis2EMRl0SJrbOvv/56Nlw4XgPf9773hd122y3vzUtKPLYvu+yybPRG757heHzGxobYQn7++eeHf/u3f2vYaMfQxcpTbBmPDW+xrI3HeKwwvf/979fD0yZxcFa8Znz961/PenCaEZdhiufBW97ylmx93tptCbFXOjZ0xzI21ovitX7KlCkd/guqt/8j1/vBe+ihh7Je/M997nNr/DwGuXg8x2tObKSLITjOgt93osNuH//JBLh2izs0FsCDHZ4V15SbMGFCw67Ud77zndkHFHvprrnmmmwClb5j9uPwvJjmp02bVneo5T777JN1nccK7jve8Q4XvDrisIB4MsQu6tiDOtASEQOJFbJ44aO7+9850HnxfoivfOUreW9G8mIrbKxMxYpVbNjpKzZaxCF9v/3tb8NvfvObfkvZ0D6xJ0EvW2fE+sodd9yRDQOLx3ystDbrO9/5Tnj22WfDP/7jP9a9pzx+ZnG0RRwGG0dC0d79H7neD16sixxwwAENn4/1+Bjg4nJmcaRRvLUmz+M/qVkoi1ZxjffTxQ+rkb/6q7/Kvi9btiw89thj/Z7/4Q9/mH1/+9vfXvf9o0aNylpOYrf4VVdd1bZtL5PYAhKHq8ZK/pVXXtn0PYcUY/87B0ipcI/3OW+55ZZZ4109O+20U/Y93v8Zh81AauJ9x/GaHkcpxYpms2JdKN6K0vs86Kv283vvvTdrvKN9+5/21OvvuuuurOey0S1YNX2P3zyOfwFukGJvWvzA4gQYcVKUOLNPXyNHjlxjeFnfcbLxBsco9j40Em9CjeIY6DhhCpSFc4CU3Hjjjdn3gdYHrR2rcWjffffd17Vtg7zFGb5jo0UcOhwbOeqJ8wusv/76a5xPUBRjxozJZrv/8Ic/HL773e+2VKfP4/iv7BDKofqbv/mbbCmD2JX6wAMPhJtuuim76bG33l3fve/tqQ3BrBlo6F5tyFi8cTtWduMsOLRfvKcxziYax43HEzMOfY2fb7zXIi4/0ezENjTPOdA9sYHp2muvzW6Ij9elOClULGT233//bMiImRPXPitZbXhwM8dq7fjefffdu7J9VfSHP/whu3c2Dt1+7rnnslbz2JMfJ3uI98yTz/U8zpY40H3j8RyJPdlxDoI4HNm9ou3nej848ZaNeB9cbCj+6U9/mt032Pua3kydvpvHvwA3SLFCH29kjDPTxBtM+95LF29mrC0oHidH6VugxJsZaxoNx+n7XHyPymtnxIkyPvaxj2U3wfcOdP/5n/+ZzSYaJ6uJS0PQPs6B7vV0xhuuTz755GyyjSjeXxEn24hDdX71q19lyz4MtK5W1Q3mWI0Ne3TuPqE4yVScMr1WGY2NO7FMjvcf/sM//EPWik53xApvnEV4bedH7+dj8H7yyScH7NGmda73gxdnjY/7KjYMxYlg+jbcx0ajmt6zguZ1/BtCOQRxRp94708McX2nBf3Zz36W9RjE1to45WhfvSd7GCitxy7deu+hveKEA3GSjJp4A2qc9TBOVhBvJI4Vg9iaRfs4B7ojFi5xmHetMK+1Ep5xxhnZcI4YTuLyKTTmWC2WWOn56Ec/ukZPws477xw+/elPZ63acTKBOBEE3RFnb64tKby2WZudI53lej948XoSJ7T7r//6r2y6/3gPfk0cbfff//3f2eNYL4xrTeZ9/AtwHRC7UmP3ayxk4qxlcVagvmLKrzeutq/ez/V+D+0T1+mIU1DXE9cgi2Iva6vrmzEw50DnxQIoTixTr1UwtsDGISO16fHj9Mm071iNLax05nodZ3muJx7PtQpSnASCYp0ffZ93PW8v1/vOiOEszrYd572IPW+x578Ix78A12a/+93vsgVe3/Oe92S9c43WpFlnnXV6Hsfheo30fq73e2iff//3f294j9u2227bMx1snD6W9nEOdF4szOP1qJHeC9Q7vtt7rMZ7aGm/ODwyLiPQqHJUmykuDk966qmnurx11dTs+dH3edfz9nK9b784A3ac8j8uD3PaaaeFT33qU/3uW8vr+C/dPXBxR7drwe96BvrdsdctTh8dF/Dr3b1az8SJE3sex6GWjcT1teq9p8jy/AwGozYrUKMKQVzrL7amx27yOJyy6GPHU9n/ZT4HivL5xIJmoOM1LvJao7Lb3mN1bfdCMDhru/72PabjvSwU4/wo4/W8SFzv2yvOZXHOOedkk478x3/8R8PZJfM6/ksX4E444YRw7LHHdj2hf/Ob3wyPPPJI1uvWzE2Jm2++ec+sNfEgaaT3c6kURHl8BkMRZ5yMs8zFSUp6j0+u6b0gYzz5ih7gUtn/ZT4HivL5xKEfcb2ZWLDXW5umd0ti74KF/sdqTZWO1SKKlal4H0/saYuLp/flmO6+2FgRG0LjZzPQ+RHVno/lat+Z/Bga1/v2iT34//Zv/5bNJHziiSdmQ7eLdvyXLsDFmzXjV7fEGxvPOuusbLKSOPNPvS7RuLhfnCSjtzg9/fXXX7/WGxl7P5fKlNTd/gyGIgaIOOQgtpr89V//dRbE+14Qa+OU4/jyFFrVU9n/ZT4HivL5xJvV46xjUbyxve/IgN73aTUa7k0Iu+66a3aDe1znp0rHatHEURAnnXRS9j02tl155ZXZCIneHNPdFyujsQE0DjOLy/AMND167RyJtyf0/ewYGtf79vjf//3f8NWvfjUbrv2ud72r7jDIOFNlnAk3z+PfPXBDED+kL3/5y9kMlPFkaTSe9fe//32/n8UZs2o9OXHR14GmhI1iUjfdbvv95Cc/6enyjr1wfcXwFitt0TbbbGPNmjZyDnRWnDW1Vpg3Or57L0YaCxTqi8dpPF7XdqzWhiXFAt1yF+0XF7+N4S1atmxZtr5Vo2M6tphPmzat69tYVXvvvXf2Pa7HF9chqyeWtXHNvqjRRDQMjut9e8T6RqzXx46ZeuEtipOZ1OoleR7/AtwQxPXB/vSnP4Vjjjmm4WtiAKitB9dbvMH9iCOOyB7HoZeN1GYKOuqoo9qyzaypVhmIretxaFtfcW2hmrXd10hrnAPdObajTTfddI11a2ruu+++ns+i1ppIfXGdyOixxx5reKN67ViNi+XWm32YoeldAT3wwAOzRrW+x3wtRMcZ94o+3L1M4sQy8Toz0PU8njuxQTQON4trbtE+rvft68V873vf2zMZUj2914PL8/gv3RDKbvrFL36RjSOOs/nUm3Esjoe94YYbsnvk6vnQhz4UbrnllmzMcly7o+/6ETHhx8IotpQ42Toj9ujEsc6f//zn6+7j//mf/+mZ3anvMFiGzjnQObEwiZPwxKFml112Wb/7O+PSGLUC/fjjj697/ydvij1wsVftzjvvzO7BqvXI1cSCOY62iKHh6KOPzm07y6w2icChhx4a/uVf/qXf83F69BiuYwXp4x//eA5bWF2xEfSTn/xkNulDPEfq9V7En0fx/BCu28v1fugef/zx8OCDD2aTvcRred8RV/HaEuuLV111VU/jc57HvwA3SLFnrbbyevzABlLvRusofoDnnntuNvwyrjEWFxDsLS4mGMcpx9/fe8FSGqvdmNvsDbp///d/n51U9V7/0EMPZRWCOHQvLoK5tvU9aH3/Owc6J46vP+yww7KAXM8VV1yRDemIleG4aD1rF6eRjsEh3nv1tre9bY1j8qabbsp6iOLwm3hPNO0XezZ/9rOf1b2+xMkB4pD4WDH913/914blLs2Lw8Fqmrmmx0prHCkRP6MjjzwybLXVVj3PxWFlcQhs7DntW/ll6Pvf9X7o7r777ux7vJctfrWq28f/sNW15cNpSRwW+elPf7qp18aCJC4v0EgcdnPBBRdkk2jEBaVjj12c+CTecPrFL36xp1uW/ubNm5ctsBjF/Rb3ZW14UxxeU2tlii0ecSKCRt3h3/72t7OTL/b0xMlK4u+Jvafx84g3zWst7Nz+j5wDnRF7hb773e9mPUZxUfp4LYo9nTNmzMiuYXH4d22xepofqhSXgogVqlgZisf4vffeG+64445w8sknhz322CPvTSy12Csf938cPREnQorX5nhPyrXXXpsNW43L+LhXdvCuueaa7FiOFi5cmO3bKI4yiuVj7JWIjZnxet3Ij3/84/DLX/4yGyYW70OMMz1fd9112X0/sZdCY1xn9r/r/dDEiQhjva8ZcV82mk26W8e/AFcQ8cS75557si7ceAN8HLIXW3jpjhgY4v1uMZDEx/HCF6fhtU5N9zgHOif2DMV9G1sB4zDVOMV9HAKoIjV4sUL0wAMPZEEuDu2LYWKgqaZp//6P95rEtTk32GCDsN122wluBbvmxMbRGELi7M3x/HBfaHe43lfj+BfgAAAAEmEWSgAAgEQIcAAAAIkQ4AAAABIhwAEAACRCgAMAAEiEAAcAAJAIAQ4AACARAhwAAEAiBDgAAIBECHAAAACJEOAAAAASIcABAAAkQoADAABIhAAHAACQCAEOAAAgEQIcAABAIgQ4AACAkIb/D0Rjy6sYDkGUAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 432x432 with 1 Axes>"
]
},
"metadata": {
"image/png": {
"height": 440,
"width": 440
}
},
"output_type": "display_data"
}
],
"source": [
"_ = tilted_halo_mw.plot_contours(\n",
" grid=(np.linspace(-20, 20, 256), np.linspace(-20, 20, 256), 0)\n",
")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "10c042d8",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "demo-notebooks",
"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.10"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment