first simulated datapoint collection... but something wrong in coord trf
This commit is contained in:
86
swissmx.py
86
swissmx.py
@@ -1255,20 +1255,38 @@ class SwissMxWnd(QMainWindow, Ui_MainWindow):
|
||||
fy=fast_y.get_val()
|
||||
opt_ctr=geo._opt_ctr
|
||||
for go in self._goTracked['objLst']:
|
||||
points=go.get_points() #points in coordinate system of ROI
|
||||
if type(go)!=UsrGO.FixTargetFrame:
|
||||
_log.warning(f'for now: ONLY FixTargetFrame are supported ->skipped:{go}')
|
||||
continue
|
||||
try:
|
||||
param=go.get_scan_param() #points in coordinate system of ROI
|
||||
except AttributeError as e:
|
||||
_log.warning(f'no scan parameters for object->skipped:{go}')
|
||||
continue
|
||||
# names consists of abrevations
|
||||
# part 0: po=position sz=size dt=delta
|
||||
# part 0: po=position dt=delta
|
||||
# part 1: px=pixel eu=engineering units (e.g. mm)
|
||||
po_px=go.pos()
|
||||
sz_px=go.size()
|
||||
tr=go.transform() # TODO: this is not yet used
|
||||
UsrGO.obj_info(tr)
|
||||
dt_px=-opt_ctr-po_px
|
||||
dt_eu=geo.pix2pos(dt_px)+(fx,fy)
|
||||
for i in range(points.shape[0]):
|
||||
points[i,:]=dt_eu+geo.pix2pos(points[i,:])#*tr
|
||||
po_eu=geo.pix2pos(dt_px)+(fx,fy) # position of the 0/0 poit of the ROI in engineering units
|
||||
|
||||
self.daq_collect_points(points, visualizer_method="grid", visualizer_params=None)
|
||||
p=param['points']
|
||||
pos=np.array(param['grid']['pos']) #in um
|
||||
pitch=np.array(param['grid']['pitch']) #in um
|
||||
trf=param['trf'] #fix shear/rotation um->um
|
||||
trf=np.asmatrix(np.diag(pitch))*np.asmatrix(trf)*geo._pix2pos
|
||||
po_eu*=1000 #mm to um
|
||||
trf*=1000 #mm to um
|
||||
#pix2pos: return np.asarray(self._pix2pos*np.mat(p).T).ravel()
|
||||
|
||||
for i in range(p.shape[0]):
|
||||
p[i,:]=po_eu+(trf*np.asmatrix(p[i,:]).T).A.ravel()
|
||||
|
||||
print('DEBUG: first point:')
|
||||
print(p[0,:])
|
||||
print('DEBUG: difference from point to point:')
|
||||
print(np.diff(p, axis=0))
|
||||
self.daq_collect(**param)
|
||||
|
||||
elif task == TASK_GRID:
|
||||
self.re_connect_collect_button(
|
||||
@@ -1734,6 +1752,56 @@ class SwissMxWnd(QMainWindow, Ui_MainWindow):
|
||||
if n>=3:
|
||||
geo.least_square_plane(ptFitPlane)
|
||||
|
||||
|
||||
def daq_collect(self, **kwargs):# points, visualizer_method, visualizer_params):
|
||||
#def _OLD_daq_collect_points(self, points, visualizer_method, visualizer_params):
|
||||
app = QApplication.instance()
|
||||
cfg = app._cfg
|
||||
geo = app._geometry
|
||||
verbose=0xff
|
||||
fn='/tmp/shapepath'
|
||||
try:
|
||||
dt=app._deltatau
|
||||
except AttributeError:
|
||||
app._deltatau=dt=deltatau.Deltatau()
|
||||
try:
|
||||
jf=app._jungfrau
|
||||
except AttributeError:
|
||||
app._jungfrau=jf=detector.Jungfrau()
|
||||
|
||||
sp=dt._shapepath
|
||||
sp.points=kwargs['points']
|
||||
#sp.gen_grid_points(w=15, h=15, pitch=3, rnd=0, ofs=(0, +2000))
|
||||
#sp.gen_grid_points(w=5, h=10, pitch=1, rnd=0, ofs=(0, 0));sp.sort_points(False, 10);sp.points
|
||||
#sp.sort_points(False, 15);
|
||||
sp.meta['pt2pt_time']=10
|
||||
sp.setup_gather()
|
||||
sp.setup_sync(verbose=verbose&32, timeOfs=0.05)
|
||||
try:
|
||||
p=geo._fitPlane
|
||||
sp.setup_coord_trf(cz=f'{p[0]}X+{p[1]}Y+{p[2]}') # reset to shape path system
|
||||
except AttributeError:
|
||||
_log.warning('no plane fitting done. z does not move')
|
||||
sp.setup_coord_trf() # reset to shape path system
|
||||
# sp.meta['pt2pt_time']=10 #put between setup_sync and setup_motion to have more motion points than FEL syncs
|
||||
sp.setup_motion(fnPrg=fn+'.prg', mode=3, scale=1., dwell=10)
|
||||
sp.homing() # homing if needed
|
||||
sp.run() # start motion program
|
||||
sp.wait_armed() # wait until motors are at first position
|
||||
sp.trigger(0.5) # send a start trigger (if needed) ater given time
|
||||
if not dt._comm is None:
|
||||
while True:
|
||||
p=sp.progress()
|
||||
if p<0: break
|
||||
_log.info(f'progress {p}/{sp.points.shape[0]}')
|
||||
time.sleep(.1)
|
||||
sp.gather_upload(fnRec=fn+'.npz')
|
||||
#dp=deltatau.shapepath.DebugPlot(sp)
|
||||
#dp.plot_gather(mode=11)
|
||||
#plt.show(block=False)
|
||||
#plt.show(block=True)
|
||||
return
|
||||
|
||||
# **************** OBSOLETE AND/OR OLD STUFF ****************
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user