diff --git a/config/settings.properties b/config/settings.properties new file mode 100644 index 0000000..3536904 --- /dev/null +++ b/config/settings.properties @@ -0,0 +1,2 @@ +#Tue Feb 04 11:56:24 CET 2020 +ID=ID1_ID2 diff --git a/config/variables.properties b/config/variables.properties index 451e86c..11427d9 100644 --- a/config/variables.properties +++ b/config/variables.properties @@ -1,2 +1,2 @@ -#Mon Feb 03 16:51:48 CET 2020 -FileSequentialNumber=327 +#Tue Feb 04 11:59:35 CET 2020 +FileSequentialNumber=346 diff --git a/plugins/Eiger.form b/plugins/Eiger.form index 64a12b6..b1b31c1 100644 --- a/plugins/Eiger.form +++ b/plugins/Eiger.form @@ -222,44 +222,40 @@ - - - - + - - - - - + + + + + + + - + - - - - - - - + + - + + + @@ -270,11 +266,6 @@ - - - - - @@ -290,21 +281,6 @@ - - - - - - - - - - - - - - - @@ -547,6 +523,14 @@ + + + + + + + + @@ -565,7 +549,7 @@ - + @@ -701,7 +685,7 @@ - + @@ -736,17 +720,16 @@ + - - - - - - - - + + + + + + @@ -773,15 +756,13 @@ - + - - + + - - @@ -1069,29 +1050,31 @@ - - - - - - + - - + - + - - + + + + + + + + + + @@ -1113,11 +1096,11 @@ - + - + diff --git a/plugins/Eiger.java b/plugins/Eiger.java index 5b81fab..2edd9d2 100644 --- a/plugins/Eiger.java +++ b/plugins/Eiger.java @@ -231,8 +231,7 @@ public class Eiger extends Panel { } void setBeamlineArgs(HashMap args) { - args.put("ID", comboID.getSelectedItem()); - args.put("SWITCHING", comboSwitch.getSelectedItem()); + args.put("ID", comboID.getSelectedItem()); args.put("POL_ID_1", comboPol1.getSelectedItem()); args.put("ALPHA_ID_1", spinnerAlp1.getValue()); args.put("HARMONIC_ID_1", spinnerHar1.getValue()); @@ -240,26 +239,16 @@ public class Eiger extends Panel { args.put("POL_ID_2", comboPol2.getSelectedItem()); args.put("ALPHA_ID_2", spinnerAlp2.getValue()); args.put("HARMONIC_ID_2", spinnerHar2.getValue()); - args.put("OFFSET_ID_2", spinnerOff2.getValue()); - - Map> roi = new HashMap<>(); - for (int i=0; i { if ((t != null) && (!getContext().isAborted())) { @@ -297,7 +285,15 @@ public class Eiger extends Panel { args.put("AVERAGE", spinnerSpecAvg.getValue()); args.put("NUMBER_SCANS", spinnerSpecScans.getValue()); args.put("RANGES", ranges); - setBeamlineArgs(args); + Map> roi = new HashMap<>(); + for (int i=0; i { if ((t != null) && (!getContext().isAborted())) { @@ -306,6 +302,20 @@ public class Eiger extends Panel { return t; }); } + + void applyBeamline() throws Context.ContextStateException { + + HashMap args = new HashMap(); + setBeamlineArgs(args); + + runAsync("templates/SetupBeamline", args).handle((ret, t) -> { + if ((t != null) && (!getContext().isAborted())) { + showException((Exception) t); + } + return t; + }); + } + @SuppressWarnings("unchecked") // //GEN-BEGIN:initComponents @@ -325,9 +335,7 @@ public class Eiger extends Panel { jLabel1 = new javax.swing.JLabel(); panelBeamline = new javax.swing.JPanel(); jLabel3 = new javax.swing.JLabel(); - labelSwitching = new javax.swing.JLabel(); comboID = new javax.swing.JComboBox(); - comboSwitch = new javax.swing.JComboBox(); jPanel7 = new javax.swing.JPanel(); jLabel5 = new javax.swing.JLabel(); comboPol1 = new javax.swing.JComboBox(); @@ -346,6 +354,7 @@ public class Eiger extends Panel { spinnerHar2 = new javax.swing.JSpinner(); jLabel16 = new javax.swing.JLabel(); spinnerOff2 = new javax.swing.JSpinner(); + buttonApply = new javax.swing.JButton(); panelRoi = new javax.swing.JPanel(); rendererRoi = new ch.psi.pshell.imaging.Renderer(); jLabel26 = new javax.swing.JLabel(); @@ -380,10 +389,9 @@ public class Eiger extends Panel { spinnerImgMeasurements = new javax.swing.JSpinner(); comboImgMethod = new javax.swing.JComboBox(); jLabel20 = new javax.swing.JLabel(); - checImgAsSeq = new javax.swing.JCheckBox(); checkImgAutosave = new javax.swing.JCheckBox(); - jLabel22 = new javax.swing.JLabel(); - spinnerImgContrast = new javax.swing.JSpinner(); + labelSwitching = new javax.swing.JLabel(); + comboSwitch = new javax.swing.JComboBox(); jPanel3 = new javax.swing.JPanel(); panelSpectrum = new javax.swing.JPanel(); jLabel23 = new javax.swing.JLabel(); @@ -523,12 +531,8 @@ public class Eiger extends Panel { jLabel3.setText("ID:"); - labelSwitching.setText("Switching:"); - comboID.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - comboSwitch.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); - jPanel7.setBorder(javax.swing.BorderFactory.createTitledBorder("ID1")); jLabel5.setText("Polarization:"); @@ -653,45 +657,47 @@ public class Eiger extends Panel { .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); + buttonApply.setText("Apply"); + buttonApply.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + buttonApplyActionPerformed(evt); + } + }); + javax.swing.GroupLayout panelBeamlineLayout = new javax.swing.GroupLayout(panelBeamline); panelBeamline.setLayout(panelBeamlineLayout); panelBeamlineLayout.setHorizontalGroup( panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelBeamlineLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(labelSwitching) - .addComponent(jLabel3)) + .addComponent(jLabel3) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) - .addComponent(comboID, 0, 121, Short.MAX_VALUE) - .addComponent(comboSwitch, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(18, 18, Short.MAX_VALUE) + .addComponent(comboID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(jPanel7, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(jPanel9, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addContainerGap()) + .addGroup(panelBeamlineLayout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonApply, javax.swing.GroupLayout.PREFERRED_SIZE, 166, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - - panelBeamlineLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {comboID, comboSwitch}); - panelBeamlineLayout.setVerticalGroup( panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelBeamlineLayout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addContainerGap() .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(jPanel7, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addGroup(panelBeamlineLayout.createSequentialGroup() .addGap(30, 30, 30) - .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(comboID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel3)) - .addGap(18, 18, 18) .addGroup(panelBeamlineLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelSwitching) - .addComponent(comboSwitch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) - .addContainerGap()) + .addComponent(comboID, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel3)))) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) + .addComponent(buttonApply) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); @@ -776,7 +782,7 @@ public class Eiger extends Panel { panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelRoiLayout.createSequentialGroup() .addGap(17, 17, 17) - .addComponent(rendererRoi, javax.swing.GroupLayout.DEFAULT_SIZE, 439, Short.MAX_VALUE) + .addComponent(rendererRoi, javax.swing.GroupLayout.DEFAULT_SIZE, 443, Short.MAX_VALUE) .addGap(18, 18, 18) .addGroup(panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jLabel26) @@ -966,15 +972,12 @@ public class Eiger extends Panel { jLabel20.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel20.setText("Measurements:"); - checImgAsSeq.setText("As Sequence"); - checkImgAutosave.setSelected(true); checkImgAutosave.setText("Autosave"); - jLabel22.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel22.setText("Contrast:"); + labelSwitching.setText("Switching:"); - spinnerImgContrast.setModel(new javax.swing.SpinnerNumberModel(0.0d, 0.0d, 1000.0d, 1.0d)); + comboSwitch.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Item 1", "Item 2", "Item 3", "Item 4" })); javax.swing.GroupLayout panelImgControlsLayout = new javax.swing.GroupLayout(panelImgControls); panelImgControls.setLayout(panelImgControlsLayout); @@ -983,16 +986,15 @@ public class Eiger extends Panel { .addGroup(panelImgControlsLayout.createSequentialGroup() .addContainerGap() .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(labelSwitching) .addComponent(jLabel21) - .addComponent(jLabel20) - .addComponent(jLabel22)) + .addComponent(jLabel20)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(spinnerImgMeasurements, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(comboImgMethod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(checkImgAutosave) - .addComponent(checImgAsSeq) - .addComponent(spinnerImgContrast, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) + .addComponent(spinnerImgMeasurements) + .addComponent(comboImgMethod, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(checkImgAutosave, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(comboSwitch, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addGap(18, 18, Short.MAX_VALUE) .addComponent(jPanel8, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addGap(18, 18, Short.MAX_VALUE) @@ -1000,7 +1002,7 @@ public class Eiger extends Panel { .addContainerGap()) ); - panelImgControlsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {checImgAsSeq, checkImgAutosave, comboImgMethod, spinnerImgContrast, spinnerImgMeasurements}); + panelImgControlsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {checkImgAutosave, comboImgMethod, comboSwitch, spinnerImgMeasurements}); panelImgControlsLayout.setVerticalGroup( panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -1017,14 +1019,12 @@ public class Eiger extends Panel { .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(jLabel20) .addComponent(spinnerImgMeasurements, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGap(6, 6, 6) .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel22) - .addComponent(spinnerImgContrast, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addComponent(labelSwitching) + .addComponent(comboSwitch, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(checkImgAutosave) - .addGap(11, 11, 11) - .addComponent(checImgAsSeq))) + .addComponent(checkImgAutosave))) .addContainerGap()) ); @@ -1052,7 +1052,7 @@ public class Eiger extends Panel { .addGroup(jPanel2Layout.createSequentialGroup() .addGap(18, 18, 18) .addComponent(panelImgControls, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 82, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 87, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonImgStart) .addComponent(buttonImgAbort)) @@ -1227,11 +1227,11 @@ public class Eiger extends Panel { .addContainerGap() .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() - .addGap(0, 224, Short.MAX_VALUE) + .addGap(0, 226, Short.MAX_VALUE) .addComponent(buttonSpecStart) .addGap(76, 76, 76) .addComponent(buttonSpecAbort) - .addGap(0, 224, Short.MAX_VALUE)) + .addGap(0, 226, Short.MAX_VALUE)) .addComponent(panelSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); @@ -1256,7 +1256,7 @@ public class Eiger extends Panel { this.setLayout(layout); layout.setHorizontalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jTabbedPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 691, Short.MAX_VALUE) + .addComponent(jTabbedPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 691, Short.MAX_VALUE) ); layout.setVerticalGroup( layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) @@ -1391,8 +1391,17 @@ public class Eiger extends Panel { } }//GEN-LAST:event_buttonRemoveActionPerformed + private void buttonApplyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_buttonApplyActionPerformed + try { + applyBeamline(); + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_buttonApplyActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAdd; + private javax.swing.JButton buttonApply; private javax.swing.JButton buttonDefaultPath; private javax.swing.JButton buttonImgAbort; private javax.swing.JButton buttonImgStart; @@ -1406,7 +1415,6 @@ public class Eiger extends Panel { private javax.swing.JButton buttonTriggerDetector; private javax.swing.JButton buttonUndoPath; private javax.swing.JButton buttonUndoSeq; - private javax.swing.JCheckBox checImgAsSeq; private javax.swing.JCheckBox checkImgAutosave; private javax.swing.JCheckBox checkSpecSaveImages; private javax.swing.JCheckBox checkSpecSaveSpectrum; @@ -1433,7 +1441,6 @@ public class Eiger extends Panel { private javax.swing.JLabel jLabel2; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; - private javax.swing.JLabel jLabel22; private javax.swing.JLabel jLabel23; private javax.swing.JLabel jLabel24; private javax.swing.JLabel jLabel25; @@ -1469,7 +1476,6 @@ public class Eiger extends Panel { private javax.swing.JSpinner spinnerHar2; private javax.swing.JSpinner spinnerImgAvg1; private javax.swing.JSpinner spinnerImgAvg2; - private javax.swing.JSpinner spinnerImgContrast; private javax.swing.JSpinner spinnerImgEng1; private javax.swing.JSpinner spinnerImgEng2; private javax.swing.JSpinner spinnerImgExp1; diff --git a/script/devices/eiger.py b/script/devices/eiger.py index cec44ca..ae3a2c7 100644 --- a/script/devices/eiger.py +++ b/script/devices/eiger.py @@ -99,7 +99,8 @@ def grab_frame(source, roi=None, wait_next=False, rmv_outliers=True): data = data.getRoi(Rectangle(roi[0], roi[1], roi[2], roi[3])) #ret = load_image(img) if rmv_outliers: - data = remove_outliers(data) + #data = remove_outliers(data) + data.threshold(1e9, False, None) return data def grab_frames(source, samples, roi=None, wait_next=False, sleep=0, rmv_outliers=True): @@ -125,6 +126,7 @@ def average_frames(frames): ret.div(len(frames)) return ret +""" def remove_outliers(imgdata, threshold = 1e9, replace_value=None): if replace_value is None: if str(imgdata.getType()) in ('float', 'double'): @@ -136,7 +138,8 @@ def remove_outliers(imgdata, threshold = 1e9, replace_value=None): for j in range(data.height): if data.getElementDbl(j,i, False) >=threshold: data.setElement(j*data.width + i, replace_value) - return data + return data +""" def save_as_tiff(data, filename, check=False, show = False): if type(data) == Data: diff --git a/script/devices/id.py b/script/devices/id.py index 2e15193..5c6c09e 100644 --- a/script/devices/id.py +++ b/script/devices/id.py @@ -1,5 +1,5 @@ -POL_IDS={ "Circ_Plus": 1, "Circ_Minus": 2, "Lin_Hor":3, "Lin_Ver": 4} +POL_IDS={ "Circ_Plus": 1, "Circ_Minus": 2, "Lin_Hor":3, "Lin_Ver": 4, "Lin": 5} @@ -31,13 +31,23 @@ def get_id_pol(id, as_string=False): # 4: Lin V # 5: LIn if id<1 or id>2: raise Exception("Invalid id") - ret = caget ("X11MA-ID1:MODE" if id==1 else "X11MA-ID2:MODE", 's' if as_string else 'i') - if ret!=0: return ret - #linear mode - alpha = get_alpha_id(id) - if alpha==0 : return 3 - if alpha==90 : return 4 - return 5 + #ret = caget ("X11MA-ID1:MODE" if id==1 else "X11MA-ID2:MODE", 's' if as_string else 'i') + ret = caget ("X11MA-ID1:MODE" if id==1 else "X11MA-ID2:MODE", 'i') + if ret==0: + #linear mode + alpha = get_alpha_id(id) + if alpha==0 : + ret = 3 + elif alpha==90: + ret = 4 + else: + ret = 5 + if as_string: + for (k,v) in POL_IDS.items(): + if v==ret: + return k + return "Unknown" + return ret def get_alpha_id(id): if id<1 or id>2: raise Exception("Invalid id") @@ -66,7 +76,11 @@ def put_id_pol(id, pol, alpha=None): pv1="X11MA-ID1:MODE" if (id==1) else "X11MA-ID2:MODE" pv2="X11MA-ID1:ALPHA" if (id==1) else "X11MA-ID2:ALPHA" - + + + if is_string(pol): + pol=POL_IDS[v] + if pol == 1: caput(pv1,1) elif pol == 2: diff --git a/script/templates/Eiger2Img.py b/script/templates/Eiger2Img.py index 9b903ab..374c818 100644 --- a/script/templates/Eiger2Img.py +++ b/script/templates/Eiger2Img.py @@ -1,19 +1,8 @@ #If running from editor if get_exec_pars().source == CommandSource.ui: - ID = "ID1_ID2" - SWITCHING = "Tune_Detune" - POL_ID_1 = "Circ_Plus" - ALPHA_ID_1 = 0.0 - HARMONIC_ID_1 = 1 - OFFSET_ID_1 = 0.0 - POL_ID_2 = "Circ_Minus" - ALPHA_ID_2 = 0.0 - HARMONIC_ID_2 = 1 - OFFSET_ID_2 = 0.0 - ROI = {"ROI1": [50,50,200, 100]} - METHOD = "Two_Pol" + SWITCHING = "Tune_Detune" MEASUREMENTS = 4 CONTRAST = 0 AUTO_SAVE = True @@ -27,10 +16,12 @@ if get_exec_pars().source == CommandSource.ui: ENERGY_2= 900.0 POLARIZATION_2 = "Circ_Minus" - -DRY_RUN=False + +DRY_RUN=True SHOW_IMAGES = True +ID = get_setting("ID") + EXPOSURE = [EXPOSURE_1, EXPOSURE_2] AVERAGE = [int(AVERAGE_1), int(AVERAGE_2)] ENERGY = [ENERGY_1, ENERGY_2] @@ -92,40 +83,26 @@ def assert_status_ok(): if not DRY_RUN: open_vg10() - if ID=='ID1': - caput('X11PHS-E:OPT',1) - elif ID=='ID2': - caput('X11PHS-E:OPT',2) - elif ID =='ID1_ID2': - caput('X11PHS-E:OPT',3) - active_id = 1 current_pol=None -polID1=None -polID2=None +polID1=get_id_pol(1) +polID2=get_id_pol(2) +id_off_1 = get_id_offset(1) +id_off_2 = get_id_offset(2) + #rbkEnergy=energy_rbk.read() if METHOD == "Two_Pol": - if not DRY_RUN: - if ID == "ID1": - current_pol=POL_IDS[POL_ID_1] #get_id_pol(1) - put_id_pol(1,current_pol) - elif ID == "ID2": - current_pol=POL_IDS[POL_ID_2]#get_id_pol(2) - put_id_pol(2,current_pol) - elif ID == "ID1_ID2": - polID1=POL_IDS[POL_ID_1] - polID2=POL_IDS[POL_ID_2] - put_id_pol(1,polID1) - put_id_pol(2,polID2) - current_pol=polID1 - if SWITCHING == "Tune_Detune": - put_id_offset(2, OFFSET_ID_2-40) #detuneID2 - put_id_offset(1, OFFSET_ID_1) #tuneID2 - - elif SWITCHING == "Chopper": - set_chopper(0) - wait_channel("X11PHS:alldone", 1) + if ID == "ID1": + current_pol = polID1 + elif ID == "ID2": + current_pol = polID2 + elif ID == "ID1_ID2": + current_pol=polID1 + if SWITCHING == "Tune_Detune": + put_id_offset(2, id_off_2-40) #detuneID2 + put_id_offset(1, id_off_1) #tuneID2 + wait_channel("X11PHS:alldone", 1) def imageinfo(info): pass @@ -161,20 +138,13 @@ def switch_pol(): put_id_pol(2, newpol) elif SWITCHING == "Tune_Detune": if active_id ==1: - put_id_offset(1, OFFSET_ID_1-40) #detuneID1 - put_id_offset(2, OFFSET_ID_2) #tuneID2 + put_id_offset(1, id_off_1-40) #detuneID1 + put_id_offset(2, id_off_2) #tuneID2 active_id=2 else: - put_id_offset(2, OFFSET_ID_2-40) #detuneID2 - put_id_offset(1, OFFSET_ID_1) #tuneID2 + put_id_offset(2, id_off_2-40) #detuneID2 + put_id_offset(1, id_off_1) #tuneID2 active_id=1 - elif SWITCHING == "Chopper": - if active_id == 1: - active_id = 2 - set_chopper(1) - else: - active_id = 1 - set_chopper(0) time.sleep(1.0) wait_channel("X11PHS:alldone", 1) @@ -187,8 +157,6 @@ def change_energy(v): - - def save_image_file(frame, cycle=-1, frame_index=0): if SHOW_IMAGES: plot(frame.matrix if (type(frame) == Data) else get_ip_array(frame), name = get_image_file_name(cycle, frame_index, True)) diff --git a/script/templates/EigerAbsSpec.py b/script/templates/EigerAbsSpec.py index 783f258..70003fe 100644 --- a/script/templates/EigerAbsSpec.py +++ b/script/templates/EigerAbsSpec.py @@ -1,17 +1,6 @@ #If running from editor if get_exec_pars().source == CommandSource.ui: - ID = "ID2" - SWITCHING = "Normal" - POL_ID_1 = "Circ_Plus" - ALPHA_ID_1 = 0.0 - HARMONIC_ID_1 = 1 - OFFSET_ID_1 = 0.0 - POL_ID_2 = "Circ_Minus" - ALPHA_ID_2 = 0.0 - HARMONIC_ID_2 = 1 - OFFSET_ID_2 = 0.0 ROI = {"Region1": [10,5,20, 10], "Region2": [20,15,20, 10]} - SAVE_SPECTRUM = True SAVE_IMAGES = False WITH_I0 = True @@ -83,24 +72,15 @@ set_device_alias(averager, "Image") #Set display name sensors.append(averager) #sensors.append(eiger.getDataMatrix()) #Initialize vartiables -open_vg10() +if not DRY_RUN: + open_vg10() -if ID=='ID1': - caput('X11PHS-E:OPT',1) -elif ID=='ID2': - caput('X11PHS-E:OPT',2) -elif ID =='ID1_ID2': - caput('X11PHS-E:OPT',3) - -put_id_offset(1, OFFSET_ID_1) #offset on ID1 -put_id_offset(2, OFFSET_ID_2) #offset on ID2 +#put_id_offset(1, OFFSET_ID_1) #offset on ID1 +#put_id_offset(2, OFFSET_ID_2) #offset on ID2 -active_id = 1 -current_pol=None -polID1=None -polID2=None +""" if ID == "ID1": current_pol=POL_IDS[POL_ID_1] #get_id_pol(1) put_id_pol(1,current_pol) @@ -116,6 +96,7 @@ elif ID == "ID1_ID2": put_id_pol(1,polID1) put_id_pol(2,polID2) wait_channel("X11PHS:alldone", 1) +""" try: #tscan(rois, 10, 0.1, format="csv", before_read=grab_image, passes = NUMBER_SCANS, tag=tag) @@ -124,6 +105,7 @@ finally: if AVERAGE>1: for i in range(len(rois)): rois[i].parent.monitored = False # Remove listeners on the image - close_vg10() + if not DRY_RUN: + close_vg10() eiger.grabMode=eiger.GrabMode.Continuous eiger.start() \ No newline at end of file diff --git a/script/templates/SetupBeamline.py b/script/templates/SetupBeamline.py new file mode 100644 index 0000000..49e631f --- /dev/null +++ b/script/templates/SetupBeamline.py @@ -0,0 +1,52 @@ +#If running from editor +if get_exec_pars().source == CommandSource.ui: + ID = "ID2" + POL_ID_1 = "Circ_Plus" + ALPHA_ID_1 = 0.0 + HARMONIC_ID_1 = 1 + OFFSET_ID_1 = 0.0 + POL_ID_2 = "Circ_Minus" + ALPHA_ID_2 = 0.0 + HARMONIC_ID_2 = 1 + OFFSET_ID_2 = 0.0 + + +set_setting("ID", ID) + +if ID=='ID1': + caput('X11PHS-E:OPT',1) +elif ID=='ID2': + caput('X11PHS-E:OPT',2) +elif ID =='ID1_ID2': + caput('X11PHS-E:OPT',3) + + +if ID == "ID1": + #current_pol=POL_IDS[POL_ID_1] #get_id_pol(1) + put_id_pol(1,POL_ID_1) + caput('X11MA-ID2-GAP:SET',100) #open Gap ID2 + caput('X11MA-ID1:HARMONIC', HARMONIC_ID_1) +elif ID == "ID2": + #current_pol=POL_IDS[POL_ID_2]#get_id_pol(2) + put_id_pol(2,POL_ID_2) + caput('X11MA-ID1-GAP:SET',100) #open Gap ID1 + caput('X11MA-ID2:HARMONIC', HARMONIC_ID_2) +elif ID == "ID1_ID2": + #polID1=POL_IDS[POL_ID_1] + #polID2=POL_IDS[POL_ID_2] + put_id_pol(1,POL_ID_1) + put_id_pol(2,POL_ID_2) + #current_pol=polID1 + caput('X11MA-ID1:HARMONIC', HARMONIC_ID_1) + caput('X11MA-ID2:HARMONIC', HARMONIC_ID_2) + + +put_id_offset(1, OFFSET_ID_1) #offset on ID1 +put_id_offset(2, OFFSET_ID_2) #offset on ID2 + + +wait_channel("X11PHS:alldone", 1) + + + + \ No newline at end of file