// $Id: CovMatrix2VectorMultiply.cc,v 1.4 2002/09/19 16:45:18 sachs Exp $ // David Sachs, Fermilab - April 2002 #include "CovMatrices/CovMatrix2.h" #include "CovMatrixElement.h" // Functions for multiplying a CovMatrix2 by a Vector2 or a BiVector2 // These functions are very straightforward, but contain too many operations to // justify making them inline namespace CovMatrices { Vector2 operator* ( const CovMatrix2& m, const Vector2& v ) { return Vector2( m.M[M00]*v.E[0] + m.M[M01]*v.E[1], m.M[M10]*v.E[0] + m.M[M11]*v.E[1]); } Vector2 operator* ( const Vector2& v, const CovMatrix2& m ) { return Vector2( m.M[M00]*v.E[0] + m.M[M01]*v.E[1], m.M[M10]*v.E[0] + m.M[M11]*v.E[1]); } BiVector2 operator* ( const CovMatrix2& m, const BiVector2& b ) { return BiVector2( m.M[M00]*b.v0.E[0] + m.M[M01]*b.v0.E[1], m.M[M10]*b.v0.E[0] + m.M[M11]*b.v0.E[1], m.M[M00]*b.v1.E[0] + m.M[M01]*b.v1.E[1], m.M[M10]*b.v1.E[0] + m.M[M11]*b.v1.E[1]); } BiVector2 operator* ( const BiVector2& b, const CovMatrix2& m ) { return BiVector2( m.M[M00]*b.v0.E[0] + m.M[M01]*b.v0.E[1], m.M[M10]*b.v0.E[0] + m.M[M11]*b.v0.E[1], m.M[M00]*b.v1.E[0] + m.M[M01]*b.v1.E[1], m.M[M10]*b.v1.E[0] + m.M[M11]*b.v1.E[1]); } }