Print

Print


Commit in GeomConverter/src/org/lcsim/detector/converter/compact on MAIN
MultiLayerTrackerConverter.java+60-591.17 -> 1.18
add layer DetectorElement

GeomConverter/src/org/lcsim/detector/converter/compact
MultiLayerTrackerConverter.java 1.17 -> 1.18
diff -u -r1.17 -r1.18
--- MultiLayerTrackerConverter.java	30 Nov 2010 00:16:27 -0000	1.17
+++ MultiLayerTrackerConverter.java	26 Jan 2011 01:10:40 -0000	1.18
@@ -29,10 +29,10 @@
  */
 public class MultiLayerTrackerConverter extends AbstractSubdetectorConverter implements ISubdetectorConverter
 {
-    public void convert( Subdetector subdet, Detector detector )
+    public void convert(Subdetector subdet, Detector detector)
     {
         ILogicalVolume mother = null;
-        if ( subdet.isInsideTrackingVolume() )
+        if (subdet.isInsideTrackingVolume())
         {
             mother = detector.getTrackingVolume().getLogicalVolume();
         }
@@ -41,63 +41,68 @@
             mother = detector.getWorldVolume().getLogicalVolume();
         }
 
-        MultiLayerTracker tracker = ( MultiLayerTracker ) subdet;
+        MultiLayerTracker tracker = (MultiLayerTracker)subdet;
 
         Layering layering = tracker.getLayering();
 
         String name = tracker.getName();
 
         int layerNumber = 0;
-        for ( int i = 0; i < tracker.getLayering().getNumberOfLayers(); i++ )
+        for (int i = 0; i < tracker.getLayering().getNumberOfLayers(); i++ )
         {
-            Layer layer = layering.getLayer( i );
+            Layer layer = layering.getLayer(i);
             double layerInnerR = tracker.getInnerR()[ i ];
             double layerOuterZ = tracker.getOuterZ()[ i ];
             double layerThickness = layer.getThickness();
 
-            Tube layerTube = new Tube( name + "_layer" + i + "_tube",
-                                       layerInnerR,
-                                       layerInnerR + layerThickness,
-                                       layerOuterZ );
+            Tube layerTube = new Tube(name + "_layer" + i + "_tube", layerInnerR, layerInnerR + layerThickness, layerOuterZ);
 
             IMaterial layerMaterial = detector.getDetectorElement().getGeometry().getLogicalVolume().getMaterial();
 
-            LogicalVolume layerLV = new LogicalVolume( name + "_layer" + i, layerTube, layerMaterial );
+            LogicalVolume layerLV = new LogicalVolume(name + "_layer" + i, layerTube, layerMaterial);
 
-            new PhysicalVolume( null, name + "_layer" + i, layerLV, mother, i );
+            new PhysicalVolume(null, name + "_layer" + i, layerLV, mother, i);
 
             double sliceInnerR = layerInnerR;
-            for ( int j = 0; j < layer.getNumberOfSlices(); j++ )
+            
+            // Make layer name and path to geometry.
+            String layerName = name + "_layer" + i;
+            String layerPath = "";
+            if (subdet.isInsideTrackingVolume())
             {
-                LayerSlice slice = layer.getSlice( j );
+                layerPath += "/tracking_region";
+            }
+            layerPath += "/" + layerName;       
+            
+            // Make the layer DetectorElement.  (no id)
+            IDetectorElement layerDe = new DetectorElement(layerName, tracker.getDetectorElement(), layerPath);
+            
+            for (int j = 0; j < layer.getNumberOfSlices(); j++ )
+            {
+                LayerSlice slice = layer.getSlice(j);
 
                 double sliceThickness = slice.getThickness();
 
-                Tube sliceTube = new Tube( name + "layer" + i + "_slice" + j + "_tube",
-                                           sliceInnerR,
-                                           sliceInnerR + sliceThickness,
-                                           layerOuterZ );
-
-                IMaterial sliceMaterial = MaterialStore.getInstance().get( slice.getMaterial().getName() );
+                Tube sliceTube = new Tube(name + "layer" + i + "_slice" + j + "_tube", sliceInnerR, sliceInnerR + sliceThickness, layerOuterZ);
 
-                LogicalVolume sliceLV = new LogicalVolume( name + "layer" + i + "_slice" + j, sliceTube, sliceMaterial );
+                IMaterial sliceMaterial = MaterialStore.getInstance().get(slice.getMaterial().getName());
 
-                PhysicalVolume slicePV = new PhysicalVolume( null, "slice" + j, sliceLV, layerLV, j );
+                LogicalVolume sliceLV = new LogicalVolume(name + "layer" + i + "_slice" + j, sliceTube, sliceMaterial);
 
-                if ( slice.isSensitive() )
+                PhysicalVolume slicePV = new PhysicalVolume(null, "slice" + j, sliceLV, layerLV, j);
+                                
+                if (slice.isSensitive())
                 {
-                    slicePV.setSensitive( true );
+                    slicePV.setSensitive(true);
 
                     String path = "/tracking_region/" + name + "_layer" + i + "/slice" + j;
 
-                    ExpandedIdentifier expid = makeExpandedIdentifier( subdet.getIDDecoder(), tracker.getIDDecoder()
-                            .getSystemNumber(), i );
+                    ExpandedIdentifier expid = makeExpandedIdentifier(subdet.getIDDecoder(), tracker.getIDDecoder().getSystemNumber(), i);
 
-                    IIdentifierDictionary iddict = IdentifierDictionaryManager.getInstance().getIdentifierDictionary(
-                            subdet.getReadout().getName() );
-                    IIdentifier id = IdentifierUtil.pack( iddict, expid );
+                    IIdentifierDictionary iddict = IdentifierDictionaryManager.getInstance().getIdentifierDictionary(subdet.getReadout().getName());
+                    IIdentifier id = IdentifierUtil.pack(iddict, expid);
 
-                    new DetectorElement( name + "_layer" + layerNumber, tracker.getDetectorElement(), path, id );
+                    new DetectorElement(name + "_layer" + layerNumber, layerDe, path, id);
 
                     ++layerNumber;
                 }
@@ -107,51 +112,48 @@
         }
     }
 
-    static ExpandedIdentifier makeExpandedIdentifier( IDDecoder decoder, int systemNumber, int layer )
+    static ExpandedIdentifier makeExpandedIdentifier(IDDecoder decoder, int systemNumber, int layer)
     {
         ExpandedIdentifier id = new ExpandedIdentifier();
         // int extras=0;
-        for ( int i = 0; i < decoder.getFieldCount(); i++ )
+        for (int i = 0; i < decoder.getFieldCount(); i++ )
         {
-            String fieldName = decoder.getFieldName( i );
-            if ( fieldName.equals( "system" ) )
+            String fieldName = decoder.getFieldName(i);
+            if (fieldName.equals("system"))
             {
-                id.addValue( systemNumber );
+                id.addValue(systemNumber);
             }
-            else if ( fieldName.equals( "layer" ) )
+            else if (fieldName.equals("layer"))
             {
-                id.addValue( layer );
+                id.addValue(layer);
             }
-            else if ( fieldName.equals( "barrel" ) )
+            else if (fieldName.equals("barrel"))
             {
-                id.addValue( 0 );
+                id.addValue(0);
             }
             else
             {
-                id.addValue( 0 );
+                id.addValue(0);
             }
         }
         return id;
     }
 
-    public void makeIdentifierContext( Subdetector subdet )
+    public void makeIdentifierContext(Subdetector subdet)
     {
-        /*
-         * IIdentifierDictionary iddict =
-         * subdet.getDetectorElement().getIdentifierHelper().getIdentifierDictionary();
-         * 
-         * int systemIndex = iddict.getFieldIndex("system"); int barrelIndex =
-         * iddict.getFieldIndex("barrel"); int layerIndex = iddict.getFieldIndex("layer");
-         * 
-         * IdentifierContext systemContext = new IdentifierContext(new int[]
-         * {systemIndex}); IdentifierContext subdetContext = new IdentifierContext(new
-         * int[] {systemIndex,barrelIndex}); IdentifierContext layerContext = new
-         * IdentifierContext(new int[] {systemIndex,barrelIndex,layerIndex});
-         * 
-         * iddict.addIdentifierContext("system", systemContext);
-         * iddict.addIdentifierContext("subdetector", subdetContext);
-         * iddict.addIdentifierContext("layer", layerContext);
-         */
+    /*
+     * IIdentifierDictionary iddict = subdet.getDetectorElement().getIdentifierHelper().getIdentifierDictionary();
+     * 
+     * int systemIndex = iddict.getFieldIndex("system"); int barrelIndex = iddict.getFieldIndex("barrel"); int
+     * layerIndex = iddict.getFieldIndex("layer");
+     * 
+     * IdentifierContext systemContext = new IdentifierContext(new int[] {systemIndex}); IdentifierContext subdetContext
+     * = new IdentifierContext(new int[] {systemIndex,barrelIndex}); IdentifierContext layerContext = new
+     * IdentifierContext(new int[] {systemIndex,barrelIndex,layerIndex});
+     * 
+     * iddict.addIdentifierContext("system", systemContext); iddict.addIdentifierContext("subdetector", subdetContext);
+     * iddict.addIdentifierContext("layer", layerContext);
+     */
     }
 
     public Class getSubdetectorType()
@@ -160,8 +162,7 @@
     }
 
     /*
-     * public class MultiLayerTrackerSensorLayer extends DetectorElement {
-     * MultiLayerTrackerSensorLayer(String name, IDetectorElement parent, String path,
-     * IIdentifier id) { super(name,parent,path,id); } }
+     * public class MultiLayerTrackerSensorLayer extends DetectorElement { MultiLayerTrackerSensorLayer(String name,
+     * IDetectorElement parent, String path, IIdentifier id) { super(name,parent,path,id); } }
      */
 }
CVSspam 0.2.8