/* $Id: CovMatrix5VectorMultiply.cc,v 1.5 2002/09/19 16:45:18 sachs Exp $ */ // David Sachs, Fermilab - December 2001 #include "CovMatrices/CovMatrix5.h" #include "CovMatrixElement.h" // Functions for multiplying a CovMatrix5 by a Vector5 or a BiVector5 // These functions are very straightforward, but contain too many operations to // justify making them inline namespace CovMatrices { Vector5 operator* ( const CovMatrix5& m, const Vector5& v ) { return Vector5( m.M[M00]*v.E[0] + m.M[M01]*v.E[1] + m.M[M02]*v.E[2] + m.M[M03]*v.E[3] + m.M[M04]*v.E[4], m.M[M10]*v.E[0] + m.M[M11]*v.E[1] + m.M[M12]*v.E[2] + m.M[M13]*v.E[3] + m.M[M14]*v.E[4], m.M[M20]*v.E[0] + m.M[M21]*v.E[1] + m.M[M22]*v.E[2] + m.M[M23]*v.E[3] + m.M[M24]*v.E[4], m.M[M30]*v.E[0] + m.M[M31]*v.E[1] + m.M[M32]*v.E[2] + m.M[M33]*v.E[3] + m.M[M34]*v.E[4], m.M[M40]*v.E[0] + m.M[M41]*v.E[1] + m.M[M42]*v.E[2] + m.M[M43]*v.E[3] + m.M[M44]*v.E[4]); } Vector5 operator* ( const Vector5& v, const CovMatrix5& m ) { return Vector5( m.M[M00]*v.E[0] + m.M[M01]*v.E[1] + m.M[M02]*v.E[2] + m.M[M03]*v.E[3] + m.M[M04]*v.E[4], m.M[M10]*v.E[0] + m.M[M11]*v.E[1] + m.M[M12]*v.E[2] + m.M[M13]*v.E[3] + m.M[M14]*v.E[4], m.M[M20]*v.E[0] + m.M[M21]*v.E[1] + m.M[M22]*v.E[2] + m.M[M23]*v.E[3] + m.M[M24]*v.E[4], m.M[M30]*v.E[0] + m.M[M31]*v.E[1] + m.M[M32]*v.E[2] + m.M[M33]*v.E[3] + m.M[M34]*v.E[4], m.M[M40]*v.E[0] + m.M[M41]*v.E[1] + m.M[M42]*v.E[2] + m.M[M43]*v.E[3] + m.M[M44]*v.E[4]); } BiVector5 operator* ( const CovMatrix5& m, const BiVector5& b ) { return BiVector5( m.M[M00]*b.v0.E[0] + m.M[M01]*b.v0.E[1] + m.M[M02]*b.v0.E[2] + m.M[M03]*b.v0.E[3] + m.M[M04]*b.v0.E[4], m.M[M10]*b.v0.E[0] + m.M[M11]*b.v0.E[1] + m.M[M12]*b.v0.E[2] + m.M[M13]*b.v0.E[3] + m.M[M14]*b.v0.E[4], m.M[M20]*b.v0.E[0] + m.M[M21]*b.v0.E[1] + m.M[M22]*b.v0.E[2] + m.M[M23]*b.v0.E[3] + m.M[M24]*b.v0.E[4], m.M[M30]*b.v0.E[0] + m.M[M31]*b.v0.E[1] + m.M[M32]*b.v0.E[2] + m.M[M33]*b.v0.E[3] + m.M[M34]*b.v0.E[4], m.M[M40]*b.v0.E[0] + m.M[M41]*b.v0.E[1] + m.M[M42]*b.v0.E[2] + m.M[M43]*b.v0.E[3] + m.M[M44]*b.v0.E[4], m.M[M00]*b.v1.E[0] + m.M[M01]*b.v1.E[1] + m.M[M02]*b.v1.E[2] + m.M[M03]*b.v1.E[3] + m.M[M04]*b.v1.E[4], m.M[M10]*b.v1.E[0] + m.M[M11]*b.v1.E[1] + m.M[M12]*b.v1.E[2] + m.M[M13]*b.v1.E[3] + m.M[M14]*b.v1.E[4], m.M[M20]*b.v1.E[0] + m.M[M21]*b.v1.E[1] + m.M[M22]*b.v1.E[2] + m.M[M23]*b.v1.E[3] + m.M[M24]*b.v1.E[4], m.M[M30]*b.v1.E[0] + m.M[M31]*b.v1.E[1] + m.M[M32]*b.v1.E[2] + m.M[M33]*b.v1.E[3] + m.M[M34]*b.v1.E[4], m.M[M40]*b.v1.E[0] + m.M[M41]*b.v1.E[1] + m.M[M42]*b.v1.E[2] + m.M[M43]*b.v1.E[3] + m.M[M44]*b.v1.E[4]); } BiVector5 operator* ( const BiVector5& b, const CovMatrix5& m ) { return BiVector5( m.M[M00]*b.v0.E[0] + m.M[M01]*b.v0.E[1] + m.M[M02]*b.v0.E[2] + m.M[M03]*b.v0.E[3] + m.M[M04]*b.v0.E[4], m.M[M10]*b.v0.E[0] + m.M[M11]*b.v0.E[1] + m.M[M12]*b.v0.E[2] + m.M[M13]*b.v0.E[3] + m.M[M14]*b.v0.E[4], m.M[M20]*b.v0.E[0] + m.M[M21]*b.v0.E[1] + m.M[M22]*b.v0.E[2] + m.M[M23]*b.v0.E[3] + m.M[M24]*b.v0.E[4], m.M[M30]*b.v0.E[0] + m.M[M31]*b.v0.E[1] + m.M[M32]*b.v0.E[2] + m.M[M33]*b.v0.E[3] + m.M[M34]*b.v0.E[4], m.M[M40]*b.v0.E[0] + m.M[M41]*b.v0.E[1] + m.M[M42]*b.v0.E[2] + m.M[M43]*b.v0.E[3] + m.M[M44]*b.v0.E[4], m.M[M00]*b.v1.E[0] + m.M[M01]*b.v1.E[1] + m.M[M02]*b.v1.E[2] + m.M[M03]*b.v1.E[3] + m.M[M04]*b.v1.E[4], m.M[M10]*b.v1.E[0] + m.M[M11]*b.v1.E[1] + m.M[M12]*b.v1.E[2] + m.M[M13]*b.v1.E[3] + m.M[M14]*b.v1.E[4], m.M[M20]*b.v1.E[0] + m.M[M21]*b.v1.E[1] + m.M[M22]*b.v1.E[2] + m.M[M23]*b.v1.E[3] + m.M[M24]*b.v1.E[4], m.M[M30]*b.v1.E[0] + m.M[M31]*b.v1.E[1] + m.M[M32]*b.v1.E[2] + m.M[M33]*b.v1.E[3] + m.M[M34]*b.v1.E[4], m.M[M40]*b.v1.E[0] + m.M[M41]*b.v1.E[1] + m.M[M42]*b.v1.E[2] + m.M[M43]*b.v1.E[3] + m.M[M44]*b.v1.E[4]); } }