Commit in lcsim/src/org/lcsim/util/heprep on MAIN
SiTrackerHitStrip2DConverter.java+94added 1.1
DisplayHitModules.java+24-171.2 -> 1.3
SiTrackerHitStrip1DConverter.java+37-151.3 -> 1.4
LCSimHepRepConverter.java+2-11.18 -> 1.19
HelicalTrackHitConverter.java+5-21.1 -> 1.2
+162-35
1 added + 4 modified, total 5 files
CD - event display stuff...

lcsim/src/org/lcsim/util/heprep
SiTrackerHitStrip2DConverter.java added at 1.1
diff -N SiTrackerHitStrip2DConverter.java
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ SiTrackerHitStrip2DConverter.java	15 May 2008 09:19:54 -0000	1.1
@@ -0,0 +1,94 @@
+/*
+ * SiTrackerHitStrip2DConverter.java
+ *
+ * Created on January 16, 2008, 1:20 PM
+ *
+ */
+
+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.SiTrackerHitStrip2D;
+import org.lcsim.detector.IDetectorElement;
+import org.lcsim.event.EventHeader;
+import org.lcsim.event.TrackerHit;
+import org.lcsim.util.heprep.HepRepCollectionConverter;
+import org.lcsim.event.EventHeader.LCMetaData;
+import org.lcsim.util.heprep.LCSimHepRepConverter;
+
+/**
+ *
+ * @author cozzy <[log in to unmask]>
+ */
+public class SiTrackerHitStrip2DConverter implements HepRepCollectionConverter{
+    
+    public SiTrackerHitStrip2DConverter() {
+    }
+    
+    public boolean canHandle(Class k){
+        return TrackerHit.class.isAssignableFrom(k);
+    }
+
+    public void convert(EventHeader event, List collection, HepRepFactory factory, HepRepTypeTree typeTree, HepRepInstanceTree instanceTree) {
+        
+        //make sure we have the right type of object... 
+        if (collection.isEmpty() || !(collection.get(0) instanceof SiTrackerHitStrip2D)) return; 
+        
+        
+        LCMetaData meta = event.getMetaData(collection); 
+        String name = meta.getName()+"_Strip2D"; //add string because TrackerHitConverter will also fire on this collection... 
+        
+        HepRepType ptType = factory.createHepRepType(typeTree,name); 
+        ptType.addAttValue("layer", LCSimHepRepConverter.HITS_LAYER); 
+        ptType.addAttValue("drawAs", "Point"); 
+        
+        ptType.addAttDef("dEdx","Hit dEdx", "physics","");
+        ptType.addAttDef("time","Hit time", "physics","");
+        ptType.addAttDef("isGhost","Whether or not the hit is a ghost","physics",""); 
+        ptType.addAttDef("numrawhits", "Number of contributing raw hits","physics","");
+        ptType.addAttDef("numsimhits", "Number of SimTrackerHits","physics","");
+        
+        HepRepType normalType = factory.createHepRepType(ptType,"Normal Hits");
+        HepRepType noiseType = factory.createHepRepType(ptType,"Noise Hits");
+        
+        normalType.addAttValue("color",Color.RED);
+        noiseType.addAttValue("Color",Color.MAGENTA); 
+        
+         // Draw modules for noise hits because they don't have associated SimTrackerhits 
+        HepRepType moduleType = DisplayHitModules.getModuleType(factory, typeTree, name+"_noiseModules");
+        HepRepType sensorType = DisplayHitModules.getSensorType(factory, typeTree, name+"_noiseSensors");
+        
+        
+        for (SiTrackerHitStrip2D hit : (List<SiTrackerHitStrip2D>) collection) {
+            
+            HepRepInstance instance; 
+            
+            if (!hit.getSimHits().isEmpty()) {
+                instance = factory.createHepRepInstance(instanceTree, normalType);
+            }
+            else {
+                instance = factory.createHepRepInstance(instanceTree, noiseType);
+                IDetectorElement sensor = hit.getSensor(); 
+                IDetectorElement module = sensor.getParent(); 
+                DisplayHitModules.drawPolyhedron(module, moduleType, instanceTree, factory);
+                DisplayHitModules.drawPolyhedron(sensor, sensorType, instanceTree, factory);
+            }
+            instance.addAttValue("dEdx", hit.getdEdx());
+            instance.addAttValue("time", hit.getTime());
+            instance.addAttValue("isGhost", hit.isGhost());
+            instance.addAttValue("numrawhits", hit.getRawHits().size());
+            instance.addAttValue("numsimhits", hit.getSimHits().size()); 
+            
+            
+            double[] p = hit.getPosition();
+            
+            factory.createHepRepPoint(instance,p[0],p[1],p[2]); 
+        }   
+    }
+}

lcsim/src/org/lcsim/util/heprep
DisplayHitModules.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- DisplayHitModules.java	11 Feb 2008 22:47:53 -0000	1.2
+++ DisplayHitModules.java	15 May 2008 09:19:54 -0000	1.3
@@ -16,15 +16,12 @@
 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;
@@ -60,21 +57,17 @@
         Subdetector sub = data.getIDDecoder().getSubdetector();    
         if (!(sub instanceof SiTrackerBarrel || sub instanceof SiTrackerEndcap)) return; //ignore older detectors
         
+        if (DetectorElementStore.getInstance().isEmpty()) return; 
+        
         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);
+        HepRepType typeS = getSensorType(factory, typeTree, collection_name);
                
         //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);
+        HepRepType typeM = getModuleType(factory, typeTree, collection_name);
         
-        Set<Integer> alreadyMade = new HashSet<Integer>(); //don't want to draw the same thing multiple times if there are multiple SimHits in a sensor. 
+        Set<IDetectorElement> alreadyMade = new HashSet<IDetectorElement>(); 
         
         for (SimTrackerHit h : (List<SimTrackerHit>) collection) {
             
@@ -87,10 +80,7 @@
             	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); 
+            	if (!alreadyMade.add(sensor)) continue; 
             
             	//get the module from the sensor 
             	IDetectorElement module = sensor.getParent(); 
@@ -101,7 +91,7 @@
         }
     }
     
-    private void drawPolyhedron(IDetectorElement detelem, HepRepType type,HepRepInstanceTree instanceTree, HepRepFactory factory) {
+    public static void drawPolyhedron(IDetectorElement detelem, HepRepType type, HepRepInstanceTree instanceTree, HepRepFactory factory) {
         
         ISolid solid = detelem.getGeometry().getLogicalVolume().getSolid(); 
         if (!(solid instanceof IPolyhedron)) return; 
@@ -118,4 +108,21 @@
         }
     }
     
+    public static HepRepType getSensorType(HepRepFactory factory, HepRepTypeTree typeTree, String collection_name){
+        
+        HepRepType typeS = factory.createHepRepType(typeTree,"HitSensor"+collection_name);
+        typeS.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER); 
+        typeS.addAttValue("drawAs","prism"); 
+        typeS.addAttValue("color",Color.WHITE);
+        return typeS; 
+    }
+    
+    public static HepRepType getModuleType(HepRepFactory factory, HepRepTypeTree typeTree, String collection_name){
+        
+        HepRepType typeM = factory.createHepRepType(typeTree,"HitModule"+collection_name);
+        typeM.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER);
+        typeM.addAttValue("drawAs","prism"); 
+        typeM.addAttValue("color",Color.WHITE);
+        return typeM; 
+    }
 }

lcsim/src/org/lcsim/util/heprep
SiTrackerHitStrip1DConverter.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- SiTrackerHitStrip1DConverter.java	27 Mar 2008 20:19:55 -0000	1.3
+++ SiTrackerHitStrip1DConverter.java	15 May 2008 09:19:54 -0000	1.4
@@ -17,6 +17,7 @@
 import java.awt.Color;
 import java.util.List;
 import org.lcsim.contrib.SiStripSim.*;
+import org.lcsim.detector.IDetectorElement;
 import org.lcsim.event.TrackerHit;
 import org.lcsim.detector.solids.Point3D;
 import org.lcsim.event.EventHeader;
@@ -46,30 +47,51 @@
     public void convert(EventHeader event, List collection, HepRepFactory factory, HepRepTypeTree typeTree, HepRepInstanceTree instanceTree) 
     {        
         // Check if the TrackerHit can be cast to a SiTrackerHitStrip1D.
-    	if (collection.size() != 0)
-    	{
-    		if (!(collection.get(0) instanceof SiTrackerHitStrip1D)) return;
-    	}
+    	if (collection.isEmpty() || !(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","");
-                
+        HepRepType parentType = factory.createHepRepType(typeTree,name);
+        parentType.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER); 
+        parentType.addAttValue("drawAs","Line"); 
+        
+        parentType.addAttDef("dEdx","Hit dEdx", "physics","");
+        parentType.addAttDef("time","Hit time", "physics","");
+        parentType.addAttDef("length","Hit Length", "physics", "");
+        parentType.addAttDef("numsimhits", "Number of SimTrackerHits","physics","");
+        parentType.addAttDef("numrawhits", "Number of contributing raw hits","physics","");
+        HepRepType normalType = factory.createHepRepType(parentType,"Normal Hits");
+        HepRepType noiseType = factory.createHepRepType(parentType,"Noise Hits");
+        
+        normalType.addAttValue("color",Color.GREEN);
+        noiseType.addAttValue("Color",Color.MAGENTA); 
+        
+        // Draw modules for noise hits because they don't have associated SimTrackerhits 
+        HepRepType moduleType = DisplayHitModules.getModuleType(factory, typeTree, name+"_noiseModules");
+        HepRepType sensorType = DisplayHitModules.getSensorType(factory, typeTree, name+"_noiseSensors");
+        
         for (SiTrackerHitStrip1D hit : (List<SiTrackerHitStrip1D>) collection) 
         {            
-            HepRepInstance instance = factory.createHepRepInstance(instanceTree,type); 
+            HepRepInstance instance; 
+            
+            if (!hit.getSimHits().isEmpty()) {
+                instance = factory.createHepRepInstance(instanceTree,normalType); 
+            }
+            else {
+                instance = factory.createHepRepInstance(instanceTree, noiseType);
+                IDetectorElement sensor = hit.getSensor(); 
+                IDetectorElement module = sensor.getParent(); 
+                DisplayHitModules.drawPolyhedron(module, moduleType, instanceTree, factory);
+                DisplayHitModules.drawPolyhedron(sensor, sensorType, instanceTree, factory);
+            }
             instance.addAttValue("dEdx",hit.getdEdx());
             instance.addAttValue("time",hit.getTime());
+            instance.addAttValue("length",hit.getHitLength());
+            instance.addAttValue("numsimhits",hit.getSimHits().size());
+            instance.addAttValue("numrawhits",hit.getRawHits().size());
             
-            for (Point3D p : hit.getHitSegment().getPoints()) 
-            {            
+            for (Point3D p : hit.getHitSegment().getPoints())  {            
                 factory.createHepRepPoint(instance,p.x(),p.y(),p.z()); 
             }
         }

lcsim/src/org/lcsim/util/heprep
LCSimHepRepConverter.java 1.18 -> 1.19
diff -u -r1.18 -r1.19
--- LCSimHepRepConverter.java	14 Mar 2008 17:49:10 -0000	1.18
+++ LCSimHepRepConverter.java	15 May 2008 09:19:54 -0000	1.19
@@ -46,9 +46,10 @@
             register(new ReconstructedParticleConverter());
             register(new ZvVertexConverter());
             register(new VertexConverter());
-            register(new Hep3VectorConverter());
+            register(new Hep3VectorConverter());    
             register(new DisplayHitModules());
             register(new SiTrackerHitStrip1DConverter()); 
+            register(new SiTrackerHitStrip2DConverter());
             register(new HelicalTrackHitConverter());
         }
         catch (Exception x)

lcsim/src/org/lcsim/util/heprep
HelicalTrackHitConverter.java 1.1 -> 1.2
diff -u -r1.1 -r1.2
--- HelicalTrackHitConverter.java	14 Mar 2008 17:49:10 -0000	1.1
+++ HelicalTrackHitConverter.java	15 May 2008 09:19:54 -0000	1.2
@@ -50,6 +50,8 @@
         type2d.addAttValue("color",Color.ORANGE);
         type2d.addAttDef("dEdx", "Hit dEdx", "physics", "");
         type2d.addAttDef("time", "Hit time", "physics", "");
+        type2d.addAttDef("zmin", "Z min", "physics", "");
+        type2d.addAttDef("zmax", "Z max", "physics", "");
         
         HepRepType typeCenter = factory.createHepRepType(typeTree,name+"2dSegmentCenters");
         typeCenter.addAttValue("layer",LCSimHepRepConverter.HITS_LAYER);
@@ -79,6 +81,9 @@
                 HepRepInstance instance2d = factory.createHepRepInstance(instanceTree,type2d);
                 instance2d.addAttValue("dEdx",hit.getTrackerHit().getdEdx());
                 instance2d.addAttValue("time",hit.getTrackerHit().getTime());
+                HelicalTrack2DHit hit2d = (HelicalTrack2DHit) hit;
+                instance2d.addAttValue("zmin", hit2d.zmin());
+                instance2d.addAttValue("zmax", hit2d.zmax());
                 HelicalTrack2DHit h = (HelicalTrack2DHit) hit;
                 factory.createHepRepPoint(instance2d, pos[0], pos[1], h.zmin());
                 factory.createHepRepPoint(instance2d, pos[0], pos[1], h.zmax());
@@ -88,8 +93,6 @@
                 instanceCenter.addAttValue("time",hit.getTrackerHit().getTime());
                 factory.createHepRepPoint(instanceCenter,pos[0],pos[1],pos[2]);
             }
-
-            
         }
         
     }
CVSspam 0.2.8