ATLAS Offline Software
Loading...
Searching...
No Matches
AlSymMat.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TRKALGS_ALSYMMAT_H
6#define TRKALGS_ALSYMMAT_H
7
9
10class StatusCode;
11template<class Element> class TMatrixTSparse;
13
14namespace Trk {
15
16class AlVec;
17class AlMat;
18class AlSpaMat;
19
24
26class AlSymMat : public AlSymMatBase {
28
29 public:
30 AlSymMat(long int);
31 AlSymMat();
32 AlSymMat(const AlSymMat&);
33 AlSymMat(const AlSpaMat&);
35
36 ~AlSymMat();
37
38 // OPERATORS:
39 virtual AlSymMat& operator=(const double&);
40 virtual AlSymMat& operator=(const AlSymMat&);
41 //virtual AlSymMat& operator=(const AlSpaMat&);
42 virtual AlSymMat& operator=(const AlMat&);
43 virtual AlSymMat operator+(const AlSymMat&) const;
44 virtual AlSymMat& operator+=(const AlSymMat&);
45 virtual AlSymMat operator-(const AlSymMat&) const;
46 virtual AlSymMat& operator-=(const AlSymMat&);
47 virtual AlMat operator*(const AlSymMat&) const;
48 virtual AlVec operator*(const AlVec&) const;
49 virtual AlMat operator*(const AlMat&) const;
50 virtual AlSymMat operator*(const double&) const;
51 virtual AlSymMat& operator*=(const double&);
52
53 // ADVANCED:
54 virtual void reSize(long int Nnew) override final;
55 virtual double& elemr(long int, long int) override final;
56 virtual double elemc(long int, long int) const override final;
57
58 virtual int invert() override final;
59 virtual void RemoveModule(int) override final;
60 virtual void RemoveAlignPar(int, int) override final;
61 virtual int RemoveCollsRows(std::vector<int>) override final;
62 virtual void SetPathBin(const std::string&) override final;
63 virtual void SetPathTxt(const std::string&) override final;
64 virtual StatusCode Write(const std::string&, bool, bool, double, float) override final;
65 virtual StatusCode CheckMatVersion(const std::string&, bool&) override final;
66 virtual StatusCode Read(const std::string&, int&, bool&, float&) override final;
67 virtual StatusCode ReadProjected(const std::string&, int&, bool&, float&) override final;
68 virtual int diagonalize(char jobz, AlVec& w, AlMat& z) override final;
69 virtual double determinant() override final;
70
71 inline const double* ptrData() const;
72 inline double* ptrData();
73
74 inline const std::string& pathBin() const;
75 inline const std::string& pathTxt() const;
76
77 virtual TMatrixDSparse* makeTMatrix() override final;
78
79
80 protected:
81 inline long int elem(long int, long int) const;
82
83 void copy(const AlSymMat& m);
84 void copy(const AlSpaMat& m);
85 void copy(const AlMat& m);
86
87 double* m_ptr_data = nullptr;
88
89 std::string m_pathbin;
90 std::string m_pathtxt;
91
92};
93
94// inline operators
95
96inline long int AlSymMat::elem(long int i,long int j) const {
97#ifdef _DEBUG
98 if( i<0 ) { throw std::out_of_range( "AlSymMat::elem: Index 1 < zero! " ); };
99 if( i>=size() ) { throw std::out_of_range( "AlSymMat::elem: Index 1 too large! " ); };
100 if( j<0 ) { throw std::out_of_range( "AlSymMat::elem: Index 2 < zero! " ); };
101 if( j>=size() ) { throw std::out_of_range( "AlSymMat::elem: Index 2 too large! " ); };
102#endif
103 if( j<=i ) {
104 return ((i+1)*i/2+j);
105 }
106 else {
107 return ((j+1)*j/2+i);
108 };
109}
110
111inline const double* AlSymMat::ptrData() const {
112 return m_ptr_data;
113}
114
115inline double* AlSymMat::ptrData() {
116 return m_ptr_data;
117}
118
119inline const std::string& AlSymMat::pathBin() const {
120 return m_pathbin;
121}
122
123inline const std::string& AlSymMat::pathTxt() const {
124 return m_pathtxt;
125}
126
127} // end namespace Trk
128
129#endif // TRKALGS_ALSYMMAT_H
class TMatrixTSparse< double > TMatrixDSparse
Definition AlSpaMat.h:14
contains the implementation of the methods of class AlMat, for handling general NxM matrices
Definition AlMat.h:27
contains the implementation for handling sparse matrices
Definition AlSpaMat.h:27
long int size() const
virtual int RemoveCollsRows(std::vector< int >) override final
Definition AlSymMat.cxx:497
double * m_ptr_data
Definition AlSymMat.h:87
virtual int invert() override final
Definition AlSymMat.cxx:363
void copy(const AlSymMat &m)
Definition AlSymMat.cxx:115
virtual void RemoveModule(int) override final
Definition AlSymMat.cxx:475
AlSymMat & operator=(const AlSpaMat &)
Definition AlSymMat.cxx:94
virtual double determinant() override final
Definition AlSymMat.cxx:392
virtual StatusCode ReadProjected(const std::string &, int &, bool &, float &) override final
Definition AlSymMat.cxx:726
virtual AlSymMat operator-(const AlSymMat &) const
Definition AlSymMat.cxx:225
virtual AlMat operator*(const AlSymMat &) const
Definition AlSymMat.cxx:255
const std::string & pathTxt() const
Definition AlSymMat.h:123
AlSymMat(long int)
Definition AlSymMat.cxx:56
virtual StatusCode Read(const std::string &, int &, bool &, float &) override final
Definition AlSymMat.cxx:676
virtual void SetPathBin(const std::string &) override final
Definition AlSymMat.cxx:581
std::string m_pathbin
Definition AlSymMat.h:89
virtual StatusCode CheckMatVersion(const std::string &, bool &) override final
Definition AlSymMat.cxx:654
virtual double & elemr(long int, long int) override final
Definition AlSymMat.cxx:790
virtual AlSymMat & operator-=(const AlSymMat &)
Definition AlSymMat.cxx:241
virtual void reSize(long int Nnew) override final
Definition AlSymMat.cxx:769
const double * ptrData() const
Definition AlSymMat.h:111
virtual void RemoveAlignPar(int, int) override final
Definition AlSymMat.cxx:539
std::string m_pathtxt
Definition AlSymMat.h:90
virtual StatusCode Write(const std::string &, bool, bool, double, float) override final
Definition AlSymMat.cxx:593
virtual TMatrixDSparse * makeTMatrix() override final
Definition AlSymMat.cxx:836
virtual AlSymMat & operator*=(const double &)
Definition AlSymMat.cxx:343
const std::string & pathBin() const
Definition AlSymMat.h:119
virtual double elemc(long int, long int) const override final
Definition AlSymMat.cxx:813
virtual void SetPathTxt(const std::string &) override final
Definition AlSymMat.cxx:587
virtual int diagonalize(char jobz, AlVec &w, AlMat &z) override final
Definition AlSymMat.cxx:457
virtual AlSymMat operator+(const AlSymMat &) const
Definition AlSymMat.cxx:195
long int elem(long int, long int) const
Definition AlSymMat.h:96
virtual AlSymMat & operator+=(const AlSymMat &)
Definition AlSymMat.cxx:211
Ensure that the ATLAS eigen extensions are properly loaded.
@ z
global position (cartesian)
Definition ParamDefs.h:57