ROOT logo
// Example macro testing available methods and operation of the GenVector classes. 
// The results are compared and check at the 
// numerical precision levels. 
// Some small discrepancy can appear when the macro 
// is executed on different architectures where it has been calibrated (Power PC G5)
// The macro is divided in 4 parts: 
//    - testVector3D          :  tests of the 3D Vector classes
//    - testPoint3D           :  tests of the 3D Point classes
//    - testLorentzVector     :  tests of the 4D LorentzVector classes
//    - testVectorUtil        :  tests of the utility functions of all the vector classes
//
// To execute the macro type in: 
//
// root[0]: .x  mathcoreGenVector.C
//Author: Lorenzo Moneta

#include "TMatrixD.h"
#include "TVectorD.h"
#include "TMath.h"


#ifndef __CINT__
#include "Math/Point3D.h"
#include "Math/Vector3D.h"
#include "Math/Vector4D.h"
#include "Math/Rotation3D.h"
#include "Math/EulerAngles.h"
#include "Math/AxisAngle.h"
#include "Math/Quaternion.h"
#include "Math/RotationX.h"
#include "Math/RotationY.h"
#include "Math/RotationZ.h"
#include "Math/RotationZYX.h"
#include "Math/LorentzRotation.h"
#include "Math/Boost.h"
#include "Math/BoostX.h"
#include "Math/BoostY.h"
#include "Math/BoostZ.h"
#include "Math/Transform3D.h"
#include "Math/Plane3D.h"
#include "Math/VectorUtil.h"

using namespace ROOT::Math;

#endif

int ntest = 0; 
int nfail = 0; 
int ok = 0;


int compare( double v1, double v2, const char* name, double Scale = 1.0) {
  ntest = ntest + 1; 

  // numerical double limit for epsilon 
  double eps = Scale* 2.22044604925031308e-16; 
  int iret = 0; 
  double delta = v2 - v1;
  double d = 0;
  if (delta < 0 ) delta = - delta; 
  if (v1 == 0 || v2 == 0) { 
    if  (delta > eps ) { 
      iret = 1; 
    }
  }
  // skip case v1 or v2 is infinity
  else { 
     d = v1; 

    if ( v1 < 0) d = -d; 
    // add also case when delta is small by default
    if ( delta/d  > eps && delta > eps ) 
      iret =  1; 
  }

  if (iret == 0) 
    std::cout << ".";
  else { 
    int pr = std::cout.precision (18);
    int discr; 
    if (d != 0) 
       discr = int(delta/d/eps); 
    else 
       discr = int(delta/eps);

    std::cout << "\nDiscrepancy in " << name << "() : " << v1 << " != " << v2 << " discr = " << discr 
              << "   (Allowed discrepancy is " << eps  << ")\n";
    std::cout.precision (pr);
    nfail = nfail + 1;
  }
  return iret; 
}
      

  

int testVector3D() { 


  std::cout << "\n************************************************************************\n " 
	    << " Vector 3D Test" 
	    << "\n************************************************************************\n";

  //CINT cannot autoload classes known only via a typedef (here XYZVector)
  gSystem->Load("libGenVector");

  XYZVector v1(0.01, 0.02, 16);
  //XYZVector v1(1.0, 2.0, 3.0);

//   XYZVector v1(1.0, 2.0, 30.0);

//   double R = sqrt (v1.X()*v1.X() + v1.Y()*v1.Y() + v1.Z()*v1.Z());
//   // this formula in not precise enough
//   //  double Theta = R>0 ? acos ( v1.Z()/r ) : 0;
//   double Rho = sqrt (v1.X()*v1.X() + v1.Y()*v1.Y());
//   double Theta = v1.Z() == 0 || Rho == 0 ? 0 : atan2( Rho, v1.Z() );  
//   double Phi = Rho>0 ? atan2 (v1.Y(), v1.X()) : 0;

  std::cout << "Test Cartesian-Polar :          " ;

  Polar3DVector v2(v1.R(), v1.Theta(), v1.Phi() );

  ok = 0;
  ok+= compare(v1.X(), v2.X(), "x"); 
  ok+= compare(v1.Y(), v2.Y(), "y"); 
  ok+= compare(v1.Z(), v2.Z(), "z"); 
  ok+= compare(v1.Phi(), v2.Phi(), "phi"); 
  ok+= compare(v1.Theta(), v2.Theta(), "theta"); 
  ok+= compare(v1.R(), v2.R(), "r"); 
  ok+= compare(v1.Eta(), v2.Eta(), "eta"); 
  ok+= compare(v1.Rho(), v2.Rho(), "rho"); 

  if (ok == 0) std::cout << "\t OK " << std::endl;

  std::cout << "Test Cartesian-CylindricalEta : ";

  RhoEtaPhiVector v3( v1.Rho(), v1.Eta(), v1.Phi() ); 

  ok = 0;
  ok+= compare(v1.X(), v3.X(), "x"); 
  ok+= compare(v1.Y(), v3.Y(), "y"); 
  ok+= compare(v1.Z(), v3.Z(), "z"); 
  ok+= compare(v1.Phi(), v3.Phi(), "phi"); 
  ok+= compare(v1.Theta(), v3.Theta(), "theta"); 
  ok+= compare(v1.R(), v3.R(), "r"); 
  ok+= compare(v1.Eta(), v3.Eta(), "eta"); 
  ok+= compare(v1.Rho(), v3.Rho(), "rho"); 

  if (ok == 0) std::cout << "\t OK " << std::endl;

  std::cout << "Test Cartesian-Cylindrical :    ";

  RhoZPhiVector v4( v1.Rho(), v1.Z(), v1.Phi() ); 

  ok = 0;
  ok+= compare(v1.X(), v4.X(), "x"); 
  ok+= compare(v1.Y(), v4.Y(), "y"); 
  ok+= compare(v1.Z(), v4.Z(), "z"); 
  ok+= compare(v1.Phi(), v4.Phi(), "phi"); 
  ok+= compare(v1.Theta(), v4.Theta(), "theta"); 
  ok+= compare(v1.R(), v4.R(), "r"); 
  ok+= compare(v1.Eta(), v4.Eta(), "eta"); 
  ok+= compare(v1.Rho(), v4.Rho(), "rho"); 

  if (ok == 0) std::cout << "\t OK " << std::endl;

  std::cout << "Test Operations :               " ;

  ok = 0;
  double Dot = v1.Dot(v2);
  ok+= compare( Dot, v1.Mag2(),"dot"  );
  XYZVector vcross = v1.Cross(v2);
  ok+= compare( vcross.R(), 0,"cross"  );

  //std::cout << "\nTest Unit & scaling : " ;

  XYZVector vscale1 = v1*10;
  XYZVector vscale2 = vscale1/10;
  ok+= compare( v1.R(), vscale2.R(), "scale");

  XYZVector vu = v1.Unit();
  ok+= compare(v2.Phi(),vu.Phi(),"unit Phi");
  ok+= compare(v2.Theta(),vu.Theta(),"unit Theta");
  ok+= compare(1.0,vu.R(),"unit ");

  XYZVector q1 = v1;
  // RhoEtaPhiVector q2 = v1;  ! copy onstructor between different vector does not work yet)  
  RhoEtaPhiVector q2(1.0,1.0,1.0);
  
  XYZVector q3 = q1 + q2; 
  XYZVector q4 = q3 - q2; 

  ok+= compare( q4.X(), q1.X(), "op X"  );
  ok+= compare( q4.Y(), q1.Y(), "op Y" );
  ok+= compare( q4.Z(), q1.Z(), "op Z" );

  // test operator == 
  XYZVector        w1 = v1; 
  Polar3DVector    w2 = v2; 
  RhoEtaPhiVector  w3 = v3; 
  RhoZPhiVector    w4 = v4; 
  ok+= compare( w1 == v1, static_cast<double>(true), "== XYZ");
  ok+= compare( w2 == v2, static_cast<double>(true), "== Polar");
  ok+= compare( w3 == v3, static_cast<double>(true), "== RhoEtaPhi");
  ok+= compare( w4 == v4, static_cast<double>(true), "== RhoZPhi");


  if (ok == 0) std::cout << "\t OK " << std::endl;


  //test setters
 
  std::cout << "Test Setters :                  " ;

  q2.SetXYZ(q1.X(), q1.Y(), q1.Z() );

  ok+= compare( q2.X(), q1.X(), "setXYZ X"  );
  ok+= compare( q2.Y(), q1.Y(), "setXYZ Y" );
  ok+= compare( q2.Z(), q1.Z(), "setXYZ Z" );

  q2.SetCoordinates( 2.0*q1.Rho(), q1.Eta(), q1.Phi() );
  XYZVector q1s = 2.0*q1;
  ok+= compare( q2.X(), q1s.X(), "set X"  );
  ok+= compare( q2.Y(), q1s.Y(), "set Y" );
  ok+= compare( q2.Z(), q1s.Z(), "set Z" );
  

  if (ok == 0) std::cout << "\t\t OK " << std::endl;

  std::cout << "Test Linear Algebra conversion: " ;

  XYZVector vxyz1(1.,2.,3.); 
  
  TVectorD vla1(3);
  vxyz1.Coordinates().GetCoordinates(vla1.GetMatrixArray() );

  TVectorD vla2(3); 
  vla2[0] = 1.; vla2[1] = -2.; vla2[2] = 1.;

  XYZVector vxyz2; 
  vxyz2.SetCoordinates(&vla2[0]);

  ok = 0; 
  double prod1 =  vxyz1.Dot(vxyz2); 
  double prod2 = vla1*vla2; 
  ok+= compare( prod1, prod2, "la test" );

  if (ok == 0) std::cout << "\t\t OK " << std::endl;
  
  return ok; 
}



int testPoint3D() { 

  std::cout << "\n************************************************************************\n " 
	    << " Point 3D Tests" 
	    << "\n************************************************************************\n";



  //XYZPoint p1(0.00001, 0.00001, 30000000000.0);
  XYZPoint p1(1.0, 2.0, 3.0);

  std::cout << "Test Cartesian-Polar :          ";

  Polar3DPoint p2(p1.R(), p1.Theta(), p1.Phi() );

  ok = 0;
  ok+= compare(p1.x(), p2.X(), "x"); 
  ok+= compare(p1.y(), p2.Y(), "y"); 
  ok+= compare(p1.z(), p2.Z(), "z"); 
  ok+= compare(p1.phi(), p2.Phi(), "phi"); 
  ok+= compare(p1.theta(), p2.Theta(), "theta"); 
  ok+= compare(p1.r(), p2.R(), "r"); 
  ok+= compare(p1.eta(), p2.Eta(), "eta"); 
  ok+= compare(p1.rho(), p2.Rho(), "rho"); 

  if (ok == 0) std::cout << "\t OK " << std::endl;

  std::cout << "Test Polar-CylindricalEta :     ";

  RhoEtaPhiPoint p3( p2.Rho(), p2.Eta(), p2.Phi() ); 

  ok = 0;
  ok+= compare(p2.X(), p3.X(), "x"); 
  ok+= compare(p2.Y(), p3.Y(), "y"); 
  ok+= compare(p2.Z(), p3.Z(), "z",3); 
  ok+= compare(p2.Phi(), p3.Phi(), "phi"); 
  ok+= compare(p2.Theta(), p3.Theta(), "theta"); 
  ok+= compare(p2.R(), p3.R(), "r"); 
  ok+= compare(p2.Eta(), p3.Eta(), "eta"); 
  ok+= compare(p2.Rho(), p3.Rho(), "rho"); 

  if (ok == 0) std::cout << "\t OK " << std::endl;

  std::cout << "Test operations :               ";

  //std::cout << "\nTest Dot and Cross products with Vectors : ";
  Polar3DVector vperp(1.,p1.Theta() + TMath::PiOver2(),p1.Phi() );
  double Dot = p1.Dot(vperp);
  ok+= compare( Dot, 0.0,"dot", 10  );

  XYZPoint vcross = p1.Cross(vperp);
  ok+= compare( vcross.R(), p1.R(),"cross mag"  );
  ok+= compare( vcross.Dot(vperp), 0.0,"cross dir"  );

  XYZPoint pscale1 = 10*p1;
  XYZPoint pscale2 = pscale1/10;
  ok+= compare( p1.R(), pscale2.R(), "scale");

  // test operator == 
  ok+= compare( p1 == pscale2, static_cast<double>(true), "== Point");


  //RhoEtaPhiPoint q1 = p1;  ! constructor yet not working in CINT
  RhoEtaPhiPoint q1; q1 = p1; 
  q1.SetCoordinates(p1.Rho(),2.0, p1.Phi() );

  Polar3DVector v2(p1.R(), p1.Theta(),p1.Phi()); 

  
  //#ifdef WHEN_CINT_FIXED
  RhoEtaPhiPoint q3 = q1 + v2; 
  // point -point in vector does not work yet
  RhoEtaPhiPoint q4 = q3 - v2; 
  ok+= compare( q4.X(), q1.X(), "PV op X"  );
  ok+= compare( q4.Y(), q1.Y(), "PV op Y" );
  ok+= compare( q4.Z(), q1.Z(), "PV op Z" ,2);
  //#endif

  if (ok == 0) std::cout << "\t OK " << std::endl;


//   RhoEtaPhiVector v4 = q3 - q1; 
//   ok+= compare( v4.X(), v2.X(), "op X"  );
//   ok+= compare( v4.Y(), v2.Y(), "op Y" );
//   ok+= compare( v4.Z(), v2.Z(), "op Z" );

  return ok;

}




int testLorentzVector() { 

  std::cout << "\n************************************************************************\n " 
	    << " Loorentz Vector Tests" 
	    << "\n************************************************************************\n";



  //XYZTVector v1(0.00001, 0.00001, 30000000000.0);
  XYZTVector v1(1.0, 2.0, 3.0, 4.0);


  std::cout << "Test XYZT - PtEtaPhiE Vectors:  ";

  PtEtaPhiEVector v2( v1.Rho(), v1.Eta(), v1.Phi(), v1.E() ); 

  ok = 0;
  ok+= compare(v1.Px(), v2.X(), "x"); 
  ok+= compare(v1.Py(), v2.Y(), "y"); 
  ok+= compare(v1.Pz(), v2.Z(), "z", 2); 
  ok+= compare(v1.E(), v2.T(), "e"); 
  ok+= compare(v1.Phi(), v2.Phi(), "phi"); 
  ok+= compare(v1.Theta(), v2.Theta(), "theta"); 
  ok+= compare(v1.Pt(), v2.Pt(), "pt"); 
  ok+= compare(v1.M(), v2.M(), "mass", 5); 
  ok+= compare(v1.Et(), v2.Et(), "et"); 
  ok+= compare(v1.Mt(), v2.Mt(), "mt", 3); 

  if (ok == 0) std::cout << "\t OK " << std::endl;


  std::cout << "Test XYZT - PtEtaPhiM Vectors:  ";

  PtEtaPhiMVector v3( v1.Rho(), v1.Eta(), v1.Phi(), v1.M() ); 

  ok = 0;
  ok+= compare(v1.Px(), v3.X(), "x"); 
  ok+= compare(v1.Py(), v3.Y(), "y"); 
  ok+= compare(v1.Pz(), v3.Z(), "z", 2); 
  ok+= compare(v1.E(), v3.T(), "e"); 
  ok+= compare(v1.Phi(), v3.Phi(), "phi"); 
  ok+= compare(v1.Theta(), v3.Theta(), "theta"); 
  ok+= compare(v1.Pt(), v3.Pt(), "pt"); 
  ok+= compare(v1.M(), v3.M(), "mass", 5); 
  ok+= compare(v1.Et(), v3.Et(), "et"); 
  ok+= compare(v1.Mt(), v3.Mt(), "mt", 3); 

  if (ok == 0) std::cout << "\t OK " << std::endl;

  std::cout << "Test PtEtaPhiE - PxPyPzM Vect.: ";

  PxPyPzMVector v4( v3.X(), v3.Y(), v3.Z(), v3.M() ); 

  ok = 0;
  ok+= compare(v4.Px(), v3.X(), "x"); 
  ok+= compare(v4.Py(), v3.Y(), "y"); 
  ok+= compare(v4.Pz(), v3.Z(), "z",2); 
  ok+= compare(v4.E(), v3.T(), "e"); 
  ok+= compare(v4.Phi(), v3.Phi(), "phi"); 
  ok+= compare(v4.Theta(), v3.Theta(), "theta"); 
  ok+= compare(v4.Pt(), v3.Pt(), "pt"); 
  ok+= compare(v4.M(), v3.M(), "mass",5); 
  ok+= compare(v4.Et(), v3.Et(), "et"); 
  ok+= compare(v4.Mt(), v3.Mt(), "mt",3); 

  if (ok == 0) std::cout << "\t OK " << std::endl;

  std::cout << "Test operations :               ";
  //std::cout << "\nTest Dot product : " ;

  ok = 0;
  double Dot = v1.Dot(v2);
  ok+= compare( Dot, v1.M2(),"dot" , 10 );

  //std::cout << "\nTest scaling : " ;

  XYZTVector vscale1 = v1*10;
  XYZTVector vscale2 = vscale1/10;
  ok+= compare( v1.M(), vscale2.M(), "scale");


  XYZTVector q1 = v1;
  // RhoEtaPhiVector q2 = v1;  ! copy onstructor between different vector does not work yet)  
  PtEtaPhiEVector  q2(1.0,1.0,1.0,5.0); 
  
  XYZTVector q3 = q1 + q2; 
  XYZTVector q4 = q3 - q2; 

  ok+= compare( q4.x(), q1.X(), "op X"  );
  ok+= compare( q4.y(), q1.Y(), "op Y" );
  ok+= compare( q4.z(), q1.Z(), "op Z" );
  ok+= compare( q4.t(), q1.E(), "op E" );

  // test operator == 
  XYZTVector        w1 = v1; 
  PtEtaPhiEVector   w2 = v2; 
  PtEtaPhiMVector   w3 = v3; 
  PxPyPzMVector     w4 = v4; 
  ok+= compare( w1 == v1, static_cast<double>(true), "== PxPyPzE");
  ok+= compare( w2 == v2, static_cast<double>(true), "== PtEtaPhiE");
  ok+= compare( w3 == v3, static_cast<double>(true), "== PtEtaPhiM");
  ok+= compare( w4 == v4, static_cast<double>(true), "== PxPyPzM");
  
  // test gamma beta and boost
  XYZVector b = q1.BoostToCM();
  double beta = q1.Beta();
  double gamma = q1.Gamma();

  ok += compare( b.R(), beta, "beta" );
  ok += compare( gamma, 1./sqrt( 1 - beta*beta ), "gamma");


  if (ok == 0) std::cout << "\t OK " << std::endl;

  //test setters
 
  std::cout << "Test Setters :                  " ;

  q2.SetXYZT(q1.Px(), q1.Py(), q1.Pz(), q1.E() );

  ok+= compare( q2.X(), q1.X(), "setXYZT X"  );
  ok+= compare( q2.Y(), q1.Y(), "setXYZT Y" );
  ok+= compare( q2.Z(), q1.Z(), "setXYZT Z" ,2);
  ok+= compare( q2.T(), q1.E(), "setXYZT E" );

  q2.SetCoordinates( 2.0*q1.Rho(), q1.Eta(), q1.Phi(), 2.0*q1.E() );
  XYZTVector q1s = q1*2.0;
  ok+= compare( q2.X(), q1s.X(), "set X"  );
  ok+= compare( q2.Y(), q1s.Y(), "set Y" );
  ok+= compare( q2.Z(), q1s.Z(), "set Z" ,2);
  ok+= compare( q2.T(), q1s.T(),  "set E" );
 

  if (ok == 0) std::cout << "\t OK " << std::endl;


  return ok;
}


int testVectorUtil() { 

 
  std::cout << "\n************************************************************************\n " 
	    << " Utility Function Tests" 
	    << "\n************************************************************************\n";

  std::cout << "Test Vector utility functions : ";


  XYZVector v1(1.0, 2.0, 3.0); 
  Polar3DVector v2pol(v1.R(), v1.Theta()+TMath::PiOver2(), v1.Phi() + 1.0); 
  // mixedmethods not yet impl. 
  XYZVector v2; v2 = v2pol; 

  ok = 0; 
  ok += compare( VectorUtil::DeltaPhi(v1,v2), 1.0, "deltaPhi Vec");
  
  RhoEtaPhiVector v2cyl(v1.Rho(), v1.Eta() + 1.0, v1.Phi() + 1.0);
  v2 = v2cyl; 


  ok += compare( VectorUtil::DeltaR(v1,v2), sqrt(2.0), "DeltaR Vec");

  XYZVector vperp = v1.Cross(v2);
  ok += compare( VectorUtil::CosTheta(v1,vperp), 0.0, "costheta Vec");
  ok += compare( VectorUtil::Angle(v1,vperp), TMath::PiOver2(), "angle Vec");

  if (ok == 0) std::cout << "\t\t OK " << std::endl;


  std::cout << "Test Point utility functions :  ";


  XYZPoint p1(1.0, 2.0, 3.0); 
  Polar3DPoint p2pol(p1.R(), p1.Theta()+TMath::PiOver2(), p1.Phi() + 1.0); 
  // mixedmethods not yet impl. 
  XYZPoint p2; p2 = p2pol; 

  ok = 0; 
  ok += compare( VectorUtil::DeltaPhi(p1,p2), 1.0, "deltaPhi Point");
  
  RhoEtaPhiPoint p2cyl(p1.Rho(), p1.Eta() + 1.0, p1.Phi() + 1.0);
  p2 = p2cyl; 
  ok += compare( VectorUtil::DeltaR(p1,p2), sqrt(2.0), "DeltaR Point");

  XYZPoint pperp(vperp.X(), vperp.Y(), vperp.Z());
  ok += compare( VectorUtil::CosTheta(p1,pperp), 0.0, "costheta Point");
  ok += compare( VectorUtil::Angle(p1,pperp), TMath::PiOver2(), "angle Point");

  if (ok == 0) std::cout << "\t\t OK " << std::endl;


  std::cout << "LorentzVector utility funct.:   ";


  XYZTVector q1(1.0, 2.0, 3.0,4.0); 
  PtEtaPhiEVector q2cyl(q1.Pt(), q1.Eta()+1.0, q1.Phi() + 1.0, q1.E() ); 
  // mixedmethods not yet impl. 
  XYZTVector q2; q2 = q2cyl; 

  ok = 0; 
  ok += compare( VectorUtil::DeltaPhi(q1,q2), 1.0, "deltaPhi LVec");
  ok += compare( VectorUtil::DeltaR(q1,q2), sqrt(2.0), "DeltaR LVec");
  
  XYZTVector qsum = q1+q2; 
  ok += compare( VectorUtil::InvariantMass(q1,q2), qsum.M(), "InvMass");

  if (ok == 0) std::cout << "\t\t OK " << std::endl;

  return ok;

}



int testRotation() { 

 
  std::cout << "\n************************************************************************\n " 
	    << " Rotation and Transformation Tests" 
	    << "\n************************************************************************\n";

  std::cout << "Test Vector Rotations :         ";
  ok = 0; 

  XYZPoint v(1.,2,3.); 

  double pi = TMath::Pi();
  // initiate rotation with some non -trivial angles to test all matrix
  EulerAngles r1( pi/2.,pi/4., pi/3 );
  Rotation3D  r2(r1);
  // only operator= is in CINT for the other rotations
  Quaternion  r3; r3 = r2;
  AxisAngle   r4; r4 = r3;
  RotationZYX r5; r5 = r2;

  XYZPoint v1 = r1 * v;
  XYZPoint v2 = r2 * v;
  XYZPoint v3 = r3 * v;
  XYZPoint v4 = r4 * v;
  XYZPoint v5 = r5 * v;
  
  ok+= compare(v1.X(), v2.X(), "x",2); 
  ok+= compare(v1.Y(), v2.Y(), "y",2); 
  ok+= compare(v1.Z(), v2.Z(), "z",2); 

  ok+= compare(v1.X(), v3.X(), "x",2); 
  ok+= compare(v1.Y(), v3.Y(), "y",2); 
  ok+= compare(v1.Z(), v3.Z(), "z",2); 

  ok+= compare(v1.X(), v4.X(), "x",5); 
  ok+= compare(v1.Y(), v4.Y(), "y",5); 
  ok+= compare(v1.Z(), v4.Z(), "z",5); 

  ok+= compare(v1.X(), v5.X(), "x",2); 
  ok+= compare(v1.Y(), v5.Y(), "y",2); 
  ok+= compare(v1.Z(), v5.Z(), "z",2); 

  // test with matrix
  double rdata[9]; 
  r2.GetComponents(rdata, rdata+9);
  TMatrixD m(3,3,rdata);
  double vdata[3];
  v.GetCoordinates(vdata);
  TVectorD q(3,vdata);
  TVectorD q2 = m*q; 
  
  XYZPoint v6; 
  v6.SetCoordinates( q2.GetMatrixArray() );

  ok+= compare(v1.X(), v6.X(), "x"); 
  ok+= compare(v1.Y(), v6.Y(), "y"); 
  ok+= compare(v1.Z(), v6.Z(), "z"); 


  if (ok == 0) std::cout << "\t OK " << std::endl;
  else  std::cout << std::endl;

  std::cout << "Test Axial Rotations :          ";
  ok = 0; 

  RotationX rx( pi/3);
  RotationY ry( pi/4);
  RotationZ rz( 4*pi/5);

  Rotation3D r3x(rx);
  Rotation3D r3y(ry);
  Rotation3D r3z(rz);

  Quaternion qx; qx = rx;
  Quaternion qy; qy = ry;
  Quaternion qz; qz = rz;

  RotationZYX rzyx( rz.Angle(), ry.Angle(), rx.Angle() );

  XYZPoint vrot1 = rx * ry * rz * v;
  XYZPoint vrot2 = r3x * r3y * r3z * v;

  ok+= compare(vrot1.X(), vrot2.X(), "x"); 
  ok+= compare(vrot1.Y(), vrot2.Y(), "y"); 
  ok+= compare(vrot1.Z(), vrot2.Z(), "z"); 

  vrot2 = qx * qy * qz * v;

  ok+= compare(vrot1.X(), vrot2.X(), "x",2); 
  ok+= compare(vrot1.Y(), vrot2.Y(), "y",2); 
  ok+= compare(vrot1.Z(), vrot2.Z(), "z",2); 

  vrot2 = rzyx * v;

  ok+= compare(vrot1.X(), vrot2.X(), "x"); 
  ok+= compare(vrot1.Y(), vrot2.Y(), "y"); 
  ok+= compare(vrot1.Z(), vrot2.Z(), "z"); 

  // now inverse (first x then y then z)
  vrot1 = rz * ry * rx * v;
  vrot2 = r3z * r3y * r3x * v;

  ok+= compare(vrot1.X(), vrot2.X(), "x"); 
  ok+= compare(vrot1.Y(), vrot2.Y(), "y"); 
  ok+= compare(vrot1.Z(), vrot2.Z(), "z"); 

  
  XYZPoint vinv1 = rx.Inverse()*ry.Inverse()*rz.Inverse()*vrot1;

  ok+= compare(vinv1.X(), v.X(), "x",2); 
  ok+= compare(vinv1.Y(), v.Y(), "y"); 
  ok+= compare(vinv1.Z(), v.Z(), "z"); 

  if (ok == 0) std::cout << "\t OK " << std::endl;
  else  std::cout << std::endl;


  std::cout << "Test Rotations by a PI angle :  ";
  ok = 0;

  double b[4] = { 6,8,10,3.14159265358979323 };
  AxisAngle  arPi(b,b+4 );
  Rotation3D rPi(arPi);
  AxisAngle  a1; a1 = rPi;
  ok+= compare(arPi.Axis().X(), a1.Axis().X(),"x"); 
  ok+= compare(arPi.Axis().Y(), a1.Axis().Y(),"y"); 
  ok+= compare(arPi.Axis().Z(), a1.Axis().Z(),"z");   
  ok+= compare(arPi.Angle(), a1.Angle(),"angle");   

  EulerAngles ePi; ePi=rPi;
  EulerAngles e1; e1=Rotation3D(a1);
  ok+= compare(ePi.Phi(), e1.Phi(),"phi");   
  ok+= compare(ePi.Theta(), e1.Theta(),"theta");   
  ok+= compare(ePi.Psi(), e1.Psi(),"ps1");   

  if (ok == 0) std::cout << "\t\t OK " << std::endl;
  else  std::cout << std::endl;

  std::cout << "Test Inversions :               "; 
  ok = 0; 


  EulerAngles s1 = r1.Inverse();
  Rotation3D  s2 = r2.Inverse();
  Quaternion  s3 = r3.Inverse();
  AxisAngle   s4 = r4.Inverse();
  RotationZYX s5 = r5.Inverse();

  
  // euler angles not yet impl.
  XYZPoint p = s2 * r2 * v; 
  
  ok+= compare(p.X(), v.X(), "x",10); 
  ok+= compare(p.Y(), v.Y(), "y",10); 
  ok+= compare(p.Z(), v.Z(), "z",10); 


  p = s3 * r3 * v; 
  
  ok+= compare(p.X(), v.X(), "x",10); 
  ok+= compare(p.Y(), v.Y(), "y",10); 
  ok+= compare(p.Z(), v.Z(), "z",10); 

  p = s4 * r4 * v; 
  // axis angle inversion not very precise
  ok+= compare(p.X(), v.X(), "x",1E9); 
  ok+= compare(p.Y(), v.Y(), "y",1E9); 
  ok+= compare(p.Z(), v.Z(), "z",1E9); 

  p = s5 * r5 * v; 
  
  ok+= compare(p.X(), v.X(), "x",10); 
  ok+= compare(p.Y(), v.Y(), "y",10); 
  ok+= compare(p.Z(), v.Z(), "z",10); 


  Rotation3D r6(r5);
  Rotation3D s6 = r6.Inverse();

  p = s6 * r6 * v; 
  
  ok+= compare(p.X(), v.X(), "x",10); 
  ok+= compare(p.Y(), v.Y(), "y",10); 
  ok+= compare(p.Z(), v.Z(), "z",10); 
  
  if (ok == 0) std::cout << "\t OK " << std::endl;
  else  std::cout << std::endl;

  // test Rectify 

  std::cout << "Test rectify :                  "; 
  ok = 0; 

  XYZVector u1(0.999498,-0.00118212,-0.0316611); 
  XYZVector u2(0,0.999304,-0.0373108); 
  XYZVector u3(0.0316832,0.0372921,0.998802); 
  Rotation3D rr(u1,u2,u3); 
  // check orto-normality
  XYZPoint vrr = rr* v; 
  ok+= compare(v.R(), vrr.R(), "R",1.E9); 

  if (ok == 0) std::cout << "\t\t OK " << std::endl;
  else  std::cout << std::endl;
  
  std::cout << "Test Transform3D :              "; 
  ok = 0; 

  XYZVector d(1.,-2.,3.);
  Transform3D t(r2,d);
  
  XYZPoint pd = t * v;
  // apply directly rotation
  XYZPoint vd = r2 * v + d; 

  ok+= compare(pd.X(), vd.X(), "x"); 
  ok+= compare(pd.Y(), vd.Y(), "y"); 
  ok+= compare(pd.Z(), vd.Z(), "z"); 

  // test with matrix 
  double tdata[12]; 
  t.GetComponents(tdata);
  TMatrixD mt(3,4,tdata);
  double vData[4]; // needs a vector of dim 4 
  v.GetCoordinates(vData);
  vData[3] = 1;
  TVectorD q0(4,vData);
  
  TVectorD qt = mt*q0; 

  ok+= compare(pd.X(), qt(0), "x"); 
  ok+= compare(pd.Y(), qt(1), "y"); 
  ok+= compare(pd.Z(), qt(2), "z"); 


  // test inverse 

  Transform3D tinv = t.Inverse();
  
  p = tinv * t * v; 

  ok+= compare(p.X(), v.X(), "x",10); 
  ok+= compare(p.Y(), v.Y(), "y",10); 
  ok+= compare(p.Z(), v.Z(), "z",10); 

  // test costruct inverse from translation first

  //Transform3D tinv2( -d, r2.Inverse() );
  //Transform3D tinv2 =  r2.Inverse() * Translation3D(-d) ;
  Transform3D tinv2 ( r2.Inverse(), r2.Inverse() *( -d) ) ;
  p = tinv2 * t * v; 

  ok+= compare(p.X(), v.X(), "x",10); 
  ok+= compare(p.Y(), v.Y(), "y",10); 
  ok+= compare(p.Z(), v.Z(), "z",10); 

  // test from only rotation and only translation 
  Transform3D ta( EulerAngles(1.,2.,3.) );
  Transform3D tb( XYZVector(1,2,3) );
  Transform3D tc(  Rotation3D(EulerAngles(1.,2.,3.)) ,  XYZVector(1,2,3) );
  Transform3D td(  ta.Rotation(), ta.Rotation()  * XYZVector(1,2,3) ) ;
  
  ok+= compare( tc == tb*ta, static_cast<double>(true), "== Rot*Tra");
  ok+= compare( td == ta*tb, static_cast<double>(true), "== Rot*Tra");


  if (ok == 0) std::cout << "\t OK " << std::endl;
  else  std::cout << std::endl;

  std::cout << "Test Plane3D :                  "; 
  ok = 0; 

  // test transfrom a 3D plane

  
  XYZPoint p1(1,2,3);
  XYZPoint p2(-2,-1,4);
  XYZPoint p3(-1,3,2);
  Plane3D plane(p1,p2,p3);

  XYZVector n = plane.Normal();
  // normal is perpendicular to vectors on the planes obtained from subracting the points
  ok+= compare(n.Dot(p2-p1), 0.0, "n.v12",10); 
  ok+= compare(n.Dot(p3-p1), 0.0, "n.v13",10); 
  ok+= compare(n.Dot(p3-p2), 0.0, "n.v23",10); 

  Plane3D plane1 = t(plane);
  
  // transform the points
  XYZPoint pt1 = t(p1);
  XYZPoint pt2 = t(p2);
  XYZPoint pt3 = t(p3);
  Plane3D plane2(pt1,pt2,pt3);

  XYZVector n1 = plane1.Normal();
  XYZVector n2 = plane2.Normal();


  ok+= compare(n1.X(), n2.X(), "a",10); 
  ok+= compare(n1.Y(), n2.Y(), "b",10); 
  ok+= compare(n1.Z(), n2.Z(), "c",10); 
  ok+= compare(plane1.HesseDistance(), plane2.HesseDistance(), "d",10); 

  // check distances  
  ok += compare(plane1.Distance(pt1), 0.0, "distance",10);

  if (ok == 0) std::cout << "\t OK " << std::endl;
  else  std::cout << std::endl;

  std::cout << "Test LorentzRotation :          "; 
  ok = 0; 

  XYZTVector lv(1.,2.,3.,4.);
  
  // test from rotx (using boosts and 3D rotations not yet impl.)
  // rx,ry and rz already defined
  Rotation3D r3d = rx*ry*rz; 

  LorentzRotation rlx(rx);
  LorentzRotation rly(ry);
  LorentzRotation rlz(rz);

  LorentzRotation rl0 = rlx*rly*rlz;
  LorentzRotation rl1( r3d);
  
//   cout << rl << endl;
//   cout << rl0 << endl;
//   int eq = rl0 == rl;
//   cout << eq << endl;
//   double d1[16];
//   double d2[16];
//   rl.GetComponents(d1,d1+16);
//   rl0.GetComponents(d2,d2+16);
//   for (int i = 0; i < 16; ++i) 
//     ok+= compare(d1[i], d2[i], "i",1); 

  //ok+= compare( rl == rl2, static_cast<double>(true), " LorenzRot");


  //  cout << Rotation3D(rx) << endl;

  XYZTVector lv0 = rl0 * lv; 

  XYZTVector lv1 = rl1 * lv; 

  XYZTVector lv2 = r3d * lv; 


  ok+= compare(lv1== lv2,true,"V0==V2"); 
  ok+= compare(lv1== lv2,true,"V1==V2"); 

  double rlData[16];
  rl0.GetComponents(rlData);
  TMatrixD ml(4,4,rlData); 
  //  ml.Print();
  double lvData[4];
  lv.GetCoordinates(lvData);
  TVectorD ql(4,lvData); 

  TVectorD qlr = ml*ql; 

  ok+= compare(lv1.X(), qlr(0), "x"); 
  ok+= compare(lv1.Y(), qlr(1), "y"); 
  ok+= compare(lv1.Z(), qlr(2), "z"); 
  ok+= compare(lv1.E(), qlr(3), "t"); 

  // test inverse 

  lv0 = rl0 * rl0.Inverse() * lv; 

  ok+= compare(lv0.X(), lv.X(), "x"); 
  ok+= compare(lv0.Y(), lv.Y(), "y"); 
  ok+= compare(lv0.Z(), lv.Z(), "z"); 
  ok+= compare(lv0.E(), lv.E(), "t"); 

  if (ok == 0) std::cout << "\t OK " << std::endl;
  else  std::cout << std::endl;

  // test Boosts

  std::cout << "Test Boost :                    "; 
  ok = 0; 


  Boost bst( 0.3,0.4,0.5);   //  boost (must be <= 1)


  XYZTVector lvb = bst ( lv );

  LorentzRotation rl2 (bst);

  XYZTVector lvb2 = rl2 (lv);


  // test with lorentz rotation
  ok+= compare(lvb.X(), lvb2.X(), "x"); 
  ok+= compare(lvb.Y(), lvb2.Y(), "y"); 
  ok+= compare(lvb.Z(), lvb2.Z(), "z"); 
  ok+= compare(lvb.E(), lvb2.E(), "t"); 
  ok+= compare(lvb.M(), lv.M(), "m",50); // m must stay constant 


  // test inverse
  lv0 = bst.Inverse() * lvb;

  ok+= compare(lv0.X(), lv.X(), "x",5); 
  ok+= compare(lv0.Y(), lv.Y(), "y",5); 
  ok+= compare(lv0.Z(), lv.Z(), "z",3); 
  ok+= compare(lv0.E(), lv.E(), "t",3); 

  XYZVector brest = lv.BoostToCM();
  bst.SetComponents( brest.X(), brest.Y(), brest.Z() );

  XYZTVector lvr = bst * lv; 

  ok+= compare(lvr.X(), 0.0, "x",10); 
  ok+= compare(lvr.Y(), 0.0, "y",10); 
  ok+= compare(lvr.Z(), 0.0, "z",10); 
  ok+= compare(lvr.M(), lv.M(), "m",10); 


  if (ok == 0) std::cout << "\t OK " << std::endl;
  else  std::cout << std::endl;

  return ok;
}


void mathcoreGenVector() {

#ifdef __CINT__
  gSystem->Load("libMathCore");
  using namespace ROOT::Math;
#endif
 
  testVector3D();
  testPoint3D();
  testLorentzVector();
  testVectorUtil();
  testRotation();

  std::cout << "\n\nNumber of tests " << ntest << " failed = " << nfail << std::endl;
}

 mathcoreGenVector.C:1
 mathcoreGenVector.C:2
 mathcoreGenVector.C:3
 mathcoreGenVector.C:4
 mathcoreGenVector.C:5
 mathcoreGenVector.C:6
 mathcoreGenVector.C:7
 mathcoreGenVector.C:8
 mathcoreGenVector.C:9
 mathcoreGenVector.C:10
 mathcoreGenVector.C:11
 mathcoreGenVector.C:12
 mathcoreGenVector.C:13
 mathcoreGenVector.C:14
 mathcoreGenVector.C:15
 mathcoreGenVector.C:16
 mathcoreGenVector.C:17
 mathcoreGenVector.C:18
 mathcoreGenVector.C:19
 mathcoreGenVector.C:20
 mathcoreGenVector.C:21
 mathcoreGenVector.C:22
 mathcoreGenVector.C:23
 mathcoreGenVector.C:24
 mathcoreGenVector.C:25
 mathcoreGenVector.C:26
 mathcoreGenVector.C:27
 mathcoreGenVector.C:28
 mathcoreGenVector.C:29
 mathcoreGenVector.C:30
 mathcoreGenVector.C:31
 mathcoreGenVector.C:32
 mathcoreGenVector.C:33
 mathcoreGenVector.C:34
 mathcoreGenVector.C:35
 mathcoreGenVector.C:36
 mathcoreGenVector.C:37
 mathcoreGenVector.C:38
 mathcoreGenVector.C:39
 mathcoreGenVector.C:40
 mathcoreGenVector.C:41
 mathcoreGenVector.C:42
 mathcoreGenVector.C:43
 mathcoreGenVector.C:44
 mathcoreGenVector.C:45
 mathcoreGenVector.C:46
 mathcoreGenVector.C:47
 mathcoreGenVector.C:48
 mathcoreGenVector.C:49
 mathcoreGenVector.C:50
 mathcoreGenVector.C:51
 mathcoreGenVector.C:52
 mathcoreGenVector.C:53
 mathcoreGenVector.C:54
 mathcoreGenVector.C:55
 mathcoreGenVector.C:56
 mathcoreGenVector.C:57
 mathcoreGenVector.C:58
 mathcoreGenVector.C:59
 mathcoreGenVector.C:60
 mathcoreGenVector.C:61
 mathcoreGenVector.C:62
 mathcoreGenVector.C:63
 mathcoreGenVector.C:64
 mathcoreGenVector.C:65
 mathcoreGenVector.C:66
 mathcoreGenVector.C:67
 mathcoreGenVector.C:68
 mathcoreGenVector.C:69
 mathcoreGenVector.C:70
 mathcoreGenVector.C:71
 mathcoreGenVector.C:72
 mathcoreGenVector.C:73
 mathcoreGenVector.C:74
 mathcoreGenVector.C:75
 mathcoreGenVector.C:76
 mathcoreGenVector.C:77
 mathcoreGenVector.C:78
 mathcoreGenVector.C:79
 mathcoreGenVector.C:80
 mathcoreGenVector.C:81
 mathcoreGenVector.C:82
 mathcoreGenVector.C:83
 mathcoreGenVector.C:84
 mathcoreGenVector.C:85
 mathcoreGenVector.C:86
 mathcoreGenVector.C:87
 mathcoreGenVector.C:88
 mathcoreGenVector.C:89
 mathcoreGenVector.C:90
 mathcoreGenVector.C:91
 mathcoreGenVector.C:92
 mathcoreGenVector.C:93
 mathcoreGenVector.C:94
 mathcoreGenVector.C:95
 mathcoreGenVector.C:96
 mathcoreGenVector.C:97
 mathcoreGenVector.C:98
 mathcoreGenVector.C:99
 mathcoreGenVector.C:100
 mathcoreGenVector.C:101
 mathcoreGenVector.C:102
 mathcoreGenVector.C:103
 mathcoreGenVector.C:104
 mathcoreGenVector.C:105
 mathcoreGenVector.C:106
 mathcoreGenVector.C:107
 mathcoreGenVector.C:108
 mathcoreGenVector.C:109
 mathcoreGenVector.C:110
 mathcoreGenVector.C:111
 mathcoreGenVector.C:112
 mathcoreGenVector.C:113
 mathcoreGenVector.C:114
 mathcoreGenVector.C:115
 mathcoreGenVector.C:116
 mathcoreGenVector.C:117
 mathcoreGenVector.C:118
 mathcoreGenVector.C:119
 mathcoreGenVector.C:120
 mathcoreGenVector.C:121
 mathcoreGenVector.C:122
 mathcoreGenVector.C:123
 mathcoreGenVector.C:124
 mathcoreGenVector.C:125
 mathcoreGenVector.C:126
 mathcoreGenVector.C:127
 mathcoreGenVector.C:128
 mathcoreGenVector.C:129
 mathcoreGenVector.C:130
 mathcoreGenVector.C:131
 mathcoreGenVector.C:132
 mathcoreGenVector.C:133
 mathcoreGenVector.C:134
 mathcoreGenVector.C:135
 mathcoreGenVector.C:136
 mathcoreGenVector.C:137
 mathcoreGenVector.C:138
 mathcoreGenVector.C:139
 mathcoreGenVector.C:140
 mathcoreGenVector.C:141
 mathcoreGenVector.C:142
 mathcoreGenVector.C:143
 mathcoreGenVector.C:144
 mathcoreGenVector.C:145
 mathcoreGenVector.C:146
 mathcoreGenVector.C:147
 mathcoreGenVector.C:148
 mathcoreGenVector.C:149
 mathcoreGenVector.C:150
 mathcoreGenVector.C:151
 mathcoreGenVector.C:152
 mathcoreGenVector.C:153
 mathcoreGenVector.C:154
 mathcoreGenVector.C:155
 mathcoreGenVector.C:156
 mathcoreGenVector.C:157
 mathcoreGenVector.C:158
 mathcoreGenVector.C:159
 mathcoreGenVector.C:160
 mathcoreGenVector.C:161
 mathcoreGenVector.C:162
 mathcoreGenVector.C:163
 mathcoreGenVector.C:164
 mathcoreGenVector.C:165
 mathcoreGenVector.C:166
 mathcoreGenVector.C:167
 mathcoreGenVector.C:168
 mathcoreGenVector.C:169
 mathcoreGenVector.C:170
 mathcoreGenVector.C:171
 mathcoreGenVector.C:172
 mathcoreGenVector.C:173
 mathcoreGenVector.C:174
 mathcoreGenVector.C:175
 mathcoreGenVector.C:176
 mathcoreGenVector.C:177
 mathcoreGenVector.C:178
 mathcoreGenVector.C:179
 mathcoreGenVector.C:180
 mathcoreGenVector.C:181
 mathcoreGenVector.C:182
 mathcoreGenVector.C:183
 mathcoreGenVector.C:184
 mathcoreGenVector.C:185
 mathcoreGenVector.C:186
 mathcoreGenVector.C:187
 mathcoreGenVector.C:188
 mathcoreGenVector.C:189
 mathcoreGenVector.C:190
 mathcoreGenVector.C:191
 mathcoreGenVector.C:192
 mathcoreGenVector.C:193
 mathcoreGenVector.C:194
 mathcoreGenVector.C:195
 mathcoreGenVector.C:196
 mathcoreGenVector.C:197
 mathcoreGenVector.C:198
 mathcoreGenVector.C:199
 mathcoreGenVector.C:200
 mathcoreGenVector.C:201
 mathcoreGenVector.C:202
 mathcoreGenVector.C:203
 mathcoreGenVector.C:204
 mathcoreGenVector.C:205
 mathcoreGenVector.C:206
 mathcoreGenVector.C:207
 mathcoreGenVector.C:208
 mathcoreGenVector.C:209
 mathcoreGenVector.C:210
 mathcoreGenVector.C:211
 mathcoreGenVector.C:212
 mathcoreGenVector.C:213
 mathcoreGenVector.C:214
 mathcoreGenVector.C:215
 mathcoreGenVector.C:216
 mathcoreGenVector.C:217
 mathcoreGenVector.C:218
 mathcoreGenVector.C:219
 mathcoreGenVector.C:220
 mathcoreGenVector.C:221
 mathcoreGenVector.C:222
 mathcoreGenVector.C:223
 mathcoreGenVector.C:224
 mathcoreGenVector.C:225
 mathcoreGenVector.C:226
 mathcoreGenVector.C:227
 mathcoreGenVector.C:228
 mathcoreGenVector.C:229
 mathcoreGenVector.C:230
 mathcoreGenVector.C:231
 mathcoreGenVector.C:232
 mathcoreGenVector.C:233
 mathcoreGenVector.C:234
 mathcoreGenVector.C:235
 mathcoreGenVector.C:236
 mathcoreGenVector.C:237
 mathcoreGenVector.C:238
 mathcoreGenVector.C:239
 mathcoreGenVector.C:240
 mathcoreGenVector.C:241
 mathcoreGenVector.C:242
 mathcoreGenVector.C:243
 mathcoreGenVector.C:244
 mathcoreGenVector.C:245
 mathcoreGenVector.C:246
 mathcoreGenVector.C:247
 mathcoreGenVector.C:248
 mathcoreGenVector.C:249
 mathcoreGenVector.C:250
 mathcoreGenVector.C:251
 mathcoreGenVector.C:252
 mathcoreGenVector.C:253
 mathcoreGenVector.C:254
 mathcoreGenVector.C:255
 mathcoreGenVector.C:256
 mathcoreGenVector.C:257
 mathcoreGenVector.C:258
 mathcoreGenVector.C:259
 mathcoreGenVector.C:260
 mathcoreGenVector.C:261
 mathcoreGenVector.C:262
 mathcoreGenVector.C:263
 mathcoreGenVector.C:264
 mathcoreGenVector.C:265
 mathcoreGenVector.C:266
 mathcoreGenVector.C:267
 mathcoreGenVector.C:268
 mathcoreGenVector.C:269
 mathcoreGenVector.C:270
 mathcoreGenVector.C:271
 mathcoreGenVector.C:272
 mathcoreGenVector.C:273
 mathcoreGenVector.C:274
 mathcoreGenVector.C:275
 mathcoreGenVector.C:276
 mathcoreGenVector.C:277
 mathcoreGenVector.C:278
 mathcoreGenVector.C:279
 mathcoreGenVector.C:280
 mathcoreGenVector.C:281
 mathcoreGenVector.C:282
 mathcoreGenVector.C:283
 mathcoreGenVector.C:284
 mathcoreGenVector.C:285
 mathcoreGenVector.C:286
 mathcoreGenVector.C:287
 mathcoreGenVector.C:288
 mathcoreGenVector.C:289
 mathcoreGenVector.C:290
 mathcoreGenVector.C:291
 mathcoreGenVector.C:292
 mathcoreGenVector.C:293
 mathcoreGenVector.C:294
 mathcoreGenVector.C:295
 mathcoreGenVector.C:296
 mathcoreGenVector.C:297
 mathcoreGenVector.C:298
 mathcoreGenVector.C:299
 mathcoreGenVector.C:300
 mathcoreGenVector.C:301
 mathcoreGenVector.C:302
 mathcoreGenVector.C:303
 mathcoreGenVector.C:304
 mathcoreGenVector.C:305
 mathcoreGenVector.C:306
 mathcoreGenVector.C:307
 mathcoreGenVector.C:308
 mathcoreGenVector.C:309
 mathcoreGenVector.C:310
 mathcoreGenVector.C:311
 mathcoreGenVector.C:312
 mathcoreGenVector.C:313
 mathcoreGenVector.C:314
 mathcoreGenVector.C:315
 mathcoreGenVector.C:316
 mathcoreGenVector.C:317
 mathcoreGenVector.C:318
 mathcoreGenVector.C:319
 mathcoreGenVector.C:320
 mathcoreGenVector.C:321
 mathcoreGenVector.C:322
 mathcoreGenVector.C:323
 mathcoreGenVector.C:324
 mathcoreGenVector.C:325
 mathcoreGenVector.C:326
 mathcoreGenVector.C:327
 mathcoreGenVector.C:328
 mathcoreGenVector.C:329
 mathcoreGenVector.C:330
 mathcoreGenVector.C:331
 mathcoreGenVector.C:332
 mathcoreGenVector.C:333
 mathcoreGenVector.C:334
 mathcoreGenVector.C:335
 mathcoreGenVector.C:336
 mathcoreGenVector.C:337
 mathcoreGenVector.C:338
 mathcoreGenVector.C:339
 mathcoreGenVector.C:340
 mathcoreGenVector.C:341
 mathcoreGenVector.C:342
 mathcoreGenVector.C:343
 mathcoreGenVector.C:344
 mathcoreGenVector.C:345
 mathcoreGenVector.C:346
 mathcoreGenVector.C:347
 mathcoreGenVector.C:348
 mathcoreGenVector.C:349
 mathcoreGenVector.C:350
 mathcoreGenVector.C:351
 mathcoreGenVector.C:352
 mathcoreGenVector.C:353
 mathcoreGenVector.C:354
 mathcoreGenVector.C:355
 mathcoreGenVector.C:356
 mathcoreGenVector.C:357
 mathcoreGenVector.C:358
 mathcoreGenVector.C:359
 mathcoreGenVector.C:360
 mathcoreGenVector.C:361
 mathcoreGenVector.C:362
 mathcoreGenVector.C:363
 mathcoreGenVector.C:364
 mathcoreGenVector.C:365
 mathcoreGenVector.C:366
 mathcoreGenVector.C:367
 mathcoreGenVector.C:368
 mathcoreGenVector.C:369
 mathcoreGenVector.C:370
 mathcoreGenVector.C:371
 mathcoreGenVector.C:372
 mathcoreGenVector.C:373
 mathcoreGenVector.C:374
 mathcoreGenVector.C:375
 mathcoreGenVector.C:376
 mathcoreGenVector.C:377
 mathcoreGenVector.C:378
 mathcoreGenVector.C:379
 mathcoreGenVector.C:380
 mathcoreGenVector.C:381
 mathcoreGenVector.C:382
 mathcoreGenVector.C:383
 mathcoreGenVector.C:384
 mathcoreGenVector.C:385
 mathcoreGenVector.C:386
 mathcoreGenVector.C:387
 mathcoreGenVector.C:388
 mathcoreGenVector.C:389
 mathcoreGenVector.C:390
 mathcoreGenVector.C:391
 mathcoreGenVector.C:392
 mathcoreGenVector.C:393
 mathcoreGenVector.C:394
 mathcoreGenVector.C:395
 mathcoreGenVector.C:396
 mathcoreGenVector.C:397
 mathcoreGenVector.C:398
 mathcoreGenVector.C:399
 mathcoreGenVector.C:400
 mathcoreGenVector.C:401
 mathcoreGenVector.C:402
 mathcoreGenVector.C:403
 mathcoreGenVector.C:404
 mathcoreGenVector.C:405
 mathcoreGenVector.C:406
 mathcoreGenVector.C:407
 mathcoreGenVector.C:408
 mathcoreGenVector.C:409
 mathcoreGenVector.C:410
 mathcoreGenVector.C:411
 mathcoreGenVector.C:412
 mathcoreGenVector.C:413
 mathcoreGenVector.C:414
 mathcoreGenVector.C:415
 mathcoreGenVector.C:416
 mathcoreGenVector.C:417
 mathcoreGenVector.C:418
 mathcoreGenVector.C:419
 mathcoreGenVector.C:420
 mathcoreGenVector.C:421
 mathcoreGenVector.C:422
 mathcoreGenVector.C:423
 mathcoreGenVector.C:424
 mathcoreGenVector.C:425
 mathcoreGenVector.C:426
 mathcoreGenVector.C:427
 mathcoreGenVector.C:428
 mathcoreGenVector.C:429
 mathcoreGenVector.C:430
 mathcoreGenVector.C:431
 mathcoreGenVector.C:432
 mathcoreGenVector.C:433
 mathcoreGenVector.C:434
 mathcoreGenVector.C:435
 mathcoreGenVector.C:436
 mathcoreGenVector.C:437
 mathcoreGenVector.C:438
 mathcoreGenVector.C:439
 mathcoreGenVector.C:440
 mathcoreGenVector.C:441
 mathcoreGenVector.C:442
 mathcoreGenVector.C:443
 mathcoreGenVector.C:444
 mathcoreGenVector.C:445
 mathcoreGenVector.C:446
 mathcoreGenVector.C:447
 mathcoreGenVector.C:448
 mathcoreGenVector.C:449
 mathcoreGenVector.C:450
 mathcoreGenVector.C:451
 mathcoreGenVector.C:452
 mathcoreGenVector.C:453
 mathcoreGenVector.C:454
 mathcoreGenVector.C:455
 mathcoreGenVector.C:456
 mathcoreGenVector.C:457
 mathcoreGenVector.C:458
 mathcoreGenVector.C:459
 mathcoreGenVector.C:460
 mathcoreGenVector.C:461
 mathcoreGenVector.C:462
 mathcoreGenVector.C:463
 mathcoreGenVector.C:464
 mathcoreGenVector.C:465
 mathcoreGenVector.C:466
 mathcoreGenVector.C:467
 mathcoreGenVector.C:468
 mathcoreGenVector.C:469
 mathcoreGenVector.C:470
 mathcoreGenVector.C:471
 mathcoreGenVector.C:472
 mathcoreGenVector.C:473
 mathcoreGenVector.C:474
 mathcoreGenVector.C:475
 mathcoreGenVector.C:476
 mathcoreGenVector.C:477
 mathcoreGenVector.C:478
 mathcoreGenVector.C:479
 mathcoreGenVector.C:480
 mathcoreGenVector.C:481
 mathcoreGenVector.C:482
 mathcoreGenVector.C:483
 mathcoreGenVector.C:484
 mathcoreGenVector.C:485
 mathcoreGenVector.C:486
 mathcoreGenVector.C:487
 mathcoreGenVector.C:488
 mathcoreGenVector.C:489
 mathcoreGenVector.C:490
 mathcoreGenVector.C:491
 mathcoreGenVector.C:492
 mathcoreGenVector.C:493
 mathcoreGenVector.C:494
 mathcoreGenVector.C:495
 mathcoreGenVector.C:496
 mathcoreGenVector.C:497
 mathcoreGenVector.C:498
 mathcoreGenVector.C:499
 mathcoreGenVector.C:500
 mathcoreGenVector.C:501
 mathcoreGenVector.C:502
 mathcoreGenVector.C:503
 mathcoreGenVector.C:504
 mathcoreGenVector.C:505
 mathcoreGenVector.C:506
 mathcoreGenVector.C:507
 mathcoreGenVector.C:508
 mathcoreGenVector.C:509
 mathcoreGenVector.C:510
 mathcoreGenVector.C:511
 mathcoreGenVector.C:512
 mathcoreGenVector.C:513
 mathcoreGenVector.C:514
 mathcoreGenVector.C:515
 mathcoreGenVector.C:516
 mathcoreGenVector.C:517
 mathcoreGenVector.C:518
 mathcoreGenVector.C:519
 mathcoreGenVector.C:520
 mathcoreGenVector.C:521
 mathcoreGenVector.C:522
 mathcoreGenVector.C:523
 mathcoreGenVector.C:524
 mathcoreGenVector.C:525
 mathcoreGenVector.C:526
 mathcoreGenVector.C:527
 mathcoreGenVector.C:528
 mathcoreGenVector.C:529
 mathcoreGenVector.C:530
 mathcoreGenVector.C:531
 mathcoreGenVector.C:532
 mathcoreGenVector.C:533
 mathcoreGenVector.C:534
 mathcoreGenVector.C:535
 mathcoreGenVector.C:536
 mathcoreGenVector.C:537
 mathcoreGenVector.C:538
 mathcoreGenVector.C:539
 mathcoreGenVector.C:540
 mathcoreGenVector.C:541
 mathcoreGenVector.C:542
 mathcoreGenVector.C:543
 mathcoreGenVector.C:544
 mathcoreGenVector.C:545
 mathcoreGenVector.C:546
 mathcoreGenVector.C:547
 mathcoreGenVector.C:548
 mathcoreGenVector.C:549
 mathcoreGenVector.C:550
 mathcoreGenVector.C:551
 mathcoreGenVector.C:552
 mathcoreGenVector.C:553
 mathcoreGenVector.C:554
 mathcoreGenVector.C:555
 mathcoreGenVector.C:556
 mathcoreGenVector.C:557
 mathcoreGenVector.C:558
 mathcoreGenVector.C:559
 mathcoreGenVector.C:560
 mathcoreGenVector.C:561
 mathcoreGenVector.C:562
 mathcoreGenVector.C:563
 mathcoreGenVector.C:564
 mathcoreGenVector.C:565
 mathcoreGenVector.C:566
 mathcoreGenVector.C:567
 mathcoreGenVector.C:568
 mathcoreGenVector.C:569
 mathcoreGenVector.C:570
 mathcoreGenVector.C:571
 mathcoreGenVector.C:572
 mathcoreGenVector.C:573
 mathcoreGenVector.C:574
 mathcoreGenVector.C:575
 mathcoreGenVector.C:576
 mathcoreGenVector.C:577
 mathcoreGenVector.C:578
 mathcoreGenVector.C:579
 mathcoreGenVector.C:580
 mathcoreGenVector.C:581
 mathcoreGenVector.C:582
 mathcoreGenVector.C:583
 mathcoreGenVector.C:584
 mathcoreGenVector.C:585
 mathcoreGenVector.C:586
 mathcoreGenVector.C:587
 mathcoreGenVector.C:588
 mathcoreGenVector.C:589
 mathcoreGenVector.C:590
 mathcoreGenVector.C:591
 mathcoreGenVector.C:592
 mathcoreGenVector.C:593
 mathcoreGenVector.C:594
 mathcoreGenVector.C:595
 mathcoreGenVector.C:596
 mathcoreGenVector.C:597
 mathcoreGenVector.C:598
 mathcoreGenVector.C:599
 mathcoreGenVector.C:600
 mathcoreGenVector.C:601
 mathcoreGenVector.C:602
 mathcoreGenVector.C:603
 mathcoreGenVector.C:604
 mathcoreGenVector.C:605
 mathcoreGenVector.C:606
 mathcoreGenVector.C:607
 mathcoreGenVector.C:608
 mathcoreGenVector.C:609
 mathcoreGenVector.C:610
 mathcoreGenVector.C:611
 mathcoreGenVector.C:612
 mathcoreGenVector.C:613
 mathcoreGenVector.C:614
 mathcoreGenVector.C:615
 mathcoreGenVector.C:616
 mathcoreGenVector.C:617
 mathcoreGenVector.C:618
 mathcoreGenVector.C:619
 mathcoreGenVector.C:620
 mathcoreGenVector.C:621
 mathcoreGenVector.C:622
 mathcoreGenVector.C:623
 mathcoreGenVector.C:624
 mathcoreGenVector.C:625
 mathcoreGenVector.C:626
 mathcoreGenVector.C:627
 mathcoreGenVector.C:628
 mathcoreGenVector.C:629
 mathcoreGenVector.C:630
 mathcoreGenVector.C:631
 mathcoreGenVector.C:632
 mathcoreGenVector.C:633
 mathcoreGenVector.C:634
 mathcoreGenVector.C:635
 mathcoreGenVector.C:636
 mathcoreGenVector.C:637
 mathcoreGenVector.C:638
 mathcoreGenVector.C:639
 mathcoreGenVector.C:640
 mathcoreGenVector.C:641
 mathcoreGenVector.C:642
 mathcoreGenVector.C:643
 mathcoreGenVector.C:644
 mathcoreGenVector.C:645
 mathcoreGenVector.C:646
 mathcoreGenVector.C:647
 mathcoreGenVector.C:648
 mathcoreGenVector.C:649
 mathcoreGenVector.C:650
 mathcoreGenVector.C:651
 mathcoreGenVector.C:652
 mathcoreGenVector.C:653
 mathcoreGenVector.C:654
 mathcoreGenVector.C:655
 mathcoreGenVector.C:656
 mathcoreGenVector.C:657
 mathcoreGenVector.C:658
 mathcoreGenVector.C:659
 mathcoreGenVector.C:660
 mathcoreGenVector.C:661
 mathcoreGenVector.C:662
 mathcoreGenVector.C:663
 mathcoreGenVector.C:664
 mathcoreGenVector.C:665
 mathcoreGenVector.C:666
 mathcoreGenVector.C:667
 mathcoreGenVector.C:668
 mathcoreGenVector.C:669
 mathcoreGenVector.C:670
 mathcoreGenVector.C:671
 mathcoreGenVector.C:672
 mathcoreGenVector.C:673
 mathcoreGenVector.C:674
 mathcoreGenVector.C:675
 mathcoreGenVector.C:676
 mathcoreGenVector.C:677
 mathcoreGenVector.C:678
 mathcoreGenVector.C:679
 mathcoreGenVector.C:680
 mathcoreGenVector.C:681
 mathcoreGenVector.C:682
 mathcoreGenVector.C:683
 mathcoreGenVector.C:684
 mathcoreGenVector.C:685
 mathcoreGenVector.C:686
 mathcoreGenVector.C:687
 mathcoreGenVector.C:688
 mathcoreGenVector.C:689
 mathcoreGenVector.C:690
 mathcoreGenVector.C:691
 mathcoreGenVector.C:692
 mathcoreGenVector.C:693
 mathcoreGenVector.C:694
 mathcoreGenVector.C:695
 mathcoreGenVector.C:696
 mathcoreGenVector.C:697
 mathcoreGenVector.C:698
 mathcoreGenVector.C:699
 mathcoreGenVector.C:700
 mathcoreGenVector.C:701
 mathcoreGenVector.C:702
 mathcoreGenVector.C:703
 mathcoreGenVector.C:704
 mathcoreGenVector.C:705
 mathcoreGenVector.C:706
 mathcoreGenVector.C:707
 mathcoreGenVector.C:708
 mathcoreGenVector.C:709
 mathcoreGenVector.C:710
 mathcoreGenVector.C:711
 mathcoreGenVector.C:712
 mathcoreGenVector.C:713
 mathcoreGenVector.C:714
 mathcoreGenVector.C:715
 mathcoreGenVector.C:716
 mathcoreGenVector.C:717
 mathcoreGenVector.C:718
 mathcoreGenVector.C:719
 mathcoreGenVector.C:720
 mathcoreGenVector.C:721
 mathcoreGenVector.C:722
 mathcoreGenVector.C:723
 mathcoreGenVector.C:724
 mathcoreGenVector.C:725
 mathcoreGenVector.C:726
 mathcoreGenVector.C:727
 mathcoreGenVector.C:728
 mathcoreGenVector.C:729
 mathcoreGenVector.C:730
 mathcoreGenVector.C:731
 mathcoreGenVector.C:732
 mathcoreGenVector.C:733
 mathcoreGenVector.C:734
 mathcoreGenVector.C:735
 mathcoreGenVector.C:736
 mathcoreGenVector.C:737
 mathcoreGenVector.C:738
 mathcoreGenVector.C:739
 mathcoreGenVector.C:740
 mathcoreGenVector.C:741
 mathcoreGenVector.C:742
 mathcoreGenVector.C:743
 mathcoreGenVector.C:744
 mathcoreGenVector.C:745
 mathcoreGenVector.C:746
 mathcoreGenVector.C:747
 mathcoreGenVector.C:748
 mathcoreGenVector.C:749
 mathcoreGenVector.C:750
 mathcoreGenVector.C:751
 mathcoreGenVector.C:752
 mathcoreGenVector.C:753
 mathcoreGenVector.C:754
 mathcoreGenVector.C:755
 mathcoreGenVector.C:756
 mathcoreGenVector.C:757
 mathcoreGenVector.C:758
 mathcoreGenVector.C:759
 mathcoreGenVector.C:760
 mathcoreGenVector.C:761
 mathcoreGenVector.C:762
 mathcoreGenVector.C:763
 mathcoreGenVector.C:764
 mathcoreGenVector.C:765
 mathcoreGenVector.C:766
 mathcoreGenVector.C:767
 mathcoreGenVector.C:768
 mathcoreGenVector.C:769
 mathcoreGenVector.C:770
 mathcoreGenVector.C:771
 mathcoreGenVector.C:772
 mathcoreGenVector.C:773
 mathcoreGenVector.C:774
 mathcoreGenVector.C:775
 mathcoreGenVector.C:776
 mathcoreGenVector.C:777
 mathcoreGenVector.C:778
 mathcoreGenVector.C:779
 mathcoreGenVector.C:780
 mathcoreGenVector.C:781
 mathcoreGenVector.C:782
 mathcoreGenVector.C:783
 mathcoreGenVector.C:784
 mathcoreGenVector.C:785
 mathcoreGenVector.C:786
 mathcoreGenVector.C:787
 mathcoreGenVector.C:788
 mathcoreGenVector.C:789
 mathcoreGenVector.C:790
 mathcoreGenVector.C:791
 mathcoreGenVector.C:792
 mathcoreGenVector.C:793
 mathcoreGenVector.C:794
 mathcoreGenVector.C:795
 mathcoreGenVector.C:796
 mathcoreGenVector.C:797
 mathcoreGenVector.C:798
 mathcoreGenVector.C:799
 mathcoreGenVector.C:800
 mathcoreGenVector.C:801
 mathcoreGenVector.C:802
 mathcoreGenVector.C:803
 mathcoreGenVector.C:804
 mathcoreGenVector.C:805
 mathcoreGenVector.C:806
 mathcoreGenVector.C:807
 mathcoreGenVector.C:808
 mathcoreGenVector.C:809
 mathcoreGenVector.C:810
 mathcoreGenVector.C:811
 mathcoreGenVector.C:812
 mathcoreGenVector.C:813
 mathcoreGenVector.C:814
 mathcoreGenVector.C:815
 mathcoreGenVector.C:816
 mathcoreGenVector.C:817
 mathcoreGenVector.C:818
 mathcoreGenVector.C:819
 mathcoreGenVector.C:820
 mathcoreGenVector.C:821
 mathcoreGenVector.C:822
 mathcoreGenVector.C:823
 mathcoreGenVector.C:824
 mathcoreGenVector.C:825
 mathcoreGenVector.C:826
 mathcoreGenVector.C:827
 mathcoreGenVector.C:828
 mathcoreGenVector.C:829
 mathcoreGenVector.C:830
 mathcoreGenVector.C:831
 mathcoreGenVector.C:832
 mathcoreGenVector.C:833
 mathcoreGenVector.C:834
 mathcoreGenVector.C:835
 mathcoreGenVector.C:836
 mathcoreGenVector.C:837
 mathcoreGenVector.C:838
 mathcoreGenVector.C:839
 mathcoreGenVector.C:840
 mathcoreGenVector.C:841
 mathcoreGenVector.C:842
 mathcoreGenVector.C:843
 mathcoreGenVector.C:844
 mathcoreGenVector.C:845
 mathcoreGenVector.C:846
 mathcoreGenVector.C:847
 mathcoreGenVector.C:848
 mathcoreGenVector.C:849
 mathcoreGenVector.C:850
 mathcoreGenVector.C:851
 mathcoreGenVector.C:852
 mathcoreGenVector.C:853
 mathcoreGenVector.C:854
 mathcoreGenVector.C:855
 mathcoreGenVector.C:856
 mathcoreGenVector.C:857
 mathcoreGenVector.C:858
 mathcoreGenVector.C:859
 mathcoreGenVector.C:860
 mathcoreGenVector.C:861
 mathcoreGenVector.C:862
 mathcoreGenVector.C:863
 mathcoreGenVector.C:864
 mathcoreGenVector.C:865
 mathcoreGenVector.C:866
 mathcoreGenVector.C:867
 mathcoreGenVector.C:868
 mathcoreGenVector.C:869
 mathcoreGenVector.C:870
 mathcoreGenVector.C:871
 mathcoreGenVector.C:872
 mathcoreGenVector.C:873
 mathcoreGenVector.C:874
 mathcoreGenVector.C:875
 mathcoreGenVector.C:876
 mathcoreGenVector.C:877
 mathcoreGenVector.C:878
 mathcoreGenVector.C:879
 mathcoreGenVector.C:880
 mathcoreGenVector.C:881
 mathcoreGenVector.C:882
 mathcoreGenVector.C:883
 mathcoreGenVector.C:884
 mathcoreGenVector.C:885
 mathcoreGenVector.C:886
 mathcoreGenVector.C:887
 mathcoreGenVector.C:888
 mathcoreGenVector.C:889
 mathcoreGenVector.C:890
 mathcoreGenVector.C:891
 mathcoreGenVector.C:892
 mathcoreGenVector.C:893
 mathcoreGenVector.C:894
 mathcoreGenVector.C:895
 mathcoreGenVector.C:896
 mathcoreGenVector.C:897
 mathcoreGenVector.C:898
 mathcoreGenVector.C:899
 mathcoreGenVector.C:900
 mathcoreGenVector.C:901
 mathcoreGenVector.C:902
 mathcoreGenVector.C:903
 mathcoreGenVector.C:904
 mathcoreGenVector.C:905
 mathcoreGenVector.C:906
 mathcoreGenVector.C:907
 mathcoreGenVector.C:908
 mathcoreGenVector.C:909
 mathcoreGenVector.C:910
 mathcoreGenVector.C:911
 mathcoreGenVector.C:912
 mathcoreGenVector.C:913
 mathcoreGenVector.C:914
 mathcoreGenVector.C:915
 mathcoreGenVector.C:916
 mathcoreGenVector.C:917
 mathcoreGenVector.C:918
 mathcoreGenVector.C:919
 mathcoreGenVector.C:920
 mathcoreGenVector.C:921
 mathcoreGenVector.C:922
 mathcoreGenVector.C:923
 mathcoreGenVector.C:924
 mathcoreGenVector.C:925
 mathcoreGenVector.C:926
 mathcoreGenVector.C:927
 mathcoreGenVector.C:928
 mathcoreGenVector.C:929
 mathcoreGenVector.C:930
 mathcoreGenVector.C:931
 mathcoreGenVector.C:932
 mathcoreGenVector.C:933
 mathcoreGenVector.C:934
 mathcoreGenVector.C:935
 mathcoreGenVector.C:936
 mathcoreGenVector.C:937
 mathcoreGenVector.C:938
 mathcoreGenVector.C:939
 mathcoreGenVector.C:940
 mathcoreGenVector.C:941
 mathcoreGenVector.C:942
 mathcoreGenVector.C:943
 mathcoreGenVector.C:944
 mathcoreGenVector.C:945
 mathcoreGenVector.C:946
 mathcoreGenVector.C:947
 mathcoreGenVector.C:948
 mathcoreGenVector.C:949
 mathcoreGenVector.C:950
 mathcoreGenVector.C:951
 mathcoreGenVector.C:952
 mathcoreGenVector.C:953
 mathcoreGenVector.C:954
 mathcoreGenVector.C:955
 mathcoreGenVector.C:956
 mathcoreGenVector.C:957
 mathcoreGenVector.C:958
 mathcoreGenVector.C:959
 mathcoreGenVector.C:960
 mathcoreGenVector.C:961
 mathcoreGenVector.C:962
 mathcoreGenVector.C:963
 mathcoreGenVector.C:964
 mathcoreGenVector.C:965
 mathcoreGenVector.C:966
 mathcoreGenVector.C:967
 mathcoreGenVector.C:968
 mathcoreGenVector.C:969
 mathcoreGenVector.C:970
 mathcoreGenVector.C:971
 mathcoreGenVector.C:972
 mathcoreGenVector.C:973
 mathcoreGenVector.C:974
 mathcoreGenVector.C:975
 mathcoreGenVector.C:976
 mathcoreGenVector.C:977
 mathcoreGenVector.C:978
 mathcoreGenVector.C:979
 mathcoreGenVector.C:980
 mathcoreGenVector.C:981
 mathcoreGenVector.C:982
 mathcoreGenVector.C:983
 mathcoreGenVector.C:984
 mathcoreGenVector.C:985
 mathcoreGenVector.C:986
 mathcoreGenVector.C:987
 mathcoreGenVector.C:988
 mathcoreGenVector.C:989
 mathcoreGenVector.C:990
 mathcoreGenVector.C:991
 mathcoreGenVector.C:992
 mathcoreGenVector.C:993
 mathcoreGenVector.C:994
 mathcoreGenVector.C:995
 mathcoreGenVector.C:996
 mathcoreGenVector.C:997
 mathcoreGenVector.C:998
 mathcoreGenVector.C:999
 mathcoreGenVector.C:1000
 mathcoreGenVector.C:1001
 mathcoreGenVector.C:1002
 mathcoreGenVector.C:1003
 mathcoreGenVector.C:1004
 mathcoreGenVector.C:1005
 mathcoreGenVector.C:1006
 mathcoreGenVector.C:1007
 mathcoreGenVector.C:1008