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()
Example #3
0
	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()
Example #6
0
	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
Example #11
0
	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()