Author: [log in to unmask]
Date: Thu Sep 24 12:54:45 2015
New Revision: 3694
Log:
Go back to a more abstracted Svt evio reader to allow more flexibility
Added:
java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java
Modified:
java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java
java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java
java/trunk/evio/src/main/java/org/hps/evio/TestRunSvtEvioReader.java
Modified: java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java Thu Sep 24 12:54:45 2015
@@ -236,10 +236,8 @@
// Check the integrity of the SVT header data
this.checkSvtHeaderData(headerData);
-
// Check that the multisample count is consistent
- if( sampleCount != SvtEvioUtils.getSvtTailMultisampleCount(headerData.getTail())*4)
- throw new RuntimeException("multisample count is not consistent with bank size.");
+ this.checkSvtSampleCount(sampleCount, headerData);
// Add header to list
headers.add(headerData);
@@ -255,8 +253,9 @@
System.arraycopy(data, this.getDataHeaderLength() + samplesN, samples, 0, samples.length);
// Extract multisample header
- if( SvtEvioUtils.isMultisampleHeader(samples) )
- multisampleHeaders[samplesN/4] = SvtEvioUtils.getMultisampleTailWord(samples);
+ this.extractMultisampleTail(samples, samplesN/4, multisampleHeaders);
+ //if( SvtEvioUtils.isMultisampleHeader(samples) )
+ // multisampleHeaders[samplesN/4] = SvtEvioUtils.getMultisampleTailWord(samples);
// If a set of samples is associated with an APV header or tail, skip it
if (!this.isValidSampleSet(samples)) continue;
@@ -264,7 +263,8 @@
}
// add multisample headers to header data object
- headerData.setMultisampleHeaders(multisampleHeaders);
+ this.setMultiSampleHeaders(headerData, multisampleHeaders);
+ //headerData.setMultisampleHeaders(multisampleHeaders);
}
}
@@ -283,7 +283,14 @@
return true;
}
-
+ protected abstract void setMultiSampleHeaders(SvtHeaderDataInfo headerData, int[] multisampleHeaders);
+
+ protected abstract void extractMultisampleTail(int[] multisample, int index, int[] multisampleHeaders);
+
+
+
+ protected abstract void checkSvtSampleCount(int sampleCount, SvtHeaderDataInfo headerData) throws SvtEvioHeaderException;
+
/**
* Check if the SVT headers are as expected.
* @param headers - list of headers to check
@@ -299,13 +306,7 @@
protected abstract SvtHeaderDataInfo extractSvtHeader(int num, int[] data);
- protected void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent) {
- // Turn on 64-bit cell ID.
- int flag = LCIOUtil.bitSet(0, 31, true);
- // Add the collection of raw hits to the LCSim event
- lcsimEvent.put(SVT_HEADER_COLLECTION_NAME, headers, SvtHeaderDataInfo.class, flag);
-
- }
+ protected abstract void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent);
/**
* Make a {@link RawTrackerHit} from a set of samples.
Added: java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java (added)
+++ java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java Thu Sep 24 12:54:45 2015
@@ -0,0 +1,79 @@
+/**
+ *
+ */
+package org.hps.evio;
+
+import java.util.List;
+
+import org.hps.readout.svt.SvtHeaderDataInfo;
+import org.lcsim.event.EventHeader;
+import org.lcsim.lcio.LCIOUtil;
+
+/**
+ * @author Per Hansson Adrian <[log in to unmask]>
+ *
+ */
+public class AugmentedSvtEvioReader extends SvtEvioReader {
+
+ /**
+ *
+ */
+ public AugmentedSvtEvioReader() {
+ super();
+ }
+
+
+
+
+ @Override
+ protected SvtHeaderDataInfo extractSvtHeader(int num, int[] data) {
+ // Extract the header information
+ int svtHeader = SvtEvioUtils.getSvtHeader(data);
+ // Extract the tail information
+ int svtTail = SvtEvioUtils.getSvtTail(data);
+ return new SvtHeaderDataInfo(num, svtHeader, svtTail);
+
+ }
+
+ @Override
+ protected void checkSvtHeaderData(SvtHeaderDataInfo header) throws SvtEvioHeaderException {
+ int tail = header.getTail();
+ if( SvtEvioUtils.getSvtTailSyncErrorBit(tail) != 0) {
+ throw new SvtEvioHeaderException("This header had a SyncError");
+ }
+ else if( SvtEvioUtils.getSvtTailOFErrorBit(tail) != 0) {
+ throw new SvtEvioHeaderException("This header had a OverFlowError");
+ }
+ else if( SvtEvioUtils.getSvtTailMultisampleSkipCount(tail) != 0) {
+ throw new SvtEvioHeaderException("This header had a skipCount " + SvtEvioUtils.getSvtTailMultisampleSkipCount(tail));
+ }
+ }
+
+ @Override
+ protected void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent) {
+ // Turn on 64-bit cell ID.
+ int flag = LCIOUtil.bitSet(0, 31, true);
+ // Add the collection of raw hits to the LCSim event
+ lcsimEvent.put(SVT_HEADER_COLLECTION_NAME, headers, SvtHeaderDataInfo.class, flag);
+
+}
+
+ @Override
+ protected void checkSvtSampleCount(int sampleCount, SvtHeaderDataInfo headerData) throws SvtEvioHeaderException {
+ if( sampleCount != SvtEvioUtils.getSvtTailMultisampleCount(headerData.getTail())*4)
+ throw new SvtEvioHeaderException("multisample count is not consistent with bank size.");
+ }
+
+ @Override
+ protected void setMultiSampleHeaders(SvtHeaderDataInfo headerData, int[] multisampleHeaders) {
+ headerData.setMultisampleHeaders(multisampleHeaders);
+ }
+
+ @Override
+ protected void extractMultisampleTail(int[] multisample, int index, int[] multisampleHeaders) {
+ if( SvtEvioUtils.isMultisampleHeader(multisample) )
+ multisampleHeaders[index] = SvtEvioUtils.getMultisampleTailWord(multisample);
+ }
+
+
+}
Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Thu Sep 24 12:54:45 2015
@@ -77,7 +77,7 @@
ecalReader.setTopBankTag(0x25);
ecalReader.setBotBankTag(0x27);
ecalReader.setRfBankTag(0x2e);
- svtReader = new SvtEvioReader();
+ svtReader = new AugmentedSvtEvioReader();
sspCrateBankTag = 0x2E; // A.C. modification after Sergey's confirmation
sspBankTag = 0xe10c;
intBanks = new ArrayList<IntBankDefinition>();
Modified: java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/SvtEvioReader.java Thu Sep 24 12:54:45 2015
@@ -10,6 +10,7 @@
import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.geometry.Subdetector;
+import org.lcsim.lcio.LCIOUtil;
/**
* SVT EVIO reader used to convert SVT bank integer data to LCIO objects.
@@ -208,27 +209,39 @@
}
@Override
+ protected void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers,
+ EventHeader lcsimEvent) {
+
+ }
+
+ @Override
+ protected void checkSvtHeaderData(SvtHeaderDataInfo header)
+ throws SvtEvioHeaderException {
+ }
+
+ @Override
protected SvtHeaderDataInfo extractSvtHeader(int num, int[] data) {
- // Extract the header information
- int svtHeader = SvtEvioUtils.getSvtHeader(data);
- // Extract the tail information
- int svtTail = SvtEvioUtils.getSvtTail(data);
- return new SvtHeaderDataInfo(num, svtHeader, svtTail);
- }
-
- @Override
- protected void checkSvtHeaderData(SvtHeaderDataInfo header) throws SvtEvioHeaderException {
- int tail = header.getTail();
- if( SvtEvioUtils.getSvtTailSyncErrorBit(tail) != 0) {
- throw new SvtEvioHeaderException("This header had a SyncError");
- }
- else if( SvtEvioUtils.getSvtTailOFErrorBit(tail) != 0) {
- throw new SvtEvioHeaderException("This header had a OverFlowError");
- }
- else if( SvtEvioUtils.getSvtTailMultisampleSkipCount(tail) != 0) {
- throw new SvtEvioHeaderException("This header had a skipCount " + SvtEvioUtils.getSvtTailMultisampleSkipCount(tail));
- }
- }
-
+ return null;
+ }
+
+ @Override
+ protected void checkSvtSampleCount(int sampleCount,
+ SvtHeaderDataInfo headerData) throws SvtEvioHeaderException {
+ }
+
+ @Override
+ protected void setMultiSampleHeaders(SvtHeaderDataInfo headerData,
+ int[] multisampleHeaders) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected void extractMultisampleTail(int[] multisample, int index,
+ int[] multisampleHeaders) {
+ // TODO Auto-generated method stub
+
+ }
+
}
Modified: java/trunk/evio/src/main/java/org/hps/evio/TestRunSvtEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/TestRunSvtEvioReader.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/TestRunSvtEvioReader.java Thu Sep 24 12:54:45 2015
@@ -7,6 +7,7 @@
import org.jlab.coda.jevio.BaseStructure;
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
import org.lcsim.detector.tracker.silicon.HpsTestRunSiSensor;
+import org.lcsim.event.EventHeader;
import org.lcsim.event.RawTrackerHit;
import org.lcsim.geometry.Subdetector;
@@ -177,6 +178,36 @@
}
+ @Override
+ protected void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers,
+ EventHeader lcsimEvent) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected void checkSvtSampleCount(int sampleCount,
+ SvtHeaderDataInfo headerData) throws SvtEvioHeaderException {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected void setMultiSampleHeaders(SvtHeaderDataInfo headerData,
+ int[] multisampleHeaders) {
+ // TODO Auto-generated method stub
+
+ }
+
+ @Override
+ protected void extractMultisampleTail(int[] multisample, int index,
+ int[] multisampleHeaders) {
+ // TODO Auto-generated method stub
+
+ }
+
+
+
|