Author: [log in to unmask] Date: Wed Mar 25 14:28:52 2015 New Revision: 2551 Log: Move classes from monitoring-app to record-util module. Added: java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsEtProcessor.java java/trunk/record-util/src/main/java/org/hps/record/et/PreStartProcessor.java java/trunk/record-util/src/main/java/org/hps/record/et/SyncEventProcessor.java Added: java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsEtProcessor.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsEtProcessor.java (added) +++ java/trunk/record-util/src/main/java/org/hps/record/epics/EpicsEtProcessor.java Wed Mar 25 14:28:52 2015 @@ -0,0 +1,34 @@ +package org.hps.record.epics; + +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; + +/** + * An ET event processor that builds EPICS events. + * + * @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); + if (evioProcessor.getEpicsScalarData() != null) { + System.out.println("EpicsEtProcessor created EpicsScalarData ..."); + System.out.println(evioProcessor.getEpicsScalarData()); + } + } +} + Added: java/trunk/record-util/src/main/java/org/hps/record/et/PreStartProcessor.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/et/PreStartProcessor.java (added) +++ java/trunk/record-util/src/main/java/org/hps/record/et/PreStartProcessor.java Wed Mar 25 14:28:52 2015 @@ -0,0 +1,33 @@ +package org.hps.record.et; + +import java.io.IOException; + +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/trunk/record-util/src/main/java/org/hps/record/et/SyncEventProcessor.java ============================================================================= --- java/trunk/record-util/src/main/java/org/hps/record/et/SyncEventProcessor.java (added) +++ java/trunk/record-util/src/main/java/org/hps/record/et/SyncEventProcessor.java Wed Mar 25 14:28:52 2015 @@ -0,0 +1,57 @@ +package org.hps.record.et; + +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.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(); + } + } +}