IN_POSITION_BAND = 10.0 #cam_server.start("SAROP21-PSRD103_sp1", True) #cam_server.start("SAROP21-PPRM102_sp1", True) #cam_server.start("SAROP21-PSRD103_sp1", True) #cam_server.start("SAROP11-PSCR106_sp1", True) #cam_server.start("SAROP11-PPRM122_sp1", True) cam_server.start("SATOP21-PSCR162_sp1", True) cam_server.stream.waitCacheChange(-1) i = cam_server.stream.getChild("intensity") iavg = create_averager(i, 20, interval = -1) #ycent = cam_server.stream.getChild("y_center_of_mass") #ycentavg = create_averager(ycent, 20, interval = -1) #xcent = cam_server.stream.getChild("x_center_of_mass") #xcentavg = create_averager(xcent, 20, interval = -1) #iode = Channel("SLAAR21-LSCP-DRS1FNS:CH2:BOXCAR.VALP") #iavg = create_averager(diode, 30, interval = -1) def beam_ok(): I0 = caget ("SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG") if I0 > 100: return "Yes" else : return "No" def before_sampling(rec): while beam_ok() == "No": time.sleep(0.1) print(".") def after_sampling(rec): if beam_ok() == "No": rec.invalidate() i0 = Channel("SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG") class SGM(RegisterBase): def doWrite(self, value): caput ("ATHOS:SetEnergy", value) time.sleep(0.5) cawait('ATHOS:MOVING', 1, timeout = 10.0, type = 'i') # cawait('SFB_BEAM_ENERGY_ECOL:SUM-ERROR-OK', 1, timeout = 10.0, type = 'i') # if abs(value - self.read()) > IN_POSITION_BAND : # raise Exception("Cannot set mono") def doRead(self): return caget("ATHOS:photonenergy") athos = SGM() athos.initialize() i0 = Channel("SATFE10-PEPG046:PHOTON-ENERGY-PER-PULSE-AVG") #caput ("ATHOS:SetEnergy", 680.0) lscan( athos, [iavg], 680.0, 680.2, 0.05,0.2) #scan( (pitch2,alvra), [diode,i0], (5.0,2100.0),(8.0,2300.0),(0.1,1.0), latency= 0.2, before_read=before_sampling, after_read=after_