View Javadoc

1   package org.lcsim.geometry.compact.converter.lcdd.util;
2   
3   import org.jdom.DataConversionException;
4   
5   // FIXME: Hard-coded mult and div by 2 to match GDML convention of dividing inputs by 2.
6   public class Trap extends Solid
7   {  
8       public Trap(
9               String name, 
10              double z, 
11              double theta, 
12              double phi, 
13              double y1, 
14              double x1, 
15              double x2, 
16              double alpha1, 
17              double y2, 
18              double x3, 
19              double x4, 
20              double alpha2)
21      {
22          super("trap",name);
23                  
24          setAttribute("z",String.valueOf(z*2));
25          setAttribute("theta",String.valueOf(theta));
26          setAttribute("phi",String.valueOf(phi));
27          setAttribute("y1",String.valueOf(y1*2));
28          setAttribute("x1",String.valueOf(x1*2));
29          setAttribute("x2",String.valueOf(x2*2));
30          setAttribute("alpha1",String.valueOf(alpha1));
31          setAttribute("y2",String.valueOf(y2*2));
32          setAttribute("x3",String.valueOf(x3*2));
33          setAttribute("x4",String.valueOf(x4*2));
34          setAttribute("alpha2",String.valueOf(alpha2));
35          
36          setAttribute("aunit","radian");
37          setAttribute("lunit","mm");
38      }  
39      
40      private double p(String dim)
41      {
42          try 
43          {
44              return getAttribute(dim).getDoubleValue();
45          }
46          catch (DataConversionException x)
47          {
48              throw new RuntimeException(x);
49          }
50      }
51      
52      public double getZHalfLength()
53      {
54          return p("z") / 2;
55      }
56      
57      public double getTheta()
58      {
59          return p("theta");
60      }
61      
62      public double getPhi()
63      {
64          return p("phi");
65      }
66      
67      public double getYHalfLength1()
68      {
69          return p("y1") / 2;
70      }
71      
72      public double getXHalfLength1()
73      {
74          return p("x1") / 2;
75      }
76      
77      public double getXHalfLength2()
78      {
79          return p("x2") / 2;
80      }
81      
82      public double getAlpha1()
83      {
84          return p("alpha1");
85      }
86      
87      public double getYHalfLength2()
88      {
89          return p("y2") / 2;
90      }
91      
92      public double getXHalfLength3()
93      {
94          return p("x3") / 2;
95      }
96      
97      public double getXHalfLength4()
98      {
99          return p("x4") / 2;
100     }
101     
102     public double getAlpha2()
103     {
104         return p("alpha2") / 2;
105     }
106 }