Commit in lcsim/src/org/lcsim/contrib/SiStripSim on MAIN
SiTrackerHitStrip1DConverter.java+85added 1.1
This is a HepRepConverter that draws the line segment associated with SiTrackerHitStrip1D objects.

lcsim/src/org/lcsim/contrib/SiStripSim
SiTrackerHitStrip1DConverter.java added at 1.1
diff -N SiTrackerHitStrip1DConverter.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SiTrackerHitStrip1DConverter.java	27 Dec 2007 02:08:40 -0000	1.1
@@ -0,0 +1,85 @@
+/*
+ * SiTrackerHitStrip1DConverter.java
+ *
+ * Created on December 26, 2007, 4:09 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.lcsim.contrib.SiStripSim;
+
+import hep.graphics.heprep.HepRepFactory;
+import hep.graphics.heprep.HepRepInstance;
+import hep.graphics.heprep.HepRepInstanceTree;
+import hep.graphics.heprep.HepRepType;
+import hep.graphics.heprep.HepRepTypeTree;
+import java.awt.Color;
+import java.util.List;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.detector.solids.Point3D;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.util.heprep.HepRepCollectionConverter;
+import org.lcsim.util.heprep.LCSimHepRepConverter;
+
+/**
+ *
+ * @author cozzy
+ *
+ *  This is a converter for SiTrackerHit1D objects. It draws the hit segment
+ *  for each instance. 
+ *
+ * 1) To enable this converter, you must modify org.lcsim.util.heprep.LCSimHepRepConverter
+ *    by adding the line "register(new SiTrackerHitStrip1DConverter());" where 
+ *    all the other register statements are (you'll also have to import this class)
+ *
+ * 2) Since SiTrackerHitStrip1D implements TrackerHit, TrackerHitConverter will 
+ *    also fire and draw a marker for each of these. This can be disabled by 
+ *    modifying org.lcsim.util.heprep.TrackerHitConverter so that it ignores 
+ *    any hits that may be cast as SiTrackerHitStrip1DConverter (try-catch is 
+ *    your friend).
+ *    
+ */
+public class SiTrackerHitStrip1DConverter implements HepRepCollectionConverter {
+    
+    /** Creates a new instance of SiTrackerHitStrip1DConverter */
+    public SiTrackerHitStrip1DConverter() {
+    }
+    
+    public boolean canHandle(Class k){
+        return TrackerHit.class.isAssignableFrom(k);
+    }
+    
+    public void convert(EventHeader event, List collection, HepRepFactory factory, HepRepTypeTree typeTree, HepRepInstanceTree instanceTree) {
+        
+        //Check if the TrackerHit can be cast as an SiTrackerHitStrip1D 
+        try { ((List<SiTrackerHitStrip1D>)collection).get(0); }
+        catch (ClassCastException cce) { return; }
+        
+        LCMetaData meta = event.getMetaData(collection);
+        String name = meta.getName()+"_Strip1D"; //added string because TrackerHitConverter will also fire on this collection... 
+        
+        HepRepType type = factory.createHepRepType(typeTree,name);
+        type.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER); 
+        type.addAttValue("drawAs","Line"); 
+        type.addAttValue("color",Color.GREEN);
+        
+        type.addAttDef("dEdx","Hit dEdx", "physics","");
+        type.addAttDef("time","Hit time", "physics","");
+        
+        
+        for (SiTrackerHitStrip1D hit : (List<SiTrackerHitStrip1D>) collection) {
+            
+            HepRepInstance instance = factory.createHepRepInstance(instanceTree,type); 
+            instance.addAttValue("dEdx",hit.getdEdx());
+            instance.addAttValue("time",hit.getTime());
+            
+            for (Point3D p : hit.getHitSegment().getPoints()) {
+            
+                factory.createHepRepPoint(instance,p.x(),p.y(),p.z()); 
+            }
+        }
+    }
+    
+}
CVSspam 0.2.8