74 #include "CLHEP/Matrix/defs.h"
75 #include "CLHEP/Matrix/GenMatrix.h"
89 class HepSymMatrix :
public HepGenMatrix {
116 const double &
operator()(
int row,
int col)
const;
121 const double &
fast(
int row,
int col)
const;
122 double &
fast(
int row,
int col);
190 double trace()
const;
262 std::vector<double > m;
264 std::vector<double,Alloc<double,25> > m;
269 static double posDefFraction5x5;
270 static double adjustment5x5;
271 static const double CHOLESKY_THRESHOLD_5x5;
272 static const double CHOLESKY_CREEP_5x5;
274 static double posDefFraction6x6;
275 static double adjustment6x6;
276 static const double CHOLESKY_THRESHOLD_6x6;
277 static const double CHOLESKY_CREEP_6x6;
279 void invert4 (
int & ifail);
280 void invert5 (
int & ifail);
281 void invert6 (
int & ifail);
290 std::ostream&
operator<<(std::ostream &s,
const HepSymMatrix &q);
293 HepMatrix
operator*(
const HepMatrix &m1,
const HepSymMatrix &m2);
294 HepMatrix
operator*(
const HepSymMatrix &m1,
const HepMatrix &m2);
295 HepMatrix
operator*(
const HepSymMatrix &m1,
const HepSymMatrix &m2);
296 HepSymMatrix
operator*(
double t,
const HepSymMatrix &s1);
297 HepSymMatrix
operator*(
const HepSymMatrix &s1,
double t);
301 HepSymMatrix
operator/(
const HepSymMatrix &m1,
double t);
304 HepMatrix
operator+(
const HepMatrix &m1,
const HepSymMatrix &s2);
305 HepMatrix
operator+(
const HepSymMatrix &s1,
const HepMatrix &m2);
306 HepSymMatrix
operator+(
const HepSymMatrix &s1,
const HepSymMatrix &s2);
309 HepMatrix
operator-(
const HepMatrix &m1,
const HepSymMatrix &s2);
310 HepMatrix
operator-(
const HepSymMatrix &m1,
const HepMatrix &m2);
311 HepSymMatrix
operator-(
const HepSymMatrix &s1,
const HepSymMatrix &s2);
314 HepSymMatrix
dsum(
const HepSymMatrix &s1,
const HepSymMatrix &s2);
320 void diag_step(HepSymMatrix *t,
int begin,
int end);
321 void diag_step(HepSymMatrix *t, HepMatrix *u,
int begin,
int end);
328 HepVector
house(
const HepSymMatrix &
a,
int row=1,
int col=1);
338 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
340 using namespace CLHEP;
343 #ifndef HEP_DEBUG_INLINE
344 #include "CLHEP/Matrix/SymMatrix.icc"
friend void diag_step(HepSymMatrix *t, int begin, int end)
Hep3Vector operator+(const Hep3Vector &, const Hep3Vector &)
HepSymMatrix & operator-=(const HepSymMatrix &m2)
void invertBunchKaufman(int &ifail)
void house_with_update2(HepSymMatrix *a, HepMatrix *v, int row=1, int col=1)
double condition(const HepSymMatrix &m)
HepSymMatrix_row(HepSymMatrix &, int)
HepLorentzVector operator/(const HepLorentzVector &, double a)
void assign(const HepMatrix &m2)
HepSymMatrix_row operator[](int)
HepSymMatrix apply(double(*f)(double, int, int)) const
void invertHaywood5(int &ifail)
const double & fast(int row, int col) const
friend void tridiagonal(HepSymMatrix *a, HepMatrix *hsm)
double determinant() const
HepVector house(const HepMatrix &a, int row=1, int col=1)
friend class HepSymMatrix_row
HepLorentzRotation operator*(const HepRotation &r, const HepLorentzRotation <)
HepDiagMatrix dsum(const HepDiagMatrix &s1, const HepDiagMatrix &s2)
HepSymMatrix similarity(const HepMatrix &m1) const
void invertCholesky6(int &ifail)
HepSymMatrix & operator+=(const HepSymMatrix &m2)
HepSymMatrix & operator*=(double t)
const double & operator()(int row, int col) const
HepSymMatrix_row_const(const HepSymMatrix &, int)
friend HepSymMatrix operator+(const HepSymMatrix &m1, const HepSymMatrix &m2)
friend class HepSymMatrix_row_const
friend HepVector house(const HepSymMatrix &a, int row, int col)
friend class HepDiagMatrix
void invertHaywood6(int &ifail)
HepSymMatrix & operator/=(double t)
void diag_step(HepSymMatrix *t, int begin, int end)
HepSymMatrix similarityT(const HepMatrix &m1) const
HepSymMatrix inverse(int &ifail) const
friend HepSymMatrix vT_times_v(const HepVector &v)
Hep3Vector operator-(const Hep3Vector &, const Hep3Vector &)
friend HepMatrix operator*(const HepSymMatrix &m1, const HepSymMatrix &m2)
friend void house_with_update2(HepSymMatrix *a, HepMatrix *v, int row, int col)
friend HepMatrix diagonalize(HepSymMatrix *s)
const double & operator[](int) const
HepSymMatrix sub(int min_row, int max_row) const
friend double condition(const HepSymMatrix &m)
HepSymMatrix operator-() const
void invertCholesky5(int &ifail)
HepMatrix diagonalize(HepSymMatrix *s)
std::ostream & operator<<(std::ostream &os, const HepAxisAngle &aa)
void tridiagonal(HepSymMatrix *a, HepMatrix *hsm)
void invertHaywood4(int &ifail)
HepSymMatrix & operator=(const HepSymMatrix &m2)