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);
196 double trace()
const;
268 std::vector<double > m;
270 std::vector<double,Alloc<double,25> > m;
275 static double posDefFraction5x5;
276 static double adjustment5x5;
277 static const double CHOLESKY_THRESHOLD_5x5;
278 static const double CHOLESKY_CREEP_5x5;
280 static double posDefFraction6x6;
281 static double adjustment6x6;
282 static const double CHOLESKY_THRESHOLD_6x6;
283 static const double CHOLESKY_CREEP_6x6;
285 void invert4 (
int & ifail);
286 void invert5 (
int & ifail);
287 void invert6 (
int & ifail);
296 std::ostream&
operator<<(std::ostream &s,
const HepSymMatrix &q);
299 HepMatrix
operator*(
const HepMatrix &hm1,
const HepSymMatrix &hm2);
300 HepMatrix
operator*(
const HepSymMatrix &hm1,
const HepMatrix &hm2);
301 HepMatrix
operator*(
const HepSymMatrix &hm1,
const HepSymMatrix &hm2);
302 HepSymMatrix
operator*(
double t,
const HepSymMatrix &s1);
303 HepSymMatrix
operator*(
const HepSymMatrix &s1,
double t);
307 HepSymMatrix
operator/(
const HepSymMatrix &hm1,
double t);
310 HepMatrix
operator+(
const HepMatrix &hm1,
const HepSymMatrix &s2);
311 HepMatrix
operator+(
const HepSymMatrix &s1,
const HepMatrix &hm2);
312 HepSymMatrix
operator+(
const HepSymMatrix &s1,
const HepSymMatrix &s2);
315 HepMatrix
operator-(
const HepMatrix &hm1,
const HepSymMatrix &s2);
316 HepMatrix
operator-(
const HepSymMatrix &hm1,
const HepMatrix &hm2);
317 HepSymMatrix
operator-(
const HepSymMatrix &s1,
const HepSymMatrix &s2);
320 HepSymMatrix
dsum(
const HepSymMatrix &s1,
const HepSymMatrix &s2);
326 void diag_step(HepSymMatrix *t,
int begin,
int end);
327 void diag_step(HepSymMatrix *t, HepMatrix *u,
int begin,
int end);
334 HepVector
house(
const HepSymMatrix &
a,
int row=1,
int col=1);
344 #ifdef ENABLE_BACKWARDS_COMPATIBILITY
346 using namespace CLHEP;
349 #ifndef HEP_DEBUG_INLINE
350 #include "CLHEP/Matrix/SymMatrix.icc"
friend void diag_step(HepSymMatrix *t, int begin, int end)
Hep3Vector operator+(const Hep3Vector &, const Hep3Vector &)
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)
HepSymMatrix_row operator[](int)
HepSymMatrix apply(double(*f)(double, int, int)) const
void invertHaywood5(int &ifail)
HepSymMatrix inverse() const
const double & fast(int row, int col) const
friend HepMatrix operator*(const HepSymMatrix &hm1, const HepSymMatrix &hm2)
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)
friend HepSymMatrix operator+(const HepSymMatrix &hm1, const HepSymMatrix &hm2)
void invertCholesky6(int &ifail)
HepSymMatrix & operator*=(double t)
HepSymMatrix similarityT(const HepMatrix &hm1) const
HepSymMatrix & operator-=(const HepSymMatrix &hm2)
const double & operator()(int row, int col) const
HepSymMatrix_row_const(const HepSymMatrix &, int)
HepSymMatrix similarity(const HepMatrix &hm1) const
friend class HepSymMatrix_row_const
friend HepVector house(const HepSymMatrix &a, int row, int col)
HepSymMatrix & operator+=(const HepSymMatrix &hm2)
friend class HepDiagMatrix
void invertHaywood6(int &ifail)
HepSymMatrix & operator/=(double t)
void diag_step(HepSymMatrix *t, int begin, int end)
friend HepSymMatrix vT_times_v(const HepVector &v)
Hep3Vector operator-(const Hep3Vector &, const Hep3Vector &)
friend void house_with_update2(HepSymMatrix *a, HepMatrix *v, int row, int col)
friend HepMatrix diagonalize(HepSymMatrix *s)
const double & operator[](int) const
void assign(const HepMatrix &hm2)
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 &hm2)