Skip to content

Commit f066c9c

Browse files
committed
prep for recon-util decoding
1 parent 225850a commit f066c9c

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.utils.ClaraYaml;
@@ -284,42 +291,68 @@ public void processFile(String file, String output){
284291
this.processFile(file, output, -1, -1);
285292
}
286293

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

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

0 commit comments

Comments
 (0)