Author: [log in to unmask]
Date: Tue Oct 6 09:13:30 2015
New Revision: 3764
Log:
Add stuff to meta data and clean up.
Modified:
java/trunk/evio/src/main/java/org/hps/evio/AbstractSvtEvioReader.java
java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java
java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java
java/trunk/evio/src/main/java/org/hps/evio/SvtEventFlagger.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 Tue Oct 6 09:13:30 2015
@@ -241,9 +241,6 @@
headers.add(headerData);
- // Create array for the apv headers of known length
- //int multisampleHeaderTails[] = new int[sampleCount/4];
-
// Store the multisample headers
// Note that the length is not known but can't be longer than the multisample count
// in other words the data can be only header multisamples for example.
@@ -265,14 +262,8 @@
logger.fine("this is a data multisample for apv " + SvtEvioUtils.getApvFromMultiSample(samples) + " ch " + SvtEvioUtils.getChannelNumber(samples));
- // Extract tail word in multisample header
- //this.extractMultisampleHeaderTail(samples, samplesN/4, multisampleHeaderTails);
-
// Extract data words from multisample header
multisampleHeaderIndex += this.extractMultisampleHeaderData(samples, multisampleHeaderIndex, multisampleHeaderData);
-
- //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;
@@ -283,9 +274,7 @@
// add multisample header tails to header data object
this.setMultiSampleHeaders(headerData, multisampleHeaderIndex, multisampleHeaderData);
- //headerData.setMultisampleHeaders(multisampleHeaders);
-
- //this.checkSvtHeaders(headers);
+
}
}
@@ -297,12 +286,10 @@
lcsimEvent.put(SVT_HIT_COLLECTION_NAME, rawHits, RawTrackerHit.class, flag, READOUT_NAME);
- // Check that the SVT header data is valid
- this.checkSvtHeaders(headers);
-
- // Add SVT header data to the event
- this.addSvtHeadersToEvents(headers, lcsimEvent);
-
+ // Process SVT headers
+ this.processSvtHeaders(headers, lcsimEvent);
+
+
return true;
@@ -310,28 +297,50 @@
- protected abstract void checkSvtHeaders(List<SvtHeaderDataInfo> headers) throws SvtEvioHeaderException;
- protected abstract int extractMultisampleHeaderData(int[] samples, int i, int[] multisampleHeaderData);
- protected abstract void setMultiSampleHeaders(SvtHeaderDataInfo headerData, int max, int[] multisampleHeaders);
- protected abstract void extractMultisampleHeaderTail(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
- */
- protected abstract void checkSvtHeaderData(SvtHeaderDataInfo header) throws SvtEvioHeaderException;
-
+ protected abstract void processSvtHeaders(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent) throws SvtEvioHeaderException;
+
/**
* Extract the header information and store it in a {@link SvtHeaderDataInfo} object.
* @param num - bank num (ROC id)
* @param data - SVT data block.
* @return the {@link SvtHeaderDataInfo}.
*/
- protected abstract SvtHeaderDataInfo extractSvtHeader(int num, int[] data);
-
-
- protected abstract void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent);
+ 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);
+
+ }
+
+ protected int extractMultisampleHeaderData(int[] samples, int index, int[] multisampleHeaderData) {
+ logger.finest("extractMultisampleHeaderData: index " + index);
+ if( SvtEvioUtils.isMultisampleHeader(samples) && !SvtEvioUtils.isMultisampleTail(samples) ) {
+ logger.finest("extractMultisampleHeaderData: this is a multisample header so add the words to index " + index);
+ System.arraycopy(samples, 0, multisampleHeaderData, index, samples.length);
+ return samples.length;
+ } else {
+ logger.finest("extractMultisampleHeaderData: this is a NOT multisample header ");
+ return 0;
+ }
+ }
+
+ 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.");
+ }
+
+ protected void setMultiSampleHeaders(SvtHeaderDataInfo headerData, int n, int[] multisampleHeaders) {
+ //copy out the headers that are non-zero
+ int[] vals = new int[n];
+ System.arraycopy(multisampleHeaders, 0, vals, 0, n);
+ //logger.info("setMultiSampleHeaders: adding " + vals.length + " multisample headers");
+ headerData.setMultisampleHeaders(vals);
+ }
+
+
+
/**
* Make a {@link RawTrackerHit} from a set of samples.
Modified: java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/AugmentedSvtEvioReader.java Tue Oct 6 09:13:30 2015
@@ -25,19 +25,6 @@
}
-
-
- @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(logger.getLevel().intValue() >= Level.FINE.intValue()) {
@@ -57,9 +44,9 @@
}
logger.fine("checkSvtHeaderData passed all I guess");
}
-
- @Override
- protected void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent) {
+
+
+ protected void addSvtHeadersToEventEventCollection(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
@@ -67,43 +54,7 @@
}
- @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 n, int[] multisampleHeaders) {
- //copy out the headers that are non-zero
- int[] vals = new int[n];
- System.arraycopy(multisampleHeaders, 0, vals, 0, n);
- //logger.info("setMultiSampleHeaders: adding " + vals.length + " multisample headers");
- headerData.setMultisampleHeaders(vals);
- }
-
- @Override
- protected void extractMultisampleHeaderTail(int[] multisample, int index, int[] multisampleHeaders) {
- //logger.fine("extractMultisampleHeaderTail: index " + index);
- if( SvtEvioUtils.isMultisampleHeader(multisample) && !SvtEvioUtils.isMultisampleTail(multisample))
- multisampleHeaders[index] = SvtEvioUtils.getMultisampleTailWord(multisample);
- //else
- // logger.fine("extractMultisampleHeaderTail: this is a NOT multisample header at index " + index);
-
- }
-
- @Override
- protected int extractMultisampleHeaderData(int[] samples, int index, int[] multisampleHeaderData) {
- logger.finest("extractMultisampleHeaderData: index " + index);
- if( SvtEvioUtils.isMultisampleHeader(samples) && !SvtEvioUtils.isMultisampleTail(samples) ) {
- logger.finest("extractMultisampleHeaderData: this is a multisample header so add the words to index " + index);
- System.arraycopy(samples, 0, multisampleHeaderData, index, samples.length);
- return samples.length;
- } else {
- logger.finest("extractMultisampleHeaderData: this is a NOT multisample header ");
- return 0;
- }
- }
+
private String getMultisampleDebugString(SvtHeaderDataInfo headerDataInfo, int multisampleHeaderTailWord) {
String s = " header" + headerDataInfo.toString() +
@@ -126,7 +77,11 @@
- @Override
+ /**
+ * Check the integrity of the SVT header information.
+ * @param headers - headers to check
+ * @throws SvtEvioHeaderException
+ */
protected void checkSvtHeaders(List<SvtHeaderDataInfo> headers) throws SvtEvioHeaderException {
logger.fine("check " + headers.size() + " headers ");
int[] bufferAddresses = new int[6];
@@ -251,5 +206,35 @@
}
}
+
+ @Override
+ protected void processSvtHeaders(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent) throws SvtEvioHeaderException {
+ // Check that the SVT header data is valid
+ // Catch the exception locally, add stuff to the event, then throw it again
+ // and handle it outside
+ try {
+
+ this.checkSvtHeaders(headers);
+
+ } catch(SvtEvioHeaderException e) {
+
+ // add skimming flag
+ SvtEventFlagger.voidAddHeaderCheckResultToMetaData(false, lcsimEvent);
+
+ // add stuff to the event meta data
+ SvtEventFlagger.AddHeaderInfoToMetaData(headers, lcsimEvent);
+
+ // then throw the exception again to be caught in the event builder
+ throw new SvtEvioHeaderException(e);
+
+ }
+
+ // add skimming flag - the header is OK since I would never get here otherwise
+ SvtEventFlagger.voidAddHeaderCheckResultToMetaData(true, lcsimEvent);
+
+ // Add SVT header data to the event
+ //this.addSvtHeadersToEventEventCollection(headers, lcsimEvent);
+
+ }
}
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 Tue Oct 6 09:13:30 2015
@@ -146,10 +146,6 @@
LOGGER.log(Level.SEVERE, "Error making ECal hits.", e);
}
- //if(lcsimEvent.getEventNumber() >= 92296590){
- // LOGGER.info("lcsimEvent.getEventNumber() " + lcsimEvent.getEventNumber() + " set log level higher");
- // svtReader.logger.setLevel(Level.FINE);
- //}
// Make SVT RawTrackerHits.
try {
svtReader.makeHits(evioEvent, lcsimEvent);
@@ -179,7 +175,7 @@
} catch (final SvtEvioReaderException e) {
LOGGER.log(Level.SEVERE, "Error making SVT hits for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
} catch (final Exception e) {
- LOGGER.log(Level.SEVERE, "General error making SVT hits. I should handle this exception in some way", e);
+ LOGGER.log(Level.SEVERE, "General error making SVT hits.", e);
}
// Write the current EPICS data into this event.
Modified: java/trunk/evio/src/main/java/org/hps/evio/SvtEventFlagger.java
=============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/SvtEventFlagger.java (original)
+++ java/trunk/evio/src/main/java/org/hps/evio/SvtEventFlagger.java Tue Oct 6 09:13:30 2015
@@ -11,6 +11,7 @@
import org.hps.conditions.svt.SvtAlignmentConstant;
import org.hps.conditions.svt.SvtBiasConstant;
import org.hps.conditions.svt.SvtMotorPosition;
+import org.hps.record.svt.SvtHeaderDataInfo;
import org.hps.record.triggerbank.AbstractIntData;
import org.hps.record.triggerbank.HeadBankData;
import org.lcsim.conditions.ConditionsManager;
@@ -153,4 +154,33 @@
}
return true;
}
+
+ public static void voidAddHeaderCheckResultToMetaData(boolean ok, EventHeader lcsimEvent) {
+ //System.out.println("adding svt header check ");
+ lcsimEvent.getIntegerParameters().put("svt_event_header_good", new int[]{ ok ? 1 : 0});
+ //if(lcsimEvent.hasItem("svt_event_header_good"))
+ // System.out.println("event header has the svt header check ");
+ //else
+ // System.out.println("event header doesn't have the svt header check ");
+ }
+
+ public static void AddHeaderInfoToMetaData(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent) {
+ int[] svtHeaders = new int[headers.size()];
+ int[] svtTails = new int[headers.size()];
+ for(int iSvtHeader=0; iSvtHeader < headers.size();++iSvtHeader) {
+ svtHeaders[iSvtHeader] = headers.get(iSvtHeader).getHeader();
+ svtTails[iSvtHeader] = headers.get(iSvtHeader).getTail();
+ int nMS = headers.get(iSvtHeader).getNumberOfMultisampleHeaders();
+ int[] multisampleHeadersArray = new int[4*nMS];
+ for(int iMS = 0; iMS < nMS; ++iMS ) {
+ int[] multisampleHeader = headers.get(iSvtHeader).getMultisampleHeader(iMS);
+ System.arraycopy(multisampleHeader, 0, multisampleHeadersArray, iMS*4, multisampleHeader.length);
+ }
+ lcsimEvent.getIntegerParameters().put("svt_multisample_headers_roc" + headers.get(iSvtHeader).getNum(), multisampleHeadersArray);
+ }
+ lcsimEvent.getIntegerParameters().put("svt_event_headers", svtHeaders);
+ lcsimEvent.getIntegerParameters().put("svt_event_tails", svtTails);
+
+
+ }
}
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 Tue Oct 6 09:13:30 2015
@@ -208,53 +208,13 @@
return makeHit(data, SvtEvioUtils.getPhysicalChannelNumber(data));
}
- @Override
- protected void addSvtHeadersToEvents(List<SvtHeaderDataInfo> headers,
- EventHeader lcsimEvent) {
-
- }
-
- @Override
- protected void checkSvtHeaderData(SvtHeaderDataInfo header)
+
+ @Override
+ protected void processSvtHeaders(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent)
throws SvtEvioHeaderException {
- }
-
- @Override
- protected SvtHeaderDataInfo extractSvtHeader(int num, int[] data) {
- return null;
- }
-
- @Override
- protected void checkSvtSampleCount(int sampleCount,
- SvtHeaderDataInfo headerData) throws SvtEvioHeaderException {
- }
-
- @Override
- protected void setMultiSampleHeaders(SvtHeaderDataInfo headerData,
- int max, int[] multisampleHeaders) {
// TODO Auto-generated method stub
}
-
- @Override
- protected void extractMultisampleHeaderTail(int[] multisample, int index,
- int[] multisampleHeaders) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- protected int extractMultisampleHeaderData(int[] samples, int i,
- int[] multisampleHeaderData) {
- return 0;
-
- }
-
- @Override
- protected void checkSvtHeaders(List<SvtHeaderDataInfo> headers) throws SvtEvioHeaderException {
- // 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 Tue Oct 6 09:13:30 2015
@@ -165,63 +165,15 @@
return makeHit(data, SvtEvioUtils.getTestRunChannelNumber(data));
}
+
@Override
- protected SvtHeaderDataInfo extractSvtHeader(int num, int[] data) {
- // TODO Auto-generated method stub
- return null;
- }
-
- @Override
- protected void checkSvtHeaderData(SvtHeaderDataInfo header)
+ protected void processSvtHeaders(List<SvtHeaderDataInfo> headers, EventHeader lcsimEvent)
throws SvtEvioHeaderException {
// TODO Auto-generated method stub
}
- @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 max, int[] multisampleHeaders) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- protected void extractMultisampleHeaderTail(int[] multisample, int index,
- int[] multisampleHeaders) {
- // TODO Auto-generated method stub
-
- }
-
- @Override
- protected int extractMultisampleHeaderData(int[] samples, int i,
- int[] multisampleHeaderData) {
- return 0;
-
- }
-
- @Override
- protected void checkSvtHeaders(List<SvtHeaderDataInfo> headers) {
- // TODO Auto-generated method stub
-
- }
-
-
-
}
|