Belle II Software
release-06-02-00
Main Page
Modules
Namespaces
Namespace List
Namespace Members
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
z
Functions
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
x
z
Variables
a
b
c
d
e
f
g
h
i
l
m
n
o
p
q
r
s
t
v
w
z
Typedefs
a
b
c
d
e
i
k
l
m
n
p
r
s
t
u
v
w
Enumerations
Enumerator
c
d
f
p
t
u
v
w
Classes
Class List
Class Hierarchy
Class Members
All
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
_
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
Enumerations
a
b
c
d
e
f
g
h
i
l
m
o
p
r
s
t
u
v
Enumerator
a
b
c
d
e
f
g
h
k
l
m
n
o
p
r
s
t
u
v
w
z
Related Functions
b
c
d
g
i
o
r
s
t
Files
File List
File Members
All
Functions
RKTools.h
1
/* Copyright 2008-2009, Technische Universitaet Muenchen,
2
Authors: Christian Hoeppner & Sebastian Neubert & Johannes Rauch
3
4
This file is part of GENFIT.
5
6
GENFIT is free software: you can redistribute it and/or modify
7
it under the terms of the GNU Lesser General Public License as published
8
by the Free Software Foundation, either version 3 of the License, or
9
(at your option) any later version.
10
11
GENFIT is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU Lesser General Public License for more details.
15
16
You should have received a copy of the GNU Lesser General Public License
17
along with GENFIT. If not, see <http://www.gnu.org/licenses/>.
18
*/
19
24
#ifndef genfit_RKTools_h
25
#define genfit_RKTools_h
26
27
#include <stddef.h>
28
#include <algorithm>
29
30
namespace
genfit
{
31
32
template
<
size_t
nRows,
size_t
nCols>
33
struct
RKMatrix
{
34
double
vals[nRows * nCols];
35
36
RKMatrix
() =
default
;
37
RKMatrix
(
const
RKMatrix
&) =
default
;
38
39
double
& operator()(
size_t
iRow,
size_t
iCol) {
40
return
vals[nCols*iRow + iCol];
41
}
42
double
& operator[](
size_t
n) {
43
return
vals[n];
44
}
45
const
double
& operator[](
size_t
n)
const
{
46
return
vals[n];
47
}
48
double
* begin() {
return
vals; }
49
double
* end() {
return
vals + nRows * nCols; }
50
const
double
* begin()
const
{
return
vals; }
51
const
double
* end()
const
{
return
vals + nRows * nCols; }
52
RKMatrix<nRows, nCols>
& operator=(
const
RKMatrix<nRows, nCols>
& o) {
53
std::copy(o.begin(), o.end(), this->begin());
54
return
*
this
;
55
}
56
57
void
print();
58
};
59
60
typedef
RKMatrix<1, 3>
M1x3
;
61
typedef
RKMatrix<1, 4>
M1x4
;
62
typedef
RKMatrix<1, 7>
M1x7
;
63
typedef
RKMatrix<5, 5>
M5x5
;
64
typedef
RKMatrix<6, 6>
M6x6
;
65
typedef
RKMatrix<7, 7>
M7x7
;
66
typedef
RKMatrix<6, 5>
M6x5
;
67
typedef
RKMatrix<7, 5>
M7x5
;
68
typedef
RKMatrix<5, 6>
M5x6
;
69
typedef
RKMatrix<5, 7>
M5x7
;
70
74
namespace
RKTools {
75
76
void
J_pMTxcov5xJ_pM(
const
M5x7
& J_pM,
const
M5x5
& cov5,
M7x7
& out7);
77
void
J_pMTxcov5xJ_pM(
const
M5x6
& J_pM,
const
M5x5
& cov5,
M6x6
& out6);
78
79
void
J_MpTxcov7xJ_Mp(
const
M7x5
& J_Mp,
const
M7x7
& cov7,
M5x5
& out5);
80
void
J_MpTxcov6xJ_Mp(
const
M6x5
& J_Mp,
const
M6x6
& cov6,
M5x5
& out5);
81
82
void
J_pMTTxJ_MMTTxJ_MpTT(
const
M7x5
& J_pMT,
const
M7x7
& J_MMT,
const
M5x7
& J_MpT,
M5x5
& J_pp);
83
84
void
Np_N_NpT(
const
M7x7
& Np,
M7x7
& N);
85
86
void
printDim(
const
double
* mat,
unsigned
int
dimX,
unsigned
int
dimY);
87
88
}
89
90
template
<
size_t
nRows,
size_t
nCols>
91
inline
void
92
RKMatrix<nRows, nCols>::print
() {
93
RKTools::printDim(this->vals, nRows, nCols);
94
}
95
96
}
/* End of namespace genfit */
99
#endif
// genfit_RKTools_h
100
genfit
Defines for I/O streams used for error and debug printing.
Definition:
AlignablePXDRecoHit.h:17
genfit::RKMatrix
Definition:
RKTools.h:33
genfit2
code2
trackReps
include
RKTools.h
Generated on Thu Dec 28 2023 02:27:10 for Belle II Software by
1.9.1