Commit in GeomConverter/src/org/lcsim/detector/converter/compact on MAIN
PolyhedraBarrelCalorimeterConverter.java+38-311.3 -> 1.4
fixup planar calorimeter barrel

GeomConverter/src/org/lcsim/detector/converter/compact
PolyhedraBarrelCalorimeterConverter.java 1.3 -> 1.4
diff -u -r1.3 -r1.4
--- PolyhedraBarrelCalorimeterConverter.java	24 Mar 2009 20:06:20 -0000	1.3
+++ PolyhedraBarrelCalorimeterConverter.java	9 Sep 2009 17:31:37 -0000	1.4
@@ -5,11 +5,10 @@
 
 import java.util.Iterator;
 
-import org.jdom.Element;
 import org.jdom.Attribute;
-
-import org.lcsim.detector.IDetectorElement;
+import org.jdom.Element;
 import org.lcsim.detector.DetectorElement;
+import org.lcsim.detector.IDetectorElement;
 import org.lcsim.detector.ILogicalVolume;
 import org.lcsim.detector.IPhysicalVolume;
 import org.lcsim.detector.IRotation3D;
@@ -20,10 +19,14 @@
 import org.lcsim.detector.RotationPassiveXYZ;
 import org.lcsim.detector.Transform3D;
 import org.lcsim.detector.Translation3D;
+import org.lcsim.detector.identifier.ExpandedIdentifier;
+import org.lcsim.detector.identifier.IExpandedIdentifier;
+import org.lcsim.detector.identifier.IIdentifier;
+import org.lcsim.detector.identifier.IIdentifierHelper;
+import org.lcsim.detector.material.IMaterial;
 import org.lcsim.detector.material.MaterialStore;
-import org.lcsim.detector.solids.Trd;
 import org.lcsim.detector.solids.Box;
-import org.lcsim.detector.material.IMaterial;
+import org.lcsim.detector.solids.Trd;
 import org.lcsim.geometry.compact.Detector;
 import org.lcsim.geometry.compact.Subdetector;
 import org.lcsim.geometry.layer.Layer;
@@ -34,9 +37,7 @@
 extends AbstractSubdetectorConverter 
 {
 	public void convert(Subdetector subdet, Detector detector) 
-	{
-		System.out.println("PolyhedraBarrelCalorimeterConverter.convert");
-		
+	{		
 		// subdetector parameters
 		int sysId = subdet.getSystemID();
 		String subdetName = subdet.getName();
@@ -66,9 +67,7 @@
 				thickness/2);
 		IMaterial air = MaterialStore.getInstance().get("Air");
 		ILogicalVolume sectLV = new LogicalVolume(subdetName + "_stave", sectTrd, air);
-		
-		//
-		
+				
 		double stave_thickness = thickness;
 		
 		int layer_number = 0;
@@ -86,7 +85,8 @@
 			// Get number of times to repeat this layer.
 			int repeat;
 			
-			try {
+			try 
+			{
 				repeat = (int)layer_element.getAttribute("repeat").getDoubleValue();
 			}
 			catch (Exception x)
@@ -107,9 +107,7 @@
 				
 				// Layer position in Z within the stave.
 				layer_position_z += layer_thickness / 2;
-				
-				//System.out.println()
-								
+												
 				// Position of layer.
 				ITranslation3D layer_position = new Translation3D(0,0,layer_position_z);
 
@@ -166,8 +164,9 @@
 					slice_position_z += slice_thickness / 2;
 					++slice_number;				
 				}
-				
-				IPhysicalVolume layer_physvol = new PhysicalVolume(new Transform3D(layer_position), layer_name, layer_volume, sectLV, layer_number);
+		
+				// Layer PhysicalVolume.
+				new PhysicalVolume(new Transform3D(layer_position), layer_name, layer_volume, sectLV, layer_number);
 
 				// Increment the layer X dimension.
 				layer_dim_x += layer_thickness * tan(layerInnerAngle) * 2;
@@ -179,19 +178,18 @@
 				++layer_number;	
 			}
 		}
-		
-		//
-		
+				
+		// Create DetectorElements for modules.
 		for (int i=0; i<nsides; i++)
 		{
-			double phi=2*Math.PI*((double)i)/nsides;
-			double zc = -phi + Math.PI/2;
-			
+			double phi=-(2*Math.PI*((double)i)/nsides-Math.PI/2);
+			double zc=-phi+Math.PI/2;
 			double x=sectCenter*Math.cos(phi);
 			double y=sectCenter*Math.sin(phi);
+						
 			ITranslation3D trans = new Translation3D(x,y,0);
 			IRotation3D rotate = new RotationPassiveXYZ(Math.PI/2, 0, zc);
-                        
+			                        
 			ITransform3D transform = new Transform3D(trans,rotate); 			
 						
 			String name = subdetName + "_module" + i;
@@ -202,11 +200,12 @@
 					detector.getDetectorElement().getGeometry().getLogicalVolume(),
 					i
 					);
-			new DetectorElement(subdet.getName() + "_module"+i,subdet.getDetectorElement(),"/"+name);
+			new DetectorElement(subdet.getName() + "_module"+i,subdet.getDetectorElement(),"/"+name);		
 		}
 		
-		// create DetectorElements for sensitive slices
-		int sensorNum = 0;
+		IIdentifierHelper helper = cal.getDetectorElement().getIdentifierHelper();
+		
+		// Create DetectorElements for sensitive slices.		
 		for (IDetectorElement section : subdet.getDetectorElement().getChildren())
 		{
 			int sectNum = section.getGeometry().getPhysicalVolume().getCopyNumber();
@@ -214,17 +213,25 @@
 			{
 				for (IPhysicalVolume slice : layer.getLogicalVolume().getDaughters())
 				{
+					IExpandedIdentifier expId = new ExpandedIdentifier(helper.getIdentifierDictionary().getNumberOfFields());
+					
+					expId.setValue(helper.getFieldIndex("system"),sysId);
+					expId.setValue(helper.getFieldIndex("barrel"), 0);
+					expId.setValue(helper.getFieldIndex("module"), section.getGeometry().getPhysicalVolume().getCopyNumber());
+					expId.setValue(helper.getFieldIndex("layer"), layer.getCopyNumber());
+					expId.setValue(helper.getFieldIndex("slice"), slice.getCopyNumber());
+					IIdentifier id = helper.pack(expId);
+														
 					if (slice.isSensitive())
 					{
 						new DetectorElement(
-								subdetName + "_module" + sectNum + "_layer" + layer.getCopyNumber() + "_sensor" + sensorNum, 
+								subdetName + "_module" + sectNum + "_layer" + layer.getCopyNumber() + "_slice" + slice.getCopyNumber(), 
 								section, 
-								"/" + section.getGeometry().getPhysicalVolume().getName() + "/" + layer.getName() + "/" + slice.getName());
-						++sensorNum;
+								"/" + section.getGeometry().getPhysicalVolume().getName() + "/" + layer.getName() + "/" + slice.getName(),
+								id);						
 					}
 				}
 			}
-			
 		}
 		
 	}
CVSspam 0.2.8