From 29fc7af0f4d2466f8fe9f17a9c84d569b5ae6f67 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Wed, 7 Oct 2026 17:39:28 -0400 Subject: [PATCH 1/4] remove postprocessing --- common-tools/clara-io/pom.xml | 6 ----- .../java/org/jlab/io/clara/Clas12Writer.java | 26 ------------------- 2 files changed, 32 deletions(-) diff --git a/common-tools/clara-io/pom.xml b/common-tools/clara-io/pom.xml index 1c3a50f9b6..e192efa6b7 100644 --- a/common-tools/clara-io/pom.xml +++ b/common-tools/clara-io/pom.xml @@ -48,12 +48,6 @@ 14.2.1-SNAPSHOT - - org.jlab.clas - clas-utils - 14.2.1-SNAPSHOT - - org.apache.commons commons-text 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 c262aa3d2b..600708b484 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 @@ -7,7 +7,6 @@ import org.jlab.detector.calib.utils.ConstantsManager; import org.jlab.detector.helicity.HelicitySequenceDelayed; import org.jlab.detector.serial.SerialHoncho; -import org.jlab.detector.serial.PostProcessor; import org.jlab.jnp.hipo4.data.Bank; import org.jlab.jnp.hipo4.data.Event; import org.jlab.jnp.hipo4.data.SchemaFactory; @@ -32,7 +31,6 @@ public class Clas12Writer extends HipoToHipoWriter { Bank runConfig; ConstantsManager conman; SchemaFactory fullSchema; - boolean postprocess; HipoWriterSorted paraWriter; long paraCount; @@ -46,7 +44,6 @@ private void init(JSONObject opts) { runConfig = new Bank(fullSchema.getSchema("RUN::config")); conman = new ConstantsManager(); conman.init("/runcontrol/hwp","/runcontrol/helicity"); - postprocess = opts.optBoolean("postprocess", false); paraTriggerMask = opts.optLong("paraTriggerMask", 0); paraTriggerPrescale = opts.optInt("paraTriggerPrescale", 0); if (opts.has("variation")) conman.setVariation(opts.getString("variation")); @@ -96,7 +93,6 @@ void writeRaw(Event physics, Event tagged) { protected void closeWriter() { serial.closure(writer); super.closeWriter(); - if (postprocess) postprocess(); serial.clear(); if (paraTriggerMask > 0) paraWriter.close(); } @@ -118,26 +114,4 @@ private int getRunNumber() { return 0; } - /** - * Copy helicity/charge tag-1 information to all events. - */ - private void postprocess() { - int d = conman.getConstants(getRunNumber(), "/runcontrol/helicity").getIntValue("delay",0,0,0); - HelicitySequenceDelayed helicity = new HelicitySequenceDelayed(d); - helicity.addStream(serial.getHelicities()); - PostProcessor p = new PostProcessor(List.of(filename), fullSchema, helicity, serial.getScalers()); - HipoReader r = new HipoReader(); - r.open(filename); - Event e = new Event(); - writer.open("pp_"+filename); - while (r.hasNext()) { - r.nextEvent(e); - p.processEvent(e); - HipoToHipoWriter.writeEvent(writer, e, schemaBankList); - } - writer.close(); - new File(filename).delete(); - new File("pp_"+filename).renameTo(new File(filename)); - } - } From ca81680616b90b4cf60643d59661becafebb9af8 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Wed, 7 Oct 2026 20:16:41 -0400 Subject: [PATCH 2/4] copy static method --- .../analysis/postprocess/Tag1ToEvent.java | 29 +++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java index b3293962f2..80cbbee22a 100644 --- a/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java +++ b/common-tools/clas-analysis/src/main/java/org/jlab/analysis/postprocess/Tag1ToEvent.java @@ -1,6 +1,6 @@ package org.jlab.analysis.postprocess; -import org.jlab.detector.serial.PostProcessor; +import java.util.List; import java.util.TreeMap; import java.util.logging.Logger; import org.jlab.clas.reco.ReconstructionEngine; @@ -35,6 +35,31 @@ public class Tag1ToEvent { static final Logger LOGGER = Logger.getLogger(Tag1ToEvent.class.getName()); + /** + * Load the mapping from event number to unix time + * @param schema + * @param files + * @return map + */ + public static TreeMap getEventUnixMap(SchemaFactory schema, List files) { + TreeMap m = new TreeMap<>(); + Event e = new Event(); + Bank b = schema.getBank("RUN::unix");//new Bank(schema.getSchema("RUN::unix")); + for (String f : files) { + HipoReader r = new HipoReader(); + r.setTags(1); + r.open(f); + while (r.hasNext()) { + r.nextEvent(e); + e.read(b); + int size = b.getRows(); + for (int i=0; i eventUnix = PostProcessor.getEventUnixMap(schema, parser.getInputList()); + TreeMap eventUnix = getEventUnixMap(schema, parser.getInputList()); // Loop over the input HIPO files: LOGGER.info("\n>>> Starting post-processing ...\n"); From d288d0381b077f6d4f85759dd1d2c74bacfe0371 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Wed, 7 Oct 2026 20:18:06 -0400 Subject: [PATCH 3/4] remove unused class --- .../jlab/detector/serial/PostProcessor.java | 277 ------------------ 1 file changed, 277 deletions(-) delete mode 100644 common-tools/clas-detector/src/main/java/org/jlab/detector/serial/PostProcessor.java diff --git a/common-tools/clas-detector/src/main/java/org/jlab/detector/serial/PostProcessor.java b/common-tools/clas-detector/src/main/java/org/jlab/detector/serial/PostProcessor.java deleted file mode 100644 index 0d0f1b96bc..0000000000 --- a/common-tools/clas-detector/src/main/java/org/jlab/detector/serial/PostProcessor.java +++ /dev/null @@ -1,277 +0,0 @@ -package org.jlab.detector.serial; - -import java.util.List; -import java.util.TreeMap; - -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.HipoReader; -import org.jlab.io.base.DataBank; -import org.jlab.io.base.DataEvent; -import org.jlab.io.hipo.HipoDataBank; - -import org.jlab.detector.calib.utils.ConstantsManager; -import org.jlab.detector.scalers.DaqScalers; -import org.jlab.detector.scalers.DaqScalersSequence; -import org.jlab.detector.helicity.HelicityBit; -import org.jlab.detector.helicity.HelicitySequenceDelayed; -import org.jlab.jnp.hipo4.io.HipoWriterSorted; -import org.jlab.utils.options.OptionParser; -import org.jlab.utils.system.ClasUtilsFile; - -/** - * - * @author baltzell - */ -public class PostProcessor { - - public static final String CCDB_TABLES[] = {"/runcontrol/fcup","/runcontrol/slm", - "/runcontrol/helicity","/daq/config/scalers/dsc1","/runcontrol/hwp"}; - - private Bank runConfig = null; - private Bank recEvent = null; - private ConstantsManager conman = null; - private SchemaFactory schemaFactory = null; - private DaqScalersSequence chargeSequence = null; - private HelicitySequenceDelayed helicitySequence = null; - private TreeMap eventUnix = null; - - public PostProcessor(List files, boolean restream, boolean rebuild) { - HipoReader r = new HipoReader(); - r.open(files.get(0)); - schemaFactory = r.getSchemaFactory(); - r.close(); - runConfig = new Bank(schemaFactory.getSchema("RUN::config")); - recEvent = new Bank(schemaFactory.getSchema("REC::Event")); - conman = new ConstantsManager(); - conman.init(CCDB_TABLES); - helicitySequence = SerialUtil.getHelicity(files, schemaFactory, restream, conman); - if (rebuild) chargeSequence = DaqScalersSequence.rebuildSequence(1, conman, files); - else chargeSequence = DaqScalersSequence.readSequence(files); - eventUnix = getEventUnixMap(schemaFactory, files); - } - - public PostProcessor(List files, SchemaFactory schema, HelicitySequenceDelayed h, DaqScalersSequence s) { - schemaFactory = schema; - helicitySequence = h; - chargeSequence = s; - runConfig = new Bank(schemaFactory.getSchema("RUN::config")); - recEvent = new Bank(schemaFactory.getSchema("REC::Event")); - conman = new ConstantsManager(); - conman.init(CCDB_TABLES); - eventUnix = getEventUnixMap(schemaFactory, files); - } - - /** - * Load the mapping from event number to unix time - * @param schema - * @param files - * @return map - */ - public static TreeMap getEventUnixMap(SchemaFactory schema, List files) { - TreeMap m = new TreeMap<>(); - Event e = new Event(); - Bank b = schema.getBank("RUN::unix");//new Bank(schema.getSchema("RUN::unix")); - for (String f : files) { - HipoReader r = new HipoReader(); - r.setTags(1); - r.open(f); - while (r.hasNext()) { - r.nextEvent(e); - e.read(b); - int size = b.getRows(); - for (int i=0; i0) { - event.removeBank("HEL::scaler"); - SerialUtil.assignScalerHelicity(runcfg.getLong("timestamp",0), ((HipoDataBank)helScaler).getBank(), helicitySequence); - event.appendBank(helScaler); - } - } - - /** - * Modify REC::Event/HEL::scaler with the delay-corrected helicity - * @param event - * @param runcfg - * @param recevt - */ - private void processEventHelicity(Event event, Bank runcfg, Bank recevt) { - HelicityBit hb = helicitySequence.search(runcfg.getLong("timestamp", 0)); - HelicityBit hbraw = helicitySequence.getHalfWavePlate() ? HelicityBit.getFlipped(hb) : hb; - recevt.putByte("helicity",0,hb.value()); - recevt.putByte("helicityRaw",0,hbraw.value()); - Bank helScaler = new Bank(schemaFactory.getSchema("HEL::scaler")); - event.read(helScaler); - if (helScaler.getRows()>0) { - event.remove(schemaFactory.getSchema("HEL::scaler")); - SerialUtil.assignScalerHelicity(runcfg.getLong("timestamp",0), helScaler, helicitySequence); - event.write(helScaler); - } - } - - /** - * Modify REC::Event for beam charge and livetime - * @param runcfg - * @param recevt - */ - private void processEventScalers(DataBank runcfg, DataBank recevt) { - DaqScalers ds = chargeSequence.get(runcfg.getLong("timestamp", 0)); - if (ds != null) { - recevt.setFloat("beamCharge",0, (float) ds.dsc2.getBeamChargeGated()); - recevt.setDouble("liveTime",0,ds.dsc2.getLivetime()); - } - } - - /** - * Modify REC::Event for beam charge and livetime - * @param runcfg - * @param recevt - */ - private void processEventScalers(Bank runcfg, Bank recevt) { - DaqScalers ds = chargeSequence.get(runcfg.getLong("timestamp", 0)); - if (ds != null) { - recevt.putFloat("beamCharge",0, (float) ds.dsc2.getBeamChargeGated()); - recevt.putDouble("liveTime",0,ds.dsc2.getLivetime()); - } - } - - /** - * Modify RUN::config's unixtime and update the event - * @param event - * @param runcfg - */ - private void processEventUnix(Event event, Bank runcfg) { - if (runcfg.getRows() > 0) { - Integer key = eventUnix.floorKey(runcfg.getInt("event",0)); - if (key != null) { - Integer unix = eventUnix.get(key); - if (unix != null) { - event.remove(runcfg.getSchema()); - runcfg.putInt("unixtime", 0, unix); - event.write(runcfg); - } - } - } - } - - /** - * Modify RUN::config's unixtime and update the event - * @param event - * @param runcfg - */ - private void processEventUnix(DataEvent event, DataBank runcfg) { - if (runcfg.rows() > 0) { - Integer key = eventUnix.floorKey(runcfg.getInt("event",0)); - if (key != null) { - Integer unix = eventUnix.get(key); - if (unix != null) { - event.removeBank(runcfg.getDescriptor().getName()); - runcfg.setInt("unixtime", 0, unix); - event.appendBank(runcfg); - } - } - } - } - - /** - * Postprocess one event - * @param event - */ - public void processEvent(DataEvent event) { - if (event.hasBank("RUN::config")) { - DataBank runcfg = event.getBank("RUN::config"); - if (runcfg.rows() > 0) { - processEventUnix(event, runcfg); - if (event.hasBank("REC::Event")) { - DataBank recevt = event.getBank("REC::Event"); - if (recevt.rows() > 0) { - event.removeBank("REC::Event"); - if (helicitySequence != null) processEventHelicity(event, runcfg, recevt); - if (chargeSequence != null) processEventScalers(runcfg, recevt); - event.appendBank(recevt); - } - } - } - } - } - - /** - * Postprocess one event - * @param event - */ - public void processEvent(Event event) { - event.read(runConfig); - event.read(recEvent); - if (runConfig.getRows() > 0) { - processEventUnix(event, runConfig); - if (recEvent.getRows() > 0) { - event.remove(recEvent.getSchema()); - if (helicitySequence != null) processEventHelicity(event, runConfig, recEvent); - if (chargeSequence != null) processEventScalers(runConfig, recEvent); - event.write(recEvent); - } - } - } - - /** - * The "postprocess" program. - * @param args - */ - public static void main(String args[]) { - - OptionParser o = new OptionParser("postprocess"); - o.addOption("-f","0","reflip: rebuild the HEL::flip bank"); - o.addOption("-c","0","recharge: rebuild the RUN/HEL::scaler banks"); - o.addOption("-o",null,"merged output file path"); - o.setRequiresInputList(true); - o.parse(args); - - boolean restream = !o.getOption("-f").isDefault(); - boolean rebuild = !o.getOption("-c").isDefault(); - - PostProcessor post = new PostProcessor(o.getInputList(), restream, rebuild); - - HipoWriterSorted writer = null; - - if (!o.getOption("-o").isDefault()) { - writer = new HipoWriterSorted(); - SchemaFactory schema = writer.getSchemaFactory(); - schema.initFromDirectory(ClasUtilsFile.getResourceDir("CLAS12DIR", "etc/bankdefs/hipo4")); - writer.setCompressionType(2); - writer.open(o.getOption("-o").stringValue()); - } - - for (String f : o.getInputList()) { - HipoReader reader = new HipoReader(); - reader.open(f); - Event event = new Event(); - while (reader.hasNext()) { - reader.nextEvent(event); - post.processEvent(event); - if (writer != null) writer.addEvent(event); - } - reader.close(); - } - - if (writer != null) writer.close(); - } - -} From 11948362faffa6e43f04e8f977a82c661f7af511 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Wed, 7 Oct 2026 20:19:56 -0400 Subject: [PATCH 4/4] remove corresponding script --- bin/postprocess2 | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100755 bin/postprocess2 diff --git a/bin/postprocess2 b/bin/postprocess2 deleted file mode 100755 index 19219be743..0000000000 --- a/bin/postprocess2 +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -. `dirname $0`/../libexec/env.sh - -export MALLOC_ARENA_MAX=1 - -java ${JAVA_OPTS-} -Xmx768m -Xms768m -XX:+UseSerialGC \ - -cp ${COATJAVA_CLASSPATH:-''} \ - org.jlab.detector.serial.PostProcessor \ - $*