// $Id: CovMatrix6VectorMultiply.cc,v 1.4 2002/09/19 16:45:18 sachs Exp $ // David Sachs, Fermilab - April 2002 #include "CovMatrices/CovMatrix6.h" #include "CovMatrixElement.h" // Functions for multiplying a CovMatrix6 by a Vector6 or a BiVector6 // These functions are very straightforward, but contain too many operations to // justify making them inline namespace CovMatrices { Vector6 operator* ( const CovMatrix6& m, const Vector6& v ) { return Vector6( 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[M05]*v.E[5], 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[M15]*v.E[5], 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[M25]*v.E[5], 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[M35]*v.E[5], 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] + m.M[M45]*v.E[5], m.M[M50]*v.E[0] + m.M[M51]*v.E[1] + m.M[M52]*v.E[2] + m.M[M53]*v.E[3] + m.M[M54]*v.E[4] + m.M[M55]*v.E[5]); } Vector6 operator* ( const Vector6& v, const CovMatrix6& m ) { return Vector6( 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[M05]*v.E[5], 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[M15]*v.E[5], 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[M25]*v.E[5], 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[M35]*v.E[5], 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] + m.M[M45]*v.E[5], m.M[M50]*v.E[0] + m.M[M51]*v.E[1] + m.M[M52]*v.E[2] + m.M[M53]*v.E[3] + m.M[M54]*v.E[4] + m.M[M55]*v.E[5]); } BiVector6 operator* ( const CovMatrix6& m, const BiVector6& b ) { return BiVector6( 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[M05]*b.v0.E[5], 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[M15]*b.v0.E[5], 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[M25]*b.v0.E[5], 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[M35]*b.v0.E[5], 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[M45]*b.v0.E[5], m.M[M50]*b.v0.E[0] + m.M[M51]*b.v0.E[1] + m.M[M52]*b.v0.E[2] + m.M[M53]*b.v0.E[3] + m.M[M54]*b.v0.E[4] + m.M[M55]*b.v0.E[5], 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[M05]*b.v1.E[5], 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[M15]*b.v1.E[5], 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[M25]*b.v1.E[5], 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[M35]*b.v1.E[5], 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] + m.M[M45]*b.v1.E[5], m.M[M50]*b.v1.E[0] + m.M[M51]*b.v1.E[1] + m.M[M52]*b.v1.E[2] + m.M[M53]*b.v1.E[3] + m.M[M54]*b.v1.E[4] + m.M[M55]*b.v1.E[5]); } BiVector6 operator* ( const BiVector6& b, const CovMatrix6& m ) { return BiVector6( 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[M05]*b.v0.E[5], 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[M15]*b.v0.E[5], 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[M25]*b.v0.E[5], 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[M35]*b.v0.E[5], 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[M45]*b.v0.E[5], m.M[M50]*b.v0.E[0] + m.M[M51]*b.v0.E[1] + m.M[M52]*b.v0.E[2] + m.M[M53]*b.v0.E[3] + m.M[M54]*b.v0.E[4] + m.M[M55]*b.v0.E[5], 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[M05]*b.v1.E[5], 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[M15]*b.v1.E[5], 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[M25]*b.v1.E[5], 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[M35]*b.v1.E[5], 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] + m.M[M45]*b.v1.E[5], m.M[M50]*b.v1.E[0] + m.M[M51]*b.v1.E[1] + m.M[M52]*b.v1.E[2] + m.M[M53]*b.v1.E[3] + m.M[M54]*b.v1.E[4] + m.M[M55]*b.v1.E[5]); } }