Author: [log in to unmask]
Date: Tue Nov 4 20:49:21 2014
New Revision: 1431
Log:
make various bank numbers configurable; implement engineering run event builder that uses the new bank numbers and SSP data object
Added:
java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
- copied, changed from r1425, java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
Modified:
java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java
java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
Modified: java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java Tue Nov 4 20:49:21 2014
@@ -46,10 +46,14 @@
private static EcalConditions ecalConditions = null;
private static IIdentifierHelper helper = null;
- public ECalEvioReader() {
+ private int topBankTag, botBankTag;
+
+ public ECalEvioReader(int topBankTag, int botBankTag) {
+ this.topBankTag = topBankTag;
+ this.botBankTag = botBankTag;
hitCollectionName = "EcalReadoutHits";
- subDetector = DatabaseConditionsManager.getInstance().getDetectorObject().getSubdetector(subdetectorName);
+ subDetector = DatabaseConditionsManager.getInstance().getDetectorObject().getSubdetector(subdetectorName);
// ECAL combined conditions object.
ecalConditions = ConditionsManager.defaultInstance()
@@ -60,6 +64,15 @@
System.out.println("You are now using the database conditions for ECalEvioReader.java");
// ID helper.
// helper = detector.getSubdetector("Ecal").getDetectorElement().getIdentifierHelper();
+ }
+
+ public void setTopBankTag(int topBankTag) {
+ this.topBankTag = topBankTag;
+
+ }
+
+ public void setBotBankTag(int botBankTag) {
+ this.botBankTag = botBankTag;
}
@Override
@@ -71,7 +84,13 @@
for (BaseStructure bank : event.getChildren()) {
BaseStructureHeader header = bank.getHeader();
int crateBankTag = header.getTag();
- if (crateBankTag == EventConstants.ECAL_TOP_BANK_TAG || crateBankTag == EventConstants.ECAL_BOTTOM_BANK_TAG) {
+ int crate = 0;
+ if (crateBankTag == topBankTag) {
+ crate = 1;
+ } else if (crateBankTag == botBankTag) {
+ crate = 2;
+ }
+ if (crateBankTag == topBankTag||crateBankTag == botBankTag) {
foundHits = true;
if (bank.getChildCount() > 0) {
if (debug) {
@@ -79,39 +98,41 @@
}
try {
for (BaseStructure slotBank : bank.getChildren()) {
- if (slotBank.getHeader().getTag() == EventConstants.TRIGGER_BANK_TAG) {
- if (debug) {
- int[] data = slotBank.getIntData();
- for (int i = 0; i < data.length; i++) {
- System.out.format("0x%x\n", data[i]);
+// if (isTriggerBank(slotBank.getHeader().getTag(), lcsimEvent.getRunNumber()) != 0) {
+// if (debug) {
+// int[] data = slotBank.getIntData();
+// for (int i = 0; i < data.length; i++) {
+// System.out.format("0x%x\n", data[i]);
+// }
+// }
+// continue;
+// }
+ if (slotBank.getCompositeData() != null) { //skip SSP and TI banks, if any
+ for (CompositeData cdata : slotBank.getCompositeData()) {
+// CompositeData cdata = slotBank.getCompositeData();
+ if (slotBank.getHeader().getTag() != bankTag) {
+ bankTag = slotBank.getHeader().getTag();
+ System.out.printf("ECal format tag: 0x%x\n", bankTag);
}
- }
- continue;
- }
- for (CompositeData cdata : slotBank.getCompositeData()) {
-// CompositeData cdata = slotBank.getCompositeData();
- if (slotBank.getHeader().getTag() != bankTag) {
- bankTag = slotBank.getHeader().getTag();
- System.out.printf("ECal format tag: 0x%x\n", bankTag);
- }
- switch (slotBank.getHeader().getTag()) {
- case EventConstants.ECAL_WINDOW_BANK_TAG:
- hits.addAll(makeWindowHits(cdata, crateBankTag));
- hitClass = RawTrackerHit.class;
- flags = 0;
- break;
- case EventConstants.ECAL_PULSE_BANK_TAG:
- hits.addAll(makePulseHits(cdata, crateBankTag));
- hitClass = RawTrackerHit.class;
- flags = 0;
- break;
- case EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG:
- hits.addAll(makeIntegralHits(cdata, crateBankTag));
- hitClass = BaseRawCalorimeterHit.class;
- flags = (1 << LCIOConstants.RCHBIT_TIME); //store timestamp
- break;
- default:
- throw new RuntimeException("Unsupported ECal format - bank tag " + slotBank.getHeader().getTag());
+ switch (slotBank.getHeader().getTag()) {
+ case EventConstants.ECAL_WINDOW_BANK_TAG:
+ hits.addAll(makeWindowHits(cdata, crate));
+ hitClass = RawTrackerHit.class;
+ flags = 0;
+ break;
+ case EventConstants.ECAL_PULSE_BANK_TAG:
+ hits.addAll(makePulseHits(cdata, crate));
+ hitClass = RawTrackerHit.class;
+ flags = 0;
+ break;
+ case EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG:
+ hits.addAll(makeIntegralHits(cdata, crate));
+ hitClass = BaseRawCalorimeterHit.class;
+ flags = (1 << LCIOConstants.RCHBIT_TIME); //store timestamp
+ break;
+ default:
+ throw new RuntimeException("Unsupported ECal format - bank tag " + slotBank.getHeader().getTag());
+ }
}
}
}
@@ -160,7 +181,9 @@
Long id = daqToGeometryId(crate, slot, channel);
// Long id = EcalConditions.daqToPhysicalID(crate, slot, channel);
- System.out.println("The long id is: " + id);
+ if (debug) {
+ System.out.println("The long id is: " + id);
+ }
short[] adcValues = new short[nSamples];
for (int i = 0; i < nSamples; i++) {
Copied: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java (from r1425, java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java)
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Tue Nov 4 20:49:21 2014
@@ -1,18 +1,7 @@
package org.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.hps.conditions.deprecated.EcalConditions;
+import org.hps.readout.ecal.SSPData;
import org.hps.readout.ecal.TriggerData;
-import org.jlab.coda.jevio.BaseStructure;
-import org.jlab.coda.jevio.EvioEvent;
-import org.lcsim.event.EventHeader;
-import org.lcsim.event.base.BaseLCSimEvent;
-import org.lcsim.geometry.Detector;
/**
* Build LCSim events from EVIO data.
@@ -22,154 +11,22 @@
* @version $Id: LCSimTestRunEventBuilder.java,v 1.24 2013/03/01 01:30:25 meeg
* Exp $
*/
-public class LCSimTestRunEventBuilder implements LCSimEventBuilder {
+public class LCSimEngRunEventBuilder extends LCSimTestRunEventBuilder {
- // Names of subdetectors.
-// private String trackerName;
- // Detector conditions object.
- private Detector detector;
- // Debug flag.
- private boolean debug = false;
- ECalEvioReader ecalReader = null;
- SVTEvioReader 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() {
- ecalReader = new ECalEvioReader();
- svtReader = new SVTEvioReader();
+ public LCSimEngRunEventBuilder() {
+ ecalReader.setTopBankTag(0x25);
+ ecalReader.setBotBankTag(0x27);
+ sspCrateBankTag = 0x25;
+ sspBankTag = 0xe10c;
+// ecalReader = new ECalEvioReader(0x25, 0x27);
+// svtReader = new SVTEvioReader();
}
- @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();
-// EcalConditions.loadDaqMap(detector, "Ecal");
+ protected TriggerData makeTriggerData(int[] data) {
+ TriggerData triggerData = new SSPData(data);
+ time = ((long) triggerData.getTime()) * 4;
+ return triggerData;
}
- @Override
- public void setDebug(boolean debug) {
- this.debug = debug;
- ecalReader.setDebug(debug);
- }
- public void setEcalHitCollectionName(String ecalHitCollectionName) {
- ecalReader.setHitCollectionName(ecalHitCollectionName);
- }
-
- @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 RuntimeException("Not a physics event: event tag " + evioEvent.getHeader().getTag());
- }
-
- // Create a new LCSimEvent.
- EventHeader lcsimEvent = getEventData(evioEvent);
-
- // Make RawCalorimeterHit collection, combining top and bottom section of ECal into one list.
- try {
- ecalReader.makeHits(evioEvent, lcsimEvent);
- } catch (Exception e) {
- Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error making ECal hits", e);
- }
-
- // Make SVT RawTrackerHits
- try {
- svtReader.makeHits(evioEvent, lcsimEvent);
- } catch (Exception e) {
- Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error making SVT hits", e);
- }
-
- return lcsimEvent;
- }
-
- @Override
- public boolean isPhysicsEvent(EvioEvent evioEvent) {
- return (evioEvent.getHeader().getTag() == EventConstants.PHYSICS_EVENT_TAG);
- }
-
- private EventHeader getEventData(EvioEvent evioEvent) {
- int[] eventID = null;
- //array of length 3: {event number, trigger code, readout status}
-
- List<TriggerData> triggerList = new ArrayList<TriggerData>();
-
- if (evioEvent.getChildCount() > 0) {
- for (BaseStructure bank : evioEvent.getChildren()) {
- if (bank.getHeader().getTag() == EventConstants.EVENTID_BANK_TAG) {
- eventID = bank.getIntData();
- }
- if (bank.getHeader().getTag() == EventConstants.ECAL_TOP_BANK_TAG || bank.getHeader().getTag() == EventConstants.ECAL_BOTTOM_BANK_TAG) {
- if (bank.getChildCount() > 0) {
- for (BaseStructure slotBank : bank.getChildren()) {
- if (slotBank.getHeader().getTag() == EventConstants.TRIGGER_BANK_TAG) {
- TriggerData triggerData = new TriggerData(slotBank.getIntData());
- time = ((long) triggerData.getTime()) * 1000000000;
- triggerList.add(triggerData);
- }
- }
- }
- }
- }
- }
-
- if (eventID == null) {
- System.out.println("No event ID bank found");
- eventID = new int[3];
- } else {
- if (debug) {
- System.out.println("Read EVIO event number " + eventID[0]);
- }
- if (eventID[1] != 1) {
- System.out.println("Trigger code is usually 1; got " + eventID[1]);
- }
- if (eventID[2] != 0) {
- System.out.println("Readout status is usually 0; got " + eventID[2]);
- }
- }
-
- 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 = new BaseLCSimEvent(run, eventID[0], detector.getDetectorName(), time);
-
- lcsimEvent.put("TriggerBank", triggerList, TriggerData.class, 0);
- return lcsimEvent;
- }
-}
+}
Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/LCSimTestRunEventBuilder.java Tue Nov 4 20:49:21 2014
@@ -5,8 +5,6 @@
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
-
-//import org.hps.conditions.deprecated.EcalConditions;
import org.hps.readout.ecal.TriggerData;
import org.jlab.coda.jevio.BaseStructure;
import org.jlab.coda.jevio.EvioEvent;
@@ -27,16 +25,18 @@
// Names of subdetectors.
// private String trackerName;
// Detector conditions object.
- private Detector detector;
+ protected Detector detector;
// Debug flag.
- private boolean debug = false;
+ protected boolean debug = false;
ECalEvioReader ecalReader = null;
SVTEvioReader 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)
+ protected int run = 0; //current run number, taken from prestart and end events
+ protected long time = 0; //most recent event time (ns), taken from prestart and end events, and trigger banks (if any)
+ protected int sspCrateBankTag = 0x1; //bank ID of the crate containing the SSP
+ protected int sspBankTag = 0xe106; //SSP bank's tag
public LCSimTestRunEventBuilder() {
- ecalReader = new ECalEvioReader();
+ ecalReader = new ECalEvioReader(0x1, 0x2);
svtReader = new SVTEvioReader();
}
@@ -120,27 +120,16 @@
return (evioEvent.getHeader().getTag() == EventConstants.PHYSICS_EVENT_TAG);
}
- private EventHeader getEventData(EvioEvent evioEvent) {
+ protected EventHeader getEventData(EvioEvent evioEvent) {
int[] eventID = null;
//array of length 3: {event number, trigger code, readout status}
- List<TriggerData> triggerList = new ArrayList<TriggerData>();
+ List<TriggerData> triggerList = getTriggerData(evioEvent);
if (evioEvent.getChildCount() > 0) {
for (BaseStructure bank : evioEvent.getChildren()) {
if (bank.getHeader().getTag() == EventConstants.EVENTID_BANK_TAG) {
eventID = bank.getIntData();
- }
- if (bank.getHeader().getTag() == EventConstants.ECAL_TOP_BANK_TAG || bank.getHeader().getTag() == EventConstants.ECAL_BOTTOM_BANK_TAG) {
- if (bank.getChildCount() > 0) {
- for (BaseStructure slotBank : bank.getChildren()) {
- if (slotBank.getHeader().getTag() == EventConstants.TRIGGER_BANK_TAG) {
- TriggerData triggerData = new TriggerData(slotBank.getIntData());
- time = ((long) triggerData.getTime()) * 1000000000;
- triggerList.add(triggerData);
- }
- }
- }
}
}
}
@@ -172,4 +161,30 @@
lcsimEvent.put("TriggerBank", triggerList, TriggerData.class, 0);
return lcsimEvent;
}
-}
+
+ protected List<TriggerData> getTriggerData(EvioEvent evioEvent) {
+ List<TriggerData> triggerList = new ArrayList<TriggerData>();
+ if (evioEvent.getChildCount() > 0) {
+ for (BaseStructure bank : evioEvent.getChildren()) {
+ if (bank.getHeader().getTag() == sspCrateBankTag) {
+ if (bank.getChildCount() > 0) {
+ for (BaseStructure slotBank : bank.getChildren()) {
+ if (slotBank.getHeader().getTag() == sspBankTag) {
+// TriggerData triggerData = new TriggerData(slotBank.getIntData());
+// time = ((long) triggerData.getTime()) * 1000000000;
+ triggerList.add(makeTriggerData(slotBank.getIntData()));
+ }
+ }
+ }
+ }
+ }
+ }
+ return triggerList;
+ }
+
+ protected TriggerData makeTriggerData(int[] data) {
+ TriggerData triggerData = new TriggerData(data);
+ time = ((long) triggerData.getTime()) * 1000000000;
+ return triggerData;
+ }
+}
|