Exemplo n.º 1
0
	def fillOut_Arrays(self):
		bpms = self.scl_accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(BPM.s_strType))).andStatus(true))
		for bpm in bpms:
			#print "debug bpm=",bpm.getId()
			bpm_wrapper = BPM_Wrapper(bpm)
			bpm_wrapper.setPosition(self.scl_accSeq)
			self.bpm_wrappers.append(bpm_wrapper)
		rf_gaps = self.scl_accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		cavs = []
		for rf_gap in rf_gaps:
			cav = rf_gap.getParent()
			if((cav not in cavs) and cav.getStatus()):
				#print "debug cav=",cav.getId()				
				cavs.append(cav)
				cav_wrapper = SCL_Cavity_Wrapper(cav)
				cav_wrapper.setPosition(self.scl_accSeq)
				cav_wrapper.setUpBPM_Wrappers(self.bpm_wrappers,self)
				amp = cav.getDfltCavAmp()
				phase = cav.getDfltCavPhase()				
				cav_wrapper.initDesignAmp = amp
				cav_wrapper.initDesignPhase = phase
				cav_wrapper.designAmp = 0.
				cav_wrapper.designPhase = 0.
				if(amp < 0.1 ):
					cav_wrapper.isGood = false
				self.cav_wrappers.append(cav_wrapper)
		self.cav_wrappers[0].eKin_in = 185.6
		self.cav0_wrapper = SCL_Cavity_Wrapper(cavs[0])
		self.cav0_wrapper.alias = "AllOff"
		self.cav0_wrapper.setUpBPM_Wrappers(self.cav_wrappers[0].bpm_wrappers,self)
		self.cav0_wrapper.scanPhaseShift = 0.
	def actionPerformed(self,actionEvent):
		self.scl_long_tuneup_controller.getMessageTextField().setText("")	
		rightNow = Calendar.getInstance()
		date_format = SimpleDateFormat("MM.dd.yyyy")
		time_str = date_format.format(rightNow.getTime())				
		fc = JFileChooser(constants_lib.const_path_dict["XAL_XML_ACC_FILES_DIRS_PATH"])
		fc.setDialogTitle("Save SCL data into the SCL_new.xdxf file")
		fc.setApproveButtonText("Save")
		fl_filter = FileNameExtensionFilter("SCL Acc File",["xdxf",])
		fc.setFileFilter(fl_filter)
		fc.setSelectedFile(File("SCL_"+time_str+".xdxf"))		
		returnVal = fc.showOpenDialog(self.scl_long_tuneup_controller.linac_wizard_document.linac_wizard_window.frame)
		if(returnVal == JFileChooser.APPROVE_OPTION):
			fl_out = fc.getSelectedFile()
			fl_path = fl_out.getPath()
			if(fl_path.rfind(".xdxf") != (len(fl_path) - 5)):
				fl_out = File(fl_out.getPath()+".xdxf")	
			#---------prepare the XmlDataAdaptor 
			root_DA = XmlDataAdaptor.newEmptyDocumentAdaptor()
			scl_DA = root_DA.createChild("xdxf")	
			scl_DA.setValue("date",time_str)
			scl_DA.setValue("system","sns")
			scl_DA.setValue("version","2.0")
			#---- SCLMed	
			seq_name_arr = ["SCLMed","SCLHigh","HEBT1"]
			for seq_name in seq_name_arr:
				accl = self.scl_long_tuneup_controller.linac_wizard_document.accl
				seq = accl.findSequence(seq_name)
				cavs = seq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(SCLCavity.s_strType)))
				quads = seq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(Quadrupole.s_strType)))
				scl_seq_DA = scl_DA.createChild("sequence")
				scl_seq_DA.setValue("id",seq.getId())
				for quad in quads:
					node_DA = scl_seq_DA.createChild("node")
					node_DA.setValue("id",quad.getId())
					attr_DA = node_DA.createChild("attributes")
					field_DA = attr_DA.createChild("magnet")
					scl_quad_fields_dict_holder = self.scl_long_tuneup_controller.scl_long_tuneup_init_controller.scl_quad_fields_dict_holder
					field_DA.setValue("dfltMagFld",str(scl_quad_fields_dict_holder.quad_field_dict[quad]))
				for cav in cavs:
					node_DA = scl_seq_DA.createChild("sequence")
					node_DA.setValue("id",cav.getId())
					attr_DA = node_DA.createChild("attributes")
					rf_cav_DA = attr_DA.createChild("rfcavity")
					cav_wrappper = self.scl_long_tuneup_controller.getCav_WrapperForCavId(cav.getId())
					(amp,phase) =  (cav_wrappper.designAmp,cav_wrappper.designPhase)
					rf_cav_DA.setValue("amp",float("%8.5f"%amp))
					rf_cav_DA.setValue("phase",float("%8.3f"%phase))
			root_DA.writeTo(fl_out)		
	def __init__(self,scl_long_tuneup_controller):
		self.scl_long_tuneup_controller = scl_long_tuneup_controller
		scl_accSeq = self.scl_long_tuneup_controller.scl_accSeq
		self.quad_field_dict = {}
		self.quads = []
		quads = scl_accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(Quadrupole.s_strType))).andStatus(true))
		for quad in quads:
			self.quads.append(quad)
			self.quad_field_dict[quad] = quad.getDfltField()
Exemplo n.º 4
0
	def setAccSeq(self,accSeq):
		self.ws_table_model.ws_table_element_arr = []
		self.ws_nodes = []
		if(accSeq == null): 
			self.ws_table_model.fireTableDataChanged()
			return
		nodes = accSeq.filterNodesByStatus(accSeq.getAllNodesOfType(ProfileMonitor.s_strType),true)
		for node in nodes:
			self.ws_nodes.append(node)
		nodes = accSeq.filterNodesByStatus(accSeq.getAllNodesOfType(Marker.s_strType),true)
		for node in nodes:
			if(node.getId().find("LW") >= 0 and node.getId().find("SCL") >= 0):
				self.ws_nodes.append(node)
		for node in self.ws_nodes:
			self.ws_table_model.addWS_TableElement(WS_Table_Element(node))	
		self.makePVforWS()
		#ws_table_elements_arr = self.ws_table_model.getWS_TableElements()
		#for ws_table_element in ws_table_elements_arr:	
		#	ws_table_element.readPVData()
		#----update data and graphs
		self.ws_table_model.fireTableDataChanged()
		self.setDataToGraphPanels(-1)
		#------------set up the quad and cavities dictionaries
		self.quadFieldDict = {}
		self.quads = accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(Quadrupole.s_strType)))
		for quad in self.quads:
			self.quadFieldDict[quad] = quad.getDfltField()
			"""
			if(quad.isPermanent()):
				self.quadFieldDict[quad] = quad.getDfltField()
			else:
				self.quadFieldDict[quad] = quad.getFieldReadback()
			"""
		self.cavAmpPhaseDict = {}
		rf_gaps = accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		self.cavs = []
		for rf_gap in rf_gaps:
			cav = rf_gap.getParent()
			if(cav not in self.cavs):
				self.cavs.append(cav)
				amp = cav.getDfltCavAmp()
				phase = cav.getDfltCavPhase()
				self.cavAmpPhaseDict[cav] = [amp,phase]
	def getQuadFields(self):
		scl_long_tuneup_phase_scan_controller = self.scl_long_tuneup_controller.scl_long_tuneup_phase_scan_controller
		fake_scan = scl_long_tuneup_phase_scan_controller.set_phase_shift_panel.scanSim_RadioButton.isSelected()
		scl_accSeq = self.scl_long_tuneup_controller.scl_accSeq
		self.quad_field_dict = {}
		self.quads = []
		quads = scl_accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(Quadrupole.s_strType))).andStatus(true))
		for quad in quads:
			self.quads.append(quad)
			field = quad.getDfltField()
			if(not fake_scan):
				field = quad.getFieldReadback()
			self.quad_field_dict[quad] = field
Exemplo n.º 6
0
	def getCavNameNodeDict(self,accl):
		rf_gaps = accl.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		cavs = []
		for rf_gap in rf_gaps:
			cav = rf_gap.getParent()
			if(cav not in cavs):
				cavs.append(cav)
		cav_name_node_dict = {}
		cav_names = []
		for cav in cavs:
			cav_names.append(cav.getId())
			cav_name_node_dict[cav.getId()] = cav		
		return cav_name_node_dict
Exemplo n.º 7
0
	def updateGraphData(self):
		self.gpanel_hor.removeAllGraphData()
		self.gpanel_ver.removeAllGraphData()
		self.gpanel_lon.removeAllGraphData()
		accStatesKeeper = self.transverse_twiss_analysis_Controller.accStatesKeeper
		accStatesKeeper.updateGraphData()
		accState = null
		for accState0 in accStatesKeeper.getAccStatesArr():
			if(accState0.isSelected()):
				accState = accState0
				break
		if(accState == null): return
		accState.updateGraphData()
		self.gpanel_hor.addGraphData(accState.gd_exp_hor)
		self.gpanel_hor.addGraphData(accState.gd_model_hor)
		self.gpanel_ver.addGraphData(accState.gd_exp_ver)
		self.gpanel_ver.addGraphData(accState.gd_model_ver)
		self.gpanel_lon.addGraphData(accState.gd_model_lon)
		#---set up vertical lines
		self.gpanel_hor.removeHorizontalValues()
		self.gpanel_ver.removeHorizontalValues()
		self.gpanel_lon.removeHorizontalValues()
		self.gpanel_hor.removeVerticalValues()
		self.gpanel_ver.removeVerticalValues()
		self.gpanel_lon.removeVerticalValues()
		accSeq = self.transverse_twiss_analysis_Controller.linac_wizard_document.accSeq
		quads = accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(Quadrupole.s_strType))).andStatus(true))
		cavs = accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(RfCavity.s_strType))).andStatus(true))
		for quad in quads:
			pos = accSeq.getPosition(quad)
			self.gpanel_hor.addVerticalLine(pos,Color.BLACK)
			self.gpanel_ver.addVerticalLine(pos,Color.BLACK)
			self.gpanel_lon.addVerticalLine(pos,Color.BLACK)															 
		for cav in cavs:	
			pos = accSeq.getPosition(cav)	
			self.gpanel_hor.addVerticalLine(pos,Color.RED)
			self.gpanel_ver.addVerticalLine(pos,Color.RED)
			self.gpanel_lon.addVerticalLine(pos,Color.RED)
Exemplo n.º 8
0
	def __init__(self,main_loop_controller):
		self.main_loop_controller = main_loop_controller
		cav_wrappers = self.main_loop_controller.cav_wrappers	
		self.accSeq = self.main_loop_controller.accSeq
		self.part_tracker = AlgorithmFactory.createParticleTracker(self.accSeq)
		self.part_tracker.setRfGapPhaseCalculation(true)
		self.part_probe_init = ProbeFactory.createParticleProbe(self.accSeq,self.part_tracker)
		self.scenario = Scenario.newScenarioFor(self.accSeq)
		self.scenario.setSynchronizationMode(Scenario.SYNC_MODE_DESIGN)
		self.scenario.resync()
		part_probe = ParticleProbe(self.part_probe_init)
		part_probe.setKineticEnergy(self.part_probe_init.getKineticEnergy())
		self.scenario.setProbe(part_probe)	
		self.scenario.run()	
		#-------------------------------------------------
		# The cavToGapsDict is needed for reference to the irfGap to set phase and do not use  scenario.resync()
		rfGaps = self.accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		self.cavToGapsDict = {}
		self.cavEnergyInOutDict = {}		
		for cav_wrapper in cav_wrappers:
			self.cavToGapsDict[cav_wrapper] = []
			for rfGap in rfGaps:
				if(rfGap.getParent().getId() == cav_wrapper.cav.getId()):
					irfGaps = self.scenario.elementsMappedTo(rfGap)
					self.cavToGapsDict[cav_wrapper].append(irfGaps[0])
		for cav_wrapper_ind in range(len(cav_wrappers)):
			cav_wrapper = cav_wrappers[cav_wrapper_ind]
			irfGaps = self.cavToGapsDict[cav_wrapper]
			nGaps = len(irfGaps)
			state_in = self.scenario.getTrajectory().statesForElement(irfGaps[0].getId()).get(0)
			if(cav_wrapper_ind > 0):
				irfGaps_0 = self.cavToGapsDict[cav_wrappers[cav_wrapper_ind-1]]
				irfGap_0 = irfGaps_0[len(irfGaps_0)-1]
				state_in = self.scenario.getTrajectory().statesForElement(irfGap_0.getId()).get(0)
			state_out = self.scenario.getTrajectory().statesForElement(irfGaps[nGaps-1].getId()).get(0)
			#print "debug cav=",cav_wrapper.alias," eKin_in=",state_in.getKineticEnergy()/1.0e+6," eKin_out=",state_out.getKineticEnergy()/1.0e+6
			self.cavEnergyInOutDict[cav_wrapper] = (state_in.getKineticEnergy()/1.0e+6,state_out.getKineticEnergy()/1.0e+6)
		# cav_wrappers_param_dict[cav_wrapper] = (cavAmp,phase)
		self.cav_wrappers_param_dict = {}
		self.cav_amp_phase_dict = {}
		for cav_wrapper in cav_wrappers:
			amp = cav_wrapper.cav.getDfltCavAmp()
			phase = cav_wrapper.cav.getDfltCavPhase()
			self.cav_amp_phase_dict[cav_wrapper] = (amp,phase)
		#----------------------------------------------------------------
		self.active_cav_wrapper = null
		self.gap_first = null
		self.gap_last = null	
		self.gap_list = null
	def readDataFromXML(self,root_da):		
		list_da = root_da.childAdaptors("SCL_QUADS_FIELDS")
		if(not list_da.isEmpty()):
			scl_quads_da = list_da.get(0)
			scl_accSeq = self.scl_long_tuneup_controller.scl_accSeq
			quads = scl_accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(Quadrupole.s_strType))).andStatus(true))
			self.quad_field_dict = {}
			self.quads = []			
			for quad_da in scl_quads_da.childAdaptors():
				quad_name = quad_da.name()
				quad = self.getQuadById(quad_name,quads)
				if(quad != null):
					self.quads.append(quad)
					field = quad_da.doubleValue("field")
					self.quad_field_dict[quad] = field
	def __init__(self,scl_long_tuneup_controller):
		self.scl_long_tuneup_controller = scl_long_tuneup_controller
		self.scl_accSeq = self.scl_long_tuneup_controller.scl_accSeq
		self.part_tracker = AlgorithmFactory.createParticleTracker(self.scl_accSeq)
		self.part_tracker.setRfGapPhaseCalculation(true)
		self.part_probe_init = ProbeFactory.createParticleProbe(self.scl_accSeq,self.part_tracker)
		scl_long_tuneup_phase_analysis_controller = self.scl_long_tuneup_controller.scl_long_tuneup_phase_analysis_controller
		self.scenario = scl_long_tuneup_phase_analysis_controller.scl_one_cavity_tracker_model.scenario
		if(self.scenario == null):
			self.scenario = Scenario.newScenarioFor(self.scl_accSeq)
			self.scenario.setSynchronizationMode(Scenario.SYNC_MODE_DESIGN)
			self.scenario.resync()
		else:
			self.scenario.unsetStartNode()
			self.scenario.unsetStopNode()			
		# in the dictionary we will have 
		# cav_wrappers_param_dict[cav_wrapper] = [cavAmp,phase]
		self.cav_wrappers_param_dict = {}
		cav_wrappers = self.scl_long_tuneup_controller.cav_wrappers
		self.cav_amp_phase_dict = {}
		for cav_wrapper in cav_wrappers:
			amp = cav_wrapper.cav.getDfltCavAmp()
			phase = cav_wrapper.cav.getDfltCavPhase()
			self.cav_amp_phase_dict[cav_wrapper] = [amp,phase]
		#------ Make rf gap arrays for each cavity. 
		#------ The elements are IdealRfGap instances not AcceleratorNode. 
		#------ self.cavToGapsDict has {cav_name:[irfGaps]}
		rfGaps = self.scl_accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		self.cavToGapsDict = {}		
		for cav_wrapper in cav_wrappers:
			self.cavToGapsDict[cav_wrapper] = []
			for rfGap in rfGaps:
				if(rfGap.getId().find(cav_wrapper.cav.getId()) >= 0):
					irfGaps = self.scenario.elementsMappedTo(rfGap)
					self.cavToGapsDict[cav_wrapper].append(irfGaps[0])				
		#self.scenario.setModelInput(self.gap_first,RfGapPropertyAccessor.PROPERTY_PHASE,phase)
		#self.scenario.setModelInput(self.gap_first,RfGapPropertyAccessor.PROPERTY_ETL,val)
		#self.scenario.setModelInput(self.gap_first,RfGapPropertyAccessor.PROPERTY_E0,val)
		#self.scenario.setModelInput(quad,ElectromagnetPropertyAccessor,PROPERTY_FIELD,val)		
		#----------------------------------------------------------------
		self.modelArrivalTimesIsReady = false
		self.new_cav_amp_phase_dict = {}
		for cav_wrapper in cav_wrappers:
			self.new_cav_amp_phase_dict[cav_wrapper] = self.cav_amp_phase_dict[cav_wrapper][:]
	def __init__(self,scl_long_tuneup_controller):
		self.scl_long_tuneup_controller = scl_long_tuneup_controller
		self.scl_accSeq = self.scl_long_tuneup_controller.scl_accSeq
		self.part_tracker = AlgorithmFactory.createParticleTracker(self.scl_accSeq)
		self.part_tracker.setRfGapPhaseCalculation(true)
		self.part_probe_init = ProbeFactory.createParticleProbe(self.scl_accSeq,self.part_tracker)
		self.scenario = Scenario.newScenarioFor(self.scl_accSeq)
		self.scenario.setSynchronizationMode(Scenario.SYNC_MODE_DESIGN)
		self.scenario.resync()
		# in the dictionary we will have 
		# cav_wrappers_param_dict[cav_wrapper] = [cavAmp,phase,[[gapLattElem,E0,ETL],...]]
		# E0 and ETL are parameters for all RF gaps
		self.cav_wrappers_param_dict = {}
		cav_wrappers = self.scl_long_tuneup_controller.cav_wrappers
		self.cav_amp_phase_dict = {}
		for cav_wrapper in cav_wrappers:
			amp = cav_wrapper.cav.getDfltCavAmp()
			phase = cav_wrapper.cav.getDfltCavPhase()
			self.cav_amp_phase_dict[cav_wrapper] = (amp,phase)
		#------ Make rf gap arrays for each cavity. 
		#------ The elements are IdealRfGap instances not AcceleratorNode. 
		#------ self.cavToGapsDict has {cav_name:[irfGaps]}
		rfGaps = self.scl_accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		self.cavToGapsDict = {}		
		for cav_wrapper in cav_wrappers:
			self.cavToGapsDict[cav_wrapper] = []
			for rfGap in rfGaps:
				if(rfGap.getId().find(cav_wrapper.cav.getId()) >= 0):
					irfGaps = self.scenario.elementsMappedTo(rfGap)
					self.cavToGapsDict[cav_wrapper].append(irfGaps[0])				
		#self.scenario.setModelInput(self.gap_first,RfGapPropertyAccessor.PROPERTY_PHASE,phase)
		#self.scenario.setModelInput(self.gap_first,RfGapPropertyAccessor.PROPERTY_ETL,val)
		#self.scenario.setModelInput(self.gap_first,RfGapPropertyAccessor.PROPERTY_E0,val)
		#self.scenario.setModelInput(quad,ElectromagnetPropertyAccessor,PROPERTY_FIELD,val)		
		#----------------------------------------------------------------
		self.scan_gd = BasicGraphData()
		self.harmonicsAnalyzer = HarmonicsAnalyzer(2)
		self.eKin_in = 185.6
		self.cav_amp = 14.0
		self.cav_phase_shift = 0.
		#------------------------
		self.active_cav_wrapper = null
		self.solver = null
Exemplo n.º 12
0
	def __init__(self,top_document,accl):
		#--- top_document is a parent document for all controllers
		self.top_document = top_document		
		self.main_panel = JPanel(BorderLayout())
		#----etched border
		etched_border = BorderFactory.createEtchedBorder()
		#----main loop timer
		self.main_loop_timer = Main_Loop_Timer(self)		
		#---- set up accSeq
		self.accSeq = null
		seq_names = ["MEBT","DTL1","DTL2","DTL3","DTL4","DTL5","DTL6","CCL1","CCL2","CCL3","CCL4"]
		lst = ArrayList()
		for seqName in seq_names:
			lst.add(accl.getSequence(seqName))
		self.accSeq = AcceleratorSeqCombo("SEQUENCE", lst)
		rf_gaps = self.accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		self.cav_wrappers = []
		cavs = []
		count = 0
		for rf_gap in rf_gaps:
			cav = rf_gap.getParent()
			pos = self.accSeq.getPosition(cav)
			if(cav not in cavs):
				#print "debug cav=",cav.getId()," count=",count
				cavs.append(cav)				
				alias = "null"
				if(count > 3):
					alias = seq_names[count+1-4]
				else:
					alias = seq_names[0]+str(count+1)
				cav_llrf_name = "null"
				cav_pwr_pv_name = "nullPwr"
				if(count <= 3):
					cav_llrf_name = "MEBT_LLRF:FCM"+str(count+1)
					cav_pwr_pv_name = "MEBT_LLRF:Cav"+str(count+1)+":NetPwr"
				if(count > 3 and count < 10):
					cav_llrf_name = "DTL_LLRF:FCM"+str(count-3)
					cav_pwr_pv_name = "DTL_LLRF:Cav"+str(count-3)+":NetPwr"
				if(count > 9):
					cav_llrf_name = "CCL_LLRF:FCM"+str(count-9)
					cav_pwr_pv_name = "CCL_LLRF:Cav"+str(count-9)+":NetPwr"					
				amp_pv_name = cav_llrf_name+":CtlAmpSet"
				phase_pv_name = cav_llrf_name+":CtlPhaseSet"
				self.cav_wrappers.append(Cavity_Wrapper(cav,pos,alias,amp_pv_name,phase_pv_name,cav_pwr_pv_name))	
				#print "debug =================================="
				#print "debug cav=",cav.getId(),"  alias=",alias,"  amp_pv_name=",amp_pv_name," phase_pv_name=",phase_pv_name
				#print "debug         cav_pwr_pv_name=",cav_pwr_pv_name
				#print "debug cav=",cav.getId()," pos =",pos," L=",cav.getLength()
				count += 1
		#---- BPMs
		self.bpm_wrappers = []
		bpms = self.accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(BPM.s_strType)))	
		for bpm in bpms:
			pos = self.accSeq.getPosition(bpm)
			pos += 0.5*bpm.getBPMBucket().getLength()*bpm.getBPMBucket().getOrientation() 
			bpm_wrapper = BPM_Wrapper(bpm,pos)
			#print "debug bpm=",bpm_wrapper.alias," pos =",pos		
			self.bpm_wrappers.append(bpm_wrapper)
		#---- SCL first BPMs and Cavs
		lst = ArrayList()
		for seqName in ["SCLMed",]:	
			lst.add(accl.getSequence(seqName))
		self.scl_accSeq = AcceleratorSeqCombo("SCL_SEQUENCE", lst)
		bpms = self.scl_accSeq.getAllNodesWithQualifier((AndTypeQualifier().and((OrTypeQualifier()).or(BPM.s_strType))).andStatus(true))
		bpms = bpms[:5]
		self.scl_bpm_wrappers = []
		for bpm in bpms:
			pos = self.scl_accSeq.getPosition(bpm) + self.accSeq.getLength()
			pos += 0.5*bpm.getBPMBucket().getLength()*bpm.getBPMBucket().getOrientation()		
			bpm_wrapper = BPM_Wrapper(bpm,pos)
			#print "debug bpm=",bpm_wrapper.alias," pos =",pos				
			self.scl_bpm_wrappers.append(bpm_wrapper)
		rf_gaps = self.scl_accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		cavs = []
		for rf_gap in rf_gaps:
			cav = rf_gap.getParent()
			if((cav not in cavs) and cav.getStatus()):
				cavs.append(cav)
		cavs = cavs[:9]
		self.scl_cav_wrappers = []
		for cav in cavs:
			pos = self.scl_accSeq.getPosition(cav) + self.accSeq.getLength()
			alias = cav.getId().split(":")[1]	
			amp_pv_name = "SCL_LLRF:"+alias.replace("Cav","FCM")+":CtlAmpSet"
			phase_pv_name = "SCL_LLRF:"+alias.replace("Cav","FCM")+":CtlPhaseSet"
			cav_pwr_pv_name = "SCL_LLRF:"+alias+":NetPwr"	
			self.scl_cav_wrappers.append(Cavity_Wrapper(cav,pos,alias,amp_pv_name,phase_pv_name,cav_pwr_pv_name))
			#print "debug =================================="
			#print "debug cav=",cav.getId(),"  alias=",alias,"  amp_pv_name=",amp_pv_name," phase_pv_name=",phase_pv_name
			#print "debug         cav_pwr_pv_name=",cav_pwr_pv_name			
		#---- Panels setup
		#---- Auxiliaries setup
		self.loop_run_state = Loop_Run_State()
		self.loop_run_state.isRunning = false
		self.loop_run_state.shouldStop = false
		#---------------------------------------------
		#----etched border
		etched_border = BorderFactory.createEtchedBorder()
		#---- Cavities' Controllers 
		self.cav_controllers = []
		self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[0]))
		self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[1]))
		self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[2]))
		self.cav_controllers.append(MEBT_Cavity_Controller(self,self.cav_wrappers[3]))
		#---------------------------------
		self.cav_controllers.append(DTL1_Cavity_Controller(self,self.cav_wrappers[4]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[5]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[6]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[7]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[8]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[9]))
		#----------------------------------
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[10]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[11]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[12]))
		self.cav_controllers.append(DTL_CCL_Cavity_Controller(self,self.cav_wrappers[13]))	
		#------ cavity controllers customization --------------------
		#------ MEBT Reb. 4 -------
		self.cav_controllers[3].cav_amp_backward_steps_mult_text.setValue(8.0)
		#----- amplitudes limits
		self.cav_controllers[0].safe_relative_amp_down_text.setValue(50.)
		self.cav_controllers[1].safe_relative_amp_down_text.setValue(50.)
		self.cav_controllers[2].safe_relative_amp_down_text.setValue(50.)
		self.cav_controllers[3].safe_relative_amp_down_text.setValue(50.)
		#----- No PASTA Use for DTL2-6 and CCL4
		self.cav_controllers[5].scan_main_panel.use_PASTA_RadioButton.setSelected(false)
		self.cav_controllers[6].scan_main_panel.use_PASTA_RadioButton.setSelected(false)
		self.cav_controllers[7].scan_main_panel.use_PASTA_RadioButton.setSelected(false)
		self.cav_controllers[8].scan_main_panel.use_PASTA_RadioButton.setSelected(false)
		self.cav_controllers[9].scan_main_panel.use_PASTA_RadioButton.setSelected(false)
		self.cav_controllers[13].scan_main_panel.use_PASTA_RadioButton.setSelected(false)
		#------ Phase corrections after Full scan for MEBT
		self.cav_controllers[0].guess_phase_shift_text.setValue(-10.0)
		self.cav_controllers[1].guess_phase_shift_text.setValue(-6.0)
		#------ Phase and amplitude corrections after Full scan for inner BPM
		self.cav_controllers[5].guess_phase_shift_text.setValue(-4.0)
		self.cav_controllers[5].guess_cav_amp_shift_text.setValue(-2.0)
		self.cav_controllers[6].guess_phase_shift_text.setValue(1.)
		self.cav_controllers[6].guess_cav_amp_shift_text.setValue(0.7)
		self.cav_controllers[8].guess_phase_shift_text.setValue(0.)
		self.cav_controllers[8].guess_cav_amp_shift_text.setValue(-0.7)
		self.cav_controllers[10].guess_phase_shift_text.setValue(0.)
		self.cav_controllers[10].guess_cav_amp_shift_text.setValue(-3.6)
		self.cav_controllers[11].guess_phase_shift_text.setValue(0.)
		self.cav_controllers[11].guess_cav_amp_shift_text.setValue(-3.7)		
		#------ The BPMs for Full Scan and PASTA
		self.cav_controllers[0].cav_bpms_controller.work_bpm_index = 1 
		self.cav_controllers[1].cav_bpms_controller.work_bpm_index = 1 		
		self.cav_controllers[5].cav_bpms_controller.pasta_bpm_0_index = 2
		self.cav_controllers[5].cav_bpms_controller.pasta_bpm_1_index = 5
		self.cav_controllers[6].cav_bpms_controller.pasta_bpm_0_index = 2
		self.cav_controllers[6].cav_bpms_controller.pasta_bpm_1_index = 4
		self.cav_controllers[7].cav_bpms_controller.pasta_bpm_0_index = 2
		self.cav_controllers[7].cav_bpms_controller.pasta_bpm_1_index = 5
		self.cav_controllers[8].cav_bpms_controller.pasta_bpm_0_index = 5
		self.cav_controllers[8].cav_bpms_controller.pasta_bpm_1_index = 6
		self.cav_controllers[9].cav_bpms_controller.pasta_bpm_0_index = 3
		self.cav_controllers[9].cav_bpms_controller.pasta_bpm_1_index = 5
		self.cav_controllers[10].cav_bpms_controller.pasta_bpm_0_index = 5
		self.cav_controllers[10].cav_bpms_controller.pasta_bpm_1_index = 6
		self.cav_controllers[11].cav_bpms_controller.pasta_bpm_0_index = 2
		self.cav_controllers[11].cav_bpms_controller.pasta_bpm_1_index = 3
		self.cav_controllers[12].cav_bpms_controller.pasta_bpm_0_index = 2
		self.cav_controllers[12].cav_bpms_controller.pasta_bpm_1_index = 4
		self.cav_controllers[13].cav_bpms_controller.pasta_bpm_0_index = 3
		self.cav_controllers[13].cav_bpms_controller.pasta_bpm_1_index = 4
		self.cav_controllers[11].cav_bpms_controller.sin_wave_bpm_index = 0
		self.cav_controllers[12].cav_bpms_controller.sin_wave_bpm_index = 0
		self.cav_controllers[13].cav_bpms_controller.sin_wave_bpm_index = 1
		#-----Target power levels
		self.cav_controllers[4].cav_wrapper.net_pwr_goal =  378.0
		self.cav_controllers[5].cav_wrapper.net_pwr_goal = 1208.0
		self.cav_controllers[6].cav_wrapper.net_pwr_goal = 1294.0
		self.cav_controllers[7].cav_wrapper.net_pwr_goal = 1416.0
		self.cav_controllers[8].cav_wrapper.net_pwr_goal = 1454.0
		self.cav_controllers[9].cav_wrapper.net_pwr_goal = 1414.0
		self.cav_controllers[10].cav_wrapper.net_pwr_goal = 2531.0
		self.cav_controllers[11].cav_wrapper.net_pwr_goal = 2984.0
		self.cav_controllers[12].cav_wrapper.net_pwr_goal = 3018.0
		self.cav_controllers[13].cav_wrapper.net_pwr_goal = 2856.0
		#----------------------------------------------   
		left_panel = JPanel(BorderLayout())
		self.tabbedPane = JTabbedPane()		
		self.tabbedPane.add("Cavity",JPanel(BorderLayout()))	
		self.tabbedPane.add("Parameters",JPanel(BorderLayout()))
		#--------------------------------------------------------
		self.cav_table = JTable(Cavities_Table_Model(self))
		self.cav_table.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION)
		self.cav_table.setFillsViewportHeight(true)
		self.cav_table.setPreferredScrollableViewportSize(Dimension(500,240))
		self.cav_table.getSelectionModel().addListSelectionListener(Cavs_Table_Selection_Listener(self))
		scrl_cav_panel = JScrollPane(self.cav_table)
		scrl_cav_panel.setBorder(BorderFactory.createTitledBorder(etched_border,"Cavities' Parameters"))
		init_buttons_panel = Init_Cav_Controllers_Panel(self)
		start_stop_panel = Start_Stop_Panel(self)
		#---- fake scan button
		self.keepAllCavParams_RadioButton = start_stop_panel.keepAllCavParams_RadioButton
		self.keepAmps_RadioButton = start_stop_panel.keepAmps_RadioButton
		#---- status text field
		self.status_text = start_stop_panel.status_text
		tmp0_panel = JPanel(BorderLayout())
		tmp0_panel.add(init_buttons_panel,BorderLayout.NORTH)
		tmp0_panel.add(scrl_cav_panel,BorderLayout.CENTER)
		tmp0_panel.add(start_stop_panel,BorderLayout.SOUTH)
		tmp1_panel = JPanel(BorderLayout())
		tmp1_panel.add(tmp0_panel,BorderLayout.NORTH)
		left_panel.add(tmp1_panel,BorderLayout.WEST)
		#--------------------------------------------------------
		self.main_panel.add(left_panel,BorderLayout.WEST)
		self.main_panel.add(self.tabbedPane,BorderLayout.CENTER)
		#---- non GUI controllers
		self.particle_tracker_model = Particle_Tracker_Model(self)
		self.env_tracker_model = Envelop_Tracker_Model(self)
Exemplo n.º 13
0
	def __init__(self,top_document,accl):
		#--- top_document is a parent document for all controllers
		self.top_document = top_document		
		self.main_panel = JPanel(BorderLayout())
		#----etched border
		etched_border = BorderFactory.createEtchedBorder()
		#---- set up accSeq
		self.accSeq = null
		seq_names = ["MEBT","DTL1","DTL2","DTL3","DTL4","DTL5","DTL6"]
		lst = ArrayList()
		for seqName in seq_names:
			lst.add(accl.getSequence(seqName))
		self.accSeq = AcceleratorSeqCombo("SEQUENCE", lst)
		#---- setup magnets
		nodes = self.accSeq.getAllNodes()
		self.quad_wrappers = []
		self.perm_quads_wrappers = []
		self.dc_wrappers = []
		for node in nodes:
			pos = self.accSeq.getPosition(node)
			if(node.isMagnet()):
				if(node.isPermanent()):
					self.perm_quads_wrappers.append(Magnet_Wrapper(node,pos))
				else:
					if(node.isCorrector()):
						self.dc_wrappers.append(Magnet_Wrapper(node,pos))
					else:
						self.quad_wrappers.append(Magnet_Wrapper(node,pos))
		#---- cavs 
		rf_gaps = self.accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(RfGap.s_strType)))	
		self.cav_wrappers = []
		self.mebt_cav_wrappers = []
		cavs = []
		for rf_gap in rf_gaps:
			cav = rf_gap.getParent()
			pos = self.accSeq.getPosition(cav)
			if((cav not in cavs) and cav.getId().find("DTL") >= 0):
				cavs.append(cav)
				self.cav_wrappers.append(Cavity_Wrapper(cav,pos))
			if((cav not in cavs) and cav.getId().find("MEBT") >= 0):
				cavs.append(cav)
				self.mebt_cav_wrappers.append(Cavity_Wrapper(cav,pos))			
		#---- BPMs
		self.bpm_wrappers = []
		bpms = self.accSeq.getAllNodesWithQualifier(AndTypeQualifier().and((OrTypeQualifier()).or(BPM.s_strType)))	
		for bpm in bpms:
			pos = self.accSeq.getPosition(bpm)
			bpm_wrapper = BPM_Wrapper(bpm,pos)
			if(bpm_wrapper.bpm.getId().find("DTL") >= 0):
				bpm_wrapper.use = false
			self.bpm_wrappers.append(bpm_wrapper)
		#---- debug print 
		"""
		for quad_wrapper in self.quad_wrappers:
			print "debug quad=",quad_wrapper.magnet.getId()
		for perm_quad_wrapper in self.perm_quads_wrappers:
			print "debug perm quad=",perm_quad_wrapper.magnet.getId()
		for dc_wrapper in self.dc_wrappers:
			print "debug dc=",dc_wrapper.magnet.getId()	
		for cav_wrapper in self.cav_wrappers:
			print "debug cav=",cav_wrapper.cav.getId()	
		for bpm_wrapper in self.bpm_wrappers:
			print "debug bpm=",bpm_wrapper.bpm.getId()	
		"""
		#---- Panels setup
		self.magnet_and_bpm_panel = Magnet_and_BPM_Panel(self)
		self.correction_coeffs_panel = Correction_Coeffs_Panel(self)
		self.orbit_diff_graphs_panel = Orbit_Diff_Graphs_Panel(self)
		self.orbit_measurer_cotroller_panel = Orbit_Measurer_Controller_Panel(self)
		#---- Auxiliaries setup
		self.orbit_measurer = Orbit_Measurer(self)
		self.measure_running = false
		#---------------------------------------------
		tmp0_panel = JPanel(BorderLayout())
		tmp0_panel.add(self.orbit_diff_graphs_panel,BorderLayout.CENTER)
		tmp0_panel.add(self.orbit_measurer_cotroller_panel,BorderLayout.SOUTH)
		tmp0_panel.add(self.correction_coeffs_panel,BorderLayout.NORTH)
		self.main_panel.add(self.magnet_and_bpm_panel,BorderLayout.WEST)
		self.main_panel.add(tmp0_panel,BorderLayout.CENTER)