Commit in GeomConverter/src/org/lcsim/detector/converter/compact on MAIN
SiTrackerEndcapConverter.java+60-251.10 -> 1.11
JM: dev snapshot

GeomConverter/src/org/lcsim/detector/converter/compact
SiTrackerEndcapConverter.java 1.10 -> 1.11
diff -u -r1.10 -r1.11
--- SiTrackerEndcapConverter.java	5 Dec 2007 00:20:46 -0000	1.10
+++ SiTrackerEndcapConverter.java	5 Dec 2007 01:26:58 -0000	1.11
@@ -3,6 +3,7 @@
 import hep.physics.matrix.BasicMatrix;
 import hep.physics.vec.BasicHep3Vector;
 import hep.physics.vec.VecOp;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -26,10 +27,12 @@
 import org.lcsim.detector.identifier.ExpandedIdentifier;
 import org.lcsim.detector.identifier.IIdentifier;
 import org.lcsim.detector.identifier.IIdentifierDictionary;
-import org.lcsim.detector.identifier.IIdentifierDictionary.FieldNotFoundException;
-import org.lcsim.detector.identifier.IIdentifierDictionary.InvalidIndexException;
+import org.lcsim.detector.identifier.IIdentifierHelper;
 import org.lcsim.detector.identifier.IdentifierDictionaryManager;
+import org.lcsim.detector.identifier.IdentifierHelper;
 import org.lcsim.detector.identifier.IdentifierUtil;
+import org.lcsim.detector.identifier.IIdentifierDictionary.FieldNotFoundException;
+import org.lcsim.detector.identifier.IIdentifierDictionary.InvalidIndexException;
 import org.lcsim.detector.material.IMaterial;
 import org.lcsim.detector.material.MaterialStore;
 import org.lcsim.detector.solids.Box;
@@ -43,7 +46,6 @@
 import org.lcsim.detector.tracker.silicon.SiSensorElectrodes;
 import org.lcsim.detector.tracker.silicon.SiStrips;
 import org.lcsim.detector.tracker.silicon.SiTrackerBarrelModule;
-import org.lcsim.detector.tracker.silicon.SiTrackerIdentifierHelper;
 import org.lcsim.geometry.compact.Detector;
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.geometry.subdetector.SiTrackerEndcap;
@@ -52,7 +54,7 @@
  * Converter for SiTrackerEndcap.
  *
  * @author Jeremy McCormick, Tim Nelson
- * @version $Id: SiTrackerEndcapConverter.java,v 1.10 2007/12/05 00:20:46 tknelson Exp $
+ * @version $Id: SiTrackerEndcapConverter.java,v 1.11 2007/12/05 01:26:58 jeremy Exp $
  */
 
 public class SiTrackerEndcapConverter
@@ -68,6 +70,7 @@
         Element node = subdet.getNode();
         
         IDetectorElement endcapDE = new DetectorElement(subdet.getName(), detector.getDetectorElement());
+        subdet.setDetectorElement(endcapDE);
         
         // Positive endcap DE.
         IDetectorElement endcapPosDE = new DetectorElement(subdet.getName() + "_positive", endcapDE);
@@ -144,35 +147,58 @@
                     // Positive endcap module.
                     String modulePath = wedgePath + "/" + module.getName();
                     String moduleName = wedgeName + "_module" + module.getCopyNumber();
-                    IDetectorElement moduleDE = new DetectorElement(moduleName,wedgeDE,detector.getNavigator().getPath(modulePath));
+                    //IDetectorElement moduleDE = new DetectorElement(moduleName,wedgeDE,detector.getNavigator().getPath(modulePath));
+                    IDetectorElement moduleDE = new SiTrackerBarrelModule(
+                            moduleName,
+                            wedgeDE,
+                            detector.getNavigator().getPath(modulePath).toString(),
+                            module.getCopyNumber());
                     
                     // Negative endcap module.
                     String modulePathReflect = wedgePathReflect + "/" + module.getName();
                     String moduleNameReflect = wedgeNameReflect + "_module" + module.getCopyNumber();
-                    IDetectorElement moduleDEReflect = new DetectorElement(moduleNameReflect,wedgeDEReflect,detector.getNavigator().getPath(modulePathReflect));
+                    //IDetectorElement moduleDEReflect = new DetectorElement(moduleNameReflect,wedgeDEReflect,detector.getNavigator().getPath(modulePathReflect));
+                    IDetectorElement moduleDEReflect = new SiTrackerBarrelModule(
+                            moduleNameReflect,
+                            wedgeDEReflect,
+                            detector.getNavigator().getPath(modulePathReflect).toString(),
+                            module.getCopyNumber()
+                            );
                     
-                    // Module DEs.
+                    // Sensor DEs.
                     for (IPhysicalVolume component : module.getLogicalVolume().getDaughters())
                     {
                         if (component.isSensitive())
-                        {
+                        {                       
+                            int sensorNum = component.getCopyNumber();
+                            
                             // Positive endcap component.
-                            new DetectorElement(
-                                    moduleName + "_component" + component.getCopyNumber(),
+                            new SiSensor(
+                                    sensorNum,
+                                    moduleName + "_component" + sensorNum,
                                     moduleDE,
-                                    detector.getNavigator().getPath(modulePath + "/" + component.getName()));
+                                    detector.getNavigator().getPath(modulePath + "/" + component.getName()).toString());
                             
                             // Negative endcap component. (should have same physical layout as positive)
-                            new DetectorElement(
-                                    moduleNameReflect + "_component" + component.getCopyNumber(),
+                            new SiSensor(
+                                    sensorNum,
+                                    moduleNameReflect + "_component" + sensorNum,
                                     moduleDEReflect,
-                                    detector.getNavigator().getPath(modulePathReflect + "/" + component.getName()));
+                                    detector.getNavigator().getPath(modulePathReflect + "/" + component.getName()).toString());
                         }
                     }
                 }
             }
         }
         
+        try {
+            setupSensorDetectorElements(subdet);
+        }
+        catch (Exception x)
+        {
+            throw new RuntimeException(x);
+        }
+        
         // Set cached module parameters to null for GC.
         moduleParameters = null;
     }
@@ -560,10 +586,12 @@
         return SiTrackerEndcap.class;
     }
     
-    private void setupSensorDetectorElements(Subdetector subdet)
-    {
+    // 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();
+        //SiTrackerIdentifierHelper id_helper = (SiTrackerIdentifierHelper)subdet.getDetectorElement().getIdentifierHelper();
         
         int moduleId=0;
         
@@ -600,13 +628,17 @@
                                     expId.setValue(iddict.getFieldIndex("system"), subdet.getSystemID());
                                     
                                     // Set the barrel-endcap flag.
-                                    if (id_helper.isEndcapPositive(endcap.getIdentifier()))
+                                    //if (id_helper.isEndcapPositive(endcap.getIdentifier()))
+                                    if (id_helper.getValue(endcap.getIdentifier(), "barrel") == 1)
                                     {
-                                        expId.setValue(iddict.getFieldIndex("barrel"), id_helper.getEndcapPositiveValue());
+                                        //expId.setValue(iddict.getFieldIndex("barrel"), id_helper.getEndcapPositiveValue());
+                                        expId.setValue(iddict.getFieldIndex("barrel"), 1);
                                     }
-                                    else if (id_helper.isEndcapNegative(endcap.getIdentifier()))
+                                    if (id_helper.getValue(endcap.getIdentifier(), "barrel") == 2)
+                                    //else if (id_helper.isEndcapNegative(endcap.getIdentifier()))
                                     {
-                                        expId.setValue(iddict.getFieldIndex("barrel"), id_helper.getEndcapNegativeValue());
+                                        //expId.setValue(iddict.getFieldIndex("barrel"), id_helper.getEndcapNegativeValue());
+                                        expId.setValue(iddict.getFieldIndex("barrel"), 2);
                                     }
                                     
                                     // Set the layer number.
@@ -642,13 +674,17 @@
                                 //System.out.println("path : " + modulePath.toString() + "/" + pv.getName());
                                 String sensorPath = modulePath.toString() + "/" + pv.getName();
                                 //String sensorName = subdet.getName() + "_layer" + layer.getGeometry().getPhysicalVolume().getCopyNumber() + "_module" + moduleId + "_sensor" + sensorId;
-                                String sensorName = subdet.getName() + "_endcap" + id_helper.getBarrel(endcap.getIdentifier()) +
+                                String sensorName = subdet.getName() + "_endcap" + id_helper.getValue(endcap.getIdentifier(), "barrel") +
                                         "_layer" + layer.getGeometry().getPhysicalVolume().getCopyNumber() +
                                         "_wedge" +  wedge.getGeometry().getPath().getLeafVolume().getCopyNumber() +
                                         "_module" + ((SiTrackerBarrelModule)module).getModuleId() + "_sensor" + sensorId;
                                 
+                                System.out.println(sensorName + " -> " + expId);
+                                System.out.println(sensorName + " -> " + id);
+                                System.out.println();
+                                
                                 SiSensor sensor = new SiSensor(sensorId,sensorName,module,sensorPath,id);
-                                sensor.setIdentifier(id);
+                                //sensor.setIdentifier(id);
                                 
                                 // Set up SiStrips for the sensors
                                 IPolyhedron sensor_solid = (IPolyhedron)sensor.getGeometry().getLogicalVolume().getSolid();
@@ -705,8 +741,7 @@
                                 sensor.setTransferEfficiencies(ChargeCarrier.HOLE,new BasicMatrix(transfer_efficiencies));
                                 
                                 // Incremenet sensorID for double-sided.
-                                ++sensorId;
-                                
+                                ++sensorId;                                
                             }
                         }
                         
CVSspam 0.2.8