Print

Print


Author: [log in to unmask]
Date: Fri Oct  2 16:25:07 2015
New Revision: 3755

Log:
yeah ok. runtime exc gone

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

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	Fri Oct  2 16:25:07 2015
@@ -41,8 +41,9 @@
 
     
     // Initialize the logger
-    protected static Logger logger = LogUtil.create(AbstractSvtEvioReader.class.getName(), new BasicLogFormatter(), Level.INFO);
-
+    protected static Level logLevel = Level.INFO;
+    public static Logger logger = LogUtil.create(AbstractSvtEvioReader.class.getName(), new BasicLogFormatter(), Level.INFO);
+    
     // A Map from DAQ pair (FPGA/Hybrid or FEB ID/FEB Hybrid ID) to the
     // corresponding sensor
     protected Map<Pair<Integer /* FPGA */, Integer /* Hybrid */>,

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	Fri Oct  2 16:25:07 2015
@@ -21,12 +21,12 @@
      * 
      */
     public AugmentedSvtEvioReader() {
-     super();
-    }
-    
-    
-    
-    
+        super();
+    }
+
+
+
+
     @Override
     protected SvtHeaderDataInfo extractSvtHeader(int num, int[] data) {
         // Extract the header information
@@ -34,7 +34,7 @@
         // Extract the tail information
         int svtTail = SvtEvioUtils.getSvtTail(data);
         return new SvtHeaderDataInfo(num, svtHeader, svtTail);
-        
+
     }
 
     @Override
@@ -47,25 +47,25 @@
             logger.fine("checkSvtHeaderData skipcount  " +  Integer.toHexString(SvtEvioUtils.getSvtTailMultisampleSkipCount(tail)));
         }
         if( SvtEvioUtils.getSvtTailSyncErrorBit(tail) != 0) {
-            throw new SvtEvioHeaderApvBufferAddressException("This SVT header had a SyncError");
+            throw new SvtEvioHeaderApvBufferAddressException("This SVT header had a SyncError " + header.toString());
         }
         else if( SvtEvioUtils.getSvtTailOFErrorBit(tail) != 0) {
-            throw new SvtEvioHeaderOFErrorException("This header had a OverFlowError");
+            throw new SvtEvioHeaderOFErrorException("This header had a OverFlowError " + header.toString());
         }
         else if( SvtEvioUtils.getSvtTailMultisampleSkipCount(tail) != 0) {
-            throw new SvtEvioHeaderSkipCountException("This header had a skipCount " + SvtEvioUtils.getSvtTailMultisampleSkipCount(tail) + " error");
+            throw new SvtEvioHeaderSkipCountException("This header had a skipCount " + SvtEvioUtils.getSvtTailMultisampleSkipCount(tail) + " error " + header.toString());
         }
         logger.fine("checkSvtHeaderData passed all I guess");
     }
-    
+
     @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);
-
-}
+        // 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 {
@@ -81,30 +81,51 @@
         //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);
-        
-    }
-    
+        //else 
+        //   logger.fine("extractMultisampleHeaderTail: this is a NOT multisample header at index " + index);
+
+    }
+
     @Override
     protected int extractMultisampleHeaderData(int[] samples, int index, int[] multisampleHeaderData) {
-        logger.fine("extractMultisampleHeaderData: index " + index);
+        logger.finest("extractMultisampleHeaderData: index " + index);
         if( SvtEvioUtils.isMultisampleHeader(samples) && !SvtEvioUtils.isMultisampleTail(samples) ) {
-            logger.fine("extractMultisampleHeaderData: this is a multisample header so add the words to index " + index);
+            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.fine("extractMultisampleHeaderData: this is a NOT multisample header ");
+            logger.finest("extractMultisampleHeaderData: this is a NOT multisample header ");
             return 0;
         }
     }
     
+    private String getMultisampleDebugString(SvtHeaderDataInfo headerDataInfo, int multisampleHeaderTailWord) {
+        String s = " header" + headerDataInfo.toString() +
+                " multisample: feb " + SvtEvioUtils.getFebIDFromMultisampleTail(multisampleHeaderTailWord) + 
+                " hybrid " + SvtEvioUtils.getFebHybridIDFromMultisampleTail(multisampleHeaderTailWord) + 
+                " apv " + SvtEvioUtils.getApvFromMultisampleTail(multisampleHeaderTailWord);
+        return s;
+    }
+    
+    private String getDebugString(int[] bufAddresses, int[] frameCounts, int[] readError ) {
+        String s = "";
+        for (int i=0; i<bufAddresses.length; ++i)
+            s+="\nbuffer address " + i + "  " + bufAddresses[i]  + " ( " + Integer.toHexString( bufAddresses[i]) + " )";
+        for (int i=0; i<frameCounts.length; ++i) 
+            s+="\nframe count    " + i + "  " + frameCounts[i]  + " ( " + Integer.toHexString( frameCounts[i]) + " )";
+        for (int i=0; i<readError.length; ++i) 
+            s+="\nread error     " + i + "  " + readError[i]  + " ( " + Integer.toHexString( readError[i]) + " )";
+        return s;
+    }
+    
+    
+
     @Override
     protected void checkSvtHeaders(List<SvtHeaderDataInfo> headers) throws SvtEvioHeaderException {
         logger.fine("check " + headers.size() + " headers  ");
@@ -119,30 +140,28 @@
         int multisampleHeaderTailerrorBit;
         for( SvtHeaderDataInfo headerDataInfo : headers ) {
             logger.fine("checking header: " + headerDataInfo.toString());
-            
-            
+
+
             // Check the header data
             this.checkSvtHeaderData(headerDataInfo);
-            
+
             int nMultisampleHeaders = headerDataInfo.getNumberOfMultisampleHeaders();
             for(int iMultisampleHeader = 0; iMultisampleHeader < nMultisampleHeaders; iMultisampleHeader++) {
                 logger.fine("iMultisampleHeader " + iMultisampleHeader);
-                
+
                 multisampleHeader = SvtHeaderDataInfo.getMultisampleHeader(iMultisampleHeader, headerDataInfo);
-                
-                // get multisample tail error bit and check it
+
+                // get multisample tail error bit
                 multisampleHeaderTailerrorBit = SvtEvioUtils.getErrorBitFromMultisampleHeader(SvtEvioUtils.getMultisampleTailWord(multisampleHeader));
-                logger.fine("multisampleHeaderTailerrorBit " + multisampleHeaderTailerrorBit + " from multisampleHeaderTail " + SvtEvioUtils.getMultisampleTailWord(multisampleHeader) + " ( " + Integer.toHexString( SvtEvioUtils.getMultisampleTailWord(multisampleHeader) ) + " )");
-                if( multisampleHeaderTailerrorBit != 0) 
-                    throw new SvtEvioHeaderMultisampleErrorBitException("This multisampleheader had the error bit set.");
-                
                 
                 // get buffer addresses
                 bufAddresses = SvtEvioUtils.getApvBufferAddresses(multisampleHeader);
-                
+
                 // get frame counts
                 frameCounts = SvtEvioUtils.getApvFrameCount(multisampleHeader);
 
+                // check if there was any read errors
+                readError = SvtEvioUtils.getApvReadErrors(multisampleHeader);
 
                 if( bufAddresses.length != 6)
                     throw new SvtEvioHeaderApvBufferAddressException("Invalid number of APV buffer addresses.");
@@ -150,80 +169,76 @@
                 if( frameCounts.length != 6)
                     throw new SvtEvioHeaderApvFrameCountException("Invalid number of APV frame counts.");
 
+                if( readError.length != 6)
+                    throw new SvtEvioHeaderApvFrameCountException("Invalid number of read errors.");
+
+                // Check for error bit
+                if( multisampleHeaderTailerrorBit != 0) {
+                    throw new SvtEvioHeaderMultisampleErrorBitException("A multisample header error bit was set for " + 
+                                                                        this.getMultisampleDebugString(headerDataInfo, SvtEvioUtils.getMultisampleTailWord(multisampleHeader)) + 
+                                                                        this.getDebugString(bufAddresses, frameCounts, readError)); 
+                }
+
+                // print debug
                 if(logger.getLevel().intValue() >= Level.FINE.intValue()) {
-                    for (int i=0; i<bufAddresses.length; ++i) {
-                        logger.fine("buffer address " + i + "  " + bufAddresses[i]  + " ( " + Integer.toHexString( bufAddresses[i]) + " )");
-                    }
-                    for (int i=0; i<frameCounts.length; ++i) {
-                        logger.fine("frame count   " + i + "  " + frameCounts[i]  + " ( " + Integer.toHexString( frameCounts[i]) + " )");
-                    }
+                    logger.fine(this.getMultisampleDebugString(headerDataInfo, SvtEvioUtils.getMultisampleTailWord(multisampleHeader)) + 
+                                this.getDebugString(bufAddresses, frameCounts, readError));
                 }
 
                 // Get a reference for comparison 
                 if(firstHeader) {
-                    
+
                     System.arraycopy(bufAddresses, 0, bufferAddresses, 0, bufAddresses.length); 
-                    
+
                     System.arraycopy(frameCounts, 0, firstFrameCounts, 0, frameCounts.length); 
-                                        
+
                     firstHeader = false;
                 }
                 else {
-                    
+
                     // Check that apv buffer addresses match
                     if( !Arrays.equals(bufferAddresses, bufAddresses)) {
-                        for (int i=0; i<bufAddresses.length; ++i) {
-                            logger.info("buffer address " + i + "  " + bufAddresses[i]  + " ( " + Integer.toHexString( bufAddresses[i]) + " )");
-                        }
-                        for (int i=0; i<bufferAddresses.length; ++i) {
-                            logger.info("ref buffer address " + i + "  " + bufferAddresses[i]  + " ( " + Integer.toHexString( bufferAddresses[i]) + " )");
-                        }
-                        throw new SvtEvioHeaderApvBufferAddressException("The APV buffer addresses in this event do not match!");
-                    }
-                    
+                        throw new SvtEvioHeaderApvBufferAddressException("The APV buffer addresses in this event do not match " + 
+                                                                            this.getMultisampleDebugString(headerDataInfo, SvtEvioUtils.getMultisampleTailWord(multisampleHeader)) +
+                                                                            this.getDebugString(bufAddresses, frameCounts, readError)); 
+                    }
+
                     // Check that apv frame count match
                     if( !Arrays.equals(firstFrameCounts, frameCounts)) {
-                        for (int i=0; i<frameCounts.length; ++i) {
-                            logger.info("frame count " + i + "  " + frameCounts[i]  + " ( " + Integer.toHexString( frameCounts[i]) + " )");
-                        }
-                        for (int i=0; i<firstFrameCounts.length; ++i) {
-                            logger.info("ref frame count " + i + "  " + firstFrameCounts[i]  + " ( " + Integer.toHexString( firstFrameCounts[i]) + " )");
-                        }
-                        throw new SvtEvioHeaderApvFrameCountException("The APV frame counts in this event do not match!");
+                        throw new SvtEvioHeaderApvFrameCountException("The APV frame counts in this event do not match " + 
+                                this.getMultisampleDebugString(headerDataInfo, SvtEvioUtils.getMultisampleTailWord(multisampleHeader)) +
+                                this.getDebugString(bufAddresses, frameCounts, readError)); 
                     }
                 }
 
                 // Check that the APV frame counts are incrementing
                 // remember to take into account the 2-bit rollover (duh!)
-                
+
                 count = -1;
-                for (int i=0; i<frameCounts.length; ++i) {
-                    logger.fine("frame count " + i + "  " + frameCounts[i]  + " ( " + Integer.toHexString( frameCounts[i]) + " )");
-
-                    if( frameCounts[i] > 15 ) 
-                        throw new SvtEvioHeaderApvFrameCountException("Frame count " + frameCounts[i] + " is larger than 2-bit number?");
-
-                    if( (count < 15 && frameCounts[i] < count) || ( count == 15 && frameCounts[i] != 0 ) ) {
-                        //logger.severe("Frame count " + frameCounts[i] + " was not increasing compared to previous " + count + " for APV " + i);
-                        throw new SvtEvioHeaderApvFrameCountException("Frame count " + frameCounts[i] + " was not increasing compared to previous " + count + " for index " + i + " ( tailword: " + Integer.toHexString( SvtEvioUtils.getMultisampleTailWord(multisampleHeader) ) + " )");
-                    }
-                    count = frameCounts[i];
-                }
-
-                
-                // check if there was any read errors
-                readError = SvtEvioUtils.getApvReadErrors(multisampleHeader);
-                
-                for (int i=0; i<readError.length; ++i) {
-                    logger.fine("i " + i + "  " + readError[i]  + " ( " + Integer.toHexString( readError[i]) + " )");
-                    if( readError[i] != 1)  // active low
-                        throw new SvtEvioHeaderApvReadErrorException("Read error for apv " + i);
-                }
-                
-                
+                for (int iFrame=0; iFrame<frameCounts.length; ++iFrame) {
+                    logger.fine("frame count " + iFrame + "  " + frameCounts[iFrame]  + " ( " + Integer.toHexString( frameCounts[iFrame]) + " )");
+
+                    if( frameCounts[iFrame] > 15  ||  (count < 15 && frameCounts[iFrame] < count) || ( count == 15 && frameCounts[iFrame] != 0 ) ) {
+                        throw new SvtEvioHeaderApvFrameCountException("The APV frame counts in this events are invalid " + 
+                                this.getMultisampleDebugString(headerDataInfo, SvtEvioUtils.getMultisampleTailWord(multisampleHeader)) +
+                                this.getDebugString(bufAddresses, frameCounts, readError)); 
+                    }
+                    count = frameCounts[iFrame];
+                }
+
+                for (int iReadError=0; iReadError<readError.length; ++iReadError) {
+                    logger.fine("read error " + iReadError + "  " + readError[iReadError]  + " ( " + Integer.toHexString( readError[iReadError]) + " )");
+                    if( readError[iReadError] != 1)  {// active low
+                        throw new SvtEvioHeaderApvReadErrorException("Read error occurred " + 
+                                this.getMultisampleDebugString(headerDataInfo, SvtEvioUtils.getMultisampleTailWord(multisampleHeader)) +
+                                this.getDebugString(bufAddresses, frameCounts, readError)); 
+                    }
+                }
+
+
             } // multisampleheaders
         }
-        
-    }
-    
+
+    }
+
 }

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	Fri Oct  2 16:25:07 2015
@@ -145,32 +145,36 @@
         } catch (final Exception e) {
             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);
         } catch (final SvtEvioHeaderMultisampleErrorBitException e) {
-            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT. Stop!", e);
-            throw new RuntimeException(e);
+            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
+            //throw new RuntimeException(e);
         } catch (final SvtEvioHeaderSkipCountException e) {
-            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT. Stop!", e);
-            throw new RuntimeException(e);
+            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
+            //throw new RuntimeException(e);
         } catch (final SvtEvioHeaderOFErrorException e) {
-            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT. Stop!", e);
-            throw new RuntimeException(e);
+            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
+            //throw new RuntimeException(e);
         } catch (final SvtEvioHeaderApvBufferAddressException e) {
-            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT. Stop!", e);
-            throw new RuntimeException(e);
+            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
+            //throw new RuntimeException(e);
         } catch (final SvtEvioHeaderApvFrameCountException e) {
-            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT. Stop!", e);
-            throw new RuntimeException(e);
+            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
+            //throw new RuntimeException(e);
         } catch (final SvtEvioHeaderApvReadErrorException e) {
-            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT. Stop!", e);
-            throw new RuntimeException(e);
+            LOGGER.log(Level.SEVERE, "Error reading header information from the SVT for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
+            //throw new RuntimeException(e);
         } catch (final SvtEvioHeaderException e) {
-            LOGGER.log(Level.SEVERE, "General error reading header information from the SVT. Don't stop", e);
+            LOGGER.log(Level.SEVERE, "Generic  error reading header information from the SVT for run " + lcsimEvent.getRunNumber() + " event " + lcsimEvent.getEventNumber() + ". Don't stop!", e);
         } catch (final SvtEvioReaderException e) {
-            LOGGER.log(Level.SEVERE, "Error making SVT hits.", 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);
         }