hepmc - Blame information for rev 209

Subversion Repositories:
Rev:
Rev Author Line No. Line
55 garren 1 //
2 // First pass - simply exercise all the vector methods
3 //
4 #include <iostream>
5  
6 #include "HepMC/SimpleVector.h"
7  
209 garren 8 int threeVectorMath();
9 int fourVectorMath();
10  
55 garren 11 int main()
12 {
13   // ThreeVector
14   HepMC::ThreeVector vector3;
15   HepMC::ThreeVector v3(1.1,2.2,3.3);
16   HepMC::ThreeVector vx(1.34);
17  
18   HepMC::ThreeVector v3copy( v3 );
89 garren 19  
20   int numbad = 0;
21  
55 garren 22   double x = v3.x();
23   double y = v3.y();
24   double z = v3.z();
25   double p2 = v3.perp2();
26   double pt = v3.perp();
27   double l = v3.mag();
28   double r = v3.r();
29   double th = v3.theta();
30   double ph = v3.phi();
31  
32   vx.set(1., 2., 3.);
33   vx.setX(1.1);
34   vx.setY(2.3);
35   vx.setZ(4.4);
36   vx.setPhi(0.12);
37   vx.setTheta(0.54);
38  
39   vector3 = v3;
40  
41   if( v3 == vector3 ) {
42   } else {
56 garren 43      std::cout << "vectors v3 and vector3 are different" << std::endl;
55 garren 44   }
45   if( v3 != v3copy ) {
56 garren 46      std::cout << "vectors v3 and v3copy are different" << std::endl;
55 garren 47   }
209 garren 48  
49   numbad += threeVectorMath();
55 garren 50  
51   // FourVector
209 garren 52   HepMC::FourVector vector, v4scale1;
53   HepMC::FourVector v4(1.1,2.2,3.3,4.4);
55 garren 54   HepMC::FourVector vt(1.34);
55  
209 garren 56   HepMC::FourVector vectorcopy( v4 );
57   vector = v4;
55 garren 58  
209 garren 59   double px = v4.px();
60   double py = v4.py();
61   double pz = v4.pz();
62   double e  = v4.e();
55 garren 63    x = vectorcopy.x();
64    y = vectorcopy.y();
65    z = vectorcopy.z();
66   double t = vectorcopy.t();
67  
209 garren 68    p2 = v4.perp2();
69    pt = v4.perp();
70    l = v4.mag();
71    th = v4.theta();
72    ph = v4.phi();
73    r = v4.rho();
74   double masssq1 = v4.m2();
75   double mass1 = v4.m();
76   double pr1 = v4.pseudoRapidity();
77   double eta1 = v4.eta();
89 garren 78   double masssq2 = vector.m2();
79   double mass2 = vector.m();
80   double pr2 = vector.pseudoRapidity();
81   double eta2 = vector.eta();
55 garren 82  
83   vt.set(1., 2., 3., 5.5);
84   vt.setX(1.1);
85   vt.setY(2.3);
86   vt.setZ(4.4);
87   vt.setT(6.5);
88   vt.setPx(3.1);
89   vt.setPy(2.2);
90   vt.setPz(-1.1);
91   vt.setE(5.4);
92  
93   if( px != x ) {
94      std::cout << "different X values: " << px << " " << x << std::endl;
89 garren 95      ++numbad;
55 garren 96   }
97   if( py != y ) {
98      std::cout << "different Y values: " << py << " " << y << std::endl;
89 garren 99      ++numbad;
55 garren 100   }
101   if( pz != z ) {
102      std::cout << "different Z values: " << pz << " " << z << std::endl;
89 garren 103      ++numbad;
55 garren 104   }
105   if( e != t ) {
106      std::cout << "different E values: " << e << " " << t << std::endl;
89 garren 107      ++numbad;
55 garren 108   }
89 garren 109   if( masssq1 != masssq2 ) {
110      std::cout << "different mass sq values: " << masssq1 << " " << masssq2 << std::endl;
111      ++numbad;
112   }
113   if( mass1 != mass2 ) {
114      std::cout << "different mass values: " << mass1 << " " << mass2 << std::endl;
115      ++numbad;
116   }
117   if( pr1 != pr2 ) {
118      std::cout << "different pr values: " << pr1 << " " << pr2 << std::endl;
119      ++numbad;
120   }
121   if( eta1 != eta2 ) {
122      std::cout << "different eta values: " << eta1 << " " << eta2 << std::endl;
123      ++numbad;
124   }
209 garren 125   if( v4 == vector ) {
55 garren 126   } else {
56 garren 127      std::cout << "vectors v and vector are different" << std::endl;
89 garren 128      ++numbad;
55 garren 129   }
209 garren 130   if( v4 != vectorcopy ) {
56 garren 131      std::cout << "vectors v and vectorcopy are different" << std::endl;
89 garren 132      ++numbad;
55 garren 133   }
209 garren 134  
135   numbad += fourVectorMath();
136  
89 garren 137   return numbad;
55 garren 138 }
209 garren 139  
140 int threeVectorMath()
141 {
142   HepMC::ThreeVector v3(1.1,2.2,3.3);
143  
144   double wt = 1.2528;
145   int n3bad = 0;
146  
147   // scale
148   HepMC::ThreeVector v3scale1 = v3;
149   v3scale1 *= wt;
150   HepMC::ThreeVector v3scale2(wt*v3.x(),wt*v3.y(),wt*v3.z());
151   if( v3scale1 != v3scale2 ) {
152      std::cout << "vectors v3scale1 and v3scale2 are different" << std::endl;
153      ++n3bad;
154   }
155  
156   // add
157   HepMC::ThreeVector v3add1 = v3;
158   v3add1 += v3scale1;
159   HepMC::ThreeVector v3add2 = v3 + v3scale1;
160   HepMC::ThreeVector v3add3(v3scale1.x()+v3.x(),
161                            v3scale1.y()+v3.y(),
162                            v3scale1.z()+v3.z());
163   if( v3add1 != v3add2 ) {
164      std::cout << "vectors v3add1 and v3add2 are different" << std::endl;
165      ++n3bad;
166   }
167   if( v3add3 != v3add2 ) {
168      std::cout << "vectors v3add3 and v3add2 are different" << std::endl;
169      ++n3bad;
170   }
171  
172   // subtract
173   HepMC::ThreeVector v3sub1 = v3;
174   v3sub1 -= v3scale1;
175   HepMC::ThreeVector v3sub2 = v3 - v3scale1;
176   HepMC::ThreeVector v3sub3(v3.x()-v3scale1.x(),
177                            v3.y()-v3scale1.y(),
178                            v3.z()-v3scale1.z());
179   if( v3sub1 != v3sub2 ) {
180      std::cout << "vectors v3sub1 and v3sub2 are different" << std::endl;
181      ++n3bad;
182   }
183   if( v3sub3 != v3sub2 ) {
184      std::cout << "vectors v3sub3 and v3sub2 are different" << std::endl;
185      ++n3bad;
186   }
187  
188   // minus
189   HepMC::ThreeVector v3minus1 = -v3;
190   HepMC::ThreeVector v3minus2(-v3.x(),-v3.y(),-v3.z());
191   if( v3minus1 != v3minus2 ) {
192      std::cout << "vectors v3minus1 and v3minus2 are different" << std::endl;
193      ++n3bad;
194   }
195  
196   return n3bad;
197 }
198  
199 int fourVectorMath()
200 {
201   HepMC::FourVector v4(1.1,2.2,3.3,4.4);
202  
203   double wt = 1.2528;
204   int n4bad = 0;
205  
206   // scale
207   HepMC::FourVector v4scale1 = v4;
208   v4scale1 *= wt;
209   HepMC::FourVector v4scale2(wt*v4.x(),wt*v4.y(),wt*v4.z(),wt*v4.t());
210   if( v4scale1 != v4scale2 ) {
211      std::cout << "vectors v4scale1 and v4scale2 are different" << std::endl;
212      ++n4bad;
213   }
214  
215   // add
216   HepMC::FourVector v4add1 = v4;
217   v4add1 += v4scale1;
218   HepMC::FourVector v4add2 = v4 + v4scale1;
219   HepMC::FourVector v4add3(v4scale1.x()+v4.x(),
220                            v4scale1.y()+v4.y(),
221                            v4scale1.z()+v4.z(),
222                            v4scale1.t()+v4.t());
223   if( v4add1 != v4add2 ) {
224      std::cout << "vectors v4add1 and v4add2 are different" << std::endl;
225      ++n4bad;
226   }
227   if( v4add3 != v4add2 ) {
228      std::cout << "vectors v4add3 and v4add2 are different" << std::endl;
229      ++n4bad;
230   }
231  
232   // subtract
233   HepMC::FourVector v4sub1 = v4;
234   v4sub1 -= v4scale1;
235   HepMC::FourVector v4sub2 = v4 - v4scale1;
236   HepMC::FourVector v4sub3(v4.x()-v4scale1.x(),
237                            v4.y()-v4scale1.y(),
238                            v4.z()-v4scale1.z(),
239                            v4.t()-v4scale1.t());
240   if( v4sub1 != v4sub2 ) {
241      std::cout << "vectors v4sub1 and v4sub2 are different" << std::endl;
242      ++n4bad;
243   }
244   if( v4sub3 != v4sub2 ) {
245      std::cout << "vectors v4sub3 and v4sub2 are different" << std::endl;
246      ++n4bad;
247   }
248  
249   // minus
250   HepMC::FourVector v4minus1 = -v4;
251   HepMC::FourVector v4minus2(-v4.x(),-v4.y(),-v4.z(),-v4.t());
252   if( v4minus1 != v4minus2 ) {
253      std::cout << "vectors v4minus1 and v4minus2 are different" << std::endl;
254      ++n4bad;
255   }
256  
257   return n4bad;
258 }