9 #include "CLHEP/Units/GlobalSystemOfUnits.h"
10 #include "CLHEP/Units/GlobalPhysicalConstants.h"
11 #include "CLHEP/Vector/Rotation.h"
12 #include "CLHEP/Vector/ThreeVector.h"
17 using namespace CLHEP;
26 double angA=CLHEP::pi/3, angB=CLHEP::pi/4, angC=CLHEP::pi/6;
27 double cosA=std::cos(angA), sinA=std::sin(angA);
28 double cosB=std::cos(angB), sinB=std::sin(angB);
29 double cosC=std::cos(angC), sinC=std::sin(angC);
32 assert ( R.
xx() == 1 );
33 assert ( R.
xy() == 0 );
34 assert ( R.
xz() == 0 );
35 assert ( R.
yx() == 0 );
36 assert ( R.
yy() == 1 );
37 assert ( R.
yz() == 0 );
38 assert ( R.
zx() == 0 );
39 assert ( R.
zy() == 0 );
40 assert ( R.
zz() == 1 );
42 assert( R.isIdentity() );
46 assert ( R.xx() == 1 );
47 assert ( R.xy() == 0 );
48 assert ( R.xz() == 0 );
49 assert ( R.yx() == 0 );
50 assert ( R.yy() == cosA );
51 assert ( R.yz() ==-sinA );
52 assert ( R.zx() == 0 );
53 assert ( R.zy() == sinA );
54 assert ( R.zz() == cosA );
58 assert ( R.xx() == cosB );
59 assert ( R.xy() == 0 );
60 assert ( R.xz() == sinB );
61 assert ( R.yx() == 0 );
62 assert ( R.yy() == 1 );
63 assert ( R.yz() == 0 );
64 assert ( R.zx() ==-sinB );
65 assert ( R.zy() == 0 );
66 assert ( R.zz() == cosB );
70 assert ( R.xx() == cosC );
71 assert ( R.xy() ==-sinC );
72 assert ( R.xz() == 0 );
73 assert ( R.yx() == sinC );
74 assert ( R.yy() == cosC );
75 assert ( R.yz() == 0 );
76 assert ( R.zx() == 0 );
77 assert ( R.zy() == 0 );
78 assert ( R.zz() == 1 );
86 assert ( std::abs(RR.
xx() - cosA*cosB*cosC + sinA*sinC) <
DEL );
87 assert ( std::abs(RR.
xy() + cosA*cosB*sinC + sinA*cosC) <
DEL );
88 assert ( std::abs(RR.
xz() - cosA*sinB) <
DEL );
89 assert ( std::abs(RR.
yx() - sinA*cosB*cosC - cosA*sinC) <
DEL );
90 assert ( std::abs(RR.
yy() + sinA*cosB*sinC - cosA*cosC) <
DEL );
91 assert ( std::abs(RR.
yz() - sinA*sinB) <
DEL );
92 assert ( std::abs(RR.
zx() + sinB*cosC) <
DEL );
93 assert ( std::abs(RR.
zy() - sinB*sinC) <
DEL );
94 assert ( std::abs(RR.
zz() - cosB) <
DEL );
101 assert ( R(0,0) == R.xx() );
102 assert ( R(0,1) == R.xy() );
103 assert ( R(0,2) == R.xz() );
104 assert ( R(1,0) == R.yx() );
105 assert ( R(1,1) == R.yy() );
106 assert ( R(1,2) == R.yz() );
107 assert ( R(2,0) == R.zx() );
108 assert ( R(2,1) == R.zy() );
109 assert ( R(2,2) == R.zz() );
113 assert ( RR(i,k) == R[i][k] );
121 R = A; R *= B; R *= C;
125 assert ( std::abs(V.x()-R.xx()-2.*R.xy()-3.*R.xz()) <
DEL );
126 assert ( std::abs(V.y()-R.yx()-2.*R.yy()-3.*R.yz()) <
DEL );
127 assert ( std::abs(V.z()-R.zx()-2.*R.zy()-3.*R.zz()) <
DEL );
130 assert ( std::abs(RR.
xx() - R.xx()) <
DEL );
131 assert ( std::abs(RR.
xy() - R.xy()) <
DEL );
132 assert ( std::abs(RR.
xz() - R.xz()) <
DEL );
133 assert ( std::abs(RR.
yx() - R.yx()) <
DEL );
134 assert ( std::abs(RR.
yy() - R.yy()) <
DEL );
135 assert ( std::abs(RR.
yz() - R.yz()) <
DEL );
136 assert ( std::abs(RR.
zx() - R.zx()) <
DEL );
137 assert ( std::abs(RR.
zy() - R.zy()) <
DEL );
138 assert ( std::abs(RR.
zz() - R.zz()) <
DEL );
143 assert ( std::abs(RR.
xx() - R.xx()) <
DEL );
144 assert ( std::abs(RR.
xy() - R.xy()) <
DEL );
145 assert ( std::abs(RR.
xz() - R.xz()) <
DEL );
146 assert ( std::abs(RR.
yx() - R.yx()) <
DEL );
147 assert ( std::abs(RR.
yy() - R.yy()) <
DEL );
148 assert ( std::abs(RR.
yz() - R.yz()) <
DEL );
149 assert ( std::abs(RR.
zx() - R.zx()) <
DEL );
150 assert ( std::abs(RR.
zy() - R.zy()) <
DEL );
151 assert ( std::abs(RR.
zz() - R.zz()) <
DEL );
156 assert ( RR(i,k) == R[k][i] );
169 double ang=CLHEP::twopi/9.;
174 RR.rotateZ(-(V.phi()));
175 RR.rotateY(-(V.theta()));
177 RR.rotateY(V.theta());
180 assert ( std::abs(RR.
xx() - R.xx()) <
DEL );
181 assert ( std::abs(RR.
xy() - R.xy()) <
DEL );
182 assert ( std::abs(RR.
xz() - R.xz()) <
DEL );
183 assert ( std::abs(RR.
yx() - R.yx()) <
DEL );
184 assert ( std::abs(RR.
yy() - R.yy()) <
DEL );
185 assert ( std::abs(RR.
yz() - R.yz()) <
DEL );
186 assert ( std::abs(RR.
zx() - R.zx()) <
DEL );
187 assert ( std::abs(RR.
zy() - R.zy()) <
DEL );
188 assert ( std::abs(RR.
zz() - R.zz()) <
DEL );
191 R.getAngleAxis(ang, V);
192 assert ( std::abs(ang - CLHEP::twopi/9.) <
DEL );
193 assert ( std::abs(V.x() - Vu.
x()) <
DEL );
194 assert ( std::abs(V.y() - Vu.
y()) <
DEL );
195 assert ( std::abs(V.z() - Vu.
z()) <
DEL );
197 assert ( std::abs(RR.phiX()-std::atan2(RR.
yx(),RR.
xx())) <
DEL );
198 assert ( std::abs(RR.phiY()-std::atan2(RR.
yy(),RR.
xy())) <
DEL );
199 assert ( std::abs(RR.phiZ()-std::atan2(RR.
yz(),RR.
xz())) <
DEL );
201 assert ( std::abs(RR.thetaX()-std::acos(RR.
zx())) <
DEL );
202 assert ( std::abs(RR.thetaY()-std::acos(RR.
zy())) <
DEL );
203 assert ( std::abs(RR.thetaZ()-std::acos(RR.
zz())) <
DEL );