Author: [log in to unmask] Date: Wed Nov 5 15:05:58 2014 New Revision: 1444 Log: First working version of Eng Run EVIO to LCIO conversion for ECAL data. Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java java/trunk/evio/src/test/java/org/hps/evio/LCSimEngRunEventBuilderTest.java Modified: java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java ============================================================================= --- java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java (original) +++ java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java Wed Nov 5 15:05:58 2014 @@ -1,7 +1,12 @@ package org.hps.evio; + +import java.util.logging.Level; +import java.util.logging.Logger; import org.hps.readout.ecal.SSPData; import org.hps.readout.ecal.TriggerData; +import org.jlab.coda.jevio.EvioEvent; +import org.lcsim.event.EventHeader; /** * Build LCSim events from EVIO data. @@ -9,24 +14,52 @@ * @author Sho Uemura <[log in to unmask]> * @author Jeremy McCormick <[log in to unmask]> * @version $Id: LCSimTestRunEventBuilder.java,v 1.24 2013/03/01 01:30:25 meeg - * Exp $ + * Exp $ */ public class LCSimEngRunEventBuilder extends LCSimTestRunEventBuilder { - public LCSimEngRunEventBuilder() { - ecalReader.setTopBankTag(0x25); - ecalReader.setBotBankTag(0x27); - sspCrateBankTag = 0x25; - sspBankTag = 0xe10c; -// ecalReader = new ECalEvioReader(0x25, 0x27); -// svtReader = new SVTEvioReader(); - } + public LCSimEngRunEventBuilder() { + ecalReader.setTopBankTag(0x25); + ecalReader.setBotBankTag(0x27); + sspCrateBankTag = 0x25; + sspBankTag = 0xe10c; + // ecalReader = new ECalEvioReader(0x25, 0x27); + // svtReader = new SVTEvioReader(); + } - protected TriggerData makeTriggerData(int[] data) { - TriggerData triggerData = new SSPData(data); - time = ((long) triggerData.getTime()) * 4; - return triggerData; - } + protected TriggerData makeTriggerData(int[] data) { + TriggerData triggerData = new SSPData(data); + time = ((long) triggerData.getTime()) * 4; + return triggerData; + } + @Override + public EventHeader makeLCSimEvent(EvioEvent evioEvent) { + if (!isPhysicsEvent(evioEvent)) { + throw new RuntimeException("Not a physics event: event tag " + evioEvent.getHeader().getTag()); + } + + // Create a new LCSimEvent. + EventHeader lcsimEvent = getEventData(evioEvent); + + // Make RawCalorimeterHit collection, combining top and bottom section + // of ECal into one list. + try { + ecalReader.makeHits(evioEvent, lcsimEvent); + } catch (Exception e) { + Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Error making ECal hits", e); + } + + // Commented out for now while SVT is not implemented. --JM + // Make SVT RawTrackerHits + // try { + // svtReader.makeHits(evioEvent, lcsimEvent); + // } catch (Exception e) { + // Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, + // "Error making SVT hits", e); + // } + + return lcsimEvent; + } } Modified: java/trunk/evio/src/test/java/org/hps/evio/LCSimEngRunEventBuilderTest.java ============================================================================= --- java/trunk/evio/src/test/java/org/hps/evio/LCSimEngRunEventBuilderTest.java (original) +++ java/trunk/evio/src/test/java/org/hps/evio/LCSimEngRunEventBuilderTest.java Wed Nov 5 15:05:58 2014 @@ -15,62 +15,67 @@ import org.lcsim.util.test.TestUtil.TestOutputFile; /** - * Test conversion of EVIO to LCIO for Engineering Run EVIO data. - * This is ECAL data only for now. + * Test conversion of EVIO to LCIO for Engineering Run EVIO data. This is ECAL + * data only for now. + * * @author Jeremy McCormick <[log in to unmask]> */ public class LCSimEngRunEventBuilderTest extends TestCase { - + public void testLCSimEngRunEventBuilder() throws Exception { - + // Setup database conditions. DatabaseConditionsManager conditionsManager = new DatabaseConditionsManager(); conditionsManager.setConnectionResource("/org/hps/conditions/config/conditions_dev.properties"); conditionsManager.configure("/org/hps/conditions/config/conditions_dev.xml"); conditionsManager.register(); - conditionsManager.setDetector("HPS-Proposal2014-v8-6pt6", 0); - + conditionsManager.setDetector("HPS-Proposal2014-v8-6pt6", 2000); + // Configure LCIO writer. new TestOutputFile(getClass().getSimpleName()).mkdirs(); File lcioFile = new TestOutputFile(getClass().getSimpleName() + File.separator + getClass().getSimpleName() + "_output.slcio"); - LCIOWriter writer; + LCIOWriter writer; try { - writer = new LCIOWriter(lcioFile); - } catch (IOException e) { - throw new RuntimeException(e); - } - + writer = new LCIOWriter(lcioFile); + } catch (IOException e) { + throw new RuntimeException(e); + } + // Create event builder. LCSimEventBuilder builder = new LCSimEngRunEventBuilder(); builder.setDetectorName("HPS-Proposal2014-v8-6pt6"); - + // Get remote test file. FileCache cache = new FileCache(); File evioFile = cache.getCachedFile(new URL("http://www.lcsim.org/test/hps-java/LCSimEngRunEventBuilderTest/hps_002744.evio.0")); // Open the EVIO reader. - System.out.println("Opening file " + evioFile); - EvioReader reader = null; - try { - reader = new EvioReader(evioFile); - } catch (Exception e) { - throw new RuntimeException(e); - } - - // Run the event builder on the EVIO. - EvioEvent evioEvent = null; - while ((evioEvent = reader.nextEvent()) != null) { - reader.parseEvent(evioEvent); - builder.readEvioEvent(evioEvent); - if (builder.isPhysicsEvent(evioEvent)) { - EventHeader lcsimEvent = builder.makeLCSimEvent(evioEvent); - System.out.println("created LCSim event #" + lcsimEvent.getEventNumber()); - writer.write(lcsimEvent); - } - } - - // Close the LCIO writer. - writer.flush(); - writer.close(); + System.out.println("Opening file " + evioFile); + EvioReader reader = null; + try { + reader = new EvioReader(evioFile); + } catch (Exception e) { + throw new RuntimeException(e); + } + + // Run the event builder on the EVIO. + EvioEvent evioEvent = null; + while ((evioEvent = reader.nextEvent()) != null) { + reader.parseEvent(evioEvent); + builder.readEvioEvent(evioEvent); + if (EventConstants.isPhysicsEvent(evioEvent)) { + try { + EventHeader lcsimEvent = builder.makeLCSimEvent(evioEvent); + System.out.println("created LCSim event #" + lcsimEvent.getEventNumber()); + writer.write(lcsimEvent); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + // Close the LCIO writer. + writer.flush(); + writer.close(); } }