Skip to content

Commit

Permalink
Fix minor code issues in nanoZebra
Browse files Browse the repository at this point in the history
  • Loading branch information
dmgav committed May 13, 2022
1 parent 9cc0139 commit 917c043
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 13 deletions.
7 changes: 3 additions & 4 deletions acceptance_tests/run_short_tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)
Expand Down Expand Up @@ -100,4 +100,3 @@ def test_mesh():
# print("=====================================================================================")
# print(" Testing 'test_mesh' ... ")
# test_mesh()

38 changes: 29 additions & 9 deletions startup/32-nanoZebra.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down Expand Up @@ -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()

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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")
Expand All @@ -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")


Expand Down

0 comments on commit 917c043

Please sign in to comment.