Commit in lcsim/src/org/lcsim/util/heprep on MAIN
DisplayHitModules.java+117added 1.1
SiTrackerHitStrip1DConverter.java+76added 1.1
LCSimHepRepConverter.java+21.16 -> 1.17
+195
2 added + 1 modified, total 3 files
Enabled display converters to show modules that have been hit (in new detectors) and line between start and points (for SiTrackerHitStrip1D objects). LCSimHepRepConverter now registers those classes and those classes have been moved to org.lcsim.util.heprep with the other collection converters.

lcsim/src/org/lcsim/util/heprep
DisplayHitModules.java added at 1.1
diff -N DisplayHitModules.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ DisplayHitModules.java	10 Jan 2008 00:57:58 -0000	1.1
@@ -0,0 +1,117 @@
+/*
+ * DisplayHitModules.java
+ *
+ * Created on December 14, 2007, 1:43 PM
+ *
+ * To change this template, choose Tools | Template Manager
+ * and open the template in the editor.
+ */
+
+package org.lcsim.util.heprep;
+
+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 hep.physics.vec.Hep3Vector;
+import java.awt.Color;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+import org.lcsim.detector.DetectorElementStore;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IDetectorElementContainer;
+import org.lcsim.detector.IGeometryInfo;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.Identifier;
+import org.lcsim.detector.solids.IPolyhedron;
+import org.lcsim.detector.solids.ISolid;
+import org.lcsim.detector.solids.Point3D;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.event.SimTrackerHit;
+import org.lcsim.geometry.Subdetector;
+import org.lcsim.geometry.subdetector.SiTrackerBarrel;
+import org.lcsim.geometry.subdetector.SiTrackerEndcap;
+
+/**
+ * Converter that draws modules and sensors that have hits in them. 
+ * Everything is drawn in the event layer. 
+ *
+ */
+public class DisplayHitModules implements HepRepCollectionConverter{
+    
+    
+    /** Creates a new instance of DisplayHitModules */
+    public DisplayHitModules() {
+    }
+    
+
+    public boolean canHandle(Class k) {
+        return (SimTrackerHit.class.isAssignableFrom(k)); 
+    }
+
+    public void convert(EventHeader event, List collection, HepRepFactory factory, HepRepTypeTree typeTree, HepRepInstanceTree instanceTree) {
+    
+        LCMetaData data = event.getMetaData(collection);
+        Subdetector sub = data.getIDDecoder().getSubdetector();    
+        if (!(sub instanceof SiTrackerBarrel || sub instanceof SiTrackerEndcap)) return; //ignore older detectors
+        
+        String collection_name = event.getMetaData(collection).getName();
+        
+        //sensor type    
+        HepRepType typeS = factory.createHepRepType(typeTree,"HitSensor"+collection_name);
+        typeS.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER); 
+        typeS.addAttValue("drawAs","prism"); 
+        typeS.addAttValue("color",Color.WHITE);
+               
+        //module type
+        HepRepType typeM = factory.createHepRepType(typeTree,"HitModule"+collection_name);
+        typeM.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER);
+        typeM.addAttValue("drawAs","prism"); 
+        typeM.addAttValue("color",Color.WHITE);
+        
+        Set<Integer> alreadyMade = new HashSet<Integer>(); //don't want to draw the same thing multiple times if there are multiple SimHits in a sensor. 
+        
+        for (SimTrackerHit h : (List<SimTrackerHit>) collection) {
+            
+            //get the right sensor
+            IIdentifier id = new Identifier(h.getCellID()); 
+            IDetectorElementContainer de = DetectorElementStore.getInstance().find(id); 
+            IDetectorElement sensor = de.get(0);
+            
+            //make sure we don't have repeats
+            Integer hash = Integer.valueOf(sensor.hashCode());
+            if (alreadyMade.contains(hash)) continue; 
+            alreadyMade.add(hash); 
+            
+            //get the module from the sensor 
+            IDetectorElement module = sensor.getParent(); 
+            
+            drawPolyhedron(sensor,typeS,instanceTree,factory); 
+            drawPolyhedron(module,typeM,instanceTree,factory); 
+            
+        }
+    }
+    
+    private void drawPolyhedron(IDetectorElement detelem, HepRepType type,HepRepInstanceTree instanceTree, HepRepFactory factory) {
+        
+        ISolid solid = detelem.getGeometry().getLogicalVolume().getSolid(); 
+        if (!(solid instanceof IPolyhedron)) return; 
+        IPolyhedron poly = (IPolyhedron) solid; 
+        
+        List<Point3D> points = poly.getVertices(); 
+        int[] point_ordering = poly.getHepRepVertexOrdering();
+        
+        HepRepInstance instance = factory.createHepRepInstance(instanceTree,type); 
+        
+        for (int i = 0; i< point_ordering.length; i++) {
+            Hep3Vector p = detelem.getGeometry().transformLocalToGlobal(points.get(point_ordering[i]));
+            factory.createHepRepPoint(instance,p.x(),p.y(),p.z()); 
+        }
+    }
+    
+}

lcsim/src/org/lcsim/util/heprep
SiTrackerHitStrip1DConverter.java added at 1.1
diff -N SiTrackerHitStrip1DConverter.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SiTrackerHitStrip1DConverter.java	10 Jan 2008 00:57:58 -0000	1.1
@@ -0,0 +1,76 @@
+/*
+ * 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.util.heprep;
+
+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.contrib.SiStripSim.*;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.detector.solids.Point3D;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.EventHeader.LCMetaData;
+
+/**
+ *
+ * @author cozzy
+ *
+ *  This is a converter for SiTrackerHit1D objects. It draws the hit segment
+ *  for each instance. 
+ *
+ * Since SiTrackerHitStrip1D implements TrackerHit, TrackerHitConverter will 
+ * also fire and draw a marker for each of these. 
+ *    
+ */
+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 
+        if (!(collection.get(0) instanceof SiTrackerHitStrip1D)) 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()); 
+            }
+        }
+    }
+    
+}

lcsim/src/org/lcsim/util/heprep
LCSimHepRepConverter.java 1.16 -> 1.17
diff -u -r1.16 -r1.17
--- LCSimHepRepConverter.java	20 Sep 2007 23:20:31 -0000	1.16
+++ LCSimHepRepConverter.java	10 Jan 2008 00:57:58 -0000	1.17
@@ -47,6 +47,8 @@
             register(new ZvVertexConverter());
             register(new VertexConverter());
             register(new Hep3VectorConverter());
+            register(new DisplayHitModules());
+            register(new SiTrackerHitStrip1DConverter()); 
         }
         catch (Exception x)
         {
CVSspam 0.2.8