StRoot  1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
vecTest2.C
1 #include "Riostream.h"
2 #include "StThreeVector.hh"
3 #define PR(x) cout << (#x) << " = " << (x) << endl;
4 
5 void vecTest2()
6 {
7  cout << "This program tests the rotation and angular setting functions" << endl;
8  cout << "-------------------------------------------------------------" << endl;
9 
10  StThreeVector<float> vec1(3,4,5);
11  StThreeVector<double> vec2(vec1);
12 
13  PR(vec1);
14  PR(vec2);
15  cout << endl;
16 
17  PR(vec1.mag());
18  PR(vec1.theta());
19  PR(vec1.phi());
20 
21  cout << "\nsetMagnitude(100) " << endl;
22  vec1.setMagnitude(100);
23  PR(vec1);
24  PR(vec1.mag());
25  PR(vec1.theta());
26  PR(vec1.phi());
27  PR(vec2);
28 
29  cout << "\nsetPhi(M_PI) " << endl;
30  vec2.setPhi(M_PI);
31  PR(vec2);
32  PR(vec2.mag());
33  PR(vec2.theta());
34  PR(vec2.phi());
35 
36  cout << "\nsetTheta(M_PI) " << endl;
37  vec2.setTheta(M_PI);
38  PR(vec2);
39  PR(vec2.mag());
40  PR(vec2.theta());
41  PR(vec2.phi());
42 
43  cout << "\nsetMagnitude(10) " << endl;
44  vec1.setMagnitude(10);
45  PR(vec1);
46  StThreeVector<double> vec3(vec1.orthogonal());
47  PR(vec3);
48  PR(vec1*vec3);
49  cout << endl;
50 
51  StThreeVector<double> vec4(0,1,0);
52  PR(vec4);
53  StThreeVector<float> vec5(1,1,0);
54  PR(vec4.angle(vec5));
55  cout << endl;
56 
57  double angle = M_PI/2;
58 
59  vec4.rotateX(angle);
60  PR(vec4);
61  vec4.rotateY(angle);
62  PR(vec4);
63  vec4.rotateZ(angle);
64  PR(vec4);
65  cout << endl;
66 
67  PR(vec5);
68  vec5.rotateX(angle);
69  PR(vec5);
70  vec5.rotateY(angle);
71  PR(vec5);
72  vec5.rotateZ(angle);
73  PR(vec5);
74 
75 }