Skip to content

Commit c1659d8

Browse files
committed
prep for recon-util decoding
1 parent 21d825a commit c1659d8

File tree

1 file changed

+42
-9
lines changed

1 file changed

+42
-9
lines changed

common-tools/clas-reco/src/main/java/org/jlab/clas/reco/EngineProcessor.java

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
package org.jlab.clas.reco;
22

33
import java.io.File;
4+
import java.nio.ByteBuffer;
5+
import java.nio.ByteOrder;
46
import java.nio.file.Files;
57
import java.util.LinkedHashMap;
68
import java.util.List;
@@ -15,6 +17,11 @@
1517
import org.jlab.clara.engine.EngineData;
1618
import org.jlab.clara.engine.EngineDataType;
1719
import java.util.Arrays;
20+
import org.jlab.coda.jevio.EvioException;
21+
import org.jlab.detector.decode.CLASDecoder;
22+
import org.jlab.io.evio.EvioDataEvent;
23+
import org.jlab.io.evio.EvioSource;
24+
import org.jlab.jnp.hipo4.data.Event;
1825
import org.jlab.jnp.hipo4.data.SchemaFactory;
1926
import org.json.JSONObject;
2027
import org.jlab.logging.SplitLogger;
@@ -285,42 +292,68 @@ public void processFile(String file, String output){
285292
this.processFile(file, output, -1, -1);
286293
}
287294

295+
public void processEvent(DataEvent event, HipoDataSync writer) {
296+
processEvent(event);
297+
removeBanks(event);
298+
writer.writeEvent(event);
299+
}
300+
288301
public void processFile(HipoDataSource reader, HipoDataSync writer, int skipEvents, int maxEvents) {
289302
if (updateDictionary==true) updateDictionary(reader, writer);
290-
ProgressPrintout progress = new ProgressPrintout();
303+
ProgressPrintout progress = new ProgressPrintout();
291304
int eventsRead = 0;
292305
while (reader.hasEvent()) {
293306
DataEvent event = reader.getNextEvent();
294307
eventsRead++;
295-
if (skipEvents <= 0 || eventsRead > skipEvents) {
296-
processEvent(event);
297-
removeBanks(event);
298-
writer.writeEvent(event);
299-
}
308+
if (skipEvents <= 0 || eventsRead > skipEvents) processEvent(event, writer);
300309
if (maxEvents > 0 && eventsRead > maxEvents+skipEvents) break;
301310
progress.updateStatus();
302311
}
303312
progress.showStatus();
304313
writer.close();
305314
}
306315

307-
/**
316+
public void processFile(EvioSource reader, HipoDataSync writer, int skipEvents, int maxEvents) {
317+
CLASDecoder decoder = new CLASDecoder();
318+
ProgressPrintout progress = new ProgressPrintout();
319+
int eventsRead = 0;
320+
while (reader.hasEvent()) {
321+
eventsRead++;
322+
try {
323+
ByteBuffer bb = reader.getEventBuffer(eventsRead, true);
324+
EvioDataEvent evio = new EvioDataEvent(bb.array(), ByteOrder.LITTLE_ENDIAN);
325+
Event hipo = decoder.getDecodedEvent(evio, -1, eventsRead, null, null);
326+
//processEvent(hipo, writer);
327+
} catch (EvioException ex) {
328+
System.getLogger(EngineProcessor.class.getName()).log(System.Logger.Level.ERROR, (String) null, ex);
329+
}
330+
progress.updateStatus();
331+
}
332+
}
333+
334+
/**}
308335
* process entire file through engine chain.
309336
* @param file input file name to process
310337
* @param output output filename
311338
* @param nskip number of events to skip
312339
* @param nevents number of events to process
313340
*/
314341
public void processFile(String file, String output, int nskip, int nevents) {
315-
if(file.endsWith(".hipo") || file.endsWith(".h5") || file.endsWith(".h4")) {
342+
if (file.endsWith(".hipo") || file.endsWith(".h5") || file.endsWith(".h4")) {
316343
HipoDataSource reader = new HipoDataSource();
317344
reader.open(file);
318345
HipoDataSync writer = new HipoDataSync();
319346
writer.setCompressionType(2);
320347
writer.open(output);
321348
processFile(reader, writer, nskip, nevents);
322349
} else {
323-
LOGGER.info("\n\n>>>> error in file extension (use .hipo,.h4 or .h5)\n>>>> how is this not simple ?\n");
350+
LOGGER.info(() -> "No HIPO file extension found, assuming this is an EVIO file: "+file);
351+
EvioSource reader = new EvioSource();
352+
reader.open(file);
353+
HipoDataSync writer = new HipoDataSync();
354+
writer.setCompressionType(2);
355+
writer.open(output);
356+
processFile(reader, writer, nskip, nevents);
324357
}
325358
}
326359

0 commit comments

Comments
 (0)