Commit in GeomConverter/src/org/lcsim/detector/converter/compact on MAIN
DiskTrackerConverter.java+48-41.9 -> 1.10
MultiLayerTrackerConverter.java+37-11.7 -> 1.8
+85-5
2 modified files
JM: Fix problem reported by Dhima where DetectorElement layers on MultiLayerTracker and DiscTracker had no ids.

GeomConverter/src/org/lcsim/detector/converter/compact
DiskTrackerConverter.java 1.9 -> 1.10
diff -u -r1.9 -r1.10
--- DiskTrackerConverter.java	9 May 2007 00:59:58 -0000	1.9
+++ DiskTrackerConverter.java	12 Jul 2007 06:54:42 -0000	1.10
@@ -2,8 +2,10 @@
 
 import hep.physics.vec.BasicHep3Vector;
 
+import org.lcsim.geometry.IDDecoder;
 import org.lcsim.detector.DetectorElement;
 import org.lcsim.detector.IDetectorElement;
+import org.lcsim.detector.IDetectorElementContainer;
 import org.lcsim.detector.ILogicalVolume;
 import org.lcsim.detector.LogicalVolume;
 import org.lcsim.detector.PhysicalVolume;
@@ -18,6 +20,7 @@
 import org.lcsim.geometry.layer.LayerSlice;
 import org.lcsim.geometry.layer.Layering;
 import org.lcsim.geometry.subdetector.DiskTracker;
+import org.lcsim.detector.identifier.*;
 
 /**
  * Convert a DiskTracker to the detailed geometry description.
@@ -33,6 +36,9 @@
         ILogicalVolume trackingVolume = detector.getTrackingVolume().getLogicalVolume();
 
         DiskTracker tracker = (DiskTracker)subdet;
+        IDDecoder decoder = tracker.getIDDecoder();
+
+        int systemNumber = tracker.getIDDecoder().getSystemNumber();
         
         subdet.setDetectorElement( new DeSubdetector( detector, subdet ) );
 
@@ -146,19 +152,31 @@
                 {                    
                     String path = "/tracking_region/" + name + "_positive_layer" +i + "/slice" + j;
 
-                    new DiskTrackerSensorLayer(
+                    DiskTrackerSensorLayer northEndcapLayer = 
+                        new DiskTrackerSensorLayer(
                             name + "_positive_sensor" + sensorNum,
                             endcapPos,
                             path);
 
+                    ExpandedIdentifier expid = makeExpandedIdentifier(decoder, systemNumber, 1, i);
+
+                    IIdentifierDictionary iddict = IdentifierDictionaryManager.getInstance().getIdentifierDictionary( subdet.getReadout().getName() );
+                    IIdentifier id = IdentifierUtil.pack(iddict, expid);
+                    northEndcapLayer.setIdentifier(id);
+
                     if ( tracker.getReflect() )
                     {
                         path = "/tracking_region/" + name + "_negative_layer" +i + "/slice" + j;
-                        new DiskTrackerSensorLayer(
+                        DiskTrackerSensorLayer southEndcapLayer = 
+                            new DiskTrackerSensorLayer(
                                 name + "_negative_sensor" + sensorNum,
                                 endcapNeg,
                                 path);
-                    }                    
+                                
+                        expid = makeExpandedIdentifier(decoder, systemNumber, 2, i);
+                        id = IdentifierUtil.pack(iddict, expid);
+                        southEndcapLayer.setIdentifier(id);
+                    }
                     
                     ++sensorNum;
                 }
@@ -166,6 +184,32 @@
         }
     }
 
+    static ExpandedIdentifier makeExpandedIdentifier(IDDecoder decoder, int systemNumber, int barrel, int layer)
+    {
+        ExpandedIdentifier id = new ExpandedIdentifier();
+        for (int i=0; i<decoder.getFieldCount(); i++) 
+        {
+            String fieldName = decoder.getFieldName(i);
+            if (fieldName.equals("system"))
+            {
+                id.addValue(systemNumber);
+            }
+            else if (fieldName.equals("layer"))
+            {
+                id.addValue(layer);
+            }
+            else if (fieldName.equals("barrel"))
+            {
+                id.addValue(barrel);
+            }
+            else 
+            {
+                id.addValue(0);
+            }
+        }
+        return id;
+    }
+
     public Class getSubdetectorType()
     {
         return DiskTracker.class;
@@ -190,4 +234,4 @@
             super(name);            
         }
     }    
-}
\ No newline at end of file
+}

GeomConverter/src/org/lcsim/detector/converter/compact
MultiLayerTrackerConverter.java 1.7 -> 1.8
diff -u -r1.7 -r1.8
--- MultiLayerTrackerConverter.java	10 May 2007 06:02:37 -0000	1.7
+++ MultiLayerTrackerConverter.java	12 Jul 2007 06:54:42 -0000	1.8
@@ -14,6 +14,8 @@
 import org.lcsim.geometry.layer.LayerSlice;
 import org.lcsim.geometry.layer.Layering;
 import org.lcsim.geometry.subdetector.MultiLayerTracker;
+import org.lcsim.geometry.IDDecoder;
+import org.lcsim.detector.identifier.*;
 
 /**
  * Convert a MultiLayerTracker into the org.lcsim.detector geometry representation.
@@ -99,7 +101,14 @@
                 if ( slice.isSensitive() )
                 {
                     String path = "/tracking_region/" + name + "_layer" +i + "/slice" + j;
-                    new MultiLayerTrackerSensorLayer(name + "_layer" + layerNumber, tracker.getDetectorElement(), path);
+                    MultiLayerTrackerSensorLayer layerDetectorElement = new MultiLayerTrackerSensorLayer(name + "_layer" + layerNumber, tracker.getDetectorElement(), path);
+                    
+                    ExpandedIdentifier expid = makeExpandedIdentifier(subdet.getIDDecoder(),tracker.getIDDecoder().getSystemNumber(),i);
+
+                    IIdentifierDictionary iddict = IdentifierDictionaryManager.getInstance().getIdentifierDictionary( subdet.getReadout().getName() );
+                    IIdentifier id = IdentifierUtil.pack( iddict, expid );
+                    layerDetectorElement.setIdentifier(id);
+
                     ++layerNumber;
                 }
                 
@@ -107,6 +116,33 @@
             }
         }               
     }
+
+    static ExpandedIdentifier makeExpandedIdentifier(IDDecoder decoder, int systemNumber, int layer)
+    {
+        ExpandedIdentifier id = new ExpandedIdentifier();
+        int extras=0;
+        for (int i=0; i<decoder.getFieldCount(); i++)
+        {
+            String fieldName = decoder.getFieldName(i);
+            if (fieldName.equals("system"))
+            {
+                id.addValue(systemNumber);
+            }
+            else if (fieldName.equals("layer"))
+            {
+                id.addValue(layer);
+            }
+            else if (fieldName.equals("barrel"))
+            {
+                id.addValue(0);
+            }
+            else 
+            {
+                id.addValue(0);
+            }
+        }
+        return id;
+    }
     
     public Class getSubdetectorType()
     {
CVSspam 0.2.8