Commit in lcsim/src/org/lcsim/util/heprep on MAIN
TrackConverter.java+8-31.2 -> 1.3
ReconstructedParticleConverter.java+89-421.2 -> 1.3
+97-45
2 modified files
Update for improved Jet drawing

lcsim/src/org/lcsim/util/heprep
TrackConverter.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- TrackConverter.java	20 Aug 2005 23:25:41 -0000	1.2
+++ TrackConverter.java	25 Aug 2005 05:54:10 -0000	1.3
@@ -7,6 +7,7 @@
 import hep.graphics.heprep.HepRepInstanceTree;
 import hep.physics.vec.Hep3Vector;
 import java.util.List;
+import org.lcsim.constants.Constants;
 import org.lcsim.event.EventHeader;
 import org.lcsim.event.EventHeader.LCMetaData;
 import org.lcsim.event.Track;
@@ -17,7 +18,7 @@
 /**
  *
  * @author tonyj
- * @version $Id: TrackConverter.java,v 1.2 2005/08/20 23:25:41 tonyj Exp $
+ * @version $Id: TrackConverter.java,v 1.3 2005/08/25 05:54:10 tonyj Exp $
  */
 class TrackConverter implements HepRepCollectionConverter
 {
@@ -49,9 +50,10 @@
       for (Track t : (List<Track>) collection)
       {         
          helix.setTrack(t);
+         double distanceToCylinder = helix.getDistanceToCylinder(trackingRMax,trackingZMax);
          
          HepRepInstance instanceX = factory.createHepRepInstance(instanceTree, typeX);
-         double pt = field[2]*0.3*.001/Math.abs(t.getTrackParameter(2));
+         double pt = field[2]*Constants.fieldConversion/Math.abs(t.getTrackParameter(2));
          instanceX.addAttValue("pT",pt);
          instanceX.addAttValue("dedX",t.getdEdx());
          
@@ -59,7 +61,10 @@
          
          for (int k=0;k<200;k++)
          {
-            Hep3Vector point = helix.getPointAtDistance(k*dAlpha);
+            double d = k*dAlpha;
+            if (d>distanceToCylinder) break;
+            Hep3Vector point = helix.getPointAtDistance(d);
+            System.out.println(k+" point="+point);
             factory.createHepRepPoint(instanceX,point.x(),point.y(),point.z());
          }
       }

lcsim/src/org/lcsim/util/heprep
ReconstructedParticleConverter.java 1.2 -> 1.3
diff -u -r1.2 -r1.3
--- ReconstructedParticleConverter.java	20 Aug 2005 23:25:41 -0000	1.2
+++ ReconstructedParticleConverter.java	25 Aug 2005 05:54:10 -0000	1.3
@@ -16,14 +16,24 @@
 
 
 /**
- *
  * @author tonyj
- * @version $Id: ReconstructedParticleConverter.java,v 1.2 2005/08/20 23:25:41 tonyj Exp $
+ * @version $Id: ReconstructedParticleConverter.java,v 1.3 2005/08/25 05:54:10 tonyj Exp $
  */
 class ReconstructedParticleConverter implements HepRepCollectionConverter
 {
    private static final double[] IP = { 0,0,0 };
+   private Color[] colors;
+   private double zField;
+   private HelixSwimmer helix;
+   private double trackingRMax;
+   private double trackingZMax;
    
+   ReconstructedParticleConverter()
+   {
+      ColorMap cm = new RainbowColorMap();
+      colors = new Color[10];
+      for (int i=0; i<colors.length; i++) colors[i] = cm.getColor(((double) i)/colors.length,1);
+   }
    public boolean canHandle(Class k)
    {
       return ReconstructedParticle.class.isAssignableFrom(k);
@@ -35,61 +45,98 @@
       int flags = meta.getFlags();
       Detector detector = event.getDetector();
       
-      double trackingRMax = detector.getConstants().get("tracking_region_radius").getValue();
-      double trackingZMax = detector.getConstants().get("tracking_region_zmax").getValue();
+      trackingRMax = detector.getConstants().get("tracking_region_radius").getValue();
+      trackingZMax = detector.getConstants().get("tracking_region_zmax").getValue();
       
-      double[] field = detector.getFieldMap().getField(IP);
-      HelixSwimmer helix = new HelixSwimmer(field[2]);
+      zField = detector.getFieldMap().getField(IP)[2];
+      helix = new HelixSwimmer(zField);
       
       HepRepType typeX = factory.createHepRepType(typeTree, name);
       typeX.addAttValue("layer",LCSimHepRepConverter.PARTICLES_LAYER);
       typeX.addAttValue("drawAs","Line");
+      typeX.addAttValue("width",2);
       typeX.addAttDef("energy","Particle Energy", "physics", "");
       typeX.addAttDef("type","Particle Type", "physics", "");
       
-      HepRepType neutralType = factory.createHepRepType(typeX, "Neutral");
-      neutralType.addAttValue("color",Color.GREEN);
-      
-      HepRepType chargedType = factory.createHepRepType(typeX, "Charged");
-      chargedType.addAttValue("color",Color.ORANGE);
-      
-      HepRepInstance charged = factory.createHepRepInstance(instanceTree, typeX);
-      HepRepInstance neutral = factory.createHepRepInstance(instanceTree, typeX);
-      
-      for (ReconstructedParticle p : (List<ReconstructedParticle>) collection)
+      boolean jets = name.toLowerCase().contains("jets");
+      if (jets)
       {
-         Hep3Vector start =  p.getReferencePoint();
-         Hep3Vector momentum = p.getMomentum();
-         double charge = p.getCharge();
-         helix.setTrack(momentum, start, (int) charge);
-         double distanceToCylinder = helix.getDistanceToCylinder(trackingRMax,trackingZMax);
-         System.out.println("dist="+distanceToCylinder);
+         HepRepType jetTypeX = factory.createHepRepType(typeX, name+"Particles");
+         jetTypeX.addAttValue("layer",LCSimHepRepConverter.PARTICLES_LAYER);
+         jetTypeX.addAttValue("drawAs","Line");
+         jetTypeX.addAttDef("energy","Particle Energy", "physics", "");
+         jetTypeX.addAttDef("type","Particle Type", "physics", "");
          
-         if (charge == 0 || field[2] == 0)
+         int i = 0;
+         for (ReconstructedParticle jet : (List<ReconstructedParticle>) collection)
          {
-            Hep3Vector stop = helix.getPointAtDistance(distanceToCylinder);
-            HepRepInstance instanceX = factory.createHepRepInstance(charge == 0 ? neutral : charged, charge == 0 ? neutralType : chargedType);
-            factory.createHepRepPoint(instanceX,start.x(),start.y(),start.z());
-            factory.createHepRepPoint(instanceX,stop.x(),stop.y(),stop.z());
-            instanceX.addAttValue("energy",p.getEnergy());
-            instanceX.addAttValue("type",p.getType());
-         }
-         else
-         {  
-            double dAlpha = 10; // 1cm
-            HepRepInstance instanceX = factory.createHepRepInstance(charged, chargedType);
-            instanceX.addAttValue("energy",p.getEnergy());
-            instanceX.addAttValue("type",p.getType());
-            factory.createHepRepPoint(instanceX,start.x(),start.y(),start.z());
+            Color jetColor = colors[i%colors.length];
+            i += 3;
+            
+            HepRepInstance instanceX = factory.createHepRepInstance(instanceTree, typeX);
+            instanceX.addAttValue("color",jetColor);
+            drawParticle(factory, jet,instanceX, 0);
             
-            for (int k = 1;k<200;k++)
+            for (ReconstructedParticle p : jet.getParticles())
             {
-               double d = k*dAlpha;
-               if (d>distanceToCylinder) break;
-               Hep3Vector point = helix.getPointAtDistance(d);
-               factory.createHepRepPoint(instanceX,point.x(),point.y(),point.z());
+               HepRepInstance jetParticleX = factory.createHepRepInstance(instanceX, jetTypeX);
+               jetParticleX.addAttValue("color",jetColor);
+               drawParticle(factory, p, jetParticleX, p.getCharge());
             }
          }
       }
+      else
+      {
+         HepRepType neutralType = factory.createHepRepType(typeX, "Neutral");
+         neutralType.addAttValue("color",Color.GREEN);
+         
+         HepRepType chargedType = factory.createHepRepType(typeX, "Charged");
+         chargedType.addAttValue("color",Color.ORANGE);
+         
+         HepRepInstance charged = factory.createHepRepInstance(instanceTree, typeX);
+         HepRepInstance neutral = factory.createHepRepInstance(instanceTree, typeX);
+         
+         for (ReconstructedParticle p : (List<ReconstructedParticle>) collection)
+         {
+            double charge = p.getCharge();
+            HepRepInstance instanceX = factory.createHepRepInstance(charge == 0 ? neutral : charged, charge == 0 ? neutralType : chargedType);
+            drawParticle(factory, p, instanceX, charge);
+         }
+      }
+      
+      
+   }
+   private void drawParticle(HepRepFactory factory, ReconstructedParticle p, HepRepInstance instanceX, double charge)
+   {
+      Hep3Vector start =  p.getReferencePoint();
+      Hep3Vector momentum = p.getMomentum();
+      helix.setTrack(momentum, start, (int) charge);
+      double distanceToCylinder = helix.getDistanceToCylinder(trackingRMax,trackingZMax);
+      
+      if (charge == 0 || zField == 0)
+      {
+         Hep3Vector stop = helix.getPointAtDistance(distanceToCylinder);
+         
+         factory.createHepRepPoint(instanceX,start.x(),start.y(),start.z());
+         factory.createHepRepPoint(instanceX,stop.x(),stop.y(),stop.z());
+         instanceX.addAttValue("energy",p.getEnergy());
+         instanceX.addAttValue("type",p.getType());
+      }
+      else
+      {
+         double dAlpha = 10; // 1cm
+         
+         instanceX.addAttValue("energy",p.getEnergy());
+         instanceX.addAttValue("type",p.getType());
+         factory.createHepRepPoint(instanceX,start.x(),start.y(),start.z());
+         
+         for (int k = 1;k<200;k++)
+         {
+            double d = k*dAlpha;
+            if (d>distanceToCylinder) break;
+            Hep3Vector point = helix.getPointAtDistance(d);
+            factory.createHepRepPoint(instanceX,point.x(),point.y(),point.z());
+         }
+      }
    }
 }
\ No newline at end of file
CVSspam 0.2.8