ATLAS Offline Software
Loading...
Searching...
No Matches
AlSpaMat.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_ALSPAMAT_H
6#define TRKALGS_ALSPAMAT_H
7
9
10#include <exception>
11
12class StatusCode;
13template<class Element> class TMatrixTSparse;
14typedef class TMatrixTSparse<double> TMatrixDSparse;
15
16namespace Trk {
17
18class AlVec;
19class AlSymMat;
20class AlSymMatBase;
25
27class AlSpaMat : public AlSymMatBase {
29
30 public:
31 AlSpaMat();
32 AlSpaMat(long int N);
33 AlSpaMat(const AlSpaMat& m);
34 AlSpaMat(const AlSymMat& m);
35 ~AlSpaMat();
36
37 // OPERATORS:
38 AlSpaMat& operator=(const double&) ;
41 AlSpaMat& operator=(const AlMat&);
42 AlSpaMat operator+(const AlSpaMat&) const;
44 AlSpaMat operator-(const AlSpaMat&) const;
46 AlMat operator*(const AlSymMatBase&) const;
47 AlVec operator*(const AlVec&) const;
48 AlMat operator*(const AlMat&) const;
49 AlSpaMat operator*(const double&) const;
50 AlSpaMat& operator*=(const double&);
51
52 // ADVANCED:
53 int SolveWithEigen(AlVec& RHS);
54 virtual void RemoveModule( int) override final;
55 virtual void RemoveAlignPar(int, int) override final;
56 void RemoveDoF( int, int nelem=1);
57 virtual int RemoveCollsRows(std::vector<int>) override final;
58 virtual void reSize(long int) override final;
59 virtual void SetPathBin(const std::string&) override final;
60 virtual void SetPathTxt(const std::string&) override final;
61 virtual StatusCode Write(const std::string&, bool, bool, double, float) override final;
62 virtual StatusCode CheckMatVersion(const std::string&, bool&) override final;
63 virtual StatusCode Read(const std::string&, int&, bool&, float&) override final;
64 virtual StatusCode ReadProjected(const std::string&, int&, bool&, float&) override final;
65 virtual int invert() override final;
66 virtual int diagonalize(char jobz, AlVec& w, AlMat& z) override final;
67 virtual double& elemr(long int, long int) override final;
68 virtual double elemc(long int, long int) const override final;
69 inline long int nele();
70 virtual double determinant() override final;
71
72 inline void elem(const indices&, long int&, long int&) const;
73 inline const std::string& pathBin() const;
74 inline const std::string& pathTxt() const;
75
76 virtual TMatrixDSparse* makeTMatrix() override final;
77 protected:
78
79 static indices elem(long int, long int) ;
80
81 void copy(const AlSpaMat& m);
82 void copy(const AlSymMat& m);
83 void copy(const AlMat& m);
84
85 std::string m_pathbin;
86 std::string m_pathtxt;
87
88 int* m_ptr_row = nullptr;
89 int* m_ptr_col = nullptr;
90};
91
92// inline methods:
93
94inline void AlSpaMat::elem(const indices& key, long int& i, long int& j) const {
95 i = key.first;
96 j = key.second;
97 if(j>i) throw std::out_of_range( "AlSpaMat::elem: i<j ! " );
98 return;
99}
100
101inline long int AlSpaMat::nele() {
102 // first check for intrinsic consistency:
103 if( int(m_ptr_map.size()) != m_nele ) throw std::range_error( "AlSpaMat::m_nele has been corrupted!" );
104 m_nele = m_ptr_map.size();
105 return m_nele;
106}
107
108inline const std::string& AlSpaMat::pathBin() const {
109 return m_pathbin;
110}
111
112inline const std::string& AlSpaMat::pathTxt() const {
113 return m_pathtxt;
114}
115
116
117
118} // end namespace Trk
119
120#endif // TRKALGS_ALSPAMAT_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
AlMat operator*(const AlSymMatBase &) const
Definition AlSpaMat.cxx:331
virtual StatusCode Read(const std::string &, int &, bool &, float &) override final
Definition AlSpaMat.cxx:734
virtual int RemoveCollsRows(std::vector< int >) override final
Definition AlSpaMat.cxx:531
std::string m_pathbin
Definition AlSpaMat.h:85
AlSpaMat & operator*=(const double &)
Definition AlSpaMat.cxx:384
virtual StatusCode ReadProjected(const std::string &, int &, bool &, float &) override final
Definition AlSpaMat.cxx:800
AlSpaMat operator+(const AlSpaMat &) const
Definition AlSpaMat.cxx:273
virtual double determinant() override final
Definition AlSpaMat.cxx:403
AlSpaMat & operator-=(const AlSpaMat &)
Definition AlSpaMat.cxx:317
virtual double elemc(long int, long int) const override final
Definition AlSpaMat.cxx:179
const std::string & pathTxt() const
Definition AlSpaMat.h:112
virtual void RemoveAlignPar(int, int) override final
Definition AlSpaMat.cxx:564
virtual int diagonalize(char jobz, AlVec &w, AlMat &z) override final
Definition AlSpaMat.cxx:481
virtual TMatrixDSparse * makeTMatrix() override final
Definition AlSpaMat.cxx:861
virtual double & elemr(long int, long int) override final
Definition AlSpaMat.cxx:143
void RemoveDoF(int, int nelem=1)
Definition AlSpaMat.cxx:493
int * m_ptr_col
Definition AlSpaMat.h:89
AlSpaMat & operator+=(const AlSpaMat &)
Definition AlSpaMat.cxx:288
virtual void SetPathTxt(const std::string &) override final
Definition AlSpaMat.cxx:653
AlSpaMat & operator=(const double &)
Definition AlSpaMat.cxx:264
void elem(const indices &, long int &, long int &) const
Definition AlSpaMat.h:94
const std::string & pathBin() const
Definition AlSpaMat.h:108
int SolveWithEigen(AlVec &RHS)
Definition AlSpaMat.cxx:408
AlSpaMat operator-(const AlSpaMat &) const
Definition AlSpaMat.cxx:302
virtual StatusCode CheckMatVersion(const std::string &, bool &) override final
Definition AlSpaMat.cxx:712
std::string m_pathtxt
Definition AlSpaMat.h:86
virtual int invert() override final
Definition AlSpaMat.cxx:487
virtual void reSize(long int) override final
Definition AlSpaMat.cxx:627
void copy(const AlSpaMat &m)
Definition AlSpaMat.cxx:92
virtual void RemoveModule(int) override final
Definition AlSpaMat.cxx:617
int * m_ptr_row
Definition AlSpaMat.h:88
virtual void SetPathBin(const std::string &) override final
Definition AlSpaMat.cxx:647
long int nele()
Definition AlSpaMat.h:101
virtual StatusCode Write(const std::string &, bool, bool, double, float) override final
Definition AlSpaMat.cxx:661
contains the implementation for handling symmetric matrices in triangular representation
Definition AlSymMat.h:26
Ensure that the ATLAS eigen extensions are properly loaded.
@ z
global position (cartesian)
Definition ParamDefs.h:57
std::pair< long int, long int > indices