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
37void Dfactir1(int *n, double *a, int *idim, int *ir, int *ifail, double *det, int *jfail);
38void Dfact1(int *n, double *a, int *idim, double *ir, int *ifail, double *det, int *jfail);
39void Dfinv1(int *n, double *a, int *idim, int *ir, int *ifail);
40void Dinv1(int *n, double *a, int *idim, double *ir, int *ifail);
41
42namespace 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
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
TTree * t
Definition: check_shower.C:4
Definition: CMatrix.C:43
std::ostream & operator<<(std::ostream &os, const VtMatrix &t)
Definition: VtMatrix.hh:189