FEDRA emulsion software from the OPERA Collaboration
VtSqMatrix.hh
Go to the documentation of this file.
1 #ifndef __VTSQMATRIX_HH
2 #define __VTSQMATRIX_HH
3 // *****************************************************************************
4 //
5 // source:
6 //
7 // type: source code
8 //
9 // created: 21. Aug 2000
10 //
11 // author: Thorsten Glebe
12 // HERA-B Collaboration
13 // Max-Planck-Institut fuer Kernphysik
14 // Saupfercheckweg 1
15 // 69117 Heidelberg
16 // Germany
17 // E-mail: T.Glebe@mpi-hd.mpg.de
18 //
19 // Description: class for square matrices
20 //
21 // changes:
22 // 21 Aug 2000 (TG) creation
23 // 04 Sep 2000 (TG) modified return type of dinv()
24 // 17 Okt 2000 (TG) added comment
25 //
26 // *****************************************************************************
27 
28 #include <iosfwd>
29 #include <assert.h>
30 //#include <math.h>
31 #include "VtMatrix.hh"
32 
33 #ifdef WIN32
34 # include "Rtypes.h"
35 #endif
36 
37 void Dfactir1(int *n, double *a, int *idim, int *ir, int *ifail, double *det, int *jfail);
38 void Dfact1(int *n, double *a, int *idim, double *ir, int *ifail, double *det, int *jfail);
39 void Dfinv1(int *n, double *a, int *idim, int *ir, int *ifail);
40 void Dinv1(int *n, double *a, int *idim, double *ir, int *ifail);
41 
42 namespace MATRIX {
43  class VtVector;
44 
47  //============================================================================
48  // Class VtSqMatrix: quadratic Matrix class
49  //============================================================================
50  class VtSqMatrix : public VtMatrix {
51  public:
54  VtSqMatrix(const int row) : VtMatrix(row,row) {}
56  VtSqMatrix(const VtSqMatrix& rhs) : VtMatrix(rhs) {}
58  VtSqMatrix(const VtMatrix& rhs) : VtMatrix(rhs) {
59 #ifndef VtFAST
60  assert(rhs.ncol()==rhs.nrow());
61 #endif
62  }
64  virtual ~VtSqMatrix();
65 
68  bool VtDinv(int dim = 0);
70  const VtSqMatrix dinv(int dim = 0) const;
72  virtual double det() const;
73 
74  // to avoid conversion VtMatrix->VtSqMatrix in argument
75  virtual const VtMatrix operator*(const VtMatrix& rhs);
77  const VtVector operator*(const VtVector& rhs) const;
78 
79 #ifdef WIN32
80  ClassDef(VtSqMatrix,0)
81 #endif
82  }; // class VtSqMatrix
83 
84  //============================================================================
85  // operator<<
86  //============================================================================
87  inline std::ostream& operator<< ( std::ostream& os, const VtSqMatrix& t ) {
88  t.print(os);
89  return os;
90  }
91 
92 } // end of namespace MATRIX
93 #endif
void Dfinv1(int *n, double *a, int *idim, int *ir, int *ifail)
Definition: VtSqMatrix.C:131
void Dinv1(int *n, double *a, int *idim, double *ir, int *ifail)
Definition: VtSqMatrix.C:321
void Dfact1(int *n, double *a, int *idim, double *ir, int *ifail, double *det, int *jfail)
Definition: VtSqMatrix.C:224
void Dfactir1(int *n, double *a, int *idim, int *ir, int *ifail, double *det, int *jfail)
Definition: VtSqMatrix.C:31
void a()
Definition: check_aligned.C:59
TTree * t
Definition: check_shower.C:4
Definition: VtMatrix.hh:49
unsigned int ncol() const
no of columns $m$
Definition: VtMatrix.hh:63
unsigned int nrow() const
no of rows $n$
Definition: VtMatrix.hh:61
Definition: VtSqMatrix.hh:50
const VtSqMatrix dinv(int dim=0) const
return inverse
Definition: VtSqMatrix.C:477
bool VtDinv(int dim=0)
transform to inverse
Definition: VtSqMatrix.C:486
virtual ~VtSqMatrix()
Definition: VtSqMatrix.C:446
VtSqMatrix(const int row)
Definition: VtSqMatrix.hh:54
virtual double det() const
return determinant
Definition: VtSqMatrix.C:451
virtual const VtMatrix operator*(const VtMatrix &rhs)
Definition: VtSqMatrix.C:521
VtSqMatrix(const VtSqMatrix &rhs)
Definition: VtSqMatrix.hh:56
VtSqMatrix(const VtMatrix &rhs)
Definition: VtSqMatrix.hh:58
Definition: VtVector.hh:45
Definition: CMatrix.C:43
std::ostream & operator<<(std::ostream &os, const VtMatrix &t)
Definition: VtMatrix.hh:189