ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
Tracking
TrkAlignment
TrkAlgebraUtils
TrkAlgebraUtils
AlMat.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_ALMAT_H
6
#define TRKALGS_ALMAT_H
7
8
#include <iostream>
9
#include <string>
10
#include <exception>
11
12
class
StatusCode
;
13
14
namespace
Trk
{
15
16
class
AlVec
;
17
class
AlSymMatBase
;
18
class
AlSymMat
;
19
class
AlSpaMat
;
20
25
27
class
AlMat
{
29
public
:
30
AlMat
(
int
N,
int
M);
31
AlMat
();
32
AlMat
(
const
AlMat
& m);
33
34
virtual
~AlMat
();
35
36
class
AlMat_row
{
37
public
:
38
inline
AlMat_row
(
AlMat
&,
int
);
39
double
&
operator[]
(
int
);
40
private
:
41
AlMat
&
m_a
;
42
int
m_r
;
43
};
44
45
class
AlMat_row_const
{
46
public
:
47
inline
AlMat_row_const
(
const
AlMat
&,
int
);
48
const
double
&
operator[]
(
int
)
const
;
49
private
:
50
const
AlMat
&
m_a
;
51
int
m_r
;
52
};
53
// helper class to implement m[i][j]
54
55
inline
AlMat_row
operator[]
(
int
);
56
inline
AlMat_row_const
operator[]
(
int
)
const
;
57
58
inline
long
int
nrow
()
const
;
59
inline
long
int
ncol
()
const
;
60
61
const
std::string
Print
(
const
int
NColsPerSet=10);
62
63
AlMat
&
operator=
(
const
double
&);
64
AlMat
&
operator=
(
const
AlMat
& m);
65
AlMat
&
operator=
(
const
AlSymMat
& m);
66
AlMat
operator+
(
const
AlMat
& m)
const
;
67
AlMat
&
operator+=
(
const
AlMat
& m);
68
AlMat
operator-
(
const
AlMat
& m)
const
;
69
AlMat
&
operator-=
(
const
AlMat
& m);
70
AlMat
operator*
(
const
AlMat
& m)
const
;
71
AlMat
operator*
(
const
AlSymMatBase
& m)
const
;
72
AlVec
operator*
(
const
AlVec
&
v
)
const
;
73
AlMat
&
operator*=
(
const
double
& d);
74
75
// transposition
76
AlMat
T
()
const
;
// creates a transposed copy. To be avoided!
77
AlMat
&
Transpose
();
// sets the m_transpose flag (ultrafast!)
78
AlMat
&
Normal
();
// unsets the m_transpose flag (ultrafast!)
79
80
//invert sym matrix declared as non-symetric for convenience
81
void
invertS
(
int
& ierr,
double
Norm
);
82
83
// reSize method
84
void
reSize
(
int
Nnew,
int
Mnew);
85
86
StatusCode
ReadScalaPack
(
const
std::string&);
87
88
void
SetPathBin
(
const
std::string&);
89
void
SetPathTxt
(
const
std::string&);
90
91
// write method
92
// arguments are filename, flag for binary (true) or text file (false), text printout precision
93
StatusCode
Write
(
const
std::string&,
bool
,
unsigned
int
precision=6);
94
95
double
&
elemr
(
long
int
,
long
int
);
96
double
elemc
(
long
int
,
long
int
)
const
;
97
98
inline
const
double
*
ptrData
()
const
;
99
inline
double
*
ptrData
();
100
101
inline
const
std::string&
pathBin
()
const
;
102
inline
const
std::string&
pathTxt
()
const
;
103
104
private
:
105
void
copy
(
const
AlMat
& m);
106
void
copy
(
const
AlSymMatBase
& m);
107
108
protected
:
109
int
m_ncol
;
110
int
m_nrow
;
111
int
m_nele
;
112
std::string
m_pathbin
;
113
std::string
m_pathtxt
;
114
double
*
m_ptr_data
;
115
bool
m_transpose
;
116
117
virtual
long
int
elem
(
long
int
,
long
int
)
const
;
118
119
};
120
121
// inline operators
122
123
inline
AlMat::AlMat_row
AlMat::operator[]
(
int
r
){
124
AlMat_row
b(*
this
,
r
);
125
return
b;
126
}
127
128
inline
AlMat::AlMat_row_const
AlMat::operator[]
(
int
r
)
const
{
129
const
AlMat_row_const
b(*
this
,
r
);
130
return
b;
131
}
132
133
inline
double
&
AlMat::AlMat_row::operator[]
(
int
c){
134
if
(
m_r<0||m_r>
=
m_a
.nrow() || c<0||c>=
m_a
.ncol())
135
throw
std::out_of_range(
"Range error in AlMat::operator[][]"
);
136
137
return
*(
m_a
.m_ptr_data+
m_r
*
m_a
.ncol()+c);
138
}
139
140
inline
const
double
&
AlMat::AlMat_row_const::operator[]
(
int
c)
const
{
141
if
(
m_r<0||m_r>
=
m_a
.nrow() || c<0||c>=
m_a
.ncol())
142
throw
std::out_of_range(
"Range error in AlMat::operator[][]"
);
143
144
return
*(
m_a
.m_ptr_data+
m_r
*
m_a
.ncol()+c);
145
}
146
147
inline
AlMat::AlMat_row::AlMat_row
(
AlMat
&
a
,
int
r
)
148
:
m_a
(
a
),
m_r
(
r
)
149
{}
150
151
inline
AlMat::AlMat_row_const::AlMat_row_const
152
(
const
AlMat
&
a
,
int
r
)
153
:
m_a
(
a
),
m_r
(
r
)
154
{}
155
156
157
inline
long
int
AlMat::nrow
()
const
{
158
if
(
m_transpose
)
return
m_ncol
;
159
return
m_nrow
;
160
}
161
162
inline
long
int
AlMat::ncol
()
const
{
163
if
(
m_transpose
)
return
m_nrow
;
164
return
m_ncol
;
165
}
166
167
inline
const
double
*
AlMat::ptrData
()
const
{
168
return
m_ptr_data
;
169
}
170
171
inline
double
*
AlMat::ptrData
() {
172
return
m_ptr_data
;
173
}
174
175
inline
const
std::string&
AlMat::pathBin
()
const
{
176
return
m_pathbin
;
177
}
178
179
inline
const
std::string&
AlMat::pathTxt
()
const
{
180
return
m_pathtxt
;
181
}
182
183
}
// end namespace Trk
184
185
#endif
// TRKALGS_ALMAT_H
operator*
ElementConstReference operator*() const
Return a reference to the referenced element.
a
static Double_t a
Definition
LArPhysWaveHECTool.cxx:38
Trk::AlMat::AlMat_row_const
Definition
AlMat.h:45
Trk::AlMat::AlMat_row_const::m_a
const AlMat & m_a
Definition
AlMat.h:50
Trk::AlMat::AlMat_row_const::AlMat_row_const
AlMat_row_const(const AlMat &, int)
Definition
AlMat.h:152
Trk::AlMat::AlMat_row_const::operator[]
const double & operator[](int) const
Definition
AlMat.h:140
Trk::AlMat::AlMat_row_const::m_r
int m_r
Definition
AlMat.h:51
Trk::AlMat::AlMat_row
Definition
AlMat.h:36
Trk::AlMat::AlMat_row::operator[]
double & operator[](int)
Definition
AlMat.h:133
Trk::AlMat::AlMat_row::m_r
int m_r
Definition
AlMat.h:42
Trk::AlMat::AlMat_row::AlMat_row
AlMat_row(AlMat &, int)
Definition
AlMat.h:147
Trk::AlMat::AlMat_row::m_a
AlMat & m_a
Definition
AlMat.h:41
Trk::AlMat::AlMat
AlMat()
Definition
AlMat.cxx:29
Trk::AlMat::pathBin
const std::string & pathBin() const
Definition
AlMat.h:175
Trk::AlMat::operator+
AlMat operator+(const AlMat &m) const
Definition
AlMat.cxx:170
Trk::AlMat::Normal
AlMat & Normal()
Definition
AlMat.cxx:316
Trk::AlMat::operator=
AlMat & operator=(const double &)
Definition
AlMat.cxx:134
Trk::AlMat::ReadScalaPack
StatusCode ReadScalaPack(const std::string &)
Definition
AlMat.cxx:372
Trk::AlMat::ptrData
const double * ptrData() const
Definition
AlMat.h:167
Trk::AlMat::m_ncol
int m_ncol
Definition
AlMat.h:109
Trk::AlMat::operator+=
AlMat & operator+=(const AlMat &m)
Definition
AlMat.cxx:186
Trk::AlMat::Transpose
AlMat & Transpose()
Definition
AlMat.cxx:308
Trk::AlMat::nrow
long int nrow() const
Definition
AlMat.h:157
Trk::AlMat::m_pathbin
std::string m_pathbin
Definition
AlMat.h:112
Trk::AlMat::operator[]
AlMat_row operator[](int)
Definition
AlMat.h:123
Trk::AlMat::m_ptr_data
double * m_ptr_data
Definition
AlMat.h:114
Trk::AlMat::AlMat
AlMat(int N, int M)
Definition
AlMat.cxx:40
Trk::AlMat::elem
virtual long int elem(long int, long int) const
Definition
AlMat.cxx:121
Trk::AlMat::m_pathtxt
std::string m_pathtxt
Definition
AlMat.h:113
Trk::AlMat::elemc
double elemc(long int, long int) const
Definition
AlMat.cxx:109
Trk::AlMat::Write
StatusCode Write(const std::string &, bool, unsigned int precision=6)
Definition
AlMat.cxx:414
Trk::AlMat::pathTxt
const std::string & pathTxt() const
Definition
AlMat.h:179
Trk::AlMat::reSize
void reSize(int Nnew, int Mnew)
Definition
AlMat.cxx:346
Trk::AlMat::copy
void copy(const AlMat &m)
Definition
AlMat.cxx:70
Trk::AlMat::m_transpose
bool m_transpose
Definition
AlMat.h:115
Trk::AlMat::m_nrow
int m_nrow
Definition
AlMat.h:110
Trk::AlMat::SetPathBin
void SetPathBin(const std::string &)
Definition
AlMat.cxx:402
Trk::AlMat::SetPathTxt
void SetPathTxt(const std::string &)
Definition
AlMat.cxx:408
Trk::AlMat::invertS
void invertS(int &ierr, double Norm)
Definition
AlMat.cxx:325
Trk::AlMat::~AlMat
virtual ~AlMat()
Definition
AlMat.cxx:67
Trk::AlMat::T
AlMat T() const
Definition
AlMat.cxx:297
Trk::AlMat::operator*=
AlMat & operator*=(const double &d)
Definition
AlMat.cxx:288
Trk::AlMat::m_nele
int m_nele
Definition
AlMat.h:111
Trk::AlMat::elemr
double & elemr(long int, long int)
Definition
AlMat.cxx:97
Trk::AlMat::operator-
AlMat operator-(const AlMat &m) const
Definition
AlMat.cxx:200
Trk::AlMat::ncol
long int ncol() const
Definition
AlMat.h:162
Trk::AlMat::Print
const std::string Print(const int NColsPerSet=10)
Definition
AlMat.cxx:457
Trk::AlMat::operator-=
AlMat & operator-=(const AlMat &m)
Definition
AlMat.cxx:216
Trk::AlSpaMat
contains the implementation for handling sparse matrices
Definition
AlSpaMat.h:27
Trk::AlSymMatBase
contains the base implementation for handling symmertic matrices
Definition
AlSymMatBase.h:38
Trk::AlSymMat
contains the implementation for handling symmetric matrices in triangular representation
Definition
AlSymMat.h:26
Trk::AlVec
Definition
AlVec.h:26
Norm
void Norm(TH1 *h, double scale)
Definition
computils.cxx:67
r
int r
Definition
globals.cxx:22
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition
PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition
FakeTrackBuilder.h:9
Trk::v
@ v
Definition
ParamDefs.h:78
Generated on
for ATLAS Offline Software by
1.17.0