Print

Print


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);
+            }
         }
 
     }