Author: [log in to unmask]
Date: Mon Aug 31 12:16:12 2015
New Revision: 3467
Log:
Corrections to EVIO file meta data reader.
Modified:
java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaData.java
java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaDataReader.java
Modified: java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaData.java
=============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaData.java (original)
+++ java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaData.java Mon Aug 31 12:16:12 2015
@@ -2,6 +2,8 @@
import java.io.File;
import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
/**
* Meta data that can be extracted from EVIO files.
@@ -312,4 +314,28 @@
+ this.hasEnd + ", run: " + this.run + ", fileNumber: " + sequence + ", startEvent: "
+ this.startEvent + ", endEvent: " + endEvent + " }";
}
+
+ /**
+ * Convert data to a map with names and values (int, float or string).
+ *
+ * @return the metadata converted to a map
+ */
+ public Map<String, Object> toMap() {
+ Map<String, Object> metadataMap = new HashMap<String, Object>();
+ metadataMap.put("badEventCount", badEventCount);
+ metadataMap.put("size", byteCount);
+ metadataMap.put("endDate", endDate.getTime());
+ metadataMap.put("endEvent", endEvent);
+ metadataMap.put("endDate", endDate.getTime());
+ metadataMap.put("endEvent", endEvent);
+ metadataMap.put("eventCount", eventCount);
+ metadataMap.put("evioFile", evioFile.getPath());
+ metadataMap.put("hasEnd", hasEnd ? 1 : 0);
+ metadataMap.put("hasPrestart", hasPrestart ? 1 : 0);
+ metadataMap.put("run", run);
+ metadataMap.put("fileNumber", sequence);
+ metadataMap.put("startDate", startDate.getTime());
+ metadataMap.put("startEvent", startEvent);
+ return metadataMap;
+ }
}
Modified: java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaDataReader.java
=============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaDataReader.java (original)
+++ java/trunk/record-util/src/main/java/org/hps/record/evio/EvioFileMetaDataReader.java Mon Aug 31 12:16:12 2015
@@ -6,7 +6,6 @@
import java.util.logging.Level;
import java.util.logging.Logger;
-import org.jlab.coda.jevio.BaseStructure;
import org.jlab.coda.jevio.EvioEvent;
import org.jlab.coda.jevio.EvioException;
import org.jlab.coda.jevio.EvioReader;
@@ -25,6 +24,9 @@
*/
private static Logger LOGGER = LogUtil.create(EvioFileMetaDataReader.class, new DefaultLogFormatter(), Level.ALL);
+ /**
+ * Convert from seconds to millis.
+ */
final static int MILLIS = 1000;
/**
@@ -47,11 +49,11 @@
int byteCount = 0;
boolean hasPrestart = false;
boolean hasEnd = false;
- int[] headBankData = null;
int[] eventIdData = null;
Integer run = null;
Integer endEvent = null;
Integer startEvent = null;
+ Long lastTimestamp = null;
int nPhysicsEventsProcessed = 0;
@@ -66,6 +68,7 @@
try {
evioEvent = evioReader.parseNextEvent();
if (evioEvent == null) {
+ LOGGER.info("done reading events");
break;
}
} catch (final Exception e) {
@@ -86,7 +89,7 @@
LOGGER.info("set run to " + run);
}
} else if (EventTagConstant.END.equals(evioEvent)) {
- LOGGER.info("found END");
+ LOGGER.info("found END event");
hasEnd = true;
final int[] controlEventData = EvioEventUtilities.getControlEventData(evioEvent);
final long timestamp = controlEventData[0] * 1000L;
@@ -97,12 +100,12 @@
LOGGER.info("set run to " + run);
}
} else if (EvioEventUtilities.isPhysicsEvent(evioEvent)) {
- // LOGGER.info("physics event " + evioEvent.getEventNumber());
- final BaseStructure headBank = EvioEventUtilities.getHeadBank(evioEvent);
- headBankData = headBank.getIntData();
+ final int[] headBankData = EvioEventUtilities.getHeadBankData(evioEvent);
if (startDate == null) {
- startDate = new Date(headBankData[3] * 1000);
- LOGGER.info("set start date to " + endDate + " from physics event");
+ if (headBankData[3] != 0) {
+ startDate = new Date(headBankData[3] * 1000L);
+ LOGGER.info("set start date to " + startDate + " from physics event");
+ }
}
if (run == null) {
run = headBankData[1];
@@ -113,6 +116,9 @@
startEvent = eventIdData[0];
LOGGER.info("set start event " + startEvent);
}
+ if (headBankData[3] != 0) {
+ lastTimestamp = headBankData[3] * 1000L;
+ }
++nPhysicsEventsProcessed;
}
LOGGER.getHandlers()[0].flush();
@@ -121,10 +127,8 @@
LOGGER.info("processed " + nPhysicsEventsProcessed + " in " + evioFile.getPath());
if (endDate == null) {
- if (headBankData != null) {
- endDate = new Date(headBankData[3] * 1000);
- LOGGER.info("set end date to " + endDate + " from last head bank");
- }
+ endDate = new Date(lastTimestamp);
+ LOGGER.info("set end date to " + endDate + " from last timestamp " + lastTimestamp);
}
if (eventIdData != null) {
endEvent = eventIdData[0];
@@ -133,7 +137,7 @@
} catch (EvioException | IOException e) {
throw new RuntimeException(e);
}
-
+
metaData.setStartDate(startDate);
metaData.setEndDate(endDate);
metaData.setBadEventCount(badEventCount);
@@ -143,12 +147,8 @@
metaData.setHasEnd(hasEnd);
metaData.setRun(run);
metaData.setSequence(fileNumber);
- if (endEvent != null) {
- metaData.setEndEvent(endEvent);
- }
- if (startEvent != null) {
- metaData.setStartEvent(startEvent);
- }
+ metaData.setEndEvent(endEvent);
+ metaData.setStartEvent(startEvent);
return metaData;
}
|