Author: [log in to unmask]
Date: Fri Mar 6 22:52:58 2015
New Revision: 2331
Log:
Merge r2312 through r2330 into prod branch.
Added:
java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/TriggerDiagnosticsPanel.java
- copied unchanged from r2330, java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/TriggerDiagnosticsPanel.java
java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/model/ConfigurationListener.java
- copied unchanged from r2330, java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/model/ConfigurationListener.java
java/branches/prod/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/ecal/
- copied from r2330, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/ecal/
java/branches/prod/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java
- copied unchanged from r2330, java/trunk/monitoring-drivers/src/main/java/org/hps/monitoring/drivers/trackrecon/SVTOpeningAlignment.java
java/branches/prod/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim
- copied unchanged from r2330, java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/TriggerDiagnosticsMonitoring.lcsim
java/branches/prod/steering-files/src/main/resources/org/hps/steering/monitoring/ecal/
- copied from r2330, java/trunk/steering-files/src/main/resources/org/hps/steering/monitoring/ecal/
java/branches/prod/steering-files/src/main/resources/org/hps/steering/users/mgraham/AlignmentMonitorTest.lcsim
- copied unchanged from r2330, java/trunk/steering-files/src/main/resources/org/hps/steering/users/mgraham/AlignmentMonitorTest.lcsim
java/branches/prod/tracking/src/main/resources/org/hps/recon/tracking/strategies/HPS-Full-3Hit.xml
- copied unchanged from r2330, java/trunk/tracking/src/main/resources/org/hps/recon/tracking/strategies/HPS-Full-3Hit.xml
Modified:
java/branches/prod/ (props changed)
java/branches/prod/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java
java/branches/prod/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java
java/branches/prod/detector-data/detectors/HPS-ECalCommissioning-v2/compact.xml
java/branches/prod/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
java/branches/prod/monitoring-app/ (props changed)
java/branches/prod/monitoring-app/pom.xml
java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java
java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java
java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java
java/branches/prod/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java
java/branches/prod/record-util/src/main/java/org/hps/record/evio/EvioEventConstants.java
java/branches/prod/steering-files/src/main/resources/org/hps/steering/readout/CommRun2014LoosePairs.lcsim
Modified: java/branches/prod/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java
=============================================================================
--- java/branches/prod/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java (original)
+++ java/branches/prod/conditions/src/main/java/org/hps/conditions/ConditionsDriver.java Fri Mar 6 22:52:58 2015
@@ -39,7 +39,6 @@
*/
public class ConditionsDriver extends Driver {
- DatabaseConditionsManager conditionsManager;
String detectorName = null;
String tag = null;
String xmlConfigResource = null;
@@ -50,7 +49,6 @@
* Default constructor.
*/
public ConditionsDriver() {
- conditionsManager = new DatabaseConditionsManager();
}
/**
@@ -107,6 +105,9 @@
* @throws RuntimeException If there is a problem setting up the conditions system.
*/
public void initialize() {
+
+ DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
+
if (xmlConfigResource != null) {
// Set a custom XML configuration resource.
conditionsManager.setXmlConfig(xmlConfigResource);
Modified: java/branches/prod/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java
=============================================================================
--- java/branches/prod/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java (original)
+++ java/branches/prod/conditions/src/main/java/org/hps/conditions/ecal/EcalCrystalChannelMap.java Fri Mar 6 22:52:58 2015
@@ -10,13 +10,14 @@
/**
* This is a convenience utility for associating the geometric crystal
- * objects with the conditions system channel information.
+ * objects with the conditions system channel information and vice versa.
*
* @author Jeremy McCormick <[log in to unmask]>
*/
final class EcalCrystalChannelMap {
Map<EcalCrystal, EcalChannel> crystalMap = new HashMap<EcalCrystal, EcalChannel>();
+ Map<EcalChannel, EcalCrystal> channelMap = new HashMap<EcalChannel, EcalCrystal>();
/**
* Creates the map between crystals and channels.
@@ -24,13 +25,23 @@
* @param channels The list of channels.
*/
EcalCrystalChannelMap(HPSEcalAPI api, EcalChannelCollection channels) {
- List<EcalCrystal> crystals = api.getCrystals();
- for (EcalCrystal crystal : crystals) {
+
+ // Map crystals to channels.
+ for (EcalCrystal crystal : api.getCrystals()) {
EcalChannel channel = channels.findGeometric(crystal.getIdentifier().getValue());
if (channel == null) {
throw new RuntimeException("ECAL channel was not found for ID: " + crystal.getExpandedIdentifier());
}
crystalMap.put(crystal, channel);
+ }
+
+ // Map channels to crystals.
+ for (EcalChannel channel : channels) {
+ EcalCrystal crystal = api.getCrystal(channel.getX(), channel.getY());
+ if (crystal == null) {
+ throw new RuntimeException("ECAl crystal was not found for channel X Y: " + channel.getX() + " " + channel.getY());
+ }
+ channelMap.put(channel, crystal);
}
}
@@ -42,4 +53,13 @@
EcalChannel getEcalChannel(EcalCrystal crystal) {
return crystalMap.get(crystal);
}
+
+ /**
+ * Get a channel from a crystal.
+ * @param crystal The geometry object.
+ * @return The channel information or null if does not exist.
+ */
+ EcalCrystal getEcalCrystal(EcalChannel channel) {
+ return channelMap.get(channel);
+ }
}
Modified: java/branches/prod/detector-data/detectors/HPS-ECalCommissioning-v2/compact.xml
=============================================================================
--- java/branches/prod/detector-data/detectors/HPS-ECalCommissioning-v2/compact.xml (original)
+++ java/branches/prod/detector-data/detectors/HPS-ECalCommissioning-v2/compact.xml Fri Mar 6 22:52:58 2015
@@ -2,7 +2,7 @@
xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"
xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/compact/1.0/compact.xsd">
- <info name="HPS-ECalCommissioning-v3">
+ <info name="HPS-ECalCommissioning-v2">
<comment>HPS ECal commissioning for pass2 with no SVT, By=-0.3309 </comment>
</info>
Modified: java/branches/prod/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
=============================================================================
--- java/branches/prod/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java (original)
+++ java/branches/prod/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java Fri Mar 6 22:52:58 2015
@@ -127,9 +127,10 @@
eventID = new int[3];
} else {
logger.finest("Read EVIO event number " + eventID[0]);
- if (eventID[1] != 1) {
- logger.warning("Trigger code is usually 1; got " + eventID[1]);
- }
+ // Stop hardcoding event tags.
+ //if (eventID[1] != 1) {
+ // logger.warning("Trigger code is usually 1; got " + eventID[1]);
+ //}
if (eventID[2] != 0) {
logger.warning("Readout status is usually 0; got " + eventID[2]);
}
Modified: java/branches/prod/monitoring-app/pom.xml
=============================================================================
--- java/branches/prod/monitoring-app/pom.xml (original)
+++ java/branches/prod/monitoring-app/pom.xml Fri Mar 6 22:52:58 2015
@@ -115,6 +115,10 @@
</dependency>
<dependency>
<groupId>org.hps</groupId>
+ <artifactId>hps-monitoring-util</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.hps</groupId>
<artifactId>hps-steering-files</artifactId>
</dependency>
<dependency>
Modified: java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java
=============================================================================
--- java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java (original)
+++ java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/DataSourceComboBox.java Fri Mar 6 22:52:58 2015
@@ -11,6 +11,7 @@
import javax.swing.JComboBox;
import org.hps.monitoring.application.DataSourceComboBox.DataSourceItem;
+import org.hps.monitoring.application.model.ConfigurationListener;
import org.hps.monitoring.application.model.ConfigurationModel;
import org.hps.monitoring.application.model.ConnectionStatus;
import org.hps.monitoring.application.model.ConnectionStatusModel;
@@ -27,7 +28,7 @@
*
* @author Jeremy McCormick <[log in to unmask]>
*/
-class DataSourceComboBox extends JComboBox<DataSourceItem> implements PropertyChangeListener, ActionListener {
+class DataSourceComboBox extends JComboBox<DataSourceItem> implements PropertyChangeListener, ActionListener, ConfigurationListener {
ConnectionStatusModel connectionModel;
ConfigurationModel configurationModel;
@@ -62,29 +63,13 @@
setActionCommand(Commands.DATA_SOURCE_CHANGED);
setPreferredSize(new Dimension(400, this.getPreferredSize().height));
setEditable(false);
- connectionModel.addPropertyChangeListener(this);
this.configurationModel = configurationModel;
- }
-
- void initialize() {
-
- // Add the default ET item.
- addItem(new DataSourceItem(configurationModel.getEtPath(), DataSourceType.ET_SERVER));
-
- // Add a file source if one has been provided.
- if (configurationModel.getDataSourcePath() != null) {
- addItem(new DataSourceItem(configurationModel.getDataSourcePath(), getDataSourceType(configurationModel.getDataSourcePath())));
- }
-
- // Set the initially selected item.
- setSelectedItem();
-
- // Don't add as the property listener until after initialization.
- configurationModel.addPropertyChangeListener(this);
- }
-
+ connectionModel.addPropertyChangeListener(this);
+ configurationModel.addConfigurationListener(this);
+ }
+
void setSelectedItem() {
- DataSourceItem item = findItem(configurationModel.getDataSourcePath(), configurationModel.getDataSourceType());
+ DataSourceItem item = findItem(configurationModel.getDataSourcePath(), getDataSourceType(configurationModel.getDataSourcePath()));
if (item != null) {
setSelectedItem(item);
}
@@ -96,26 +81,31 @@
@Override
public void propertyChange(PropertyChangeEvent evt) {
- if (evt.getPropertyName().equals(ConnectionStatusModel.CONNECTION_STATUS_PROPERTY)) {
- ConnectionStatus status = (ConnectionStatus) evt.getNewValue();
- if (status.equals(ConnectionStatus.DISCONNECTED)) {
- setEnabled(true);
- } else {
- setEnabled(false);
- }
- } else if (evt.getPropertyName().equals(ConfigurationModel.DATA_SOURCE_PATH_PROPERTY)) {
- String path = configurationModel.getDataSourcePath();
- DataSourceType type = getDataSourceType(path);
- addDataSourceItem(path, type);
- setSelectedItem();
- } else if (evt.getPropertyName().equals(ConfigurationModel.DATA_SOURCE_TYPE_PROPERTY)) {
- setSelectedItem();
- } else if (evt.getPropertyName().equals(ConfigurationModel.HOST_PROPERTY)) {
- updateEtItem();
- } else if (evt.getPropertyName().equals(ConfigurationModel.ET_NAME_PROPERTY)) {
- updateEtItem();
- } else if (evt.getPropertyName().equals(ConfigurationModel.PORT_PROPERTY)) {
- updateEtItem();
+ configurationModel.removePropertyChangeListener(this);
+ try {
+ if (evt.getPropertyName().equals(ConnectionStatusModel.CONNECTION_STATUS_PROPERTY)) {
+ ConnectionStatus status = (ConnectionStatus) evt.getNewValue();
+ if (status.equals(ConnectionStatus.DISCONNECTED)) {
+ setEnabled(true);
+ } else {
+ setEnabled(false);
+ }
+ } else if (evt.getPropertyName().equals(ConfigurationModel.DATA_SOURCE_PATH_PROPERTY)) {
+ String path = configurationModel.getDataSourcePath();
+ DataSourceType type = getDataSourceType(path);
+ addDataSourceItem(path, type);
+ setSelectedItem();
+ } else if (evt.getPropertyName().equals(ConfigurationModel.DATA_SOURCE_TYPE_PROPERTY)) {
+ setSelectedItem();
+ } else if (evt.getPropertyName().equals(ConfigurationModel.HOST_PROPERTY)) {
+ updateEtItem();
+ } else if (evt.getPropertyName().equals(ConfigurationModel.ET_NAME_PROPERTY)) {
+ updateEtItem();
+ } else if (evt.getPropertyName().equals(ConfigurationModel.PORT_PROPERTY)) {
+ updateEtItem();
+ }
+ } finally {
+ configurationModel.addPropertyChangeListener(this);
}
}
@@ -142,7 +132,37 @@
} finally {
configurationModel.addPropertyChangeListener(this);
}
- }
+ }
+ }
+
+ public void configurationChanged(ConfigurationModel configurationModel) {
+
+ // Clear the data source list.
+ removeAllItems();
+
+ // Add the default ET item.
+ this.removeActionListener(this);
+ try {
+ addItem(new DataSourceItem(configurationModel.getEtPath(), DataSourceType.ET_SERVER));
+
+ // Add a file source if one has been provided.
+ if (configurationModel.getDataSourcePath() != null) {
+ // Add an item for this data source.
+ DataSourceItem newItem = new DataSourceItem(configurationModel.getDataSourcePath(), configurationModel.getDataSourceType());
+ //System.out.println("adding new item " + newItem.name + " " + newItem.type);
+ addItem(newItem);
+ if (configurationModel.getDataSourceType().isFile()) {
+ //System.out.println("setting selected");
+ setSelectedItem(newItem);
+ }
+ }
+ } finally {
+ this.addActionListener(this);
+ }
+
+ // Don't add as property change listener until after configuration has been initialized.
+ configurationModel.removePropertyChangeListener(this);
+ configurationModel.addPropertyChangeListener(this);
}
public void addItem(DataSourceItem item) {
Modified: java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java
=============================================================================
--- java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java (original)
+++ java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/EventProcessing.java Fri Mar 6 22:52:58 2015
@@ -40,6 +40,7 @@
Logger logger;
SessionState sessionState;
List<CompositeRecordProcessor> processors;
+ List<Driver> drivers;
/**
* This class is used to organize the objects for an event processing session.
@@ -62,11 +63,13 @@
*/
EventProcessing(
MonitoringApplication application,
- List<CompositeRecordProcessor> processors) {
+ List<CompositeRecordProcessor> processors,
+ List<Driver> drivers) {
this.application = application;
- this.sessionState = new SessionState();
+ this.sessionState = new SessionState();
+ this.logger = MonitoringApplication.logger;
this.processors = processors;
- this.logger = MonitoringApplication.logger;
+ this.drivers = drivers;
}
/**
@@ -173,8 +176,7 @@
.setProcessingStage(configurationModel.getProcessingStage())
.setEtConnection(sessionState.connection)
.setFilePath(configurationModel.getDataSourcePath())
- .setLCSimEventBuilder(sessionState.eventBuilder)
- .setDetectorName(configurationModel.getDetectorName());
+ .setLCSimEventBuilder(sessionState.eventBuilder);
if (configurationModel.hasValidProperty(ConfigurationModel.MAX_EVENTS_PROPERTY)) {
long maxEvents = configurationModel.getMaxEvents();
@@ -185,26 +187,37 @@
}
// Add all Drivers from the JobManager.
- for (Driver driver : sessionState.jobManager.getDriverExecList()) {
+ for (Driver driver : sessionState.jobManager.getDriverExecList()) {
loopConfig.add(driver);
+ logger.config("added Driver " + driver.getName() + " to job");
}
// Using ET server?
if (configurationModel.getDataSourceType().equals(DataSourceType.ET_SERVER)) {
// ET system monitor.
+ logger.config("added EtSystemMonitor to job");
loopConfig.add(new EtSystemMonitor());
// ET system strip charts.
+ logger.config("added EtSystemStripCharts to job");
loopConfig.add(new EtSystemStripCharts());
}
// Add extra CompositeRecordProcessors to the loop config.
- for (CompositeRecordProcessor processor : processors) {
+ for (CompositeRecordProcessor processor : processors) {
loopConfig.add(processor);
+ logger.config("added extra processor " + processor.getClass().getSimpleName() + " to job");
+ }
+
+ // Add extra Drivers to the loop config.
+ for (Driver driver : drivers) {
+ loopConfig.add(driver);
+ logger.config("added extra Driver " + driver.getName() + " to job");
}
// Enable conditions system activation from EVIO event information.
+ logger.config("added EvioDetectorConditionsProcessor to job with detector " + configurationModel.getDetectorName());
loopConfig.add(new EvioDetectorConditionsProcessor(configurationModel.getDetectorName()));
// Create the CompositeLoop with the configuration.
@@ -240,6 +253,11 @@
*/
synchronized void stop() {
+ logger.info("event processing is stopping");
+
+ // Disconnect from ET system.
+ disconnect();
+
// Is the event processing thread not null?
if (sessionState.processingThread != null) {
@@ -250,8 +268,10 @@
sessionState.loop.execute(Command.STOP);
try {
+ logger.info("waiting for event processing thread to finish");
// This should always work, because the ET system is disconnected before this.
sessionState.processingThread.join();
+ logger.info("event processing thread finished");
} catch (InterruptedException e) {
// Don't know when this would ever happen.
e.printStackTrace();
@@ -269,6 +289,8 @@
// Set the loop to null as a new one will be created for next session.
sessionState.loop = null;
+
+ logger.info("event processing stopped");
}
/**
@@ -276,6 +298,8 @@
* and start the watchdog thread.
*/
synchronized void start() {
+
+ logger.fine("event processing threads are starting");
// Start the event processing thread.
sessionState.processingThread = new EventProcessingThread(sessionState.loop);
@@ -283,45 +307,54 @@
// Start the watchdog thread which will auto-disconnect when event processing is done.
sessionState.sessionWatchdogThread = new SessionWatchdogThread(sessionState.processingThread);
- sessionState.sessionWatchdogThread.start();
+ sessionState.sessionWatchdogThread.start();
+
+ logger.fine("started event processing threads");
}
/**
* Notify the event processor to pause processing.
*/
synchronized void pause() {
+ logger.finest("pausing");
if (!application.connectionModel.getPaused()) {
sessionState.loop.pause();
application.connectionModel.setPaused(true);
}
+ logger.finest("paused");
}
/**
* Get next event if in pause mode.
*/
synchronized void next() {
+ logger.finest("getting next event");
if (application.connectionModel.getPaused()) {
application.connectionModel.setPaused(false);
sessionState.loop.execute(Command.GO_N, 1L, true);
application.connectionModel.setPaused(true);
}
+ logger.finest("got next event");
}
/**
* Resume processing events from pause mode.
*/
synchronized void resume() {
+ logger.finest("resuming");
if (application.connectionModel.getPaused()) {
// Notify event processor to continue.
sessionState.loop.resume();
application.connectionModel.setPaused(false);
}
+ logger.finest("resumed");
}
/**
* Interrupt and join to the processing watchdog thread.
*/
synchronized void killWatchdogThread() {
+ logger.fine("killing watchdog thread");
// Is the session watchdog thread not null?
if (sessionState.sessionWatchdogThread != null) {
// Is the thread still alive?
@@ -339,18 +372,21 @@
// Set the thread object to null.
sessionState.sessionWatchdogThread = null;
}
+ logger.fine("watchdog thread killed");
}
/**
* Cleanup the ET connection.
*/
synchronized void closeEtConnection() {
+ logger.fine("closing ET connection");
if (sessionState.connection != null) {
if (sessionState.connection.getEtSystem().alive()) {
sessionState.connection.cleanup();
}
sessionState.connection = null;
- }
+ }
+ logger.fine("ET connection closed");
}
/**
@@ -364,8 +400,8 @@
/**
* Connect to the ET system using the current connection settings.
*/
- void connect() throws IOException {
-
+ synchronized void connect() throws IOException {
+ logger.fine("connecting to ET system");
// Setup the network connection if using an ET server.
if (usingEtServer()) {
// Create a connection to the ET server.
@@ -378,6 +414,7 @@
// This is when a direct file source is used and ET is not needed.
application.connectionModel.setConnectionStatus(ConnectionStatus.CONNECTED);
}
+ logger.fine("ET system is connected");
}
/**
@@ -409,16 +446,20 @@
* Disconnect from the current ET session with a particular status.
* @param status The connection status.
*/
- void disconnect() {
+ synchronized void disconnect() {
+
+ logger.fine("disconnecting");
// Kill the session watch dog thread.
killWatchdogThread();
// Cleanup the ET connection.
closeEtConnection();
-
+
// Change application state to disconnected.
application.connectionModel.setConnectionStatus(ConnectionStatus.DISCONNECTED);
+
+ logger.fine("disconnected");
}
/**
@@ -446,4 +487,4 @@
}
}
}
-}
+}
Modified: java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
=============================================================================
--- java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java (original)
+++ java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplication.java Fri Mar 6 22:52:58 2015
@@ -32,6 +32,7 @@
import javax.swing.filechooser.FileFilter;
import javax.swing.filechooser.FileNameExtensionFilter;
+import org.hps.conditions.database.DatabaseConditionsManager;
import org.hps.monitoring.application.DataSourceComboBox.DataSourceItem;
import org.hps.monitoring.application.LogTable.LogRecordModel;
import org.hps.monitoring.application.model.Configuration;
@@ -50,6 +51,7 @@
import org.hps.monitoring.subsys.SystemStatusRegistry;
import org.hps.record.composite.CompositeRecordProcessor;
import org.hps.record.enums.DataSourceType;
+import org.lcsim.util.Driver;
import org.lcsim.util.aida.AIDA;
import org.lcsim.util.log.DefaultLogFormatter;
@@ -156,10 +158,7 @@
// Load the configuration.
loadConfiguration(this.configuration);
-
- // Setup the data source combo box.
- frame.dataSourceComboBox.initialize();
-
+
logger.info("application initialized successfully");
}
@@ -189,19 +188,9 @@
String cmd = e.getActionCommand();
if (Commands.CONNECT.equals(cmd)) {
- // Run the start session method on a separate thread.
- new Thread() {
- public void run() {
- startSession();
- }
- }.start();
+ startSession();
} else if (Commands.DISCONNECT.equals(cmd)) {
- // Run the stop session method on a separate thread.
- new Thread() {
- public void run() {
- stopSession();
- }
- }.start();
+ processing.stop();
} else if (Commands.SAVE_PLOTS.equals(cmd)) {
savePlots();
} else if (Commands.EXIT.equals(cmd)) {
@@ -357,18 +346,14 @@
}
/**
- * <p>
* Start a new monitoring session.
- * <p>
- * This method is executed in a separate thread from the EDT within {@link #actionPerformed(ActionEvent)}
- * so that GUI updates are not blocked while the session is being setup.
- */
- void startSession() {
+ */
+ synchronized void startSession() {
logger.info("starting new session");
try {
-
+
// Reset the plot panel and global AIDA state.
resetPlots();
@@ -381,8 +366,11 @@
List<CompositeRecordProcessor> processors = new ArrayList<CompositeRecordProcessor>();
processors.add(frame.runPanel.new RunPanelUpdater());
+ List<Driver> drivers = new ArrayList<Driver>();
+ drivers.add(frame.triggerPanel.new TriggerDiagnosticGUIDriver());
+
// Initialize event processing with the list of processors and reference to the application.
- processing = new EventProcessing(this, processors);
+ processing = new EventProcessing(this, processors, drivers);
// Connect to the ET system, if applicable.
processing.connect();
@@ -412,31 +400,13 @@
logger.severe("failed to start new session");
}
}
-
- /**
- * Stop the session by disconnecting from the ET system and stopping the event processing.
- */
- void stopSession() {
-
- logger.info("stopping the session");
-
- // Disconnect from ET system, if using the ET server, and set the proper disconnected GUI state.
- processing.disconnect();
-
- // Stop the event processing, which is called after the ET system goes down to avoid hanging in calls to ET system.
- processing.stop();
-
- logger.info("session was stopped");
- }
-
+
/**
* Exit from the application.
*/
void exit() {
- // Cleanup ET system if necessary.
if (processing != null && processing.isActive()) {
- logger.info("killing active ET connection");
- processing.closeEtConnection();
+ processing.stop();
}
frame.setVisible(false);
logger.info("exiting the application");
Modified: java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
=============================================================================
--- java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java (original)
+++ java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java Fri Mar 6 22:52:58 2015
@@ -29,6 +29,7 @@
LogPanel logPanel;
SystemStatusTable systemStatusTable;
JPanel buttonsPanel;
+ TriggerDiagnosticsPanel triggerPanel;
JSplitPane mainSplitPane;
JSplitPane rightSplitPane;
@@ -113,6 +114,10 @@
systemStatusTable = new SystemStatusTable();
tableTabbedPane.addTab("System Status Monitor", new JScrollPane(systemStatusTable));
+ // Add the trigger diagnostics tables.
+ triggerPanel = new TriggerDiagnosticsPanel();
+ tableTabbedPane.addTab("Trigger Diagnostics", triggerPanel);
+
// Vertical split pane in left panel.
leftSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, runPanel, tableTabbedPane);
leftPanel.add(leftSplitPane, BorderLayout.CENTER);
@@ -132,11 +137,12 @@
// Create the right panel vertical split pane for displaying plots and their information and statistics.
rightSplitPane = new JSplitPane(JSplitPane.VERTICAL_SPLIT, plotPanel, plotInfoPanel);
setProportionalSize(rightSplitPane, RIGHT_PANEL_WIDTH, FULL_SIZE);
- rightSplitPane.setResizeWeight(0.9);
+ rightSplitPane.setResizeWeight(0.8);
rightPanel.add(rightSplitPane, BorderLayout.CENTER);
// Create the main horizontal split pane for dividing the left and right panels.
mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
+ mainSplitPane.setResizeWeight(0.15);
bottomPanel.add(mainSplitPane, BorderLayout.CENTER);
// Create the menu bar.
@@ -174,9 +180,13 @@
component.setPreferredSize(scaledDimension);
}
+ /**
+ * Restore default window settings.
+ */
void restoreDefaults() {
+ setExtendedState(JFrame.MAXIMIZED_BOTH);
mainSplitPane.resetToPreferredSizes();
leftSplitPane.resetToPreferredSizes();
- rightSplitPane.resetToPreferredSizes();
+ rightSplitPane.resetToPreferredSizes();
}
}
Modified: java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java
=============================================================================
--- java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java (original)
+++ java/branches/prod/monitoring-app/src/main/java/org/hps/monitoring/application/model/ConfigurationModel.java Fri Mar 6 22:52:58 2015
@@ -1,6 +1,5 @@
package org.hps.monitoring.application.model;
-import java.awt.event.ActionListener;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
@@ -17,6 +16,8 @@
public final class ConfigurationModel extends AbstractModel {
Configuration configuration;
+
+ List<ConfigurationListener> listeners = new ArrayList<ConfigurationListener>();
// Job setting properties.
public static final String DETECTOR_NAME_PROPERTY = "DetectorName";
@@ -53,6 +54,9 @@
public static final String WAIT_MODE_PROPERTY = "WaitMode";
public static final String WAIT_TIME_PROPERTY = "WaitTime";
public static final String PRESCALE_PROPERTY = "Prescale";
+
+ // Action command to get notified after configuration change is performed.
+ public static final String CONFIGURATION_CHANGED = "configurationChanged";
static final String[] CONFIG_PROPERTIES = AbstractModel.getPropertyNames(ConfigurationModel.class);
@@ -64,10 +68,21 @@
this.configuration = configuration;
fireModelChanged();
}
+
+ public void addConfigurationListener(ConfigurationListener listener) {
+ listeners.add(listener);
+ }
public void setConfiguration(Configuration configuration) {
this.configuration = configuration;
fireModelChanged();
+ fireConfigurationChanged();
+ }
+
+ void fireConfigurationChanged() {
+ for (ConfigurationListener listener : listeners) {
+ listener.configurationChanged(this);
+ }
}
public Configuration getConfiguration() {
Modified: java/branches/prod/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java
=============================================================================
--- java/branches/prod/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java (original)
+++ java/branches/prod/record-util/src/main/java/org/hps/record/composite/CompositeLoop.java Fri Mar 6 22:52:58 2015
@@ -18,10 +18,8 @@
import org.hps.record.et.EtEventSource.EtSourceException;
import org.hps.record.evio.EvioEventProcessor;
import org.hps.record.evio.EvioFileSource;
-import org.lcsim.conditions.ConditionsManager;
import org.lcsim.util.Driver;
import org.lcsim.util.loop.LCIOEventSource;
-import org.lcsim.util.loop.LCSimConditionsManagerImplementation;
/**
* Implementation of a composite record loop for processing
@@ -265,7 +263,6 @@
// Configure ET system.
if (config.sourceType == DataSourceType.ET_SERVER) {
- //System.out.println("compositeLoop.addAdapter(etAdapter)");
addAdapter(etAdapter);
}
@@ -274,28 +271,17 @@
if (config.sourceType.ordinal() <= DataSourceType.EVIO_FILE.ordinal()) {
if (evioAdapter == null)
evioAdapter = new EvioEventAdapter();
- //System.out.println("compositeLoop.addAdapter(evioAdapter)");
addAdapter(evioAdapter);
}
}
// Configure LCIO processing.
if (config.processingStage.ordinal() >= ProcessingStage.LCIO.ordinal()) {
- if (lcioAdapter == null)
+ if (lcioAdapter == null) {
lcioAdapter = new LcioEventAdapter();
- //System.out.println("compositeLoop.addAdapter(lcioAdapter)");
+ }
addAdapter(lcioAdapter);
if (config.eventBuilder != null) {
- if (config.detectorName != null) {
- // Is LCSim ConditionsManager installed yet?
- if (!ConditionsManager.isSetup()) {
- // Setup default LCSim conditions system if not already.
- LCSimConditionsManagerImplementation.register();
- }
- //config.eventBuilder.setDetectorName(config.detectorName);
- } else {
- throw new IllegalArgumentException("Missing detectorName in configuration.");
- }
lcioAdapter.setLCSimEventBuilder(config.eventBuilder);
} else {
throw new IllegalArgumentException("Missing an LCSimEventBuilder in configuration.");
Modified: java/branches/prod/record-util/src/main/java/org/hps/record/evio/EvioEventConstants.java
=============================================================================
--- java/branches/prod/record-util/src/main/java/org/hps/record/evio/EvioEventConstants.java (original)
+++ java/branches/prod/record-util/src/main/java/org/hps/record/evio/EvioEventConstants.java Fri Mar 6 22:52:58 2015
@@ -12,4 +12,9 @@
public static final int EVENTID_BANK_TAG = 0xC000;
public static final int HEAD_BANK_TAG = 0xe10F;
+
+ public static final int EPICS_EVENT_TAG = 31;
+ public static final int EPICS_BANK_TAG_2s = -1;
+ public static final int EPICS_BANK_TAG_20s = -1;
+
}
Modified: java/branches/prod/steering-files/src/main/resources/org/hps/steering/readout/CommRun2014LoosePairs.lcsim
=============================================================================
--- java/branches/prod/steering-files/src/main/resources/org/hps/steering/readout/CommRun2014LoosePairs.lcsim (original)
+++ java/branches/prod/steering-files/src/main/resources/org/hps/steering/readout/CommRun2014LoosePairs.lcsim Fri Mar 6 22:52:58 2015
@@ -47,16 +47,18 @@
<inputHitCollectionName>EcalCorrectedHits</inputHitCollectionName>
<clusterWindow>1</clusterWindow>
</driver>
- <driver name="PairTrigger0" type="org.hps.readout.ecal.FADCPrimaryTriggerDriver">
+ <driver name="PairTrigger1" type="org.hps.readout.ecal.FADCPrimaryTriggerDriver">
<clusterCollectionName>EcalClusters</clusterCollectionName>
<deadTime>10</deadTime>
<pairCoincidence>4</pairCoincidence>
- <minHitCount>2</minHitCount>
+ <minHitCount>3</minHitCount>
<energySumHigh>2.0</energySumHigh>
- <energySumLow>0.0</energySumLow>
+ <energySumLow>1.0</energySumLow>
<energyDifferenceHigh>1.2</energyDifferenceHigh>
- <coplanarityHigh>90</coplanarityHigh>
+ <coplanarityHigh>40</coplanarityHigh>
<seedEnergyLow>0.1</seedEnergyLow>
+ <energySlopeParamF>0.005500</energySlopeParamF>
+ <energySlopeLow>0.4</energySlopeLow>
<outputFileName>${outputFile}.triggers</outputFileName>
</driver>
<driver name="AidaSaveDriver"
|