GeomConverter/src/org/lcsim/detector/converter/compact
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); } }
*/
}