Print

Print


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
-        
-    }
     
-    
-
- 
 
     
 }