Commit in hps-java/src/main/java/org/lcsim/hps/evio on MAIN | |||
EvioConsumer.java | +54 | -43 | 1.5 -> 1.6 |
current working copy of EVIO consumer example
diff -u -r1.5 -r1.6 --- EvioConsumer.java 16 Mar 2012 19:10:47 -0000 1.5 +++ EvioConsumer.java 16 Mar 2012 21:34:18 -0000 1.6 @@ -85,9 +85,8 @@
}
+ private static final boolean debug = false;
public static void main(String[] args) {
- - boolean debug = true;
int position = 1, pposition = 0, qSize = 0, chunk = 1; boolean blocking = true, verbose = false; String etName = null, host = null, statName = null;
@@ -227,10 +226,33 @@
// array of events EtEvent[] mevs = null;
+ + // Job manager to run LCSim. + JobControlManager jobMgr = new JobControlManager(); + jobMgr.checkInputFiles(false); + InputStream is = (new EvioConsumer()).getClass().getResourceAsStream(lcsimXml); + jobMgr.setup(is); + + // Get list of Drivers. + List<Driver> drivers = jobMgr.getDriverExecList(); + + // Wrap Drivers with DriverAdapter. + Driver topDriver = new Driver(); + for (Driver driver : drivers) { + topDriver.add(driver); + } + DriverAdapter driverAdapter = new DriverAdapter(topDriver); + + // Call wrapper to startOfData() on DriverAdapter. + driverAdapter.configure(null); + + // Create a dummy event in order to get Detector conditions. + BaseLCSimEvent dummyEvent = new BaseLCSimEvent(0, 0, detectorName); + Detector detector = dummyEvent.getDetector();
// Data plots. AIDA aida = AIDA.defaultInstance();
- //ICloud1D timePlot = aida.cloud1D("Time");
+ //
aida.tree().cd("/"); IHistogram1D adcValuePlot = aida.histogram1D("ADC Value", 500, 0, 1000); ICloud1D eventRatePlot = aida.cloud1D("Event Rate [Hz]");
@@ -242,6 +264,8 @@
IHistogram1D tkrMomYPlot = aida.histogram1D("Track Py", 160, -0.2, 0.2); IHistogram1D tkrMomZPlot = aida.histogram1D("Track Pz", 160, -0.2, 0.2); IHistogram1D tkrMomPlot = aida.histogram1D("Track P", 200, 0, 10.0);
+ ICloud1D timePlot = aida.cloud1D("Time [ns]"); + ICloud1D badEventPlot = aida.cloud1D("Bad Event Count");
IAnalysisFactory fac = aida.analysisFactory(); IPlotter plotter = fac.createPlotterFactory().create("HPS SVT Plots");
@@ -257,30 +281,10 @@
plotter.region(7).plot(tkrMomYPlot); plotter.region(8).plot(tkrMomZPlot); plotter.region(9).plot(tkrMomPlot);
- plotter.show(); - - // Job manager to run LCSim. - JobControlManager jobMgr = new JobControlManager(); - jobMgr.checkInputFiles(false); - InputStream is = (new EvioConsumer()).getClass().getResourceAsStream(lcsimXml); - jobMgr.setup(is); - - // Get list of Drivers. - List<Driver> drivers = jobMgr.getDriverExecList();
+ plotter.region(10).plot(timePlot); + plotter.region(11).plot(badEventPlot);
- // Wrap Drivers with DriverAdapter. - Driver topDriver = new Driver(); - for (Driver driver : drivers) { - topDriver.add(driver); - } - DriverAdapter driverAdapter = new DriverAdapter(topDriver); - - // Call wrapper to startOfData() on DriverAdapter. - driverAdapter.configure(null); - - // Create a dummy event in order to get Detector conditions. - BaseLCSimEvent dummyEvent = new BaseLCSimEvent(0, 0, detectorName); - Detector detector = dummyEvent.getDetector();
+ plotter.show();
// Make a list of sensors in the SVT. List<SiSensor> sensors = detector.getSubdetector("Tracker").getDetectorElement().findDescendants(SiSensor.class);
@@ -289,7 +293,6 @@
IPlotter plotter2 = fac.createPlotterFactory().create("HPS SVT Sensor Occupancy Plots"); IPlotterStyle style = plotter2.style(); style.dataStyle().fillStyle().setColor("yellow");
- //style.dataStyle().lineStyle().setColor("yellow");
style.dataStyle().errorBarStyle().setVisible(false); plotter2.createRegions(5, 4); int ns = sensors.size();
@@ -320,7 +323,8 @@
plotter3.show(); // Number of current event from 0.
- int eventCount = 0;
+ int eventCount = 0; + long jobStartTime = System.currentTimeMillis();
while (true) { long startTime = System.nanoTime();
@@ -331,32 +335,32 @@
try { mevs = sys.getEvents(att, Mode.TIMED, Modify.NOTHING, 5000000, chunk); } catch (EtTimeoutException e) {
- System.out.println("Timed out!!!");
timedOut = true; }
- // Exit point here.
+ // When timeout occurs, do cleanup and exit.
if (timedOut) {
- // Driver cleanup. - // FIXME This requires that Driver.endOfData() be made public. - //for (Driver driver : drivers) { - // driver.endOfData(); - //}
+ long jobEndTime = System.currentTimeMillis(); + long jobTime = jobEndTime - jobStartTime; + System.out.println("Job time: " + jobTime / 1000 + " seconds"); + + long avgEventTime = jobTime / (eventCount + 1); + System.out.println("Avg event processing time: " + avgEventTime + " ms");
// Call wrapper to endOfData() on DriverAdapter. driverAdapter.finish(null); // Save AIDA plots.
- AIDA.defaultInstance().saveAs("EtTestPlots.aida"); -
+ AIDA.defaultInstance().saveAs("EtTestPlots.aida"); +
// Exit after user pressed enter. System.out.println("Press ENTER to exit ..."); System.console().readLine(); System.exit(0); }
- //if (debug) - // System.out.println("EvioConsumer read event #" + eventCount);
+ if (debug) + System.out.println("EvioConsumer read event #" + eventCount);
if (mevs.length > 1) { throw new RuntimeException("Did not expect to get more than one EtEvent!");
@@ -365,7 +369,7 @@
// This is the EtEvent corresponding to a single MC event with tracker data. EtEvent mev = mevs[0];
- // Get EvioEvent and make CompositeData from the EtEvent's data buffer.
+ // Get EvioEvent and check for errors.
ByteBuffer buf = mev.getDataBuffer(); EvioReader reader = new EvioReader(buf); EvioEvent evioEvent = null;
@@ -377,8 +381,11 @@
// Something bad happened and event was not built. Just skip it. if (evioEvent == null) { System.out.println("Failed to build EVIO event. Skipping this EtEvent!");
+ badEventPlot.fill(0);
continue; }
+ + // Make CompositeData from data buffer.
CompositeData cdata = evioEvent.getCompositeData(); // Make LCSim RawTrackerHits from CompositeData.
@@ -397,11 +404,15 @@
// Fill RawTrackerHit count. rawHitCountPlot.fill(hits.size());
+ // Loop over RawTrackerHit collection.
for (RawTrackerHit hit : hits) { // Fill ADC value plot. adcValuePlot.fill(hit.getADCValues()[0]);
+ // Fill time plot. + timePlot.fill(hit.getTime()); +
// Fill basic (non-normalized) occupancy plot. aida.histogram1D(hit.getDetectorElement().getName()).fill(hit.getIdentifierFieldValue("strip"));
@@ -446,7 +457,7 @@
tkrHitCountPlot.fill(trackerHits.size()); // put events back into ET system
- // TODO Is this even necessary when running in read-only mode???
+ // FIXME Is this even necessary when running in read-only mode?
sys.putEvents(att, mevs); // Compute event processing time.
@@ -464,8 +475,8 @@
// Increment event count. ++eventCount;
- //if (debug) - // System.out.println("----------------------");
+ if (debug) + System.out.println("----------------------");
} } catch (Exception ex) {
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