1
2
3
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
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
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