Print

Print


Commit in GeomConverter/src/org/lcsim/detector on MAIN
tracker/silicon/SiTrackerIdentifierHelper.java+16-161.4 -> 1.5
converter/compact/SiTrackerEndcapConverter.java+35-271.32 -> 1.33
+51-43
2 modified files
- Refactored SiTrackerIdentifierHelper to remove all strip-specific references except for string constant on line 36
- Changes to SiTrackerEndcapConverter to more realistically model directly abuttable sensors with settable dead spaces in-between.

GeomConverter/src/org/lcsim/detector/tracker/silicon
SiTrackerIdentifierHelper.java 1.4 -> 1.5
diff -u -r1.4 -r1.5
--- SiTrackerIdentifierHelper.java	2 Jul 2008 21:38:32 -0000	1.4
+++ SiTrackerIdentifierHelper.java	24 Apr 2009 00:11:40 -0000	1.5
@@ -11,7 +11,7 @@
  * Decode identifier fields that are specific to the tracking sub-system.
  *
  * @author Jeremy McCormick
- * @version $Id: SiTrackerIdentifierHelper.java,v 1.4 2008/07/02 21:38:32 jeremy Exp $
+ * @version $Id: SiTrackerIdentifierHelper.java,v 1.5 2009/04/24 00:11:40 tknelson Exp $
  */
 public class SiTrackerIdentifierHelper
 extends DetectorIdentifierHelper
@@ -19,12 +19,12 @@
     int moduleIdx=-1;
     int sensorIdx=-1;
     int sideIdx=-1;
-    int stripIdx=-1;
+    int electrodeIdx=-1;
     
     IIdentifierField moduleField = null;
     IIdentifierField sensorField = null;
     IIdentifierField sideField = null;
-    IIdentifierField stripField = null;
+    IIdentifierField electrodeField = null;
     
     public SiTrackerIdentifierHelper(IDetectorElement subdetector, IIdentifierDictionary iddict, SystemMap sysMap)
     {
@@ -33,12 +33,12 @@
         moduleIdx = iddict.getFieldIndex("module");
         sensorIdx = iddict.getFieldIndex("sensor");
         sideIdx = iddict.getFieldIndex("side");
-        stripIdx = iddict.getFieldIndex("strip");
+        electrodeIdx = iddict.getFieldIndex("strip");
 
         moduleField = iddict.getField(moduleIdx);
         sensorField = iddict.getField(sensorIdx);
         sideField = iddict.getField(sideIdx);
-        stripField = iddict.getField(stripIdx);
+        electrodeField = iddict.getField(electrodeIdx);
     }
 
 	/**
@@ -69,12 +69,12 @@
     }
 	
 	/**
-	 * The strip number.
-	 * @return The strip number.
+	 * The electrode number.
+	 * @return The electrode number.
 	 */
-	public int getStripValue(IIdentifier id)
+	public int getElectrodeValue(IIdentifier id)
     {
-        return stripField.unpack(id);
+        return electrodeField.unpack(id);
     }
         
     /**
@@ -105,12 +105,12 @@
     }
     
     /**
-     * The strip number.
-     * @return The strip number.
+     * The electrode number.
+     * @return The electrode number.
      */
-    public int getStripValue(IExpandedIdentifier id)
+    public int getElectrodeValue(IExpandedIdentifier id)
     {
-        return id.getValue(stripIdx);
+        return id.getValue(electrodeIdx);
     }
     
     /**
@@ -141,11 +141,11 @@
     }
     
     /**
-     * Get the strip field index.
+     * Get the electrode field index.
      * @return The trip field index.
      */
-    public int getStripIndex()
+    public int getElectrodeIndex()
     {
-        return stripIdx;
+        return electrodeIdx;
     }        
 }
\ No newline at end of file

GeomConverter/src/org/lcsim/detector/converter/compact
SiTrackerEndcapConverter.java 1.32 -> 1.33
diff -u -r1.32 -r1.33
--- SiTrackerEndcapConverter.java	6 Feb 2009 16:35:49 -0000	1.32
+++ SiTrackerEndcapConverter.java	24 Apr 2009 00:11:41 -0000	1.33
@@ -59,7 +59,7 @@
  * Converter for SiTrackerEndcap.
  *
  * @author Jeremy McCormick, Tim Nelson
- * @version $Id: SiTrackerEndcapConverter.java,v 1.32 2009/02/06 16:35:49 jeremy Exp $
+ * @version $Id: SiTrackerEndcapConverter.java,v 1.33 2009/04/24 00:11:41 tknelson Exp $
  */
 
 public class SiTrackerEndcapConverter
@@ -236,19 +236,17 @@
         IMaterial material = detector.getTrackingVolume().getLogicalVolume().getMaterial();
         
         String name = subdet.getName() + "_layer" + layern + "_wedge";
+
+        double wedge_margin = 0.0001;
+//        double wedge_margin = 2.0;
         
         double dz = (outerR - innerR) / 2;
         double dy1, dy2;
         dy1 = dy2 = thickness / 2;
         double dx1, dx2;
         double dphi = Math.PI / nwedges;
-        dx1 = innerR * Math.tan(dphi);
-        dx2 = outerR * Math.tan(dphi);
-        
-        // pull corners in by 0.1 microns to eliminate overlaps.
-        dx1 -= 0.0001;
-        dx2 -= 0.0001;
-        dz -= 0.0001;
+        dx1 = innerR * Math.tan(dphi) - wedge_margin/Math.cos(dphi);
+        dx2 = outerR * Math.tan(dphi) - wedge_margin/Math.cos(dphi);
         
         Trd wedgeTrd = new Trd(name,dx1,dx2,dy1,dy2,dz);
         
@@ -358,7 +356,14 @@
         double dy = wedgeTrd.getYHalfLength1();
         double deltax = dx2 - dx1;
         double side_slope = deltax/(2*dz);
-        
+
+        double module_margin = 0.0001;
+//        double module_margin = 1.0;
+        double box_margin = module_margin;
+        double side_angle = Math.atan(side_slope);
+        double trap_margin_1 = module_margin*(1.0/Math.cos(side_angle)-Math.sin(side_angle));
+        double trap_margin_2 = module_margin*(1.0/Math.cos(side_angle)+Math.sin(side_angle));
+
         List<Double> zcenters = new ArrayList<Double>();
         List<Double> zsizes = new ArrayList<Double>();
         List<Double> xsizes1 = new ArrayList<Double>();
@@ -446,7 +451,7 @@
                 
                 String sliceName = "module" + imodule;
                 
-                Box sliceBox = new Box(sliceName,xsize_box,dy,zsizes.get(i));
+                Box sliceBox = new Box(sliceName,xsize_box-box_margin,dy,zsizes.get(i)-box_margin);
                 
                 ILogicalVolume sliceLV = new LogicalVolume(sliceName, sliceBox, sliceMaterial);
                 
@@ -470,7 +475,7 @@
             {
                 String sliceName = "module" + imodule;
                 
-                Trd sliceTrd = new Trd(sliceName,xsizes1.get(i),xsizes2.get(i),dy,dy,zsizes.get(i));
+                Trd sliceTrd = new Trd(sliceName,xsizes1.get(i)-trap_margin_1,xsizes2.get(i)-trap_margin_2,dy,dy,zsizes.get(i)-box_margin);
                 
                 ILogicalVolume sliceLV = new LogicalVolume(sliceName, sliceTrd, sliceMaterial);
                 
@@ -494,20 +499,23 @@
             {
                 
                 double xoffset = xsize_box*nboxes;
-                
-                double xsize1 = (xsizes1.get(i)-xoffset)/ntraps;
+
+                double average_margin_1 = (box_margin+trap_margin_1)/2;
+                double average_margin_2 = (box_margin+trap_margin_2)/2;
+
+                double xsize1 = (xsizes1.get(i)-xoffset)/ntraps - average_margin_1;
                 if (xsize1_min == 0.0) xsize1_min = xsize1;
-                double xsize2 = (xsizes2.get(i)-xoffset)/ntraps;
+                double xsize2 = (xsizes2.get(i)-xoffset)/ntraps - average_margin_2;
                 
-                double xcenter = (xsize1+xsize2)/2 + xoffset;
+                double xcenter = (xsize1+xsize2)/2 + xoffset + box_margin;
                 double theta = Math.abs(Math.atan(side_slope/2));
                 
                 for (int ix = -1; ix <=1; ix=ix+2)
                 {
                     
                     String sliceName = "module" + imodule;
-                    
-                    Trap sliceTrap = new Trap(sliceName,zsizes.get(i),theta*ix,0.0,dy,xsize1,xsize1,0.0,dy,xsize2,xsize2,0.0);
+
+                    Trap sliceTrap = new Trap(sliceName,zsizes.get(i)-box_margin,theta*ix,0.0,dy,xsize1,xsize1,0.0,dy,xsize2,xsize2,0.0);
                     
                     ILogicalVolume sliceLV = new LogicalVolume(sliceName, sliceTrap, sliceMaterial);
                     
@@ -536,8 +544,8 @@
         double moduleZ = moduleBox.getZHalfLength();
 
         // pull corners in by 0.5 microns to eliminate overlaps.
-        moduleX -= 0.0005;
-        moduleZ -= 0.0005;
+//        moduleX -= 0.0005;
+//        moduleZ -= 0.0005;
         
         for (SiTrackerModuleComponentParameters component : moduleParameters)
         {
@@ -572,9 +580,9 @@
         double z = trd.getZHalfLength();
         
         // pull corners in by 0.5 microns to eliminate overlaps.
-        x1 -= 0.0005;
-        x2 -= 0.0005;
-        z -= 0.0005;
+//        x1 -= 0.0005;
+//        x2 -= 0.0005;
+//        z -= 0.0005;
         
         double posY = -y1;
         
@@ -618,11 +626,11 @@
         double posY = -y1;
         
         // pull corners in by 0.5 microns to eliminate overlaps.
-        x1 -= 0.0005;
-        x2 -= 0.0005;
-        x3 -= 0.0005;
-        x4 -= 0.0005;
-        z -= 0.0005;
+//        x1 -= 0.0005;
+//        x2 -= 0.0005;
+//        x3 -= 0.0005;
+//        x4 -= 0.0005;
+//        z -= 0.0005;
         
         for (SiTrackerModuleComponentParameters component : moduleParameters)
         {
CVSspam 0.2.8