lcsim/src/org/lcsim/recon/tracking/gtrdetector
diff -u -r1.10 -r1.11
--- GtrDetector.java 8 May 2008 01:18:21 -0000 1.10
+++ GtrDetector.java 8 May 2008 21:35:37 -0000 1.11
@@ -3,7 +3,7 @@
*
* Created on July 30, 2005, 3:30 PM
*
- * $Id: GtrDetector.java,v 1.10 2008/05/08 01:18:21 ngraf Exp $
+ * $Id: GtrDetector.java,v 1.11 2008/05/08 21:35:37 ngraf Exp $
*/
package org.lcsim.recon.tracking.gtrdetector;
@@ -67,6 +67,7 @@
Collection<Subdetector> subDets = subDetMap.values();
// TODO need a mechanism to define what the digitization for each subdetector is.
// current default is to assume 2d points being measured in all the detectors.
+ // TODO create trf surfaces for non-sensitive detector elements
for(Subdetector subDet : subDets)
{
if (subDet instanceof DiskTracker)
@@ -313,6 +314,7 @@
}
// TODO: Handle modules with multiple sensitive components.
+ // create XYPlanes for barrel sensitive modules
private void add(SiTrackerBarrel barrel)
{
IDetectorElement subdet = barrel.getDetectorElement();
@@ -344,7 +346,7 @@
double rxy = point.rxy();
// Get global rotation.
- IRotation3D rot = sensor.getGeometry().getLocalToGlobal().getRotation();
+// IRotation3D rot = sensor.getGeometry().getLocalToGlobal().getRotation();
// System.out.println("rot="+rot.toString());
// Get width (x) and length (y).
@@ -352,15 +354,15 @@
List<Point3D> vertices = box.getVertices();
// System.out.println("sensor has "+vertices.size()+" vertices");
int[] point_ordering = box.getHepRepVertexOrdering();
- for (int i = 0; i< point_ordering.length; i++)
- {
- Point3D pt = vertices.get(point_ordering[i]);
-// System.out.println("Local : "+i+" x= "+pt.x()+" y= "+pt.y()+" z= "+ pt.z());
- Hep3Vector p = sensor.getGeometry().transformLocalToGlobal(pt);
-// System.out.println("Global: "+i+" x= "+p.x()+" y= "+p.y()+" z= "+ p.z());
- }
- double u = box.getXHalfLength();
- double v = box.getYHalfLength();
+// for (int i = 0; i< point_ordering.length; i++)
+// {
+// Point3D pt = vertices.get(point_ordering[i]);
+//// System.out.println("Local : "+i+" x= "+pt.x()+" y= "+pt.y()+" z= "+ pt.z());
+// Hep3Vector p = sensor.getGeometry().transformLocalToGlobal(pt);
+//// System.out.println("Global: "+i+" x= "+p.x()+" y= "+p.y()+" z= "+ p.z());
+// }
+// double u = box.getXHalfLength();
+// double v = box.getYHalfLength();
// create the sensor plane.
// use the heprep ordering
@@ -403,6 +405,7 @@
}
}
+ // create ZPlanes for forward sensitive elements
private void add(SiTrackerEndcap e)
{
IDetectorElement de = e.getDetectorElement();
@@ -417,7 +420,7 @@
{
double x0 = calculateEndcapModuleX0(module);
- //System.out.println("module " + module.getName() + " x0 = " + x0);
+ System.out.println("module " + module.getName() + " x0 = " + x0);
IDetectorElement sensor = null;
for (IDetectorElement component : module.getChildren())
@@ -434,8 +437,53 @@
throw new RuntimeException("No sensor found!");
ISolid solid = sensor.getGeometry().getLogicalVolume().getSolid();
+ List<Point3D> vertices = null;
+ double zpos = 0.;
+ int[] point_ordering = null;
+ if(solid instanceof Box)
+ {
+ System.out.println("Box");
+ Box box = (Box) solid;
+ vertices = box.getVertices();
+ point_ordering = box.getHepRepVertexOrdering();
+ }
+ else if (solid instanceof Trd)
+ {
+ System.out.println("Trd");
+ Trd trd = (Trd) solid;
+ vertices = trd.getVertices();
+ point_ordering = trd.getHepRepVertexOrdering();
+ }
+ else if (solid instanceof Trap)
+ {
+ System.out.println("Trap");
+ Trap trap = (Trap) solid;
+ vertices = trap.getVertices();
+ point_ordering = trap.getHepRepVertexOrdering();
+ }
+ if (vertices == null)
+ throw new RuntimeException("No vertices found for "+sensor.getName()+"!");
+ System.out.println("sensor has "+vertices.size()+" vertices");
+ // let's handle z
+ zpos += sensor.getGeometry().transformLocalToGlobal(vertices.get(0)).z();
+ zpos += sensor.getGeometry().transformLocalToGlobal(vertices.get(2)).z();
+ zpos /=2.;
+ System.out.println("ZPlane z: "+zpos);
+ for (int i = 0; i< point_ordering.length; ++i)
+ {
+ Point3D pt = vertices.get(point_ordering[i]);
+ System.out.println("Local : "+i+" x= "+pt.x()+" y= "+pt.y()+" z= "+ pt.z());
+ Hep3Vector p = sensor.getGeometry().transformLocalToGlobal(pt);
+ System.out.println("Global: "+i+" x= "+p.x()+" y= "+p.y()+" z= "+ p.z());
+ }
// TODO: Create ZPlanes here!
+ // From inspection, we have:
+ // +z : 0,1,4,5
+ // -z : 2,3,6,7
+ // again, from inspection, all volumes have 8 vertices
+ int[] corners = {0,1,4,5};
+
}
}