From a7864bbbf411418c709a555bdf149620a9c1bda9 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 18 May 2026 18:57:17 -0400 Subject: [PATCH 1/3] cache unix times by event number --- .../main/java/org/jlab/io/clara/DecoderWriter.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java index 127b29c0ab..f481ef140c 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java @@ -2,6 +2,7 @@ import java.io.File; import java.nio.file.Path; +import java.util.TreeMap; import java.util.TreeSet; import org.jlab.analysis.postprocess.Processor; import org.jlab.clara.std.services.EventWriterException; @@ -38,6 +39,7 @@ public class DecoderWriter extends HipoToHipoWriter { Bank runConfig; Bank helicityAdc; ConstantsManager conman; + TreeMap unixEventMap; TreeSet helicities; DaqScalersSequence scalers; SchemaFactory fullSchema; @@ -49,6 +51,7 @@ private void init(JSONObject opts) { runConfig = new Bank(fullSchema.getSchema("RUN::config")); helicityAdc = new Bank(fullSchema.getSchema("HEL::adc")); helicities = new TreeSet<>(); + unixEventMap = new TreeMap<>(); scalers = new DaqScalersSequence(fullSchema); conman = new ConstantsManager(); conman.init("/runcontrol/hwp","/runcontrol/helicity"); @@ -72,7 +75,7 @@ protected HipoWriterSorted createWriter(Path file, JSONObject opts) throws Event throw new EventWriterException(e); } } - + /** * In addition to writing the incoming event, copies all tag-1 banks to new * tag-1 events and writes them, and stores helicity/scaler readings for later. @@ -85,6 +88,8 @@ protected void writeEvent(Object event) throws EventWriterException { ((Event)event).read(runConfig); ((Event)event).read(helicityAdc); helicities.add(HelicityState.createFromFadcBank(helicityAdc, runConfig, conman)); + if (runConfig.getRows() > 0) + unixEventMap.put(runConfig.getInt("event",0),runConfig.getInt("unixTime", 0)); Event t = CLASDecoder4.createTaggedEvent((Event)event, runConfig, tag1banks); if (!t.isEmpty()) writer.addEvent(t, 1); super.writeEvent(event); @@ -100,8 +105,9 @@ protected void closeWriter() { super.closeWriter(); if (postprocess) postprocess(); // keep the latest helicity/scaler reading for the next file: - while (helicities.size() > 60) helicities.pollFirst(); - scalers.clear(10); + while (helicities.size() > 100) helicities.pollFirst(); + while (unixEventMap.size() > 100) unixEventMap.pollFirstEntry(); + scalers.clear(100); } private int getRunNumber() { From 35a45b215fbfb2f9d165a967582366709459579c Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 18 May 2026 19:32:52 -0400 Subject: [PATCH 2/3] used latest cached value for given eventNumber for unixTime --- .../src/main/java/org/jlab/io/clara/DecoderWriter.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java index f481ef140c..3e35b3b784 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java @@ -88,8 +88,12 @@ protected void writeEvent(Object event) throws EventWriterException { ((Event)event).read(runConfig); ((Event)event).read(helicityAdc); helicities.add(HelicityState.createFromFadcBank(helicityAdc, runConfig, conman)); - if (runConfig.getRows() > 0) - unixEventMap.put(runConfig.getInt("event",0),runConfig.getInt("unixTime", 0)); + if (runConfig.getRows() > 0) { + int unix = runConfig.getInt("unixTime",0); + int evno = runConfig.getInt("event",0); + if (unix > 0) unixEventMap.put(evno, unix); + else runConfig.putInt("unixTime",0, unixEventMap.get(unixEventMap.floorKey(evno))); + } Event t = CLASDecoder4.createTaggedEvent((Event)event, runConfig, tag1banks); if (!t.isEmpty()) writer.addEvent(t, 1); super.writeEvent(event); From fb46d182fb616bdf202efa3f308a6fd9d9e9acfa Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 18 May 2026 19:47:03 -0400 Subject: [PATCH 3/3] add comments --- .../clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java index 3e35b3b784..80fcaa33ac 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/DecoderWriter.java @@ -91,7 +91,9 @@ protected void writeEvent(Object event) throws EventWriterException { if (runConfig.getRows() > 0) { int unix = runConfig.getInt("unixTime",0); int evno = runConfig.getInt("event",0); + // if this event has a good unix time, store it for later: if (unix > 0) unixEventMap.put(evno, unix); + // otherwise update it with the latest unix time reading: else runConfig.putInt("unixTime",0, unixEventMap.get(unixEventMap.floorKey(evno))); } Event t = CLASDecoder4.createTaggedEvent((Event)event, runConfig, tag1banks);