diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml
index 643c120fc9..74df2d4153 100644
--- a/common-tools/clara-io/pom.xml
+++ b/common-tools/clara-io/pom.xml
@@ -53,6 +53,12 @@
commons-text
+
+ org.jlab.clas
+ clas-reco
+ 14.2.2-SNAPSHOT
+
+
diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java
index 405046e395..51340ad30a 100644
--- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java
+++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Writer.java
@@ -2,10 +2,10 @@
import java.nio.file.Path;
import org.jlab.clara.std.services.EventWriterException;
+import org.jlab.clas.reco.ParaTrigWriter;
import org.jlab.detector.calib.utils.ConstantsManager;
import org.jlab.detector.serial.SerialHoncho;
import org.jlab.detector.serial.Occupancer;
-import org.jlab.jnp.hipo4.data.Bank;
import org.jlab.jnp.hipo4.data.Event;
import org.jlab.jnp.hipo4.data.SchemaFactory;
import org.jlab.jnp.hipo4.io.HipoWriterSorted;
@@ -26,11 +26,9 @@ public class Clas12Writer extends HipoToHipoWriter {
Occupancer occupancer;
SerialHoncho serial;
- Bank runConfig;
ConstantsManager conman;
SchemaFactory fullSchema;
- HipoWriterSorted paraWriter;
- long paraCount;
+ ParaTrigWriter paraWriter;
long paraTriggerMask;
int paraTriggerPrescale;
@@ -39,7 +37,6 @@ private void init(JSONObject opts) {
fullSchema = new SchemaFactory();
fullSchema.initFromDirectory(FileUtils.getEnvironmentPath("CLAS12DIR","etc/bankdefs/hipo4"));
serial = new SerialHoncho(fullSchema);
- runConfig = new Bank(fullSchema.getSchema("RUN::config"));
conman = new ConstantsManager();
conman.init("/runcontrol/hwp","/runcontrol/helicity");
paraTriggerMask = opts.optLong("paraTriggerMask", 0);
@@ -58,8 +55,7 @@ protected HipoWriterSorted createWriter(Path file, JSONObject opts) throws Event
String basename = file.getFileName().toString();
if (!basename.endsWith(".hipo")) basename += ".hipo";
if (paraTriggerMask > 0) {
- paraWriter = new HipoWriterSorted();
- paraWriter.getSchemaFactory().copy(fullSchema);
+ paraWriter = new ParaTrigWriter(paraTriggerMask,paraTriggerPrescale);
paraWriter.open(dirname + "/tb" + basename.substring(basename.indexOf("_")));
}
w.open(dirname + "/" + basename);
@@ -75,16 +71,9 @@ protected void writeEvent(Object event) throws EventWriterException {
if (!t.isEmpty()) writer.addEvent(t, 1);
occupancer.process(((Event)event));
super.writeEvent(event);
- writeRaw((Event)event, t);
- }
-
- void writeRaw(Event physics, Event tagged) {
- if (paraTriggerMask > 0) {
- physics.read(runConfig);
- if (runConfig.getRows()>0 && (runConfig.getLong("trigger",0) & paraTriggerMask) != 0)
- if (paraTriggerPrescale<=0 || (++paraCount % paraTriggerPrescale) == 0)
- paraWriter.addEvent(physics);
- if (!tagged.isEmpty()) paraWriter.addEvent(tagged, tagged.getEventTag());
+ if (paraTriggerMask > 0 {
+ paraWriter.addEvent((Event)event);
+ if (!t.isEmpty()) paraWriter.addEvent(t,1);
}
}