Author: [log in to unmask]
Date: Wed Jul 29 18:24:23 2015
New Revision: 3307
Log:
Cleanup how EPICs and scaler data are written into the 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 18:24:23 2015
@@ -12,7 +12,6 @@
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;
@@ -31,25 +30,42 @@
* 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]>
+ * @author Sho Uemura, SLAC
+ * @author Jeremy McCormick, SLAC
*/
public class LCSimEngRunEventBuilder extends LCSimTestRunEventBuilder {
+ /**
+ * Setup logger.
+ */
private static final Logger LOGGER = LogUtil.create(LCSimEngRunEventBuilder.class, new DefaultLogFormatter(),
Level.INFO);
- private EpicsData epicsData;
-
+ /**
+ * EVIO processor for extracting EPICS data.
+ */
private final EpicsEvioProcessor epicsProcessor = new EpicsEvioProcessor();
-
- private ScalerData scalerData;
-
+
+ /**
+ * Scaler parameters for lcsim event parameters.
+ */
+ private ScalerParameters scalerParameters = new ScalerParameters();
+
+ /**
+ * EVIO processor for extracting scaler data.
+ */
private final ScalersEvioProcessor scalerProcessor = new ScalersEvioProcessor();
+ /**
+ * Reads trigger config.
+ */
private TriggerConfigEvioReader triggerConfigReader = null;
+ /**
+ * Class constructor.
+ */
public LCSimEngRunEventBuilder() {
+ // FIXME: Is this the best place for doing all this stuff???
ecalReader.setTopBankTag(0x25);
ecalReader.setBotBankTag(0x27);
ecalReader.setRfBankTag(0x2e);
@@ -66,15 +82,10 @@
}
/**
- * Create and cache an {@link org.hps.record.epics.EpicsData} object.
- *
- * @param evioEvent The EVIO event data.
- */
- private void createEpicsData(final EvioEvent evioEvent) {
- epicsProcessor.process(evioEvent);
- epicsData = epicsProcessor.getEpicsData();
- }
-
+ * Get the time from the TI data.
+ *
+ * @param triggerList the TI data list
+ */
@Override
protected long getTime(final List<AbstractIntData> triggerList) {
for (final AbstractIntData data : triggerList) {
@@ -86,6 +97,11 @@
return 0;
}
+ /**
+ * Make an lcsim event from EVIO data.
+ *
+ * @param evioEvent the input EVIO event
+ */
@Override
public EventHeader makeLCSimEvent(final EvioEvent evioEvent) {
@@ -123,15 +139,17 @@
// 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");
- }
- this.writeScalerParameters(lcsimEvent);
+ // Write out current ScalerParameters to event header.
+ this.scalerParameters.write(lcsimEvent);
return lcsimEvent;
}
+ /**
+ * Pre-read an EVIO event.
+ *
+ * @param evioEvent the EVIO event
+ */
@Override
public void readEvioEvent(final EvioEvent evioEvent) {
super.readEvioEvent(evioEvent);
@@ -139,7 +157,7 @@
// Create EPICS data if this is an EPICS control event.
if (EvioEventUtilities.isEpicsEvent(evioEvent)) {
LOGGER.fine("creating data from EPICS event");
- this.createEpicsData(evioEvent);
+ epicsProcessor.process(evioEvent);
}
}
@@ -149,9 +167,21 @@
* @param lcsimEvent the lcsim event
*/
private void writeEpicsData(final EventHeader lcsimEvent) {
- if (epicsProcessor.getEpicsData() != null) {
+
+ // Get EpicsData from processor that was already activated (usually it is null).
+ EpicsData epicsData = epicsProcessor.getEpicsData();
+
+ // Was new EpicsData created?
+ if (epicsData != null) {
LOGGER.fine("writing EPICS data to lcsim event " + lcsimEvent.getEventNumber());
- epicsProcessor.getEpicsData().write(lcsimEvent);
+
+ // Write to the collection in the lcsim event.
+ epicsData.write(lcsimEvent);
+
+ // Update the ScalerParameters.
+ scalerParameters.readEpicsData(epicsData);
+
+ // Reset the processor.
epicsProcessor.reset();
}
}
@@ -164,10 +194,14 @@
*/
private void writeScalerData(final EvioEvent evioEvent, final EventHeader lcsimEvent) {
- // Find scaler data in EVIO.
+ // Activate the EVIO scalers processor.
scalerProcessor.process(evioEvent);
- if (scalerProcessor.getScalerData() != null) {
+ // Get ScalerData from the processor.
+ ScalerData scalerData = scalerProcessor.getScalerData();
+
+ // Was new ScalerData created?
+ if (scalerData != null) {
LOGGER.fine("writing scaler data to lcsim event " + lcsimEvent.getEventNumber() + " from EVIO event "
+ evioEvent.getEventNumber());
@@ -175,24 +209,8 @@
// 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) {
+ // Update current ScalerParameters.
scalerParameters.readScalerData(scalerData);
}
- scalerParameters.write(lcsimEvent);
- }
+ }
}
|