Author: [log in to unmask] Date: Wed Mar 25 15:14:13 2015 New Revision: 2557 Log: Oops. Revert move of class that cannot go into record-util due to missing deps. Added: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java Removed: java/trunk/record-util/src/main/java/org/hps/record/et/SyncEventProcessor.java Added: java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java ============================================================================= --- java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java (added) +++ java/trunk/monitoring-app/src/main/java/org/hps/monitoring/application/util/SyncEventProcessor.java Wed Mar 25 15:14:13 2015 @@ -0,0 +1,58 @@ +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.hps.record.evio.EvioEventUtilities; +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; + +/** + * This is an ET event processor that will load DAQ configuration into the global manager + * from EVIO physics SYNC events, which have an event type in which bits 6 and 7 are set to 1. + * + * @author Jeremy McCormick <[log in to unmask]> + * + * @see org.hps.recon.ecal.daqconfig.ConfigurationManager + * @see org.hps.recon.ecal.daqconfig.EvioDAQParser + */ +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); + } + try { + // Create a dummy LCIO event to satisfy the configuration reader's interface. + BaseLCSimEvent dummyLcsimEvent = + new BaseLCSimEvent(EvioEventUtilities.getRunNumber(evioEvent), evioEvent.getEventNumber(), "DUMMY", 0, false); + + // Create the DAQ configuration object in the LCIO event. + configReader.getDAQConfig(evioEvent, dummyLcsimEvent); + + // Update the global configuration if a configuration was created. + if (dummyLcsimEvent.hasCollection(EvioDAQParser.class, TRIGGER_CONFIG)) { + List<EvioDAQParser> configList = dummyLcsimEvent.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(); + } + } +}