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(); + } + } + +}