Print

Print


Commit in GeomConverter/src/org/lcsim/detector/converter/compact on MAIN
SiTrackerEndcapConverter.java+37-251.12 -> 1.13
dev snapshot

GeomConverter/src/org/lcsim/detector/converter/compact
SiTrackerEndcapConverter.java 1.12 -> 1.13
diff -u -r1.12 -r1.13
--- SiTrackerEndcapConverter.java	5 Dec 2007 01:36:50 -0000	1.12
+++ SiTrackerEndcapConverter.java	6 Dec 2007 01:23:16 -0000	1.13
@@ -37,6 +37,7 @@
 import org.lcsim.detector.material.MaterialStore;
 import org.lcsim.detector.solids.Box;
 import org.lcsim.detector.solids.IPolyhedron;
+import org.lcsim.detector.solids.Point3D;
 import org.lcsim.detector.solids.Polygon3D;
 import org.lcsim.detector.solids.Trap;
 import org.lcsim.detector.solids.Trd;
@@ -54,7 +55,7 @@
  * Converter for SiTrackerEndcap.
  *
  * @author Jeremy McCormick, Tim Nelson
- * @version $Id: SiTrackerEndcapConverter.java,v 1.12 2007/12/05 01:36:50 jeremy Exp $
+ * @version $Id: SiTrackerEndcapConverter.java,v 1.13 2007/12/06 01:23:16 tknelson Exp $
  */
 
 public class SiTrackerEndcapConverter
@@ -169,7 +170,7 @@
                     for (IPhysicalVolume component : module.getLogicalVolume().getDaughters())
                     {
                         if (component.isSensitive())
-                        {                       
+                        {
                             int sensorNum = component.getCopyNumber();
                             
                             // Positive endcap component.
@@ -191,7 +192,8 @@
             }
         }
         
-        try {
+        try
+        {
             setupSensorDetectorElements(subdet);
         }
         catch (Exception x)
@@ -588,7 +590,7 @@
     
     // TODO: Need to have SiTrackerIdentifierHelper available before this is called.
     private void setupSensorDetectorElements(Subdetector subdet) throws Exception
-    {                       
+    {
         IIdentifierHelper id_helper = new IdentifierHelper(IdentifierDictionaryManager.getInstance().getIdentifierDictionary(subdet.getReadout().getName()));
         
         //SiTrackerIdentifierHelper id_helper = (SiTrackerIdentifierHelper)subdet.getDetectorElement().getIdentifierHelper();
@@ -635,7 +637,7 @@
                                         expId.setValue(iddict.getFieldIndex("barrel"), 1);
                                     }
                                     if (id_helper.getValue(endcap.getIdentifier(), "barrel") == 2)
-                                    //else if (id_helper.isEndcapNegative(endcap.getIdentifier()))
+                                        //else if (id_helper.isEndcapNegative(endcap.getIdentifier()))
                                     {
                                         //expId.setValue(iddict.getFieldIndex("barrel"), id_helper.getEndcapNegativeValue());
                                         expId.setValue(iddict.getFieldIndex("barrel"), 2);
@@ -689,47 +691,57 @@
                                 // Set up SiStrips for the sensors
                                 IPolyhedron sensor_solid = (IPolyhedron)sensor.getGeometry().getLogicalVolume().getSolid();
                                 
-                                Polygon3D inner_surface = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,0,-1)).get(0);
-                                Polygon3D outer_surface = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,0,1)).get(0);
-                                double strip_angle_magnitude = Math.PI/nwedges;
+                                Polygon3D inner_surface = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,-1,0)).get(0);
+                                Polygon3D outer_surface = sensor_solid.getFacesNormalTo(new BasicHep3Vector(0,1,0)).get(0);
+//                                double strip_angle_magnitude = Math.PI/nwedges;
                                 
                                 Polygon3D p_side;
                                 Polygon3D n_side;
-                                double strip_angle;
+                                int side;
                                 
                                 if (sensorId == 0) // inner sensor
                                 {
                                     p_side = inner_surface;
                                     n_side = outer_surface;
-                                    strip_angle = strip_angle_magnitude;
+                                    side = -1;
+//                                    strip_angle = strip_angle_magnitude;
                                 }
                                 else // outer sensor
                                 {
                                     p_side = outer_surface;
                                     n_side = inner_surface;
-                                    strip_angle = -1*strip_angle_magnitude;
+                                    side = 1;
+//                                    strip_angle = -1*strip_angle_magnitude;
                                 }
                                 
-//                        System.out.println("Plane of p_side polygon has... ");
-//                        System.out.println("                        normal: "+p_side.getNormal());
-//                        System.out.println("                        distance: "+p_side.getDistance());
-//                        for (Point3D point : p_side.getClosedVertices())
-//                        {
-//                            System.out.println("      Vertex: "+point);
-//                        }
-
-//                        System.out.println("Plane of n_side polygon has... ");
-//                        System.out.println("                        normal: "+n_side.getNormal());
-//                        System.out.println("                        distance: "+n_side.getDistance());                                
+                                System.out.println("Plane of p_side polygon has... ");
+                                System.out.println("                        normal: "+p_side.getNormal());
+                                System.out.println("                        distance: "+p_side.getDistance());
+                                for (Point3D point : p_side.getVertices())
+                                {
+                                    System.out.println("      Vertex: "+point);
+                                }
+                                
+                                System.out.println("Plane of n_side polygon has... ");
+                                System.out.println("                        normal: "+n_side.getNormal());
+                                System.out.println("                        distance: "+n_side.getDistance());
                                 
                                 // Bias the sensor
                                 sensor.setBiasSurface(ChargeCarrier.HOLE,p_side);
                                 sensor.setBiasSurface(ChargeCarrier.ELECTRON,n_side);
                                 
-                                ITranslation3D electrodes_position = new Translation3D(VecOp.mult(p_side.getDistance(),p_side.getNormal()));  // translate to p_side
-                                IRotation3D electrodes_rotation = new RotationPassiveXYZ(0.0,strip_angle,0.0);                                      // no rotation (global x-y = local x-y for axial strips)
+                                double strip_angle = Math.PI/nwedges;
+                                
+                                System.out.println("                        side = : "+side);
+                                
+                                ITranslation3D electrodes_position = new Translation3D(VecOp.mult(p_side.getDistance(),new BasicHep3Vector(0,0,1)));  // translate to outside of polygon
+//                                ITranslation3D electrodes_position = new Translation3D(VecOp.mult(-p_side.getDistance(),p_side.getNormal()));  // translate to p_side
+                                IRotation3D electrodes_rotation = new RotationPassiveXYZ(side*(Math.PI/2),0,0*strip_angle);          //
                                 Transform3D electrodes_transform = new Transform3D(electrodes_position, electrodes_rotation);
                                 
+                                System.out.println(" electrodes_transform translation: \n"+electrodes_transform.getTranslation().getTranslationVector());
+                                System.out.println(" electrodes_transform rotation: \n"+electrodes_transform.getRotation().getRotationMatrix());
+                                
                                 // Free calculation of sense electrodes, readout electrodes determined thereon
                                 SiSensorElectrodes sense_electrodes = new SiStrips(ChargeCarrier.HOLE,0.025,sensor,electrodes_transform);
                                 SiSensorElectrodes readout_electrodes = new SiStrips(ChargeCarrier.HOLE,0.050,(sense_electrodes.getNCells()+1)/2,sensor,electrodes_transform);
@@ -741,7 +753,7 @@
                                 sensor.setTransferEfficiencies(ChargeCarrier.HOLE,new BasicMatrix(transfer_efficiencies));
                                 
                                 // Incremenet sensorID for double-sided.
-                                ++sensorId;                                
+                                ++sensorId;
                             }
                         }
                         
CVSspam 0.2.8