LISTSERV mailing list manager LISTSERV 16.5

Help for HPS-SVN Archives


HPS-SVN Archives

HPS-SVN Archives


HPS-SVN@LISTSERV.SLAC.STANFORD.EDU


View:

Message:

[

First

|

Previous

|

Next

|

Last

]

By Topic:

[

First

|

Previous

|

Next

|

Last

]

By Author:

[

First

|

Previous

|

Next

|

Last

]

Font:

Proportional Font

LISTSERV Archives

LISTSERV Archives

HPS-SVN Home

HPS-SVN Home

HPS-SVN  August 2016

HPS-SVN August 2016

Subject:

r4443 - /java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java

From:

[log in to unmask]

Reply-To:

Notification of commits to the hps svn repository <[log in to unmask]>

Date:

Thu, 4 Aug 2016 22:06:55 -0000

Content-Type:

text/plain

Parts/Attachments:

Parts/Attachments

text/plain (238 lines)

Author: [log in to unmask]
Date: Thu Aug  4 15:06:51 2016
New Revision: 4443

Log:
[HPSJAVA-693][HPSJAVA-692][HPSJAVA-694] Enable event marker printing; add skip event parameter; remove log level setting from command switch.

Modified:
    java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java

Modified: java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java
 =============================================================================
--- java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java	(original)
+++ java/trunk/evio/src/main/java/org/hps/evio/EvioToLcio.java	Thu Aug  4 15:06:51 2016
@@ -25,11 +25,11 @@
 import org.freehep.record.source.NoSuchRecordException;
 import org.hps.conditions.database.DatabaseConditionsManager;
 import org.hps.job.JobManager;
+import org.hps.rundb.RunManager;
 import org.hps.logging.config.DefaultLoggingConfig;
 import org.hps.record.LCSimEventBuilder;
 import org.hps.record.evio.EvioEventQueue;
 import org.hps.record.evio.EvioEventUtilities;
-import org.hps.rundb.RunManager;
 import org.jlab.coda.jevio.BaseStructure;
 import org.jlab.coda.jevio.EvioEvent;
 import org.jlab.coda.jevio.EvioException;
@@ -57,14 +57,14 @@
  * the correct event builder. It will not handle jobs correctly with files from both the Test and Engineering Run, so
  * don't do this!
  * <p>
- * The conditions system can be initialized in one of three ways.<br/>
+ * The run number in the conditions system can be initialized in one of three ways.<br/>
  * <ol>
  * <li>user specified run number in which case the conditions system is frozen for the rest of the job</li>
- * <li>run number from an EVIO pre start event</li>
- * <li>run number from a header bank in an event</li>
+ * <li>run number from an EVIO PRESTART event</li>
+ * <li>run number from a header bank in a physics event</li>
  * </ol>
  * <p>
- * In the case where a file has no pre start event and there are header banks present, the "-m" command line option can
+ * In the case where a file has no PRESTART event and there are header banks present, the "-m" command line option can
  * be used to buffer a number of EVIO events. If there is a head bank found while adding these events to queue, the
  * conditions system will be initialized from it.
  *
@@ -117,7 +117,6 @@
         OPTIONS.addOption(new Option("d", true, "detector name (required)"));
         OPTIONS.getOption("d").setRequired(true);
         OPTIONS.addOption(new Option("f", true, "text file containing a list of EVIO files"));
-        OPTIONS.addOption(new Option("L", true, "log level (INFO, FINE, etc.)"));
         OPTIONS.addOption(new Option("x", true, "LCSim steeering file for processing the LCIO events"));
         OPTIONS.addOption(new Option("r", false, "interpret steering from -x argument as a resource instead of a file"));
         OPTIONS.addOption(new Option("D", true, "define a steering file variable with format -Dname=value"));
@@ -129,16 +128,19 @@
         OPTIONS.addOption(new Option("m", true, "set the max event buffer size"));
         OPTIONS.addOption(new Option("t", true, "specify a conditions tag to use"));
         OPTIONS.addOption(new Option("M", false, "use memory mapping instead of sequential reading"));
+        OPTIONS.addOption(new Option("s", true, "skip a number of events in each EVIO input file before starting"));
+        OPTIONS.addOption(new Option("e", true, "event printing interval"));
     }
 
     /**
      * The run number for conditions.
-     */
-    private Integer runNumber = null;
-
+     */    
+    private int nEvents = 0;
     private int maxEvents = -1;
-    private int nEvents = 0;
+    private int skipEvents = 0;
     private int maxBufferSize = 40;
+    private Long eventPrintInterval;
+    private Integer runNumber = null;    
     private List<String> evioFileList = null;
     private boolean printXml = false;
     private boolean useMemoryMapping = false;
@@ -146,6 +148,7 @@
     private String lcioFileName = null;
     private LCIOWriter writer = null;
     private InputStream steeringStream = null;
+    
 
     /**
      * The default constructor, which defines command line arguments and sets the default log level.
@@ -267,19 +270,6 @@
         
         if (cl.hasOption("h")) {
             this.printUsage();
-        }
-
-        // Set the log level.
-        // TODO: Remove this argument; use java logging prop instead.
-        if (cl.hasOption("L")) {
-            final Level level = Level.parse(cl.getOptionValue("L").toUpperCase());
-
-            // Set log level on this class.
-            LOGGER.config("setting log level to " + level);
-            LOGGER.setLevel(level);
-
-            // Set log level on conditions manager.
-            Logger.getLogger(DatabaseConditionsManager.class.getPackage().getName()).setLevel(level);
         }
 
         // Add all extra arguments to the EVIO file list.
@@ -381,6 +371,20 @@
         // Enable dry run because events will be processed individually.
         jobManager.setDryRun(true);
         
+        // Event marker printing from command line arg.
+        if (cl.hasOption("e")) {
+            eventPrintInterval = Long.parseLong(cl.getOptionValue("e"));
+            jobManager.setEventPrintInterval(eventPrintInterval);
+            LOGGER.config("Set event print interval to " + this.eventPrintInterval);
+        }
+        
+        // Enable headless mode so no plots are shown.
+        if (cl.hasOption("b")) {
+            LOGGER.config("Headless mode is enabled.  No plots will be shown.");
+            jobManager.enableHeadlessMode();
+        }
+        
+        // Set a steering variable and value using "key=value" format.
         if (cl.hasOption("D")) {
             final String[] steeringOptions = cl.getOptionValues("D");
             for (final String def : steeringOptions) {
@@ -397,12 +401,6 @@
             }
         }
 
-        // Enable headless mode so no plots are shown.
-        if (cl.hasOption("b")) {
-            LOGGER.config("Headless mode is enabled.  No plots will be shown.");
-            jobManager.enableHeadlessMode();
-        }
-
         // Configure the LCSim job manager.
         jobManager.setup(steeringStream);
         jobManager.configure();
@@ -453,10 +451,17 @@
             LOGGER.config("max event buffer size set to " + maxBufferSize);
         }
 
+        // memory mapping
         if (cl.hasOption("M")) {
             useMemoryMapping = true;
             LOGGER.config("EVIO reader memory mapping is enabled.");
         }
+        
+        // skip events
+        if (cl.hasOption("s")) {
+            skipEvents = Integer.parseInt(cl.getOptionValue("s"));
+            LOGGER.config("Skip events set to " + skipEvents);
+        }        
     }
 
     /**
@@ -492,10 +497,28 @@
 
             boolean firstEvent = true;
             long eventTime = 0; // in ms
+            
+            // Skip some events in each file first if requested.
+            if (skipEvents > 0) {
+                LOGGER.info("Skipping " + skipEvents + " events ...");
+                for (int i = 0; i < skipEvents; i++) {
+                    try {
+                        EvioEvent event = reader.nextEvent();
+                        if (event == null) {
+                            LOGGER.log(Level.WARNING, "Got null event object when skipping event num " + i);
+                            //throw new RuntimeException("Got null event object when skipping events.");
+                        }
+                    } catch (EvioException | IOException e) { /* error when skipping events */
+                        LOGGER.log(Level.SEVERE, e.getMessage(), e);
+                        throw new RuntimeException(e); // Stop the job.
+                    }
+                }
+                LOGGER.info("Done skipping events.");
+            }
 
             // Loop over events.
             final EvioEventQueue eventQueue = new EvioEventQueue(-1L, maxBufferSize);
-            eventLoop: for (;;) {
+            eventLoop: for (;;) {                
 
                 // Buffer the EVIO events into the queue.
                 this.bufferEvents(reader, eventQueue, maxBufferSize);
@@ -539,7 +562,7 @@
                         LOGGER.info(evioEvent.toXML());
                     }
 
-                    // Is this a pre start event?
+                    // Is this a PRESTART event?
                     if (EvioEventUtilities.isPreStartEvent(evioEvent)) {
 
                         LOGGER.info("got PRESTART event");
@@ -549,14 +572,14 @@
 
                         if (data == null) {
                             // This should never happen but just ignore it.
-                            LOGGER.severe("Pre start event is missing a data bank.");
+                            LOGGER.severe("PRESTART event is missing a data bank.");
                         } else {
                             // Check if conditions system needs to be updated from the pre start data.
                             this.checkConditions(data[1], false);
                         }
                     }
 
-                    // Is this an end event?
+                    // Is this an END event?
                     if (EvioEventUtilities.isEndEvent(evioEvent)) {
                         
                         LOGGER.info("got END event");
@@ -564,11 +587,11 @@
                         final int[] data = EvioEventUtilities.getControlEventData(evioEvent);
                         if (data == null) {
                             // This should never happen but just ignore it.
-                            LOGGER.severe("The end event is missing a data bank.");
+                            LOGGER.severe("The END event is missing a data bank.");
                         } else {
                             final int seconds = data[0];
                             final int totalEvents = data[2];
-                            LOGGER.info("EVIO end event with " + totalEvents + " events and " + seconds + " seconds");
+                            LOGGER.info("EVIO END event with " + totalEvents + " events and " + seconds + " seconds");
                         }
                     }
 
@@ -583,7 +606,7 @@
 
                         // Print physics event number, which is actually a sequence number from
                         // the reader, not the actual event number from the data.
-                        LOGGER.finer("got physics event " + evioEvent.getEventNumber());
+                        LOGGER.finer("got physics event number " + evioEvent.getEventNumber());
 
                         // Is the event builder initialized?
                         if (eventBuilder == null) {

Top of Message | Previous Page | Permalink

Advanced Options


Options

Log In

Log In

Get Password

Get Password


Search Archives

Search Archives


Subscribe or Unsubscribe

Subscribe or Unsubscribe


Archives

November 2017
August 2017
July 2017
January 2017
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
December 2013
November 2013

ATOM RSS1 RSS2



LISTSERV.SLAC.STANFORD.EDU

Secured by F-Secure Anti-Virus CataList Email List Search Powered by the LISTSERV Email List Manager

Privacy Notice, Security Notice and Terms of Use