def measDispersion(self): p = ApMdiSubPlot(live=False) p.setAttribute(Qt.WA_DeleteOnClose) curves = [ p.aplot.curve1, p.aplot.addCurve(), # x and xref p.aplot.addCurve(), p.aplot.addCurve() # y and yref ] for curv in curves: curv.setStyle(Qwt.QwtPlotCurve.Lines) curves[0].setPen(QPen(Qt.red, 1.3, Qt.DashLine)) curves[1].setPen(QPen(Qt.red, 1.5)) curves[2].setPen(QPen(Qt.blue, 1.3, Qt.DashLine)) curves[3].setPen(QPen(Qt.blue, 1.5)) curves[2].setSymbol( Qwt.QwtSymbol(Qwt.QwtSymbol.Triangle, QBrush(Qt.blue), QPen(Qt.black, 1), QSize(8, 8))) #p.aplot.curve1.setStyle(Qwt.QwtPlotCurve.) #p.setWindowTitle("[%s.%s] %s %s" % (mach, lat, title, fld)) self.mdiarea.addSubWindow(p) #print "Show" p.show() #plots.append(p) #bpms = ap.getGroupMembers(['C20', 'BPM']) + \ # ap.getGroupMembers(['C21', 'BPM']) bpms = ap.getElements('BPM') xl = min([q.sb for q in bpms]) xr = max([q.se for q in bpms]) s, btx, bty = [], [], [] try: etaref = ap.getEta([q.name for q in bpms], spos=True) curves[1].setData(etaref[:, -1], etaref[:, 0], None) curves[3].setData(etaref[:, -1], etaref[:, 1], None) fullmagprof = ap.machines.getLattice().getBeamlineProfile() magprof = [v for v in fullmagprof if max(v[0]) > xl \ and min(v[0]) < xr] p.aplot.setMagnetProfile(magprof) #p.wid.autoScaleXY() p.aplot.replot() disp = ap.measDispersion(bpms, verbose=2) curves[0].setData(disp[:, -1], disp[:, 0], None) curves[2].setData(disp[:, -1], disp[:, 1], None) p.wid.autoScaleXY() p.aplot.replot() _logger.info("dispersion eta measured") except: _logger.error("error at measEta") raise _logger.info("finished eta measurement.")
def measDispersion(self): p = ApMdiSubPlot(live=False) p.setAttribute(Qt.WA_DeleteOnClose) curves = [p.aplot.curve1, p.aplot.addCurve(), # x and xref p.aplot.addCurve(), p.aplot.addCurve() # y and yref ] for curv in curves: curv.setStyle(Qwt.QwtPlotCurve.Lines) curves[0].setPen(QPen(Qt.red, 1.3, Qt.DashLine)) curves[1].setPen(QPen(Qt.red, 1.5)) curves[2].setPen(QPen(Qt.blue, 1.3, Qt.DashLine)) curves[3].setPen(QPen(Qt.blue, 1.5)) curves[2].setSymbol(Qwt.QwtSymbol(Qwt.QwtSymbol.Triangle, QBrush(Qt.blue), QPen(Qt.black, 1), QSize(8, 8))) #p.aplot.curve1.setStyle(Qwt.QwtPlotCurve.) #p.setWindowTitle("[%s.%s] %s %s" % (mach, lat, title, fld)) self.mdiarea.addSubWindow(p) #print "Show" p.show() #plots.append(p) #bpms = ap.getGroupMembers(['C20', 'BPM']) + \ # ap.getGroupMembers(['C21', 'BPM']) bpms = ap.getElements('BPM') xl = min([q.sb for q in bpms]) xr = max([q.se for q in bpms]) s, btx, bty = [], [], [] try: etaref = ap.getEta([q.name for q in bpms], spos=True) curves[1].setData(etaref[:,-1], etaref[:,0], None) curves[3].setData(etaref[:,-1], etaref[:,1], None) fullmagprof = ap.machines.getLattice().getBeamlineProfile() magprof = [v for v in fullmagprof if max(v[0]) > xl \ and min(v[0]) < xr] p.aplot.setMagnetProfile(magprof) #p.wid.autoScaleXY() p.aplot.replot() disp = ap.measDispersion(bpms, verbose=2) curves[0].setData(disp[:,-1], disp[:,0], None) curves[2].setData(disp[:,-1], disp[:,1], None) p.wid.autoScaleXY() p.aplot.replot() _logger.info("dispersion eta measured") except: _logger.error("error at measEta") raise _logger.info("finished eta measurement.")
def test_meas_dispersion_l2(self): eta = ap.measDispersion('p*c0[2-4]*') s, etax, etay = eta[:,-1], eta[:,0], eta[:,1] if PLOTTING: plt.clf() plt.plot(s, etax, '-x', label=r'$\eta_x$') plt.plot(s, etay, '-o', label=r'$\eta_y$') plt.legend(loc='upper right') plt.savefig(figname('test_twiss_dispersion_meas.png')) self.assertGreater(max(abs(etax)), 0.15) self.assertGreater(max(abs(etay)), 0.0) self.assertGreater(min(abs(s)), 0.0)