From 2118570572a435b75f00b594392a95d685499f78 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 7 Jul 2026 17:13:57 -0400 Subject: [PATCH 1/5] add parallell clara output --- .../java/org/jlab/io/clara/Clas12Writer.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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 dabcdb132c..d728e4a1b7 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 @@ -23,7 +23,7 @@ * 3. Writes HEL::flip, RUN/HEL::scaler, and RUN::unix to new tag-1 events * 4. Runs post-processing, writing tag-1 information to all events * 5. Adds .hipo to the output filename, if necessary - * + * 6. Outputs a parallel file of select trigger bits with a raw schema * @author baltzell */ public class Clas12Writer extends HipoToHipoWriter { @@ -33,6 +33,8 @@ public class Clas12Writer extends HipoToHipoWriter { ConstantsManager conman; SchemaFactory fullSchema; boolean postprocess; + HipoWriterSorted rawWriter; + long rawTriggerMask; private void init(JSONObject opts) { fullSchema = new SchemaFactory(); @@ -42,6 +44,7 @@ private void init(JSONObject opts) { conman = new ConstantsManager(); conman.init("/runcontrol/hwp","/runcontrol/helicity"); postprocess = opts.optBoolean("postprocess", false); + rawTriggerMask = opts.optLong("rawTriggerMask", -1); if (opts.has("variation")) conman.setVariation(opts.getString("variation")); if (opts.has("timestamp")) conman.setTimeStamp(opts.getString("timestamp")); } @@ -53,6 +56,11 @@ protected HipoWriterSorted createWriter(Path file, JSONObject opts) throws Event HipoWriterSorted w = new HipoWriterSorted(); super.configure(w, opts); w.open(file.toString().endsWith(".hipo") ? file.toString() : file.toString()+".hipo"); + if (rawTriggerMask > 0) { + rawWriter = new HipoWriterSorted(); + rawWriter.getSchemaFactory().copy(fullSchema); + rawWriter.open("raw_"+file.toString().substring(file.toString().indexOf("_"))); + } return w; } catch (Exception e) { throw new EventWriterException(e); @@ -64,6 +72,14 @@ protected void writeEvent(Object event) throws EventWriterException { Event t = serial.read((Event)event); if (!t.isEmpty()) writer.addEvent(t, 1); super.writeEvent(event); + if (rawTriggerMask > 0) { + if (runConfig.getRows() > 0) { + if ((runConfig.getLong("trigger",0) & rawTriggerMask) != 0) { + rawWriter.addEvent((Event)event); + } + } + if (!t.isEmpty()) rawWriter.addEvent(t, 1); + } } @Override @@ -72,6 +88,7 @@ protected void closeWriter() { super.closeWriter(); if (postprocess) postprocess(); serial.clear(); + if (rawTriggerMask > 0) rawWriter.close(); } /** From 570edb2718a64a1593a466be3d1e78317f1ebc54 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 29 Sep 2026 10:41:36 -0400 Subject: [PATCH 2/5] add trigger prescale --- .../java/org/jlab/io/clara/Clas12Writer.java | 20 ++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) 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 d728e4a1b7..c2050d4ab9 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 @@ -33,8 +33,11 @@ public class Clas12Writer extends HipoToHipoWriter { ConstantsManager conman; SchemaFactory fullSchema; boolean postprocess; + HipoWriterSorted rawWriter; + long rawTriggerCount; long rawTriggerMask; + int rawTriggerPrescale; private void init(JSONObject opts) { fullSchema = new SchemaFactory(); @@ -44,7 +47,8 @@ private void init(JSONObject opts) { conman = new ConstantsManager(); conman.init("/runcontrol/hwp","/runcontrol/helicity"); postprocess = opts.optBoolean("postprocess", false); - rawTriggerMask = opts.optLong("rawTriggerMask", -1); + rawTriggerMask = opts.optLong("rawTriggerMask", 0); + rawTriggerPrescale = opts.optInt("rawTriggerPrescale", 0); if (opts.has("variation")) conman.setVariation(opts.getString("variation")); if (opts.has("timestamp")) conman.setTimeStamp(opts.getString("timestamp")); } @@ -72,13 +76,15 @@ protected void writeEvent(Object event) throws EventWriterException { Event t = serial.read((Event)event); if (!t.isEmpty()) writer.addEvent(t, 1); super.writeEvent(event); + writeRaw((Event)event, t); + } + + void writeRaw(Event physics, Event tagged) { if (rawTriggerMask > 0) { - if (runConfig.getRows() > 0) { - if ((runConfig.getLong("trigger",0) & rawTriggerMask) != 0) { - rawWriter.addEvent((Event)event); - } - } - if (!t.isEmpty()) rawWriter.addEvent(t, 1); + if (runConfig.getRows()>0 && (runConfig.getLong("trigger",0) & rawTriggerMask) != 0) + if (rawTriggerPrescale<=0 || (++rawTriggerCount % rawTriggerPrescale) == 0) + rawWriter.addEvent(physics); + if (!tagged.isEmpty()) rawWriter.addEvent(tagged, tagged.getEventTag()); } } From a308679609e26ec23dc52ae61bde31614e6edf0b Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 29 Sep 2026 11:24:49 -0400 Subject: [PATCH 3/5] use it --- etc/services/rgd-clarode.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/etc/services/rgd-clarode.yml b/etc/services/rgd-clarode.yml index e46daddc7e..a4b967d689 100644 --- a/etc/services/rgd-clarode.yml +++ b/etc/services/rgd-clarode.yml @@ -7,6 +7,8 @@ configuration: io-services: writer: schema_dir: dst + rawTriggerMask: 0x1f + rawTriggerPrescale: 0 services: MAGFIELDS: magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat From d8aa766de12501adb98358a7ee3aec678c4b3c0f Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 29 Sep 2026 14:26:03 -0400 Subject: [PATCH 4/5] add raw schema --- etc/bankdefs/util/bankSplit.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etc/bankdefs/util/bankSplit.py b/etc/bankdefs/util/bankSplit.py index 52b134174c..52f7aae902 100755 --- a/etc/bankdefs/util/bankSplit.py +++ b/etc/bankdefs/util/bankSplit.py @@ -114,6 +114,12 @@ def create(dirname, banklist): import glob +data = glob.glob('./singles/data/*.json') +data.extend(glob.glob('./singles/header/*.json')) +data.extend(glob.glob('./singles/tag1/*.json')) +data = [os.path.basename(x)[:-5] for x in data] +create("raw/", set(data)) + rgl = glob.glob('./singles/full/ALERT*.json') rgl.extend(glob.glob('./singles/full/AHDC*.json')) rgl.extend(glob.glob('./singles/full/ATOF*.json')) From 9a112f8b1ad2273baa9b196b043f875d2f4c00ae Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 29 Sep 2026 14:41:29 -0400 Subject: [PATCH 5/5] use raw schema --- .../main/java/org/jlab/io/clara/Clas12Writer.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) 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 c2050d4ab9..8b5b2af3b3 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 @@ -32,16 +32,19 @@ public class Clas12Writer extends HipoToHipoWriter { Bank runConfig; ConstantsManager conman; SchemaFactory fullSchema; + SchemaFactory rawSchema; boolean postprocess; HipoWriterSorted rawWriter; - long rawTriggerCount; long rawTriggerMask; + long rawTriggerCount; int rawTriggerPrescale; private void init(JSONObject opts) { fullSchema = new SchemaFactory(); fullSchema.initFromDirectory(FileUtils.getEnvironmentPath("CLAS12DIR","etc/bankdefs/hipo4")); + rawSchema = new SchemaFactory(); + rawSchema.initFromDirectory(FileUtils.getEnvironmentPath("CLAS12DIR","etc/bankdefs/hipo4/singles/raw")); serial = new SerialHoncho(fullSchema); runConfig = new Bank(fullSchema.getSchema("RUN::config")); conman = new ConstantsManager(); @@ -59,12 +62,15 @@ protected HipoWriterSorted createWriter(Path file, JSONObject opts) throws Event init(opts); HipoWriterSorted w = new HipoWriterSorted(); super.configure(w, opts); - w.open(file.toString().endsWith(".hipo") ? file.toString() : file.toString()+".hipo"); + String dirname = file.getParent().toString(); + String basename = file.getFileName().toString(); + if (!basename.endsWith(".hipo")) basename += ".hipo"; if (rawTriggerMask > 0) { rawWriter = new HipoWriterSorted(); - rawWriter.getSchemaFactory().copy(fullSchema); - rawWriter.open("raw_"+file.toString().substring(file.toString().indexOf("_"))); + rawWriter.getSchemaFactory().copy(rawSchema); + rawWriter.open(dirname + "/tb" + basename.substring(basename.indexOf("_"))); } + w.open(dirname + "/" + basename); return w; } catch (Exception e) { throw new EventWriterException(e); @@ -81,6 +87,7 @@ protected void writeEvent(Object event) throws EventWriterException { void writeRaw(Event physics, Event tagged) { if (rawTriggerMask > 0) { + physics.read(runConfig); if (runConfig.getRows()>0 && (runConfig.getLong("trigger",0) & rawTriggerMask) != 0) if (rawTriggerPrescale<=0 || (++rawTriggerCount % rawTriggerPrescale) == 0) rawWriter.addEvent(physics);