ROOT
6.13/01
Reference Guide
math
minuit2
inc
Minuit2
LaInverse.h
Go to the documentation of this file.
1
// @(#)root/minuit2:$Id$
2
// Authors: M. Winkler, F. James, L. Moneta, A. Zsenei 2003-2005
3
4
/**********************************************************************
5
* *
6
* Copyright (c) 2005 LCG ROOT Math team, CERN/PH-SFT *
7
* *
8
**********************************************************************/
9
10
#ifndef ROOT_Minuit2_LaInverse
11
#define ROOT_Minuit2_LaInverse
12
13
14
15
16
#include "
Minuit2/MatrixInverse.h
"
17
#include "
Minuit2/LASymMatrix.h
"
18
19
namespace
ROOT
{
20
21
namespace
Minuit2 {
22
23
24
/// LAPACK Algebra functions
25
/// specialize the Invert function for LASymMatrix
26
27
inline
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>
Inverse
(
const
ABObj<sym, LASymMatrix, double>
& obj) {
28
return
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>(
MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>(obj));
29
}
30
31
template
<
class
T>
32
inline
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>
operator*
(
T
f,
const
ABObj
<
sym
,
MatrixInverse
<
sym
,
ABObj<sym, LASymMatrix, double>
,
double
>,
double
>& inv) {
33
return
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>(inv.Obj(), f*inv.f());
34
}
35
36
template
<
class
T>
37
inline
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>
operator/
(
const
ABObj
<
sym
,
MatrixInverse
<
sym
,
ABObj<sym, LASymMatrix, double>
,
double
>,
double
>& inv,
T
f) {
38
return
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>(inv.Obj(), inv.f()/f);
39
}
40
41
template
<
class
T>
42
inline
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>
operator-
(
const
ABObj
<
sym
,
MatrixInverse
<
sym
,
ABObj<sym, LASymMatrix, double>
,
double
>,
double
>& inv) {
43
return
ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>
,
double
>,
double
>(inv.Obj(),
T
(-1.)*inv.f());
44
}
45
46
int
Invert
(
LASymMatrix
&);
47
48
int
Invert_undef_sym
(
LASymMatrix
&);
49
50
/*
51
template<class M>
52
inline ABObj<sym, MatrixInverse<sym, ABObj<sym, M, double>, double>, double> Inverse(const ABObj<sym, M, double>& obj) {
53
return ABObj<sym, MatrixInverse<sym, ABObj<sym, M, double>, double>, double>(MatrixInverse<sym, ABObj<sym, M, double>, double>(obj));
54
}
55
56
inline ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double> Inverse(const ABObj<sym, LASymMatrix, double>& obj) {
57
return ABObj<sym, MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>, double>(MatrixInverse<sym, ABObj<sym, LASymMatrix, double>, double>(obj));
58
}
59
*/
60
61
}
// namespace Minuit2
62
63
}
// namespace ROOT
64
65
#endif // ROOT_Minuit2_LaInverse
ROOT::Minuit2::Invert
int Invert(LASymMatrix &)
Definition:
LaInverse.cxx:22
ROOT
Namespace for new ROOT classes and functions.
Definition:
TFoamSampler.h:19
ROOT::Minuit2::ABObj
Definition:
ABObj.h:21
ROOT::Minuit2::MatrixInverse
Definition:
MatrixInverse.h:22
ROOT::Math::Chebyshev::T
double T(double x)
Definition:
ChebyshevPol.h:34
ROOT::Minuit2::LASymMatrix
Class describing a symmetric matrix of size n.
Definition:
LASymMatrix.h:51
ROOT::Minuit2::operator*
ABObj< mt, M, T > operator*(T f, const M &obj)
Definition:
ABObj.h:140
ROOT::Minuit2::operator-
ABObj< mt, M, T > operator-(const M &obj)
Definition:
ABObj.h:152
ROOT::Minuit2::sym
Definition:
ABTypes.h:19
ROOT::Minuit2::Inverse
ABObj< sym, MatrixInverse< sym, ABObj< sym, LASymMatrix, double >, double >, double > Inverse(const ABObj< sym, LASymMatrix, double > &obj)
LAPACK Algebra functions specialize the Invert function for LASymMatrix.
Definition:
LaInverse.h:27
ROOT::Minuit2::Invert_undef_sym
int Invert_undef_sym(LASymMatrix &)
ROOT::Minuit2::ABObj< sym, LASymMatrix, double >
Definition:
ABObj.h:103
LASymMatrix.h
ROOT::Minuit2::operator/
ABObj< mt, M, T > operator/(const M &obj, T f)
Definition:
ABObj.h:146
MatrixInverse.h