Skip to content

Commit 4d4366a

Browse files
committed
add no-reuse-events option for background merging
1 parent e4ebfd2 commit 4d4366a

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

reconstruction/bg/src/main/java/org/jlab/service/bg/BackgroundEngine.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)