Print

Print


Commit in GeomConverter/src/org/lcsim on MAIN
detector/converter/compact/EcalBarrelConverter.java+22added 1.1
                          /DetectorConverter.java+13-21.40 -> 1.41
                          /PolyhedraEndcapCalorimeterConverter.java+7-31.2 -> 1.3
detector/converter/heprep/DetectorElementToHepRepConverter.java+31.15 -> 1.16
geometry/subdetector/AbstractPolyhedraCalorimeter.java+701.7 -> 1.8
                    /EcalBarrel.java+10-21.3 -> 1.4
                    /PolyhedraBarrelCalorimeter.java+6-21.8 -> 1.9
                    /PolyhedraEndcapCalorimeter.java+5-111.8 -> 1.9
+136-20
1 added + 7 modified, total 8 files
JM: attempt at fixing up polyhedra cal heprep generation

GeomConverter/src/org/lcsim/detector/converter/compact
EcalBarrelConverter.java added at 1.1
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
DetectorConverter.java 1.40 -> 1.41
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
PolyhedraEndcapCalorimeterConverter.java 1.2 -> 1.3
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
DetectorElementToHepRepConverter.java 1.15 -> 1.16
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
AbstractPolyhedraCalorimeter.java 1.7 -> 1.8
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
EcalBarrel.java 1.3 -> 1.4
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
PolyhedraBarrelCalorimeter.java 1.8 -> 1.9
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
PolyhedraEndcapCalorimeter.java 1.8 -> 1.9
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