diff --git a/config/mail.properties b/config/mail.properties index 29e6ad6..157fcdc 100644 --- a/config/mail.properties +++ b/config/mail.properties @@ -1,9 +1,9 @@ -#Fri Dec 11 14:27:37 CET 2020 +#Mon Dec 14 22:10:27 CET 2020 auth=None port=0 usr= smsSuffix=@sms.switch.ch host=smtpint.psi.ch from=pshell.sim@psi.ch -to=alan.farhan@aalto.fi +to=armin.kleibert@psi.ch pwd= diff --git a/config/settings.properties b/config/settings.properties index c3bfb26..a1ffb18 100644 --- a/config/settings.properties +++ b/config/settings.properties @@ -1,13 +1,13 @@ -#Sat Dec 12 00:56:20 CET 2020 +#Mon Dec 14 22:42:49 CET 2020 HARMONIC_ID_1=1 -RSYNC_USER=e18413 +RSYNC_USER= OUTLIERS_THRESHOLD=1000000000 NORM_FILE=/sls/X11MA/data/X11MA/Data1/public/PEEM/2020_09/i1904_1_0.tif AUTO_SWITCH_VALVE=true DRY_RUN=false -POL_ID_2=Circ_Minus +POL_ID_2=Lin_Hor OFFSET_ID_1=-1.5 -ID=ID1_ID2 +ID=ID2 OFFSET_ID_2=-1.3 proposal=proposal ENERGY=707.3 @@ -20,6 +20,7 @@ pgroup=pgroup ALPHA_ID_2=45.0 ALPHA_ID_1=15.0 RSYNC_DEL=true +AVERAGING_DETECTOR=true HARMONIC_ID_2=1 FdaBrowser=true authors=author1|author2 diff --git a/config/variables.properties b/config/variables.properties index cd565a2..05fc095 100644 --- a/config/variables.properties +++ b/config/variables.properties @@ -1,4 +1,4 @@ -#Sat Dec 12 22:25:59 CET 2020 -LastRunDate=201212 -FileSequentialNumber=4863 -DaySequentialNumber=74 +#Mon Dec 14 23:43:57 CET 2020 +LastRunDate=201214 +FileSequentialNumber=4909 +DaySequentialNumber=110 diff --git a/plugins/Beamline.form b/plugins/Beamline.form index fd4566c..b5fb998 100644 --- a/plugins/Beamline.form +++ b/plugins/Beamline.form @@ -532,7 +532,7 @@ - + diff --git a/plugins/Beamline.java b/plugins/Beamline.java index bf00233..3360a99 100644 --- a/plugins/Beamline.java +++ b/plugins/Beamline.java @@ -527,7 +527,7 @@ public class Beamline extends Panel { } }); - jLabel1.setText("Dry Mode"); + jLabel1.setText("Dry Run"); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); this.setLayout(layout); diff --git a/plugins/Eiger.form b/plugins/Eiger.form index 63bbb7e..4c127ca 100644 --- a/plugins/Eiger.form +++ b/plugins/Eiger.form @@ -1,6 +1,10 @@
+ + + + @@ -59,6 +63,7 @@ + @@ -70,8 +75,10 @@ + + - + @@ -101,7 +108,7 @@ - + @@ -185,7 +192,7 @@ - + @@ -286,6 +293,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302,7 +369,7 @@ - + @@ -330,7 +397,7 @@ - + @@ -471,68 +538,30 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + - + - - - - - - - - - - - - - - - - + + + - + @@ -555,268 +584,80 @@ + + + + + + + - + - - - - - - - - - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + @@ -824,16 +665,35 @@ - + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -842,7 +702,7 @@ - + @@ -911,43 +771,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -962,37 +963,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + @@ -1000,22 +979,9 @@ - - - - - - - - - - - - - - - - + + + @@ -1027,6 +993,13 @@ + + + + + + + @@ -1048,9 +1021,9 @@ - + - + @@ -1288,39 +1261,128 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/plugins/Eiger.java b/plugins/Eiger.java index 280c837..2c0633c 100644 --- a/plugins/Eiger.java +++ b/plugins/Eiger.java @@ -180,7 +180,7 @@ public class Eiger extends Panel { spinnerImgEng1.setVisible(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString()); spinnerImgEng2.setVisible(comboImgMethod.getSelectedItem() == ImgMethod.Two_Energies.toString()); - panelSecondImage.setVisible(comboImgMethod.getSelectedItem() != ImgMethod.Take_Image.toString()); + //panelSecondImage.setVisible(comboImgMethod.getSelectedItem() != ImgMethod.Take_Image.toString()); buttonImgStart.setEnabled(getState() == State.Ready); buttonImgAbort.setEnabled(getState().isProcessing()); @@ -206,14 +206,32 @@ public class Eiger extends Panel { labelModeID1a.setVisible(id1); dvpModeID1b.setVisible(id1); labelModeID1b.setVisible(id1); + dvpOffID1a.setVisible(id1); + labelOffID1a.setVisible(id1); + dvpOffID1b.setVisible(id1); + labelOffID1b.setVisible(id1); dvpModeID2a.setVisible(id2); labelModeID2a.setVisible(id2); dvpModeID2b.setVisible(id2); labelModeID2b.setVisible(id2); + dvpOffID2a.setVisible(id2); + labelOffID2a.setVisible(id2); + dvpOffID2b.setVisible(id2); + labelOffID2b.setVisible(id2); } catch (Exception ex) { getLogger().log(Level.WARNING, null, ex); } + + try { + String setting = getSetting("AVERAGING_DETECTOR"); + boolean det = setting.equalsIgnoreCase("true"); + radioAvDetector.setSelected(det); + radioAvPshell.setSelected(!det); + } catch (Exception ex) { + getLogger().log(Level.WARNING, null, ex); + } + } void updateRoiList() { @@ -291,11 +309,9 @@ public class Eiger extends Panel { args.put("SWITCHING", comboSwitch.getSelectedItem()); args.put("MEASUREMENTS", spinnerImgMeasurements.getValue()); args.put("AUTO_SAVE", checkImgAutosave.isSelected()); - args.put("EXPOSURE_1", spinnerImgExp1.getValue()); - args.put("AVERAGE_1", spinnerImgAvg1.getValue()); + args.put("EXPOSURE", spinnerImgExp.getValue()); + args.put("AVERAGE", spinnerImgAvg.getValue()); args.put("ENERGY_1", spinnerImgEng1.getValue()); - args.put("EXPOSURE_2", spinnerImgExp2.getValue()); - args.put("AVERAGE_2", spinnerImgAvg2.getValue()); args.put("ENERGY_2", spinnerImgEng2.getValue()); runAsync("templates/Eiger2Img", args).handle((ret, t) -> { @@ -386,6 +402,7 @@ public class Eiger extends Panel { // //GEN-BEGIN:initComponents private void initComponents() { + buttonGroup1 = new javax.swing.ButtonGroup(); jTabbedPane1 = new javax.swing.JTabbedPane(); jPanel1 = new javax.swing.JPanel(); panelNorm = new javax.swing.JPanel(); @@ -403,6 +420,9 @@ public class Eiger extends Panel { buttonTriggerDetector = new javax.swing.JButton(); buttonShowDetectorPanel = new javax.swing.JButton(); buttonMeasurements = new javax.swing.JToggleButton(); + panelNorm2 = new javax.swing.JPanel(); + radioAvDetector = new javax.swing.JRadioButton(); + radioAvPshell = new javax.swing.JRadioButton(); panelRoi = new javax.swing.JPanel(); rendererRoi = new ch.psi.pshell.imaging.Renderer(); jLabel26 = new javax.swing.JLabel(); @@ -417,21 +437,6 @@ public class Eiger extends Panel { buttonImgStart = new javax.swing.JButton(); buttonImgAbort = new javax.swing.JButton(); panelImgControls = new javax.swing.JPanel(); - panelFirstImage = new javax.swing.JPanel(); - jLabel4 = new javax.swing.JLabel(); - spinnerImgExp1 = new javax.swing.JSpinner(); - jLabel9 = new javax.swing.JLabel(); - spinnerImgAvg1 = new javax.swing.JSpinner(); - labelImgEng1 = new javax.swing.JLabel(); - spinnerImgEng1 = new javax.swing.JSpinner(); - filler1 = new javax.swing.Box.Filler(new java.awt.Dimension(0, 14), new java.awt.Dimension(0, 14), new java.awt.Dimension(32767, 12)); - panelSecondImage = new javax.swing.JPanel(); - jLabel12 = new javax.swing.JLabel(); - spinnerImgExp2 = new javax.swing.JSpinner(); - jLabel17 = new javax.swing.JLabel(); - spinnerImgAvg2 = new javax.swing.JSpinner(); - labelImgEng2 = new javax.swing.JLabel(); - spinnerImgEng2 = new javax.swing.JSpinner(); jPanel5 = new javax.swing.JPanel(); checkImgAutosave = new javax.swing.JCheckBox(); jLabel20 = new javax.swing.JLabel(); @@ -440,12 +445,25 @@ public class Eiger extends Panel { comboSwitch = new javax.swing.JComboBox<>(); spinnerImgMeasurements = new javax.swing.JSpinner(); comboImgMethod = new javax.swing.JComboBox<>(); - dvpModeID2a = new ch.psi.pshell.swing.DeviceValuePanel(); - labelEnergya = new javax.swing.JLabel(); - labelModeID2a = new javax.swing.JLabel(); - dvpEnergya = new ch.psi.pshell.swing.DeviceValuePanel(); - dvpModeID1a = new ch.psi.pshell.swing.DeviceValuePanel(); - labelModeID1a = new javax.swing.JLabel(); + jLabel4 = new javax.swing.JLabel(); + spinnerImgExp = new javax.swing.JSpinner(); + jLabel9 = new javax.swing.JLabel(); + spinnerImgAvg = new javax.swing.JSpinner(); + labelImgEng2 = new javax.swing.JLabel(); + spinnerImgEng2 = new javax.swing.JSpinner(); + spinnerImgEng1 = new javax.swing.JSpinner(); + labelImgEng1 = new javax.swing.JLabel(); + jPanel9 = new javax.swing.JPanel(); + dvpEnergya3 = new ch.psi.pshell.swing.DeviceValuePanel(); + dvpOffID1b = new ch.psi.pshell.swing.DeviceValuePanel(); + dvpModeID2b = new ch.psi.pshell.swing.DeviceValuePanel(); + dvpOffID2b = new ch.psi.pshell.swing.DeviceValuePanel(); + labelEnergya3 = new javax.swing.JLabel(); + labelOffID2a = new javax.swing.JLabel(); + labelOffID1a = new javax.swing.JLabel(); + dvpModeID1b = new ch.psi.pshell.swing.DeviceValuePanel(); + labelModeID1b = new javax.swing.JLabel(); + labelModeID2b = new javax.swing.JLabel(); jPanel3 = new javax.swing.JPanel(); panelSpectrum = new javax.swing.JPanel(); jLabel23 = new javax.swing.JLabel(); @@ -468,12 +486,17 @@ public class Eiger extends Panel { buttonClear = new javax.swing.JButton(); buttonSpecStart = new javax.swing.JButton(); buttonSpecAbort = new javax.swing.JButton(); - labelModeID1b = new javax.swing.JLabel(); - dvpModeID1b = new ch.psi.pshell.swing.DeviceValuePanel(); - dvpModeID2b = new ch.psi.pshell.swing.DeviceValuePanel(); - labelModeID2b = new javax.swing.JLabel(); - labelEnergyb = new javax.swing.JLabel(); - dvpEnergyb = new ch.psi.pshell.swing.DeviceValuePanel(); + jPanel6 = new javax.swing.JPanel(); + dvpEnergya = new ch.psi.pshell.swing.DeviceValuePanel(); + dvpOffID1a = new ch.psi.pshell.swing.DeviceValuePanel(); + dvpModeID2a = new ch.psi.pshell.swing.DeviceValuePanel(); + dvpOffID2a = new ch.psi.pshell.swing.DeviceValuePanel(); + labelEnergya = new javax.swing.JLabel(); + labelOffID2b = new javax.swing.JLabel(); + labelOffID1b = new javax.swing.JLabel(); + dvpModeID1a = new ch.psi.pshell.swing.DeviceValuePanel(); + labelModeID1a = new javax.swing.JLabel(); + labelModeID2a = new javax.swing.JLabel(); panelNorm.setBorder(javax.swing.BorderFactory.createTitledBorder("Normalization")); @@ -514,7 +537,7 @@ public class Eiger extends Panel { .addGap(18, 18, 18) .addComponent(jLabel29) .addGap(0, 0, 0) - .addComponent(textNorm) + .addComponent(textNorm, javax.swing.GroupLayout.DEFAULT_SIZE, 447, Short.MAX_VALUE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(buttonSetNorm) .addContainerGap()) @@ -589,7 +612,7 @@ public class Eiger extends Panel { .addComponent(jLabel31) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(spinnerOutliersThreshold, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(0, 315, Short.MAX_VALUE))) + .addGap(0, 0, Short.MAX_VALUE))) .addContainerGap()) ); @@ -632,6 +655,46 @@ public class Eiger extends Panel { } }); + panelNorm2.setBorder(javax.swing.BorderFactory.createTitledBorder("Averaging")); + + buttonGroup1.add(radioAvDetector); + radioAvDetector.setText("Detector"); + radioAvDetector.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAvDetectorActionPerformed(evt); + } + }); + + buttonGroup1.add(radioAvPshell); + radioAvPshell.setSelected(true); + radioAvPshell.setText("PShell"); + radioAvPshell.addActionListener(new java.awt.event.ActionListener() { + public void actionPerformed(java.awt.event.ActionEvent evt) { + radioAvPshellActionPerformed(evt); + } + }); + + javax.swing.GroupLayout panelNorm2Layout = new javax.swing.GroupLayout(panelNorm2); + panelNorm2.setLayout(panelNorm2Layout); + panelNorm2Layout.setHorizontalGroup( + panelNorm2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelNorm2Layout.createSequentialGroup() + .addContainerGap() + .addGroup(panelNorm2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(radioAvDetector) + .addComponent(radioAvPshell)) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + panelNorm2Layout.setVerticalGroup( + panelNorm2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(panelNorm2Layout.createSequentialGroup() + .addContainerGap() + .addComponent(radioAvDetector) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(radioAvPshell) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); jPanel1.setLayout(jPanel1Layout); jPanel1Layout.setHorizontalGroup( @@ -647,7 +710,8 @@ public class Eiger extends Panel { .addComponent(buttonTriggerDetector, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.PREFERRED_SIZE, 200, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, 201, Short.MAX_VALUE) .addComponent(buttonMeasurements, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addGap(0, 0, Short.MAX_VALUE))) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(panelNorm2, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) .addContainerGap()) ); @@ -659,8 +723,10 @@ public class Eiger extends Panel { .addContainerGap() .addComponent(panelNorm, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(panelNorm2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) .addComponent(panelNorm1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) .addComponent(buttonMeasurements) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(buttonShowDetectorPanel, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) @@ -745,7 +811,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, 427, Short.MAX_VALUE) + .addComponent(rendererRoi, javax.swing.GroupLayout.DEFAULT_SIZE, 448, Short.MAX_VALUE) .addGap(18, 18, 18) .addGroup(panelRoiLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING, false) .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 200, Short.MAX_VALUE) @@ -770,7 +836,7 @@ public class Eiger extends Panel { .addGap(18, 18, 18) .addComponent(jLabel26) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 223, Short.MAX_VALUE) + .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 250, Short.MAX_VALUE) .addGap(18, 18, 18) .addComponent(buttonRoiClear, javax.swing.GroupLayout.PREFERRED_SIZE, 25, javax.swing.GroupLayout.PREFERRED_SIZE) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) @@ -796,124 +862,7 @@ public class Eiger extends Panel { } }); - panelFirstImage.setBorder(javax.swing.BorderFactory.createTitledBorder("First Image")); - - jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel4.setText("Exposure(s):"); - - spinnerImgExp1.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 3600.0d, 1.0d)); - - jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel9.setText("Average:"); - - spinnerImgAvg1.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1)); - - labelImgEng1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelImgEng1.setText("Energy:"); - - spinnerImgEng1.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2000.0d, 1.0d)); - - javax.swing.GroupLayout panelFirstImageLayout = new javax.swing.GroupLayout(panelFirstImage); - panelFirstImage.setLayout(panelFirstImageLayout); - panelFirstImageLayout.setHorizontalGroup( - panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelFirstImageLayout.createSequentialGroup() - .addGroup(panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addGroup(panelFirstImageLayout.createSequentialGroup() - .addGap(14, 14, 14) - .addGroup(panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING))) - .addGroup(panelFirstImageLayout.createSequentialGroup() - .addContainerGap() - .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(labelImgEng1))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(spinnerImgExp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(spinnerImgAvg1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - panelFirstImageLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerImgAvg1, spinnerImgEng1, spinnerImgExp1}); - - panelFirstImageLayout.setVerticalGroup( - panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelFirstImageLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel4) - .addComponent(spinnerImgExp1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel9) - .addComponent(spinnerImgAvg1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelFirstImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(filler1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(labelImgEng1) - .addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(25, Short.MAX_VALUE)) - ); - - panelFirstImageLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {filler1, labelImgEng1}); - - panelSecondImage.setBorder(javax.swing.BorderFactory.createTitledBorder("Second Image")); - - jLabel12.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel12.setText("Exposure(s):"); - - spinnerImgExp2.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 3600.0d, 1.0d)); - - jLabel17.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - jLabel17.setText("Average:"); - - spinnerImgAvg2.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1)); - - labelImgEng2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelImgEng2.setText("Energy:"); - - spinnerImgEng2.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2000.0d, 1.0d)); - - javax.swing.GroupLayout panelSecondImageLayout = new javax.swing.GroupLayout(panelSecondImage); - panelSecondImage.setLayout(panelSecondImageLayout); - panelSecondImageLayout.setHorizontalGroup( - panelSecondImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSecondImageLayout.createSequentialGroup() - .addGap(14, 14, 14) - .addGroup(panelSecondImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(labelImgEng2, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel17, javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(jLabel12, javax.swing.GroupLayout.Alignment.TRAILING)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSecondImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(spinnerImgExp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(spinnerImgAvg2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - - panelSecondImageLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerImgAvg2, spinnerImgEng2, spinnerImgExp2}); - - panelSecondImageLayout.setVerticalGroup( - panelSecondImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(panelSecondImageLayout.createSequentialGroup() - .addContainerGap() - .addGroup(panelSecondImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel12) - .addComponent(spinnerImgExp2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSecondImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(jLabel17) - .addComponent(spinnerImgAvg2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(panelSecondImageLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelImgEng2) - .addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addContainerGap(25, Short.MAX_VALUE)) - ); + panelImgControls.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); checkImgAutosave.setSelected(true); checkImgAutosave.setText("Autosave"); @@ -937,45 +886,101 @@ public class Eiger extends Panel { } }); + jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel4.setText("Exposure(s):"); + + spinnerImgExp.setModel(new javax.swing.SpinnerNumberModel(1.0d, 0.0d, 3600.0d, 1.0d)); + + jLabel9.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + jLabel9.setText("Average:"); + + spinnerImgAvg.setModel(new javax.swing.SpinnerNumberModel(1, 1, 1000, 1)); + + labelImgEng2.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelImgEng2.setText("Energy 1:"); + + spinnerImgEng2.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2000.0d, 1.0d)); + + spinnerImgEng1.setModel(new javax.swing.SpinnerNumberModel(1000.0d, 90.0d, 2000.0d, 1.0d)); + + labelImgEng1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelImgEng1.setText("Energy 2:"); + javax.swing.GroupLayout jPanel5Layout = new javax.swing.GroupLayout(jPanel5); jPanel5.setLayout(jPanel5Layout); jPanel5Layout.setHorizontalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(labelSwitching) - .addComponent(jLabel21) - .addComponent(jLabel20)) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel5Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel20, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel21, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(labelSwitching, javax.swing.GroupLayout.Alignment.TRAILING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(comboSwitch, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(spinnerImgMeasurements) + .addComponent(comboImgMethod, 0, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGroup(jPanel5Layout.createSequentialGroup() + .addGap(118, 118, 118) + .addComponent(checkImgAutosave, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) + .addGap(18, 62, Short.MAX_VALUE) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(jLabel9, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(jLabel4, javax.swing.GroupLayout.Alignment.TRAILING)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.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)) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(spinnerImgAvg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(spinnerImgExp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addGap(18, 62, Short.MAX_VALUE) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelImgEng1, javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(labelImgEng2, javax.swing.GroupLayout.Alignment.TRAILING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); + jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerImgAvg, spinnerImgEng1, spinnerImgEng2, spinnerImgExp}); + jPanel5Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {checkImgAutosave, comboImgMethod, comboSwitch, spinnerImgMeasurements}); jPanel5Layout.setVerticalGroup( jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel5Layout.createSequentialGroup() .addContainerGap() - .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(comboImgMethod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(jLabel21)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel5Layout.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)) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addGroup(jPanel5Layout.createSequentialGroup() + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(labelImgEng2) + .addComponent(spinnerImgEng2, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelImgEng1) + .addComponent(spinnerImgEng1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jPanel5Layout.createSequentialGroup() + .addGroup(jPanel5Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) + .addComponent(comboImgMethod, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(jLabel21) + .addComponent(jLabel4) + .addComponent(spinnerImgExp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel5Layout.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) + .addComponent(jLabel9) + .addComponent(spinnerImgAvg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))) .addGap(6, 6, 6) .addGroup(jPanel5Layout.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)) .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) .addComponent(checkImgAutosave) - .addContainerGap()) + .addContainerGap(17, Short.MAX_VALUE)) ); javax.swing.GroupLayout panelImgControlsLayout = new javax.swing.GroupLayout(panelImgControls); @@ -985,106 +990,131 @@ public class Eiger extends Panel { .addGroup(panelImgControlsLayout.createSequentialGroup() .addContainerGap() .addComponent(jPanel5, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) - .addComponent(panelFirstImage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, Short.MAX_VALUE) - .addComponent(panelSecondImage, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addContainerGap()) ); - - panelImgControlsLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {panelFirstImage, panelSecondImage}); - panelImgControlsLayout.setVerticalGroup( panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(panelImgControlsLayout.createSequentialGroup() .addContainerGap() - .addGroup(panelImgControlsLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(panelFirstImage, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(panelSecondImage, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(jPanel5, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(19, Short.MAX_VALUE)) + ); + + dvpEnergya3.setDeviceName("energy"); + + dvpOffID1b.setDeviceName("id1_offset"); + + dvpModeID2b.setDeviceName("id2_pol"); + + dvpOffID2b.setDeviceName("id2_offset"); + + labelEnergya3.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelEnergya3.setText("Energy:"); + + labelOffID2a.setText("Offset ID2:"); + + labelOffID1a.setText("Offset ID1:"); + + dvpModeID1b.setDeviceName("id1_pol"); + + labelModeID1b.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelModeID1b.setText("Mode ID1:"); + + labelModeID2b.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelModeID2b.setText("Mode ID2:"); + + javax.swing.GroupLayout jPanel9Layout = new javax.swing.GroupLayout(jPanel9); + jPanel9.setLayout(jPanel9Layout); + jPanel9Layout.setHorizontalGroup( + jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel9Layout.createSequentialGroup() + .addGap(24, 24, 24) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel9Layout.createSequentialGroup() + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) + .addComponent(labelModeID2b, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(labelModeID1b, javax.swing.GroupLayout.Alignment.LEADING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dvpModeID1b, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(dvpModeID2b, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) + .addGap(18, 18, 18) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelOffID1a) + .addComponent(labelOffID2a)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dvpOffID2b, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(dvpOffID1b, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jPanel9Layout.createSequentialGroup() + .addComponent(labelEnergya3) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(dvpEnergya3, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel9Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpEnergya3, dvpModeID1b, dvpModeID2b, dvpOffID1b, dvpOffID2b}); + + jPanel9Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelEnergya3, labelModeID1b, labelModeID2b, labelOffID1a, labelOffID2a}); + + jPanel9Layout.setVerticalGroup( + jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel9Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelEnergya3) + .addComponent(dvpEnergya3, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelModeID1b) + .addComponent(dvpModeID1b, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(labelOffID1a) + .addComponent(dvpOffID1b, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel9Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelModeID2b) + .addComponent(dvpModeID2b, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(labelOffID2a) + .addComponent(dvpOffID2b, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) .addContainerGap()) ); - panelImgControlsLayout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {jPanel5, panelFirstImage, panelSecondImage}); - - dvpModeID2a.setDeviceName("id2_pol"); - - labelEnergya.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelEnergya.setText("Energy:"); - - labelModeID2a.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelModeID2a.setText("Mode ID2:"); - - dvpEnergya.setDeviceName("energy"); - - dvpModeID1a.setDeviceName("id1_pol"); - - labelModeID1a.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelModeID1a.setText("Mode ID1:"); + jPanel9Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpEnergya3, dvpModeID1b, dvpModeID2b, dvpOffID1b, dvpOffID2b}); javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2); jPanel2.setLayout(jPanel2Layout); jPanel2Layout.setHorizontalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(panelImgControls, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(35, 35, 35) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(buttonImgStart) - .addGap(76, 76, 76) - .addComponent(buttonImgAbort) - .addGap(0, 0, Short.MAX_VALUE)) - .addGroup(jPanel2Layout.createSequentialGroup() - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(labelEnergya) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(labelModeID2a, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(labelModeID1a, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addComponent(dvpModeID1a, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(dvpModeID2a, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(dvpEnergya, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(0, 0, Short.MAX_VALUE))))) - .addContainerGap()) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel2Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonImgStart) + .addGap(76, 76, 76) + .addComponent(buttonImgAbort) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(panelImgControls, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel9, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonImgAbort, buttonImgStart}); - jPanel2Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpEnergya, dvpModeID1a, dvpModeID2a}); - jPanel2Layout.setVerticalGroup( jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel2Layout.createSequentialGroup() - .addGap(18, 18, 18) + .addContainerGap() .addComponent(panelImgControls, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(18, 18, Short.MAX_VALUE) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelModeID1a) - .addComponent(dvpModeID1a, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelModeID2a) - .addComponent(dvpModeID2a, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelEnergya) - .addComponent(dvpEnergya, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addGap(18, 18, 18) + .addGap(18, 41, Short.MAX_VALUE) + .addComponent(jPanel9, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, 42, Short.MAX_VALUE) .addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonImgStart) .addComponent(buttonImgAbort)) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(65, Short.MAX_VALUE)) ); - jPanel2Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpEnergya, dvpModeID1a, dvpModeID2a}); - jTabbedPane1.addTab("2-Images", jPanel2); + panelSpectrum.setBorder(javax.swing.BorderFactory.createTitledBorder("Parameters")); + jLabel23.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); jLabel23.setText("Exposure(s):"); @@ -1225,9 +1255,9 @@ public class Eiger extends Panel { .addComponent(spinnerSpecScans, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerSpecExp, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) .addComponent(spinnerSpecAvg, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 6, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 21, Short.MAX_VALUE) .addComponent(jPanel4, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addContainerGap(27, Short.MAX_VALUE)) ); panelSpectrumLayout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {spinnerSpecAvg, spinnerSpecExp, spinnerSpecScans}); @@ -1276,81 +1306,119 @@ public class Eiger extends Panel { } }); - labelModeID1b.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelModeID1b.setText("Mode ID1:"); + dvpEnergya.setDeviceName("energy"); - dvpModeID1b.setDeviceName("id1_pol"); + dvpOffID1a.setDeviceName("id1_offset"); - dvpModeID2b.setDeviceName("id2_pol"); + dvpModeID2a.setDeviceName("id2_pol"); - labelModeID2b.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelModeID2b.setText("Mode ID2:"); + dvpOffID2a.setDeviceName("id2_offset"); - labelEnergyb.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); - labelEnergyb.setText("Energy:"); + labelEnergya.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelEnergya.setText("Energy:"); - dvpEnergyb.setDeviceName("energy"); + labelOffID2b.setText("Offset ID2:"); + + labelOffID1b.setText("Offset ID1:"); + + dvpModeID1a.setDeviceName("id1_pol"); + + labelModeID1a.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelModeID1a.setText("Mode ID1:"); + + labelModeID2a.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING); + labelModeID2a.setText("Mode ID2:"); + + javax.swing.GroupLayout jPanel6Layout = new javax.swing.GroupLayout(jPanel6); + jPanel6.setLayout(jPanel6Layout); + jPanel6Layout.setHorizontalGroup( + jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createSequentialGroup() + .addGap(24, 24, 24) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createSequentialGroup() + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) + .addComponent(labelModeID2a, javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelModeID1a, javax.swing.GroupLayout.Alignment.LEADING)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dvpModeID1a, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) + .addComponent(dvpModeID2a, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) + .addGap(18, 18, 18) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(labelOffID1b) + .addComponent(labelOffID2b)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addComponent(dvpOffID2a, javax.swing.GroupLayout.PREFERRED_SIZE, 60, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(dvpOffID1a, javax.swing.GroupLayout.PREFERRED_SIZE, 62, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addGroup(jPanel6Layout.createSequentialGroup() + .addComponent(labelEnergya) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(dvpEnergya, javax.swing.GroupLayout.PREFERRED_SIZE, 92, javax.swing.GroupLayout.PREFERRED_SIZE))) + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + ); + + jPanel6Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpEnergya, dvpModeID1a, dvpModeID2a, dvpOffID1a, dvpOffID2a}); + + jPanel6Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {labelEnergya, labelModeID1a, labelModeID2a, labelOffID1b, labelOffID2b}); + + jPanel6Layout.setVerticalGroup( + jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanel6Layout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelEnergya) + .addComponent(dvpEnergya, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelModeID1a) + .addComponent(dvpModeID1a, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(labelOffID1b) + .addComponent(dvpOffID1a, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addGroup(jPanel6Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) + .addComponent(labelModeID2a) + .addComponent(dvpModeID2a, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addComponent(labelOffID2b) + .addComponent(dvpOffID2a, javax.swing.GroupLayout.PREFERRED_SIZE, 20, javax.swing.GroupLayout.PREFERRED_SIZE)) + .addContainerGap()) + ); + + jPanel6Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpEnergya, dvpModeID1a, dvpModeID2a, dvpOffID1a, dvpOffID2a}); + + jPanel6Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {labelEnergya, labelModeID1a, labelModeID2a, labelOffID1b, labelOffID2b}); javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3); jPanel3.setLayout(jPanel3Layout); jPanel3Layout.setHorizontalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel3Layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(buttonSpecStart) - .addGap(76, 76, 76) - .addComponent(buttonSpecAbort) - .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(panelSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - .addContainerGap()) - .addGroup(jPanel3Layout.createSequentialGroup() - .addGap(35, 35, 35) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING) - .addComponent(labelEnergyb) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(labelModeID2b, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addComponent(labelModeID1b, javax.swing.GroupLayout.Alignment.LEADING))) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false) - .addComponent(dvpModeID2b, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE) - .addComponent(dvpEnergyb, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 92, Short.MAX_VALUE) - .addComponent(dvpModeID1b, javax.swing.GroupLayout.PREFERRED_SIZE, 0, Short.MAX_VALUE)) + .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel3Layout.createSequentialGroup() + .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(buttonSpecStart) + .addGap(76, 76, 76) + .addComponent(buttonSpecAbort) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + .addComponent(panelSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel6, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) ); jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {buttonSpecAbort, buttonSpecStart}); - jPanel3Layout.linkSize(javax.swing.SwingConstants.HORIZONTAL, new java.awt.Component[] {dvpEnergyb, dvpModeID1b, dvpModeID2b}); - jPanel3Layout.setVerticalGroup( jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) .addGroup(jPanel3Layout.createSequentialGroup() .addContainerGap() .addComponent(panelSpectrum, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGap(18, 18, 18) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelModeID1b) - .addComponent(dvpModeID1b, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelModeID2b) - .addComponent(dvpModeID2b, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.CENTER) - .addComponent(labelEnergyb) - .addComponent(dvpEnergyb, javax.swing.GroupLayout.PREFERRED_SIZE, 17, javax.swing.GroupLayout.PREFERRED_SIZE)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 18, Short.MAX_VALUE) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) + .addComponent(jPanel6, 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) .addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) .addComponent(buttonSpecStart) .addComponent(buttonSpecAbort)) .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); - jPanel3Layout.linkSize(javax.swing.SwingConstants.VERTICAL, new java.awt.Component[] {dvpEnergyb, dvpModeID1b, dvpModeID2b}); - jTabbedPane1.addTab("Absorption Spectrum", jPanel3); javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this); @@ -1623,9 +1691,26 @@ public class Eiger extends Panel { } }//GEN-LAST:event_buttonRoiOpenActionPerformed + private void radioAvDetectorActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioAvDetectorActionPerformed + try { + setSetting("AVERAGING_DETECTOR", true); + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_radioAvDetectorActionPerformed + + private void radioAvPshellActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_radioAvPshellActionPerformed + try { + setSetting("AVERAGING_DETECTOR", false); + } catch (Exception ex) { + showException(ex); + } + }//GEN-LAST:event_radioAvPshellActionPerformed + // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton buttonAdd; private javax.swing.JButton buttonClear; + private javax.swing.ButtonGroup buttonGroup1; private javax.swing.JButton buttonImgAbort; private javax.swing.JButton buttonImgStart; private javax.swing.JToggleButton buttonMeasurements; @@ -1650,15 +1735,30 @@ public class Eiger extends Panel { private javax.swing.JCheckBox checkSpecWithI0; private javax.swing.JComboBox comboImgMethod; private javax.swing.JComboBox comboSwitch; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel10; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel11; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel6; + private ch.psi.pshell.swing.DeviceValuePanel deviceValuePanel7; private ch.psi.pshell.swing.DeviceValuePanel dvpEnergya; - private ch.psi.pshell.swing.DeviceValuePanel dvpEnergyb; + private ch.psi.pshell.swing.DeviceValuePanel dvpEnergya1; + private ch.psi.pshell.swing.DeviceValuePanel dvpEnergya2; + private ch.psi.pshell.swing.DeviceValuePanel dvpEnergya3; private ch.psi.pshell.swing.DeviceValuePanel dvpModeID1a; + private ch.psi.pshell.swing.DeviceValuePanel dvpModeID1a1; + private ch.psi.pshell.swing.DeviceValuePanel dvpModeID1a2; private ch.psi.pshell.swing.DeviceValuePanel dvpModeID1b; private ch.psi.pshell.swing.DeviceValuePanel dvpModeID2a; + private ch.psi.pshell.swing.DeviceValuePanel dvpModeID2a1; + private ch.psi.pshell.swing.DeviceValuePanel dvpModeID2a2; private ch.psi.pshell.swing.DeviceValuePanel dvpModeID2b; - private javax.swing.Box.Filler filler1; - private javax.swing.JLabel jLabel12; - private javax.swing.JLabel jLabel17; + private ch.psi.pshell.swing.DeviceValuePanel dvpOffID1a; + private ch.psi.pshell.swing.DeviceValuePanel dvpOffID1b; + private ch.psi.pshell.swing.DeviceValuePanel dvpOffID2a; + private ch.psi.pshell.swing.DeviceValuePanel dvpOffID2b; + private javax.swing.JLabel jLabel10; + private javax.swing.JLabel jLabel11; + private javax.swing.JLabel jLabel18; + private javax.swing.JLabel jLabel19; private javax.swing.JLabel jLabel20; private javax.swing.JLabel jLabel21; private javax.swing.JLabel jLabel23; @@ -1675,32 +1775,45 @@ public class Eiger extends Panel { private javax.swing.JPanel jPanel3; private javax.swing.JPanel jPanel4; private javax.swing.JPanel jPanel5; + private javax.swing.JPanel jPanel6; + private javax.swing.JPanel jPanel7; + private javax.swing.JPanel jPanel8; + private javax.swing.JPanel jPanel9; private javax.swing.JScrollPane jScrollPane1; private javax.swing.JScrollPane jScrollPane2; private javax.swing.JTabbedPane jTabbedPane1; private javax.swing.JLabel labelEnergya; - private javax.swing.JLabel labelEnergyb; + private javax.swing.JLabel labelEnergya1; + private javax.swing.JLabel labelEnergya2; + private javax.swing.JLabel labelEnergya3; private javax.swing.JLabel labelImgEng1; private javax.swing.JLabel labelImgEng2; private javax.swing.JLabel labelModeID1a; + private javax.swing.JLabel labelModeID1a1; + private javax.swing.JLabel labelModeID1a2; private javax.swing.JLabel labelModeID1b; private javax.swing.JLabel labelModeID2a; + private javax.swing.JLabel labelModeID2a1; + private javax.swing.JLabel labelModeID2a2; private javax.swing.JLabel labelModeID2b; + private javax.swing.JLabel labelOffID1a; + private javax.swing.JLabel labelOffID1b; + private javax.swing.JLabel labelOffID2a; + private javax.swing.JLabel labelOffID2b; private javax.swing.JLabel labelSwitching; - private javax.swing.JPanel panelFirstImage; private javax.swing.JPanel panelImgControls; private javax.swing.JPanel panelNorm; private javax.swing.JPanel panelNorm1; + private javax.swing.JPanel panelNorm2; private javax.swing.JPanel panelRoi; - private javax.swing.JPanel panelSecondImage; private javax.swing.JPanel panelSpectrum; + private javax.swing.JRadioButton radioAvDetector; + private javax.swing.JRadioButton radioAvPshell; private ch.psi.pshell.imaging.Renderer rendererRoi; - private javax.swing.JSpinner spinnerImgAvg1; - private javax.swing.JSpinner spinnerImgAvg2; + private javax.swing.JSpinner spinnerImgAvg; private javax.swing.JSpinner spinnerImgEng1; private javax.swing.JSpinner spinnerImgEng2; - private javax.swing.JSpinner spinnerImgExp1; - private javax.swing.JSpinner spinnerImgExp2; + private javax.swing.JSpinner spinnerImgExp; private javax.swing.JSpinner spinnerImgMeasurements; private javax.swing.JSpinner spinnerOutliersThreshold; private javax.swing.JSpinner spinnerSpecAvg; diff --git a/script/devices/LEEM2000.py b/script/devices/LEEM2000.py index 31b19f4..e167b80 100644 --- a/script/devices/LEEM2000.py +++ b/script/devices/LEEM2000.py @@ -8,6 +8,7 @@ class LEEM2000(TcpDevice): self._mnemonics = None self._names = None self.high_voltage = Channel("X11MA-ES1-PEEM:UMON", alias = "PEEM high voltage", monitored=True) + self.debug = False def doInitialize(self): super(LEEM2000, self).doInitialize() @@ -37,7 +38,8 @@ class LEEM2000(TcpDevice): value = float(ret) return value except: - self.getLogger().info("Received invalid value for %s: %s" % (name, ret)) + if self.debug: + self.getLogger().info("Received invalid value for %s: %s" % (name, ret)) return None def set_value(self, name, value, timeout = 1000, retries = 1): diff --git a/script/devices/eiger.py b/script/devices/eiger.py index 99a951f..de64004 100644 --- a/script/devices/eiger.py +++ b/script/devices/eiger.py @@ -86,7 +86,7 @@ def average_frames(source, samples=1, roi=None, wait_next=False, sleep=0, as_flo def integrate_frames(source, samples=1, roi=None, wait_next=False, sleep=0, as_float=True): return integrate_ips(grab_frames(source, samples, roi, wait_next, sleep), as_float) """ -def grab_frame(source, roi=None, wait_next=False, outliers_threshold=None, outliers_mask=None): +def grab_frame(source, roi=None, wait_next=False, outliers_threshold=None, outliers_mask=None): if outliers_threshold is None: outliers_threshold = get_outliers_threshold() if outliers_mask is None: @@ -94,6 +94,7 @@ def grab_frame(source, roi=None, wait_next=False, outliers_threshold=None, outli if wait_next: if str(eiger.grabMode)=="Single": + eiger.waitReady(5000) eiger.start() #eiger.getDataArray().waitCacheChange(2000) source.waitNext(20000 + int(eiger.exposure * 1000)) @@ -133,6 +134,7 @@ def average_frames(frames): return ret + def _timestamp(prec=0): t = time.time() s = time.strftime("%y/%m/%d %H:%M:%S", time.localtime(t)) @@ -176,6 +178,7 @@ def save_as_tiff(data, filename, check=False, show = False, parallel=True, metad _save_as_tiff(data, filename, check, show, metadata) def trigger_eiger(wait=False): + eiger.waitReady(5000) eiger.start() if wait: eiger.waitNewImage(20000) @@ -183,7 +186,7 @@ def trigger_eiger(wait=False): def get_eiger_exposure_readback(): return caget("X11MA-ES1-SD1:cam1:AcquireTime_RBV",'f') -def set_exposure_time(value, check = True, retries=3): +def set_exposure_time(value, check = True, retries=5): if value == eiger.getExposure(): return started = eiger.isStarted() @@ -238,9 +241,10 @@ def stop_eiger(): eiger.stop() eiger.grabMode=eiger.GrabMode.Single eiger.stop() - time.sleep(0.3) - if eiger.acquire.read() >0: - raise Exception("Error stopping Eiger") + eiger.waitReady(5000) + time.sleep(0.1) + #if eiger.acquire.read() >0: + # raise Exception("Error stopping Eiger") chrono_eiger = Chrono() @@ -257,6 +261,7 @@ def init_eiger(exposure=None, check=True, retries=2): set_eiger_number_of_frames(1) if exposure: set_exposure_time(exposure, check) + apply_averaging_detector(is_averaging_detector()) break except: if i==(retries-1): @@ -275,8 +280,9 @@ def restore_eiger(check=True, retries=2): eiger.setNumImages(1)# Is it relevant? set_eiger_number_of_frames(1, check) set_exposure_time(0.2, check) - eiger.grabMode=eiger.GrabMode.Continuous - eiger.start() + apply_averaging_detector(False) + eiger.grabMode=eiger.GrabMode.Continuous + eiger.start() chrono_eiger = Chrono() break except: @@ -285,6 +291,29 @@ def restore_eiger(check=True, retries=2): else: print "Error restoring Eiger, retrying " + str(sys.exc_info()[1]) +def is_averaging_detector(): + return str(get_setting("AVERAGING_DETECTOR")).lower()=="true" + +def apply_averaging_detector(value): + if value: + caput("X11MA-ES1-SD1:Proc1:EnableCallbacks", True) + caput("X11MA-ES1-SD1:Proc1:EnableFilter", True) + else: + caput("X11MA-ES1-SD1:Proc1:EnableFilter", False) + caput("X11MA-ES1-SD1:Proc1:NumFilter", 1) + caput("X11MA-ES1-SD1:cam1:NumCycles", 1) + + +def average_eiger_frames(samples, roi=None, wait_next=False, sleep=0, outliers_threshold=None, outliers_mask=None): + if is_averaging_detector(): + caput("X11MA-ES1-SD1:Proc1:NumFilter", samples) + caput("X11MA-ES1-SD1:cam1:NumCycles", samples) + return grab_frame(image, roi, wait_next, outliers_threshold, outliers_mask) + else: + ret = grab_frames(image, samples, roi, wait_next, sleep, outliers_threshold, outliers_mask) + return average_frames(ret) if samples > 1 else ret[0] + + _outliers_mask_timestamp = 0 _outliers_mask = None diff --git a/script/local.py b/script/local.py index c6987a4..6b9382e 100644 --- a/script/local.py +++ b/script/local.py @@ -437,6 +437,7 @@ def put_energy(v): def change_energy(v): if v<91 or v>2500: raise Exception ("Invalid energy: " + str(v)) + print "Setting energy: " + str(v) if DRY_RUN: return put_energy(v) diff --git a/script/templates/Eiger2Img.py b/script/templates/Eiger2Img.py index 5fde37d..980f9fb 100644 --- a/script/templates/Eiger2Img.py +++ b/script/templates/Eiger2Img.py @@ -5,14 +5,10 @@ if get_exec_pars().source == CommandSource.ui: SWITCHING = "Tune_Detune" MEASUREMENTS = 4 AUTO_SAVE = True - EXPOSURE_1 = 1.0 - AVERAGE_1 = 2.0 + EXPOSURE = 1.0 + AVERAGE = 2.0 ENERGY_1 = 850.0 - #POLARIZATION_1 = "Circ_Plus" - EXPOSURE_2 = 1.0 - AVERAGE_2 = 2.0 ENERGY_2= 900.0 - #POLARIZATION_2 = "Circ_Minus" DRY_RUN = get_dry_run() @@ -21,8 +17,6 @@ SAVE_DIAGS = True ID = get_setting("ID") -EXPOSURE = [EXPOSURE_1, EXPOSURE_2] -AVERAGE = [int(AVERAGE_1), int(AVERAGE_2)] ENERGY = [ENERGY_1, ENERGY_2] #POLARIZATION = [POLARIZATION_1, POLARIZATION_2] @@ -117,7 +111,7 @@ def save_image_file(frame, cycle=-1, frame_index=0): print filename # log("SV:"+Format(startvoltage,"0.000")+" OB:"+Format(objective,"0.00")+" ST:"+Format(LEEMtemp,"0.0")) -init_eiger() +init_eiger(exposure=EXPOSURE) #print "Startup time: " + str(time.time() - start) try: #Do the measurement loop @@ -132,13 +126,12 @@ try: for i in range(2): if (cycle == 1) or (METHOD != "Take_Image"): - assert_status_ok() - set_exposure_time(EXPOSURE[i]) - print "--- Grabing " + str(AVERAGE[i])+ " frames - cycle: " + str(cycle) + " step: " + str(i) + assert_status_ok() + print "--- Grabing " + str(AVERAGE)+ " frames - cycle: " + str(cycle) + " step: " + str(i) #s=time.time() - ret = grab_frames(image, AVERAGE[i], roi=None, wait_next=True) + av = average_eiger_frames(AVERAGE, roi=None, wait_next=True) #print "--- Time: " + str(time.time() - s) - frames.append(average_frames(ret) if AVERAGE[i] > 1 else ret[0]) + frames.append(av) imageinfo("I") save_image_file(frames[i], cycle, i) @@ -150,7 +143,6 @@ try: print "--- Switching polatization..." switch_pol() if METHOD == "Two_Energies": - print "--- Switching energy..." change_energy(ENERGY_2) #time.sleep(1) diff --git a/script/templates/EigerAbsSpec.py b/script/templates/EigerAbsSpec.py index 2f95069..32e260e 100644 --- a/script/templates/EigerAbsSpec.py +++ b/script/templates/EigerAbsSpec.py @@ -59,9 +59,9 @@ if WITH_I0: av=None def grab_image(position, scan): - global av - frames = grab_frames(image, AVERAGE, roi=None, wait_next=True) - av = average_frames(frames) + global av + av = average_eiger_frames(AVERAGE, roi=None, wait_next=True) + if SAVE_IMAGES: #Scan_Nr = (scan.recordIndex-1)/NUMBER_SCANS #filename = get_exec_pars().path + "/" + ("%02d" % Scan_Nr) + "/s" + "{seq}%03d" + "_" + ("%03d.tif" % scan.recordIndex)