GeomConverter/src/org/lcsim/detector/converter/heprep
diff -u -r1.1 -r1.2
--- DetectorElementToHepRepConverter.java 15 Mar 2007 02:09:15 -0000 1.1
+++ DetectorElementToHepRepConverter.java 27 Mar 2007 20:40:54 -0000 1.2
@@ -17,79 +17,82 @@
public class DetectorElementToHepRepConverter
{
- public void convert(IDetectorElement detelem, HepRepFactory factory, HepRep heprep)
- {
- HepRepInstanceTree instanceTree = heprep.getInstanceTreeTop("Detector","1.0");
- HepRepTypeTree typeTree = heprep.getTypeTree("DetectorType","1.0");
-
- IGeometryInfo geo = detelem.getGeometry();
-
- ISolid solid = geo.getLogicalVolume().getSolid();
-
- if ( solid instanceof Box )
- {
- Box box = (Box)geo.getLogicalVolume().getSolid();
-
- HepRepType ec = typeTree.getType("Barrel");
- HepRepType type = factory.createHepRepType(ec, detelem.getName());
- type.addAttValue("drawAs","Prism");
-
- HepRepInstance instance = factory.createHepRepInstance(instanceTree, type);
-
- Hep3Vector points[] = new BasicHep3Vector[8];
-
- double x1 = box.getXHalfLength();
- double x2 = -box.getXHalfLength();
-
- double y1 = box.getYHalfLength();
- double y2 = -box.getYHalfLength();
-
- double z1 = box.getZHalfLength();
- double z2 = -box.getZHalfLength();
-
- points[0] = new BasicHep3Vector(x1,y1,z1);
- points[1] = new BasicHep3Vector(x1,y2,z1);
- points[2] = new BasicHep3Vector(x2,y2,z1);
- points[3] = new BasicHep3Vector(x2,y1,z1);
- points[4] = new BasicHep3Vector(x1,y1,z2);
- points[5] = new BasicHep3Vector(x1,y2,z2);
- points[6] = new BasicHep3Vector(x2,y2,z2);
- points[7] = new BasicHep3Vector(x2,y1,z2);
-
- // DEBUG
- //HepRepInstance debugInstance = factory.createHepRepInstance(instanceTree, type);
- // END DEBUG
-
- for (int i=0; i<points.length; i++)
- {
- // DEBUG
- //factory.createHepRepPoint(
- // debugInstance,
- // points[i].x(),
- // points[i].y(),
- // points[i].z()
- // );
- // END DEBUG
-
- System.out.println("original pnt : " + points[i]);
- Hep3Vector vec = geo.transformLocalToGlobal(points[i]);
- System.out.println("transformed pnt : " + vec);
- System.out.println();
- points[i] = vec;
- }
-
- for (int i=0; i<points.length; i++)
- {
- Hep3Vector vec = points[i];
- factory.createHepRepPoint(
- instance,
- vec.x(),
- vec.y(),
- vec.z()
- );
- }
-
- /*
+ public void convert(IDetectorElement detelem, HepRepFactory factory, HepRep heprep)
+ {
+ HepRepInstanceTree instanceTree = heprep.getInstanceTreeTop("Detector","1.0");
+ HepRepTypeTree typeTree = heprep.getTypeTree("DetectorType","1.0");
+
+ if ( detelem.hasGeometryInfo() )
+ {
+
+ IGeometryInfo geo = detelem.getGeometry();
+
+ ISolid solid = geo.getLogicalVolume().getSolid();
+
+ if ( solid instanceof Box )
+ {
+ Box box = (Box)geo.getLogicalVolume().getSolid();
+
+ HepRepType ec = typeTree.getType("Barrel");
+ HepRepType type = factory.createHepRepType(ec, detelem.getName());
+ type.addAttValue("drawAs","Prism");
+
+ HepRepInstance instance = factory.createHepRepInstance(instanceTree, type);
+
+ Hep3Vector points[] = new BasicHep3Vector[8];
+
+ double x1 = box.getXHalfLength();
+ double x2 = -box.getXHalfLength();
+
+ double y1 = box.getYHalfLength();
+ double y2 = -box.getYHalfLength();
+
+ double z1 = box.getZHalfLength();
+ double z2 = -box.getZHalfLength();
+
+ points[0] = new BasicHep3Vector(x1,y1,z1);
+ points[1] = new BasicHep3Vector(x1,y2,z1);
+ points[2] = new BasicHep3Vector(x2,y2,z1);
+ points[3] = new BasicHep3Vector(x2,y1,z1);
+ points[4] = new BasicHep3Vector(x1,y1,z2);
+ points[5] = new BasicHep3Vector(x1,y2,z2);
+ points[6] = new BasicHep3Vector(x2,y2,z2);
+ points[7] = new BasicHep3Vector(x2,y1,z2);
+
+ // DEBUG
+ //HepRepInstance debugInstance = factory.createHepRepInstance(instanceTree, type);
+ // END DEBUG
+
+ for (int i=0; i<points.length; i++)
+ {
+ // DEBUG
+ //factory.createHepRepPoint(
+ // debugInstance,
+ // points[i].x(),
+ // points[i].y(),
+ // points[i].z()
+ // );
+ // END DEBUG
+
+ System.out.println("original pnt : " + points[i]);
+ Hep3Vector vec = geo.transformLocalToGlobal(points[i]);
+ System.out.println("transformed pnt : " + vec);
+ System.out.println();
+ points[i] = vec;
+ }
+
+ for (int i=0; i<points.length; i++)
+ {
+ Hep3Vector vec = points[i];
+ factory.createHepRepPoint(
+ instance,
+ vec.x(),
+ vec.y(),
+ vec.z()
+ );
+ }
+
+ /*
factory.createHepRepPoint(instance, x1, y1, z1);
factory.createHepRepPoint(instance, x1, y2, z1);
factory.createHepRepPoint(instance, x2, y2, z1);
@@ -99,38 +102,39 @@
factory.createHepRepPoint(instance, x1, y2, z2);
factory.createHepRepPoint(instance, x2, y2, z2);
factory.createHepRepPoint(instance, x2, y1, z2);
- */
- }
- else if ( solid instanceof Tube )
- {
- Tube tube = (Tube)geo.getLogicalVolume().getSolid();
-
- HepRepType barrel = typeTree.getType("Barrel");
-
- HepRepType type = factory.createHepRepType(barrel, detelem.getName());
- type.addAttValue("drawAs","Cylinder");
-
- double zmin = -tube.getZHalfLength();
- double zmax = tube.getZHalfLength();
-
- Hep3Vector point1 = new BasicHep3Vector(0,0,zmin);
- Hep3Vector point2 = new BasicHep3Vector(0,0,zmax);
-
- point1 = geo.transformGlobalToLocal(point1);
- point2 = geo.transformGlobalToLocal(point2);
-
- HepRepInstance instance = factory.createHepRepInstance(instanceTree, type);
- instance.addAttValue("radius",tube.getInnerRadius());
- factory.createHepRepPoint(instance,point1.x(),point1.y(),point1.z());
- factory.createHepRepPoint(instance,point2.x(),point2.y(),point2.z());
-
- HepRepInstance instance2 = factory.createHepRepInstance(instanceTree, type);
- instance2.addAttValue("radius",tube.getOuterRadius());
- factory.createHepRepPoint(instance2,point1.x(),point1.y(),point1.z());
- factory.createHepRepPoint(instance2,point2.x(),point2.y(),point2.z());
- }
- else {
- System.err.println("IDetectorElementToHepRepConverter - Don't know how to convert shape : " + solid.getName());
- }
- }
+ */
+ }
+ else if ( solid instanceof Tube )
+ {
+ Tube tube = (Tube)geo.getLogicalVolume().getSolid();
+
+ HepRepType barrel = typeTree.getType("Barrel");
+
+ HepRepType type = factory.createHepRepType(barrel, detelem.getName());
+ type.addAttValue("drawAs","Cylinder");
+
+ double zmin = -tube.getZHalfLength();
+ double zmax = tube.getZHalfLength();
+
+ Hep3Vector point1 = new BasicHep3Vector(0,0,zmin);
+ Hep3Vector point2 = new BasicHep3Vector(0,0,zmax);
+
+ point1 = geo.transformGlobalToLocal(point1);
+ point2 = geo.transformGlobalToLocal(point2);
+
+ HepRepInstance instance = factory.createHepRepInstance(instanceTree, type);
+ instance.addAttValue("radius",tube.getInnerRadius());
+ factory.createHepRepPoint(instance,point1.x(),point1.y(),point1.z());
+ factory.createHepRepPoint(instance,point2.x(),point2.y(),point2.z());
+
+ HepRepInstance instance2 = factory.createHepRepInstance(instanceTree, type);
+ instance2.addAttValue("radius",tube.getOuterRadius());
+ factory.createHepRepPoint(instance2,point1.x(),point1.y(),point1.z());
+ factory.createHepRepPoint(instance2,point2.x(),point2.y(),point2.z());
+ }
+ else {
+ System.err.println("IDetectorElementToHepRepConverter - Don't know how to convert shape : " + solid.getName());
+ }
+ }
+ }
}