Author: [log in to unmask] Date: Tue Dec 16 15:30:36 2014 New Revision: 1763 Log: Okay fix maxEvents so it actually does work correctly. 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 Tue Dec 16 15:30:36 2014 @@ -49,14 +49,14 @@ * <p> * This class attempts to automatically configure itself for Test Run or Engineering Run * based on the run numbers in the EVIO file. It will use an appropriate default detector - * unless one is given on the command line, and it will also use the correct event builder. - * However, it will NOT correctly handle a mixed list of EVIO files from both runs, so - * don't do this! + * unless one is given on the command line, and it will also use the correct event builder. + * It will not handle jobs correctly with files from both the Test and Engineering Run + * so don't do this! * * @author Jeremy McCormick <[log in to unmask]> + * @author Sho Uemura <[log in to unmask]> */ public class EvioToLcio { - // The default steering resource, which basically does nothing except print event numbers. private static final String DEFAULT_STEERING_RESOURCE = "/org/hps/steering/EventMarker.lcsim"; @@ -107,7 +107,7 @@ */ public void run(String[] args) { - int maxEvents = 0; + int maxEvents = -1; int nEvents = 0; // Set up command line parsing. @@ -201,8 +201,11 @@ } // Get the max number of events to process. - if (cl.hasOption("n")) { + if (cl.hasOption("n")) { maxEvents = Integer.valueOf(cl.getOptionValue("n")); + if (maxEvents <= 0) { + throw new IllegalArgumentException("Value of -n option is invalid: " + maxEvents); + } logger.config("set max events to " + maxEvents); } @@ -308,7 +311,7 @@ long time = 0; // in ms // Loop over EVIO events, build LCSim events, process them, and then write events to disk. - readLoop: while (maxEvents == 0 || nEvents < maxEvents) { + readLoop: while (maxEvents == -1 || nEvents < maxEvents) { EvioEvent evioEvent = null; try { while (evioEvent == null) { @@ -406,8 +409,8 @@ e.printStackTrace(); } - if (nEvents >= maxEvents) { - logger.info("user maxEvents " + maxEvents + " was reached"); + if (maxEvents != -1 && nEvents < maxEvents) { + logger.info("maxEvents " + maxEvents + " was reached"); break fileLoop; } }