コード例 #1
0
    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)
コード例 #2
0
 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."
コード例 #3
0
    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)
コード例 #4
0
 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)
コード例 #5
0
    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
コード例 #6
0
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()
    '''
コード例 #7
0
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()
        
コード例 #8
0
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()
コード例 #9
0
 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()
コード例 #10
0
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()
    '''
コード例 #11
0
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()
コード例 #12
0
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()