Author: mccaky Date: Sat Dec 13 14:52:58 2014 New Revision: 1718 Log: Replaced waveform single channel plots with cluster energy plot. Waveform code is commented out, so it can be easily reactivated or placed in another IPlotter row if desired. Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java Modified: java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java ============================================================================= --- java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java (original) +++ java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/ecal/plots/EcalEventDisplay.java Sat Dec 13 14:52:58 2014 @@ -62,8 +62,9 @@ // Channel plot lists. private ArrayList<IHistogram1D> channelEnergyPlot; + private ArrayList<IHistogram1D> clusterEnergyPlot; private ArrayList<IHistogram1D> channelTimePlot; - private ArrayList<IHistogram1D> channelRawWaveform; + //private ArrayList<IHistogram1D> channelRawWaveform; private ArrayList<IHistogram2D> channelTimeVsEnergyPlot; // Internal variables. @@ -80,11 +81,13 @@ // Plot style and title variables. private static final String NO_TITLE = ""; - private static final String SIGNAL_TIME_TITLE = "Time (ns)"; + //private static final String SIGNAL_TIME_TITLE = "Time (ns)"; private static final String HIT_TIME_TITLE = "Hit Time (ns)"; private static final String SIGNAL_DATA_STYLE_COLOR = "orange"; + //private static final String RAW_WAVEFORM_TITLE = "Raw Waveform"; private static final String HIT_ENERGY_TITLE = "Hit Energy (GeV)"; - private static final String SIGNAL_AMPLITUDE_TITLE = "Signal Amplitude (mV)"; + private static final String CLUSTER_ENERGY_TITLE = "Cluster Energy (GeV)"; + //private static final String SIGNAL_AMPLITUDE_TITLE = "Signal Amplitude (mV)"; /** * Sets the upper bound of the energy scales used by the driver. @@ -153,14 +156,15 @@ aida.tree().cd("/"); // Store histograms for the crystals. - channelEnergyPlot = new ArrayList<IHistogram1D>(); - channelTimePlot = new ArrayList<IHistogram1D>(); - channelRawWaveform = new ArrayList<IHistogram1D>(); - channelTimeVsEnergyPlot = new ArrayList<IHistogram2D>(); + channelEnergyPlot = new ArrayList<IHistogram1D>(NUM_CHANNELS); + channelTimePlot = new ArrayList<IHistogram1D>(NUM_CHANNELS); + //channelRawWaveform = new ArrayList<IHistogram1D>(NUM_CHANNELS); + clusterEnergyPlot = new ArrayList<IHistogram1D>(NUM_CHANNELS); + channelTimeVsEnergyPlot = new ArrayList<IHistogram2D>(NUM_CHANNELS); // Create the histograms for single channel energy and time // distribution. - for(int ii = 0; ii < (47 * 11); ii++) { + for(int ii = 0; ii < NUM_CHANNELS; ii++) { // The above instruction is a terrible hack, just to fill // the arrayList with all the elements. They'll be initialized // properly during the event readout, Since we want to account @@ -173,15 +177,18 @@ // Initialize the histograms for the current crystal channel. channelEnergyPlot.add(aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Energy : " + column + " " + row - + ": " + ii, 100, -0.2, maxEch)); + + ": " + ii, 100, -0.2, maxEch)); channelTimePlot.add(aida.histogram1D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time : " + column + " " + row + ": " + ii, 100, 0, 400)); channelTimeVsEnergyPlot.add(aida.histogram2D(detector.getDetectorName() + " : " + inputCollection + " : Hit Time Vs Energy : " + column + " " + row + ": " + ii, 100, 0, 400, 100, -0.2, maxEch)); - channelRawWaveform.add(aida.histogram1D(detector.getDetectorName() + " : " - + inputCollection + " : Hit Energy : " + column + " " + row + ": " + ii)); + //channelRawWaveform.add(aida.histogram1D(detector.getDetectorName() + " : " + // + inputCollection + " : Hit Energy : " + column + " " + row + ": " + ii)); + clusterEnergyPlot.add(aida.histogram1D(detector.getDetectorName() + " : " + + inputCollection + " : Cluster Energy : " + column + " " + row + + ": " + ii, 100, -0.2, maxEch)); // Note that no raw waveform has yet been read for this // crystal/channel. @@ -213,14 +220,22 @@ pstyle.yAxisStyle().setLabel(HIT_ENERGY_TITLE); plotter.region(2).plot(channelTimeVsEnergyPlot.get(0), pstyle); + // Define the fourth plot region; this encompasses the cluster + // energy for each channel. + pstyle.xAxisStyle().setLabel(CLUSTER_ENERGY_TITLE); + pstyle.yAxisStyle().setLabel(NO_TITLE); + plotter.region(3).plot(clusterEnergyPlot.get(0), pstyle); + + /** // Define the fourth plot region; this encompasses the raw // wave form plots. - pstyle.xAxisStyle().setLabel(HIT_ENERGY_TITLE); + pstyle.xAxisStyle().setLabel(RAW_WAVEFORM_TITLE); pstyle.yAxisStyle().setLabel(NO_TITLE); pstyle.dataStyle().fillStyle().setColor(SIGNAL_DATA_STYLE_COLOR); pstyle.dataStyle().markerStyle().setColor(SIGNAL_DATA_STYLE_COLOR); pstyle.dataStyle().errorBarStyle().setVisible(false); plotter.region(3).plot(channelRawWaveform.get(0), pstyle); + **/ // Display the plot region. plotter.show(); @@ -322,10 +337,24 @@ // Iterate over the clusters and add them to the event // display if appropriate. for (HPSEcalCluster cluster : clusters) { + // Get the ix and iy indices for the seed. + int ix = cluster.getSeedHit().getIdentifierFieldValue("ix"); + int iy = cluster.getSeedHit().getIdentifierFieldValue("iy"); + + // Get the histogram index for the hit. + int id = ECalUtils.getHistoIDFromRowColumn(iy, ix); + + // Add the cluster energy to the plot. + if(cluster.getEnergy() > 0.0) { + clusterEnergyPlot.get(id).fill(cluster.getEnergy()); + } + + // If an update is needed, add the cluster to the viewer. if(update) { viewer.addCluster(cluster); } } } + /** // Plot the raw waveform only if raw tracker hit exist in the // event. if (event.hasCollection(RawTrackerHit.class, inputCollectionRaw)){ @@ -377,6 +406,7 @@ } } } + **/ // Update the single event display. if(update) { viewer.updateDisplay(); } @@ -422,8 +452,14 @@ pstyle.xAxisStyle().setLabel(HIT_TIME_TITLE); pstyle.yAxisStyle().setLabel(HIT_ENERGY_TITLE); plotter.region(2).plot(channelTimeVsEnergyPlot.get(id), pstyle); + + // Process and plot the region 3 plot. plotter.region(3).clear(); - + pstyle.xAxisStyle().setLabel(CLUSTER_ENERGY_TITLE); + pstyle.yAxisStyle().setLabel(NO_TITLE); + plotter.region(3).plot(clusterEnergyPlot.get(id), pstyle); + + /** // Process and plot the region 3 plot. if(!isFirstRaw[id]) { pstyle.yAxisStyle().setLabel(SIGNAL_AMPLITUDE_TITLE); @@ -437,6 +473,7 @@ pstyle.yAxisStyle().setLabel(""); } plotter.region(3).plot(channelRawWaveform.get(id), pstyle); + **/ } }