5 modified files
hps-java/src/main/java/org/lcsim/hps/evio
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
hps-java/src/main/java/org/lcsim/hps/evio
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");
hps-java/src/main/java/org/lcsim/hps/evio
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;
hps-java/src/main/java/org/lcsim/hps/evio
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);
}
hps-java/src/main/java/org/lcsim/hps/evio
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.
*
CVSspam 0.2.12