Commit in hps-java/src on MAIN | |||
main/java/org/lcsim/hps/evio/EvioConsumer.java | +31 | -28 | 1.1 -> 1.2 |
/EvioFileProducer.java | +23 | -36 | 1.3 -> 1.4 |
test/java/org/lcsim/hps/evio/RawTrackerHitToEvio4Converter.java | +4 | -5 | 1.5 -> 1.6 |
+58 | -69 |
checking in working copies of test ET code; can actually read events off ET ring now
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) {
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();
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); } }
Use REPLY-ALL to reply to list
To unsubscribe from the LCD-CVS list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=LCD-CVS&A=1