def cleanFittingValues(self): self.long_Twiss_z2_zzp_zp2_err = [0.,0.,0] self.long_Twiss_arr_err = [0.,0.,0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper,amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss()
def cleanFittingValues(self): self.long_Twiss_z2_zzp_zp2_err = [0., 0., 0] self.long_Twiss_arr_err = [0., 0., 0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper, amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss()
def calculateDiff2(self): if(self.eKin == 0.): return 0. tr_twiss_analysis_controller = self.linac_wizard_document.tr_twiss_analysis_controller fit_param_index = tr_twiss_analysis_controller.fit_param_index accStatesKeeper = tr_twiss_analysis_controller.accStatesKeeper #--- set up initial Twiss twiss_arr = [] twiss = self.twiss_arr[0] twiss_arr.append(Twiss(twiss.getAlpha(),twiss.getBeta(),twiss.getEmittance()*1.0e-6)) twiss = self.twiss_arr[1] twiss_arr.append(Twiss(twiss.getAlpha(),twiss.getBeta(),twiss.getEmittance()*1.0e-6)) twiss = self.twiss_arr[2] twiss_arr.append(Twiss(twiss.getAlpha(),twiss.getBeta(),twiss.getEmittance()*1.0e-6)) diff2 = 0. n_ws_points = 0. for accState in accStatesKeeper.getAccStatesArr(): if(accState.isOn): probe = EnvelopeProbe(accState.design_probe) probe.setKineticEnergy(self.eKin*1.0e+6) probe.setBeamCurrent(self.current*0.001) probe.setBunchFrequency(402.5e+6) probe.initFromTwiss(twiss_arr) accState.scenario.setProbe(probe) accState.scenario.resyncFromCache() accState.scenario.run() accState.traj = accState.scenario.getTrajectory() for size_record in accState.size_hor_record_arr: if(not size_record.isOn): continue n_ws_points += 1 size = size_record.gauss_sigma if(fit_param_index == 1): size = size_record.custom_gauss_sigma if(fit_param_index == 2): size = size_record.custom_rms_sigma pos = size_record.pos ws_node = size_record.ws_node probe_state = accState.traj.stateForElement(ws_node.getId()) size_theory = probe_state.twissParameters()[0].getEnvelopeRadius()*1000. diff2 += (size_theory - size)**2 #print "debug hor ws=",ws_node.getId()," size=",size," size_theory=",size_theory for size_record in accState.size_ver_record_arr: if(not size_record.isOn): continue n_ws_points += 1 size = size_record.gauss_sigma if(fit_param_index == 1): size = size_record.custom_gauss_sigma if(fit_param_index == 2): size = size_record.custom_rms_sigma pos = size_record.pos ws_node = size_record.ws_node probe_state = accState.traj.stateForElement(ws_node.getId()) size_theory = probe_state.twissParameters()[1].getEnvelopeRadius()*1000. diff2 += (size_theory - size)**2 #print "debug ver ws=",ws_node.getId()," size=",size," size_theory=",size_theory if(n_ws_points > 0): diff2 /= n_ws_points if(diff2 != diff2): return 0. return diff2
def clean(self): self.isReady = false self.long_Twiss_z2_zzp_zp2_err = [0.,0.,0] self.long_Twiss_arr_err = [0.,0.,0] self.long_Twiss_arr_steps = [0.,0.,0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper,amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.twiss_arr = [Twiss(),Twiss(),Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss()
def __init__(self,cav_wrapper): self.cav_wrapper = cav_wrapper self.twiss_arr = [Twiss(),Twiss(),Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() self.long_Twiss_z2_zzp_zp2_err = [0.,0.,0] #---- alpha, beta, and emittance errors self.long_Twiss_arr_err = [0.,0.,0] #---- alpha, beta, and emittance steps self.long_Twiss_arr_steps = [0.,0.,0] self.fit_bpm_amp_avg_err = 0. self.isReady = false self.update()
def actionPerformed(self,actionEvent): tr_twiss_analysis_controller = self.linac_wizard_document.tr_twiss_analysis_controller transverse_twiss_fitting_controller = tr_twiss_analysis_controller.transverse_twiss_fitting_controller initial_twiss_params_holder = transverse_twiss_fitting_controller.initial_twiss_params_holder (alphaX, betaX, emittX) = initial_twiss_params_holder.getParams(0) (alphaY, betaY, emittY) = initial_twiss_params_holder.getParams(1) (alphaZ, betaZ, emittZ) = initial_twiss_params_holder.getParams(2) if(emittX == 0. or emittY == 0. or emittZ == 0.): return twiss_arr = [] twiss_arr.append(Twiss(alphaX, betaX, emittX)) twiss_arr.append(Twiss(alphaY, betaY, emittY)) twiss_arr.append(Twiss(alphaZ, betaZ, emittZ)) scorer = AccScoreCalculator(self.linac_wizard_document,null,twiss_arr) scorer.count = 0 scorer.min_diff2 = scorer.calculateDiff2() scorer.updateGUI_Elements() scorer.runErrorsCalculator()
def clean(self): self.isReady = false self.long_Twiss_z2_zzp_zp2_err = [0., 0., 0] self.long_Twiss_arr_err = [0., 0., 0] self.long_Twiss_arr_steps = [0., 0., 0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper, amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.twiss_arr = [Twiss(), Twiss(), Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss()
def __init__(self, cav_wrapper): self.cav_wrapper = cav_wrapper self.twiss_arr = [Twiss(), Twiss(), Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() self.long_Twiss_z2_zzp_zp2_err = [0., 0., 0] #---- alpha, beta, and emittance errors self.long_Twiss_arr_err = [0., 0., 0] #---- alpha, beta, and emittance steps self.long_Twiss_arr_steps = [0., 0., 0] self.fit_bpm_amp_avg_err = 0. self.isReady = false self.update()
class Long_Twiss_Bucket: def __init__(self, cav_wrapper): self.cav_wrapper = cav_wrapper self.twiss_arr = [Twiss(), Twiss(), Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() self.long_Twiss_z2_zzp_zp2_err = [0., 0., 0] #---- alpha, beta, and emittance errors self.long_Twiss_arr_err = [0., 0., 0] #---- alpha, beta, and emittance steps self.long_Twiss_arr_steps = [0., 0., 0] self.fit_bpm_amp_avg_err = 0. self.isReady = false self.update() def update(self): self.bpm_amp_plotTh_arr = [] for bpm_wrapper in self.cav_wrapper.bpm_wrappers: amp_plotTh = BasicGraphData() amp_plotTh.setDrawPointsOn(false) amp_plotTh.setGraphColor(Color.RED) amp_plotTh.setLineThick(3) amp_plotTh.setGraphProperty( GRAPH_LEGEND_KEY, "Cav: " + self.cav_wrapper.alias + " BPM: " + bpm_wrapper.alias) self.bpm_amp_plotTh_arr.append([bpm_wrapper, amp_plotTh]) def clean(self): self.isReady = false self.long_Twiss_z2_zzp_zp2_err = [0., 0., 0] self.long_Twiss_arr_err = [0., 0., 0] self.long_Twiss_arr_steps = [0., 0., 0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper, amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.twiss_arr = [Twiss(), Twiss(), Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() def cleanFittingValues(self): self.long_Twiss_z2_zzp_zp2_err = [0., 0., 0] self.long_Twiss_arr_err = [0., 0., 0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper, amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() def writeDataToXML(self, root_da): cav_long_twiss_bucket_da = root_da.createChild( "Cavity_Long_Twiss_Bucket") cav_long_twiss_bucket_da.setValue("cav", self.cav_wrapper.alias) cav_long_twiss_bucket_da.setValue("isReady", self.isReady) cav_long_twiss_bucket_da.setValue("amp_avg_fit_err", self.fit_bpm_amp_avg_err) twiss_arr_da = cav_long_twiss_bucket_da.createChild("Twiss_arr") twiss_arr = self.twiss_arr [alphaX, betaX, emittX] = [ twiss_arr[0].getAlpha(), twiss_arr[0].getBeta(), twiss_arr[0].getEmittance() ] [alphaY, betaY, emittY] = [ twiss_arr[1].getAlpha(), twiss_arr[1].getBeta(), twiss_arr[1].getEmittance() ] [alphaZ, betaZ, emittZ] = [ twiss_arr[2].getAlpha(), twiss_arr[2].getBeta(), twiss_arr[2].getEmittance() ] twiss_arr_da.setValue("alphaX", alphaX) twiss_arr_da.setValue("betaX", betaX) twiss_arr_da.setValue("emittX", emittX) twiss_arr_da.setValue("alphaY", alphaY) twiss_arr_da.setValue("betaY", betaY) twiss_arr_da.setValue("emittY", emittY) twiss_arr_da.setValue("alphaZ", alphaZ) twiss_arr_da.setValue("betaZ", betaZ) twiss_arr_da.setValue("emittZ", emittZ) twiss_arr_da.setValue("alphaZ_err", self.long_Twiss_arr_err[0]) twiss_arr_da.setValue("betaZ_err", self.long_Twiss_arr_err[1]) twiss_arr_da.setValue("emittZ_err", self.long_Twiss_arr_err[2]) twiss_arr_da.setValue("alphaZ_steps", self.long_Twiss_arr_steps[0]) twiss_arr_da.setValue("betaZ_steps", self.long_Twiss_arr_steps[1]) twiss_arr_da.setValue("emittZ_steps", self.long_Twiss_arr_steps[2]) twiss_fit_da = cav_long_twiss_bucket_da.createChild("Twiss_fit") twiss_fit_da.setValue("alphaZ", self.long_Twiss_fit.getAlpha()) twiss_fit_da.setValue("betaZ", self.long_Twiss_fit.getBeta()) twiss_fit_da.setValue("emittZ", self.long_Twiss_fit.getEmittance()) twiss_matrix_da = cav_long_twiss_bucket_da.createChild("Twiss_matrix") twiss_matrix_da.setValue("alphaZ", self.long_Twiss_matrix.getAlpha()) twiss_matrix_da.setValue("betaZ", self.long_Twiss_matrix.getBeta()) twiss_matrix_da.setValue("emittZ", self.long_Twiss_matrix.getEmittance()) twiss_matrix_da.setValue("z2_err", self.long_Twiss_z2_zzp_zp2_err[0]) twiss_matrix_da.setValue("z_zp_err", self.long_Twiss_z2_zzp_zp2_err[1]) twiss_matrix_da.setValue("z2_err", self.long_Twiss_z2_zzp_zp2_err[2]) bpm_amps_da = cav_long_twiss_bucket_da.createChild("BPM_Amplitudes") for [bpm_wrapper, amp_plotTh] in self.bpm_amp_plotTh_arr: if (amp_plotTh.getNumbOfPoints() > 0): bpm_amp_da = bpm_amps_da.createChild("BPM") bpm_amp_da.setValue("BPM", bpm_wrapper.alias) dumpGraphDataToDA(amp_plotTh, bpm_amp_da, "BPM_AMPL_GD", "%10.5f", "%10.5f") def readDataFromXML(self, cav_long_twiss_bucket_da, scl_long_tuneup_controller): #------ read data for cavity from the XML stucture self.isReady = Boolean( cav_long_twiss_bucket_da.intValue("isReady")).booleanValue() self.fit_bpm_amp_avg_err = cav_long_twiss_bucket_da.doubleValue( "amp_avg_fit_err") twiss_arr_da = cav_long_twiss_bucket_da.childAdaptor("Twiss_arr") alphaX = twiss_arr_da.doubleValue("alphaX") betaX = twiss_arr_da.doubleValue("betaX") emittX = twiss_arr_da.doubleValue("emittX") alphaY = twiss_arr_da.doubleValue("alphaY") betaY = twiss_arr_da.doubleValue("betaY") emittY = twiss_arr_da.doubleValue("emittY") alphaZ = twiss_arr_da.doubleValue("alphaZ") betaZ = twiss_arr_da.doubleValue("betaZ") emittZ = twiss_arr_da.doubleValue("emittZ") self.twiss_arr[0].setTwiss(alphaX, betaX, emittX) self.twiss_arr[1].setTwiss(alphaY, betaY, emittY) self.twiss_arr[2].setTwiss(alphaZ, betaZ, emittZ) self.long_Twiss_arr_err[0] = twiss_arr_da.doubleValue("alphaZ_err") self.long_Twiss_arr_err[1] = twiss_arr_da.doubleValue("betaZ_err") self.long_Twiss_arr_err[2] = twiss_arr_da.doubleValue("emittZ_err") self.long_Twiss_arr_steps[0] = twiss_arr_da.doubleValue("alphaZ_steps") self.long_Twiss_arr_steps[1] = twiss_arr_da.doubleValue("betaZ_steps") self.long_Twiss_arr_steps[2] = twiss_arr_da.doubleValue("emittZ_steps") twiss_fit_da = cav_long_twiss_bucket_da.childAdaptor("Twiss_fit") alphaZ = twiss_fit_da.doubleValue("alphaZ") betaZ = twiss_fit_da.doubleValue("betaZ") emittZ = twiss_fit_da.doubleValue("emittZ") self.long_Twiss_fit.setTwiss(alphaZ, betaZ, emittZ) twiss_matrix_da = cav_long_twiss_bucket_da.childAdaptor("Twiss_matrix") alphaZ = twiss_matrix_da.doubleValue("alphaZ") betaZ = twiss_matrix_da.doubleValue("betaZ") emittZ = twiss_matrix_da.doubleValue("emittZ") self.long_Twiss_matrix.setTwiss(alphaZ, betaZ, emittZ) self.long_Twiss_z2_zzp_zp2_err[0] = twiss_matrix_da.doubleValue( "z2_err") self.long_Twiss_z2_zzp_zp2_err[1] = twiss_matrix_da.doubleValue( "z_zp_err") self.long_Twiss_z2_zzp_zp2_err[2] = twiss_matrix_da.doubleValue( "z2_err") #---- clean up and read the amp graphs self.update() bpm_amps_da = cav_long_twiss_bucket_da.childAdaptor("BPM_Amplitudes") for bpm_amp_da in bpm_amps_da.childAdaptors("BPM"): bpm_wrapper = scl_long_tuneup_controller.getBPM_Wrapper( bpm_amp_da.stringValue("BPM")) for [bpm_wrapper_tmp, amp_plotTh] in self.bpm_amp_plotTh_arr: if (bpm_wrapper_tmp == bpm_wrapper): readGraphDataFromDA(amp_plotTh, bpm_amp_da, "BPM_AMPL_GD") break
class Long_Twiss_Bucket: def __init__(self,cav_wrapper): self.cav_wrapper = cav_wrapper self.twiss_arr = [Twiss(),Twiss(),Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() self.long_Twiss_z2_zzp_zp2_err = [0.,0.,0] #---- alpha, beta, and emittance errors self.long_Twiss_arr_err = [0.,0.,0] #---- alpha, beta, and emittance steps self.long_Twiss_arr_steps = [0.,0.,0] self.fit_bpm_amp_avg_err = 0. self.isReady = false self.update() def update(self): self.bpm_amp_plotTh_arr = [] for bpm_wrapper in self.cav_wrapper.bpm_wrappers: amp_plotTh = BasicGraphData() amp_plotTh.setDrawPointsOn(false) amp_plotTh.setGraphColor(Color.RED) amp_plotTh.setLineThick(3) amp_plotTh.setGraphProperty(GRAPH_LEGEND_KEY,"Cav: "+self.cav_wrapper.alias+" BPM: "+bpm_wrapper.alias) self.bpm_amp_plotTh_arr.append([bpm_wrapper,amp_plotTh]) def clean(self): self.isReady = false self.long_Twiss_z2_zzp_zp2_err = [0.,0.,0] self.long_Twiss_arr_err = [0.,0.,0] self.long_Twiss_arr_steps = [0.,0.,0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper,amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.twiss_arr = [Twiss(),Twiss(),Twiss()] self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() def cleanFittingValues(self): self.long_Twiss_z2_zzp_zp2_err = [0.,0.,0] self.long_Twiss_arr_err = [0.,0.,0] self.fit_bpm_amp_avg_err = 0. for [bpm_wrapper,amp_plotTh] in self.bpm_amp_plotTh_arr: amp_plotTh.removeAllPoints() self.long_Twiss_fit = Twiss() self.long_Twiss_matrix = Twiss() def writeDataToXML(self,root_da): cav_long_twiss_bucket_da = root_da.createChild("Cavity_Long_Twiss_Bucket") cav_long_twiss_bucket_da.setValue("cav",self.cav_wrapper.alias) cav_long_twiss_bucket_da.setValue("isReady",self.isReady) cav_long_twiss_bucket_da.setValue("amp_avg_fit_err",self.fit_bpm_amp_avg_err) twiss_arr_da = cav_long_twiss_bucket_da.createChild("Twiss_arr") twiss_arr = self.twiss_arr [alphaX,betaX,emittX] = [twiss_arr[0].getAlpha(),twiss_arr[0].getBeta(),twiss_arr[0].getEmittance()] [alphaY,betaY,emittY] = [twiss_arr[1].getAlpha(),twiss_arr[1].getBeta(),twiss_arr[1].getEmittance()] [alphaZ,betaZ,emittZ] = [twiss_arr[2].getAlpha(),twiss_arr[2].getBeta(),twiss_arr[2].getEmittance()] twiss_arr_da.setValue("alphaX",alphaX) twiss_arr_da.setValue("betaX",betaX) twiss_arr_da.setValue("emittX",emittX) twiss_arr_da.setValue("alphaY",alphaY) twiss_arr_da.setValue("betaY",betaY) twiss_arr_da.setValue("emittY",emittY) twiss_arr_da.setValue("alphaZ",alphaZ) twiss_arr_da.setValue("betaZ",betaZ) twiss_arr_da.setValue("emittZ",emittZ) twiss_arr_da.setValue("alphaZ_err",self.long_Twiss_arr_err[0]) twiss_arr_da.setValue("betaZ_err",self.long_Twiss_arr_err[1]) twiss_arr_da.setValue("emittZ_err",self.long_Twiss_arr_err[2]) twiss_arr_da.setValue("alphaZ_steps",self.long_Twiss_arr_steps[0]) twiss_arr_da.setValue("betaZ_steps",self.long_Twiss_arr_steps[1]) twiss_arr_da.setValue("emittZ_steps",self.long_Twiss_arr_steps[2]) twiss_fit_da = cav_long_twiss_bucket_da.createChild("Twiss_fit") twiss_fit_da.setValue("alphaZ",self.long_Twiss_fit.getAlpha()) twiss_fit_da.setValue("betaZ",self.long_Twiss_fit.getBeta()) twiss_fit_da.setValue("emittZ",self.long_Twiss_fit.getEmittance()) twiss_matrix_da = cav_long_twiss_bucket_da.createChild("Twiss_matrix") twiss_matrix_da.setValue("alphaZ",self.long_Twiss_matrix.getAlpha()) twiss_matrix_da.setValue("betaZ",self.long_Twiss_matrix.getBeta()) twiss_matrix_da.setValue("emittZ",self.long_Twiss_matrix.getEmittance()) twiss_matrix_da.setValue("z2_err",self.long_Twiss_z2_zzp_zp2_err[0]) twiss_matrix_da.setValue("z_zp_err",self.long_Twiss_z2_zzp_zp2_err[1]) twiss_matrix_da.setValue("z2_err",self.long_Twiss_z2_zzp_zp2_err[2]) bpm_amps_da = cav_long_twiss_bucket_da.createChild("BPM_Amplitudes") for [bpm_wrapper,amp_plotTh] in self.bpm_amp_plotTh_arr: if(amp_plotTh.getNumbOfPoints() > 0): bpm_amp_da = bpm_amps_da.createChild("BPM") bpm_amp_da.setValue("BPM",bpm_wrapper.alias) dumpGraphDataToDA(amp_plotTh,bpm_amp_da,"BPM_AMPL_GD","%10.5f","%10.5f") def readDataFromXML(self,cav_long_twiss_bucket_da,scl_long_tuneup_controller): #------ read data for cavity from the XML stucture self.isReady = Boolean(cav_long_twiss_bucket_da.intValue("isReady")).booleanValue() self.fit_bpm_amp_avg_err = cav_long_twiss_bucket_da.doubleValue("amp_avg_fit_err") twiss_arr_da = cav_long_twiss_bucket_da.childAdaptor("Twiss_arr") alphaX = twiss_arr_da.doubleValue("alphaX") betaX = twiss_arr_da.doubleValue("betaX") emittX = twiss_arr_da.doubleValue("emittX") alphaY = twiss_arr_da.doubleValue("alphaY") betaY = twiss_arr_da.doubleValue("betaY") emittY = twiss_arr_da.doubleValue("emittY") alphaZ = twiss_arr_da.doubleValue("alphaZ") betaZ = twiss_arr_da.doubleValue("betaZ") emittZ = twiss_arr_da.doubleValue("emittZ") self.twiss_arr[0].setTwiss(alphaX,betaX,emittX) self.twiss_arr[1].setTwiss(alphaY,betaY,emittY) self.twiss_arr[2].setTwiss(alphaZ,betaZ,emittZ) self.long_Twiss_arr_err[0] = twiss_arr_da.doubleValue("alphaZ_err") self.long_Twiss_arr_err[1] = twiss_arr_da.doubleValue("betaZ_err") self.long_Twiss_arr_err[2] = twiss_arr_da.doubleValue("emittZ_err") self.long_Twiss_arr_steps[0] = twiss_arr_da.doubleValue("alphaZ_steps") self.long_Twiss_arr_steps[1] = twiss_arr_da.doubleValue("betaZ_steps") self.long_Twiss_arr_steps[2] = twiss_arr_da.doubleValue("emittZ_steps") twiss_fit_da = cav_long_twiss_bucket_da.childAdaptor("Twiss_fit") alphaZ = twiss_fit_da.doubleValue("alphaZ") betaZ = twiss_fit_da.doubleValue("betaZ") emittZ = twiss_fit_da.doubleValue("emittZ") self.long_Twiss_fit.setTwiss(alphaZ,betaZ,emittZ) twiss_matrix_da = cav_long_twiss_bucket_da.childAdaptor("Twiss_matrix") alphaZ = twiss_matrix_da.doubleValue("alphaZ") betaZ = twiss_matrix_da.doubleValue("betaZ") emittZ = twiss_matrix_da.doubleValue("emittZ") self.long_Twiss_matrix.setTwiss(alphaZ,betaZ,emittZ) self.long_Twiss_z2_zzp_zp2_err[0] =twiss_matrix_da.doubleValue("z2_err") self.long_Twiss_z2_zzp_zp2_err[1] =twiss_matrix_da.doubleValue("z_zp_err") self.long_Twiss_z2_zzp_zp2_err[2] =twiss_matrix_da.doubleValue("z2_err") #---- clean up and read the amp graphs self.update() bpm_amps_da = cav_long_twiss_bucket_da.childAdaptor("BPM_Amplitudes") for bpm_amp_da in bpm_amps_da.childAdaptors("BPM"): bpm_wrapper = scl_long_tuneup_controller.getBPM_Wrapper(bpm_amp_da.stringValue("BPM")) for [bpm_wrapper_tmp,amp_plotTh] in self.bpm_amp_plotTh_arr: if(bpm_wrapper_tmp == bpm_wrapper): readGraphDataFromDA(amp_plotTh,bpm_amp_da,"BPM_AMPL_GD") break
def run(self): tr_twiss_analysis_controller = self.linac_wizard_document.tr_twiss_analysis_controller transverse_twiss_fitting_controller = tr_twiss_analysis_controller.transverse_twiss_fitting_controller init_and_fit_params_controller = transverse_twiss_fitting_controller.init_and_fit_params_controller initial_twiss_params_holder = transverse_twiss_fitting_controller.initial_twiss_params_holder final_twiss_params_holder = init_and_fit_params_controller.final_twiss_params_holder nIterations = int(init_and_fit_params_controller.fit_iter_text.getValue()) #print "debug Twiss_Fitter start to run! Iter=",nIterations (alphaX, betaX, emittX) = initial_twiss_params_holder.getParams(0) (alphaY, betaY, emittY) = initial_twiss_params_holder.getParams(1) (alphaZ, betaZ, emittZ) = initial_twiss_params_holder.getParams(2) twiss_arr = [] twiss_arr.append(Twiss(alphaX, betaX, emittX)) twiss_arr.append(Twiss(alphaY, betaY, emittY)) twiss_arr.append(Twiss(alphaZ, betaZ, emittZ)) (alphaXStep, betaXStep, emittXStep) = initial_twiss_params_holder.getParamsStep(0) (alphaYStep, betaYStep, emittYStep) = initial_twiss_params_holder.getParamsStep(1) (alphaZStep, betaZStep, emittZStep) = initial_twiss_params_holder.getParamsStep(2) variables = ArrayList() variables.add(Variable("alphaX", alphaX, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("betaX", betaX, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("emittX", emittX, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("alphaY", alphaY, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("betaY", betaY, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("emittY", emittY, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("alphaZ", alphaZ, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("betaZ", betaZ, - Double.MAX_VALUE, Double.MAX_VALUE)) variables.add(Variable("emittZ", emittZ, - Double.MAX_VALUE, Double.MAX_VALUE)) delta_hint = InitialDelta() variables_fit = ArrayList() #---------- X if(alphaXStep != 0.): variables_fit.add(variables.get(0)) delta_hint.addInitialDelta(variables.get(0), alphaXStep) if(betaXStep != 0.): variables_fit.add(variables.get(1)) delta_hint.addInitialDelta(variables.get(1), betaXStep) if(emittXStep != 0.): variables_fit.add(variables.get(2)) delta_hint.addInitialDelta(variables.get(2), emittXStep) #---------- Y if(alphaYStep != 0.): variables_fit.add(variables.get(3)) delta_hint.addInitialDelta(variables.get(3), alphaYStep) if(betaYStep != 0.): variables_fit.add(variables.get(4)) delta_hint.addInitialDelta(variables.get(4), betaYStep) if(emittYStep != 0.): variables_fit.add(variables.get(5)) delta_hint.addInitialDelta(variables.get(5), emittYStep) #---------- Z if(alphaZStep != 0.): variables_fit.add(variables.get(6)) delta_hint.addInitialDelta(variables.get(6), alphaZStep) if(betaZStep != 0.): variables_fit.add(variables.get(7)) delta_hint.addInitialDelta(variables.get(7), betaZStep) if(emittZStep != 0.): variables_fit.add(variables.get(8)) delta_hint.addInitialDelta(variables.get(8), emittZStep) #------- fitting process with solver if(variables_fit.isEmpty()): return scorer = AccScoreCalculator(self.linac_wizard_document,variables,twiss_arr) maxSolutionStopper = SolveStopperFactory.maxEvaluationsStopper(nIterations) solver = Solver(SimplexSearchAlgorithm(),maxSolutionStopper) self.solver = solver problem = ProblemFactory.getInverseSquareMinimizerProblem(variables_fit,scorer,0.001) problem.addHint(delta_hint) solver.solve(problem) #------- get results trial = solver.getScoreBoard().getBestSolution() scorer.trialToTwiss(trial) twiss_arr = scorer.getTwissArr() (alphaX, betaX, emittX) = (twiss_arr[0].getAlpha(),twiss_arr[0].getBeta(),twiss_arr[0].getEmittance()) (alphaY, betaY, emittY) = (twiss_arr[1].getAlpha(),twiss_arr[1].getBeta(),twiss_arr[1].getEmittance()) (alphaZ, betaZ, emittZ) = (twiss_arr[2].getAlpha(),twiss_arr[2].getBeta(),twiss_arr[2].getEmittance()) final_twiss_params_holder.setParams(0,alphaX, betaX, emittX) final_twiss_params_holder.setParams(1,alphaY, betaY, emittY) final_twiss_params_holder.setParams(2,alphaZ, betaZ, emittZ) init_and_fit_params_controller.finalTwiss_table.getModel().fireTableDataChanged() init_and_fit_params_controller.fit_iter_left_text.setValue(0.) scorer.setUpLastNode(false) scorer.calculateDiff2()