Author: [log in to unmask] Date: Wed Jul 29 17:55:04 2015 New Revision: 3305 Log: Add scaler parameters to lcsim events. Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java ============================================================================= --- java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java (original) +++ java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Wed Jul 29 17:55:04 2015 @@ -4,6 +4,7 @@ import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; + import org.hps.recon.ecal.triggerbank.AbstractIntData; import org.hps.recon.ecal.triggerbank.HeadBankData; import org.hps.recon.ecal.triggerbank.SSPData; @@ -11,7 +12,10 @@ import org.hps.recon.ecal.triggerbank.TIData; import org.hps.record.epics.EpicsData; import org.hps.record.epics.EpicsEvioProcessor; +import org.hps.record.evio.EventTagBitMask; import org.hps.record.evio.EvioEventUtilities; +import org.hps.record.scalers.ScalerData; +import org.hps.record.scalers.ScalerParameters; import org.hps.record.scalers.ScalersEvioProcessor; import org.jlab.coda.jevio.EvioEvent; import org.lcsim.event.EventHeader; @@ -19,23 +23,27 @@ import org.lcsim.util.log.LogUtil; /** - * This is the {@link org.hps.record.LCSimEventBuilder} implementation for the Engineering Run and the Commissioning Run. + * This is the {@link org.hps.record.LCSimEventBuilder} implementation for the Engineering Run and the Commissioning Run + * for converting EVIO to LCIO events. * <p> * It has several modifications from the Test Run builder including different values for certain bank tags. * <p> - * Additionally, this builder will write DAQ config information, EPICS control data, and scalar bank data into the output LCSim events if these banks - * are present in the EVIO data. + * Additionally, this builder will write DAQ config information, EPICS control data, and scalar bank data into the + * output LCSim events if these banks are present in the EVIO data. * * @author Sho Uemura <[log in to unmask]> * @author Jeremy McCormick <[log in to unmask]> */ public class LCSimEngRunEventBuilder extends LCSimTestRunEventBuilder { - private static final Logger LOGGER = LogUtil.create(LCSimEngRunEventBuilder.class, new DefaultLogFormatter(), Level.INFO); + private static final Logger LOGGER = LogUtil.create(LCSimEngRunEventBuilder.class, new DefaultLogFormatter(), + Level.INFO); private EpicsData epicsData; private final EpicsEvioProcessor epicsProcessor = new EpicsEvioProcessor(); + + private ScalerData scalerData; private final ScalersEvioProcessor scalerProcessor = new ScalersEvioProcessor(); @@ -62,7 +70,7 @@ * * @param evioEvent The EVIO event data. */ - void createEpicsData(final EvioEvent evioEvent) { + private void createEpicsData(final EvioEvent evioEvent) { epicsProcessor.process(evioEvent); epicsData = epicsProcessor.getEpicsData(); } @@ -99,25 +107,27 @@ try { ecalReader.makeHits(evioEvent, lcsimEvent); } catch (final Exception e) { - LOGGER.log(Level.SEVERE, "Error making ECal hits", e); + LOGGER.log(Level.SEVERE, "Error making ECal hits.", e); } // Make SVT RawTrackerHits. try { svtReader.makeHits(evioEvent, lcsimEvent); } catch (final Exception e) { - LOGGER.log(Level.SEVERE, "Error making SVT hits", e); + LOGGER.log(Level.SEVERE, "Error making SVT hits.", e); } // Write the current EPICS data into this event. - if (epicsData != null) { - LOGGER.finest("writing EPICS data to lcsim event " + lcsimEvent.getEventNumber()); - epicsData.write(lcsimEvent); - epicsData = null; + this.writeEpicsData(lcsimEvent); + + // Write scalers into the event, if they exist in the EVIO data. + this.writeScalerData(evioEvent, lcsimEvent); + + // Write scaler parameters into every event header. + if (EventTagBitMask.SYNC.isEventTag(evioEvent)) { + LOGGER.fine("event " + evioEvent.getEventNumber() + " is a sync event"); } - - // Write scalers into the event, if they exist in this EVIO data. - this.writeScalerData(evioEvent, lcsimEvent); + this.writeScalerParameters(lcsimEvent); return lcsimEvent; } @@ -128,8 +138,21 @@ // Create EPICS data if this is an EPICS control event. if (EvioEventUtilities.isEpicsEvent(evioEvent)) { - LOGGER.finest("creating data from EPICS event"); + LOGGER.fine("creating data from EPICS event"); this.createEpicsData(evioEvent); + } + } + + /** + * Write {@link org.hps.record.epics.EpicsData} into the event. + * + * @param lcsimEvent the lcsim event + */ + private void writeEpicsData(final EventHeader lcsimEvent) { + if (epicsProcessor.getEpicsData() != null) { + LOGGER.fine("writing EPICS data to lcsim event " + lcsimEvent.getEventNumber()); + epicsProcessor.getEpicsData().write(lcsimEvent); + epicsProcessor.reset(); } } @@ -139,11 +162,37 @@ * @param evioEvent The EVIO event data. * @param lcsimEvent The output LCSim event. */ - void writeScalerData(final EvioEvent evioEvent, final EventHeader lcsimEvent) { + private void writeScalerData(final EvioEvent evioEvent, final EventHeader lcsimEvent) { + + // Find scaler data in EVIO. scalerProcessor.process(evioEvent); + if (scalerProcessor.getScalerData() != null) { - LOGGER.finest("writing scaler data to lcsim event " + lcsimEvent.getEventNumber() + " from EVIO event " + evioEvent.getEventNumber()); + + LOGGER.fine("writing scaler data to lcsim event " + lcsimEvent.getEventNumber() + " from EVIO event " + + evioEvent.getEventNumber()); + + // Write the current scalar data to the event. scalerProcessor.getScalerData().write(lcsimEvent); + + // Save the current scaler data for writing to lcsim event header. + scalerData = scalerProcessor.getScalerData(); } } + + /** + * Write {@link org.hps.record.scalers.ScalerParameters} into the event. + * + * @param lcsimEvent the lcsim event + */ + private void writeScalerParameters(final EventHeader lcsimEvent) { + final ScalerParameters scalerParameters = new ScalerParameters(); + if (epicsData != null) { + scalerParameters.readEpicsData(epicsData); + } + if (scalerData != null) { + scalerParameters.readScalerData(scalerData); + } + scalerParameters.write(lcsimEvent); + } }