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