00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037 inline
00038 G4String G4ToroidalSurface::GetEntityType() const
00039 {
00040 return G4String("Toroidal_Surface");
00041 }
00042
00043 inline
00044 G4Vector3D G4ToroidalSurface::GetDirection() const
00045 {
00046 return Placement.GetRefDirection();
00047 }
00048
00049 inline
00050 G4Vector3D G4ToroidalSurface::GetAxis() const
00051 {
00052 return Placement.GetAxis();
00053 }
00054
00055 inline
00056 G4Point3D G4ToroidalSurface::GetLocation() const
00057 {
00058 return Placement.GetLocation();
00059 }
00060
00061 inline
00062 G4double G4ToroidalSurface::GetMinRadius() const
00063 {
00064 return MinRadius;
00065 }
00066
00067 inline G4double G4ToroidalSurface::GetMaxRadius() const
00068 {
00069 return MaxRadius;
00070 }
00071
00072 inline
00073 void G4ToroidalSurface::MultiplyPointByMatrix(G4Point3D& Base)
00074 {
00075 Base.setX((Base.x() * TransMatrix->get(0,0)) +
00076 (Base.y() * TransMatrix->get(1,0)) +
00077 (Base.z() * TransMatrix->get(2,0)));
00078 Base.setY((Base.x() * TransMatrix->get(0,1)) +
00079 (Base.y() * TransMatrix->get(1,1)) +
00080 (Base.z() * TransMatrix->get(2,1)));
00081 Base.setZ((Base.x() * TransMatrix->get(0,2)) +
00082 (Base.y() * TransMatrix->get(1,2)) +
00083 (Base.z() * TransMatrix->get(2,2)));
00084 }
00085
00086 inline
00087 void G4ToroidalSurface::MultiplyVectorByMatrix(G4Vector3D& DCos)
00088 {
00089 G4double w;
00090 DCos.setX((DCos.x() * TransMatrix->get(0,0)) +
00091 (DCos.y() * TransMatrix->get(1,0)) +
00092 (DCos.z() * TransMatrix->get(2,0)) + TransMatrix->get(3,0));
00093
00094 DCos.setY((DCos.x() * TransMatrix->get(0,1)) +
00095 (DCos.y() * TransMatrix->get(1,1)) +
00096 (DCos.z() * TransMatrix->get(2,1)) + TransMatrix->get(3,1));
00097
00098 DCos.setY((DCos.x() * TransMatrix->get(0,2)) +
00099 (DCos.y() * TransMatrix->get(1,2)) +
00100 (DCos.z() * TransMatrix->get(2,2)) + TransMatrix->get(3,2));
00101
00102 w = ((DCos.x() * TransMatrix->get(0,3)) +
00103 (DCos.y() * TransMatrix->get(1,3)) +
00104 (DCos.z() * TransMatrix->get(2,3)) + TransMatrix->get(3,3));
00105
00106 if (w != 0.0)
00107 {
00108 DCos.setX(DCos.x() / w);
00109 DCos.setY(DCos.y() / w);
00110 DCos.setZ(DCos.z() / w);
00111 }
00112 }
00113
00114 inline
00115 G4int G4ToroidalSurface::IsZero(G4double x) const
00116 {
00117 if((x) > -EQN_EPS && (x) < EQN_EPS)
00118 return 1;
00119 else return 0;
00120 }