@@ -20,9 +20,12 @@ public class BackgroundEngine extends ReconstructionEngine {
2020 public static final String CONF_ORDERS = "orders" ;
2121 public static final String CONF_SUPPRESS_DOUBLES = "suppressDoubles" ;
2222 public static final String CONF_PRESERVE_ORDER = "preserveOrder" ;
23+ public static final String CONF_REUSE_EVENTS = "reuseEvents" ;
2324
2425 static final Logger logger = Logger .getLogger (BackgroundEngine .class .getName ());
2526
27+ int filesUsed = 0 ;
28+ boolean reuseEvents = true ;
2629 EventMerger bgmerger = null ;
2730 HipoDataSource bgreader = null ;
2831 LinkedList <String > bgfilenames = new LinkedList <>();
@@ -40,6 +43,11 @@ public boolean init() {
4043
4144 public boolean init (String ... filenames ) {
4245 bgfilenames .clear ();
46+ String detectors = getEngineConfigString (CONF_DETECTORS ,"DC,FTOF" );
47+ String orders = getEngineConfigString (CONF_ORDERS ,"NOMINAL" );
48+ boolean suppressDoubles = Boolean .valueOf (getEngineConfigString (CONF_SUPPRESS_DOUBLES ,"true" ));
49+ boolean preserveOrder = Boolean .valueOf (getEngineConfigString (CONF_PRESERVE_ORDER ,"true" ));
50+ boolean reuseEvents = Boolean .valueOf (getEngineConfigString (CONF_REUSE_EVENTS ,"false" ));
4351 for (String filename : filenames ) {
4452 File f = new File (filename );
4553 if (!f .exists () || !f .isFile () || !f .canRead ()) {
@@ -49,20 +57,21 @@ public boolean init(String... filenames) {
4957 logger .log (Level .INFO ,"BackgroundEngine:: reading {0}" ,filename );
5058 bgfilenames .add (filename );
5159 }
52- String detectors = getEngineConfigString (CONF_DETECTORS ,"DC,FTOF" );
53- String orders = getEngineConfigString (CONF_ORDERS ,"NOMINAL" );
54- Boolean suppressDoubles = Boolean .valueOf (getEngineConfigString (CONF_SUPPRESS_DOUBLES ,"true" ));
55- Boolean preserveOrder = Boolean .valueOf (getEngineConfigString (CONF_PRESERVE_ORDER ,"true" ));
5660 bgmerger = new EventMerger (detectors .split ("," ), orders .split ("," ), suppressDoubles , preserveOrder );
5761 openNextFile ();
5862 return true ;
5963 }
6064
6165 private void openNextFile () {
66+ if (filesUsed >0 && filesUsed %bgfilenames .size ()==0 ) {
67+ if (reuseEvents ) logger .info ("BackgroundEngine:: Reopening previously used file." );
68+ else throw new RuntimeException ("BackgroundEngine:: Ran out of events." );
69+ }
6270 String filename = bgfilenames .remove ();
6371 bgfilenames .add (filename );
6472 bgreader = new HipoDataSource ();
6573 bgreader .open (filename );
74+ filesUsed ++;
6675 }
6776
6877 synchronized public DataEvent getBackgroundEvent () {
0 commit comments