From 917c0436050a4ea9b6e9b5f5838c20a8e8b87f74 Mon Sep 17 00:00:00 2001 From: Dmitri Gavrilov Date: Fri, 13 May 2022 16:29:41 -0400 Subject: [PATCH] Fix minor code issues in nanoZebra --- acceptance_tests/run_short_tests.py | 7 +++--- startup/32-nanoZebra.py | 38 ++++++++++++++++++++++------- 2 files changed, 32 insertions(+), 13 deletions(-) diff --git a/acceptance_tests/run_short_tests.py b/acceptance_tests/run_short_tests.py index 82b57c2..a1466db 100644 --- a/acceptance_tests/run_short_tests.py +++ b/acceptance_tests/run_short_tests.py @@ -43,7 +43,7 @@ def test_dscan(): Test ``dscan`` scan (1D step scan) with ZP motor. """ print("Running scan ..") - uid, = RE(dscan([sclr1,zebra,merlin1,xspress3],zpssx,-1,1,10,0.03)) + uid, = RE(dscan([sclr1,zebra,merlin1,xspress3],zpssx,-1,1,10,0.1)) print("Scan is completed") print("Filling the table ...") _ = db[uid].table(fill=True) @@ -56,7 +56,7 @@ def test_d2scan(): Test ``d2scan`` scan (1D step scan) along two axes with ZP motors. """ print("Running scan ..") - uid, = RE(d2scan([sclr1,zebra,merlin1,xspress3],10,zpssx,-1,1,zpssy,-1,1,0.03)) + uid, = RE(d2scan([sclr1,zebra,merlin1,xspress3],10,zpssx,-1,1,zpssy,-1,1,0.1)) print("Scan is completed") print("Filling the table ...") _ = db[uid].table(fill=True) @@ -69,7 +69,7 @@ def test_mesh(): Test ``mesh`` scan (2D step scan) with ZP motors. """ print("Running scan ..") - uid, = RE(mesh([sclr1,zebra,merlin1,xspress3],zpssx,-1,1,10,zpssy,-1,1,10,0.03)) + uid, = RE(mesh([sclr1,zebra,merlin1,xspress3],zpssx,-1,1,10,zpssy,-1,1,10,0.1)) print("Scan is completed") print("Filling the table ...") _ = db[uid].table(fill=True) @@ -100,4 +100,3 @@ def test_mesh(): # print("=====================================================================================") # print(" Testing 'test_mesh' ... ") # test_mesh() - diff --git a/startup/32-nanoZebra.py b/startup/32-nanoZebra.py index b56527c..03a9de3 100644 --- a/startup/32-nanoZebra.py +++ b/startup/32-nanoZebra.py @@ -166,6 +166,8 @@ class ZebraPositionCapture(Device): block_state_reset = Cpt(EpicsSignal, "SYS_RESET.PROC") data = Cpt(ZebraPositionCaptureData, "") + pos1_set = Cpt(EpicsSignal, "POS1_SET") + def stage(self): self.arm.put(1) @@ -327,31 +329,31 @@ def stage(self): if dir == "HOR": self.stage_sigs[self._encoder.pc.enc] = "Enc2" self.stage_sigs[self._encoder.pc.dir] = "Positive" - self.stage_sigs[self._encoder.pc.enc_res2] = 5e-6 + # self.stage_sigs[self._encoder.pc.enc_res2] = 5e-6 elif dir == "VER": self.stage_sigs[self._encoder.pc.enc] = "Enc1" self.stage_sigs[self._encoder.pc.dir] = "Positive" - self.stage_sigs[self._encoder.pc.enc_res1] = 5e-6 + # self.stage_sigs[self._encoder.pc.enc_res1] = 5e-6 elif dir == "DET2HOR": self.stage_sigs[self._encoder.pc.enc] = "Enc3" self.stage_sigs[self._encoder.pc.dir] = "Positive" - self.stage_sigs[self._encoder.pc.enc_res1] = 5e-5 + # self.stage_sigs[self._encoder.pc.enc_res1] = 5e-5 elif dir == "DET2VER": self.stage_sigs[self._encoder.pc.enc] = "Enc4" self.stage_sigs[self._encoder.pc.dir] = "Positive" - self.stage_sigs[self._encoder.pc.enc_res1] = 5e-5 + # self.stage_sigs[self._encoder.pc.enc_res1] = 5e-5 elif dir == "NANOHOR": self.stage_sigs[self._encoder.pc.enc] = "Enc1" self.stage_sigs[self._encoder.pc.dir] = "Positive" - self.stage_sigs[self._encoder.pc.enc_res2] = 9.5368e-05 + # self.stage_sigs[self._encoder.pc.enc_res2] = 9.5368e-05 elif dir == "NANOVER": self.stage_sigs[self._encoder.pc.enc] = "Enc2" self.stage_sigs[self._encoder.pc.dir] = "Positive" - self.stage_sigs[self._encoder.pc.enc_res2] = 9.5368e-05 + # self.stage_sigs[self._encoder.pc.enc_res2] = 9.5368e-05 elif dir == "NANOZ": self.stage_sigs[self._encoder.pc.enc] = "Enc3" self.stage_sigs[self._encoder.pc.dir] = "Positive" - self.stage_sigs[self._encoder.pc.enc_res2] = 9.5368e-05 + # self.stage_sigs[self._encoder.pc.enc_res2] = 9.5368e-05 super().stage() @@ -395,6 +397,9 @@ def kickoff(self, *, xstart, xstop, xnum, dwell): ## pulses2/3/4 ## OR logic ## PC on position (NOT TIME!) + + self.pos1_set = xstart + self._encoder.pc.arm.put(0) self._mode = "kicked off" self._npts = int(xnum) @@ -811,16 +816,21 @@ def export_zebra_data(zebra, filepath, fast_axis): def export_sis_data(ion, filepath, zebra): print(f"EXPORTING SCALER DATA .................................") N = ion.nuse_all.get() + print("Step1") mca1 = ion.mca_by_index[1].get(timeout=5.0) mca2 = ion.mca_by_index[2].get(timeout=5.0) mca3 = ion.mca_by_index[3].get(timeout=5.0) mca4 = ion.mca_by_index[4].get(timeout=5.0) + print("Step2") while len(mca1) == 0 and len(mca1) != len(mca2): # ????????????????????? + print("Step3") mca1 = ion.mca_by_index[1].get(timeout=5.0) mca2 = ion.mca_by_index[2].get(timeout=5.0) mca3 = ion.mca_by_index[3].get(timeout=5.0) mca4 = ion.mca_by_index[4].get(timeout=5.0) + print("Step4") + if len(mca2) != N: print(f'Scaler did not receive collect enough points.') ## Try one more time @@ -831,15 +841,21 @@ def export_sis_data(ion, filepath, zebra): if len(mca2) != N: print(f'Nope. Only received {len(mca2)}/{N} points.') + print("Step5") + correct_length = zebra.pc.data.num_down.get() # Only consider even points mca1 = mca1[1::2] mca2 = mca2[1::2] mca3 = mca3[1::2] mca4 = mca4[1::2] + + print("Step6") + print(f"File name: {filepath!r}") + with h5py.File(filepath, "w") as f: - if len(t) != correct_length: - correction_factor = correct_length - len(t) + if len(mca1) != correct_length: + correction_factor = correct_length - len(mca1) correction_list = [1e10 for _ in range(0, int(correction_factor))] new_mca1 = [k for k in mca1] + correction_list new_mca2 = [k for k in mca2] + correction_list @@ -852,6 +868,8 @@ def export_sis_data(ion, filepath, zebra): new_mca3 = mca3 new_mca4 = mca4 + print("Step7") + dset0 = f.create_dataset("mca1", (correct_length,), dtype="f") dset0[...] = np.array(new_mca1) dset1 = f.create_dataset("mca2", (correct_length,), dtype="f") @@ -862,6 +880,8 @@ def export_sis_data(ion, filepath, zebra): dset3[...] = np.array(new_mca4) f.close() + print("Step8") + print(f"FINISHED EXPORTING SCALER DATA")