Print

Print


Author: [log in to unmask]
Date: Thu Mar 19 10:44:12 2015
New Revision: 2492

Log:
Work in progress in monitoring dev branch.

Added:
    java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/PreStartProcessor.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

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	Thu Mar 19 10:44:12 2015
@@ -16,8 +16,9 @@
 import org.hps.monitoring.application.model.SteeringType;
 import org.hps.monitoring.application.util.EtSystemUtil;
 import org.hps.monitoring.application.util.PhysicsSyncEventStation;
-import org.hps.monitoring.application.util.PreStartEtStation;
+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;
 import org.hps.record.LCSimEventBuilder;
@@ -27,8 +28,9 @@
 import org.hps.record.composite.EventProcessingThread;
 import org.hps.record.enums.DataSourceType;
 import org.hps.record.et.EtConnection;
+import org.hps.record.et.EtEventProcessor;
+import org.hps.record.et.EtStationThread;
 import org.hps.record.evio.EvioDetectorConditionsProcessor;
-import org.jlab.coda.et.EtSystem;
 import org.jlab.coda.et.exception.EtClosedException;
 import org.jlab.coda.et.exception.EtException;
 import org.lcsim.conditions.ConditionsListener;
@@ -44,6 +46,8 @@
  */
 class EventProcessing {
 
+    // TODO: Move rest of variables to SessionState class.
+    
     MonitoringApplication application;
     Logger logger;
     SessionState sessionState;
@@ -557,6 +561,7 @@
     /**
      * 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();
@@ -572,6 +577,30 @@
         new Thread(sessionState.stationThreadGroup, preStartStation).start();
         logger.fine("PRESTART station created");
     }
+    */
+    
+    private void createSyncStation() {
+        createStationThread(
+                new SyncEventProcessor(),
+                "_SYNC", 
+                1);
+    }
+    
+    private void createPreStartStation() {
+        createStationThread(
+                new PreStartProcessor(this.application.configurationModel.getDetectorName()),
+                "_PRESTART",
+                1);                           
+    }
+    
+    private void createStationThread(EtEventProcessor processor, String nameAppend, int stationPosition) {
+        EtStationThread thread = new EtStationThread(
+                processor,
+                sessionState.connection.getEtSystem(),
+                sessionState.connection.getEtStation().getName() + nameAppend,
+                stationPosition);
+        new Thread(sessionState.stationThreadGroup, thread).start();
+    }
 
     /**
      * Disconnect from the current ET session.

Added: java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/PreStartProcessor.java
 =============================================================================
--- java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/PreStartProcessor.java	(added)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/PreStartProcessor.java	Thu Mar 19 10:44:12 2015
@@ -0,0 +1,34 @@
+package org.hps.monitoring.application.util;
+
+import java.io.IOException;
+
+import org.hps.record.et.EtEventProcessor;
+import org.hps.record.evio.EvioDetectorConditionsProcessor;
+import org.jlab.coda.et.EtEvent;
+import org.jlab.coda.jevio.EvioEvent;
+import org.jlab.coda.jevio.EvioException;
+import org.jlab.coda.jevio.EvioReader;
+
+/**
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class PreStartProcessor extends EtEventProcessor {
+
+    String detectorName;
+    EvioDetectorConditionsProcessor conditionsProcessor;
+    
+    public PreStartProcessor(String detectorName) {
+        this.detectorName = detectorName;
+        this.conditionsProcessor = new EvioDetectorConditionsProcessor(detectorName);
+    }
+    
+    public void process(EtEvent event) {
+        EvioEvent evioEvent = null;
+        try {
+            evioEvent = new EvioReader(event.getDataBuffer()).parseNextEvent();
+            conditionsProcessor.startRun(evioEvent);
+        } catch (IOException | EvioException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}

Added: 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	(added)
+++ java/branches/monitoring-app-dev/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java	Thu Mar 19 10:44:12 2015
@@ -0,0 +1,49 @@
+package org.hps.monitoring.application.util;
+
+import java.io.IOException;
+import java.util.List;
+
+import org.hps.evio.TriggerConfigEvioReader;
+import org.hps.recon.ecal.daqconfig.ConfigurationManager;
+import org.hps.recon.ecal.daqconfig.EvioDAQParser;
+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.lcsim.event.base.BaseLCSimEvent;
+
+/**
+ * 
+ * @author Jeremy McCormick <[log in to unmask]>
+ */
+public class SyncEventProcessor extends EtEventProcessor {
+
+    private static final String TRIGGER_CONFIG = "TriggerConfig";
+    TriggerConfigEvioReader configReader = new TriggerConfigEvioReader();
+
+    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));
+                }
+            }
+        } catch (Exception e) {
+            System.err.println("Failed to load DAQ config from sync event ...");
+            e.printStackTrace();
+        }
+    }
+
+}