lcsim/src/org/lcsim/util/heprep
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
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