From 4489a799cada9ed1c954711745ff38bcb49f5c2f Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Mon, 11 May 2026 21:05:22 -0400 Subject: [PATCH 1/3] add Clas12Reader --- .../java/org/jlab/io/clara/Clas12Reader.java | 88 +++++++++++++++++++ .../org/jlab/io/clara/Clas12Reader.yaml | 11 +++ 2 files changed, 99 insertions(+) create mode 100644 common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java create mode 100644 common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java new file mode 100644 index 0000000000..55c281a2b7 --- /dev/null +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java @@ -0,0 +1,88 @@ +package org.jlab.io.clara; + +import java.nio.ByteBuffer; +import java.nio.ByteOrder; +import java.nio.file.Path; +import org.jlab.clara.engine.EngineDataType; +import org.jlab.clara.std.services.AbstractEventReaderService; +import org.jlab.clara.std.services.EventReaderException; +import org.jlab.coda.jevio.EvioException; +import org.jlab.io.evio.EvioDataEvent; +import org.jlab.io.evio.EvioSource; +import org.jlab.jnp.hipo4.data.Event; +import org.jlab.jnp.hipo4.io.HipoReader; +import org.json.JSONObject; + +/** + * Just reads EVIO or HIPO, and passes it along. + * + * @author baltzell + */ +public class Clas12Reader extends AbstractEventReaderService { + + EngineDataType type = Clas12Types.HIPO; + private long maxEvents; + + @Override + protected Object createReader(Path path, JSONObject opts) throws EventReaderException { + if (path.toString().endsWith(".hipo")) { + type = Clas12Types.HIPO; + HipoReader r = new HipoReader(); + r.open(path.toString()); + return r; + } + else { + type = Clas12Types.EVIO; + EvioSource r = new EvioSource(); + r.open(path.toString()); + maxEvents = r.getEventCount(); + return r; + } + } + + @Override + protected void closeReader() { + if (type == Clas12Types.EVIO) { + ((EvioSource)reader).close(); + } + else { + ((HipoReader)reader).close(); + } + } + + @Override + protected int readEventCount() throws EventReaderException { + if (type == Clas12Types.EVIO) { + return ((EvioSource)reader).getEventCount(); + } + else { + return ((HipoReader)reader).getEventCount(); + } + } + + @Override + protected Object readEvent(int eventNumber) throws EventReaderException { + try { + if (type == Clas12Types.EVIO) { + if (eventNumber++ >= maxEvents) return null; + return ((EvioSource)reader).getEventBuffer(eventNumber, true); + //return new EvioDataEvent(b.array(), readByteOrder()); + } + else { + return ((HipoReader)reader).getEvent(new Event(),eventNumber); + } + } catch (EvioException e) { + throw new EventReaderException(e); + } + } + + @Override + public ByteOrder readByteOrder() throws EventReaderException { + return ByteOrder.LITTLE_ENDIAN; + } + + @Override + protected EngineDataType getDataType() { + return type; + } +} diff --git a/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml b/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml new file mode 100644 index 0000000000..f499fccd2b --- /dev/null +++ b/common-tools/clara-io/src/main/resources/org/jlab/io/clara/Clas12Reader.yaml @@ -0,0 +1,11 @@ +--- +name: Clas12Reader +engine: org.jlab.io.clara.Clas12Reader +type: java + +author: Nathan Baltzell +email: baltzell@jlab.org + +version: 0.1 +description: + Reads EVIO or HIPO events from a file and passes them along unchanged. From 2a3bc2af493154f3c9bfcee1f79215fcd654b51d Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 12 May 2026 19:11:56 -0400 Subject: [PATCH 2/3] remove unused imports Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java index 55c281a2b7..3d7bd2c575 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java @@ -1,13 +1,11 @@ package org.jlab.io.clara; -import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.file.Path; import org.jlab.clara.engine.EngineDataType; import org.jlab.clara.std.services.AbstractEventReaderService; import org.jlab.clara.std.services.EventReaderException; import org.jlab.coda.jevio.EvioException; -import org.jlab.io.evio.EvioDataEvent; import org.jlab.io.evio.EvioSource; import org.jlab.jnp.hipo4.data.Event; import org.jlab.jnp.hipo4.io.HipoReader; From f7f602be2dd5810ba50d54f71b21f6d24254a138 Mon Sep 17 00:00:00 2001 From: Nathan Baltzell Date: Tue, 12 May 2026 19:12:57 -0400 Subject: [PATCH 3/3] cast and rethrow exception Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .../src/main/java/org/jlab/io/clara/Clas12Reader.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java index 3d7bd2c575..e4cf0b7625 100644 --- a/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java +++ b/common-tools/clara-io/src/main/java/org/jlab/io/clara/Clas12Reader.java @@ -26,8 +26,12 @@ protected Object createReader(Path path, JSONObject opts) throws EventReaderExce if (path.toString().endsWith(".hipo")) { type = Clas12Types.HIPO; HipoReader r = new HipoReader(); - r.open(path.toString()); - return r; + try { + r.open(path.toString()); + return r; + } catch (Exception e) { + throw new EventReaderException(e); + } } else { type = Clas12Types.EVIO;