Print

Print


Author: mccaky
Date: Wed Nov  5 04:08:38 2014
New Revision: 1435

Log:
Fixed event display to keep filtered highlighting when events change.

Modified:
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/CalorimeterPanel.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/DataFileViewer.java
    java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/FileViewer.java

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/io/LCIOManager.java	Wed Nov  5 04:08:38 2014
@@ -47,10 +47,18 @@
         nextEvent();
     }
     
+    /**
+     * Sets the name of the LCIO collection for cluster objects.
+     * @param clusterCollectionName - The cluster collection name.
+     */
     public void setClusterCollectionName(String clusterCollectionName) {
         this.clusterCollectionName = clusterCollectionName;
     }
     
+    /**
+     * Sets the name of the LCIO collection for hit objects.
+     * @param hitCollectionName
+     */
     public void setHitCollectionName(String hitCollectionName) {
         this.hitCollectionName = hitCollectionName;
     }
@@ -69,6 +77,8 @@
         else { return -1; }
     }
     
+    // TODO: LCIO files can't actually store an HPSEcalCluster; this
+    // needs to be converted to use regular LCIO clusters instead.
     @Override
     public List<Cluster> getClusters() {
         // If the current event is undefined, return an empty list.
@@ -181,6 +191,8 @@
         }
     }
     
+    // TODO: LCIO files can't actually store an HPSEcalCluster; this
+    // needs to be converted to use regular LCIO clusters instead.
     public static final Cluster toPanelCluster(HPSEcalCluster lcioCluster) {
         // If the argument is null, return null.
         if(lcioCluster == null) { return null; }
@@ -199,6 +211,8 @@
         if(lcioHit == null) { return null; }
         
         // Otherwise, get the cluster x/y indices and energy.
+        // TODO: This fails to acquire an IDDecoder; needs to be fixed
+        // before it can be pushed into production.
         int ix = lcioHit.getIdentifierFieldValue("ix");
         int iy = lcioHit.getIdentifierFieldValue("iy");
         double energy = lcioHit.getCorrectedEnergy();

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/CalorimeterPanel.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/CalorimeterPanel.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/CalorimeterPanel.java	Wed Nov  5 04:08:38 2014
@@ -31,7 +31,7 @@
  */
 public final class CalorimeterPanel extends JPanel {
     // Java-suggested variable.
-    private static final long serialVersionUID = 2L;
+    private static final long serialVersionUID = 3L;
     // The color used for rendering seed hits.
     private Color clusterColor = Color.GREEN;
     // The default color of the calorimeter crystals.
@@ -209,10 +209,28 @@
      * clears all highlighting. This <b>does not</b> enable disabled
      * crystals.
      */
+    public void clearAll() {
+        for (int ix = 0; ix < xBoxes; ix++) {
+            for (int iy = 0; iy < yBoxes; iy++) {
+                crystal[ix][iy].setState(0.0, false, null);
+                crystal[ix][iy].clearAssociations();
+                extremum[0] = Double.MAX_VALUE;
+                extremum[1] = 0.0;
+            }
+        }
+    }
+    
+    /**
+     * Sets all crystal energies to zero, removes all clusters, and
+     * clears all highlighting associated with an individual crystal.
+     * This <b>does not</b> enable disabled crystals or remove general
+     * highlighting.
+     */
     public void clearCrystals() {
         for (int ix = 0; ix < xBoxes; ix++) {
             for (int iy = 0; iy < yBoxes; iy++) {
-                crystal[ix][iy].setState(0.0, false, null);
+                crystal[ix][iy].setEnergy(0.0);
+                crystal[ix][iy].setClusterCenter(false);
                 crystal[ix][iy].clearAssociations();
                 extremum[0] = Double.MAX_VALUE;
                 extremum[1] = 0.0;

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/DataFileViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/DataFileViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/DataFileViewer.java	Wed Nov  5 04:08:38 2014
@@ -97,6 +97,9 @@
         filterPanel.addActionListener(new ActionListener() {
             @Override
             public void actionPerformed(ActionEvent e) {
+            	// Suppress panel redrawing until the highlights are set.
+            	ecalPanel.setSuppressRedraw(true);
+            	
                 // Clear the panel highlighting.
                 ecalPanel.clearHighlight();
                 
@@ -111,6 +114,10 @@
                         ecalPanel.setCrystalHighlight(toPanelPoint(crystal), java.awt.Color.WHITE);
                     }
                 }
+                
+                // Redraw the highlights.
+                ecalPanel.setSuppressRedraw(false);
+                ecalPanel.repaint();
             }
         });
         

Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/FileViewer.java
 =============================================================================
--- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/FileViewer.java	(original)
+++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/FileViewer.java	Wed Nov  5 04:08:38 2014
@@ -32,7 +32,7 @@
  * @author Kyle McCarty
  */
 public class FileViewer extends Viewer {
-    private static final long serialVersionUID = 17058336873349781L;
+    private static final long serialVersionUID = 3L;
     
     // Gets events from some file.
     protected EventManager em = null;