View Javadoc

1   /*
2    * To change this template, choose Tools | Templates
3    * and open the template in the editor.
4    */
5   
6   package org.lcsim.detector.solids;
7   
8   import hep.physics.vec.BasicHep3Vector;
9   import java.util.ArrayList;
10  import java.util.List;
11  import junit.framework.TestCase;
12  import org.lcsim.detector.solids.Polycone.ZPlane;
13  
14  /**
15   *
16   * @author cozzy
17   */
18  public class PolyconeTest extends TestCase {
19      
20      public PolyconeTest(String testName) {
21          super(testName);
22      }            
23  
24      
25      
26      @Override
27      protected void setUp() throws Exception {
28          super.setUp();
29          
30          
31          
32      }
33  
34  
35      /**
36       * Test of getCubicVolume method, of class Polycone.
37       * 
38       */
39      public void testGetCubicVolume() {
40          ZPlane p1 = new ZPlane(1,2,0);
41          ZPlane p2 = new ZPlane(1,2,10);
42          ZPlane p3 = new ZPlane(2,3,15);
43          
44          List<ZPlane> l1 = new ArrayList<ZPlane>(); 
45          List<ZPlane> l2 = new ArrayList<ZPlane>(); 
46          List<ZPlane> l3 = new ArrayList<ZPlane>(); 
47          
48          l1.add(p1);
49          l1.add(p2);
50          
51          l2.addAll(l1);
52          l2.add(p3);
53          
54          l3.add(p2);
55          l3.add(p3);
56          
57          Polycone pc1 = new Polycone("Simple Tube",l1);
58          Polycone pc2 = new Polycone("Tube + bevel",l2);
59          Polycone pc3 = new Polycone("Bevel",l3);
60          
61          Tube t = new Tube("Tube using Tube Class",1,2,5);
62          
63          double tv1 = t.getCubicVolume();
64          double v1 = pc1.getCubicVolume();
65          double v2 = pc2.getCubicVolume();
66          double v3 = pc3.getCubicVolume();
67          
68          double realv3 = Math.PI*20; 
69          assertEquals(tv1,v1);
70          assertEquals(v1+v3,v2);
71          
72          double TOLERANCE = 0.000001; 
73          double diff = Math.abs(v3 - realv3);
74          assertTrue( diff < TOLERANCE) ;
75          
76          
77          
78          p1 = new ZPlane(4,5,-100);
79          p2 = new ZPlane(4,5,100); 
80  
81          l1.clear();
82          l1.add(p1);
83          l1.add(p2);
84          pc1 = new Polycone("Another tube with pc class",l1);
85          Tube t2 = new Tube("Another tube",4,5,100); 
86          assertTrue(Math.abs(t2.getCubicVolume()-pc1.getCubicVolume())<TOLERANCE); 
87      
88          
89      }
90  
91      
92      public void testSorted(){
93          
94          ZPlane z1 = new ZPlane(2,3,4);
95          ZPlane z2 = new ZPlane(3,4,5);
96          ZPlane z3 = new ZPlane(2,4,-5);
97          
98          List<ZPlane> l1 = new ArrayList<ZPlane>();
99          List<ZPlane> l2 = new ArrayList<ZPlane>();
100         
101         l1.add(z1);
102         l1.add(z2);
103         l1.add(z3);
104         
105         l2.add(z3);
106         l2.add(z1);
107         l2.add(z2);
108         
109         Polycone p1 = new Polycone("unsorted",l1);
110         Polycone p2 = new Polycone("sorted",l2);
111         
112         assertEquals(p1.zplanes.get(0).z,-5.0);
113         assertEquals(p2.zplanes.get(0).z,-5.0);
114         assertEquals(p1.zplanes.get(1).z,4.0);
115         assertEquals(p2.zplanes.get(1).z,4.0);
116         assertEquals(p1.zplanes.get(2).z,5.0);
117         assertEquals(p2.zplanes.get(2).z,5.0);
118         
119     }
120     
121     public void testInside(){
122         
123         ZPlane p1 = new ZPlane(1,2,0);
124         ZPlane p2 = new ZPlane(1,2,10);
125         ZPlane p3 = new ZPlane(2,3,15);
126         
127         List<ZPlane> l1 = new ArrayList<ZPlane>(); 
128         l1.add(p1);
129         l1.add(p2);
130         l1.add(p3);
131         
132         Polycone pc = new Polycone("test",l1);
133         
134         assertEquals(Inside.OUTSIDE,pc.inside(new BasicHep3Vector(3,0,5)));
135         assertEquals(Inside.OUTSIDE,pc.inside(new BasicHep3Vector(0,3,5)));
136         assertEquals(Inside.OUTSIDE,pc.inside(new BasicHep3Vector(1.5,1.5,5)));
137         assertEquals(Inside.OUTSIDE,pc.inside(new BasicHep3Vector(0,0,1)));
138         assertEquals(Inside.OUTSIDE,pc.inside(new BasicHep3Vector(1.5,0,13)));
139         
140         assertEquals(Inside.INSIDE,pc.inside(new BasicHep3Vector(0,2.5,14)));
141         assertEquals(Inside.INSIDE,pc.inside(new BasicHep3Vector(1.1,0,5)));
142         assertEquals(Inside.INSIDE,pc.inside(new BasicHep3Vector(1.1,0,10)));
143         assertEquals(Inside.INSIDE,pc.inside(new BasicHep3Vector(1.1,1.1,5)));
144         assertEquals(Inside.INSIDE,pc.inside(new BasicHep3Vector(1.8,0,13)));
145         
146         assertEquals(Inside.SURFACE,pc.inside(new BasicHep3Vector(1.1,1.1,0)));
147         assertEquals(Inside.SURFACE,pc.inside(new BasicHep3Vector(2,0,4)));
148         assertEquals(Inside.SURFACE,pc.inside(new BasicHep3Vector(1,0,4)));
149         assertEquals(Inside.SURFACE,pc.inside(new BasicHep3Vector(2.5,0,12.5)));
150         assertEquals(Inside.SURFACE,pc.inside(new BasicHep3Vector(1.5,0,12.5)));
151         assertEquals(Inside.SURFACE,pc.inside(new BasicHep3Vector(2.5,0,15)));        
152     }
153     
154     
155     public void testRadiusAtZ(){
156         
157         
158         ZPlane p1 = new ZPlane(1,2,0);
159         ZPlane p2 = new ZPlane(1,2,10);
160         ZPlane p3 = new ZPlane(2,3,15);
161         
162         List<ZPlane> l1 = new ArrayList<ZPlane>(); 
163         l1.add(p1);
164         l1.add(p2);
165         l1.add(p3);
166         
167         Polycone pc = new Polycone("test",l1);
168         
169         assertEquals(1.0,pc.getInnerRadiusAtZ(0));
170         assertEquals(2.0,pc.getOuterRadiusAtZ(0));
171         assertEquals(2.0,pc.getOuterRadiusAtZ(5));
172         assertEquals(2.0,pc.getOuterRadiusAtZ(10));
173         assertEquals(1.5,pc.getInnerRadiusAtZ(12.5));
174         assertEquals(2.5,pc.getOuterRadiusAtZ(12.5));
175         assertEquals(3.0,pc.getOuterRadiusAtZ(15));
176         assertEquals(0.0,pc.getOuterRadiusAtZ(16));
177         
178     }
179 }
180