def begin_waitfor_mevents_end(self, mevents): """ Begin a run, wait for mevents millions of events and end run. Parameters: mevents (float): The millions of events to wait for in the run. """ g.begin(quiet=True) g.waitfor_mevents(mevents) g.end(quiet=True)
def rotate_and_collect_data(self, angle, duration): print "Rotating to " + str(angle) + " deg..." g.set_pv(self.gonio_pv, angle) g.waitfor_move() g.change_title(g.get_title + " rot " + str(angle)) print "Beginning Run " + g.get_title + ". Collecting data for " + str(duration) + " s." g.begin() g.waitfor_time(seconds=duration) # waitfor_uamps better? g.end() print "Run complete."
def check_mevents_and_begin_waitfor_mevents_end(self, mevents): """ If mevents are more than zero do a run and wait for the mevents in that run. Parameters: mevents (float): The millions of events to wait for. """ if mevents > 0: g.begin(quiet=True) g.waitfor_mevents(mevents) g.end(quiet=True)
def run(self, start_temp=1.0, stop_temp=1.0, step_temp=0.5): # Execute the loop once if start_temp == stop_temp: step_temp = 1.0 # Done to account for pythons range non inclusivity small_amount = 0.000001 if start_temp <= stop_temp: stop_temp += small_amount else: stop_temp -= small_amount # Regular range can't use floats for temp in np.arange(start_temp, stop_temp, step_temp): g.cset("temperature", temp) g.begin(quiet=True) g.waitfor_time(seconds=30) g.end(quiet=True)
def __enter__(self): if g.get_runstate() != "SETUP": # pragma: no cover raise RuntimeError("Cannot start scan while already in a run!" + " Current state is: " + str(g.get_runstate())) kwargs = self._kwargs if "title" in kwargs: title = kwargs["title"] self._save = True else: title = "Scan" g.change_title(title) g.change(nperiods=self.period_function(self._scan)) g.change(period=1) g.begin(paused=1) @wraps(self._f) def wrap(*args, **kwargs): """Wrapped function to change periods""" x = self._f(*args, **kwargs) g.change_period(1 + g.get_period()) return x return wrap
def scan_axis(axis,startval,endval,npoints,frms,rtitle,usem4=0): lm.setuplarmor_nrscanning() gen.change(title=rtitle) gen.change(nperiods=npoints) gen.begin(paused=1) # setup the scan arrays and figure xval=np.zeros(npoints) yval=np.zeros(npoints) eval=np.zeros(npoints) stepsize=(endval-startval)/float(npoints-1) for i in range(npoints): xval[i]=(startval+i*stepsize) mpl.ion() fig1=mpl.figure(1) mpl.clf() ax = mpl.subplot(111) #ax.set_xlim((0,4)) ax.set_xlabel(axis) ax.set_ylabel('Normalised Neutron counts') # reasonable x-Axis, necessary to get the full window from the first datapoint scanrange = np.absolute(endval - startval) mpl.xlim((startval-scanrange*0.05, endval+scanrange*0.05)) mpl.draw() mpl.pause(0.001) for i in range(npoints): gen.change(period=i+1) cset_str(axis,xval[i]) gen.waitfor(seconds=1) gen.waitfor_move() gfrm=gen.get_frames() gen.resume() gen.waitfor(frames=gfrm+frms) gen.pause() a1=gen.get_spectrum(1,i+1) msig=sum(a1['signal'])*100.0 mesig=(math.sqrt(msig)) print "msig="+str(msig)+" mesig="+str(mesig) # get the interesting monitor if usem4 < 1: a1=gen.get_spectrum(11,i+1) sig=sum(a1['signal'])*100.0 a1=gen.get_spectrum(12,i+1) sig+=sum(a1['signal'])*100.0 esig=math.sqrt(sig) else: a1=gen.get_spectrum(4,i+1) sig=sum(a1['signal'])*100.0 esig=math.sqrt(sig) print "sig="+str(sig)+" esig="+str(esig) yval[i]=(sig/msig) eval[i]=(math.sqrt((sig/(msig*msig))+(sig*sig/(msig*msig*msig)))) print "yval="+str(yval[i])+" esig="+str(eval[i]) ax.errorbar(xval[i], yval[i], eval[i], fmt = 'ko') fig1.canvas.draw() mpl.pause(0.001) f.open('u:/users/Larmor/lastscan.csv','w') s=str(xval[i])+','+str(yval[i])+','+str(eval[i])+'\n' f.write(s) f.close() gen.abort() #f.open('u:/users/Larmor/lastscan.csv','w') #for i in range(npoints): # s=str(xval[i])+','+str(yval[i])+','+str(eval[i])+'\n' # f.write(s) #f.close() '''
def polscan_axis(axis,startval,endval,npoints,frms,rtitle): lm.setuplarmor_nrscanning() gen.change(title=rtitle) gen.change(nperiods=npoints*2) gen.begin(paused=1) # setup the scan arrays and figure xval=np.zeros(npoints) yval=np.zeros(npoints) eval=np.zeros(npoints) stepsize=(endval-startval)/float(npoints-1) for i in range(npoints): xval[i]=(startval+i*stepsize) mpl.ion() fig1=mpl.figure(1) mpl.clf() ax = mpl.subplot(111) #ax.set_xlim((0,4)) ax.set_xlabel(axis) ax.set_ylabel('Normalised Neutron counts') # reasonable x-Axis, necessary to get the full window from the first datapoint scanrange = np.absolute(endval - startval) mpl.xlim((startval-scanrange*0.05, endval+scanrange*0.05)) mpl.draw() mpl.pause(0.001) flipper1(1) for i in range(npoints): gen.change(period=(i*2)+1) cset_str(axis,xval[i]) flipper2(0) gen.waitfor_move() gfrm=gen.get_frames() resume() gen.waitfor(frames=gfrm+frms) pause() flipper2(1) gen.change(period=(i*2)+2) gfrm=gen.get_frames() resume() gen.waitfor(frames=gfrm+frms) pause() a1=gen.get_spectrum(1,(i*2)+1) msigup=sum(a1['signal'])*100.0 mesigup=(sqrt(msigup)) # get the interesting monitor a1=gen.get_spectrum(11,(i*2)+1) sigup=sum(a1['signal'])*100.0 a1=gen.get_spectrum(12,(i*2)+1) sigup+=sum(a1['signal'])*100.0 esigup=sqrt(sigup) a1=gen.get_spectrum(1,(i*2)+2) msigdo=sum(a1['signal'])*100.0 mesigdo=(sqrt(msigdo)) # get the interesting monitor a1=gen.get_spectrum(11,(i*2)+2) sigdo=sum(a1['signal'])*100.0 a1=gen.get_spectrum(12,(i*2)+2) sigdo+=sum(a1['signal'])*100.0 esigdo=sqrt(sigdo) yval[i]=(sigup-sigdo)/(sigup+sigdo) eval[i]=yval[i]*1e-3 #eval[i]=(sqrt((sig/(msig*msig))+(sig*sig/(msig*msig*msig)))) ax.errorbar(xval[i], yval[i], eval[i], fmt = 'ko') fig1.canvas.draw() mpl.pause(0.001) abort()
def scan_axis_mantid(axis,startval,endval,npoints,frms,rtitle,usem4=0): lm.setuplarmor_nrscanning() gen.change(title=rtitle) gen.change(nperiods=npoints) gen.begin(paused=1) # setup the scan arrays and figure xval=np.zeros(npoints) yval=np.zeros(npoints) eval=np.zeros(npoints) stepsize=(endval-startval)/float(npoints-1) for i in range(npoints): xval[i]=(startval+i*stepsize) gui_cmd(mpl.ion) fig1=gui_cmd(mpl.figure,1) gui_cmd(mpl.clf) ax=gui_cmd(mpl.subplot,111) #ax.set_xlim((0,4)) gui_cmd(ax.set_xlabel,axis) gui_cmd(ax.set_ylabel,'Normalised Neutron counts') # reasonable x-Axis, necessary to get the full window from the first datapoint scanrange = np.absolute(endval - startval) gui_cmd(mpl.xlim,(startval-scanrange*0.05, endval+scanrange*0.05)) gui_cmd(mpl.draw) gui_cmd(mpl.pause,0.001) for i in range(npoints): gen.change(period=i+1) cset_str(axis,xval[i]) sleep(15) #gen.waitfor_move() gfrm=gen.get_frames() gen.resume() gen.waitfor(frames=gfrm+frms) gen.pause() a1=gen.get_spectrum(1,i+1) msig=sum(a1['signal'])*100.0 mesig=(math.sqrt(msig)) print "msig="+str(msig)+" mesig="+str(mesig) # get the interesting monitor if usem4 < 1: a1=gen.get_spectrum(11,i+1) sig=sum(a1['signal'])*100.0 a1=gen.get_spectrum(12,i+1) sig+=sum(a1['signal'])*100.0 esig=math.sqrt(sig) else: a1=gen.get_spectrum(4,i+1) sig=sum(a1['signal'])*100.0 esig=math.sqrt(sig) print "sig="+str(sig)+" esig="+str(esig) yval[i]=(sig/msig) eval[i]=(math.sqrt((sig/(msig*msig))+(sig*sig/(msig*msig*msig)))) print "yval="+str(yval[i])+" esig="+str(eval[i]) gui_cmd(ax.errorbar,xval[i], yval[i], eval[i], fmt = 'ko') gui_cmd(fig1.canvas.draw) gui_cmd(mpl.pause,0.001) gen.abort()
def run(self, temperature=0.0, field=0.0, uamps=0.0): g.cset("temperature", temperature) g.cset("field", field) g.begin() g.waitfor_uamps(uamps) g.end()
def scan_axis(axis, startval, endval, npoints, frms, rtitle, usem4=0): lm.setuplarmor_nrscanning() gen.change(title=rtitle) gen.change(nperiods=npoints) gen.begin(paused=1) # setup the scan arrays and figure xval = np.zeros(npoints) yval = np.zeros(npoints) eval = np.zeros(npoints) stepsize = (endval - startval) / float(npoints - 1) for i in range(npoints): xval[i] = (startval + i * stepsize) mpl.ion() fig1 = mpl.figure(1) mpl.clf() ax = mpl.subplot(111) #ax.set_xlim((0,4)) ax.set_xlabel(axis) ax.set_ylabel('Normalised Neutron counts') # reasonable x-Axis, necessary to get the full window from the first datapoint scanrange = np.absolute(endval - startval) mpl.xlim((startval - scanrange * 0.05, endval + scanrange * 0.05)) mpl.draw() mpl.pause(0.001) for i in range(npoints): gen.change(period=i + 1) cset_str(axis, xval[i]) gen.waitfor(seconds=1) gen.waitfor_move() gfrm = gen.get_frames() gen.resume() gen.waitfor(frames=gfrm + frms) gen.pause() a1 = gen.get_spectrum(1, i + 1) msig = sum(a1['signal']) * 100.0 mesig = (math.sqrt(msig)) print "msig=" + str(msig) + " mesig=" + str(mesig) # get the interesting monitor if usem4 < 1: a1 = gen.get_spectrum(11, i + 1) sig = sum(a1['signal']) * 100.0 a1 = gen.get_spectrum(12, i + 1) sig += sum(a1['signal']) * 100.0 esig = math.sqrt(sig) else: a1 = gen.get_spectrum(4, i + 1) sig = sum(a1['signal']) * 100.0 esig = math.sqrt(sig) print "sig=" + str(sig) + " esig=" + str(esig) yval[i] = (sig / msig) eval[i] = (math.sqrt((sig / (msig * msig)) + (sig * sig / (msig * msig * msig)))) print "yval=" + str(yval[i]) + " esig=" + str(eval[i]) ax.errorbar(xval[i], yval[i], eval[i], fmt='ko') fig1.canvas.draw() mpl.pause(0.001) f.open('u:/users/Larmor/lastscan.csv', 'w') s = str(xval[i]) + ',' + str(yval[i]) + ',' + str(eval[i]) + '\n' f.write(s) f.close() gen.abort() #f.open('u:/users/Larmor/lastscan.csv','w') #for i in range(npoints): # s=str(xval[i])+','+str(yval[i])+','+str(eval[i])+'\n' # f.write(s) #f.close() '''
def polscan_axis(axis, startval, endval, npoints, frms, rtitle): lm.setuplarmor_nrscanning() gen.change(title=rtitle) gen.change(nperiods=npoints * 2) gen.begin(paused=1) # setup the scan arrays and figure xval = np.zeros(npoints) yval = np.zeros(npoints) eval = np.zeros(npoints) stepsize = (endval - startval) / float(npoints - 1) for i in range(npoints): xval[i] = (startval + i * stepsize) mpl.ion() fig1 = mpl.figure(1) mpl.clf() ax = mpl.subplot(111) #ax.set_xlim((0,4)) ax.set_xlabel(axis) ax.set_ylabel('Normalised Neutron counts') # reasonable x-Axis, necessary to get the full window from the first datapoint scanrange = np.absolute(endval - startval) mpl.xlim((startval - scanrange * 0.05, endval + scanrange * 0.05)) mpl.draw() mpl.pause(0.001) flipper1(1) for i in range(npoints): gen.change(period=(i * 2) + 1) cset_str(axis, xval[i]) flipper2(0) gen.waitfor_move() gfrm = gen.get_frames() resume() gen.waitfor(frames=gfrm + frms) pause() flipper2(1) gen.change(period=(i * 2) + 2) gfrm = gen.get_frames() resume() gen.waitfor(frames=gfrm + frms) pause() a1 = gen.get_spectrum(1, (i * 2) + 1) msigup = sum(a1['signal']) * 100.0 mesigup = (sqrt(msigup)) # get the interesting monitor a1 = gen.get_spectrum(11, (i * 2) + 1) sigup = sum(a1['signal']) * 100.0 a1 = gen.get_spectrum(12, (i * 2) + 1) sigup += sum(a1['signal']) * 100.0 esigup = sqrt(sigup) a1 = gen.get_spectrum(1, (i * 2) + 2) msigdo = sum(a1['signal']) * 100.0 mesigdo = (sqrt(msigdo)) # get the interesting monitor a1 = gen.get_spectrum(11, (i * 2) + 2) sigdo = sum(a1['signal']) * 100.0 a1 = gen.get_spectrum(12, (i * 2) + 2) sigdo += sum(a1['signal']) * 100.0 esigdo = sqrt(sigdo) yval[i] = (sigup - sigdo) / (sigup + sigdo) eval[i] = yval[i] * 1e-3 #eval[i]=(sqrt((sig/(msig*msig))+(sig*sig/(msig*msig*msig)))) ax.errorbar(xval[i], yval[i], eval[i], fmt='ko') fig1.canvas.draw() mpl.pause(0.001) abort()
def scan_axis_mantid(axis, startval, endval, npoints, frms, rtitle, usem4=0): lm.setuplarmor_nrscanning() gen.change(title=rtitle) gen.change(nperiods=npoints) gen.begin(paused=1) # setup the scan arrays and figure xval = np.zeros(npoints) yval = np.zeros(npoints) eval = np.zeros(npoints) stepsize = (endval - startval) / float(npoints - 1) for i in range(npoints): xval[i] = (startval + i * stepsize) gui_cmd(mpl.ion) fig1 = gui_cmd(mpl.figure, 1) gui_cmd(mpl.clf) ax = gui_cmd(mpl.subplot, 111) #ax.set_xlim((0,4)) gui_cmd(ax.set_xlabel, axis) gui_cmd(ax.set_ylabel, 'Normalised Neutron counts') # reasonable x-Axis, necessary to get the full window from the first datapoint scanrange = np.absolute(endval - startval) gui_cmd(mpl.xlim, (startval - scanrange * 0.05, endval + scanrange * 0.05)) gui_cmd(mpl.draw) gui_cmd(mpl.pause, 0.001) for i in range(npoints): gen.change(period=i + 1) cset_str(axis, xval[i]) sleep(15) #gen.waitfor_move() gfrm = gen.get_frames() gen.resume() gen.waitfor(frames=gfrm + frms) gen.pause() a1 = gen.get_spectrum(1, i + 1) msig = sum(a1['signal']) * 100.0 mesig = (math.sqrt(msig)) print "msig=" + str(msig) + " mesig=" + str(mesig) # get the interesting monitor if usem4 < 1: a1 = gen.get_spectrum(11, i + 1) sig = sum(a1['signal']) * 100.0 a1 = gen.get_spectrum(12, i + 1) sig += sum(a1['signal']) * 100.0 esig = math.sqrt(sig) else: a1 = gen.get_spectrum(4, i + 1) sig = sum(a1['signal']) * 100.0 esig = math.sqrt(sig) print "sig=" + str(sig) + " esig=" + str(esig) yval[i] = (sig / msig) eval[i] = (math.sqrt((sig / (msig * msig)) + (sig * sig / (msig * msig * msig)))) print "yval=" + str(yval[i]) + " esig=" + str(eval[i]) gui_cmd(ax.errorbar, xval[i], yval[i], eval[i], fmt='ko') gui_cmd(fig1.canvas.draw) gui_cmd(mpl.pause, 0.001) gen.abort()