Author: [log in to unmask]
Date: Mon Mar 23 16:20:31 2015
New Revision: 2507
Log:
Check in changes from monitoring dev branch.
Added:
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EpicsEtProcessor.java
Modified:
java/branches/monitoring-app-dev/ (props changed)
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EtSystemUtil.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EventTagFilter.java
java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/EventProcessing.java Mon Mar 23 16:20:31 2015
@@ -5,6 +5,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.logging.Logger;
@@ -13,11 +14,12 @@
import org.hps.job.JobManager;
import org.hps.monitoring.application.model.ConfigurationModel;
import org.hps.monitoring.application.model.ConnectionStatus;
+import org.hps.monitoring.application.model.ConnectionStatusModel;
import org.hps.monitoring.application.model.SteeringType;
+import org.hps.monitoring.application.util.EpicsEtProcessor;
+import org.hps.monitoring.application.util.ErrorHandler;
import org.hps.monitoring.application.util.EtSystemUtil;
-import org.hps.monitoring.application.util.PhysicsSyncEventStation;
import org.hps.monitoring.application.util.PreStartProcessor;
-import org.hps.monitoring.application.util.RunnableEtStation;
import org.hps.monitoring.application.util.SyncEventProcessor;
import org.hps.monitoring.subsys.et.EtSystemMonitor;
import org.hps.monitoring.subsys.et.EtSystemStripCharts;
@@ -31,6 +33,8 @@
import org.hps.record.et.EtEventProcessor;
import org.hps.record.et.EtStationThread;
import org.hps.record.evio.EvioDetectorConditionsProcessor;
+import org.hps.record.evio.EvioEventConstants;
+import org.jlab.coda.et.EtConstants;
import org.jlab.coda.et.exception.EtClosedException;
import org.jlab.coda.et.exception.EtException;
import org.lcsim.conditions.ConditionsListener;
@@ -46,28 +50,33 @@
*/
class EventProcessing {
- // TODO: Move rest of variables to SessionState class.
+ SessionState sessionState;
+ MonitoringApplication application;
+ ConfigurationModel configurationModel;
+ ConnectionStatusModel connectionModel;
+ ErrorHandler errorHandler;
+ Logger logger;
- MonitoringApplication application;
- Logger logger;
- SessionState sessionState;
- List<CompositeRecordProcessor> processors;
- List<Driver> drivers;
- List<ConditionsListener> conditionsListeners;
- int stationPosition;
-
/**
* This class is used to organize the objects for an event processing session.
*/
class SessionState {
+
+ List<CompositeRecordProcessor> processors;
+ List<Driver> drivers;
+ List<ConditionsListener> conditionsListeners;
+
JobManager jobManager;
LCSimEventBuilder eventBuilder;
CompositeLoop loop;
+
+ boolean usingEtServer;
+
EventProcessingThread processingThread;
Thread sessionWatchdogThread;
ThreadGroup stationThreadGroup = new ThreadGroup("Station Threads");
- List<RunnableEtStation> stations = new ArrayList<RunnableEtStation>();
- EtConnection connection;
+ List<EtStationThread> stations = new ArrayList<EtStationThread>();
+ EtConnection connection;
}
/**
@@ -81,20 +90,20 @@
List<CompositeRecordProcessor> processors,
List<Driver> drivers,
List<ConditionsListener> conditionsListeners) {
+
this.application = application;
- this.sessionState = new SessionState();
- this.logger = MonitoringApplication.logger;
- this.processors = processors;
- this.drivers = drivers;
- this.conditionsListeners = conditionsListeners;
- this.stationPosition = application.configurationModel.getStationPosition();
+ logger = MonitoringApplication.logger;
+ configurationModel = application.configurationModel;
+ connectionModel = application.connectionModel;
+ errorHandler = application.errorHandler;
+
+ sessionState = new SessionState();
+ sessionState.processors = processors;
+ sessionState.drivers = drivers;
+ sessionState.conditionsListeners = conditionsListeners;
+ sessionState.usingEtServer = application.configurationModel.getDataSourceType().equals(DataSourceType.ET_SERVER);
}
- int getNextStationPosition() {
- this.stationPosition += 1;
- return this.stationPosition;
- }
-
/**
* Setup this class from the global configuration.
* @param configurationModel The global configuration.
@@ -111,7 +120,7 @@
/**
* @param configurationModel
*/
- private void setupLcsim(ConfigurationModel configurationModel) {
+ void setupLcsim(ConfigurationModel configurationModel) {
MonitoringApplication.logger.info("setting up lcsim");
// Get steering resource or file as a String parameter.
@@ -133,7 +142,7 @@
// Add conditions listeners after new database conditions manager is initialized from
// job manager.
DatabaseConditionsManager conditionsManager = DatabaseConditionsManager.getInstance();
- for (ConditionsListener conditionsListener : conditionsListeners) {
+ for (ConditionsListener conditionsListener : sessionState.conditionsListeners) {
logger.config("adding conditions listener " + conditionsListener.getClass().getName());
conditionsManager.addConditionsListener(conditionsListener);
}
@@ -183,15 +192,14 @@
logger.info("lcsim setup was successful");
} catch (Throwable t) {
- // Catch all errors and re-throw them as RuntimeExceptions.
- application.errorHandler.setError(t).setMessage("Error setting up LCSim.").printStackTrace().raiseException();
+ throw new RuntimeException("Error setting up LCSim.", t);
}
}
/**
* Create the event builder for converting EVIO events to LCSim.
*/
- private void createEventBuilder(ConfigurationModel configurationModel) {
+ void createEventBuilder(ConfigurationModel configurationModel) {
// Get the class for the event builder.
String eventBuilderClassName = configurationModel.getEventBuilderClassName();
@@ -211,7 +219,7 @@
* Setup the loop from the global configuration.
* @param configurationModel The global configuration.
*/
- private void setupLoop(ConfigurationModel configurationModel) {
+ void setupLoop(ConfigurationModel configurationModel) {
CompositeLoopConfiguration loopConfig = new CompositeLoopConfiguration()
.setStopOnEndRun(configurationModel.getDisconnectOnEndRun())
@@ -248,13 +256,13 @@
}
// Add extra CompositeRecordProcessors to the loop config.
- for (CompositeRecordProcessor processor : processors) {
+ for (CompositeRecordProcessor processor : sessionState.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) {
+ for (Driver driver : sessionState.drivers) {
loopConfig.add(driver);
logger.config("added extra Driver " + driver.getName() + " to job");
}
@@ -271,7 +279,7 @@
* Setup a steering file on disk.
* @param steering The steering file.
*/
- private void setupSteeringFile(String steering) {
+ void setupSteeringFile(String steering) {
sessionState.jobManager.setup(new File(steering));
}
@@ -280,7 +288,7 @@
* @param steering The steering resource.
* @throws IOException if there is a problem setting up or accessing the resource.
*/
- private void setupSteeringResource(String steering) throws IOException {
+ void setupSteeringResource(String steering) throws IOException {
InputStream is = this.getClass().getClassLoader().getResourceAsStream(steering);
if (is == null)
throw new IOException("Steering resource is not accessible or does not exist.");
@@ -294,14 +302,8 @@
killWatchdogThread();
// Wake up all ET stations to unblock the system and make sure secondary stations are detached.
- //wakeUpEtStations()
- // Wake up the primary ET station doing the event processing.
- logger.finest("waking up event processing station ...");
- try {
- sessionState.connection.getEtSystem().wakeUpAll(sessionState.connection.getEtStation());
- logger.finest("event processing station woken up");
- } catch (IOException | EtException | EtClosedException e) {
- e.printStackTrace();
+ if (usingEtServer()) {
+ wakeUpEtStations();
}
// Stop the event processing now that ET system is unblocked.
@@ -321,7 +323,7 @@
// Notify of last error that occurred in event processing.
if (sessionState.loop.getLastError() != null) {
// Log the error.
- application.errorHandler.setError(sessionState.loop.getLastError()).log();
+ errorHandler.setError(sessionState.loop.getLastError()).log();
}
// Invalidate the loop.
@@ -337,22 +339,18 @@
/**
* Wake up all ET stations associated with event processing.
*/
- private void wakeUpEtStations() {
+ void wakeUpEtStations() {
if (sessionState.connection != null) {
logger.fine("waking up ET stations ...");
// Wake up secondary ET stations.
- for (RunnableEtStation station : sessionState.stations) {
- if (station.getEtStation().isUsable()) {
- // Wake up the station which will automatically trigger a detach.
- try {
- logger.finest("waking up " + station.getEtStation().getName() + " ...");
- sessionState.connection.getEtSystem().wakeUpAll(station.getEtStation());
- logger.finest(station.getEtStation().getName() + " woken up");
- } catch (IOException | EtException | EtClosedException e) {
- e.printStackTrace();
- }
- }
+ for (EtStationThread station : sessionState.stations) {
+
+ // First unblock if in ET call.
+ station.wakeUp();
+
+ // Next interrupt so that it will definitely stop.
+ station.interrupt();
}
// Wait for station threads to die after being woken up.
@@ -367,23 +365,23 @@
}
}
}
-
- logger.finest("destroying station thread group");
+
sessionState.stationThreadGroup.destroy();
- logger.finest("station thread group destroyed");
+
+ logger.finest("station threads destroyed");
// Wake up the primary ET station doing the event processing.
logger.finest("waking up event processing station ...");
try {
sessionState.connection.getEtSystem().wakeUpAll(sessionState.connection.getEtStation());
- logger.finest("event processing station woken up");
+ logger.finest("event processing station was woken up");
} catch (IOException | EtException | EtClosedException e) {
e.printStackTrace();
}
- logger.finest("ET stations woken up");
- }
- }
+ logger.finest("ET stations all woken up");
+ }
+ }
/**
* Start event processing on the event processing thread and start the watchdog thread.
@@ -396,7 +394,7 @@
sessionState.processingThread = new EventProcessingThread(sessionState.loop);
sessionState.processingThread.start();
- // Start the watchdog thread which will auto-disconnect when event processing is done.
+ // Start the watch dog thread which will auto-disconnect when event processing is done.
sessionState.sessionWatchdogThread = new SessionWatchdogThread(sessionState.processingThread);
sessionState.sessionWatchdogThread.start();
@@ -408,9 +406,9 @@
*/
synchronized void pause() {
logger.finest("pausing");
- if (!application.connectionModel.getPaused()) {
+ if (!connectionModel.getPaused()) {
sessionState.loop.pause();
- application.connectionModel.setPaused(true);
+ connectionModel.setPaused(true);
}
logger.finest("paused");
}
@@ -420,10 +418,10 @@
*/
synchronized void next() {
logger.finest("getting next event");
- if (application.connectionModel.getPaused()) {
- application.connectionModel.setPaused(false);
+ if (connectionModel.getPaused()) {
+ connectionModel.setPaused(false);
sessionState.loop.execute(Command.GO_N, 1L, true);
- application.connectionModel.setPaused(true);
+ connectionModel.setPaused(true);
}
logger.finest("got next event");
}
@@ -433,10 +431,10 @@
*/
synchronized void resume() {
logger.finest("resuming");
- if (application.connectionModel.getPaused()) {
+ if (connectionModel.getPaused()) {
// Notify event processor to continue.
sessionState.loop.resume();
- application.connectionModel.setPaused(false);
+ connectionModel.setPaused(false);
}
logger.finest("resumed");
}
@@ -483,7 +481,7 @@
}
/**
- * True if the processing thread is active.
+ * True if the processing thread is valid and active.
* @return True if processing thread is active.
*/
boolean isActive() {
@@ -504,7 +502,10 @@
createEtConnection();
// Add an attachment that listens for DAQ configuration changes via physics SYNC events.
- //createPhysicsSyncStation();
+ //createSyncStation();
+
+ // Add an attachment which listens for EPICs events with scalar data.
+ createEpicsStation();
// Add an attachment that listens for PRESTART events.
//createPreStartStation();
@@ -516,7 +517,7 @@
logger.fine("ET system is connected");
} else {
// This is when a direct file source is used and ET is not needed.
- application.connectionModel.setConnectionStatus(ConnectionStatus.CONNECTED);
+ connectionModel.setConnectionStatus(ConnectionStatus.CONNECTED);
}
}
@@ -526,7 +527,7 @@
* @return True if using an ET server.
*/
boolean usingEtServer() {
- return application.configurationModel.getDataSourceType().equals(DataSourceType.ET_SERVER);
+ return sessionState.usingEtServer;
}
/**
@@ -534,72 +535,76 @@
*/
synchronized void createEtConnection() {
// Setup connection to ET system.
- sessionState.connection = EtSystemUtil.createEtConnection(application.configurationModel);
+ sessionState.connection = EtSystemUtil.createEtConnection(configurationModel);
if (sessionState.connection != null) {
// Set status to connected as there is now a live ET connection.
- application.connectionModel.setConnectionStatus(ConnectionStatus.CONNECTED);
+ connectionModel.setConnectionStatus(ConnectionStatus.CONNECTED);
} else {
- application.errorHandler.setError(new RuntimeException("Failed to create ET connection.")).log().printStackTrace().raiseException();
- }
- }
-
- /**
- * Create the ET that listens for DAQ configuration change via SYNC events.
- */
- private void createPhysicsSyncStation() {
- logger.fine("creating physics SYNC station ...");
- PhysicsSyncEventStation configStation = new PhysicsSyncEventStation(
- this.sessionState.connection.getEtSystem(),
- this.sessionState.connection.getEtStation().getName() + "_PhysicsSync",
- getNextStationPosition());
- sessionState.stations.add(configStation);
- new Thread(sessionState.stationThreadGroup, configStation).start();
- logger.fine("physics SYNC station created");
- }
+ errorHandler.setError(new RuntimeException("Failed to create ET connection.")).log().printStackTrace().raiseException();
+ }
+ }
- /**
- * Create the ET station that listens for GO events in order to initialize the conditions system.
- */
- /*
- private void createPreStartStation() {
- logger.fine("creating PRESTART station ...");
- String detectorName = this.application.configurationModel.getDetectorName();
- EtSystem system = this.sessionState.connection.getEtSystem();
- String stationName = this.sessionState.connection.getEtStation().getName() + "_PreStart";
- int order = getNextStationPosition();
- PreStartEtStation preStartStation = new PreStartEtStation(
- detectorName,
- system,
- stationName,
- order);
- sessionState.stations.add(preStartStation);
- new Thread(sessionState.stationThreadGroup, preStartStation).start();
- logger.fine("PRESTART station created");
- }
- */
-
- private void createSyncStation() {
+ static int[] createSelectArray() {
+ int select[] = new int[EtConstants.stationSelectInts];
+ Arrays.fill(select, -1);
+ return select;
+ }
+
+ void createSyncStation() {
+
+ int syncEventType = 0;
+ syncEventType = syncEventType ^ (1 << 6);
+ syncEventType = syncEventType ^ (1 << 7);
+ int select[] = createSelectArray();
+ select[1] = syncEventType;
+
createStationThread(
new SyncEventProcessor(),
- "_SYNC",
- 1);
- }
+ "SYNC",
+ 1,
+ select);
+ }
- private void createPreStartStation() {
+ void createPreStartStation() {
+
+ int[] select = createSelectArray();
+ select[0] = EvioEventConstants.PRESTART_EVENT_TAG;
+
createStationThread(
- new PreStartProcessor(this.application.configurationModel.getDetectorName()),
- "_PRESTART",
- 1);
+ new PreStartProcessor(configurationModel.getDetectorName()),
+ "PRESTART",
+ 1,
+ select);
}
- private void createStationThread(EtEventProcessor processor, String nameAppend, int stationPosition) {
- EtStationThread thread = new EtStationThread(
+ void createEpicsStation() {
+
+ int[] select = createSelectArray();
+ select[0] = EvioEventConstants.EPICS_EVENT_TAG;
+
+ createStationThread(
+ new EpicsEtProcessor(),
+ "EPICS",
+ 1,
+ select);
+ }
+
+ void createStationThread(EtEventProcessor processor, String nameAppend, int stationPosition, int[] control) {
+ EtStationThread stationThread = new EtStationThread(
processor,
sessionState.connection.getEtSystem(),
- sessionState.connection.getEtStation().getName() + nameAppend,
- stationPosition);
- new Thread(sessionState.stationThreadGroup, thread).start();
+ sessionState.connection.getEtStation().getName() + "_" + nameAppend,
+ stationPosition,
+ control);
+ new Thread(sessionState.stationThreadGroup, stationThread).start();
+ sessionState.stations.add(stationThread);
+ logger.config("started ET station " + nameAppend);
+ StringBuffer sb = new StringBuffer();
+ for (int word : control) {
+ sb.append(word + " ");
+ }
+ logger.config("station has select array: " + sb.toString());
}
/**
@@ -609,10 +614,12 @@
synchronized void disconnect() {
// Cleanup the ET connection.
- closeEtConnection();
+ if (usingEtServer()) {
+ closeEtConnection();
+ }
// Change application state to disconnected.
- application.connectionModel.setConnectionStatus(ConnectionStatus.DISCONNECTED);
+ connectionModel.setConnectionStatus(ConnectionStatus.DISCONNECTED);
}
/**
@@ -644,20 +651,24 @@
void invalidate() {
- this.application = null;
- this.conditionsListeners = null;
- this.drivers = null;
- this.logger = null;
- this.processors = null;
-
- this.sessionState.jobManager = null;
- this.sessionState.eventBuilder = null;
- this.sessionState.loop = null;
- this.sessionState.processingThread = null;
- this.sessionState.sessionWatchdogThread = null;
- this.sessionState.stationThreadGroup = null;
- this.sessionState.stations = null;
- this.sessionState.connection = null;
- this.sessionState = null;
+ application = null;
+ logger = null;
+ configurationModel = null;
+ connectionModel = null;
+ errorHandler = null;
+
+ sessionState.conditionsListeners = null;
+ sessionState.drivers = null;
+ sessionState.processors = null;
+ sessionState.jobManager = null;
+ sessionState.eventBuilder = null;
+ sessionState.loop = null;
+ sessionState.processingThread = null;
+ sessionState.sessionWatchdogThread = null;
+ sessionState.stationThreadGroup = null;
+ sessionState.stations = null;
+ sessionState.connection = null;
+
+ sessionState = null;
}
}
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplication.java Mon Mar 23 16:20:31 2015
@@ -205,18 +205,16 @@
// Setup AIDA plotting and connect it to the GUI.
setupAida();
- // Set the configuration.
+ // Always load the default configuration first.
+ loadConfiguration(new Configuration(DEFAULT_CONFIGURATION));
+
+ // Overlay the user configuration if one was specified.
if (configuration != null) {
- // There was a user specified configuration.
this.configuration = configuration;
- } else {
- // Use the default configuration.
- this.configuration = new Configuration(DEFAULT_CONFIGURATION);
+ loadConfiguration(this.configuration);
}
-
- // Load the configuration.
- loadConfiguration(this.configuration);
-
+
+ // Enable the GUI now that initialization is complete.
frame.setEnabled(true);
logger.info("application initialized successfully");
@@ -826,7 +824,7 @@
}
/**
- *
+ * Run the disconnection on a separate thread.
*/
void runDisconnectThread() {
new Thread() {
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/MonitoringApplicationFrame.java Mon Mar 23 16:20:31 2015
@@ -140,7 +140,7 @@
// Create the main horizontal split pane for dividing the left and right panels.
mainSplitPane = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftPanel, rightPanel);
- mainSplitPane.setDividerLocation(PIXEL_WIDTH_MAX / 2);
+ mainSplitPane.setDividerLocation((int) (PIXEL_WIDTH_MAX * 0.4));
bottomPanel.add(mainSplitPane, BorderLayout.CENTER);
// Create the menu bar.
Added: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EpicsEtProcessor.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EpicsEtProcessor.java (added)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EpicsEtProcessor.java Mon Mar 23 16:20:31 2015
@@ -0,0 +1,31 @@
+package org.hps.monitoring.application.util;
+
+import java.io.IOException;
+
+import org.hps.record.et.EtEventProcessor;
+import org.jlab.coda.et.EtEvent;
+import org.jlab.coda.jevio.EvioEvent;
+import org.jlab.coda.jevio.EvioException;
+import org.jlab.coda.jevio.EvioReader;
+
+import org.hps.evio.epics.EpicsEvioProcessor;
+
+/**
+ *
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class EpicsEtProcessor extends EtEventProcessor {
+
+ EpicsEvioProcessor evioProcessor = new EpicsEvioProcessor();
+
+ public void process(EtEvent event) {
+ EvioEvent evio;
+ try {
+ evio = new EvioReader(event.getDataBuffer()).parseNextEvent();
+ } catch (IOException | EvioException e) {
+ throw new RuntimeException(e);
+ }
+ evioProcessor.process(evio);
+ }
+}
+
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EtSystemUtil.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EtSystemUtil.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EtSystemUtil.java Mon Mar 23 16:20:31 2015
@@ -1,7 +1,10 @@
package org.hps.monitoring.application.util;
+
+import java.util.Arrays;
import org.hps.monitoring.application.model.ConfigurationModel;
import org.hps.record.et.EtConnection;
+import org.jlab.coda.et.EtConstants;
public final class EtSystemUtil {
@@ -20,5 +23,11 @@
config.getWaitMode(),
config.getWaitTime(),
config.getChunkSize());
+ }
+
+ public static int[] createSelectArray() {
+ int select[] = new int[EtConstants.stationSelectInts];
+ Arrays.fill(select, -1);
+ return select;
}
}
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EventTagFilter.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EventTagFilter.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/EventTagFilter.java Mon Mar 23 16:20:31 2015
@@ -14,7 +14,7 @@
public static final class SyncTagFilter implements EventTagFilter {
public boolean accept(int eventTag) {
// Physics event with sync information (DAQ config) has bit 6 set.
- return (((eventTag >> 6) & 1) == 1) && ((eventTag >> 7)== 1);
+ return (((eventTag >> 6) & 1) == 1) && ((eventTag >> 7) == 1);
}
}
Modified: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java
=============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java (original)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java Mon Mar 23 16:20:31 2015
@@ -13,6 +13,8 @@
import org.jlab.coda.jevio.EvioReader;
import org.lcsim.event.base.BaseLCSimEvent;
+import org.hps.monitoring.application.util.EventTagFilter.SyncTagFilter;
+
/**
*
* @author Jeremy McCormick <[log in to unmask]>
@@ -21,29 +23,31 @@
private static final String TRIGGER_CONFIG = "TriggerConfig";
TriggerConfigEvioReader configReader = new TriggerConfigEvioReader();
+ EventTagFilter filter = new SyncTagFilter();
public void process(EtEvent event) {
- EvioEvent evioEvent = null;
- try {
- evioEvent = new EvioReader(event.getDataBuffer()).parseNextEvent();
- } catch (IOException | EvioException e) {
- throw new RuntimeException(e);
- }
- //System.out.println("dumping EVIO event ...");
- //System.out.println(evioEvent.toXML());
- try {
- BaseLCSimEvent lcsimEvent = new BaseLCSimEvent(9999, 9999, "dummy", 0, false);
- configReader.getDAQConfig(evioEvent, lcsimEvent);
- if (lcsimEvent.hasCollection(EvioDAQParser.class, TRIGGER_CONFIG)) {
- List<EvioDAQParser> configList = lcsimEvent.get(EvioDAQParser.class, TRIGGER_CONFIG);
- if (!configList.isEmpty()) {
- ConfigurationManager.updateConfiguration(configList.get(0));
+ if (filter.accept(event.getControl()[0])) {
+ EvioEvent evioEvent = null;
+ try {
+ evioEvent = new EvioReader(event.getDataBuffer()).parseNextEvent();
+ } catch (IOException | EvioException e) {
+ throw new RuntimeException(e);
+ }
+ System.out.println("Dumping physics SYNC event ...");
+ System.out.println(evioEvent.toXML());
+ try {
+ BaseLCSimEvent lcsimEvent = new BaseLCSimEvent(9999, 9999, "dummy", 0, false);
+ configReader.getDAQConfig(evioEvent, lcsimEvent);
+ if (lcsimEvent.hasCollection(EvioDAQParser.class, TRIGGER_CONFIG)) {
+ List<EvioDAQParser> configList = lcsimEvent.get(EvioDAQParser.class, TRIGGER_CONFIG);
+ if (!configList.isEmpty()) {
+ ConfigurationManager.updateConfiguration(configList.get(0));
+ }
}
+ } catch (Exception e) {
+ System.err.println("Failed to load DAQ config from sync event ...");
+ e.printStackTrace();
}
- } catch (Exception e) {
- System.err.println("Failed to load DAQ config from sync event ...");
- e.printStackTrace();
}
}
-
}
|