1 added + 7 modified, total 8 files
GeomConverter/src/org/lcsim/detector/converter/compact
diff -N EcalBarrelConverter.java
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ EcalBarrelConverter.java 5 Feb 2009 21:43:23 -0000 1.1
@@ -0,0 +1,22 @@
+package org.lcsim.detector.converter.compact;
+
+import hep.graphics.heprep.HepRep;
+import hep.graphics.heprep.HepRepFactory;
+
+import org.lcsim.geometry.compact.Detector;
+import org.lcsim.geometry.compact.Subdetector;
+import org.lcsim.geometry.subdetector.EcalBarrel;
+
+public class EcalBarrelConverter
+extends AbstractSubdetectorConverter
+implements ISubdetectorConverter
+{
+ // TODO: Implement this method!
+ public void convert(Subdetector subdet, Detector detector)
+ {}
+
+ public Class getSubdetectorType()
+ {
+ return EcalBarrel.class;
+ }
+}
GeomConverter/src/org/lcsim/detector/converter/compact
diff -u -r1.40 -r1.41
--- DetectorConverter.java 3 Dec 2008 00:53:45 -0000 1.40
+++ DetectorConverter.java 5 Feb 2009 21:43:23 -0000 1.41
@@ -93,6 +93,7 @@
addSubdetectorConverter(new SiTrackerEndcap2Converter());
addSubdetectorConverter(new PolyhedraBarrelCalorimeterConverter());
addSubdetectorConverter(new PolyhedraEndcapCalorimeterConverter());
+ addSubdetectorConverter(new EcalBarrelConverter());
addSubdetectorConverter(new TubeSegmentConverter());
}
@@ -144,12 +145,17 @@
// Process all Subdetectors in the Detector.
for ( Subdetector subdetector : detector.getSubdetectors().values())
{
+ //System.out.println("subdetector: " + subdetector.getName());
+
// Find a converter for this type.
- ISubdetectorConverter cnv = getSubdetectorConverter(subdetector.getClass());
+ ISubdetectorConverter cnv = getSubdetectorConverter(subdetector.getClass());
if ( cnv != null )
{
+ //System.out.println("found cnv handling: " + cnv.getSubdetectorType().getCanonicalName());
DetectorElement subdetectorDE = (DetectorElement)cnv.makeSubdetectorDetectorElement(detector, subdetector);
+
+ //System.out.println("made subdet DE: " + subdetectorDE.getName());
// Make the IdentifierHelper for this Subdetector.
IIdentifierHelper helper = cnv.makeIdentifierHelper(subdetector, sysMap);
@@ -189,7 +195,12 @@
// Make the identifiers for this Subdetector.
cnv.makeIdentifiers(subdetector);
}
- }
+ }
+ //else
+ //{
+ // System.out.println("no converter found for " + subdetector.getName());
+ //}
+ //System.out.println();
}
}
GeomConverter/src/org/lcsim/detector/converter/compact
diff -u -r1.2 -r1.3
--- PolyhedraEndcapCalorimeterConverter.java 2 Jun 2008 20:37:00 -0000 1.2
+++ PolyhedraEndcapCalorimeterConverter.java 5 Feb 2009 21:43:23 -0000 1.3
@@ -238,9 +238,13 @@
new DetectorElement(sectPhysVol.getName(), subdet.getDetectorElement(), "/" + sectPhysVol.getName());
- boolean reflect;
- try {
- reflect = node.getAttribute("reflect").getBooleanValue();
+ boolean reflect = true;
+ try
+ {
+ if (node.getAttribute("reflect") != null)
+ {
+ reflect = node.getAttribute("reflect").getBooleanValue();
+ }
}
catch (Exception t)
{
GeomConverter/src/org/lcsim/detector/converter/heprep
diff -u -r1.15 -r1.16
--- DetectorElementToHepRepConverter.java 3 Dec 2008 00:53:45 -0000 1.15
+++ DetectorElementToHepRepConverter.java 5 Feb 2009 21:43:23 -0000 1.16
@@ -27,6 +27,9 @@
{
public static void convert(IDetectorElement detelem, HepRepFactory factory, HepRep heprep, int currentDepth, int maxDepth)
{
+ if (detelem == null)
+ throw new RuntimeException("DetectorElement points to null!");
+
if (maxDepth != -1 && currentDepth > maxDepth)
return;
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.7 -r1.8
--- AbstractPolyhedraCalorimeter.java 14 Sep 2007 23:49:46 -0000 1.7
+++ AbstractPolyhedraCalorimeter.java 5 Feb 2009 21:43:23 -0000 1.8
@@ -6,6 +6,7 @@
*/
package org.lcsim.geometry.subdetector;
+
import org.jdom.Element;
import org.jdom.JDOMException;
import static java.lang.Math.PI;
@@ -152,4 +153,73 @@
phi += getSectionPhi();
}
}
+
+ // Static version for subclasses.
+ public static final void appendHepRep(AbstractPolyhedraCalorimeter cal, HepRepFactory factory, HepRep heprep)
+ {
+ HepRepInstanceTree instanceTree = heprep.getInstanceTreeTop("Detector","1.0");
+ HepRepTypeTree typeTree = heprep.getTypeTree("DetectorType","1.0");
+ HepRepType barrel = typeTree.getType("Barrel");
+
+ HepRepType type = factory.createHepRepType(barrel, cal.getName());
+ type.addAttValue("drawAs","Polygon");
+
+ cal.setHepRepColor(type);
+
+ HepRepInstance instance = factory.createHepRepInstance(instanceTree, type);
+
+ /* compute section (x,y) coordinates */
+ double rmin = cal.getInnerR();
+
+ double x1 = rmin * tan(cal.getHalfSectionPhi());
+ double y1 = rmin;
+
+ double x2 = -x1;
+ double y2 = y1;
+
+ double z = cal.getZLength() / 2;
+
+ double rmax = cal.getOuterR();
+
+ double x4 = rmax * tan(cal.getHalfSectionPhi());
+ double y4 = rmax;
+
+ double x3 = -x4;
+ double y3 = y4;
+
+ /*
+ * Place nsides sections by applying matrix transform to starting coordinates.
+ */
+ double phi = 0;
+ for ( int i=0; i<cal.getNumberOfSides(); i++)
+ {
+ instance = factory.createHepRepInstance(instanceTree, type);
+
+ double ix1 = x1 * cos(phi) - y1 * sin(phi);
+ double iy1 = x1 * sin(phi) + y1 * cos(phi);
+
+ double ix2 = x2 * cos(phi) - y2 * sin(phi);
+ double iy2 = x2 * sin(phi) + y2 * cos(phi);
+
+ double ix3 = x3 * cos(phi) - y3 * sin(phi);
+ double iy3 = x3 * sin(phi) + y3 * cos(phi);
+
+ double ix4 = x4 * cos(phi) - y4 * sin(phi);
+ double iy4 = x4 * sin(phi) + y4 * cos(phi);
+
+ /* +z face */
+ factory.createHepRepPoint(instance, ix1, iy1, z);
+ factory.createHepRepPoint(instance, ix2, iy2, z);
+ factory.createHepRepPoint(instance, ix3, iy3, z);
+ factory.createHepRepPoint(instance, ix4, iy4, z);
+
+ /* -z face */
+ factory.createHepRepPoint(instance, ix4, iy4, -z);
+ factory.createHepRepPoint(instance, ix3, iy3, -z);
+ factory.createHepRepPoint(instance, ix2, iy2, -z);
+ factory.createHepRepPoint(instance, ix1, iy1, -z);
+
+ phi += cal.getSectionPhi();
+ }
+ }
}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.3 -r1.4
--- EcalBarrel.java 7 Mar 2006 01:06:38 -0000 1.3
+++ EcalBarrel.java 5 Feb 2009 21:43:23 -0000 1.4
@@ -1,5 +1,8 @@
package org.lcsim.geometry.subdetector;
+import hep.graphics.heprep.HepRep;
+import hep.graphics.heprep.HepRepFactory;
+
import org.jdom.Element;
import org.jdom.JDOMException;
@@ -8,6 +11,11 @@
{
public EcalBarrel(Element element) throws JDOMException
{
- super(element);
+ super(element);
+ }
+
+ public void appendHepRep(HepRepFactory factory, HepRep heprep)
+ {
+ AbstractPolyhedraCalorimeter.appendHepRep(this, factory, heprep);
}
-}
+}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.8 -r1.9
--- PolyhedraBarrelCalorimeter.java 12 Mar 2008 23:21:05 -0000 1.8
+++ PolyhedraBarrelCalorimeter.java 5 Feb 2009 21:43:23 -0000 1.9
@@ -28,8 +28,12 @@
}
public void appendHepRep(HepRepFactory factory, HepRep heprep)
- {
- //System.out.println("PolyhedraBarrelCalorimeter.appendHepRep");
+ {
DetectorElementToHepRepConverter.convert(getDetectorElement(), factory, heprep, 0, -1);
}
+
+ public boolean isBarrel()
+ {
+ return true;
+ }
}
\ No newline at end of file
GeomConverter/src/org/lcsim/geometry/subdetector
diff -u -r1.8 -r1.9
--- PolyhedraEndcapCalorimeter.java 29 Feb 2008 01:09:08 -0000 1.8
+++ PolyhedraEndcapCalorimeter.java 5 Feb 2009 21:43:23 -0000 1.9
@@ -6,20 +6,13 @@
*/
package org.lcsim.geometry.subdetector;
+import hep.graphics.heprep.HepRep;
+import hep.graphics.heprep.HepRepFactory;
+
import org.jdom.Element;
import org.jdom.JDOMException;
import org.lcsim.detector.converter.heprep.DetectorElementToHepRepConverter;
-import hep.graphics.heprep.HepRep;
-import hep.graphics.heprep.HepRepFactory;
-import hep.graphics.heprep.HepRepInstance;
-import hep.graphics.heprep.HepRepInstanceTree;
-import hep.graphics.heprep.HepRepType;
-import hep.graphics.heprep.HepRepTypeTree;
-import static java.lang.Math.tan;
-import static java.lang.Math.cos;
-import static java.lang.Math.sin;
-
/**
*
* @author jeremym
@@ -61,7 +54,8 @@
public void appendHepRep(HepRepFactory factory, HepRep heprep)
{
- DetectorElementToHepRepConverter.convert(getDetectorElement(), factory, heprep, 0, -1);
+ //DetectorElementToHepRepConverter.convert(getDetectorElement(), factory, heprep, 0, -1);
+ super.appendHepRep(factory, heprep);
}
/*
CVSspam 0.2.8