Author: [log in to unmask] Date: Thu Apr 2 10:07:10 2015 New Revision: 2657 Log: Updated diagnostic monitoring tables to use the new data system and updated the efficiency table format. Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTablePanel.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTriggerTablePanel.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTwoColumnTablePanel.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/ClusterTablePanel.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/DiagnosticUpdatable.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/EfficiencyTablePanel.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/PairTablePanel.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/SinglesTablePanel.java java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/TriggerDiagnosticGUIDriver.java Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTablePanel.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTablePanel.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTablePanel.java Thu Apr 2 10:07:10 2015 @@ -55,7 +55,7 @@ add(localTable); // Set the panels to their null starting values. - updatePanel(null); + updatePanel(null, null); // Define the panel layout. setLayout(null); Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTriggerTablePanel.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTriggerTablePanel.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTriggerTablePanel.java Thu Apr 2 10:07:10 2015 @@ -1,7 +1,7 @@ package org.hps.monitoring.trigger; -import org.hps.analysis.trigger.DiagSnapshot; -import org.hps.analysis.trigger.event.TriggerStatModule; +import org.hps.analysis.trigger.data.DiagnosticSnapshot; +import org.hps.analysis.trigger.data.TriggerStatModule; import org.hps.analysis.trigger.util.ComponentUtils; /** @@ -19,6 +19,11 @@ // Internal variables. private final int numCuts; + private final boolean singles; + + // Store reference index variables for local and run values. + private static final int GLOBAL = 0; + private static final int LOCAL = 1; // Reference variables to the default table rows. protected static final int ROW_RECON_COUNT = 0; @@ -35,19 +40,22 @@ * indicated cut names. * @param cutNames */ - public AbstractTriggerTablePanel(String[] cutNames) { + public AbstractTriggerTablePanel(String[] cutNames, boolean isSingles) { // Instantiate the superclass. super(makeTitle(cutNames)); // Store the number of cuts. numCuts = cutNames.length; - updatePanel(null); + updatePanel(null, null); + + // Store whether this is a singles or pair trigger panel. + singles = isSingles; } @Override - public void updatePanel(DiagSnapshot snapshot) { + public void updatePanel(DiagnosticSnapshot runSnapshot, DiagnosticSnapshot localSnapshot) { // If the snapshot is null, all values should be "N/A." - if(snapshot == null) { + if(runSnapshot == null || localSnapshot == null) { // Output cluster count data. String scalerNullValue = "---"; setLocalRowValue(ROW_RECON_COUNT, scalerNullValue); @@ -73,67 +81,84 @@ } } else { // Get the local and run trigger statistics from the snapshot. - TriggerStatModule lstat = getLocalModule(snapshot); - TriggerStatModule rstat = getRunModule(snapshot); + DiagnosticSnapshot[] stat = new DiagnosticSnapshot[2]; + stat[GLOBAL] = runSnapshot; + stat[LOCAL] = localSnapshot; + + // Get the appropriate trigger statistical modules. + TriggerStatModule[][] triggerStats = new TriggerStatModule[2][2]; + if(singles) { + triggerStats[LOCAL][0] = stat[LOCAL].getSingles0Stats(); + triggerStats[LOCAL][1] = stat[LOCAL].getSingles1Stats(); + triggerStats[GLOBAL][0] = stat[GLOBAL].getSingles0Stats(); + triggerStats[GLOBAL][1] = stat[GLOBAL].getSingles1Stats(); + } else { + triggerStats[LOCAL][0] = stat[LOCAL].getPair0Stats(); + triggerStats[LOCAL][1] = stat[LOCAL].getPair1Stats(); + triggerStats[GLOBAL][0] = stat[GLOBAL].getPair0Stats(); + triggerStats[GLOBAL][1] = stat[GLOBAL].getPair1Stats(); + } + + // Get the total number of triggers of each type. + int[] sspSimTriggers = new int[2]; + int[] sspBankTriggers = new int[2]; + int[] reconSimTriggers = new int[2]; + int[] sspMatchedTriggers = new int[2]; + int[] reconMatchedTriggers = new int[2]; + + for(int i = 0; i < 2; i++) { + sspSimTriggers[i] = triggerStats[i][0].getSSPSimulatedTriggers() + triggerStats[i][1].getSSPSimulatedTriggers(); + sspBankTriggers[i] = triggerStats[i][0].getReportedTriggers() + triggerStats[i][1].getReportedTriggers(); + sspBankTriggers[i] = triggerStats[i][0].getReconSimulatedTriggers() + triggerStats[i][1].getReconSimulatedTriggers(); + sspMatchedTriggers[i] = triggerStats[i][0].getMatchedSSPSimulatedTriggers() + triggerStats[i][1].getMatchedSSPSimulatedTriggers(); + reconMatchedTriggers[i] = triggerStats[i][0].getMatchedReconSimulatedTriggers() + triggerStats[i][1].getMatchedReconSimulatedTriggers(); + } // Determine the most spaces needed to display the values. // Get the largest number of digits in any of the values. - int mostDigits = ComponentUtils.max(lstat.getReconTriggerCount(), lstat.getSSPBankTriggerCount(), - lstat.getSSPSimTriggerCount(), rstat.getReconTriggerCount(), rstat.getSSPBankTriggerCount(), - rstat.getSSPSimTriggerCount()); + int mostDigits = ComponentUtils.max(reconSimTriggers[LOCAL], sspBankTriggers[LOCAL], + sspSimTriggers[LOCAL], reconSimTriggers[GLOBAL], sspBankTriggers[GLOBAL], + sspSimTriggers[GLOBAL]); int spaces = ComponentUtils.getDigits(mostDigits); // Update the single-value counters. String countFormat = "%" + spaces + "d"; - setLocalRowValue(ROW_RECON_COUNT, String.format(countFormat, lstat.getReconTriggerCount())); - setLocalRowValue(ROW_SSP_SIM_COUNT, String.format(countFormat, lstat.getSSPSimTriggerCount())); - setLocalRowValue(ROW_SSP_BANK_COUNT, String.format(countFormat, lstat.getSSPBankTriggerCount())); - setGlobalRowValue(ROW_RECON_COUNT, String.format(countFormat, rstat.getReconTriggerCount())); - setGlobalRowValue(ROW_SSP_SIM_COUNT, String.format(countFormat, rstat.getSSPSimTriggerCount())); - setGlobalRowValue(ROW_SSP_BANK_COUNT, String.format(countFormat, rstat.getSSPBankTriggerCount())); + setLocalRowValue(ROW_RECON_COUNT, String.format(countFormat, reconSimTriggers[LOCAL])); + setLocalRowValue(ROW_SSP_SIM_COUNT, String.format(countFormat, sspSimTriggers[LOCAL])); + setLocalRowValue(ROW_SSP_BANK_COUNT, String.format(countFormat, sspBankTriggers[LOCAL])); + setGlobalRowValue(ROW_RECON_COUNT, String.format(countFormat, reconSimTriggers[GLOBAL])); + setGlobalRowValue(ROW_SSP_SIM_COUNT, String.format(countFormat, sspSimTriggers[GLOBAL])); + setGlobalRowValue(ROW_SSP_BANK_COUNT, String.format(countFormat, sspBankTriggers[GLOBAL])); // Update the percentage counters. String percentFormat = "%" + spaces + "d / %" + spaces + "d (%7.3f)"; - setLocalRowValue(ROW_SSP_EFFICIENCY, String.format(percentFormat, lstat.getMatchedSSPTriggers(), - lstat.getSSPSimTriggerCount(), (100.0 * lstat.getMatchedSSPTriggers() / lstat.getSSPSimTriggerCount()))); - setLocalRowValue(ROW_TRIGGER_EFFICIENCY, String.format(percentFormat, lstat.getMatchedReconTriggers(), - lstat.getReconTriggerCount(), (100.0 * lstat.getMatchedReconTriggers() / lstat.getReconTriggerCount()))); - setGlobalRowValue(ROW_SSP_EFFICIENCY, String.format(percentFormat, rstat.getMatchedSSPTriggers(), - rstat.getSSPSimTriggerCount(), (100.0 * rstat.getMatchedSSPTriggers() / rstat.getSSPSimTriggerCount()))); - setGlobalRowValue(ROW_TRIGGER_EFFICIENCY, String.format(percentFormat, lstat.getMatchedReconTriggers(), - rstat.getReconTriggerCount(), (100.0 * rstat.getMatchedReconTriggers() / rstat.getReconTriggerCount()))); + setLocalRowValue(ROW_SSP_EFFICIENCY, String.format(percentFormat, sspMatchedTriggers[LOCAL], + sspSimTriggers[LOCAL], (100.0 * sspMatchedTriggers[LOCAL] / sspSimTriggers[LOCAL]))); + setLocalRowValue(ROW_TRIGGER_EFFICIENCY, String.format(percentFormat, reconMatchedTriggers[LOCAL], + reconSimTriggers[LOCAL], (100.0 * reconMatchedTriggers[LOCAL] / reconSimTriggers[LOCAL]))); + setGlobalRowValue(ROW_SSP_EFFICIENCY, String.format(percentFormat, sspMatchedTriggers[GLOBAL], + sspSimTriggers[GLOBAL], (100.0 * sspMatchedTriggers[GLOBAL] / sspSimTriggers[GLOBAL]))); + setGlobalRowValue(ROW_TRIGGER_EFFICIENCY, String.format(percentFormat, reconMatchedTriggers[GLOBAL], + reconSimTriggers[GLOBAL], (100.0 * reconMatchedTriggers[GLOBAL] / reconSimTriggers[GLOBAL]))); int ROW_SECOND_TRIGGER_CUT = ROW_FIRST_TRIGGER_CUT + numCuts + 2; - int[] total = { lstat.getSSPSimTriggerCount() / 2, rstat.getSSPSimTriggerCount() / 2 }; for(int cutRow = 0; cutRow < numCuts; cutRow++) { - setLocalRowValue(cutRow + ROW_FIRST_TRIGGER_CUT, String.format(percentFormat, lstat.getCutFailures(0, cutRow), - total[0], (100.0 * lstat.getCutFailures(0, cutRow) / total[0]))); - setLocalRowValue(cutRow + ROW_SECOND_TRIGGER_CUT, String.format(percentFormat, lstat.getCutFailures(1, cutRow), - total[0], (100.0 * lstat.getCutFailures(1, cutRow) / total[0]))); - setGlobalRowValue(cutRow + ROW_FIRST_TRIGGER_CUT, String.format(percentFormat, lstat.getCutFailures(0, cutRow), - total[1], (100.0 * lstat.getCutFailures(0, cutRow) / total[1]))); - setGlobalRowValue(cutRow + ROW_SECOND_TRIGGER_CUT, String.format(percentFormat, lstat.getCutFailures(1, cutRow), - total[1], (100.0 * lstat.getCutFailures(1, cutRow) / total[1]))); + setLocalRowValue(cutRow + ROW_FIRST_TRIGGER_CUT, String.format(percentFormat, + triggerStats[LOCAL][0].getSSPCutFailures(cutRow), triggerStats[LOCAL][0].getSSPSimulatedTriggers(), + (100.0 * triggerStats[LOCAL][0].getSSPCutFailures(cutRow) / triggerStats[LOCAL][0].getSSPSimulatedTriggers()))); + setLocalRowValue(cutRow + ROW_SECOND_TRIGGER_CUT, String.format(percentFormat, + triggerStats[LOCAL][1].getSSPCutFailures(cutRow), triggerStats[LOCAL][1].getSSPSimulatedTriggers(), + (100.0 * triggerStats[LOCAL][1].getSSPCutFailures(cutRow) / triggerStats[LOCAL][1].getSSPSimulatedTriggers()))); + setGlobalRowValue(cutRow + ROW_FIRST_TRIGGER_CUT, String.format(percentFormat, + triggerStats[GLOBAL][0].getSSPCutFailures(cutRow), triggerStats[GLOBAL][0].getSSPSimulatedTriggers(), + (100.0 * triggerStats[GLOBAL][0].getSSPCutFailures(cutRow) / triggerStats[GLOBAL][0].getSSPSimulatedTriggers()))); + setGlobalRowValue(cutRow + ROW_SECOND_TRIGGER_CUT, String.format(percentFormat, + triggerStats[GLOBAL][1].getSSPCutFailures(cutRow), triggerStats[GLOBAL][1].getSSPSimulatedTriggers(), + (100.0 * triggerStats[GLOBAL][1].getSSPCutFailures(cutRow) / triggerStats[GLOBAL][1].getSSPSimulatedTriggers()))); } } } - - /** - * Gets the statistical module from which local statistics should - * be drawn. - * @param snapshot - The snapshot containing the modules. - * @return Returns the module containing local statistical data. - */ - protected abstract TriggerStatModule getLocalModule(DiagSnapshot snapshot); - - /** - * Gets the statistical module from which run statistics should - * be drawn. - * @param snapshot - The snapshot containing the modules. - * @return Returns the module containing run statistical data. - */ - protected abstract TriggerStatModule getRunModule(DiagSnapshot snapshot); /** * Creates the table appropriate table rows from the argument cut Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTwoColumnTablePanel.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTwoColumnTablePanel.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/AbstractTwoColumnTablePanel.java Thu Apr 2 10:07:10 2015 @@ -1,6 +1,10 @@ package org.hps.monitoring.trigger; +import java.awt.Font; + +import javax.swing.JLabel; import javax.swing.JTable; +import javax.swing.table.DefaultTableCellRenderer; /** * Class <code>AbstractTwoColumnTablePanel</code> is an implementation @@ -51,7 +55,11 @@ localModel.setValueAt(rowNames[i], i, COL_TITLE); globalModel.setValueAt(rowNames[i], i, COL_TITLE); } - updatePanel(null); + updatePanel(null, null); + + // Make a cell renderer. + DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); + centerRenderer.setHorizontalAlignment(JLabel.CENTER); // Create JTable objects to display the data. JTable localTable = new JTable(localModel); @@ -59,12 +67,20 @@ localTable.setColumnSelectionAllowed(false); localTable.setCellSelectionEnabled(false); localTable.setShowVerticalLines(false); + localTable.getColumnModel().getColumn(0).setMinWidth(200); + localTable.getColumnModel().getColumn(0).setMaxWidth(200); + localTable.getColumnModel().getColumn(1).setCellRenderer(centerRenderer); + localTable.setFont(new Font("monospaced", localTable.getFont().getStyle(), localTable.getFont().getSize())); JTable globalTable = new JTable(globalModel); globalTable.setRowSelectionAllowed(false); globalTable.setColumnSelectionAllowed(false); globalTable.setCellSelectionEnabled(false); globalTable.setShowVerticalLines(false); + globalTable.getColumnModel().getColumn(0).setMinWidth(200); + globalTable.getColumnModel().getColumn(0).setMaxWidth(200); + globalTable.getColumnModel().getColumn(1).setCellRenderer(centerRenderer); + globalTable.setFont(new Font("monospaced", globalTable.getFont().getStyle(), globalTable.getFont().getSize())); // Return the two tables. return new JTable[] { localTable, globalTable }; Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/ClusterTablePanel.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/ClusterTablePanel.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/ClusterTablePanel.java Thu Apr 2 10:07:10 2015 @@ -1,7 +1,7 @@ package org.hps.monitoring.trigger; -import org.hps.analysis.trigger.DiagSnapshot; -import org.hps.analysis.trigger.event.ClusterStatModule; +import org.hps.analysis.trigger.data.ClusterStatModule; +import org.hps.analysis.trigger.data.DiagnosticSnapshot; import org.hps.analysis.trigger.util.ComponentUtils; /** @@ -33,9 +33,9 @@ public ClusterTablePanel() { super(TABLE_TITLES); } @Override - public void updatePanel(DiagSnapshot snapshot) { + public void updatePanel(DiagnosticSnapshot runSnapshot, DiagnosticSnapshot localSnapshot) { // If the snapshot is null, all values should be "N/A." - if(snapshot == null) { + if(localSnapshot == null || runSnapshot == null) { // Output cluster count data. String scalerNullValue = "---"; setLocalRowValue(ROW_RECON_COUNT, scalerNullValue); @@ -58,8 +58,8 @@ // Otherwise, populate the table with the diagnostic data. else { // Get the cluster statistical banks. - ClusterStatModule lstat = snapshot.clusterLocalStatistics; - ClusterStatModule rstat = snapshot.clusterRunStatistics; + ClusterStatModule lstat = localSnapshot.getClusterStats(); + ClusterStatModule rstat = runSnapshot.getClusterStats(); // Get the largest number of digits in any of the values. int mostDigits = ComponentUtils.max(lstat.getReconClusterCount(), lstat.getSSPClusterCount(), lstat.getMatches(), Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/DiagnosticUpdatable.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/DiagnosticUpdatable.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/DiagnosticUpdatable.java Thu Apr 2 10:07:10 2015 @@ -1,6 +1,7 @@ package org.hps.monitoring.trigger; import org.hps.analysis.trigger.DiagSnapshot; +import org.hps.analysis.trigger.data.DiagnosticSnapshot; /** * Interface <code>DiagnosticUpdatable</code> defines a class of objects @@ -18,5 +19,5 @@ * @param snapshot - The snapshot containing information with which * to update the object. */ - public void updatePanel(DiagSnapshot snapshot); + public void updatePanel(DiagnosticSnapshot runSnapshot, DiagnosticSnapshot localSnapshot); } Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/EfficiencyTablePanel.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/EfficiencyTablePanel.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/EfficiencyTablePanel.java Thu Apr 2 10:07:10 2015 @@ -1,11 +1,14 @@ package org.hps.monitoring.trigger; +import java.awt.Font; + +import javax.swing.JLabel; import javax.swing.JTable; - -import org.hps.analysis.trigger.DiagSnapshot; -import org.hps.analysis.trigger.event.TriggerEfficiencyModule; +import javax.swing.table.DefaultTableCellRenderer; + +import org.hps.analysis.trigger.data.DiagnosticSnapshot; +import org.hps.analysis.trigger.data.TriggerStatModule; import org.hps.analysis.trigger.util.ComponentUtils; -import org.hps.analysis.trigger.util.TriggerDiagnosticUtil; public class EfficiencyTablePanel extends AbstractTablePanel implements DiagnosticUpdatable { // Static variables. @@ -14,6 +17,41 @@ // Table models. private TableTextModel localModel; private TableTextModel globalModel; + + // Column/row reference variables. + private static final int ROWS = 7; + private static final int COLUMNS = 6; + /* private static final int COL_HEADER = 0; + private static final int COL_SINGLES_0 = 1; + private static final int COL_SINGLES_1 = 2; + private static final int COL_PAIR_0 = 3; + private static final int COL_PAIR_1 = 4; */ + private static final int COL_COUNT = 5; + /* private static final int ROW_HEADER = 0; + private static final int ROW_PULSER = 1; + private static final int ROW_COSMIC = 2; + private static final int ROW_SINGLES_0 = 3; + private static final int ROW_SINGLES_1 = 4; + private static final int ROW_PAIR_0 = 5; + private static final int ROW_PAIR_1 = 6; */ + + // Global/local reference variables. + private static final int GLOBAL = 0; + private static final int LOCAL = 1; + + // Trigger type reference variables. + private static final int TYPE_SINGLES_0 = TriggerStatModule.SINGLES_0; + private static final int TYPE_SINGLES_1 = TriggerStatModule.SINGLES_1; + private static final int TYPE_PAIR_0 = TriggerStatModule.PAIR_0; + private static final int TYPE_PAIR_1 = TriggerStatModule.PAIR_1; + + // Column/row header names. + private static final String[] COL_NAMES = { + "", "Singles 0", "Singles 1", "Pair 0", "Pair 1", "Count" + }; + private static final String[] ROW_NAMES = { + "", "Random", "Cosmic", "Singles 0", "Singles 1", "Pair 0", "Pair 1" + }; /** * Instantiates a new <code>EfficiencyTablePanel</code>. @@ -27,74 +65,117 @@ } @Override - public void updatePanel(DiagSnapshot snapshot) { + public void updatePanel(DiagnosticSnapshot runSnapshot, DiagnosticSnapshot localSnapshot) { // If there is no snapshot, the tables should all display an // empty value. - if(snapshot == null) { - for(int eventTriggerID = 0; eventTriggerID < 6; eventTriggerID++) { - for(int seenTriggerID = 0; seenTriggerID < 6; seenTriggerID++) { - localModel.setValueAt("--- / ---", eventTriggerID + 1, seenTriggerID + 1); - globalModel.setValueAt("--- / ---", eventTriggerID + 1, seenTriggerID + 1); + if(runSnapshot == null || localSnapshot == null) { + for(int row = 1; row < ROWS; row++) { + for(int col = 1; col < COLUMNS; col++) { + localModel.setValueAt("---", row, col); + globalModel.setValueAt("---", row, col); } } } // Otherwise, update the table cells from the snapshot data. else { - // Get the efficiency modules. - TriggerEfficiencyModule rmod = snapshot.efficiencyRunStatistics; - TriggerEfficiencyModule lmod = snapshot.efficiencyLocalStatistics; + // Get the efficiency modules. + DiagnosticSnapshot[] stat = new DiagnosticSnapshot[2]; + stat[GLOBAL] = runSnapshot; + stat[LOCAL] = localSnapshot; + + // Get the trigger count for each trigger type for both the + // local and global snapshots. + int[][][] matched = new int[2][4][6]; + int[][][] triggers = new int[2][4][6]; + for(int i = 0; i < 2; i++) { + for(int triggerType = 0; triggerType < 6; triggerType++) { + // Get the total triggers seen for each type. + triggers[i][TYPE_SINGLES_0][triggerType] = stat[i].getSingles0Stats().getSSPSimulatedTriggers(triggerType); + triggers[i][TYPE_SINGLES_1][triggerType] = stat[i].getSingles1Stats().getSSPSimulatedTriggers(triggerType); + triggers[i][TYPE_PAIR_0][triggerType] = stat[i].getPair0Stats().getSSPSimulatedTriggers(triggerType); + triggers[i][TYPE_PAIR_1][triggerType] = stat[i].getPair1Stats().getSSPSimulatedTriggers(triggerType); + + // Get the total triggers matched for each type. + matched[i][TYPE_SINGLES_0][triggerType] = stat[i].getSingles0Stats().getMatchedSSPSimulatedTriggers(triggerType); + matched[i][TYPE_SINGLES_1][triggerType] = stat[i].getSingles1Stats().getMatchedSSPSimulatedTriggers(triggerType); + matched[i][TYPE_PAIR_0][triggerType] = stat[i].getPair0Stats().getMatchedSSPSimulatedTriggers(triggerType); + matched[i][TYPE_PAIR_1][triggerType] = stat[i].getPair1Stats().getMatchedSSPSimulatedTriggers(triggerType); + } + } // Determine the spacing needed to display the largest numerical // cell value. int numWidth = -1; - for(int eventTriggerID = 0; eventTriggerID < 6; eventTriggerID++) { - for(int seenTriggerID = 0; seenTriggerID < 6; seenTriggerID++) { - int rSize = ComponentUtils.getDigits(rmod.getTriggersSeen(eventTriggerID, seenTriggerID)); - int lSize = ComponentUtils.getDigits(lmod.getTriggersSeen(eventTriggerID, seenTriggerID)); + for(int tiTriggerType = 0; tiTriggerType < 6; tiTriggerType++) { + for(int seenTriggerType = 0; seenTriggerType < 4; seenTriggerType++) { + int rSize = ComponentUtils.getDigits(triggers[GLOBAL][seenTriggerType][tiTriggerType]); + int lSize = ComponentUtils.getDigits(triggers[LOCAL][seenTriggerType][tiTriggerType]); numWidth = ComponentUtils.max(numWidth, rSize, lSize); } } // Generate the format string for the cells. - String nullText = String.format("%s / %s", ComponentUtils.getChars('-', numWidth), - ComponentUtils.getChars('-', numWidth)); String format = "%" + numWidth + "d / %" + numWidth + "d"; // Update the table. - for(int eventTriggerID = 0; eventTriggerID < 6; eventTriggerID++) { - for(int seenTriggerID = 0; seenTriggerID < 6; seenTriggerID++) { - if(eventTriggerID == seenTriggerID) { - localModel.setValueAt(nullText, eventTriggerID + 1, seenTriggerID + 1); + for(int tiTriggerType = 0; tiTriggerType < 6; tiTriggerType++) { + // Fill the row/column combinations that hold trigger + // statistical information. + for(int seenTriggerType = 0; seenTriggerType < 4; seenTriggerType++) { + // Fill the local table cell. + String localText = String.format(format, matched[LOCAL][seenTriggerType][tiTriggerType], + triggers[LOCAL][seenTriggerType][tiTriggerType]); + if(triggers[LOCAL][seenTriggerType][tiTriggerType] == 0) { + localText = localText + " ( N/A %)"; } else { - localModel.setValueAt(String.format(format, lmod.getTriggersMatched(eventTriggerID, seenTriggerID), - lmod.getTriggersSeen(eventTriggerID, seenTriggerID)), eventTriggerID + 1, seenTriggerID + 1); - globalModel.setValueAt(String.format(format, rmod.getTriggersMatched(eventTriggerID, seenTriggerID), - rmod.getTriggersSeen(eventTriggerID, seenTriggerID)), eventTriggerID + 1, seenTriggerID + 1); + localText = String.format("%s (%7.3f%%)", localText, + (100.0 * matched[LOCAL][seenTriggerType][tiTriggerType] / triggers[LOCAL][seenTriggerType][tiTriggerType])); } - } + localModel.setValueAt(localText, tiTriggerType + 1, seenTriggerType + 1); + + // Fill the global table cell. + String globalText = String.format(format, matched[GLOBAL][seenTriggerType][tiTriggerType], + triggers[GLOBAL][seenTriggerType][tiTriggerType]); + if(triggers[GLOBAL][seenTriggerType][tiTriggerType] == 0) { + globalText = globalText + " ( N/A %)"; + } else { + globalText = String.format("%s (%7.3f%%)", globalText, + (100.0 * matched[LOCAL][seenTriggerType][tiTriggerType] / triggers[GLOBAL][seenTriggerType][tiTriggerType])); + } + globalModel.setValueAt(globalText, tiTriggerType + 1, seenTriggerType + 1); + } + + // Populate the count column. + localModel.setValueAt("" + stat[LOCAL].getTITriggers(tiTriggerType, true), tiTriggerType + 1, COL_COUNT); + globalModel.setValueAt("" + stat[GLOBAL].getTITriggers(tiTriggerType, true), tiTriggerType + 1, COL_COUNT); } } } @Override protected JTable[] initializeTables(Object... args) { - // Get a shorter reference to the trigger name list. - String[] triggerNames = TriggerDiagnosticUtil.TRIGGER_NAME; - // Initialize the table models. There should be one row and // one column for each type of trigger plus an additional one // of each for headers. - localModel = new TableTextModel(triggerNames.length + 1, triggerNames.length + 1); - globalModel = new TableTextModel(triggerNames.length + 1, triggerNames.length + 1); - - // Set the column and row headers. - for(int triggerType = 0; triggerType < triggerNames.length; triggerType++) { - localModel.setValueAt(triggerNames[triggerType], triggerType + 1, 0); - localModel.setValueAt(triggerNames[triggerType], 0, triggerType + 1); - globalModel.setValueAt(triggerNames[triggerType], triggerType + 1, 0); - globalModel.setValueAt(triggerNames[triggerType], 0, triggerType + 1); - } + localModel = new TableTextModel(ROWS, COLUMNS); + globalModel = new TableTextModel(ROWS, COLUMNS); + + // Set the column headers. + for(int col = 0; col < COLUMNS; col++) { + localModel.setValueAt(COL_NAMES[col], 0, col); + globalModel.setValueAt(COL_NAMES[col], 0, col); + } + + // Set the row headers. + for(int row = 0; row < ROWS; row++) { + localModel.setValueAt(ROW_NAMES[row], row, 0); + globalModel.setValueAt(ROW_NAMES[row], row, 0); + } + + // Make a cell renderer. + DefaultTableCellRenderer centerRenderer = new DefaultTableCellRenderer(); + centerRenderer.setHorizontalAlignment(JLabel.CENTER); // Create JTable objects to display the data. JTable localTable = new JTable(localModel); @@ -102,12 +183,24 @@ localTable.setColumnSelectionAllowed(false); localTable.setCellSelectionEnabled(false); localTable.setShowVerticalLines(false); + localTable.getColumnModel().getColumn(0).setMaxWidth(150); + localTable.getColumnModel().getColumn(COL_COUNT).setMaxWidth(150); + for(int col = 1; col < COLUMNS; col++) { + localTable.getColumnModel().getColumn(col).setCellRenderer(centerRenderer); + } + localTable.setFont(new Font("monospaced", localTable.getFont().getStyle(), localTable.getFont().getSize())); JTable globalTable = new JTable(globalModel); globalTable.setRowSelectionAllowed(false); globalTable.setColumnSelectionAllowed(false); globalTable.setCellSelectionEnabled(false); globalTable.setShowVerticalLines(false); + globalTable.getColumnModel().getColumn(0).setMaxWidth(150); + globalTable.getColumnModel().getColumn(COL_COUNT).setMaxWidth(150); + for(int col = 1; col < COLUMNS; col++) { + globalTable.getColumnModel().getColumn(col).setCellRenderer(centerRenderer); + } + globalTable.setFont(new Font("monospaced", globalTable.getFont().getStyle(), globalTable.getFont().getSize())); // Return the tables. return new JTable[] { localTable, globalTable }; Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/PairTablePanel.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/PairTablePanel.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/PairTablePanel.java Thu Apr 2 10:07:10 2015 @@ -1,7 +1,4 @@ package org.hps.monitoring.trigger; - -import org.hps.analysis.trigger.DiagSnapshot; -import org.hps.analysis.trigger.event.TriggerStatModule; /** * Class <code>PairTablePanel</code> displays statistical information @@ -12,22 +9,12 @@ public class PairTablePanel extends AbstractTriggerTablePanel { // Static variables. private static final long serialVersionUID = 0L; - private static final String[] CUT_NAMES = { " Energy Sum:", - " Energy Difference:", " Energy Slope:", " Coplanarity:" }; + private static final String[] CUT_NAMES = { " Energy Sum:", + " Energy Difference:", " Energy Slope:", " Coplanarity:" }; /** * Instantiates a <code>PairTablePanel</code>. */ - public PairTablePanel() { super(CUT_NAMES); } - - @Override - protected TriggerStatModule getLocalModule(DiagSnapshot snapshot) { - return snapshot.pairLocalStatistics; - } - - @Override - protected TriggerStatModule getRunModule(DiagSnapshot snapshot) { - return snapshot.pairRunStatistics; - } + public PairTablePanel() { super(CUT_NAMES, false); } } Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/SinglesTablePanel.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/SinglesTablePanel.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/SinglesTablePanel.java Thu Apr 2 10:07:10 2015 @@ -1,7 +1,4 @@ package org.hps.monitoring.trigger; - -import org.hps.analysis.trigger.DiagSnapshot; -import org.hps.analysis.trigger.event.TriggerStatModule; /** * Class <code>SinglesTablePanel</code> displays statistical information @@ -12,22 +9,12 @@ public class SinglesTablePanel extends AbstractTriggerTablePanel { // Static variables. private static final long serialVersionUID = 0L; - private static final String[] CUT_NAMES = { " Cluster Energy (Low):", - " Cluster Energy (High):", " Hit Count:" }; + private static final String[] CUT_NAMES = { " Cluster Energy (Low):", + " Cluster Energy (High):", " Hit Count:" }; /** * Instantiates a <code>SinglesTablePanel</code>. */ - public SinglesTablePanel() { super(CUT_NAMES); } - - @Override - protected TriggerStatModule getLocalModule(DiagSnapshot snapshot) { - return snapshot.singlesLocalStatistics; - } - - @Override - protected TriggerStatModule getRunModule(DiagSnapshot snapshot) { - return snapshot.singlesRunStatistics; - } + public SinglesTablePanel() { super(CUT_NAMES, true); } } Modified: java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/TriggerDiagnosticGUIDriver.java ============================================================================= --- java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/TriggerDiagnosticGUIDriver.java (original) +++ java/trunk/monitoring-util/src/main/java/org/hps/monitoring/trigger/TriggerDiagnosticGUIDriver.java Thu Apr 2 10:07:10 2015 @@ -4,7 +4,7 @@ import javax.swing.JFrame; -import org.hps.analysis.trigger.DiagSnapshot; +import org.hps.analysis.trigger.data.DiagnosticSnapshot; import org.lcsim.event.EventHeader; import org.lcsim.util.Driver; @@ -31,18 +31,19 @@ public void process(EventHeader event) { // Updates are only performed if a diagnostic snapshot object // exists. Otherwise, do nothing. - if(event.hasCollection(DiagSnapshot.class, diagnosticCollectionName)) { + if(event.hasCollection(DiagnosticSnapshot.class, diagnosticCollectionName)) { // Get the snapshot collection. - List<DiagSnapshot> snapshotList = event.get(DiagSnapshot.class, diagnosticCollectionName); + List<DiagnosticSnapshot> snapshotList = event.get(DiagnosticSnapshot.class, diagnosticCollectionName); // Get the snapshot. There will only ever be one. - DiagSnapshot snapshot = snapshotList.get(0); + DiagnosticSnapshot runSnapshot = snapshotList.get(1); + DiagnosticSnapshot localSnapshot = snapshotList.get(0); // Feed it to the table. - //clusterTable.updatePanel(snapshot); - singlesTable.updatePanel(snapshot); - pairTable.updatePanel(snapshot); - efficiencyTable.updatePanel(snapshot); + clusterTable.updatePanel(runSnapshot, localSnapshot); + singlesTable.updatePanel(runSnapshot, localSnapshot); + pairTable.updatePanel(runSnapshot, localSnapshot); + efficiencyTable.updatePanel(runSnapshot, localSnapshot); } }