testIterator.cxx

Go to the documentation of this file.
00001 
00002 #include "Math/Vector3D.h"
00003 #include "Math/Point3D.h"
00004 #include "Math/Vector4D.h"
00005 #include "Math/EulerAngles.h"
00006 
00007 #include "Math/Transform3D.h"
00008 #include "Math/LorentzRotation.h"
00009 #include "Math/Boost.h"
00010 
00011 #include "Math/Rotation3D.h"
00012 #include "Math/RotationX.h"
00013 #include "Math/RotationY.h"
00014 #include "Math/RotationZ.h"
00015 #include "Math/Quaternion.h"
00016 #include "Math/AxisAngle.h"
00017 #include "Math/EulerAngles.h"
00018 
00019 #include "Math/VectorUtil.h"
00020 
00021 #include <iostream>
00022 #include <iterator> 
00023 #include <vector>
00024 #include <list>
00025 #include <set>
00026 #include <algorithm>
00027 
00028 using namespace ROOT::Math;
00029 using namespace ROOT::Math::VectorUtil;
00030 
00031 template <class Rot> 
00032 void printRot(const Rot & rot) {
00033    std::cout << "rot:  ( " ;
00034    std::ostream_iterator<double> oi(std::cout,"  ");
00035    rot.GetComponents(oi); 
00036    std::cout << ") " << std::endl;
00037 }   
00038 template<class V> 
00039 void printVec(const V & v ) {
00040    std::cout << "vec : ( " ;
00041    std::ostream_iterator<double> oi(std::cout,"  ");
00042    v.GetCoordinates(oi); 
00043    std::cout << ") " << std::endl;
00044 }   
00045 template<class L> 
00046 void printList(const L & l ) {
00047    std::cout << "list : ( " ;
00048    std::ostream_iterator<double> oi(std::cout,"  ");
00049    std::copy(l.begin(),l.end(),oi);  
00050    std::cout << ") " << std::endl;
00051 }   
00052 
00053 void testOstreamIter() { 
00054 
00055    XYZVector v(1.,2.,3);
00056    printVec(v); 
00057    XYZPoint p(v); printVec(p);
00058    XYZTVector q(1.,2,3,4); printVec(q); 
00059 
00060    AxisAngle ar(v,4.); printRot(ar); 
00061    EulerAngles er(ar); printRot(er); 
00062    Quaternion qr(er); printRot(qr); 
00063    Rotation3D rr(qr) ; printRot(rr); 
00064  
00065    Transform3D t(rr,v); printRot(t); 
00066 
00067    
00068    Boost b(0.3,0.4,0.8); printRot(b); 
00069    LorentzRotation lr(rr); printRot(lr);
00070    LorentzRotation lr2(b); printRot(lr2);
00071 
00072 }
00073 
00074 void testListIter() { 
00075 
00076    // test with lists
00077    double d[10] = {1,2,3,4,5,6,7,8,9,10}; 
00078    std::list<double>  inputData(d,d+3);
00079 
00080    XYZVector v; v.SetCoordinates(inputData.begin(), inputData.end() ); 
00081    std::list<double> data(3);  
00082    v.GetCoordinates(data.begin(),data.end());
00083    printList(data);
00084 
00085    inputData = std::list<double>(d+3,d+6);
00086    XYZPoint p; p.SetCoordinates(inputData.begin(),inputData.end() );
00087    data.clear(); 
00088    data = std::list<double>(3);
00089    p.GetCoordinates(data.begin(), data.end() );
00090    printList(data);
00091 
00092    inputData = std::list<double>(d+6,d+10);
00093    XYZTVector q; q.SetCoordinates(inputData.begin(),inputData.end() );
00094    data.clear(); 
00095    data = std::list<double>(4);
00096    q.GetCoordinates(data.begin(), data.end() );
00097    printList(data);
00098    
00099    // test on rotations
00100    inputData = std::list<double>(d,d+3);
00101    EulerAngles re(inputData.begin(), inputData.end() ); 
00102    data = std::list<double>(3);
00103    re.GetComponents(data.begin(), data.end() );
00104    printList(data);
00105 
00106    inputData = std::list<double>(d,d+4);
00107    AxisAngle ra(inputData.begin(), inputData.end() ); 
00108    data = std::list<double>(4);
00109    ra.GetComponents(data.begin(), data.end() );
00110    printList(data);
00111 
00112    inputData = std::list<double>(d,d+4);
00113    Quaternion rq(inputData.begin(), inputData.end() ); 
00114    data = std::list<double>(4);
00115    rq.GetComponents(data.begin(), data.end() );
00116    printList(data);
00117 
00118    double b[3] = {0.3,0.4,0.8};
00119    inputData = std::list<double>(b,b+3);
00120    Boost bst(inputData.begin(), inputData.end() ); 
00121    data = std::list<double>(3);
00122    bst.GetComponents(data.begin(), data.end() );
00123    printList(data);
00124 
00125    Rotation3D tmp(ra); 
00126    inputData = std::list<double>(9);
00127    tmp.GetComponents(inputData.begin());  printList(inputData);
00128    Rotation3D r(inputData.begin(),inputData.end());
00129    data = std::list<double>(9);
00130    r.GetComponents(data.begin(), data.end() );
00131    printList(data);
00132 
00133 
00134    Transform3D ttmp(r,XYZVector(1,2,3));
00135    inputData = std::list<double>(12);
00136    ttmp.GetComponents(inputData.begin());  printList(inputData);
00137    Transform3D t(inputData.begin(),inputData.end());
00138    data = std::list<double>(12);
00139    t.GetComponents(data.begin(), data.end() );
00140    printList(data);
00141    
00142 
00143    LorentzRotation ltmp(bst); 
00144    inputData = std::list<double>(16);
00145    ltmp.GetComponents(inputData.begin());  printList(inputData);
00146    LorentzRotation lr(inputData.begin(),inputData.end());
00147    data = std::list<double>(16);
00148    lr.GetComponents(data.begin(), data.end() );
00149    printList(data);
00150 
00151 
00152 }
00153 
00154 int main() { 
00155 
00156    testOstreamIter(); 
00157    testListIter(); 
00158 
00159 
00160 }

Generated on Tue Jul 5 14:33:12 2011 for ROOT_528-00b_version by  doxygen 1.5.1