Commit in lcsim/src/org/lcsim/contrib/SiStripSim on MAIN
SiliconReadoutDriver.java+115added 1.1
Initial prototype of silicon readout driver.

lcsim/src/org/lcsim/contrib/SiStripSim
SiliconReadoutDriver.java added at 1.1
diff -N SiliconReadoutDriver.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SiliconReadoutDriver.java	20 Apr 2007 06:32:23 -0000	1.1
@@ -0,0 +1,115 @@
+/*
+ * SiliconReadoutDriver.java
+ *
+ * Created on April 19, 2007, 4:28 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.lcsim.contrib.SiStripSim;
+
+import org.lcsim.util.Driver;
+import org.lcsim.event.EventHeader;
+import org.lcsim.geometry.Detector;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.ITransform3D;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.util.aida.AIDA;
+import org.lcsim.detector.tracker.silicon.SiSensor;
+import org.lcsim.detector.tracker.silicon.TrackSegment;
+
+import hep.physics.vec.BasicHep3Vector;
+import hep.physics.vec.Hep3Vector;
+import hep.physics.vec.VecOp;
+
+import java.util.List;
+import java.util.Set;
+import java.util.HashSet;
+
+/**
+ *
+ * @author tknelson
+ */
+public class SiliconReadoutDriver extends Driver
+{
+    
+    // Fields
+    private String _input_hit_collection = "TkrBarrHits";
+    private List<SimTrackerHit> _hits = null;
+    private LCMetaData _metadata = null;
+    private IDDecoder _decoder = null;
+    private AIDA _aida = AIDA.defaultInstance();
+    private boolean _make_histograms = false;
+    
+    /** Creates a new instance of SiliconReadoutDriver */
+    public SiliconReadoutDriver()
+    {
+    }
+    
+    
+    protected void process(EventHeader event)
+    {
+        // Get detector and print out tracking subdetector names
+        Detector detector = event.getDetector();
+        
+        // Get the barrel tracker attributes
+        IDetectorElement barrel = detector.getSubdetector("TrackerBarrel").getDetectorElement();
+        
+        // Get the SimTrackerHits and metadata
+        _hits = event.getSimTrackerHits(_input_hit_collection);
+//        _metadata = event.getMetaData(_hits);
+//        _decoder = _metadata.getIDDecoder();
+        
+        // Print out number of hits
+        if (_make_histograms) _aida.cloud1D("nHitsTotal").fill(_hits.size());
+                
+        // set of sensors with hits
+        Set<SiSensor> hit_sensors = new HashSet<SiSensor>();
+        
+        for (SimTrackerHit hit : _hits)
+        {
+//            _decoder.setID(hit.getCellID());
+
+            // Create track segment in global coordinates
+            Hep3Vector midpoint = new BasicHep3Vector(hit.getPoint());
+            Hep3Vector direction = VecOp.unit(new BasicHep3Vector(hit.getMomentum()));
+            Hep3Vector half_length = VecOp.mult(hit.getPathLength()/2.0,direction);
+
+            Hep3Vector p1 = VecOp.add(midpoint,VecOp.mult(-1.0,half_length));
+            Hep3Vector p2 = VecOp.add(midpoint,half_length);
+
+            double energy = hit.getdEdx();
+            
+            TrackSegment track_segment = new TrackSegment(p1,p2,energy);
+            
+            // Find the sensor for this hit, add to list of hit sensors
+            SiSensor sensor = (SiSensor)barrel.findDetectorElement(midpoint);
+            hit_sensors.add(sensor);
+            
+            // Transform track segment to sensor coordinates and assign to sensor
+            ITransform3D global_to_sensor = sensor.getGeometry().getGlobalToLocal();
+            track_segment.transform(global_to_sensor);
+            sensor.addTrackSegment(track_segment);                        
+        }
+        
+        // Loop over sensors
+        for (SiSensor sensor : hit_sensors)
+        {
+            // deposit charge
+            sensor.depositCharge();
+            
+            // readout
+//          List<RawTrackerHit> raw_hits = readout_chip.readout(sensor);            
+            
+            
+        }
+
+        
+        
+    }
+    
+    
+}
CVSspam 0.2.8