hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.1 -r1.2
--- EvioConsumer.java 9 Mar 2012 23:34:21 -0000 1.1
+++ EvioConsumer.java 12 Mar 2012 17:47:13 -0000 1.2
@@ -1,6 +1,12 @@
package org.lcsim.hps.evio;
+import hep.aida.IAnalysisFactory;
+import hep.aida.ICloud1D;
+import hep.aida.IPlotter;
+
import java.nio.ByteBuffer;
+import java.util.ArrayList;
+import java.util.List;
import org.jlab.coda.et.EtAttachment;
import org.jlab.coda.et.EtConstants;
@@ -11,8 +17,11 @@
import org.jlab.coda.et.EtSystemOpenConfig;
import org.jlab.coda.et.enums.Mode;
import org.jlab.coda.jevio.CompositeData;
-import org.jlab.coda.jevio.DataType;
import org.jlab.coda.jevio.EvioEvent;
+import org.jlab.coda.jevio.EvioReader;
+import org.lcsim.event.RawTrackerHit;
+import org.lcsim.event.base.BaseRawTrackerHit;
+import org.lcsim.util.aida.AIDA;
/**
* This class is an example of an event consumer for an ET system.
@@ -190,17 +199,20 @@
EtEvent[] mevs;
// Test plots.
- /*
AIDA aida = AIDA.defaultInstance();
- ICloud1D idsPlot = aida.cloud1D("Cell IDs");
- ICloud1D timePlot = aida.cloud1D("Time");
+ //ICloud1D idsPlot = aida.cloud1D("Cell IDs");
+ //ICloud1D timePlot = aida.cloud1D("Time");
ICloud1D adcValuePlot = aida.cloud1D("ADC Value");
- */
+
+ IAnalysisFactory fac = aida.analysisFactory();
+ IPlotter plotter = fac.createPlotterFactory().create("Plot");
+ plotter.createRegion();
+ plotter.region(0).plot(adcValuePlot);
+ plotter.show();
// Number of events to read off ET Ring before exiting.
// TODO Make this a CL parameter.
- //int ntoread = 10000;
- int ntoread = 8879;
+ int ntoread = 1000;
// Number of events read so far.
int nread = 0;
@@ -221,22 +233,12 @@
System.out.println("data needs swapping");
}
- // Get event's data buffer
- // buf.limit() = length of the actual data (not buffer capacity)
- ByteBuffer buf = mev.getDataBuffer();
+ // Get CompositeData using event buffer.
+ ByteBuffer buf = mev.getDataBuffer();
+ EvioReader reader = new EvioReader(buf);
+ EvioEvent evioEvent = reader.parseNextEvent();
+ CompositeData cdata = evioEvent.getCompositeData();
- System.out.println("mev.len="+mev.getLength());
-
- // Make composite data from raw bytes in event.
- System.out.println("making new EvioEvent");
- EvioEvent ev = new EvioEvent(0, DataType.COMPOSITE, 0);
- System.out.println("setting raw bytes");
- ev.setRawBytes(buf.array());
- System.out.println("getting CompositeData");
- CompositeData cdata = ev.getCompositeData();
- System.out.println("OK");
-
- /*
// Make RawTrackerHits from composite data.
List<RawTrackerHit> hits = new ArrayList<RawTrackerHit>();
List<Object> items = cdata.getItems();
@@ -245,7 +247,7 @@
Long id = (Long)items.get(i);
int time = (Integer)items.get(i+1);
int adcValue = (Integer)items.get(i+2);
- System.out.println("EvioConsumer --> id=0x"+Long.toHexString(id)+"; time="+time+"; adcValue="+adcValue);
+ //System.out.println("EvioConsumer --> id=0x"+Long.toHexString(id)+"; time="+time+"; adcValue="+adcValue);
RawTrackerHit hit = new BaseRawTrackerHit(id, time, new short[] {(short)adcValue});
hits.add(hit);
}
@@ -253,19 +255,20 @@
// Make some test plots from tracker data.
for (RawTrackerHit hit : hits) {
- idsPlot.fill(hit.getCellID());
- timePlot.fill(hit.getTime());
+ //idsPlot.fill(hit.getCellID());
+ //timePlot.fill(hit.getTime());
adcValuePlot.fill(hit.getADCValues()[0]);
- }
- */
+ }
}
// put events back into ET system
sys.putEvents(att, mevs);
// Break out of read loop if max events events equaled or exceeded.
- if (nread >= ntoread)
+ if (nread >= ntoread) {
+ System.out.println("breaking after " + ntoread + " events");
break;
+ }
}
}
catch (Exception ex) {
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.3 -r1.4
--- EvioFileProducer.java 9 Mar 2012 23:33:51 -0000 1.3
+++ EvioFileProducer.java 12 Mar 2012 17:47:13 -0000 1.4
@@ -9,6 +9,7 @@
import org.jlab.coda.et.EtSystem;
import org.jlab.coda.et.EtSystemOpenConfig;
import org.jlab.coda.et.enums.Mode;
+import org.jlab.coda.jevio.EventWriter;
import org.jlab.coda.jevio.EvioEvent;
import org.jlab.coda.jevio.EvioException;
import org.jlab.coda.jevio.EvioReader;
@@ -27,25 +28,6 @@
EvioFileProducer()
{}
-
- private EvioEvent nextEvent() {
- try {
- return reader.parseNextEvent();
- } catch (EvioException x) {
- throw new RuntimeException(x);
- }
- }
-
- // Get the next byte buffer and also set the class variable byteBuffer to the same.
- private ByteBuffer nextByteBuffer() {
- EvioEvent nextEvent = nextEvent();
- System.out.println("read next event: tag="+nextEvent.getHeader().getTag() + "; num="+nextEvent.getHeader().getNumber()+"; len="+nextEvent.getHeader().getLength());
- if (nextEvent == null)
- return null;
- byteBuffer = ByteBuffer.allocate(nextEvent.getTotalBytes());
- byteBuffer.put(nextEvent.getRawBytes());
- return byteBuffer;
- }
private static void usage() {
System.out.println("\nUsage: java Producer -f <et name> -e <evio file> [-p <server port>] [-host <host>]" +
@@ -149,21 +131,15 @@
// array of events
EtEvent[] mevs;
-
- // Buffer for writing
- ByteBuffer buf;
-
+
// Open EVIO reader.
reader = new EvioReader(evioFileName);
-
+
// Loop until event source is exhausted.
- int eventCount = 0;
+ //int eventCount = 0;
+ EvioEvent event = reader.parseNextEvent();
while (true) {
- buf = nextByteBuffer();
- if (buf == null) { // Break if no more events.
- System.out.println("end of events");
- break;
- }
+
mevs = sys.newEvents(
att, // attachment
Mode.SLEEP, // wait mode
@@ -172,13 +148,24 @@
1, // number of events
size, // size of event but overwritten later
group); // group number; default value is arbitrary
- mevs[0].setLength(buf.position()); // Set actual length from buffer position.
- mevs[0].getDataBuffer().put(byteBuffer); // Set raw bytes of EtEvent.
- sys.putEvents(att, mevs); // Put events back into ET system.
- System.out.println("put event of size " + mevs[0].getLength());
- ++eventCount;
+
+ // Write EVIO event to EtEvent's buffer.
+ ByteBuffer buf = mevs[0].getDataBuffer();
+ EventWriter writer = new EventWriter(buf, 100000, 100, null, null);
+ writer.writeEvent(event);
+ writer.close();
+ mevs[0].setLength(buf.position());
+
+ // Put events onto ET ring.
+ sys.putEvents(att, mevs);
+
+ // Break if no more events.
+ if (reader.getNumEventsRemaining() == 0)
+ break;
+
+ // Get next event.
+ event = reader.parseNextEvent();
}
- System.out.println("put " + eventCount + " events onto ET server");
// Cleanup.
sys.close();
hps-java/src/test/java/org/lcsim/hps/evio
diff -u -r1.5 -r1.6
--- RawTrackerHitToEvio4Converter.java 9 Mar 2012 23:33:51 -0000 1.5
+++ RawTrackerHitToEvio4Converter.java 12 Mar 2012 17:47:13 -0000 1.6
@@ -24,7 +24,7 @@
* and compares the two to make sure they match.
*
* @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: RawTrackerHitToEvio4Converter.java,v 1.5 2012/03/09 23:33:51 jeremy Exp $
+ * @version $Id: RawTrackerHitToEvio4Converter.java,v 1.6 2012/03/12 17:47:13 jeremy Exp $
*/
public class RawTrackerHitToEvio4Converter extends Driver {
@@ -121,15 +121,14 @@
CompositeTester.printCompositeDataObject(cdata);
EvioEvent ev = new EvioEvent(0, DataType.COMPOSITE, 0);
BaseStructureHeader header = ev.getHeader();
- header.setTag(0xF); // composite flag (right???)
+ header.setTag(0xF); // Needed???
header.setNumber(1);
- header.setDataType(DataType.COMPOSITE); // redundant???
+ header.setDataType(DataType.COMPOSITE);
try {
ev.appendCompositeData(cdata);
ev.setAllHeaderLengths();
writer.writeEvent(ev);
- }
- catch (Exception e) {
+ } catch (Exception e) {
throw new RuntimeException(e);
}
}