lcsim/src/org/lcsim/util/heprep
diff -u -r1.13 -r1.14
--- LCSimHepRepConverter.java 29 Nov 2006 08:38:36 -0000 1.13
+++ LCSimHepRepConverter.java 30 Mar 2007 22:31:35 -0000 1.14
@@ -3,9 +3,13 @@
import hep.graphics.heprep.HepRep;
import hep.graphics.heprep.HepRepConverter;
import hep.graphics.heprep.HepRepFactory;
+import hep.graphics.heprep.HepRepInstance;
import hep.graphics.heprep.HepRepInstanceTree;
import hep.graphics.heprep.HepRepTreeID;
+import hep.graphics.heprep.HepRepType;
import hep.graphics.heprep.HepRepTypeTree;
+
+import java.awt.Color;
import java.io.IOException;
import java.util.LinkedList;
import java.util.List;
@@ -19,91 +23,129 @@
*/
public class LCSimHepRepConverter implements HepRepConverter
{
- private HepRepFactory factory;
-
- public final static String HITS_LAYER = "Hits";
- public final static String PARTICLES_LAYER = "Particles";
+ private HepRepFactory factory;
- private List<HepRepCollectionConverter> converters = new LinkedList();
+ public final static String HITS_LAYER = "Hits";
+ public final static String PARTICLES_LAYER = "Particles";
+ public final static String AXIS_LAYER = "Axis";
+
+ private List<HepRepCollectionConverter> converters = new LinkedList();
+
+ public LCSimHepRepConverter()
+ {
+ try
+ {
+ factory = HepRepFactory.create();
+ register(new CalorimeterHitConverter());
+ register(new ClusterConverter());
+ register(new MCParticleConverter());
+ register(new SimTrackerHitConverter());
+ register(new TrackerHitConverter());
+ register(new ZvTubeConverter());
+ register(new TrackConverter());
+ register(new ReconstructedParticleConverter());
+ register(new ZvVertexConverter());
+ register(new Hep3VectorConverter());
+ }
+ catch (Exception x)
+ {
+ throw new RuntimeException("Could not create heprep factory",x);
+ }
+ }
+ public void register(HepRepCollectionConverter converter)
+ {
+ converters.add(0, converter);
+ }
+ public void deregister(HepRepCollectionConverter converter)
+ {
+ converters.remove(converter);
+ }
+ public boolean canHandle(Class objectClass)
+ {
+ return EventHeader.class.isAssignableFrom(objectClass);
+ }
+
+ public HepRep convert(Object object)
+ {
+ EventHeader event = (EventHeader) object;
+ HepRep root = factory.createHepRep();
+
+ // Lets start with the detector
+ try
+ {
+ Detector detector = event.getDetector();
+ detector.appendHepRep(factory,root);
+ }
+ catch (Exception e)
+ {
+ }
+
+ // Now on to deal with the event data
+
+ root.addLayer(PARTICLES_LAYER);
+ root.addLayer(HITS_LAYER);
+
+ HepRepTreeID treeID = factory.createHepRepTreeID("EventType", "1.0");
+ HepRepTypeTree typeTree = factory.createHepRepTypeTree(treeID);
+ root.addTypeTree(typeTree);
+
+ HepRepInstanceTree instanceTree = factory.createHepRepInstanceTree("Event", "1.0", typeTree);
+ root.addInstanceTree(instanceTree);
+
+ List<List<Object>> data = event.get(Object.class);
+
+ for (List collection : data)
+ {
+ LCMetaData meta = event.getMetaData(collection);
+ if(meta==null) continue;
+ Class colType = meta.getType();
- public LCSimHepRepConverter()
- {
- try
- {
- factory = HepRepFactory.create();
- register(new CalorimeterHitConverter());
- register(new ClusterConverter());
- register(new MCParticleConverter());
- register(new SimTrackerHitConverter());
- register(new TrackerHitConverter());
- register(new ZvTubeConverter());
- register(new TrackConverter());
- register(new ReconstructedParticleConverter());
- register(new ZvVertexConverter());
- register(new Hep3VectorConverter());
- }
- catch (Exception x)
- {
- throw new RuntimeException("Could not create heprep factory",x);
- }
- }
- public void register(HepRepCollectionConverter converter)
- {
- converters.add(0, converter);
- }
- public void deregister(HepRepCollectionConverter converter)
- {
- converters.remove(converter);
- }
- public boolean canHandle(Class objectClass)
- {
- return EventHeader.class.isAssignableFrom(objectClass);
- }
-
- public HepRep convert(Object object)
- {
- EventHeader event = (EventHeader) object;
- HepRep root = factory.createHepRep();
-
- // Lets start with the detector
- try
- {
- Detector detector = event.getDetector();
- detector.appendHepRep(factory,root);
- }
- catch (Exception e)
- {
- }
-
- // Now on to deal with the event data
-
- root.addLayer(PARTICLES_LAYER);
- root.addLayer(HITS_LAYER);
-
- HepRepTreeID treeID = factory.createHepRepTreeID("EventType", "1.0");
- HepRepTypeTree typeTree = factory.createHepRepTypeTree(treeID);
- root.addTypeTree(typeTree);
-
- HepRepInstanceTree instanceTree = factory.createHepRepInstanceTree("Event", "1.0", typeTree);
- root.addInstanceTree(instanceTree);
-
- List<List<Object>> data = event.get(Object.class);
-
- for (List collection : data)
- {
- LCMetaData meta = event.getMetaData(collection);
- if(meta==null) continue;
- Class colType = meta.getType();
-
- for (HepRepCollectionConverter converter : converters)
- {
- if (converter.canHandle(colType))
+ for (HepRepCollectionConverter converter : converters)
{
- converter.convert(event,collection,factory,typeTree,instanceTree);
+ if (converter.canHandle(colType))
+ {
+ converter.convert(event,collection,factory,typeTree,instanceTree);
+ }
}
- }
- }
+ }
+
+ createAxisLines(factory, root, typeTree, instanceTree);
+
+ return root;
+ }
- return root;
- }
+ private void createAxisLines(HepRepFactory factory, HepRep root, HepRepTypeTree typeTree, HepRepInstanceTree instanceTree)
+ {
+ root.addLayer(AXIS_LAYER);
+
+ HepRepType axis = factory.createHepRepType(typeTree, "axis");
+ axis.addAttValue("drawAs","Line");
+ axis.addAttValue("layer", "Axis");
+ axis.addAttValue("lineWidth", 20);
+
+ HepRepType xaxis = factory.createHepRepType(axis, "xaxis");
+ xaxis.addAttValue("color",Color.RED);
+ xaxis.addAttValue("fill",true);
+ xaxis.addAttValue("fillColor",Color.RED);
+ HepRepInstance x = factory.createHepRepInstance(instanceTree, xaxis);
+ x.addAttValue("lineWidth", 20);
+ factory.createHepRepPoint(x,0,0,0);
+ factory.createHepRepPoint(x,2000,0,0);
+
+ HepRepType yaxis = factory.createHepRepType(axis, "yaxis");
+ yaxis.addAttValue("color",Color.GREEN);
+ yaxis.addAttValue("fill",true);
+ yaxis.addAttValue("fillColor",Color.GREEN);
+ HepRepInstance y = factory.createHepRepInstance(instanceTree, yaxis);
+ factory.createHepRepPoint(y,0,0,0);
+ factory.createHepRepPoint(y,0,2000,0);
+
+ HepRepType zaxis = factory.createHepRepType(axis, "zaxis");
+ zaxis.addAttValue("color",Color.BLUE);
+ zaxis.addAttValue("fill",true);
+ zaxis.addAttValue("fillColor",Color.BLUE);
+ HepRepInstance z = factory.createHepRepInstance(instanceTree, zaxis);
+ factory.createHepRepPoint(z,0,0,0);
+ factory.createHepRepPoint(z,0,0,2000);
+ }
}