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 #include "G4NURBStube.hh"
00036
00037 G4NURBStube::G4NURBStube(G4double r, G4double R, G4double DZ)
00038 : G4NURBS( 2, 3,
00039 5, 9,
00040 Regular,
00041 RegularRep )
00042 {
00043
00044
00045 const G4double sr2o2 = std::sqrt(2.)/2.;
00046
00047 CP(mpCtrlPts[ 0] , r, 0, DZ, 1 );
00048 CP(mpCtrlPts[ 1] , R, 0, DZ, 1 );
00049 CP(mpCtrlPts[ 2] , R, 0, -DZ, 1 );
00050 CP(mpCtrlPts[ 3] , r, 0, -DZ, 1 );
00051 CP(mpCtrlPts[ 4] , r, 0, DZ, 1 );
00052
00053 CP(mpCtrlPts[ 5] , r, r, DZ, 1 , sr2o2);
00054 CP(mpCtrlPts[ 6] , R, R, DZ, 1 , sr2o2);
00055 CP(mpCtrlPts[ 7] , R, R, -DZ, 1 , sr2o2);
00056 CP(mpCtrlPts[ 8] , r, r, -DZ, 1 , sr2o2);
00057 CP(mpCtrlPts[ 9] , r, r, DZ, 1 , sr2o2);
00058
00059 CP(mpCtrlPts[10] , 0, r, DZ, 1 );
00060 CP(mpCtrlPts[11] , 0, R, DZ, 1 );
00061 CP(mpCtrlPts[12] , 0, R, -DZ, 1 );
00062 CP(mpCtrlPts[13] , 0, r, -DZ, 1 );
00063 CP(mpCtrlPts[14] , 0, r, DZ, 1 );
00064
00065 CP(mpCtrlPts[15] , -r, r, DZ, 1 , sr2o2);
00066 CP(mpCtrlPts[16] , -R, R, DZ, 1 , sr2o2);
00067 CP(mpCtrlPts[17] , -R, R, -DZ, 1 , sr2o2);
00068 CP(mpCtrlPts[18] , -r, r, -DZ, 1 , sr2o2);
00069 CP(mpCtrlPts[19] , -r, r, DZ, 1 , sr2o2);
00070
00071 CP(mpCtrlPts[20] , -r, 0, DZ, 1 );
00072 CP(mpCtrlPts[21] , -R, 0, DZ, 1 );
00073 CP(mpCtrlPts[22] , -R, 0, -DZ, 1 );
00074 CP(mpCtrlPts[23] , -r, 0, -DZ, 1 );
00075 CP(mpCtrlPts[24] , -r, 0, DZ, 1 );
00076
00077 CP(mpCtrlPts[25] , -r,-r, DZ, 1 , sr2o2);
00078 CP(mpCtrlPts[26] , -R,-R, DZ, 1 , sr2o2);
00079 CP(mpCtrlPts[27] , -R,-R, -DZ, 1 , sr2o2);
00080 CP(mpCtrlPts[28] , -r,-r, -DZ, 1 , sr2o2);
00081 CP(mpCtrlPts[29] , -r,-R, DZ, 1 , sr2o2);
00082
00083 CP(mpCtrlPts[30] , 0,-r, DZ, 1 );
00084 CP(mpCtrlPts[31] , 0,-R, DZ, 1 );
00085 CP(mpCtrlPts[32] , 0,-R, -DZ, 1 );
00086 CP(mpCtrlPts[33] , 0,-r, -DZ, 1 );
00087 CP(mpCtrlPts[34] , 0,-r, DZ, 1 );
00088
00089 CP(mpCtrlPts[35] , r,-r, DZ, 1 , sr2o2);
00090 CP(mpCtrlPts[36] , R,-R, DZ, 1 , sr2o2);
00091 CP(mpCtrlPts[37] , R,-R, -DZ, 1 , sr2o2);
00092 CP(mpCtrlPts[38] , r,-r, -DZ, 1 , sr2o2);
00093 CP(mpCtrlPts[39] , r,-r, DZ, 1 , sr2o2);
00094
00095 CP(mpCtrlPts[40] , r, 0, DZ, 1 );
00096 CP(mpCtrlPts[41] , R, 0, DZ, 1 );
00097 CP(mpCtrlPts[42] , R, 0, -DZ, 1 );
00098 CP(mpCtrlPts[43] , r, 0, -DZ, 1 );
00099 CP(mpCtrlPts[44] , r, 0, DZ, 1 );
00100 }
00101
00102 const char* G4NURBStube::Whoami() const
00103 {
00104 return "Tube";
00105 }