Commit in hps-java/src/main/java/org/lcsim/hps/recon/ecal on MAIN
HPSEcalTimeEvolutionReadoutDriver.java+85-831.7 -> 1.8
fixed a dumb time offset mistake

hps-java/src/main/java/org/lcsim/hps/recon/ecal
HPSEcalTimeEvolutionReadoutDriver.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- HPSEcalTimeEvolutionReadoutDriver.java	2 Sep 2011 21:17:49 -0000	1.7
+++ HPSEcalTimeEvolutionReadoutDriver.java	7 Sep 2011 00:22:55 -0000	1.8
@@ -1,84 +1,86 @@
-package org.lcsim.hps.recon.ecal;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.lcsim.event.CalorimeterHit;
-import org.lcsim.geometry.IDDecoder;
-import org.lcsim.hps.util.ClockSingleton;
-import org.lcsim.hps.util.RingBuffer;
-
-/**
- * Performs readout of ECal hits.
- * Simulates time evolution of preamp output pulse.
- * 
- * @author Sho Uemura <[log in to unmask]>
- * @version $Id: HPSEcalTimeEvolutionReadoutDriver.java,v 1.7 2011/09/02 21:17:49 meeg Exp $
- */
-public class HPSEcalTimeEvolutionReadoutDriver extends HPSEcalReadoutDriver {
-
-    //buffer for deposited energy
-    Map<Long, RingBuffer> eDepMap = null;
-    //length of ring buffer (in readout cycles)
-    int bufferLength = 20;
-    //shaper time constant in ns
-    double t0 = 18.0;
-
-    public HPSEcalTimeEvolutionReadoutDriver() {
-    }
-
-    public void setBufferLength(int bufferLength) {
-        this.bufferLength = bufferLength;
-        eDepMap = new HashMap<Long, RingBuffer>();
-    }
-
-    public List<HPSRawCalorimeterHit> readHits() {
-        IDDecoder dec = ecal.getIDDecoder();
-        List<HPSRawCalorimeterHit> hitList = new ArrayList<HPSRawCalorimeterHit>();
-        for (Long cellID : eDepMap.keySet()) {
-            RingBuffer eDepBuffer = eDepMap.get(cellID);
-            if (eDepBuffer.currentValue() > threshold) {
-                dec.setID(cellID);
-                hitList.add(new HPSRawCalorimeterHit(eDepBuffer.currentValue(), dec.getPosition(), 0.0, cellID, hitType));
-            }
-            eDepBuffer.step();
-        }
-        return hitList;
-    }
-
-    public void putHits(List<CalorimeterHit> hits) {
-        //fill the readout buffers
-        for (CalorimeterHit hit : hits) {
-            IDDecoder dec = ecal.getIDDecoder();
-            dec.setID(hit.getCellID());
-//            int ix = dec.getValue("ix");
-//            int iy = dec.getValue("iy");
-//            //temporary hack to disable crystals and flip X coordinate
-//            int side = dec.getValue("side");
-//            if (iy == 1 && ix * side >= -10 && ix * side <= -2)
-//                continue;
-
-            RingBuffer eDepBuffer = eDepMap.get(hit.getCellID());
-            if (eDepBuffer == null) {
-                eDepBuffer = new RingBuffer(bufferLength);
-                eDepMap.put(hit.getCellID(), eDepBuffer);
-            }
-            for (int i = 0; i < bufferLength; i++) {
-                eDepBuffer.addToCell(i, hit.getRawEnergy() * pulseAmplitude(i * ClockSingleton.getDt() * readoutCycle - hit.getTime()));
-            }
-        }
-    }
-
-    public void initReadout() {
-        //initialize buffers
-        eDepMap = new HashMap<Long, RingBuffer>();
-    }
-
-    private double pulseAmplitude(double time) {
-        if (time < 0.0)
-            return 0.0;
-        return (time / t0) * Math.exp(1.0 - time / t0);
-    }
+package org.lcsim.hps.recon.ecal;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.lcsim.event.CalorimeterHit;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.hps.util.ClockSingleton;
+import org.lcsim.hps.util.RingBuffer;
+
+/**
+ * Performs readout of ECal hits.
+ * Simulates time evolution of preamp output pulse.
+ *
+ * @author Sho Uemura <[log in to unmask]>
+ * @version $Id: HPSEcalTimeEvolutionReadoutDriver.java,v 1.8 2011/09/07 00:22:55 meeg Exp $
+ */
+public class HPSEcalTimeEvolutionReadoutDriver extends HPSEcalReadoutDriver {
+
+    //buffer for deposited energy
+    Map<Long, RingBuffer> eDepMap = null;
+    //length of ring buffer (in readout cycles)
+    int bufferLength = 20;
+    //shaper time constant in ns
+    double t0 = 18.0;
+
+    public HPSEcalTimeEvolutionReadoutDriver() {
+    }
+
+    public void setBufferLength(int bufferLength) {
+        this.bufferLength = bufferLength;
+        eDepMap = new HashMap<Long, RingBuffer>();
+    }
+
+    public List<HPSRawCalorimeterHit> readHits() {
+        IDDecoder dec = ecal.getIDDecoder();
+        List<HPSRawCalorimeterHit> hitList = new ArrayList<HPSRawCalorimeterHit>();
+        for (Long cellID : eDepMap.keySet()) {
+            RingBuffer eDepBuffer = eDepMap.get(cellID);
+            if (eDepBuffer.currentValue() > threshold) {
+                dec.setID(cellID);
+//                int ix = dec.getValue("ix");
+//                int iy = dec.getValue("iy");
+//                if (iy == 1 && ix == -2)
+//                    System.out.printf("Time %f, output signal %f\n", ClockSingleton.getTime(), eDepBuffer.currentValue());
+                hitList.add(new HPSRawCalorimeterHit(eDepBuffer.currentValue(), dec.getPosition(), 0.0, cellID, hitType));
+            }
+            eDepBuffer.step();
+        }
+        return hitList;
+    }
+
+    public void putHits(List<CalorimeterHit> hits) {
+        //fill the readout buffers
+        for (CalorimeterHit hit : hits) {
+            IDDecoder dec = ecal.getIDDecoder();
+            dec.setID(hit.getCellID());
+//            int ix = dec.getValue("ix");
+//            int iy = dec.getValue("iy");
+//            if (iy == 1 && ix == -2)
+//                System.out.printf("Time %f, input hit %f)\n", ClockSingleton.getTime() + hit.getTime(), hit.getRawEnergy());
+
+            RingBuffer eDepBuffer = eDepMap.get(hit.getCellID());
+            if (eDepBuffer == null) {
+                eDepBuffer = new RingBuffer(bufferLength);
+                eDepMap.put(hit.getCellID(), eDepBuffer);
+            }
+            for (int i = 0; i < bufferLength; i++) {
+                eDepBuffer.addToCell(i, hit.getRawEnergy() * pulseAmplitude(ClockSingleton.getDt() * ((i+1) * readoutCycle - ClockSingleton.getClock() % readoutCycle) - hit.getTime()));
+            }
+        }
+    }
+
+    public void initReadout() {
+        //initialize buffers
+        eDepMap = new HashMap<Long, RingBuffer>();
+    }
+
+    private double pulseAmplitude(double time) {
+        if (time < 0.0)
+            return 0.0;
+        return (time / t0) * Math.exp(1.0 - time / t0);
+    }
 }
\ No newline at end of file
CVSspam 0.2.8