Commit in hps-java/src/main/java/org/lcsim/hps/evio on MAIN | |||
DummyEventBuilder.java | +8 | -1 | 1.2 -> 1.3 |
TestRunEvioToLcio.java | +17 | -17 | 1.20 -> 1.21 |
LCSimTestRunEventBuilder.java | +52 | -27 | 1.20 -> 1.21 |
LCSimEventBuilder.java | +19 | -5 | 1.4 -> 1.5 |
EventConstants.java | +12 | 1.15 -> 1.16 | |
+108 | -50 |
set run number and timestamp for LCSim events
diff -u -r1.2 -r1.3 --- DummyEventBuilder.java 26 Apr 2012 21:16:50 -0000 1.2 +++ DummyEventBuilder.java 1 Sep 2012 00:15:15 -0000 1.3 @@ -11,7 +11,7 @@
/** * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: DummyEventBuilder.java,v 1.2 2012/04/26 21:16:50 meeg Exp $
+ * @version $Id: DummyEventBuilder.java,v 1.3 2012/09/01 00:15:15 meeg Exp $
*/ public class DummyEventBuilder implements LCSimEventBuilder {
@@ -29,16 +29,23 @@
cond.registerConditionsConverter(new DummyConditionsConverter(detector)); }
+ @Override
public EventHeader makeLCSimEvent(EvioEvent evioEvent) { return new BaseLCSimEvent(0, evioEvent.getHeader().getNumber(), dummyName); }
+ @Override
public void setDetectorName(String detectorName) {}
+ @Override
public void setDebug(boolean debug) {} @Override public boolean isPhysicsEvent(EvioEvent evioEvent) { return true; }
+ + @Override + public void readEvioEvent(EvioEvent evioEvent) { + }
}
\ No newline at end of file
diff -u -r1.20 -r1.21 --- TestRunEvioToLcio.java 24 Aug 2012 22:37:19 -0000 1.20 +++ TestRunEvioToLcio.java 1 Sep 2012 00:15:15 -0000 1.21 @@ -4,6 +4,8 @@
import java.util.Date; import java.util.List;
+import java.util.logging.Level; +import java.util.logging.Logger;
import org.apache.commons.cli.CommandLine; import org.apache.commons.cli.CommandLineParser; import org.apache.commons.cli.HelpFormatter;
@@ -184,7 +186,7 @@
} boolean firstEvent = true;
- int time = 0;
+ long time = 0; //in ms
// Loop over EVIO events, build LCSim events, process them, and then // write events to disk.
@@ -201,38 +203,37 @@
try { reader.parseEvent(evioEvent); } catch (Exception e) {
- e.printStackTrace();
+ Logger.getLogger(TestRunEvioToLcio.class.getName()).log(Level.SEVERE, null, e);
continue eventLoop; } }
+ //let event builder check for run information + eventBuilder.readEvioEvent(evioEvent);
// Handlers for different event types. if (EventConstants.isPreStartEvent(evioEvent)) { int[] data = evioEvent.getIntData(); int seconds = data[0]; int runNumber = data[1];
- System.out.println("Prestart event time: " + seconds + " - " + new Date(((long) seconds) * 1000));
calibListener.prestart(seconds, runNumber); } else if (EventConstants.isEndEvent(evioEvent)) { int[] data = evioEvent.getIntData(); int seconds = data[0]; int nevents = data[2];
- System.out.println("End event time: " + seconds + " - " + new Date(((long) seconds) * 1000));
calibListener.endRun(seconds, nevents); } else if (eventBuilder.isPhysicsEvent(evioEvent)) { EventHeader lcioEvent = eventBuilder.makeLCSimEvent(evioEvent); if (runControl == null || runControl.process(lcioEvent)) {
+ time = (lcioEvent.getTimeStamp() / 1000000); + + if (firstEvent) { + System.out.println("First physics event time: " + time / 1000 + " - " + new Date(time)); + firstEvent = false; + }
// if (lcioEvent.hasCollection(BaseRawCalorimeterHit.class, "EcalReadoutHits") && !lcioEvent.get(BaseRawCalorimeterHit.class, "EcalReadoutHits").isEmpty()) { // continue; // }
- if (lcioEvent.hasCollection(TriggerData.class, "TriggerBank")) { - List<TriggerData> triggerList = lcioEvent.get(TriggerData.class, "TriggerBank"); - if (!triggerList.isEmpty()) { - time = triggerList.get(0).getTime(); - if (firstEvent) { - System.out.println("First physics event time: " + time + " - " + new Date(((long) time) * 1000)); - firstEvent = false; - } - }
+// if (lcioEvent.hasCollection(TriggerData.class, "TriggerBank")) { +// List<TriggerData> triggerList = lcioEvent.get(TriggerData.class, "TriggerBank");
// if (!triggerList.isEmpty()) { // TriggerData triggerData = triggerList.get(0); //
@@ -246,7 +247,7 @@
// continue; // } // }
- }
+// }
jobManager.processEvent(lcioEvent); if (writer != null) { writer.write(lcioEvent);
@@ -256,7 +257,7 @@
} } catch (Exception e) { // Catch all event processing errors and continue.
- e.printStackTrace();
+ Logger.getLogger(TestRunEvioToLcio.class.getName()).log(Level.SEVERE, null, e);
continue; } finally { if (sleepTime > 0) {
@@ -266,11 +267,10 @@
throw new RuntimeException(e); } }
-
} nEvents++; }
- System.out.println("Last physics event time: " + time + " - " + new Date(((long) time) * 1000));
+ System.out.println("Last physics event time: " + time / 1000 + " - " + new Date(time));
reader.close(); } System.out.println("No more data");
diff -u -r1.20 -r1.21 --- LCSimTestRunEventBuilder.java 14 Aug 2012 00:58:03 -0000 1.20 +++ LCSimTestRunEventBuilder.java 1 Sep 2012 00:15:15 -0000 1.21 @@ -1,14 +1,16 @@
package org.lcsim.hps.evio; import java.util.ArrayList;
+import java.util.Date;
import java.util.List;
+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.lcsim.event.EventHeader; import org.lcsim.event.base.BaseLCSimEvent; import org.lcsim.geometry.Detector;
-//import org.lcsim.geometry.subdetector.HPSTracker;
import org.lcsim.util.loop.LCSimConditionsManagerImplementation; /**
@@ -16,8 +18,7 @@
* * @author Sho Uemura <[log in to unmask]> * @author Jeremy McCormick <[log in to unmask]>
- * @version $Id: LCSimTestRunEventBuilder.java,v 1.12 2012/04/25 05:02:21 - * omoreno Exp $
+ * @version $Id: LCSimTestRunEventBuilder.java,v 1.21 2012/09/01 00:15:15 meeg Exp $
*/ public class LCSimTestRunEventBuilder implements LCSimEventBuilder {
@@ -29,6 +30,8 @@
private boolean debug = false; ECalEvioReader ecalReader = null; SVTEvioReader_RTH svtReader = null;
+ private int run = 0; //current run number, taken from prestart and end events + private long time = 0; //most recent event time (ns), taken from prestart and end events, and trigger banks (if any)
public LCSimTestRunEventBuilder() { LCSimConditionsManagerImplementation.register();
@@ -37,12 +40,14 @@
svtReader = new SVTEvioReader_RTH(); }
+ @Override
public void setDetectorName(String detectorName) { // Make a dummy event to setup the conditions system. EventHeader dummyEvent = new BaseLCSimEvent(0, 0, detectorName); detector = dummyEvent.getDetector(); }
+ @Override
public void setDebug(boolean debug) { this.debug = debug; ecalReader.setDebug(debug);
@@ -52,22 +57,41 @@
ecalReader.setHitCollectionName(ecalHitCollectionName); }
-// public void setTrackerName(String trackerName) { -// this.trackerName = trackerName; -// } -// -// public String getTrackerReadoutName() { -// return detector.getSubdetector(trackerName).getReadout().getName(); -// } -// public void setEcalName(String ecalName) { -// ecalReader.setEcalName(ecalName); -// } -// public Detector getDetector() { -// return detector; -// } - public EventHeader makeLCSimEvent(EvioEvent evioEvent) throws EvioException {
+ @Override + public void readEvioEvent(EvioEvent evioEvent) { + if (EventConstants.isSyncEvent(evioEvent)) { + int[] data = evioEvent.getIntData(); + int seconds = data[0]; + System.out.println("Sync event: time " + seconds + " - " + new Date(((long) seconds) * 1000) + ", event count since last sync " + data[1] + ", event count so far " + data[2] + ", status " + data[3]); + } else if (EventConstants.isPreStartEvent(evioEvent)) { + int[] data = evioEvent.getIntData(); + int seconds = data[0]; + time = ((long) seconds) * 1000000000; + run = data[1]; + System.out.println("Prestart event: time " + seconds + " - " + new Date(((long) seconds) * 1000) + ", run " + run + ", run type " + data[2]); + } else if (EventConstants.isGoEvent(evioEvent)) { + int[] data = evioEvent.getIntData(); + int seconds = data[0]; + time = ((long) seconds) * 1000000000; + System.out.println("Go event: time " + seconds + " - " + new Date(((long) seconds) * 1000) + ", event count so far " + data[2]); + } else if (EventConstants.isPauseEvent(evioEvent)) { + int[] data = evioEvent.getIntData(); + int seconds = data[0]; + time = ((long) seconds) * 1000000000; + System.out.println("Pause event: time " + seconds + " - " + new Date(((long) seconds) * 1000) + ", event count so far " + data[2]); + } else if (EventConstants.isEndEvent(evioEvent)) { + int[] data = evioEvent.getIntData(); + int seconds = data[0]; + time = ((long) seconds) * 1000000000; + run = 0; + System.out.println("End event: time " + seconds + " - " + new Date(((long) seconds) * 1000) + ", event count " + data[2]); + } + } + + @Override + public EventHeader makeLCSimEvent(EvioEvent evioEvent) {
if (!isPhysicsEvent(evioEvent)) {
- throw new EvioException("Not a physics event: event tag " + evioEvent.getHeader().getTag());
+ throw new RuntimeException("Not a physics event: event tag " + evioEvent.getHeader().getTag());
} // Create a new LCSimEvent.
@@ -77,14 +101,14 @@
try { ecalReader.makeHits(evioEvent, lcsimEvent); } catch (Exception e) {
- e.printStackTrace();
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
} // Make SVT RawTrackerHits try { svtReader.makeHits(evioEvent, lcsimEvent); } catch (Exception e) {
- e.printStackTrace();
+ Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, null, e);
} return lcsimEvent;
@@ -95,7 +119,7 @@
return (evioEvent.getHeader().getTag() == EventConstants.PHYSICS_EVENT_TAG); }
- public EventHeader getEventData(EvioEvent evioEvent) {
+ private EventHeader getEventData(EvioEvent evioEvent) {
int[] eventID = null; //array of length 3: {event number, trigger code, readout status}
@@ -110,7 +134,9 @@
if (bank.getChildCount() > 0) { for (BaseStructure slotBank : bank.getChildren()) { if (slotBank.getHeader().getTag() == EventConstants.TRIGGER_BANK_TAG) {
- triggerList.add(new TriggerData(slotBank.getIntData()));
+ TriggerData triggerData = new TriggerData(slotBank.getIntData()); + time = ((long) triggerData.getTime()) * 1000000000; + triggerList.add(triggerData);
} } }
@@ -135,14 +161,13 @@
if (triggerList.isEmpty()) { System.out.println("No trigger bank found");
+ } else if (triggerList.size() > 1) { + System.out.println("Found multiple trigger banks");
}
+
// Create a new LCSimEvent. EventHeader lcsimEvent = null;
- if (triggerList.isEmpty() || triggerList.get(0).getTime() == 0) { - lcsimEvent = new BaseLCSimEvent(0, eventID[0], detector.getDetectorName()); - } else { - lcsimEvent = new BaseLCSimEvent(0, eventID[0], detector.getDetectorName(), ((long) triggerList.get(0).getTime()) * 1000000000); - }
+ lcsimEvent = new BaseLCSimEvent(run, eventID[0], detector.getDetectorName(), time);
lcsimEvent.put("TriggerBank", triggerList, TriggerData.class, 0); return lcsimEvent;
diff -u -r1.4 -r1.5 --- LCSimEventBuilder.java 26 Apr 2012 21:16:50 -0000 1.4 +++ LCSimEventBuilder.java 1 Sep 2012 00:15:15 -0000 1.5 @@ -1,12 +1,26 @@
package org.lcsim.hps.evio; import org.jlab.coda.jevio.EvioEvent;
-import org.jlab.coda.jevio.EvioException;
import org.lcsim.event.EventHeader; public interface LCSimEventBuilder {
- EventHeader makeLCSimEvent(EvioEvent evioEvent) throws EvioException; - boolean isPhysicsEvent(EvioEvent evioEvent); - void setDetectorName(String detectorName); - void setDebug(boolean debug);
+ + /** + * Read any run information out of an EVIO event (not necessarily a physics event). + * @param evioEvent + */ + void readEvioEvent(EvioEvent evioEvent); + + /** + * Make the LCSim event. + * @param evioEvent - must be a physics event + * @return LCSim event + */ + EventHeader makeLCSimEvent(EvioEvent evioEvent); + + boolean isPhysicsEvent(EvioEvent evioEvent); + + void setDetectorName(String detectorName); + + void setDebug(boolean debug);
}
diff -u -r1.15 -r1.16 --- EventConstants.java 27 Aug 2012 22:42:20 -0000 1.15 +++ EventConstants.java 1 Sep 2012 00:15:15 -0000 1.16 @@ -43,6 +43,10 @@
public static final int SVT_TOTAL_NUMBER_FPGAS = 8; public static final int MC_TIME = 2019686400; //Unix time (in seconds) used for Monte Carlo data - 1/1/2034
+ public static boolean isSyncEvent(EvioEvent event) { + return event.getHeader().getTag() == EventConstants.SYNC_EVENT_TAG; + } +
/** * Check if this event is a Pre Start Event. *
@@ -53,6 +57,14 @@
return event.getHeader().getTag() == EventConstants.PRESTART_EVENT_TAG; }
+ public static boolean isGoEvent(EvioEvent event) { + return event.getHeader().getTag() == EventConstants.GO_EVENT_TAG; + } + + public static boolean isPauseEvent(EvioEvent event) { + return event.getHeader().getTag() == EventConstants.PAUSE_EVENT_TAG; + } +
/** * Check if this event is an End Event. *
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