Author: mccaky Date: Sun Nov 9 05:14:46 2014 New Revision: 1461 Log: Updated passive event display Viewer objects to be able to take CalorimeterHit and HPSEcalCluster objects directly. Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java ============================================================================= --- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java (original) +++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PEventViewer.java Sun Nov 9 05:14:46 2014 @@ -6,6 +6,8 @@ import org.hps.monitoring.ecal.eventdisplay.event.Association; import org.hps.monitoring.ecal.eventdisplay.event.Cluster; import org.hps.monitoring.ecal.eventdisplay.event.EcalHit; +import org.hps.recon.ecal.HPSEcalCluster; +import org.lcsim.event.CalorimeterHit; /** * Class <code>PEventViewer</code> represents a <code>PassiveViewer @@ -21,10 +23,16 @@ protected ArrayList<EcalHit> hitList = new ArrayList<EcalHit>(); @Override + public void addHit(CalorimeterHit lcioHit) { hitList.add(toPanelHit(lcioHit)); } + + @Override public void addHit(EcalHit hit) { hitList.add(hit); } @Override public void addCluster(Cluster cluster) { clusterList.add(cluster); } + + @Override + public void addCluster(HPSEcalCluster lcioCluster) { clusterList.add(toPanelCluster(lcioCluster)); } /** * Removes all of the hit data from the viewer. Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java ============================================================================= --- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java (original) +++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/POccupancyViewer.java Sun Nov 9 05:14:46 2014 @@ -6,6 +6,8 @@ import org.hps.monitoring.ecal.eventdisplay.event.Cluster; import org.hps.monitoring.ecal.eventdisplay.event.EcalHit; +import org.hps.recon.ecal.HPSEcalCluster; +import org.lcsim.event.CalorimeterHit; /** * The class <code>POccupancyViewer</code> is an extension of the <code> @@ -39,6 +41,16 @@ } @Override + public void addHit(CalorimeterHit lcioHit) { + // Get the panel coordinates from the hit. + int ix = toPanelX(lcioHit.getIdentifierFieldValue("ix")); + int iy = toPanelX(lcioHit.getIdentifierFieldValue("iy")); + + // Increment the hit count at the indicated location. + hits[ix][iy]++; + } + + @Override public void addHit(EcalHit hit) { // Get the panel coordinates of the hit. int ix = toPanelX(hit.getX()); @@ -52,7 +64,15 @@ * Adds a new cluster to the display.<br/><br/> * <b>Note:</b> This operation is not supported for occupancies. */ + @Override public void addCluster(Cluster cluster) { } + + /** + * Adds a new cluster to the display.<br/><br/> + * <b>Note:</b> This operation is not supported for occupancies. + */ + @Override + public void addCluster(HPSEcalCluster cluster) { } /** * Removes a hit from the display. @@ -117,4 +137,4 @@ // Update the status panel to account for the new event. updateStatusPanel(); } -} +} Modified: java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java ============================================================================= --- java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java (original) +++ java/trunk/ecal-event-display/src/main/java/org/hps/monitoring/ecal/eventdisplay/ui/PassiveViewer.java Sun Nov 9 05:14:46 2014 @@ -2,6 +2,8 @@ import org.hps.monitoring.ecal.eventdisplay.event.Cluster; import org.hps.monitoring.ecal.eventdisplay.event.EcalHit; +import org.hps.recon.ecal.HPSEcalCluster; +import org.lcsim.event.CalorimeterHit; /** * Abstract class <code>PassiveViewer</code> represents a <code>Viewer @@ -17,6 +19,12 @@ * Adds a new hit to the display. * @param hit - The hit to be added. */ + public abstract void addHit(CalorimeterHit lcioHit); + + /** + * Adds a new hit to the display. + * @param hit - The hit to be added. + */ public abstract void addHit(EcalHit hit); /** @@ -24,6 +32,12 @@ * @param cluster - The cluster to be added. */ public abstract void addCluster(Cluster cluster); + + /** + * Adds a new cluster to the display. + * @param cluster - The cluster to be added. + */ + public abstract void addCluster(HPSEcalCluster cluster); /** * Clears any hits or clusters that have been added to the viewer. @@ -38,7 +52,7 @@ * @param min - The lower bound. * @param max - The upper bound. */ - public void setScale(double min, double max) { //A.C. I modified these to double since ecalPanel methods use double + public void setScale(double min, double max) { ecalPanel.setScaleMinimum(min); ecalPanel.setScaleMaximum(max); } @@ -48,14 +62,61 @@ * scale. * @param max - The upper bound. */ - public void setScaleMaximum(double max) { ecalPanel.setScaleMaximum(max); } //A.C. I modified these to double since ecalPanel methods use double + public void setScaleMaximum(double max) { ecalPanel.setScaleMaximum(max); } /** * Sets the lower bound for the calorimeter display's color mapping * scale. * @param min - The lower bound. */ - public void setScaleMinimum(double min) { ecalPanel.setScaleMinimum(min); } //A.C. I modified these to double since ecalPanel methods use double + public void setScaleMinimum(double min) { ecalPanel.setScaleMinimum(min); } + + /** + * Converts an <code>HPSEcalCluster</code> object to a panel <code> + * Cluster</code> object. + * @param lcioCluster - The <code>HPSEcalCluster</code> object. + * @return Returns the argument cluster as a <code>Cluster</code> + * object that can be used with the <code>Viewer</code>. + */ + public static final Cluster toPanelCluster(HPSEcalCluster lcioCluster) { + // Get the cluster data from the LCIO cluster. + int ix = lcioCluster.getSeedHit().getIdentifierFieldValue("ix"); + int iy = lcioCluster.getSeedHit().getIdentifierFieldValue("iy"); + double energy = lcioCluster.getEnergy(); + + // Generate a new cluster. + Cluster panelCluster = new Cluster(ix, iy, energy); + + // Add any component hits to the cluster. + for(CalorimeterHit lcioHit : lcioCluster.getCalorimeterHits()) { + // Get the position of the calorimeter hit. + int hix = lcioHit.getIdentifierFieldValue("ix"); + int hiy = lcioHit.getIdentifierFieldValue("iy"); + + // Add the hit to the cluster. + panelCluster.addComponentHit(hix, hiy); + } + + // Return the cluster. + return panelCluster; + } + + /** + * Converts a <code>CalorimeterHit</code> object to a panel <code> + * EcalHit</code> object. + * @param lcioHit - The <code>CalorimeterHit</code> object. + * @return Returns the argument hit as an <code>EcalHit</code> + * object that can be used with the <code>Viewer</code>. + */ + public static final EcalHit toPanelHit(CalorimeterHit lcioHit) { + // Get the hit information from the LCIO hit/ + int ix = lcioHit.getIdentifierFieldValue("ix"); + int iy = lcioHit.getIdentifierFieldValue("iy"); + double energy = lcioHit.getCorrectedEnergy(); + + // Create the panel hit. + return new EcalHit(ix, iy, energy); + } /** * Displays the hits and clusters added by the <code>addHit</code>