Author: [log in to unmask] Date: Thu Mar 26 21:03:15 2015 New Revision: 2586 Log: add stuff to example driver, put back a workaround I removed in ECalEvioReader Modified: java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java java/trunk/evio/src/main/java/org/hps/evio/LCSimEngRunEventBuilder.java java/trunk/users/src/main/java/org/hps/users/meeg/TDCPrintDriver.java Modified: java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java ============================================================================= --- java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java (original) +++ java/trunk/evio/src/main/java/org/hps/evio/ECalEvioReader.java Thu Mar 26 21:03:15 2015 @@ -7,7 +7,6 @@ import java.util.Map; import java.util.logging.Level; import java.util.logging.Logger; - import org.hps.conditions.database.DatabaseConditionsManager; import org.hps.conditions.ecal.EcalChannel; import org.hps.conditions.ecal.EcalChannel.DaqId; @@ -22,10 +21,12 @@ import org.jlab.coda.jevio.EvioEvent; import org.jlab.coda.jevio.EvioException; import org.lcsim.detector.identifier.IIdentifierHelper; +import org.lcsim.detector.identifier.Identifier; import org.lcsim.event.EventHeader; import org.lcsim.event.LCRelation; import org.lcsim.event.RawCalorimeterHit; import org.lcsim.event.RawTrackerHit; +import org.lcsim.event.SimTrackerHit; import org.lcsim.event.base.BaseLCRelation; import org.lcsim.event.base.BaseRawCalorimeterHit; import org.lcsim.event.base.BaseRawTrackerHit; @@ -202,12 +203,17 @@ return foundHits; } - private static BaseRawTrackerHit makeECalRawHit(int time, long id, CompositeData cdata, int nSamples) { + private BaseRawTrackerHit makeECalRawHit(int time, long id, CompositeData cdata, int nSamples) { short[] adcValues = new short[nSamples]; for (int i = 0; i < nSamples; i++) { adcValues[i] = cdata.getShort(); } - return new BaseRawTrackerHit(id, time, adcValues); + return new BaseRawTrackerHit( // need to use the complicated constructor, simhit collection can't be null + time, + id, + adcValues, + new ArrayList<SimTrackerHit>(), + subDetector.getDetectorElement().findDetectorElement(new Identifier(id)).get(0)); } private static FADCGenericHit makeGenericRawHit(int mode, int crate, short slot, short channel, CompositeData cdata, int nSamples) { 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 Thu Mar 26 21:03:15 2015 @@ -51,6 +51,7 @@ intBanks = new ArrayList<IntBankDefinition>(); intBanks.add(new IntBankDefinition(SSPData.class, new int[]{sspCrateBankTag, sspBankTag})); intBanks.add(new IntBankDefinition(TIData.class, new int[]{sspCrateBankTag, 0xe10a})); + intBanks.add(new IntBankDefinition(TDCData.class, new int[]{0x2d, 0xe107})); intBanks.add(new IntBankDefinition(TDCData.class, new int[]{0x3a, 0xe107})); // ecalReader = new ECalEvioReader(0x25, 0x27); triggerConfigReader = new TriggerConfigEvioReader(); Modified: java/trunk/users/src/main/java/org/hps/users/meeg/TDCPrintDriver.java ============================================================================= --- java/trunk/users/src/main/java/org/hps/users/meeg/TDCPrintDriver.java (original) +++ java/trunk/users/src/main/java/org/hps/users/meeg/TDCPrintDriver.java Thu Mar 26 21:03:15 2015 @@ -1,12 +1,17 @@ package org.hps.users.meeg; +import java.util.ArrayList; import java.util.List; +import org.hps.conditions.database.DatabaseConditionsManager; +import org.hps.conditions.ecal.EcalConditions; import org.hps.recon.ecal.FADCGenericHit; import org.hps.recon.ecal.triggerbank.AbstractIntData; import org.hps.recon.ecal.triggerbank.TDCData; import org.hps.recon.ecal.triggerbank.TDCData.TDCHit; import org.lcsim.event.EventHeader; import org.lcsim.event.GenericObject; +import org.lcsim.event.RawTrackerHit; +import org.lcsim.geometry.Detector; import org.lcsim.util.Driver; /** @@ -16,31 +21,67 @@ */ public class TDCPrintDriver extends Driver { + private static EcalConditions ecalConditions = null; + private boolean printADC = false; + + public void setPrintADC(boolean printADC) { + this.printADC = printADC; + } + + protected void detectorChanged(Detector detector) { + ecalConditions = DatabaseConditionsManager.getInstance().getEcalConditions(); + } + @Override protected void process(EventHeader event) { - TDCData tdcData = null; + List<TDCData> allTDCData = new ArrayList<TDCData>(); List<GenericObject> objects = event.get(GenericObject.class, "FADCGenericHits"); for (GenericObject object : objects) { if (FADCGenericHit.getReadoutMode(object) == 1) { // EventConstants.ECAL_WINDOW_MODE - System.out.format("Raw mode hit, crate %d, slot %d, channel %d\n", FADCGenericHit.getCrate(object), FADCGenericHit.getSlot(object), FADCGenericHit.getChannel(object)); + System.out.format("Non-ECal raw mode hit, crate %d, slot %d, channel %d\n", FADCGenericHit.getCrate(object), FADCGenericHit.getSlot(object), FADCGenericHit.getChannel(object)); int[] data = FADCGenericHit.getData(object); //do stuff with data - for (int i = 0; i < data.length; i++) { - System.out.println(data[i]); + if (printADC) { + for (int i = 0; i < data.length; i++) { + System.out.println(data[i]); + } } + } + } + + if (event.hasCollection(RawTrackerHit.class, "EcalReadoutHits")) { + List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, "EcalReadoutHits"); + for (RawTrackerHit hit : rawHits) { + int crate = ecalConditions.getChannelCollection().findGeometric(hit.getCellID()).getCrate(); + int slot = ecalConditions.getChannelCollection().findGeometric(hit.getCellID()).getSlot(); + int channel = ecalConditions.getChannelCollection().findGeometric(hit.getCellID()).getChannel(); + System.out.format("Raw mode hit, crate %d, slot %d, channel %d, ix %d, iy %d\n", crate, slot, channel, hit.getIdentifierFieldValue("ix"), hit.getIdentifierFieldValue("iy")); + short[] data = hit.getADCValues(); //do stuff with data + if (printADC) { + for (int i = 0; i < data.length; i++) { + System.out.println(data[i]); + } + } + } } List<GenericObject> intDataCollection = event.get(GenericObject.class, "TriggerBank"); for (GenericObject data : intDataCollection) { + TDCData tdcData = null; if (data instanceof TDCData) { tdcData = (TDCData) data; } else if (AbstractIntData.getTag(data) == TDCData.BANK_TAG) { tdcData = new TDCData(data); } + if (tdcData != null) { + allTDCData.add(tdcData); + } } - - for (TDCHit hit : tdcData.getHits()) { - System.out.println(hit); + for (TDCData tdcData : allTDCData) { + System.out.println("got a TDCData"); + for (TDCHit hit : tdcData.getHits()) { + System.out.println(hit); + } } }