diff --git a/xbpms_measurements/scan_bumps.ipynb b/xbpms_measurements/scan_bumps.ipynb index c4a6479..8294e72 100644 --- a/xbpms_measurements/scan_bumps.ipynb +++ b/xbpms_measurements/scan_bumps.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 136, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T00:50:00.934028Z", @@ -29,7 +29,8 @@ "from mathphys.functions import save, load\n", "import h5py\n", "import os\n", - "import threading" + "import threading\n", + "import matplotlib.pyplot as plt" ] }, { @@ -41,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 125, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T00:50:01.512265Z", @@ -69,7 +70,7 @@ }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 126, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T00:50:02.915531Z", @@ -105,6 +106,18 @@ "\n", " def rangeD(self):\n", " return 0\n", + " \n", + " def saturatedA(self):\n", + " return 0\n", + " \n", + " def saturatedB(self):\n", + " return 0\n", + " \n", + " def saturatedC(self):\n", + " return 0\n", + " \n", + " def saturatedD(self):\n", + " return 0\n", "\n", "\n", "class xbpmMGN:\n", @@ -134,6 +147,18 @@ "\n", " def rangeD(self):\n", " return 0\n", + " \n", + " def saturatedA(self):\n", + " return 0\n", + " \n", + " def saturatedB(self):\n", + " return 0\n", + " \n", + " def saturatedC(self):\n", + " return 0\n", + " \n", + " def saturatedD(self):\n", + " return 0\n", "\n", "\n", "class xbpmCAT:\n", @@ -142,35 +167,47 @@ "\n", " def ampA(self):\n", " return epics.caget(self.prefix + ':Current1:EngValue'), epics.caget(\n", - " 'CAT:FE:PICO01:Current1:EngUnit'\n", + " self.prefix + ':Current1:EngUnit'\n", " )\n", "\n", " def ampB(self):\n", " return epics.caget(self.prefix + ':Current2:EngValue'), epics.caget(\n", - " 'CAT:FE:PICO01:Current2:EngUnit'\n", + " self.prefix + ':Current2:EngUnit'\n", " )\n", "\n", " def ampC(self):\n", " return epics.caget(self.prefix + ':Current3:EngValue'), epics.caget(\n", - " 'CAT:FE:PICO01:Current3:EngUnit'\n", + " self.prefix + ':Current3:EngUnit'\n", " )\n", "\n", " def ampD(self):\n", " return epics.caget(self.prefix + ':Current4:EngValue'), epics.caget(\n", - " 'CAT:FE:PICO01:Current4:EngUnit'\n", + " self.prefix + ':Current4:EngUnit'\n", " )\n", "\n", " def rangeA(self):\n", - " return epics.caget('CAT:FE:PICO01:Current1:Range_RBV')\n", + " return epics.caget(self.prefix + ':Current1:Range_RBV')\n", "\n", " def rangeB(self):\n", - " return epics.caget('CAT:FE:PICO01:Current2:Range_RBV')\n", + " return epics.caget(self.prefix + ':Current2:Range_RBV')\n", "\n", " def rangeC(self):\n", - " return epics.caget('CAT:FE:PICO01:Current3:Range_RBV')\n", + " return epics.caget(self.prefix + ':Current3:Range_RBV')\n", "\n", " def rangeD(self):\n", - " return epics.caget('CAT:FE:PICO01:Current4:Range_RBV')\n", + " return epics.caget(self.prefix + ':Current4:Range_RBV')\n", + "\n", + " def saturatedA(self):\n", + " return 0\n", + " \n", + " def saturatedB(self):\n", + " return 0\n", + " \n", + " def saturatedC(self):\n", + " return 0\n", + " \n", + " def saturatedD(self):\n", + " return 0\n", "\n", "\n", "class xbpmCNB:\n", @@ -179,35 +216,47 @@ "\n", " def ampA(self):\n", " return epics.caget(self.prefix + ':Current1:EngValue'), epics.caget(\n", - " 'CNB:FE:PICO01:Current1:EngUnit'\n", + " self.prefix + ':Current1:EngUnit'\n", " )\n", "\n", " def ampB(self):\n", " return epics.caget(self.prefix + ':Current2:EngValue'), epics.caget(\n", - " 'CNB:FE:PICO01:Current2:EngUnit'\n", + " self.prefix + ':Current2:EngUnit'\n", " )\n", "\n", " def ampC(self):\n", " return epics.caget(self.prefix + ':Current3:EngValue'), epics.caget(\n", - " 'CNB:FE:PICO01:Current3:EngUnit'\n", + " self.prefix + ':Current3:EngUnit'\n", " )\n", "\n", " def ampD(self):\n", " return epics.caget(self.prefix + ':Current4:EngValue'), epics.caget(\n", - " 'CNB:FE:PICO01:Current4:EngUnit'\n", + " self.prefix + ':Current4:EngUnit'\n", " )\n", "\n", " def rangeA(self):\n", - " return epics.caget('CNB:FE:PICO01:Current1:Range_RBV')\n", + " return epics.caget(self.prefix + ':Current1:Range_RBV')\n", "\n", " def rangeB(self):\n", - " return epics.caget('CNB:FE:PICO01:Current2:Range_RBV')\n", + " return epics.caget(self.prefix + ':Current2:Range_RBV')\n", "\n", " def rangeC(self):\n", - " return epics.caget('CNB:FE:PICO01:Current3:Range_RBV')\n", + " return epics.caget(self.prefix + ':Current3:Range_RBV')\n", "\n", " def rangeD(self):\n", - " return epics.caget('CNB:FE:PICO01:Current4:Range_RBV')\n" + " return epics.caget(self.prefix + ':Current4:Range_RBV')\n", + "\n", + " def saturatedA(self):\n", + " return epics.caget(self.prefix + ':Current1:Saturated')\n", + " \n", + " def saturatedB(self):\n", + " return epics.caget(self.prefix + ':Current2:Saturated')\n", + " \n", + " def saturatedC(self):\n", + " return epics.caget(self.prefix + ':Current3:Saturated')\n", + " \n", + " def saturatedD(self):\n", + " return epics.caget(self.prefix + ':Current4:Saturated')\n" ] }, { @@ -219,7 +268,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 127, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T01:07:50.283350Z", @@ -270,7 +319,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 200, "metadata": {}, "outputs": [], "source": [ @@ -300,6 +349,10 @@ " 'B_range': [],\n", " 'C_range': [],\n", " 'D_range': [],\n", + " 'A_saturation': [],\n", + " 'B_saturation': [],\n", + " 'C_saturation': [],\n", + " 'D_saturation': [],\n", " }\n", "\n", " for j in np.arange(nr_meas):\n", @@ -308,26 +361,40 @@ " xbpm_ampB = xbpm.ampB()\n", " xbpm_ampC = xbpm.ampC()\n", " xbpm_ampD = xbpm.ampD()\n", + " \n", " xbpm_rangeA = xbpm.rangeA()\n", " xbpm_rangeB = xbpm.rangeB()\n", " xbpm_rangeC = xbpm.rangeC()\n", " xbpm_rangeD = xbpm.rangeD()\n", "\n", + " xbpm_satA = xbpm.saturatedA()\n", + " xbpm_satB = xbpm.saturatedB()\n", + " xbpm_satC = xbpm.saturatedC()\n", + " xbpm_satD = xbpm.saturatedD()\n", + "\n", " blades[names[i]]['A_val'].append(xbpm_ampA)\n", " blades[names[i]]['B_val'].append(xbpm_ampB)\n", " blades[names[i]]['C_val'].append(xbpm_ampC)\n", " blades[names[i]]['D_val'].append(xbpm_ampD)\n", + "\n", " blades[names[i]]['A_range'].append(xbpm_rangeA)\n", " blades[names[i]]['B_range'].append(xbpm_rangeB)\n", " blades[names[i]]['C_range'].append(xbpm_rangeC)\n", " blades[names[i]]['D_range'].append(xbpm_rangeD)\n", + "\n", + " blades[names[i]]['A_saturation'].append(xbpm_satA)\n", + " blades[names[i]]['B_saturation'].append(xbpm_satB)\n", + " blades[names[i]]['C_saturation'].append(xbpm_satC)\n", + " blades[names[i]]['D_saturation'].append(xbpm_satD)\n", " time.sleep(tinterval)\n", "\n", - " vpu_cnb = idlist[0]\n", - " apu_mnc = idlist[1]\n", + " apu_mnc = idlist[0]\n", + " vpu_cnb = idlist[1]\n", + " vpu_cat = idlist[2]\n", "\n", " idinfo = {\n", " 'cnb': vpu_cnb.gap_mon,\n", + " 'cat': vpu_cat.gap_mon,\n", " 'mnc': apu_mnc.phase_mon,\n", " }\n", "\n", @@ -353,7 +420,8 @@ "\n", "\n", "def implement_bump(\n", - " sofb,\n", + " sofb: SOFB=None,\n", + " # fofb: HLFOFB=None,\n", " subsec='09SA',\n", " refx=None,\n", " refy=None,\n", @@ -361,7 +429,11 @@ " agy=0,\n", " psx=0,\n", " psy=0,\n", - " tol_orb=3,\n", + " tol_orb=1,\n", + " bpmxenbl_sofb=None,\n", + " bpmyenbl_sofb=None,\n", + " # bpmxenbl_fofb=None,\n", + " # bpmyenbl_fofb=None,\n", "):\n", " def get_rms(refx, refy, idx):\n", " dorbx = sofb.orbx - refx\n", @@ -370,7 +442,7 @@ " dorby = dorby[idx]\n", " return np.hstack([dorbx, dorby]).std()\n", "\n", - " max_tol_orb = 10\n", + " max_tol_orb = 50\n", "\n", " # Get ref orb\n", " if refx is None or refy is None:\n", @@ -384,6 +456,17 @@ " refx, refy, subsec=subsec, agx=agx, agy=agy, psx=psx, psy=psy\n", " )\n", "\n", + " max_dorbx = np.max(np.abs(orbx - sofb.refx))\n", + " max_dorby = np.max(np.abs(orby - sofb.refy))\n", + "\n", + " if max(max_dorbx, max_dorby) > 10:\n", + " # fofb.cmd_turn_off_loop_state()\n", + "\n", + "\n", + " # fofb.cmd_turn_on_loop_state()\n", + " print(f'Dorb max: {max(max_dorbx, max_dorby)} um')\n", + " pass\n", + "\n", " # Find out where bump is being made\n", " dummy, _ = sofb.si_calculate_bumps(refx, refy, subsec=subsec, agx=10)\n", " idx = ~np.isclose(dummy, refx)\n", @@ -392,29 +475,53 @@ " # Set orbit on SOFB\n", " sofb.refx = orbx\n", " sofb.refy = orby\n", - " enbl = np.ones(orbx.size, dtype=bool)\n", + "\n", + " # Set orbit on FOFB\n", + " # fofb.refx = orbx\n", + " # fofb.refy = orby\n", + "\n", " nr_bpms = 4\n", - " enbl[strt - nr_bpms : strt] = False\n", - " enbl[strt + 2 : strt + 2 + nr_bpms] = False\n", - " sofb.bpmxenbl = enbl\n", - " sofb.bpmyenbl = enbl\n", + " enbl = np.zeros(bpmxenbl_sofb.size, dtype=bool)\n", + " enbl[strt - nr_bpms : strt] = True\n", + " enbl[strt + 2 : strt + 2 + nr_bpms] = True\n", + "\n", + " xenbl_sofb = bpmxenbl_sofb.copy()\n", + " yenbl_sofb = bpmyenbl_sofb.copy()\n", + " xenbl_sofb[enbl] = False\n", + " yenbl_sofb[enbl] = False\n", + " sofb.bpmxenbl = xenbl_sofb\n", + " sofb.bpmyenbl = yenbl_sofb\n", + "\n", + "\n", + "\n", + " # xenbl_fofb = bpmxenbl_fofb.copy()\n", + " # yenbl_fofb = bpmyenbl_fofb.copy()\n", + " # xenbl_fofb[enbl] = False\n", + " # yenbl_fofb[enbl] = False\n", + " # fofb.bpmxenbl = xenbl_fofb\n", + " # fofb.bpmyenbl = yenbl_fofb\n", "\n", " # Verify orbit correction\n", - " rms_residue = tol_orb + 1\n", - " nr_iters = 10\n", + " rms_residue = tol_orb+1\n", + " nr_iters = 20\n", " print('Waiting orbit...')\n", - " while rms_residue > tol_orb:\n", - " _ = sofb.correct_orbit_manually(nr_iters=nr_iters, residue=1)\n", + " for i in range(nr_iters):\n", + " # _ = sofb.correct_orbit_manually(nr_iters=nr_iters, residue=1)\n", " rms_residue = get_rms(orbx, orby, idx)\n", " print(f' rms_residue = {rms_residue:.3f} um')\n", - " tol_orb *= 1.2\n", - " if tol_orb > max_tol_orb:\n", + " if rms_residue <= tol_orb:\n", + " break\n", + " if rms_residue > max_tol_orb:\n", " raise ValueError('Could not correct orbit.')\n", + " time.sleep(1.5)\n", + " else:\n", + " raise ValueError('Could not correct orbit.')\n", "\n", " print('Done!')\n", "\n", "\n", "def restore_sofb_reforb(sofb, bpmxenbl, bpmyenbl):\n", + " \n", " clt = ConfigDBClient(config_type='si_orbit')\n", " ref_orb = clt.get_config_value('ref_orb')\n", " refx = np.array(ref_orb['x'])\n", @@ -425,33 +532,48 @@ " sofb.bpmyenbl = bpmyenbl\n", "\n", "\n", - "def is_beam_alive(currinfo, sofb, idlist):\n", + "def is_beam_alive(currinfo, sofb, idlist, bpmxenbl=None, bpmyenbl=None):\n", " if currinfo.storedbeam:\n", " return True\n", " print('Beam is dead!')\n", - " restore_sofb_reforb(sofb)\n", + " restore_sofb_reforb(sofb, bpmxenbl, bpmyenbl)\n", " move_apu_phase(idlist[1], 11)\n", " move_vpu_gap(idlist[0], 80)\n", " return False\n", "\n", "\n", - "def stop_meas_func(sofb, idlist):\n", + "def stop_meas_func(sofb, idlist, bpmxenbl=None, bpmyenbl=None):\n", " if not stop_meas:\n", " return False\n", - " restore_sofb_reforb(sofb)\n", + " restore_sofb_reforb(sofb, bpmxenbl, bpmyenbl)\n", " sofb.correct_orbit_manually(10, 2)\n", " move_apu_phase(idlist[1], 11)\n", " move_vpu_gap(idlist[0], 80)\n", " return True\n", "\n", "\n", - "def do_bumps(angsx, angsy, subsec, idlist, currinfo, sofb, xbpmlist, names):\n", + "def do_bumps(\n", + " angsx,\n", + " angsy,\n", + " subsec,\n", + " idlist,\n", + " currinfo,\n", + " sofb,\n", + " xbpmlist,\n", + " names,\n", + " bpmxenbl,\n", + " bpmyenbl,\n", + "):\n", " break_loop = False\n", + " count = 1\n", + " total_meas = len(angsx) * len(angsy)\n", " for i, agx in enumerate(angsx):\n", " if break_loop:\n", " break\n", "\n", " for j, agy in enumerate(angsy):\n", + " print(f'Meas: ({count}/{total_meas})')\n", + " time_0_ = time.time()\n", " if not is_beam_alive(currinfo, sofb, idlist) or stop_meas_func(\n", " sofb, idlist\n", " ):\n", @@ -462,7 +584,8 @@ " agy *= -1\n", " print(f'agx:{agx:.0f} agy:{agy:.0f}')\n", " try:\n", - " implement_bump(sofb=sofb, subsec=subsec, agx=agx, agy=agy)\n", + " implement_bump(sofb=sofb, subsec=subsec, agx=agx, agy=agy, \n", + " bpmxenbl_sofb=bpmxenbl, bpmyenbl_sofb=bpmyenbl)\n", " meas(\n", " idlist,\n", " xbpmlist,\n", @@ -487,7 +610,9 @@ " except ValueError as err:\n", " print(err)\n", " continue\n", - " restore_sofb_reforb(sofb)" + " print(f'Meas time: {time.time() - time_0_}')\n", + " count += 1\n", + " restore_sofb_reforb(sofb, bpmxenbl, bpmyenbl)" ] }, { @@ -506,7 +631,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 142, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T00:50:07.671380Z", @@ -516,19 +641,21 @@ "outputs": [], "source": [ "sofb = SOFB(SOFB.DEVICES.SI)\n", + "fofb = HLFOFB(HLFOFB.DEVICES.SI)\n", "currinfo = CurrInfoSI()\n", "clt = ConfigDBClient(config_type=\"si_orbit\")\n", "ref_orb = clt.get_config_value(\"ref_orb\")\n", "refx = np.array(ref_orb[\"x\"])\n", "refy = np.array(ref_orb[\"y\"])\n", "\n", - "apu = APU(APU.DEVICES.APU22_09SA)\n", - "vpu = VPU(VPU.DEVICES.VPU29_06SB)" + "apu_mnc = APU(APU.DEVICES.APU22_09SA)\n", + "vpu_cnb = VPU(VPU.DEVICES.VPU29_06SB)\n", + "vpu_cat = VPU(VPU.DEVICES.VPU29_07SP)\n" ] }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 132, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T00:50:10.530267Z", @@ -538,12 +665,13 @@ "outputs": [], "source": [ "xbpm_cnb = xbpmCNB(1)\n", + "xbpm_cat = xbpmCAT(1)\n", "xbpm_mnc1 = xbpmMNC(1)\n", "xbpm_mnc2 = xbpmMNC(2)\n", "xbpm_mgn1 = xbpmMGN(1)\n", "xbpm_mgn2 = xbpmMGN(2)\n", "\n", - "idlist = [vpu, apu]" + "idlist = [apu_mnc, vpu_cnb, vpu_cat]" ] }, { @@ -555,7 +683,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 150, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T00:50:08.920893Z", @@ -564,9 +692,46 @@ }, "outputs": [], "source": [ - "sofb.cmd_turn_off_autocorr()\n", - "bpmxenbl = sofb.bpmxenbl\n", - "bpmyenbl = sofb.bpmyenbl" + "# sofb.cmd_turn_off_autocorr()\n", + "\n", + "bpmxenbl_sofb = np.copy(sofb.bpmxenbl)\n", + "bpmyenbl_sofb = np.copy(sofb.bpmyenbl)\n", + "\n", + "bpmxenbl_fofb = np.copy(fofb.bpmxenbl)\n", + "bpmyenbl_fofb = np.copy(fofb.bpmyenbl)" + ] + }, + { + "cell_type": "code", + "execution_count": 188, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 188, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(bpmxenbl_sofb)\n", + "plt.plot(bpmxenbl_fofb)" ] }, { @@ -578,7 +743,17 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 62, + "metadata": {}, + "outputs": [], + "source": [ + "angsx = np.array([-20, -2, 0, 2, 20])\n", + "angsy = np.array([-20, -2, 0, 2, 20])" + ] + }, + { + "cell_type": "code", + "execution_count": 218, "metadata": { "ExecuteTime": { "end_time": "2025-07-29T01:12:51.605006Z", @@ -586,16 +761,1613 @@ }, "scrolled": true }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Meas: (2/121)\n", + "agx:-10 agy:-10" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "\n", + "Dorb max: 35.179 um\n", + "Waiting orbit...\n", + " rms_residue = 35.172 um\n", + " rms_residue = 35.039 um\n", + " rms_residue = 35.171 um\n", + " rms_residue = 28.433 um\n", + " rms_residue = 20.318 um\n", + " rms_residue = 13.619 um\n", + " rms_residue = 8.876 um\n", + " rms_residue = 5.808 um\n", + " rms_residue = 3.666 um\n", + " rms_residue = 2.293 um\n", + " rms_residue = 1.430 um\n", + " rms_residue = 1.050 um\n", + " rms_residue = 0.588 um\n", + "Done!\n", + "Meas time: 28.263225078582764\n", + "Meas: (3/121)\n", + "agx:-10 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 5.176 um\n", + " rms_residue = 4.772 um\n", + " rms_residue = 4.688 um\n", + " rms_residue = 3.799 um\n", + " rms_residue = 2.605 um\n", + " rms_residue = 1.922 um\n", + " rms_residue = 1.472 um\n", + " rms_residue = 0.959 um\n", + "Done!\n", + "Meas time: 20.720425605773926\n", + "Meas: (4/121)\n", + "agx:-10 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 5.058 um\n", + " rms_residue = 5.029 um\n", + " rms_residue = 4.841 um\n", + " rms_residue = 3.660 um\n", + " rms_residue = 2.449 um\n", + " rms_residue = 1.817 um\n", + " rms_residue = 1.199 um\n", + " rms_residue = 0.982 um\n", + "Done!\n", + "Meas time: 20.73615002632141\n", + "Meas: (5/121)\n", + "agx:-10 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 5.381 um\n", + " rms_residue = 5.267 um\n", + " rms_residue = 4.937 um\n", + " rms_residue = 3.674 um\n", + " rms_residue = 2.649 um\n", + " rms_residue = 1.896 um\n", + " rms_residue = 1.084 um\n", + " rms_residue = 0.882 um\n", + "Done!\n", + "Meas time: 20.723053455352783\n", + "Meas: (6/121)\n", + "agx:-10 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 4.999 um\n", + " rms_residue = 4.934 um\n", + " rms_residue = 5.003 um\n", + " rms_residue = 4.124 um\n", + " rms_residue = 2.907 um\n", + " rms_residue = 2.258 um\n", + " rms_residue = 1.535 um\n", + " rms_residue = 0.946 um\n", + "Done!\n", + "Meas time: 20.728450059890747\n", + "Meas: (7/121)\n", + "agx:-10 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 5.282 um\n", + " rms_residue = 4.870 um\n", + " rms_residue = 4.699 um\n", + " rms_residue = 3.634 um\n", + " rms_residue = 2.412 um\n", + " rms_residue = 1.624 um\n", + " rms_residue = 1.107 um\n", + " rms_residue = 0.781 um\n", + "Done!\n", + "Meas time: 20.73467516899109\n", + "Meas: (8/121)\n", + "agx:-10 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.115 um\n", + " rms_residue = 4.993 um\n", + " rms_residue = 5.128 um\n", + " rms_residue = 4.309 um\n", + " rms_residue = 3.035 um\n", + " rms_residue = 2.130 um\n", + " rms_residue = 1.381 um\n", + " rms_residue = 0.917 um\n", + "Done!\n", + "Meas time: 20.73300838470459\n", + "Meas: (9/121)\n", + "agx:-10 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 5.055 um\n", + " rms_residue = 4.870 um\n", + " rms_residue = 4.694 um\n", + " rms_residue = 3.656 um\n", + " rms_residue = 2.581 um\n", + " rms_residue = 1.816 um\n", + " rms_residue = 1.056 um\n", + " rms_residue = 0.923 um\n", + "Done!\n", + "Meas time: 20.732508897781372\n", + "Meas: (10/121)\n", + "agx:-10 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 4.929 um\n", + " rms_residue = 4.952 um\n", + " rms_residue = 4.819 um\n", + " rms_residue = 3.840 um\n", + " rms_residue = 2.492 um\n", + " rms_residue = 1.772 um\n", + " rms_residue = 1.058 um\n", + " rms_residue = 0.794 um\n", + "Done!\n", + "Meas time: 20.733383178710938\n", + "Meas: (11/121)\n", + "agx:-10 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 4.975 um\n", + " rms_residue = 4.708 um\n", + " rms_residue = 4.730 um\n", + " rms_residue = 3.540 um\n", + " rms_residue = 2.645 um\n", + " rms_residue = 1.777 um\n", + " rms_residue = 1.272 um\n", + " rms_residue = 0.825 um\n", + "Done!\n", + "Meas time: 20.737215518951416\n", + "Meas: (12/121)\n", + "agx:-10 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.956 um\n", + " rms_residue = 5.058 um\n", + " rms_residue = 5.256 um\n", + " rms_residue = 4.408 um\n", + " rms_residue = 2.742 um\n", + " rms_residue = 1.685 um\n", + " rms_residue = 0.991 um\n", + "Done!\n", + "Meas time: 19.230191707611084\n", + "Meas: (13/121)\n", + "agx:-8 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.893 um\n", + " rms_residue = 4.963 um\n", + " rms_residue = 5.048 um\n", + " rms_residue = 4.427 um\n", + " rms_residue = 3.062 um\n", + " rms_residue = 2.187 um\n", + " rms_residue = 1.499 um\n", + " rms_residue = 0.934 um\n", + "Done!\n", + "Meas time: 20.726744890213013\n", + "Meas: (14/121)\n", + "agx:-8 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 4.754 um\n", + " rms_residue = 5.014 um\n", + " rms_residue = 5.021 um\n", + " rms_residue = 4.434 um\n", + " rms_residue = 3.266 um\n", + " rms_residue = 1.998 um\n", + " rms_residue = 1.404 um\n", + " rms_residue = 1.058 um\n", + " rms_residue = 0.727 um\n", + "Done!\n", + "Meas time: 22.22817325592041\n", + "Meas: (15/121)\n", + "agx:-8 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.008 um\n", + " rms_residue = 5.036 um\n", + " rms_residue = 5.004 um\n", + " rms_residue = 3.995 um\n", + " rms_residue = 2.756 um\n", + " rms_residue = 2.187 um\n", + " rms_residue = 1.561 um\n", + " rms_residue = 1.077 um\n", + " rms_residue = 0.920 um\n", + "Done!\n", + "Meas time: 22.311861038208008\n", + "Meas: (16/121)\n", + "agx:-8 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 5.123 um\n", + " rms_residue = 4.968 um\n", + " rms_residue = 4.688 um\n", + " rms_residue = 3.357 um\n", + " rms_residue = 2.566 um\n", + " rms_residue = 1.698 um\n", + " rms_residue = 1.214 um\n", + " rms_residue = 0.817 um\n", + "Done!\n", + "Meas time: 20.73267149925232\n", + "Meas: (17/121)\n", + "agx:-8 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.208 um\n", + " rms_residue = 5.136 um\n", + " rms_residue = 4.991 um\n", + " rms_residue = 4.508 um\n", + " rms_residue = 3.625 um\n", + " rms_residue = 2.026 um\n", + " rms_residue = 1.290 um\n", + " rms_residue = 0.795 um\n", + "Done!\n", + "Meas time: 20.74281597137451\n", + "Meas: (18/121)\n", + "agx:-8 agy:-0\n", + "Waiting orbit...\n", + " rms_residue = 4.950 um\n", + " rms_residue = 4.981 um\n", + " rms_residue = 4.955 um\n", + " rms_residue = 3.812 um\n", + " rms_residue = 2.654 um\n", + " rms_residue = 1.623 um\n", + " rms_residue = 1.357 um\n", + " rms_residue = 0.988 um\n", + "Done!\n", + "Meas time: 20.741108894348145\n", + "Meas: (19/121)\n", + "agx:-8 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 4.983 um\n", + " rms_residue = 4.958 um\n", + " rms_residue = 4.779 um\n", + " rms_residue = 3.623 um\n", + " rms_residue = 2.416 um\n", + " rms_residue = 1.714 um\n", + " rms_residue = 1.119 um\n", + " rms_residue = 0.716 um\n", + "Done!\n", + "Meas time: 20.730136394500732\n", + "Meas: (20/121)\n", + "agx:-8 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 5.143 um\n", + " rms_residue = 5.151 um\n", + " rms_residue = 5.113 um\n", + " rms_residue = 4.661 um\n", + " rms_residue = 3.020 um\n", + " rms_residue = 1.970 um\n", + " rms_residue = 1.298 um\n", + " rms_residue = 0.738 um\n", + "Done!\n", + "Meas time: 20.728375911712646\n", + "Meas: (21/121)\n", + "agx:-8 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 4.937 um\n", + " rms_residue = 4.856 um\n", + " rms_residue = 4.834 um\n", + " rms_residue = 3.936 um\n", + " rms_residue = 2.842 um\n", + " rms_residue = 2.002 um\n", + " rms_residue = 1.497 um\n", + " rms_residue = 0.880 um\n", + "Done!\n", + "Meas time: 20.743215799331665\n", + "Meas: (22/121)\n", + "agx:-8 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 4.988 um\n", + " rms_residue = 5.071 um\n", + " rms_residue = 4.615 um\n", + " rms_residue = 3.389 um\n", + " rms_residue = 2.610 um\n", + " rms_residue = 1.595 um\n", + " rms_residue = 1.032 um\n", + " rms_residue = 0.773 um\n", + "Done!\n", + "Meas time: 20.736720085144043\n", + "Meas: (23/121)\n", + "agx:-8 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 5.025 um\n", + " rms_residue = 5.165 um\n", + " rms_residue = 5.078 um\n", + " rms_residue = 4.271 um\n", + " rms_residue = 2.863 um\n", + " rms_residue = 1.770 um\n", + " rms_residue = 0.977 um\n", + "Done!\n", + "Meas time: 19.228950262069702\n", + "Meas: (24/121)\n", + "agx:-6 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 4.935 um\n", + " rms_residue = 5.015 um\n", + " rms_residue = 4.898 um\n", + " rms_residue = 3.927 um\n", + " rms_residue = 2.740 um\n", + " rms_residue = 1.868 um\n", + " rms_residue = 1.258 um\n", + " rms_residue = 0.854 um\n", + "Done!\n", + "Meas time: 20.735297203063965\n", + "Meas: (25/121)\n", + "agx:-6 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 4.723 um\n", + " rms_residue = 5.020 um\n", + " rms_residue = 4.673 um\n", + " rms_residue = 3.557 um\n", + " rms_residue = 2.274 um\n", + " rms_residue = 1.503 um\n", + " rms_residue = 0.951 um\n", + "Done!\n", + "Meas time: 19.23255181312561\n", + "Meas: (26/121)\n", + "agx:-6 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 5.137 um\n", + " rms_residue = 4.930 um\n", + " rms_residue = 4.720 um\n", + " rms_residue = 3.772 um\n", + " rms_residue = 2.444 um\n", + " rms_residue = 1.605 um\n", + " rms_residue = 1.016 um\n", + " rms_residue = 1.112 um\n", + " rms_residue = 0.946 um\n", + "Done!\n", + "Meas time: 22.227556467056274\n", + "Meas: (27/121)\n", + "agx:-6 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 4.858 um\n", + " rms_residue = 4.964 um\n", + " rms_residue = 4.911 um\n", + " rms_residue = 4.207 um\n", + " rms_residue = 3.094 um\n", + " rms_residue = 2.190 um\n", + " rms_residue = 1.526 um\n", + " rms_residue = 0.838 um\n", + "Done!\n", + "Meas time: 20.737178564071655\n", + "Meas: (28/121)\n", + "agx:-6 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 5.079 um\n", + " rms_residue = 5.054 um\n", + " rms_residue = 4.836 um\n", + " rms_residue = 4.130 um\n", + " rms_residue = 2.803 um\n", + " rms_residue = 1.940 um\n", + " rms_residue = 1.171 um\n", + " rms_residue = 0.769 um\n", + "Done!\n", + "Meas time: 20.728875875473022\n", + "Meas: (29/121)\n", + "agx:-6 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 4.835 um\n", + " rms_residue = 4.964 um\n", + " rms_residue = 4.804 um\n", + " rms_residue = 3.773 um\n", + " rms_residue = 2.649 um\n", + " rms_residue = 1.791 um\n", + " rms_residue = 1.237 um\n", + " rms_residue = 0.749 um\n", + "Done!\n", + "Meas time: 20.73439645767212\n", + "Meas: (30/121)\n", + "agx:-6 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.003 um\n", + " rms_residue = 5.210 um\n", + " rms_residue = 4.769 um\n", + " rms_residue = 3.733 um\n", + " rms_residue = 2.506 um\n", + " rms_residue = 1.828 um\n", + " rms_residue = 1.066 um\n", + " rms_residue = 0.879 um\n", + "Done!\n", + "Meas time: 20.724397897720337\n", + "Meas: (31/121)\n", + "agx:-6 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 4.967 um\n", + " rms_residue = 5.136 um\n", + " rms_residue = 4.701 um\n", + " rms_residue = 3.445 um\n", + " rms_residue = 2.322 um\n", + " rms_residue = 1.580 um\n", + " rms_residue = 1.065 um\n", + " rms_residue = 0.735 um\n", + "Done!\n", + "Meas time: 20.729938507080078\n", + "Meas: (32/121)\n", + "agx:-6 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.129 um\n", + " rms_residue = 5.058 um\n", + " rms_residue = 4.992 um\n", + " rms_residue = 4.016 um\n", + " rms_residue = 2.555 um\n", + " rms_residue = 1.783 um\n", + " rms_residue = 1.030 um\n", + " rms_residue = 0.807 um\n", + "Done!\n", + "Meas time: 20.725096702575684\n", + "Meas: (33/121)\n", + "agx:-6 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 4.955 um\n", + " rms_residue = 5.025 um\n", + " rms_residue = 4.785 um\n", + " rms_residue = 3.759 um\n", + " rms_residue = 2.402 um\n", + " rms_residue = 1.495 um\n", + " rms_residue = 1.084 um\n", + " rms_residue = 0.888 um\n", + "Done!\n", + "Meas time: 20.72497844696045\n", + "Meas: (34/121)\n", + "agx:-6 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 5.065 um\n", + " rms_residue = 5.058 um\n", + " rms_residue = 4.882 um\n", + " rms_residue = 3.984 um\n", + " rms_residue = 2.794 um\n", + " rms_residue = 1.874 um\n", + " rms_residue = 1.274 um\n", + " rms_residue = 0.980 um\n", + "Done!\n", + "Meas time: 20.72899580001831\n", + "Meas: (35/121)\n", + "agx:-4 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 5.024 um\n", + " rms_residue = 4.921 um\n", + " rms_residue = 4.629 um\n", + " rms_residue = 3.409 um\n", + " rms_residue = 2.360 um\n", + " rms_residue = 1.583 um\n", + " rms_residue = 1.058 um\n", + " rms_residue = 0.745 um\n", + "Done!\n", + "Meas time: 20.738879203796387\n", + "Meas: (36/121)\n", + "agx:-4 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 4.882 um\n", + " rms_residue = 4.674 um\n", + " rms_residue = 4.186 um\n", + " rms_residue = 2.874 um\n", + " rms_residue = 2.262 um\n", + " rms_residue = 1.529 um\n", + " rms_residue = 0.973 um\n", + "Done!\n", + "Meas time: 19.221280574798584\n", + "Meas: (37/121)\n", + "agx:-4 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.226 um\n", + " rms_residue = 4.819 um\n", + " rms_residue = 4.940 um\n", + " rms_residue = 3.774 um\n", + " rms_residue = 2.876 um\n", + " rms_residue = 1.818 um\n", + " rms_residue = 0.979 um\n", + "Done!\n", + "Meas time: 19.2288236618042\n", + "Meas: (38/121)\n", + "agx:-4 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 4.922 um\n", + " rms_residue = 5.199 um\n", + " rms_residue = 5.079 um\n", + " rms_residue = 4.361 um\n", + " rms_residue = 3.105 um\n", + " rms_residue = 1.761 um\n", + " rms_residue = 1.198 um\n", + " rms_residue = 0.835 um\n", + "Done!\n", + "Meas time: 20.735944032669067\n", + "Meas: (39/121)\n", + "agx:-4 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.053 um\n", + " rms_residue = 5.199 um\n", + " rms_residue = 4.867 um\n", + " rms_residue = 3.766 um\n", + " rms_residue = 2.539 um\n", + " rms_residue = 1.712 um\n", + " rms_residue = 1.143 um\n", + " rms_residue = 0.829 um\n", + "Done!\n", + "Meas time: 20.720885515213013\n", + "Meas: (40/121)\n", + "agx:-4 agy:-0\n", + "Waiting orbit...\n", + " rms_residue = 4.985 um\n", + " rms_residue = 4.936 um\n", + " rms_residue = 4.859 um\n", + " rms_residue = 3.882 um\n", + " rms_residue = 2.681 um\n", + " rms_residue = 1.953 um\n", + " rms_residue = 1.154 um\n", + " rms_residue = 0.767 um\n", + "Done!\n", + "Meas time: 20.73949670791626\n", + "Meas: (41/121)\n", + "agx:-4 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 5.060 um\n", + " rms_residue = 5.106 um\n", + " rms_residue = 4.981 um\n", + " rms_residue = 4.112 um\n", + " rms_residue = 2.891 um\n", + " rms_residue = 1.874 um\n", + " rms_residue = 1.371 um\n", + " rms_residue = 0.857 um\n", + "Done!\n", + "Meas time: 20.72597885131836\n", + "Meas: (42/121)\n", + "agx:-4 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 5.010 um\n", + " rms_residue = 5.150 um\n", + " rms_residue = 4.969 um\n", + " rms_residue = 4.279 um\n", + " rms_residue = 2.736 um\n", + " rms_residue = 1.711 um\n", + " rms_residue = 1.249 um\n", + " rms_residue = 0.995 um\n", + "Done!\n", + "Meas time: 20.735122680664062\n", + "Meas: (43/121)\n", + "agx:-4 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 4.878 um\n", + " rms_residue = 5.187 um\n", + " rms_residue = 4.843 um\n", + " rms_residue = 3.794 um\n", + " rms_residue = 2.454 um\n", + " rms_residue = 1.515 um\n", + " rms_residue = 0.911 um\n", + "Done!\n", + "Meas time: 19.235597610473633\n", + "Meas: (44/121)\n", + "agx:-4 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 4.958 um\n", + " rms_residue = 5.218 um\n", + " rms_residue = 4.954 um\n", + " rms_residue = 3.815 um\n", + " rms_residue = 2.746 um\n", + " rms_residue = 1.757 um\n", + " rms_residue = 1.290 um\n", + " rms_residue = 0.836 um\n", + "Done!\n", + "Meas time: 20.735535144805908\n", + "Meas: (45/121)\n", + "agx:-4 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 5.112 um\n", + " rms_residue = 5.132 um\n", + " rms_residue = 4.750 um\n", + " rms_residue = 3.457 um\n", + " rms_residue = 2.563 um\n", + " rms_residue = 1.722 um\n", + " rms_residue = 1.349 um\n", + " rms_residue = 0.989 um\n", + "Done!\n", + "Meas time: 20.738521337509155\n", + "Meas: (46/121)\n", + "agx:-2 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 5.017 um\n", + " rms_residue = 5.032 um\n", + " rms_residue = 4.794 um\n", + " rms_residue = 3.773 um\n", + " rms_residue = 2.579 um\n", + " rms_residue = 1.732 um\n", + " rms_residue = 1.287 um\n", + " rms_residue = 0.903 um\n", + "Done!\n", + "Meas time: 20.73631739616394\n", + "Meas: (47/121)\n", + "agx:-2 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 4.895 um\n", + " rms_residue = 4.866 um\n", + " rms_residue = 4.598 um\n", + " rms_residue = 3.454 um\n", + " rms_residue = 2.474 um\n", + " rms_residue = 1.566 um\n", + " rms_residue = 0.984 um\n", + "Done!\n", + "Meas time: 19.23647928237915\n", + "Meas: (48/121)\n", + "agx:-2 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 4.761 um\n", + " rms_residue = 5.049 um\n", + " rms_residue = 4.740 um\n", + " rms_residue = 3.612 um\n", + " rms_residue = 2.395 um\n", + " rms_residue = 1.616 um\n", + " rms_residue = 1.295 um\n", + " rms_residue = 0.950 um\n", + "Done!\n", + "Meas time: 20.735005140304565\n", + "Meas: (49/121)\n", + "agx:-2 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 5.099 um\n", + " rms_residue = 5.157 um\n", + " rms_residue = 4.629 um\n", + " rms_residue = 3.656 um\n", + " rms_residue = 2.748 um\n", + " rms_residue = 1.830 um\n", + " rms_residue = 1.515 um\n", + " rms_residue = 1.002 um\n", + " rms_residue = 0.626 um\n", + "Done!\n", + "Meas time: 22.23935294151306\n", + "Meas: (50/121)\n", + "agx:-2 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 4.913 um\n", + " rms_residue = 4.831 um\n", + " rms_residue = 4.809 um\n", + " rms_residue = 3.848 um\n", + " rms_residue = 2.727 um\n", + " rms_residue = 1.890 um\n", + " rms_residue = 1.335 um\n", + " rms_residue = 0.934 um\n", + "Done!\n", + "Meas time: 20.727795600891113\n", + "Meas: (51/121)\n", + "agx:-2 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 4.977 um\n", + " rms_residue = 4.830 um\n", + " rms_residue = 4.698 um\n", + " rms_residue = 3.491 um\n", + " rms_residue = 2.393 um\n", + " rms_residue = 1.510 um\n", + " rms_residue = 1.115 um\n", + " rms_residue = 0.982 um\n", + "Done!\n", + "Meas time: 20.73111343383789\n", + "Meas: (52/121)\n", + "agx:-2 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.266 um\n", + " rms_residue = 5.124 um\n", + " rms_residue = 4.660 um\n", + " rms_residue = 3.472 um\n", + " rms_residue = 2.526 um\n", + " rms_residue = 1.890 um\n", + " rms_residue = 1.080 um\n", + " rms_residue = 0.900 um\n", + "Done!\n", + "Meas time: 20.739747762680054\n", + "Meas: (53/121)\n", + "agx:-2 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 5.163 um\n", + " rms_residue = 4.899 um\n", + " rms_residue = 5.053 um\n", + " rms_residue = 4.238 um\n", + " rms_residue = 2.961 um\n", + " rms_residue = 1.909 um\n", + " rms_residue = 1.413 um\n", + " rms_residue = 0.921 um\n", + "Done!\n", + "Meas time: 20.7350857257843\n", + "Meas: (54/121)\n", + "agx:-2 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.038 um\n", + " rms_residue = 4.970 um\n", + " rms_residue = 4.740 um\n", + " rms_residue = 3.468 um\n", + " rms_residue = 2.574 um\n", + " rms_residue = 1.919 um\n", + " rms_residue = 1.341 um\n", + " rms_residue = 1.062 um\n", + " rms_residue = 0.655 um\n", + "Done!\n", + "Meas time: 22.240143299102783\n", + "Meas: (55/121)\n", + "agx:-2 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 4.868 um\n", + " rms_residue = 4.902 um\n", + " rms_residue = 4.753 um\n", + " rms_residue = 4.084 um\n", + " rms_residue = 3.111 um\n", + " rms_residue = 1.894 um\n", + " rms_residue = 1.266 um\n", + " rms_residue = 0.779 um\n", + "Done!\n", + "Meas time: 20.739906787872314\n", + "Meas: (56/121)\n", + "agx:-2 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.980 um\n", + " rms_residue = 4.885 um\n", + " rms_residue = 5.074 um\n", + " rms_residue = 4.343 um\n", + " rms_residue = 2.966 um\n", + " rms_residue = 1.877 um\n", + " rms_residue = 1.115 um\n", + " rms_residue = 0.684 um\n", + "Done!\n", + "Meas time: 20.737098455429077\n", + "Meas: (57/121)\n", + "agx:0 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.949 um\n", + " rms_residue = 4.896 um\n", + " rms_residue = 4.943 um\n", + " rms_residue = 4.068 um\n", + " rms_residue = 2.806 um\n", + " rms_residue = 1.882 um\n", + " rms_residue = 1.194 um\n", + " rms_residue = 0.747 um\n", + "Done!\n", + "Meas time: 20.723899841308594\n", + "Meas: (58/121)\n", + "agx:0 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 5.048 um\n", + " rms_residue = 5.083 um\n", + " rms_residue = 5.069 um\n", + " rms_residue = 3.957 um\n", + " rms_residue = 2.651 um\n", + " rms_residue = 1.789 um\n", + " rms_residue = 1.300 um\n", + " rms_residue = 0.793 um\n", + "Done!\n", + "Meas time: 20.73355770111084\n", + "Meas: (59/121)\n", + "agx:0 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.254 um\n", + " rms_residue = 5.108 um\n", + " rms_residue = 4.949 um\n", + " rms_residue = 3.621 um\n", + " rms_residue = 2.522 um\n", + " rms_residue = 1.751 um\n", + " rms_residue = 1.298 um\n", + " rms_residue = 1.007 um\n", + " rms_residue = 0.412 um\n", + "Done!\n", + "Meas time: 22.242963075637817\n", + "Meas: (60/121)\n", + "agx:0 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 5.011 um\n", + " rms_residue = 4.937 um\n", + " rms_residue = 4.674 um\n", + " rms_residue = 3.822 um\n", + " rms_residue = 2.627 um\n", + " rms_residue = 1.784 um\n", + " rms_residue = 1.070 um\n", + " rms_residue = 0.788 um\n", + "Done!\n", + "Meas time: 20.726871252059937\n", + "Meas: (61/121)\n", + "agx:0 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 4.916 um\n", + " rms_residue = 5.145 um\n", + " rms_residue = 4.714 um\n", + " rms_residue = 3.791 um\n", + " rms_residue = 2.709 um\n", + " rms_residue = 1.855 um\n", + " rms_residue = 0.891 um\n", + "Done!\n", + "Meas time: 19.24131417274475\n", + "Meas: (62/121)\n", + "agx:0 agy:-0\n", + "Waiting orbit...\n", + " rms_residue = 4.936 um\n", + " rms_residue = 5.105 um\n", + " rms_residue = 5.108 um\n", + " rms_residue = 4.343 um\n", + " rms_residue = 3.095 um\n", + " rms_residue = 1.986 um\n", + " rms_residue = 1.380 um\n", + " rms_residue = 0.854 um\n", + "Done!\n", + "Meas time: 20.727420330047607\n", + "Meas: (63/121)\n", + "agx:0 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 5.043 um\n", + " rms_residue = 5.057 um\n", + " rms_residue = 4.961 um\n", + " rms_residue = 4.278 um\n", + " rms_residue = 2.709 um\n", + " rms_residue = 1.905 um\n", + " rms_residue = 1.404 um\n", + " rms_residue = 0.920 um\n", + "Done!\n", + "Meas time: 20.73421835899353\n", + "Meas: (64/121)\n", + "agx:0 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 4.926 um\n", + " rms_residue = 4.891 um\n", + " rms_residue = 4.867 um\n", + " rms_residue = 3.743 um\n", + " rms_residue = 2.682 um\n", + " rms_residue = 1.604 um\n", + " rms_residue = 1.086 um\n", + " rms_residue = 0.616 um\n", + "Done!\n", + "Meas time: 20.732584238052368\n", + "Meas: (65/121)\n", + "agx:0 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 4.968 um\n", + " rms_residue = 5.227 um\n", + " rms_residue = 5.116 um\n", + " rms_residue = 4.275 um\n", + " rms_residue = 3.195 um\n", + " rms_residue = 2.239 um\n", + " rms_residue = 1.513 um\n", + " rms_residue = 0.947 um\n", + "Done!\n", + "Meas time: 20.723722219467163\n", + "Meas: (66/121)\n", + "agx:0 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 5.164 um\n", + " rms_residue = 4.990 um\n", + " rms_residue = 4.962 um\n", + " rms_residue = 4.635 um\n", + " rms_residue = 3.581 um\n", + " rms_residue = 2.316 um\n", + " rms_residue = 1.570 um\n", + " rms_residue = 1.006 um\n", + " rms_residue = 0.755 um\n", + "Done!\n", + "Meas time: 22.240275621414185\n", + "Meas: (67/121)\n", + "agx:0 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 5.089 um\n", + " rms_residue = 5.095 um\n", + " rms_residue = 5.079 um\n", + " rms_residue = 4.032 um\n", + " rms_residue = 2.651 um\n", + " rms_residue = 1.699 um\n", + " rms_residue = 1.217 um\n", + " rms_residue = 0.757 um\n", + "Done!\n", + "Meas time: 20.725493669509888\n", + "Meas: (68/121)\n", + "agx:2 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 4.962 um\n", + " rms_residue = 4.934 um\n", + " rms_residue = 4.755 um\n", + " rms_residue = 3.775 um\n", + " rms_residue = 2.506 um\n", + " rms_residue = 1.750 um\n", + " rms_residue = 1.143 um\n", + " rms_residue = 0.791 um\n", + "Done!\n", + "Meas time: 20.73868989944458\n", + "Meas: (69/121)\n", + "agx:2 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 4.801 um\n", + " rms_residue = 5.014 um\n", + " rms_residue = 4.721 um\n", + " rms_residue = 3.364 um\n", + " rms_residue = 2.399 um\n", + " rms_residue = 1.688 um\n", + " rms_residue = 1.313 um\n", + " rms_residue = 0.885 um\n", + "Done!\n", + "Meas time: 20.73361372947693\n", + "Meas: (70/121)\n", + "agx:2 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 5.157 um\n", + " rms_residue = 5.405 um\n", + " rms_residue = 5.033 um\n", + " rms_residue = 4.105 um\n", + " rms_residue = 2.676 um\n", + " rms_residue = 1.740 um\n", + " rms_residue = 1.365 um\n", + " rms_residue = 0.774 um\n", + "Done!\n", + "Meas time: 20.732789278030396\n", + "Meas: (71/121)\n", + "agx:2 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 4.935 um\n", + " rms_residue = 4.975 um\n", + " rms_residue = 4.627 um\n", + " rms_residue = 3.585 um\n", + " rms_residue = 2.793 um\n", + " rms_residue = 1.939 um\n", + " rms_residue = 1.378 um\n", + " rms_residue = 0.627 um\n", + "Done!\n", + "Meas time: 20.734843015670776\n", + "Meas: (72/121)\n", + "agx:2 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 5.216 um\n", + " rms_residue = 5.182 um\n", + " rms_residue = 5.172 um\n", + " rms_residue = 4.206 um\n", + " rms_residue = 2.807 um\n", + " rms_residue = 1.759 um\n", + " rms_residue = 0.908 um\n", + "Done!\n", + "Meas time: 19.23358464241028\n", + "Meas: (73/121)\n", + "agx:2 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 5.275 um\n", + " rms_residue = 5.166 um\n", + " rms_residue = 5.083 um\n", + " rms_residue = 3.663 um\n", + " rms_residue = 2.704 um\n", + " rms_residue = 1.868 um\n", + " rms_residue = 1.235 um\n", + " rms_residue = 0.995 um\n", + "Done!\n", + "Meas time: 20.73596501350403\n", + "Meas: (74/121)\n", + "agx:2 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.053 um\n", + " rms_residue = 4.875 um\n", + " rms_residue = 4.607 um\n", + " rms_residue = 3.378 um\n", + " rms_residue = 2.268 um\n", + " rms_residue = 1.562 um\n", + " rms_residue = 1.079 um\n", + " rms_residue = 0.762 um\n", + "Done!\n", + "Meas time: 20.728684902191162\n", + "Meas: (75/121)\n", + "agx:2 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 5.154 um\n", + " rms_residue = 5.027 um\n", + " rms_residue = 5.023 um\n", + " rms_residue = 3.770 um\n", + " rms_residue = 2.466 um\n", + " rms_residue = 1.606 um\n", + " rms_residue = 1.258 um\n", + " rms_residue = 0.830 um\n", + "Done!\n", + "Meas time: 20.73498511314392\n", + "Meas: (76/121)\n", + "agx:2 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.051 um\n", + " rms_residue = 4.747 um\n", + " rms_residue = 4.486 um\n", + " rms_residue = 3.558 um\n", + " rms_residue = 2.675 um\n", + " rms_residue = 1.703 um\n", + " rms_residue = 1.087 um\n", + " rms_residue = 0.844 um\n", + "Done!\n", + "Meas time: 20.740350484848022\n", + "Meas: (77/121)\n", + "agx:2 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 4.906 um\n", + " rms_residue = 5.027 um\n", + " rms_residue = 5.024 um\n", + " rms_residue = 4.055 um\n", + " rms_residue = 3.122 um\n", + " rms_residue = 1.888 um\n", + " rms_residue = 1.377 um\n", + " rms_residue = 0.981 um\n", + "Done!\n", + "Meas time: 20.73861861228943\n", + "Meas: (78/121)\n", + "agx:2 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 5.038 um\n", + " rms_residue = 5.053 um\n", + " rms_residue = 5.033 um\n", + " rms_residue = 4.046 um\n", + " rms_residue = 3.079 um\n", + " rms_residue = 1.896 um\n", + " rms_residue = 1.265 um\n", + " rms_residue = 0.780 um\n", + "Done!\n", + "Meas time: 20.820300817489624\n", + "Meas: (79/121)\n", + "agx:4 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.999 um\n", + " rms_residue = 4.903 um\n", + " rms_residue = 4.936 um\n", + " rms_residue = 4.027 um\n", + " rms_residue = 2.839 um\n", + " rms_residue = 1.961 um\n", + " rms_residue = 1.322 um\n", + " rms_residue = 0.858 um\n", + "Done!\n", + "Meas time: 20.723652601242065\n", + "Meas: (80/121)\n", + "agx:4 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 5.078 um\n", + " rms_residue = 4.985 um\n", + " rms_residue = 4.835 um\n", + " rms_residue = 4.124 um\n", + " rms_residue = 2.934 um\n", + " rms_residue = 2.018 um\n", + " rms_residue = 1.212 um\n", + " rms_residue = 0.945 um\n", + "Done!\n", + "Meas time: 20.738887786865234\n", + "Meas: (81/121)\n", + "agx:4 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 4.814 um\n", + " rms_residue = 4.709 um\n", + " rms_residue = 4.559 um\n", + " rms_residue = 3.772 um\n", + " rms_residue = 2.612 um\n", + " rms_residue = 1.557 um\n", + " rms_residue = 0.982 um\n", + "Done!\n", + "Meas time: 19.231711864471436\n", + "Meas: (82/121)\n", + "agx:4 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 5.058 um\n", + " rms_residue = 5.222 um\n", + " rms_residue = 5.157 um\n", + " rms_residue = 4.241 um\n", + " rms_residue = 2.898 um\n", + " rms_residue = 1.953 um\n", + " rms_residue = 1.405 um\n", + " rms_residue = 0.977 um\n", + "Done!\n", + "Meas time: 20.744240045547485\n", + "Meas: (83/121)\n", + "agx:4 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.062 um\n", + " rms_residue = 5.039 um\n", + " rms_residue = 4.845 um\n", + " rms_residue = 4.202 um\n", + " rms_residue = 2.941 um\n", + " rms_residue = 2.222 um\n", + " rms_residue = 1.673 um\n", + " rms_residue = 1.072 um\n", + " rms_residue = 0.631 um\n", + "Done!\n", + "Meas time: 22.24850368499756\n", + "Meas: (84/121)\n", + "agx:4 agy:-0\n", + "Waiting orbit...\n", + " rms_residue = 4.843 um\n", + " rms_residue = 4.788 um\n", + " rms_residue = 4.640 um\n", + " rms_residue = 3.870 um\n", + " rms_residue = 2.745 um\n", + " rms_residue = 1.635 um\n", + " rms_residue = 0.957 um\n", + "Done!\n", + "Meas time: 19.227964639663696\n", + "Meas: (85/121)\n", + "agx:4 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 4.976 um\n", + " rms_residue = 5.101 um\n", + " rms_residue = 4.962 um\n", + " rms_residue = 4.104 um\n", + " rms_residue = 2.713 um\n", + " rms_residue = 1.712 um\n", + " rms_residue = 1.160 um\n", + " rms_residue = 0.900 um\n", + "Done!\n", + "Meas time: 20.720922231674194\n", + "Meas: (86/121)\n", + "agx:4 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 4.861 um\n", + " rms_residue = 5.009 um\n", + " rms_residue = 4.798 um\n", + " rms_residue = 3.486 um\n", + " rms_residue = 2.298 um\n", + " rms_residue = 1.425 um\n", + " rms_residue = 1.004 um\n", + " rms_residue = 0.636 um\n", + "Done!\n", + "Meas time: 20.731725692749023\n", + "Meas: (87/121)\n", + "agx:4 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 5.123 um\n", + " rms_residue = 4.920 um\n", + " rms_residue = 4.462 um\n", + " rms_residue = 3.560 um\n", + " rms_residue = 2.437 um\n", + " rms_residue = 1.531 um\n", + " rms_residue = 1.159 um\n", + " rms_residue = 0.848 um\n", + "Done!\n", + "Meas time: 20.747819900512695\n", + "Meas: (88/121)\n", + "agx:4 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 5.046 um\n", + " rms_residue = 4.893 um\n", + " rms_residue = 4.436 um\n", + " rms_residue = 3.228 um\n", + " rms_residue = 2.346 um\n", + " rms_residue = 1.613 um\n", + " rms_residue = 0.918 um\n", + "Done!\n", + "Meas time: 19.230435609817505\n", + "Meas: (89/121)\n", + "agx:4 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 5.182 um\n", + " rms_residue = 5.016 um\n", + " rms_residue = 5.027 um\n", + " rms_residue = 3.950 um\n", + " rms_residue = 2.609 um\n", + " rms_residue = 1.617 um\n", + " rms_residue = 1.037 um\n", + " rms_residue = 0.757 um\n", + "Done!\n", + "Meas time: 20.735177516937256\n", + "Meas: (90/121)\n", + "agx:6 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 4.993 um\n", + " rms_residue = 5.031 um\n", + " rms_residue = 4.831 um\n", + " rms_residue = 3.672 um\n", + " rms_residue = 2.570 um\n", + " rms_residue = 1.886 um\n", + " rms_residue = 1.342 um\n", + " rms_residue = 0.903 um\n", + "Done!\n", + "Meas time: 20.73153805732727\n", + "Meas: (91/121)\n", + "agx:6 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 4.848 um\n", + " rms_residue = 4.797 um\n", + " rms_residue = 4.603 um\n", + " rms_residue = 3.381 um\n", + " rms_residue = 2.211 um\n", + " rms_residue = 1.635 um\n", + " rms_residue = 1.254 um\n", + " rms_residue = 0.777 um\n", + "Done!\n", + "Meas time: 20.7336208820343\n", + "Meas: (92/121)\n", + "agx:6 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 4.943 um\n", + " rms_residue = 4.818 um\n", + " rms_residue = 5.041 um\n", + " rms_residue = 4.246 um\n", + " rms_residue = 2.670 um\n", + " rms_residue = 1.833 um\n", + " rms_residue = 1.451 um\n", + " rms_residue = 1.156 um\n", + " rms_residue = 0.876 um\n", + "Done!\n", + "Meas time: 22.238665342330933\n", + "Meas: (93/121)\n", + "agx:6 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 5.153 um\n", + " rms_residue = 5.100 um\n", + " rms_residue = 4.722 um\n", + " rms_residue = 3.639 um\n", + " rms_residue = 2.733 um\n", + " rms_residue = 1.830 um\n", + " rms_residue = 1.143 um\n", + " rms_residue = 0.807 um\n", + "Done!\n", + "Meas time: 20.731422185897827\n", + "Meas: (94/121)\n", + "agx:6 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 4.944 um\n", + " rms_residue = 5.108 um\n", + " rms_residue = 5.040 um\n", + " rms_residue = 3.776 um\n", + " rms_residue = 2.650 um\n", + " rms_residue = 1.701 um\n", + " rms_residue = 1.291 um\n", + " rms_residue = 0.876 um\n", + "Done!\n", + "Meas time: 20.735998392105103\n", + "Meas: (95/121)\n", + "agx:6 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 5.286 um\n", + " rms_residue = 5.263 um\n", + " rms_residue = 5.072 um\n", + " rms_residue = 3.947 um\n", + " rms_residue = 2.848 um\n", + " rms_residue = 1.907 um\n", + " rms_residue = 1.420 um\n", + " rms_residue = 0.982 um\n", + "Done!\n", + "Meas time: 20.727954864501953\n", + "Meas: (96/121)\n", + "agx:6 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 4.962 um\n", + " rms_residue = 4.956 um\n", + " rms_residue = 4.892 um\n", + " rms_residue = 4.056 um\n", + " rms_residue = 2.803 um\n", + " rms_residue = 1.957 um\n", + " rms_residue = 1.358 um\n", + " rms_residue = 0.685 um\n", + "Done!\n", + "Meas time: 20.737261533737183\n", + "Meas: (97/121)\n", + "agx:6 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 4.782 um\n", + " rms_residue = 5.128 um\n", + " rms_residue = 5.076 um\n", + " rms_residue = 4.254 um\n", + " rms_residue = 3.040 um\n", + " rms_residue = 1.869 um\n", + " rms_residue = 1.365 um\n", + " rms_residue = 0.866 um\n", + "Done!\n", + "Meas time: 20.73318576812744\n", + "Meas: (98/121)\n", + "agx:6 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.078 um\n", + " rms_residue = 5.078 um\n", + " rms_residue = 4.770 um\n", + " rms_residue = 3.940 um\n", + " rms_residue = 2.802 um\n", + " rms_residue = 1.880 um\n", + " rms_residue = 1.264 um\n", + " rms_residue = 0.839 um\n", + "Done!\n", + "Meas time: 20.723422527313232\n", + "Meas: (99/121)\n", + "agx:6 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 5.124 um\n", + " rms_residue = 5.184 um\n", + " rms_residue = 4.901 um\n", + " rms_residue = 4.243 um\n", + " rms_residue = 3.032 um\n", + " rms_residue = 2.037 um\n", + " rms_residue = 1.234 um\n", + " rms_residue = 0.855 um\n", + "Done!\n", + "Meas time: 20.734427213668823\n", + "Meas: (100/121)\n", + "agx:6 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.805 um\n", + " rms_residue = 5.018 um\n", + " rms_residue = 4.904 um\n", + " rms_residue = 3.882 um\n", + " rms_residue = 2.834 um\n", + " rms_residue = 1.895 um\n", + " rms_residue = 1.352 um\n", + " rms_residue = 0.818 um\n", + "Done!\n", + "Meas time: 20.733296871185303\n", + "Meas: (101/121)\n", + "agx:8 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 5.052 um\n", + " rms_residue = 4.957 um\n", + " rms_residue = 4.775 um\n", + " rms_residue = 3.758 um\n", + " rms_residue = 2.713 um\n", + " rms_residue = 1.844 um\n", + " rms_residue = 1.237 um\n", + " rms_residue = 0.831 um\n", + "Done!\n", + "Meas time: 20.733660459518433\n", + "Meas: (102/121)\n", + "agx:8 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 4.824 um\n", + " rms_residue = 4.918 um\n", + " rms_residue = 4.775 um\n", + " rms_residue = 3.452 um\n", + " rms_residue = 2.361 um\n", + " rms_residue = 1.475 um\n", + " rms_residue = 1.229 um\n", + " rms_residue = 0.812 um\n", + "Done!\n", + "Meas time: 20.78662419319153\n", + "Meas: (103/121)\n", + "agx:8 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.057 um\n", + " rms_residue = 4.998 um\n", + " rms_residue = 4.926 um\n", + " rms_residue = 4.000 um\n", + " rms_residue = 2.992 um\n", + " rms_residue = 2.170 um\n", + " rms_residue = 1.503 um\n", + " rms_residue = 0.824 um\n", + "Done!\n", + "Meas time: 20.73655104637146\n", + "Meas: (104/121)\n", + "agx:8 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 5.090 um\n", + " rms_residue = 4.924 um\n", + " rms_residue = 5.092 um\n", + " rms_residue = 4.595 um\n", + " rms_residue = 3.109 um\n", + " rms_residue = 2.042 um\n", + " rms_residue = 1.525 um\n", + " rms_residue = 0.870 um\n", + "Done!\n", + "Meas time: 20.728771448135376\n", + "Meas: (105/121)\n", + "agx:8 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 4.905 um\n", + " rms_residue = 4.996 um\n", + " rms_residue = 4.646 um\n", + " rms_residue = 3.653 um\n", + " rms_residue = 2.811 um\n", + " rms_residue = 1.934 um\n", + " rms_residue = 1.217 um\n", + " rms_residue = 0.938 um\n", + "Done!\n", + "Meas time: 20.720151662826538\n", + "Meas: (106/121)\n", + "agx:8 agy:-0\n", + "Waiting orbit...\n", + " rms_residue = 4.750 um\n", + " rms_residue = 5.101 um\n", + " rms_residue = 4.803 um\n", + " rms_residue = 3.535 um\n", + " rms_residue = 2.547 um\n", + " rms_residue = 1.604 um\n", + " rms_residue = 1.000 um\n", + " rms_residue = 0.658 um\n", + "Done!\n", + "Meas time: 20.723653078079224\n", + "Meas: (107/121)\n", + "agx:8 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 5.029 um\n", + " rms_residue = 5.137 um\n", + " rms_residue = 5.020 um\n", + " rms_residue = 4.033 um\n", + " rms_residue = 3.150 um\n", + " rms_residue = 2.199 um\n", + " rms_residue = 1.527 um\n", + " rms_residue = 1.010 um\n", + " rms_residue = 0.677 um\n", + "Done!\n", + "Meas time: 22.22888970375061\n", + "Meas: (108/121)\n", + "agx:8 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 4.878 um\n", + " rms_residue = 5.056 um\n", + " rms_residue = 4.829 um\n", + " rms_residue = 3.587 um\n", + " rms_residue = 2.498 um\n", + " rms_residue = 1.797 um\n", + " rms_residue = 1.193 um\n", + " rms_residue = 0.647 um\n", + "Done!\n", + "Meas time: 20.717632055282593\n", + "Meas: (109/121)\n", + "agx:8 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 4.963 um\n", + " rms_residue = 5.097 um\n", + " rms_residue = 4.805 um\n", + " rms_residue = 3.616 um\n", + " rms_residue = 2.302 um\n", + " rms_residue = 1.712 um\n", + " rms_residue = 1.245 um\n", + " rms_residue = 1.030 um\n", + " rms_residue = 0.693 um\n", + "Done!\n", + "Meas time: 22.227343320846558\n", + "Meas: (110/121)\n", + "agx:8 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 5.029 um\n", + " rms_residue = 4.821 um\n", + " rms_residue = 4.879 um\n", + " rms_residue = 3.742 um\n", + " rms_residue = 2.828 um\n", + " rms_residue = 2.036 um\n", + " rms_residue = 1.309 um\n", + " rms_residue = 0.802 um\n", + "Done!\n", + "Meas time: 20.728424787521362\n", + "Meas: (111/121)\n", + "agx:8 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 5.056 um\n", + " rms_residue = 4.967 um\n", + " rms_residue = 4.879 um\n", + " rms_residue = 3.965 um\n", + " rms_residue = 2.867 um\n", + " rms_residue = 1.790 um\n", + " rms_residue = 1.275 um\n", + " rms_residue = 0.809 um\n", + "Done!\n", + "Meas time: 20.78971767425537\n", + "Meas: (112/121)\n", + "agx:10 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 4.990 um\n", + " rms_residue = 5.002 um\n", + " rms_residue = 4.753 um\n", + " rms_residue = 3.615 um\n", + " rms_residue = 2.586 um\n", + " rms_residue = 1.729 um\n", + " rms_residue = 1.201 um\n", + " rms_residue = 0.854 um\n", + "Done!\n", + "Meas time: 20.720221519470215\n", + "Meas: (113/121)\n", + "agx:10 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 4.945 um\n", + " rms_residue = 4.941 um\n", + " rms_residue = 4.568 um\n", + " rms_residue = 3.541 um\n", + " rms_residue = 2.302 um\n", + " rms_residue = 1.475 um\n", + " rms_residue = 1.028 um\n", + " rms_residue = 0.837 um\n", + "Done!\n", + "Meas time: 20.72221875190735\n", + "Meas: (114/121)\n", + "agx:10 agy:-6\n", + "Waiting orbit...\n", + " rms_residue = 5.124 um\n", + " rms_residue = 5.114 um\n", + " rms_residue = 4.843 um\n", + " rms_residue = 4.233 um\n", + " rms_residue = 2.930 um\n", + " rms_residue = 2.158 um\n", + " rms_residue = 1.563 um\n", + " rms_residue = 1.166 um\n", + " rms_residue = 0.731 um\n", + "Done!\n", + "Meas time: 22.230472564697266\n", + "Meas: (115/121)\n", + "agx:10 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 4.875 um\n", + " rms_residue = 5.151 um\n", + " rms_residue = 4.966 um\n", + " rms_residue = 3.875 um\n", + " rms_residue = 2.779 um\n", + " rms_residue = 1.551 um\n", + " rms_residue = 0.976 um\n", + "Done!\n", + "Meas time: 19.22929573059082\n", + "Meas: (116/121)\n", + "agx:10 agy:-2\n", + "Waiting orbit...\n", + " rms_residue = 5.161 um\n", + " rms_residue = 5.003 um\n", + " rms_residue = 5.151 um\n", + " rms_residue = 3.978 um\n", + " rms_residue = 2.655 um\n", + " rms_residue = 1.954 um\n", + " rms_residue = 1.239 um\n", + " rms_residue = 0.907 um\n", + "Done!\n", + "Meas time: 20.732001543045044\n", + "Meas: (117/121)\n", + "agx:10 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 4.892 um\n", + " rms_residue = 5.050 um\n", + " rms_residue = 5.126 um\n", + " rms_residue = 4.150 um\n", + " rms_residue = 2.937 um\n", + " rms_residue = 1.994 um\n", + " rms_residue = 1.375 um\n", + " rms_residue = 1.118 um\n", + " rms_residue = 0.520 um\n", + "Done!\n", + "Meas time: 22.233927965164185\n", + "Meas: (118/121)\n", + "agx:10 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 5.039 um\n", + " rms_residue = 5.058 um\n", + " rms_residue = 4.694 um\n", + " rms_residue = 3.628 um\n", + " rms_residue = 2.535 um\n", + " rms_residue = 1.876 um\n", + " rms_residue = 1.231 um\n", + " rms_residue = 0.669 um\n", + "Done!\n", + "Meas time: 20.72629165649414\n", + "Meas: (119/121)\n", + "agx:10 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 4.938 um\n", + " rms_residue = 4.975 um\n", + " rms_residue = 4.651 um\n", + " rms_residue = 3.628 um\n", + " rms_residue = 2.507 um\n", + " rms_residue = 1.474 um\n", + " rms_residue = 0.968 um\n", + "Done!\n", + "Meas time: 19.219934940338135\n", + "Meas: (120/121)\n", + "agx:10 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 5.032 um\n", + " rms_residue = 4.936 um\n", + " rms_residue = 4.844 um\n", + " rms_residue = 3.694 um\n", + " rms_residue = 2.623 um\n", + " rms_residue = 1.839 um\n", + " rms_residue = 1.075 um\n", + " rms_residue = 0.657 um\n", + "Done!\n", + "Meas time: 20.734142780303955\n", + "Meas: (121/121)\n", + "agx:10 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 5.124 um\n", + " rms_residue = 4.958 um\n", + " rms_residue = 4.874 um\n", + " rms_residue = 3.573 um\n", + " rms_residue = 2.319 um\n", + " rms_residue = 1.770 um\n", + " rms_residue = 1.310 um\n", + " rms_residue = 0.886 um\n", + "Done!\n", + "Meas time: 20.722604036331177\n", + "Meas: (122/121)\n", + "agx:10 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.964 um\n", + " rms_residue = 4.812 um\n", + " rms_residue = 4.862 um\n", + " rms_residue = 3.711 um\n", + " rms_residue = 2.580 um\n", + " rms_residue = 1.742 um\n", + " rms_residue = 1.339 um\n", + " rms_residue = 0.910 um\n", + "Done!\n", + "Meas time: 20.72610831260681\n" + ] + } + ], "source": [ "# Configure phase\n", - "phase = 0\n", - "move_apu_phase(apu, phase, 30)\n", "\n", "# Configure grid\n", - "npoints = 11\n", - "angsx = np.linspace(-20, 20, npoints)\n", - "angsy = np.linspace(-20, 20, npoints)\n", + "# npoints = 11\n", + "# angsx = np.linspace(-20, 20, npoints)\n", + "# angsy = np.linspace(-20, 20, npoints)\n", + "# angsx = np.array([-10, -4, -2, 0, 2, 4, 10])\n", + "# angsy = np.array([-10, -4, -2, 0, 2, 4, 10])\n", + "# angsx = np.array([-4, 0, 4])\n", + "# angsy = np.array([-4, 0, 4])\n", + "\n", + "angsx = np.linspace(-10, 10, 11)\n", + "angsy = np.linspace(-10, 10, 11)\n", "\n", "# Select appropriate section and start measurement\n", "stop_meas = False\n", @@ -603,10 +2375,44 @@ "subsec = '09SA'\n", "xbpmlist = [xbpm_mnc1, xbpm_mnc2]\n", "names = ['MNC1', 'MNC2']\n", - "t1 = threading.Thread(target=do_bumps, args=(angsx, angsy, subsec, idlist))\n", + "t1 = threading.Thread(\n", + " target=do_bumps,\n", + " args=(\n", + " angsx,\n", + " angsy,\n", + " subsec,\n", + " idlist,\n", + " currinfo,\n", + " sofb,\n", + " xbpmlist,\n", + " names,\n", + " bpmxenbl_sofb,\n", + " bpmyenbl_sofb,\n", + " )\n", + ")\n", "t1.start()" ] }, + { + "cell_type": "code", + "execution_count": 216, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "0.0" + ] + }, + "execution_count": 216, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "(11*11 -121)*20/60\n" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -616,12 +2422,174 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 220, "metadata": {}, "outputs": [], + "source": [ + "pause_meas = False" + ] + }, + { + "cell_type": "code", + "execution_count": 221, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Meas: (2/11)\n", + "agx:0 agy:-20\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Dorb max: 36.18585005653392 um\n", + "Waiting orbit...\n", + " rms_residue = 18.210 um\n", + " rms_residue = 18.154 um\n", + " rms_residue = 16.876 um\n", + " rms_residue = 12.702 um\n", + " rms_residue = 8.660 um\n", + " rms_residue = 5.836 um\n", + " rms_residue = 3.877 um\n", + " rms_residue = 2.593 um\n", + " rms_residue = 1.703 um\n", + " rms_residue = 1.117 um\n", + " rms_residue = 0.740 um\n", + "Done!\n", + "Meas time: 70.27173805236816\n", + "Meas: (3/11)\n", + "agx:0 agy:-16\n", + "Waiting orbit...\n", + " rms_residue = 3.564 um\n", + " rms_residue = 3.613 um\n", + " rms_residue = 3.441 um\n", + " rms_residue = 2.551 um\n", + " rms_residue = 1.710 um\n", + " rms_residue = 1.079 um\n", + " rms_residue = 0.673 um\n", + "Done!\n", + "Meas time: 63.49041986465454\n", + "Meas: (4/11)\n", + "agx:0 agy:-12\n", + "Waiting orbit...\n", + " rms_residue = 3.567 um\n", + " rms_residue = 3.661 um\n", + " rms_residue = 3.520 um\n", + " rms_residue = 2.684 um\n", + " rms_residue = 1.851 um\n", + " rms_residue = 1.150 um\n", + " rms_residue = 0.727 um\n", + "Done!\n", + "Meas time: 63.154335498809814\n", + "Meas: (5/11)\n", + "agx:0 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 3.602 um\n", + " rms_residue = 3.560 um\n", + " rms_residue = 3.551 um\n", + " rms_residue = 3.020 um\n", + " rms_residue = 1.990 um\n", + " rms_residue = 1.354 um\n", + " rms_residue = 0.878 um\n", + "Done!\n", + "Meas time: 63.72494411468506\n", + "Meas: (6/11)\n", + "agx:0 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 3.591 um\n", + " rms_residue = 3.542 um\n", + " rms_residue = 3.533 um\n", + " rms_residue = 2.836 um\n", + " rms_residue = 1.970 um\n", + " rms_residue = 1.294 um\n", + " rms_residue = 0.852 um\n", + "Done!\n", + "Meas time: 63.72312021255493\n", + "Meas: (7/11)\n", + "agx:0 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 3.524 um\n", + " rms_residue = 3.548 um\n", + " rms_residue = 3.380 um\n", + " rms_residue = 2.649 um\n", + " rms_residue = 1.758 um\n", + " rms_residue = 1.140 um\n", + " rms_residue = 0.783 um\n", + "Done!\n", + "Meas time: 62.97974443435669\n", + "Meas: (8/11)\n", + "agx:0 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 3.557 um\n", + " rms_residue = 3.551 um\n", + " rms_residue = 3.398 um\n", + " rms_residue = 2.611 um\n", + " rms_residue = 1.615 um\n", + " rms_residue = 1.104 um\n", + " rms_residue = 0.693 um\n", + "Done!\n", + "Meas time: 63.32609963417053\n", + "Meas: (9/11)\n", + "agx:0 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 3.582 um\n", + " rms_residue = 3.657 um\n", + " rms_residue = 3.339 um\n", + " rms_residue = 2.481 um\n", + " rms_residue = 1.610 um\n", + " rms_residue = 1.067 um\n", + " rms_residue = 0.719 um\n", + "Done!\n", + "Meas time: 63.4193434715271\n", + "Meas: (10/11)\n", + "agx:0 agy:12\n", + "Waiting orbit...\n", + " rms_residue = 3.629 um\n", + " rms_residue = 3.586 um\n", + " rms_residue = 3.396 um\n", + " rms_residue = 2.534 um\n", + " rms_residue = 1.792 um\n", + " rms_residue = 1.306 um\n", + " rms_residue = 0.972 um\n", + "Done!\n", + "Meas time: 63.66645002365112\n", + "Meas: (11/11)\n", + "agx:0 agy:16\n", + "Waiting orbit...\n", + " rms_residue = 3.545 um\n", + " rms_residue = 3.562 um\n", + " rms_residue = 3.341 um\n", + " rms_residue = 2.488 um\n", + " rms_residue = 1.723 um\n", + " rms_residue = 1.129 um\n", + " rms_residue = 0.763 um\n", + "Done!\n", + "Meas time: 63.198286056518555\n", + "Meas: (12/11)\n", + "agx:0 agy:20\n", + "Waiting orbit...\n", + " rms_residue = 3.509 um\n", + " rms_residue = 3.582 um\n", + " rms_residue = 3.553 um\n", + " rms_residue = 3.087 um\n", + " rms_residue = 2.189 um\n", + " rms_residue = 1.425 um\n", + " rms_residue = 0.785 um\n", + "Done!\n", + "Meas time: 63.47225880622864\n" + ] + } + ], "source": [ "# Configure grid\n", - "angsx = np.array([0])\n", + "# angsx = np.array([0])\n", + "# angsy = np.linspace(-20, 20, 41)\n", + "\n", + "angsx = np.array([0, ])\n", "angsy = np.linspace(-20, 20, 11)\n", "\n", "# Select appropriate section and start measurement\n", @@ -630,10 +2598,64 @@ "subsec = '10BC'\n", "xbpmlist = [xbpm_mgn1, xbpm_mgn2]\n", "names = ['MGN1', 'MGN2']\n", - "t1 = threading.Thread(target=do_bumps, args=(angsx, angsy, subsec, idlist))\n", + "t1 = threading.Thread(\n", + " target=do_bumps,\n", + " args=(\n", + " angsx,\n", + " angsy,\n", + " subsec,\n", + " idlist,\n", + " currinfo,\n", + " sofb,\n", + " xbpmlist,\n", + " names,\n", + " bpmxenbl_sofb,\n", + " bpmyenbl_sofb\n", + " )\n", + ")\n", "t1.start()" ] }, + { + "cell_type": "code", + "execution_count": 40, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Waiting orbit...\n", + " rms_residue = 0.447 um\n", + "Done!\n" + ] + } + ], + "source": [ + "subsec = '06SB'\n", + "implement_bump(sofb=sofb, subsec=subsec, psx=0, psy=0, \n", + " bpmxenbl=bpmxenbl, bpmyenbl=bpmyenbl)" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "SI-10BCFE:DI-PBPM-1\n", + "SI-10BCFE:DI-PBPM-2\n" + ] + } + ], + "source": [ + "for i, xbpm in enumerate(xbpmlist):\n", + " print(xbpm.prefix)" + ] + }, { "cell_type": "markdown", "metadata": {}, @@ -643,36 +2665,784 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 121, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "(50.16326980536445, 'fA')" + ] + }, + "execution_count": 121, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xbpm_cnb.ampB()" + ] + }, + { + "cell_type": "code", + "execution_count": 105, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(8464, 0)" + ] + }, + "execution_count": 105, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "xbpm_mgn1.ampA()" + ] + }, + { + "cell_type": "code", + "execution_count": 207, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ,\n", + " ]" + ] + }, + "execution_count": 207, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "angsy_center = np.linspace(-8, 8, 9)\n", + "angsy_bound = np.linspace(12, 20, 3)\n", + "angsy = np.concatenate((-1*angsy_bound[::-1], angsy_center, angsy_bound))\n", + "\n", + "angsx = np.copy(angsy)\n", + "\n", + "x, y = np.meshgrid(angsx, angsy)\n", + "plt.figure(figsize=(5, 5))\n", + "plt.plot(x, y, 'o')\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": 209, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([-10., -8., -6., -4., -2., 0., 2., 4., 6., 8., 10.])" + ] + }, + "execution_count": 209, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "np.linspace(-10, 10, 11)" + ] + }, + { + "cell_type": "code", + "execution_count": 208, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "array([2., 2., 2., 2., 2., 2., 2., 2.])" + ] + }, + "execution_count": 208, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Waiting orbit...\n", + " rms_residue = 3.590 um\n", + " rms_residue = 3.650 um\n", + " rms_residue = 3.394 um\n", + " rms_residue = 2.453 um\n", + " rms_residue = 1.692 um\n", + " rms_residue = 1.081 um\n", + " rms_residue = 0.728 um\n", + "Done!\n", + "Meas time: 62.771899938583374\n", + "Meas: (16/33)\n", + "agx:0 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 3.660 um\n", + " rms_residue = 3.662 um\n", + " rms_residue = 3.386 um\n", + " rms_residue = 2.628 um\n", + " rms_residue = 1.841 um\n", + " rms_residue = 1.221 um\n", + " rms_residue = 0.827 um\n", + "Done!\n", + "Meas time: 62.738600730895996\n", + "Meas: (17/33)\n", + "agx:0 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 3.577 um\n", + " rms_residue = 3.569 um\n", + " rms_residue = 3.443 um\n", + " rms_residue = 2.624 um\n", + " rms_residue = 1.863 um\n", + " rms_residue = 1.258 um\n", + " rms_residue = 0.855 um\n", + "Done!\n", + "Meas time: 63.50284719467163\n", + "Meas: (18/33)\n", + "agx:0 agy:-0\n", + "Waiting orbit...\n", + " rms_residue = 3.670 um\n", + " rms_residue = 3.653 um\n", + " rms_residue = 3.425 um\n", + " rms_residue = 2.505 um\n", + " rms_residue = 1.678 um\n", + " rms_residue = 1.098 um\n", + " rms_residue = 0.719 um\n", + "Done!\n", + "Meas time: 62.70605158805847\n", + "Meas: (19/33)\n", + "agx:0 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 3.553 um\n", + " rms_residue = 3.600 um\n", + " rms_residue = 3.539 um\n", + " rms_residue = 2.910 um\n", + " rms_residue = 1.669 um\n", + " rms_residue = 1.156 um\n", + " rms_residue = 0.839 um\n", + "Done!\n", + "Meas time: 62.40319085121155\n", + "Meas: (20/33)\n", + "agx:0 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 3.568 um\n", + " rms_residue = 3.555 um\n", + " rms_residue = 3.331 um\n", + " rms_residue = 2.640 um\n", + " rms_residue = 1.716 um\n", + " rms_residue = 1.119 um\n", + " rms_residue = 0.765 um\n", + "Done!\n", + "Meas time: 62.53937745094299\n", + "Meas: (21/33)\n", + "agx:0 agy:-12\n", + "Waiting orbit...\n", + " rms_residue = 3.518 um\n", + " rms_residue = 3.556 um\n", + " rms_residue = 3.447 um\n", + " rms_residue = 2.671 um\n", + " rms_residue = 1.837 um\n", + " rms_residue = 1.138 um\n", + " rms_residue = 0.799 um\n", + "Done!\n", + "Meas time: 61.984461069107056\n", + "Meas: (22/33)\n", + "agx:0 agy:-16\n", + "Waiting orbit...\n", + " rms_residue = 3.591 um\n", + " rms_residue = 3.580 um\n", + " rms_residue = 3.362 um\n", + " rms_residue = 2.524 um\n", + " rms_residue = 1.639 um\n", + " rms_residue = 1.153 um\n", + " rms_residue = 0.758 um\n", + "Done!\n", + "Meas time: 62.247735261917114\n", + "Meas: (23/33)\n", + "agx:0 agy:-20\n", + "Waiting orbit...\n", + " rms_residue = 3.635 um\n", + " rms_residue = 3.675 um\n", + " rms_residue = 3.430 um\n", + " rms_residue = 2.610 um\n", + " rms_residue = 1.771 um\n", + " rms_residue = 1.113 um\n", + " rms_residue = 0.740 um\n", + "Done!\n", + "Meas time: 62.44700217247009\n", + "Meas: (24/33)\n", + "agx:4 agy:-20\n", + "Waiting orbit...\n", + " rms_residue = 3.376 um\n", + " rms_residue = 3.245 um\n", + " rms_residue = 2.903 um\n", + " rms_residue = 2.232 um\n", + " rms_residue = 1.426 um\n", + " rms_residue = 1.125 um\n", + " rms_residue = 0.793 um\n", + "Done!\n", + "Meas time: 62.61201548576355\n", + "Meas: (25/33)\n", + "agx:4 agy:-16\n", + "Waiting orbit...\n", + " rms_residue = 3.565 um\n", + " rms_residue = 3.605 um\n", + " rms_residue = 3.379 um\n", + " rms_residue = 2.573 um\n", + " rms_residue = 1.611 um\n", + " rms_residue = 1.115 um\n", + " rms_residue = 0.706 um\n", + "Done!\n", + "Meas time: 62.889153718948364\n", + "Meas: (26/33)\n", + "agx:4 agy:-12\n", + "Waiting orbit...\n", + " rms_residue = 3.559 um\n", + " rms_residue = 3.628 um\n", + " rms_residue = 3.579 um\n", + " rms_residue = 2.933 um\n", + " rms_residue = 2.024 um\n", + " rms_residue = 1.334 um\n", + " rms_residue = 0.898 um\n", + "Done!\n", + "Meas time: 62.825785636901855\n", + "Meas: (27/33)\n", + "agx:4 agy:-8\n", + "Waiting orbit...\n", + " rms_residue = 3.635 um\n", + " rms_residue = 3.629 um\n", + " rms_residue = 3.407 um\n", + " rms_residue = 2.594 um\n", + " rms_residue = 1.644 um\n", + " rms_residue = 0.992 um\n", + "Done!\n", + "Meas time: 60.4051730632782\n", + "Meas: (28/33)\n", + "agx:4 agy:-4\n", + "Waiting orbit...\n", + " rms_residue = 3.572 um\n", + " rms_residue = 3.614 um\n", + " rms_residue = 3.539 um\n", + " rms_residue = 3.042 um\n", + " rms_residue = 2.057 um\n", + " rms_residue = 1.238 um\n", + " rms_residue = 0.830 um\n", + "Done!\n", + "Meas time: 62.93729901313782\n", + "Meas: (29/33)\n", + "agx:4 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 3.577 um\n", + " rms_residue = 3.581 um\n", + " rms_residue = 3.611 um\n", + " rms_residue = 2.781 um\n", + " rms_residue = 1.671 um\n", + " rms_residue = 1.258 um\n", + " rms_residue = 0.922 um\n", + "Done!\n", + "Meas time: 62.74720239639282\n", + "Meas: (30/33)\n", + "agx:4 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 3.651 um\n", + " rms_residue = 3.572 um\n", + " rms_residue = 3.542 um\n", + " rms_residue = 2.800 um\n", + " rms_residue = 2.047 um\n", + " rms_residue = 1.455 um\n", + " rms_residue = 0.936 um\n", + "Done!\n", + "Meas time: 62.95453119277954\n", + "Meas: (31/33)\n", + "agx:4 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 3.543 um\n", + " rms_residue = 3.579 um\n", + " rms_residue = 3.591 um\n", + " rms_residue = 2.821 um\n", + " rms_residue = 1.944 um\n", + " rms_residue = 1.189 um\n", + " rms_residue = 0.854 um\n", + "Done!\n", + "Meas time: 62.24521517753601\n", + "Meas: (32/33)\n", + "agx:4 agy:12\n", + "Waiting orbit...\n", + " rms_residue = 3.588 um\n", + " rms_residue = 3.613 um\n", + " rms_residue = 3.592 um\n", + " rms_residue = 2.943 um\n", + " rms_residue = 2.038 um\n", + " rms_residue = 1.267 um\n", + " rms_residue = 0.865 um\n", + "Done!\n", + "Meas time: 62.645299673080444\n", + "Meas: (33/33)\n", + "agx:4 agy:16\n", + "Waiting orbit...\n", + " rms_residue = 3.543 um\n", + " rms_residue = 3.529 um\n", + " rms_residue = 3.328 um\n", + " rms_residue = 2.539 um\n", + " rms_residue = 1.660 um\n", + " rms_residue = 1.070 um\n", + " rms_residue = 0.727 um\n", + "Done!\n", + "Meas time: 62.672131299972534\n", + "Meas: (34/33)\n", + "agx:4 agy:20\n", + "Waiting orbit...\n", + " rms_residue = 3.587 um\n", + " rms_residue = 3.570 um\n", + " rms_residue = 3.599 um\n", + " rms_residue = 2.957 um\n", + " rms_residue = 1.936 um\n", + " rms_residue = 1.275 um\n", + " rms_residue = 0.839 um\n", + "Done!\n", + "Meas time: 62.88851261138916\n" + ] + } + ], + "source": [ + "np.diff(angsy_center)" + ] + }, + { + "cell_type": "code", + "execution_count": 206, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "40.333333333333336" + ] + }, + "execution_count": 206, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + " rms_residue = 3.610 um\n", + " rms_residue = 3.554 um\n", + " rms_residue = 2.930 um\n", + " rms_residue = 1.970 um\n", + " rms_residue = 1.258 um\n", + " rms_residue = 0.812 um\n", + "Done!\n", + "Meas time: 63.8027138710022\n", + "Meas: (13/33)\n", + "agx:0 agy:20\n", + "Waiting orbit...\n", + " rms_residue = 3.253 um\n", + " rms_residue = 3.318 um\n", + " rms_residue = 3.028 um\n", + " rms_residue = 2.172 um\n", + " rms_residue = 1.894 um\n", + " rms_residue = 1.254 um\n", + " rms_residue = 0.839 um\n", + "Done!\n", + "Meas time: 62.731629610061646\n", + "Meas: (14/33)\n", + "agx:0 agy:16\n", + "Waiting orbit...\n", + " rms_residue = 3.462 um\n", + " rms_residue = 3.517 um\n", + " rms_residue = 3.146 um\n", + " rms_residue = 2.377 um\n", + " rms_residue = 1.734 um\n", + " rms_residue = 1.175 um\n", + " rms_residue = 0.819 um\n", + "Done!\n", + "Meas time: 62.59918808937073\n", + "Meas: (15/33)\n", + "agx:0 agy:12\n" + ] + } + ], + "source": [ + "(11)**2 *20/60" + ] + }, + { + "cell_type": "code", + "execution_count": 70, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Meas: (2/8)\n", + "agx:-10 agy:-10\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Waiting orbit...\n", + " rms_residue = 30.808 um\n", + " rms_residue = 30.782 um\n", + " rms_residue = 3.614 um\n", + "Done!\n", + "Meas time: 19.953986644744873\n", + "Meas: (3/8)\n", + "agx:-10 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.584 um\n", + " rms_residue = 4.584 um\n", + " rms_residue = 4.584 um\n", + "Done!\n", + "Meas time: 21.569299936294556\n", + "Meas: (4/8)\n", + "agx:-8 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 5.342 um\n", + " rms_residue = 5.342 um\n", + " rms_residue = 0.570 um\n", + "Done!\n", + "Meas time: 19.488621950149536\n", + "Meas: (5/8)\n", + "agx:-8 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 43.188 um\n", + " rms_residue = 43.188 um\n", + " rms_residue = 3.387 um\n", + "Done!\n", + "Meas time: 23.49905562400818\n", + "Meas: (6/8)\n", + "agx:8 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 1.951 um\n", + "Done!\n", + "Meas time: 19.504618644714355\n", + "Meas: (7/8)\n", + "agx:8 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 43.721 um\n", + " rms_residue = 1.017 um\n", + "Done!\n", + "Meas time: 25.28632950782776\n", + "Meas: (8/8)\n", + "agx:10 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 4.580 um\n", + " rms_residue = 4.580 um\n", + " rms_residue = 4.580 um\n", + "Done!\n", + "Meas time: 15.328918695449829\n", + "Meas: (9/8)\n", + "agx:10 agy:-10\n", + "Waiting orbit...\n", + " rms_residue = 4.068 um\n", + " rms_residue = 4.068 um\n", + "Done!\n", + "Meas time: 21.475424766540527\n" + ] + } + ], "source": [ "# Configure gap\n", - "gap = 0\n", - "move_vpu_gap(vpu, gap)\n", + "# gap = 0\n", + "# move_vpu_gap(vpu, gap)\n", "\n", "# Configure grid\n", - "angsx = np.linspace(-20, 20, 11)\n", - "angsy = np.linspace(-20, 20, 11)\n", + "# angsx = np.array([0])\n", + "# angsy = np.linspace(-4, 4, 3)\n", "\n", "# Select appropriate section and start measurement\n", + "\n", + "angsx = np.array([-10, -8, 8, 10])\n", + "angsy = np.array([-10, 10])\n", + "\n", + "\n", "stop_meas = False\n", "pause_meas = False\n", "subsec = '06SB'\n", "xbpmlist = [xbpm_cnb]\n", "names = ['CNB']\n", - "t1 = threading.Thread(target=do_bumps, args=(angsx, angsy, subsec, idlist))\n", + "t1 = threading.Thread(target=do_bumps, args=(angsx, angsy, subsec, idlist, currinfo, sofb, xbpmlist, names, bpmxenbl, bpmyenbl))\n", "t1.start()" ] }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 53, "metadata": {}, "outputs": [], "source": [ "restore_sofb_reforb(sofb, bpmxenbl, bpmyenbl)" ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Do bumps @ CATERETE" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# Configure grid\n", + "# angsx = np.array([0])\n", + "# angsy = np.linspace(-20, 20, 41)\n", + "\n", + "angsx = np.array([-10, -8, 8, 10])\n", + "angsy = np.array([-10, 10])\n", + "\n", + "# Select appropriate section and start measurement\n", + "stop_meas = False\n", + "pause_meas = False\n", + "subsec = '07SP'\n", + "xbpmlist = [xbpm_cat]\n", + "names = ['CAT1']\n", + "t1 = threading.Thread(target=do_bumps, args=(angsx, angsy, subsec, idlist, currinfo, sofb, xbpmlist, names, bpmxenbl, bpmyenbl))\n", + "t1.start()" + ] + }, + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Debug bump with SOFB on" + ] + }, + { + "cell_type": "code", + "execution_count": 190, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Waiting orbit...\n", + " rms_residue = 0.222 um\n", + "Done!\n" + ] + } + ], + "source": [ + "subsec = '07SP'\n", + "\n", + "agx = 0\n", + "agy = 0\n", + "\n", + "implement_bump(\n", + " sofb=sofb,\n", + " subsec=subsec,\n", + " agx=agx,\n", + " agy=agy,\n", + " bpmxenbl_sofb=bpmxenbl_sofb,\n", + " bpmyenbl_sofb=bpmyenbl_sofb,\n", + " tol_orb=1,\n", + " # bpmxenbl_fofb=bpmxenbl_fofb,\n", + " # bpmyenbl_fofb=bpmyenbl_fofb,\n", + ")\n" + ] + }, + { + "cell_type": "code", + "execution_count": 164, + "metadata": {}, + "outputs": [], + "source": [ + "sofb.bpmxenbl = bpmxenbl_sofb\n", + "sofb.bpmyenbl = bpmyenbl_sofb\n" + ] + }, + { + "cell_type": "code", + "execution_count": 165, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 165, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(bpmyenbl_sofb)" + ] + }, + { + "cell_type": "code", + "execution_count": 37, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "13682084" + ] + }, + "execution_count": 37, + "metadata": {}, + "output_type": "execute_result" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Waiting orbit...\n", + " rms_residue = 0.820 um\n", + "Done!\n", + "agx:0 agy:-1\n", + "Waiting orbit...\n", + " rms_residue = 0.096 um\n", + "Done!\n", + "agx:0 agy:0\n", + "Waiting orbit...\n", + " rms_residue = 0.096 um\n", + "Done!\n", + "agx:0 agy:1\n", + "Waiting orbit...\n", + " rms_residue = 0.192 um\n", + "Done!\n", + "agx:0 agy:2\n", + "Waiting orbit...\n", + " rms_residue = 0.524 um\n", + "Done!\n", + "agx:0 agy:3\n", + "Waiting orbit...\n", + " rms_residue = 0.698 um\n", + "Done!\n", + "agx:0 agy:4\n", + "Waiting orbit...\n", + " rms_residue = 0.251 um\n", + "Done!\n", + "agx:0 agy:5\n", + "Waiting orbit...\n", + " rms_residue = 1.127 um\n", + "Done!\n", + "agx:0 agy:6\n", + "Waiting orbit...\n", + " rms_residue = 0.583 um\n", + "Done!\n", + "agx:0 agy:7\n", + "Waiting orbit...\n", + " rms_residue = 0.112 um\n", + "Done!\n", + "agx:0 agy:8\n", + "Waiting orbit...\n", + " rms_residue = 0.343 um\n", + "Done!\n", + "agx:0 agy:9\n", + "Waiting orbit...\n", + " rms_residue = 0.592 um\n", + "Done!\n", + "agx:0 agy:10\n", + "Waiting orbit...\n", + " rms_residue = 0.209 um\n", + "Done!\n", + "agx:0 agy:11\n", + "Waiting orbit...\n", + " rms_residue = 0.202 um\n", + "Done!\n", + "agx:0 agy:12\n", + "Waiting orbit...\n", + " rms_residue = 0.362 um\n", + "Done!\n", + "agx:0 agy:13\n", + "Waiting orbit...\n", + " rms_residue = 0.109 um\n", + "Done!\n", + "agx:0 agy:14\n", + "Waiting orbit...\n", + " rms_residue = 0.166 um\n", + "Done!\n", + "agx:0 agy:15\n", + "Waiting orbit...\n", + " rms_residue = 0.153 um\n", + "Done!\n", + "agx:0 agy:16\n", + "Waiting orbit...\n", + " rms_residue = 0.617 um\n", + "Done!\n", + "agx:0 agy:17\n", + "Waiting orbit...\n", + " rms_residue = 0.179 um\n", + "Done!\n", + "agx:0 agy:18\n", + "Waiting orbit...\n", + " rms_residue = 0.391 um\n", + "Done!\n", + "agx:0 agy:19\n", + "Waiting orbit...\n", + " rms_residue = 0.358 um\n", + "Done!\n", + "agx:0 agy:20\n", + "Waiting orbit...\n", + " rms_residue = 0.776 um\n", + "Done!\n" + ] + } + ], + "source": [ + "6841042 * 2" + ] } ], "metadata": { @@ -691,7 +3461,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.2" + "version": "3.6.8" }, "vscode": { "interpreter": {