hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.4 -r1.5
--- ECalEvioWriter.java 2 May 2012 00:39:40 -0000 1.4
+++ ECalEvioWriter.java 4 May 2012 17:18:57 -0000 1.5
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
package org.lcsim.hps.evio;
import org.lcsim.event.RawTrackerHit;
@@ -29,7 +25,7 @@
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: ECalEvioWriter.java,v 1.4 2012/05/02 00:39:40 meeg Exp $
+ * @version $Id: ECalEvioWriter.java,v 1.5 2012/05/04 17:18:57 meeg Exp $
*/
public class ECalEvioWriter implements EvioWriter {
@@ -55,6 +51,7 @@
}
}
+ @Override
public boolean hasData(EventHeader event) {
switch (mode) {
case EventConstants.ECAL_WINDOW_MODE:
@@ -68,6 +65,7 @@
}
}
+ @Override
public void writeData(EventHeader event, EventBuilder builder) {
if (!HPSEcalConditions.mapLoaded()) {
HPSEcalConditions.fillDaqCellMap(event.getDetector().getSubdetector(ecalName));
@@ -150,6 +148,11 @@
// Make a new bank for this crate.
EvioBank crateBank = new EvioBank(bankTag, DataType.BANK, ECAL_BANK_NUMBER);
+// // New bank for this slot.
+// EvioBank slotBank = new EvioBank(EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG, DataType.COMPOSITE, 0);
+//
+// List<CompositeData> slotDataList = new ArrayList<CompositeData>();
+//
// Loop over the slots in the map.
for (int slot : slotMap.keySet()) {
@@ -177,16 +180,15 @@
}
// Add CompositeData to bank.
- CompositeData cdata = null;
try {
- cdata = new CompositeData(ECAL_PULSE_INTEGRAL_FORMAT, 1, data, ECAL_PULSE_INTEGRAL_BANK_TAG, slot);
+ CompositeData cdata = new CompositeData(ECAL_PULSE_INTEGRAL_FORMAT, 1, data, ECAL_PULSE_INTEGRAL_BANK_TAG, 0);
+// slotDataList.add(cdata);
slotBank.appendCompositeData(cdata);
} catch (EvioException e) {
throw new RuntimeException(e);
}
// Add slot bank to crate bank.
- slotBank.setAllHeaderLengths();
try {
builder.addChild(crateBank, slotBank);
} catch (EvioException e) {
@@ -194,7 +196,8 @@
}
}
try {
- crateBank.setAllHeaderLengths();
+// slotBank.appendCompositeData(slotDataList.toArray(new CompositeData[slotDataList.size()]));
+// builder.addChild(crateBank, slotBank);
builder.addChild(builder.getEvent(), crateBank);
} catch (EvioException e) {
throw new RuntimeException(e);
@@ -255,6 +258,11 @@
// Make a new bank for this crate.
EvioBank crateBank = new EvioBank(bankTag, DataType.BANK, ECAL_BANK_NUMBER);
+// // New bank for this slot.
+// EvioBank slotBank = new EvioBank(EventConstants.ECAL_PULSE_BANK_TAG, DataType.COMPOSITE, 0);
+//
+// List<CompositeData> slotDataList = new ArrayList<CompositeData>();
+//
// Loop over the slots in the map.
for (int slot : slotMap.keySet()) {
@@ -285,24 +293,17 @@
}
// Add CompositeData to bank.
- CompositeData cdata = null;
try {
- cdata = new CompositeData(EventConstants.ECAL_PULSE_FORMAT, 1, data, EventConstants.ECAL_PULSE_BANK_TAG, slot);
+ CompositeData cdata = new CompositeData(EventConstants.ECAL_PULSE_FORMAT, 1, data, EventConstants.ECAL_PULSE_BANK_TAG, 0);
+// slotDataList.add(cdata);
slotBank.appendCompositeData(cdata);
} catch (EvioException e) {
throw new RuntimeException(e);
}
-
- // Add slot bank to crate bank.
- slotBank.setAllHeaderLengths();
- try {
- builder.addChild(crateBank, slotBank);
- } catch (EvioException e) {
- throw new RuntimeException(e);
- }
}
try {
- crateBank.setAllHeaderLengths();
+// slotBank.appendCompositeData(slotDataList.toArray(new CompositeData[slotDataList.size()]));
+// builder.addChild(crateBank, slotBank);
builder.addChild(builder.getEvent(), crateBank);
} catch (EvioException e) {
throw new RuntimeException(e);
@@ -359,6 +360,11 @@
// Make a new bank for this crate.
EvioBank crateBank = new EvioBank(bankTag, DataType.BANK, ECAL_BANK_NUMBER);
+// // New bank for this slot.
+// EvioBank slotBank = new EvioBank(EventConstants.ECAL_WINDOW_BANK_TAG, DataType.COMPOSITE, 0);
+//
+// List<CompositeData> slotDataList = new ArrayList<CompositeData>();
+//
// Loop over the slots in the map.
for (int slot : slotMap.keySet()) {
@@ -385,11 +391,11 @@
}
// Add CompositeData to bank.
- CompositeData cdata = null;
try {
- cdata = new CompositeData(EventConstants.ECAL_WINDOW_FORMAT, 1, data, EventConstants.ECAL_WINDOW_BANK_TAG, slot);
+ CompositeData cdata = new CompositeData(EventConstants.ECAL_WINDOW_FORMAT, 1, data, EventConstants.ECAL_WINDOW_BANK_TAG, 0);
+ // slotDataList.add(cdata);
slotBank.appendCompositeData(cdata);
- } catch (EvioException e) {
+ } catch (EvioException e) {
throw new RuntimeException(e);
}
@@ -402,7 +408,8 @@
}
}
try {
- crateBank.setAllHeaderLengths();
+// slotBank.appendCompositeData(slotDataList.toArray(new CompositeData[slotDataList.size()]));
+// builder.addChild(crateBank, slotBank);
builder.addChild(builder.getEvent(), crateBank);
} catch (EvioException e) {
throw new RuntimeException(e);
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.6 -r1.7
--- BasicEvioFileReader.java 2 May 2012 16:53:28 -0000 1.6
+++ BasicEvioFileReader.java 4 May 2012 17:18:57 -0000 1.7
@@ -56,17 +56,20 @@
}
}
if (bank.getHeader().getDataType() == DataType.COMPOSITE) {
+// for (CompositeData cdata : bank.getCompositeData()) {
+ CompositeData cdata = bank.getCompositeData();
switch (bank.getHeader().getTag()) {
case 0xe101:
- printWindow(bank.getCompositeData(), indent + "\t");
+ printWindow(cdata, indent + "\t");
break;
case 0xe102:
- printComposite(bank.getCompositeData(), indent + "\t");
+ printComposite(cdata, indent + "\t");
break;
case 0xe103:
- printComposite(bank.getCompositeData(), indent + "\t");
+ printComposite(cdata, indent + "\t");
break;
}
+// }
}
}
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.12 -r1.13
--- ECalEvioReader.java 2 May 2012 20:31:38 -0000 1.12
+++ ECalEvioReader.java 4 May 2012 17:18:57 -0000 1.13
@@ -1,7 +1,3 @@
-/*
- * To change this template, choose Tools | Templates
- * and open the template in the editor.
- */
package org.lcsim.hps.evio;
import java.util.ArrayList;
@@ -17,7 +13,7 @@
/**
*
* @author Sho Uemura <[log in to unmask]>
- * @version $Id: ECalEvioReader.java,v 1.12 2012/05/02 20:31:38 meeg Exp $
+ * @version $Id: ECalEvioReader.java,v 1.13 2012/05/04 17:18:57 meeg Exp $
*/
public class ECalEvioReader extends EvioReader {
// Names of subdetectors.
@@ -51,34 +47,35 @@
if (debug) {
System.out.println("ECal bank tag: " + header.getTag() + "; childCount: " + bank.getChildCount());
}
- for (BaseStructure slotBank : bank.getChildren()) {
- CompositeData cdata = null;
- try {
- cdata = slotBank.getCompositeData();
- } catch (EvioException e) {
- throw new RuntimeException(e);
- }
- 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;
- break;
- case EventConstants.ECAL_PULSE_BANK_TAG:
- hits.addAll(makePulseHits(cdata, crateBankTag));
- hitClass = RawTrackerHit.class;
- break;
- case EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG:
- hits.addAll(makeIntegralHits(cdata, crateBankTag));
- hitClass = RawCalorimeterHit.class;
- break;
- default:
- throw new RuntimeException("Unsupported ECal format - bank tag " + slotBank.getHeader().getTag());
+ try {
+ for (BaseStructure slotBank : bank.getChildren()) {
+// 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;
+ break;
+ case EventConstants.ECAL_PULSE_BANK_TAG:
+ hits.addAll(makePulseHits(cdata, crateBankTag));
+ hitClass = RawTrackerHit.class;
+ break;
+ case EventConstants.ECAL_PULSE_INTEGRAL_BANK_TAG:
+ hits.addAll(makeIntegralHits(cdata, crateBankTag));
+ hitClass = RawCalorimeterHit.class;
+ break;
+ default:
+ throw new RuntimeException("Unsupported ECal format - bank tag " + slotBank.getHeader().getTag());
+ }
+// }
}
+ } catch (EvioException e) {
+ throw new RuntimeException(e);
}
}
}
hps-java/src/main/java/org/lcsim/hps/evio
diff -u -r1.9 -r1.10
--- TestRunTriggeredReconToEvio.java 2 May 2012 00:39:40 -0000 1.9
+++ TestRunTriggeredReconToEvio.java 4 May 2012 17:18:57 -0000 1.10
@@ -20,176 +20,176 @@
*/
public class TestRunTriggeredReconToEvio extends Driver {
- EventWriter writer;
- String rawCalorimeterHitCollectionName = "EcalReadoutHits";
- String evioOutputFile = "TestRunData.evio";
- String ecalName = "Ecal";
- Queue<QueuedEtEvent> builderQueue = null;
- private int eventsWritten = 0;
- public static boolean triggerBit = false;
- HPSEcalConditions ecalIDConverter = null;
- ECalEvioWriter ecalWriter = null;
- SVTEvioWriter svtWriter = null;
- List<EvioWriter> writers = null;
- private int ecalMode = EventConstants.ECAL_PULSE_INTEGRAL_MODE;
-
- public TestRunTriggeredReconToEvio() {
- }
-
- public void setEcalMode(int ecalMode) {
- this.ecalMode = ecalMode;
- if (ecalMode != EventConstants.ECAL_WINDOW_MODE && ecalMode != EventConstants.ECAL_PULSE_MODE && ecalMode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
- throw new IllegalArgumentException("invalid mode " + ecalMode);
- }
- if (ecalWriter != null) {
- ecalWriter.setMode(ecalMode);
- }
- }
-
- public void setEvioOutputFile(String evioOutputFile) {
- this.evioOutputFile = evioOutputFile;
- }
-
- public void setEcalName(String ecalName) {
- this.ecalName = ecalName;
- if (ecalWriter != null) {
- ecalWriter.setEcalName(ecalName);
- }
- }
-
- public void setRawCalorimeterHitCollectionName(String rawCalorimeterHitCollectionName) {
- this.rawCalorimeterHitCollectionName = rawCalorimeterHitCollectionName;
- if (ecalWriter != null) {
- ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName);
- }
- }
-
- protected void startOfData() {
- try {
- writer = new EventWriter(evioOutputFile);
- } catch (EvioException e) {
- throw new RuntimeException(e);
- }
-
- writers = new ArrayList<EvioWriter>();
-
- ecalWriter = new ECalEvioWriter();
- ecalWriter.setMode(ecalMode);
- ecalWriter.setEcalName(ecalName);
- ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName);
- writers.add(ecalWriter);
-
- svtWriter = new SVTEvioWriter();
- writers.add(svtWriter);
-
- builderQueue = new LinkedList<QueuedEtEvent>();
- }
-
- protected void endOfData() {
- System.out.println(this.getClass().getSimpleName() + " - wrote " + eventsWritten + " EVIO events in job.");
- try {
- writer.close();
- } catch (EvioException e) {
- throw new RuntimeException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- protected void process(EventHeader event) {
- if (triggerBit) {
- // Make a new EVIO event.
- EventBuilder builder = new EventBuilder(EventConstants.PHYSICS_EVENT_TAG, DataType.BANK, EventConstants.EVENT_BANK_NUM);
- builderQueue.add(new QueuedEtEvent(builder, writers.size()));
- triggerBit = false;
- }
-
- for (int i = 0; i < writers.size(); i++) {
- EvioWriter evioWriter = writers.get(i);
- if (evioWriter.hasData(event)) {
- System.out.println(evioWriter.getClass().getSimpleName() + ": writing data, event " + event.getEventNumber());
- EventBuilder builder = null;
-
- for (QueuedEtEvent queuedEvent : builderQueue) {
- if (!queuedEvent.getRead(i)) {
- builder = queuedEvent.getBuilder();
- queuedEvent.setRead(i);
- break;
- }
- }
- if (builder == null) {
- throw new RuntimeException("no queued ET events waiting for an " + evioWriter.getClass().getSimpleName() + " bank");
- }
- // Write data.
- evioWriter.writeData(event, builder);
- }
- }
-
- while (!builderQueue.isEmpty() && builderQueue.peek().banksFilled()) {
- System.out.println("writing filled ET event, event " + event.getEventNumber());
- EventBuilder builder = builderQueue.poll().getBuilder();
- // Write this EVIO event.
- writeEvioEvent(builder);
- }
- }
-
- private void writeEvioEvent(EventBuilder builder) {
- EvioBank eventIDBank = new EvioBank(EventConstants.EVENTID_BANK_TAG, DataType.UINT32, 0);
- int[] eventID = new int[3];
- eventID[0] = eventsWritten;
- eventID[1] = 0; //trigger type
- eventID[2] = 0; //status
-
- try {
- eventIDBank.appendIntData(eventID);
- builder.addChild(builder.getEvent(), eventIDBank);
- } catch (EvioException e) {
- throw new RuntimeException(e);
- }
-
- builder.setAllHeaderLengths();
- System.out.printf("Writing event with %d bytes\n", builder.getEvent().getTotalBytes());
- try {
- writer.writeEvent(builder.getEvent());
- ++eventsWritten;
- } catch (EvioException e) {
- throw new RuntimeException(e);
- } catch (IOException e) {
- throw new RuntimeException(e);
- }
- }
-
- private class QueuedEtEvent {
-
- private EventBuilder builder;
- public boolean readSVT = false;
- public boolean readECal = false;
- private boolean[] readData = null;
-
- public QueuedEtEvent(EventBuilder builder, int numData) {
- this.builder = builder;
- readData = new boolean[numData];
- }
-
- public void setRead(int i) {
- readData[i] = true;
- }
-
- public boolean getRead(int i) {
- return readData[i];
- }
-
- public EventBuilder getBuilder() {
- return builder;
- }
-
- public boolean banksFilled() {
- for (boolean x : readData) {
- if (!x) {
- return false;
- }
- }
- return true;
- }
- }
+ EventWriter writer;
+ String rawCalorimeterHitCollectionName = "EcalReadoutHits";
+ String evioOutputFile = "TestRunData.evio";
+ String ecalName = "Ecal";
+ Queue<QueuedEtEvent> builderQueue = null;
+ private int eventsWritten = 0;
+ public static boolean triggerBit = false;
+ HPSEcalConditions ecalIDConverter = null;
+ ECalEvioWriter ecalWriter = null;
+ SVTEvioWriter svtWriter = null;
+ List<EvioWriter> writers = null;
+ private int ecalMode = EventConstants.ECAL_PULSE_INTEGRAL_MODE;
+
+ public TestRunTriggeredReconToEvio() {
+ }
+
+ public void setEcalMode(int ecalMode) {
+ this.ecalMode = ecalMode;
+ if (ecalMode != EventConstants.ECAL_WINDOW_MODE && ecalMode != EventConstants.ECAL_PULSE_MODE && ecalMode != EventConstants.ECAL_PULSE_INTEGRAL_MODE) {
+ throw new IllegalArgumentException("invalid mode " + ecalMode);
+ }
+ if (ecalWriter != null) {
+ ecalWriter.setMode(ecalMode);
+ }
+ }
+
+ public void setEvioOutputFile(String evioOutputFile) {
+ this.evioOutputFile = evioOutputFile;
+ }
+
+ public void setEcalName(String ecalName) {
+ this.ecalName = ecalName;
+ if (ecalWriter != null) {
+ ecalWriter.setEcalName(ecalName);
+ }
+ }
+
+ public void setRawCalorimeterHitCollectionName(String rawCalorimeterHitCollectionName) {
+ this.rawCalorimeterHitCollectionName = rawCalorimeterHitCollectionName;
+ if (ecalWriter != null) {
+ ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName);
+ }
+ }
+
+ protected void startOfData() {
+ try {
+ writer = new EventWriter(evioOutputFile);
+ } catch (EvioException e) {
+ throw new RuntimeException(e);
+ }
+
+ writers = new ArrayList<EvioWriter>();
+
+ ecalWriter = new ECalEvioWriter();
+ ecalWriter.setMode(ecalMode);
+ ecalWriter.setEcalName(ecalName);
+ ecalWriter.setHitCollectionName(rawCalorimeterHitCollectionName);
+ writers.add(ecalWriter);
+
+ svtWriter = new SVTEvioWriter();
+ writers.add(svtWriter);
+
+ builderQueue = new LinkedList<QueuedEtEvent>();
+ }
+
+ protected void endOfData() {
+ System.out.println(this.getClass().getSimpleName() + " - wrote " + eventsWritten + " EVIO events in job.");
+ try {
+ writer.close();
+ } catch (EvioException e) {
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ protected void process(EventHeader event) {
+ if (triggerBit) {
+ // Make a new EVIO event.
+ EventBuilder builder = new EventBuilder(EventConstants.PHYSICS_EVENT_TAG, DataType.BANK, EventConstants.EVENT_BANK_NUM);
+ builderQueue.add(new QueuedEtEvent(builder, writers.size()));
+ EvioBank eventIDBank = new EvioBank(EventConstants.EVENTID_BANK_TAG, DataType.UINT32, 0);
+ int[] eventID = new int[3];
+ eventID[0] = eventsWritten;
+ eventID[1] = 0; //trigger type
+ eventID[2] = 0; //status
+
+ try {
+ eventIDBank.appendIntData(eventID);
+ builder.addChild(builder.getEvent(), eventIDBank);
+ } catch (EvioException e) {
+ throw new RuntimeException(e);
+ }
+
+ triggerBit = false;
+ }
+
+ for (int i = 0; i < writers.size(); i++) {
+ EvioWriter evioWriter = writers.get(i);
+ if (evioWriter.hasData(event)) {
+ System.out.println(evioWriter.getClass().getSimpleName() + ": writing data, event " + event.getEventNumber());
+ EventBuilder builder = null;
+
+ for (QueuedEtEvent queuedEvent : builderQueue) {
+ if (!queuedEvent.getRead(i)) {
+ builder = queuedEvent.getBuilder();
+ queuedEvent.setRead(i);
+ break;
+ }
+ }
+ if (builder == null) {
+ throw new RuntimeException("no queued ET events waiting for an " + evioWriter.getClass().getSimpleName() + " bank");
+ }
+ // Write data.
+ evioWriter.writeData(event, builder);
+ }
+ }
+
+ while (!builderQueue.isEmpty() && builderQueue.peek().banksFilled()) {
+ System.out.println("writing filled ET event, event " + event.getEventNumber());
+ EventBuilder builder = builderQueue.poll().getBuilder();
+ // Write this EVIO event.
+ writeEvioEvent(builder);
+ }
+ }
+
+ private void writeEvioEvent(EventBuilder builder) {
+ builder.setAllHeaderLengths();
+ System.out.printf("Writing event with %d bytes\n", builder.getEvent().getTotalBytes());
+ try {
+ writer.writeEvent(builder.getEvent());
+ ++eventsWritten;
+ } catch (EvioException e) {
+ throw new RuntimeException(e);
+ } catch (IOException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private class QueuedEtEvent {
+
+ private EventBuilder builder;
+ public boolean readSVT = false;
+ public boolean readECal = false;
+ private boolean[] readData = null;
+
+ public QueuedEtEvent(EventBuilder builder, int numData) {
+ this.builder = builder;
+ readData = new boolean[numData];
+ }
+
+ public void setRead(int i) {
+ readData[i] = true;
+ }
+
+ public boolean getRead(int i) {
+ return readData[i];
+ }
+
+ public EventBuilder getBuilder() {
+ return builder;
+ }
+
+ public boolean banksFilled() {
+ for (boolean x : readData) {
+ if (!x) {
+ return false;
+ }
+ }
+ return true;
+ }
+ }
}
\ No newline at end of file