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()
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
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
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)
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
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)
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)