Author: [log in to unmask]
Date: Thu Aug 27 16:39:35 2015
New Revision: 3423
Log:
check for and reject events with weird time offsets
Modified:
java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java
Modified: java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java
=============================================================================
--- java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java (original)
+++ java/trunk/record-util/src/main/java/org/hps/record/triggerbank/TiTimeOffsetEvioProcessor.java Thu Aug 27 16:39:35 2015
@@ -7,15 +7,21 @@
/**
* Extract trigger time offset from EVIO data.
- *
+ *
* @author Sho Uemura <[log in to unmask]>
*/
public class TiTimeOffsetEvioProcessor extends EvioEventProcessor {
private final IntBankDefinition headBankDefinition;
private final IntBankDefinition tiBankDefinition;
+
+ private final double minRange = 0.99e9;
+ private final double maxRange = 1.1e9;
+ private final int maxOutliers = 10;
+
private long minOffset = 0;
private long maxOffset = 0;
+ private int nOutliers = 0;
public TiTimeOffsetEvioProcessor() {
headBankDefinition = new IntBankDefinition(HeadBankData.class, new int[]{0x2e, 0xe10f});
@@ -33,18 +39,26 @@
if (thisTimestamp != 0) {
long offset = thisTimestamp * 1000000000L - tiData.getTime();
if (minOffset == 0 || minOffset > offset) {
- minOffset = offset;
+ if (maxOffset - offset < maxRange) {
+ minOffset = offset;
+ } else {
+ nOutliers++;
+ }
}
if (maxOffset == 0 || maxOffset < offset) {
- maxOffset = offset;
+ if (offset - minOffset < maxRange) {
+ maxOffset = offset;
+ } else {
+ nOutliers++;
+ }
}
}
}
}
-
+
public void updateTriggerConfig(TriggerConfigInt triggerConfig) {
long offsetRange = maxOffset - minOffset;
- if (offsetRange > 0.99 * 1e9 && offsetRange < 1.01 * 1e9) {
+ if (offsetRange > minRange && nOutliers < maxOutliers) {
triggerConfig.put(TriggerConfigVariable.TI_TIME_OFFSET.name(), minOffset);
} else {
triggerConfig.put(TriggerConfigVariable.TI_TIME_OFFSET.name(), 0L);
|