Print

Print


Commit in GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd on RefactorBranch
AbstractTestBeam.java+7-21.1.2.1 -> 1.1.2.2
CylindricalBarrelCalorimeter.java+51.5 -> 1.5.2.1
CylindricalEndcapCalorimeter.java+7-21.11 -> 1.11.2.1
ForwardDetector.java+50-451.7 -> 1.7.2.1
PolyhedraBarrelCalorimeter.java+18-131.5 -> 1.5.2.1
PolyhedraEndcapCalorimeter.java+6-11.3 -> 1.3.2.1
TPC.java+51.1 -> 1.1.2.1
+98-63
7 modified files
Added setting of limits and region to rest of subdetector types.  (Currently, only the slices are allowed to have limits and/or region.)

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
AbstractTestBeam.java 1.1.2.1 -> 1.1.2.2
diff -u -r1.1.2.1 -r1.1.2.2
--- AbstractTestBeam.java	29 Sep 2005 00:06:41 -0000	1.1.2.1
+++ AbstractTestBeam.java	27 Oct 2005 22:56:58 -0000	1.1.2.2
@@ -131,7 +131,7 @@
             int sliceCount = 0;
             double slicePosZ = layerZ / 2;
             for ( Object so : layer.getChildren("slice"))
-            { 
+            {
                 Element slice = (Element) so;
                 double sliceX = layerX;
                 double sliceY = layerY;
@@ -164,6 +164,11 @@
                 Material sliceMaterial = lcdd.getMaterial(slice.getAttributeValue("material"));
                 sliceVolume.setMaterial(sliceMaterial);
                 if ( sensitive ) sliceVolume.setSensitiveDetector(sens);
+                
+                /* FIXME: these need to be called automatically whenever a new volume is created --JM */
+                setLimitSet(lcdd, slice, sliceVolume);
+                setRegion(lcdd, slice, sliceVolume);
+                
                 structure.addVolume(sliceVolume);
                 
                 PhysVol slicePhysVol = new PhysVol(sliceVolume);
@@ -207,5 +212,5 @@
         envelopePhysVol.addPhysVolID("system", id);
         envelopePhysVol.setPosition(envelopePosition);
         motherVolume.addPhysVol(envelopePhysVol);
-    }    
+    }
 }

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
CylindricalBarrelCalorimeter.java 1.5 -> 1.5.2.1
diff -u -r1.5 -r1.5.2.1
--- CylindricalBarrelCalorimeter.java	15 Jul 2005 00:47:50 -0000	1.5
+++ CylindricalBarrelCalorimeter.java	27 Oct 2005 22:56:58 -0000	1.5.2.1
@@ -80,6 +80,11 @@
                     volume.setMaterial(lcdd.getMaterial(slice.getAttributeValue("material")));
                     volume.setSolid(tube);
                     if (sensitive) volume.setSensitiveDetector(sens);
+                    
+                    /* FIXME: these need to be called automatically whenever a new volume is created --JM */
+                    setLimitSet(lcdd, slice, volume);
+                    setRegion(lcdd, slice, volume);
+                    
                     structure.addVolume(volume);
                     volume1.addPhysVol(new PhysVol(volume));
                 }

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
CylindricalEndcapCalorimeter.java 1.11 -> 1.11.2.1
diff -u -r1.11 -r1.11.2.1
--- CylindricalEndcapCalorimeter.java	18 Jul 2005 22:04:11 -0000	1.11
+++ CylindricalEndcapCalorimeter.java	27 Oct 2005 22:56:58 -0000	1.11.2.1
@@ -27,7 +27,7 @@
     }
     
     public void addToLCDD(LCDD lcdd, SensitiveDetector sens) throws JDOMException
-    {               
+    {
         int id = node.getAttribute("id").getIntValue();
         String detectorName = node.getAttributeValue("name");
         boolean reflect = node.getAttribute("reflect").getBooleanValue();
@@ -44,7 +44,7 @@
         double rmax = dimensions.getAttribute("outer_r").getDoubleValue();
         
         double totWidth = layers.getLayerStack().getTotalThickness();
-                //LayerFromCompactCnv.computeDetectorThickness(node);                
+        //LayerFromCompactCnv.computeDetectorThickness(node);
         double z = zmin;
         
         Tube envelope = new Tube(detectorName+"_envelope");
@@ -95,6 +95,11 @@
                     volume.setMaterial(lcdd.getMaterial(slice.getAttributeValue("material")));
                     volume.setSolid(tube);
                     if (sensitive) volume.setSensitiveDetector(sens);
+                    
+                    /* FIXME: these need to be called automatically whenever a new volume is created --JM */
+                    setLimitSet(lcdd, slice, volume);
+                    setRegion(lcdd, slice, volume);
+                    
                     structure.addVolume(volume);
                     
                     PhysVol physvol = new PhysVol(volume);

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
ForwardDetector.java 1.7 -> 1.7.2.1
diff -u -r1.7 -r1.7.2.1
--- ForwardDetector.java	18 Jul 2005 22:04:11 -0000	1.7
+++ ForwardDetector.java	27 Oct 2005 22:56:58 -0000	1.7.2.1
@@ -33,12 +33,12 @@
     /** Creates a new instance of ForwardDetector */
     public ForwardDetector(Element node) throws JDOMException
     {
-        super(node);                
+        super(node);
     }
     
     /** FIXME: This method is horrible spaghetti code.  --JM */
     public void addToLCDD(LCDD lcdd, SensitiveDetector sens) throws JDOMException
-    {                
+    {
         String detectorName = node.getAttributeValue("name");
         int id = node.getAttribute("id").getIntValue();
         
@@ -56,22 +56,22 @@
         Element dimensions = node.getChild("dimensions");
         double zinner = dimensions.getAttribute("inner_z").getDoubleValue();
         double rmax = dimensions.getAttribute("outer_r").getDoubleValue();
-        double rmin = dimensions.getAttribute("inner_r").getDoubleValue();               
+        double rmin = dimensions.getAttribute("inner_r").getDoubleValue();
         
         /** Beampipe parameters. */
         Element beam = node.getChild("beampipe");
         double outgoingR = beam.getAttribute("outgoing_r").getDoubleValue();
         double incomingR = beam.getAttribute("incoming_r").getDoubleValue();
-        double xangle = beam.getAttribute("crossing_angle").getDoubleValue();     
-        double xangleHalf = xangle / 2;                
+        double xangle = beam.getAttribute("crossing_angle").getDoubleValue();
+        double xangleHalf = xangle / 2;
         
         /** Computed z values. */
-        double thickness = layers.getLayerStack().getTotalThickness();        
+        double thickness = layers.getLayerStack().getTotalThickness();
         double zpos = zinner + (thickness / 2);
         double zouter = zinner + thickness;
         
         /** Beampipe position in envelope. */
-        double beamPosX = Math.tan(xangleHalf) * zpos;        
+        double beamPosX = Math.tan(xangleHalf) * zpos;
         //System.out.println("xangleHalf: " + xangleHalf);
         //System.out.println("thickness: " + thickness);
         //System.out.println("zpos: " + zpos);
@@ -85,7 +85,7 @@
         solids.addSolid(envelopeTube);
         
         /** Incoming beampipe solid. */
-        Tube beamInTube = new Tube(detectorName + "_beampipe_incoming_tube");        
+        Tube beamInTube = new Tube(detectorName + "_beampipe_incoming_tube");
         beamInTube.setZ(thickness * 2);
         beamInTube.setRMin(0);
         beamInTube.setRMax(outgoingR);
@@ -98,17 +98,17 @@
         beamOutTube.setRMax(incomingR);
         solids.addSolid(beamOutTube);
         
-        /** /\/\/\/\ First envelope boolean subtraction of incoming beampipe. /\/\/\/\ */        
-        SubtractionSolid envelopeSubtraction1 = 
+        /** /\/\/\/\ First envelope boolean subtraction of incoming beampipe. /\/\/\/\ */
+        SubtractionSolid envelopeSubtraction1 =
                 new SubtractionSolid(detectorName + "_subtraction1_tube");
         envelopeSubtraction1.setFirstSolid(envelopeTube);
         envelopeSubtraction1.setSecondSolid(beamInTube);
-        solids.addSolid(envelopeSubtraction1);                
+        solids.addSolid(envelopeSubtraction1);
         
         /** Position of incoming beampipe. */
-        Position beamInPos = new Position(detectorName + "_subtraction1_tube_pos");               
+        Position beamInPos = new Position(detectorName + "_subtraction1_tube_pos");
         defines.addPosition(beamInPos);
-        beamInPos.setX(beamPosX);                
+        beamInPos.setX(beamPosX);
         envelopeSubtraction1.setPosition(beamInPos);
         
         /** Rotation of incoming beampipe. */
@@ -116,7 +116,7 @@
         defines.addRotation(beamInRot);
         beamInRot.setY(xangleHalf);
         envelopeSubtraction1.setRotation(beamInRot);
-                
+        
         /** /\/\/\/\ Second envelope boolean subtracion of outgoing beampipe. /\/\/\/\ */
         SubtractionSolid envelopeSubtraction2 =
                 new SubtractionSolid(detectorName + "_subtraction2_tube");
@@ -127,7 +127,7 @@
         /** Position of outgoing beampipe. */
         Position beamOutPos = new Position(detectorName + "_subtraction2_tube_pos");
         defines.addPosition(beamOutPos);
-        beamOutPos.setX(-beamPosX);                
+        beamOutPos.setX(-beamPosX);
         envelopeSubtraction2.setPosition(beamOutPos);
         
         /** Rotation of outgoing beampipe. */
@@ -135,26 +135,26 @@
         defines.addRotation(beamOutRot);
         beamOutRot.setY(-xangleHalf);
         envelopeSubtraction2.setRotation(beamOutRot);
-                                
+        
         /** Final envelope boolean volume. */
         Volume envelopeVolume = new Volume(detectorName + "_envelope_volume");
-        envelopeVolume.setSolid(envelopeSubtraction2);        
-        envelopeVolume.setMaterial(air);        
+        envelopeVolume.setSolid(envelopeSubtraction2);
+        envelopeVolume.setMaterial(air);
         
         /** Process each layer element. */
-        double layerPosZ = -thickness / 2;         
-        double layerDisplZ = 0;                
+        double layerPosZ = -thickness / 2;
+        double layerDisplZ = 0;
         for (Object o : node.getChildren("layer") )
-        {                        
-            Element layerElem = (Element) o;    
+        {
+            Element layerElem = (Element) o;
             
             int repeat = layerElem.getAttribute("repeat").getIntValue();
             
-            double layerThickness = LayerFromCompactCnv.computeSingleLayerThickness(layerElem);            
+            double layerThickness = LayerFromCompactCnv.computeSingleLayerThickness(layerElem);
             
-            /** 
-             * Create tube envelope for this layer, which can be reused in boolean definition 
-             * in the repeat loop below. 
+            /**
+             * Create tube envelope for this layer, which can be reused in boolean definition
+             * in the repeat loop below.
              */
             Tube layerTube = new Tube(detectorName + "_layer_tube");
             layerTube.setRMin(rmin);
@@ -168,41 +168,41 @@
                 //System.out.println("proc layer repeat: " + i);
                 
                 String layerBasename = detectorName + "_layer" + i;
-       
+                
                 /** Increment to new layer position. */
                 layerDisplZ += layerThickness / 2;
                 layerPosZ += layerThickness / 2;
                 
-                //System.out.println("layerPosZ: " + layerPosZ);                                                
+                //System.out.println("layerPosZ: " + layerPosZ);
                 
                 /** First layer subtraction solid. */
-                SubtractionSolid layerSubtraction1 = 
+                SubtractionSolid layerSubtraction1 =
                         new SubtractionSolid(layerBasename + "_subtraction1");
                 layerSubtraction1.setFirstSolid(layerTube);
                 layerSubtraction1.setSecondSolid(beamInTube);
                 solids.addSolid(layerSubtraction1);
                 
                 Position layerSubtraction1Pos = new Position(layerBasename + "_subtraction1_pos");
-                                               
+                
                 double layerGlobalZ = zinner + layerDisplZ;
 //                System.out.println("layerGlobalZ: " + layerGlobalZ);
-                double layerPosX = Math.tan(xangleHalf) * layerGlobalZ;                
+                double layerPosX = Math.tan(xangleHalf) * layerGlobalZ;
 //                System.out.println("layerPosX: " + layerPosX);
                 layerSubtraction1Pos.setX(layerPosX);
-                defines.addPosition(layerSubtraction1Pos); 
+                defines.addPosition(layerSubtraction1Pos);
                 
                 layerSubtraction1.setPosition(layerSubtraction1Pos);
                 layerSubtraction1.setRotation(beamInRot);
                 
                 /** Second layer subtraction solid. */
-                SubtractionSolid layerSubtraction2 = 
+                SubtractionSolid layerSubtraction2 =
                         new SubtractionSolid(layerBasename + "_subtraction2");
                 layerSubtraction2.setFirstSolid(layerSubtraction1);
                 layerSubtraction2.setSecondSolid(beamOutTube);
                 solids.addSolid(layerSubtraction2);
                 
                 Position layerSubtraction2Pos = new Position(layerBasename + "_subtraction2_pos");
-                layerSubtraction2Pos.setX(-layerPosX); 
+                layerSubtraction2Pos.setX(-layerPosX);
                 defines.addPosition(layerSubtraction2Pos);
                 
                 layerSubtraction2.setPosition(layerSubtraction2Pos);
@@ -212,7 +212,7 @@
                 Volume layerVolume = new Volume(layerBasename + "_volume");
                 layerVolume.setMaterial(air);
                 layerVolume.setSolid(layerSubtraction2);
-                            
+                
                 /** Slice loop. */
                 double slicePosZ = -layerThickness / 2;
                 double sliceDisplZ = 0;
@@ -231,7 +231,7 @@
                     
                     /** Go to mid of this slice. */
                     sliceDisplZ += sliceThickness / 2;
-                    slicePosZ += sliceThickness / 2;  
+                    slicePosZ += sliceThickness / 2;
 //                    System.out.println("sliceDisplZ: " + sliceDisplZ );
 //                    System.out.println("slicePosZ: " + slicePosZ );
                     
@@ -244,7 +244,7 @@
                     
                     /** First slice subtraction solid. */
                     SubtractionSolid sliceSubtraction1 =
-                        new SubtractionSolid(sliceBasename + "_subtraction1");
+                            new SubtractionSolid(sliceBasename + "_subtraction1");
                     sliceSubtraction1.setFirstSolid(sliceTube);
                     sliceSubtraction1.setSecondSolid(beamInTube);
                     solids.addSolid(sliceSubtraction1);
@@ -265,7 +265,7 @@
                     sliceSubtraction1.setRotation(beamInRot);
                     
                     /** Second slice subtraction solid. */
-                    SubtractionSolid sliceSubtraction2 = 
+                    SubtractionSolid sliceSubtraction2 =
                             new SubtractionSolid(sliceBasename + "_subtraction2");
                     sliceSubtraction2.setFirstSolid(sliceSubtraction1);
                     sliceSubtraction2.setSecondSolid(beamOutTube);
@@ -282,16 +282,21 @@
                     Volume sliceVolume = new Volume(sliceBasename + "_volume");
                     sliceVolume.setMaterial(lcdd.getMaterial(sliceElem.getAttributeValue("material")));
                     sliceVolume.setSolid(sliceSubtraction2);
-
-                    if ( sensitive ) 
+                    
+                    if ( sensitive )
                     {
                         sliceVolume.setSensitiveDetector(sens);
                     }
+                    
+                    /* FIXME: these need to be called automatically whenever a new volume is created --JM */
+                    setLimitSet(lcdd, sliceElem, sliceVolume);
+                    setRegion(lcdd, sliceElem, sliceVolume);
+                    
                     structure.addVolume(sliceVolume);
                     
                     /** Slice PV. */
                     PhysVol slicePV = new PhysVol(sliceVolume);
-                    slicePV.setZ(slicePosZ);                    
+                    slicePV.setZ(slicePosZ);
                     layerVolume.addPhysVol(slicePV);
                     
                     /** Start of next slice. */
@@ -300,20 +305,20 @@
                     ++sliceCount;
                 }
                 
-                structure.addVolume(layerVolume);      
+                structure.addVolume(layerVolume);
                 
                 /** Layer PV. */
                 PhysVol layerPV = new PhysVol(layerVolume);
                 layerPV.setZ(layerPosZ);
                 layerPV.addPhysVolID("layer", i);
-                envelopeVolume.addPhysVol(layerPV);                                
+                envelopeVolume.addPhysVol(layerPV);
                 
                 /** Increment to start of next layer. */
                 layerDisplZ += layerThickness / 2;
-                layerPosZ += layerThickness / 2;                                                
+                layerPosZ += layerThickness / 2;
             }
         }
-
+        
         /** Add envelope LV. */
         structure.addVolume(envelopeVolume);
         

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
PolyhedraBarrelCalorimeter.java 1.5 -> 1.5.2.1
diff -u -r1.5 -r1.5.2.1
--- PolyhedraBarrelCalorimeter.java	27 Aug 2005 01:09:48 -0000	1.5
+++ PolyhedraBarrelCalorimeter.java	27 Oct 2005 22:56:58 -0000	1.5.2.1
@@ -50,11 +50,11 @@
         Volume motherVolume = lcdd.pickMotherVolume(this);
         Material air = lcdd.getMaterial("Air");
         Define define = lcdd.getDefine();
-     
+        
         /* name and id */
         String detName = node.getAttributeValue("name");
         int id = node.getAttribute("id").getIntValue();
-
+        
         /* get dimensions */
         Element dimensions = node.getChild("dimensions");
         double detZ = dimensions.getAttribute("z").getDoubleValue();
@@ -66,7 +66,7 @@
         Rotation rot = new Rotation(detName + "_rotation");
         rot.setZ(zrot);
         define.addRotation(rot);
-
+        
         /* total thickness of the detector */
         double totalThickness = org.lcsim.geometry.layer.LayerFromCompactCnv.computeDetectorTotalThickness(node);
         
@@ -89,7 +89,7 @@
         /* single stave trapezoid */
         double innerAngle = Math.PI * 2 / numsides;
         double halfInnerAngle = innerAngle/2;
-         
+        
         Trapezoid sectTrd = new Trapezoid(detName + "_stave_trapezoid");
         sectTrd.setY2(detZ);
         sectTrd.setY1(detZ);
@@ -105,7 +105,7 @@
         Volume sectVolume = new Volume(detName + "_stave");
         sectVolume.setMaterial(air);
         sectVolume.setSolid(sectTrd);
-         
+        
         /* build the box layers in the stave */
         double layerOuterAngle = (PI - innerAngle) / 2;
         double layerInnerAngle = (PI/2 - layerOuterAngle);
@@ -128,7 +128,7 @@
                     
                     Attribute s = slice.getAttribute("sensitive");
                     boolean sensitive = s != null && s.getBooleanValue();
-                   
+                    
                     double thickness = slice.getAttribute("thickness").getDoubleValue();
                     posZ +=  thickness / 2;
                     
@@ -138,7 +138,7 @@
                     define.addPosition(slicePosition);
                     
                     /* slice box */
-                    Box sliceBox = new Box(sliceName + "_box");                 
+                    Box sliceBox = new Box(sliceName + "_box");
                     sliceBox.setX(dimX);
                     sliceBox.setY(detZ);
                     sliceBox.setZ(thickness);
@@ -150,6 +150,11 @@
                     Material sliceMaterial = lcdd.getMaterial(slice.getAttributeValue("material"));
                     sliceVolume.setMaterial(sliceMaterial);
                     if ( sensitive ) sliceVolume.setSensitiveDetector(sens);
+                    
+                    /* FIXME: these need to be called automatically whenever a new volume is created --JM */
+                    setLimitSet(lcdd, slice, sliceVolume);
+                    setRegion(lcdd, slice, sliceVolume);
+                    
                     structure.addVolume(sliceVolume);
                     
                     /* slice PhysVol */
@@ -158,9 +163,9 @@
                     slicePhysVol.addPhysVolID("layer", layerNum);
                     slicePhysVol.addPhysVolID("slice", sliceNum);
                     sectVolume.addPhysVol(slicePhysVol);
-                                     
+                    
                     /* incr X dim */
-                    dimX += thickness * tan( layerInnerAngle ) * 2; 
+                    dimX += thickness * tan( layerInnerAngle ) * 2;
                     
                     /* incr Z position */
                     posZ += thickness / 2;
@@ -171,11 +176,11 @@
                 /* incr layer number */
                 ++layerNum;
             }
-        }      
+        }
         
         /* add section volume after all slices */
         structure.addVolume(sectVolume);
- 
+        
         /* place the staves */
         double innerRotation = innerAngle;
         double offsetRotation = -innerRotation / 2;
@@ -204,11 +209,11 @@
             PhysVol sectPhysVol = new PhysVol(sectVolume);
             sectPhysVol.setPosition(position);
             sectPhysVol.setRotation(rotation);
-        
+            
             envelopeVolume.addPhysVol(sectPhysVol);
             sectPhysVol.addPhysVolID("stave",0);
             sectPhysVol.addPhysVolID("module",moduleNumber);
-           
+            
             rotY -= innerRotation;
             posX = -sectCenterRadius * sin(rotY);
             posY = sectCenterRadius * cos(rotY);

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
PolyhedraEndcapCalorimeter.java 1.3 -> 1.3.2.1
diff -u -r1.3 -r1.3.2.1
--- PolyhedraEndcapCalorimeter.java	27 Aug 2005 01:10:16 -0000	1.3
+++ PolyhedraEndcapCalorimeter.java	27 Oct 2005 22:56:58 -0000	1.3.2.1
@@ -148,6 +148,11 @@
                     Material sliceMaterial = lcdd.getMaterial(slice.getAttributeValue("material"));
                     sliceVolume.setMaterial(sliceMaterial);
                     if ( sensitive ) sliceVolume.setSensitiveDetector(sens);
+                    
+                    /* FIXME: these need to be called automatically whenever a new volume is created --JM */
+                    setLimitSet(lcdd, slice, sliceVolume);
+                    setRegion(lcdd, slice, sliceVolume);
+                    
                     structure.addVolume(sliceVolume);
                     
                     /* slice PhysVol */
@@ -209,7 +214,7 @@
             sectPosY = sectCenterRadius * cos(rotY);
         }
         
-        /* place envelope physical volume */        
+        /* place envelope physical volume */
         PhysVol envelopePhysvol = new PhysVol(envelopeVolume);
         envelopePhysvol.setZ(zmin + layersThickness/2);
         envelopePhysvol.addPhysVolID("system",id);

GeomConverter/src/org/lcsim/geometry/compact/converter/lcdd
TPC.java 1.1 -> 1.1.2.1
diff -u -r1.1 -r1.1.2.1
--- TPC.java	20 Aug 2005 19:56:00 -0000	1.1
+++ TPC.java	27 Oct 2005 22:56:58 -0000	1.1.2.1
@@ -82,6 +82,11 @@
                     volume.setMaterial(lcdd.getMaterial(slice.getAttributeValue("material")));
                     volume.setSolid(tube);
                     if (sensitive) volume.setSensitiveDetector(sens);
+                    
+                    /* FIXME: these need to be called automatically whenever a new volume is created --JM */
+                    setLimitSet(lcdd, slice, volume);
+                    setRegion(lcdd, slice, volume);
+                    
                     structure.addVolume(volume);
                     volume1.addPhysVol(new PhysVol(volume));
                 }
CVSspam 0.2.8