ROOT
6.16/01
Reference Guide
math
minuit2
inc
Minuit2
LaOuterProduct.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 MA_LaOuterProd_H_
11
#define MA_LaOuterProd_H_
12
13
14
15
#include "
Minuit2/VectorOuterProduct.h
"
16
#include "
Minuit2/ABSum.h
"
17
#include "
Minuit2/LAVector.h
"
18
#include "
Minuit2/LASymMatrix.h
"
19
20
namespace
ROOT
{
21
22
namespace
Minuit2 {
23
24
25
/// LAPACK Algebra function
26
/// specialize the Outer_product function for LAVector;
27
28
inline
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, double>
,
double
>,
double
>
Outer_product
(
const
ABObj<vec, LAVector, double>
& obj) {
29
// std::cout<<"ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, double>, double>, double> Outer_product(const ABObj<vec, LAVector, double>& obj)"<<std::endl;
30
return
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, double>
,
double
>,
double
>(
VectorOuterProduct<ABObj<vec, LAVector, double>
,
double
>(obj));
31
}
32
33
// f*outer
34
template
<
class
T>
35
inline
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>
,
T
>,
T
>
operator*
(
T
f
,
const
ABObj
<
sym
,
VectorOuterProduct
<
ABObj<vec, LAVector, T>
,
T
>,
T
>& obj) {
36
// std::cout<<"ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T> operator*(T f, const ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>& obj)"<<std::endl;
37
return
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>
,
T
>,
T
>(obj.Obj(), obj.f()*
f
);
38
}
39
40
// outer/f
41
template
<
class
T>
42
inline
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>
,
T
>,
T
>
operator/
(
const
ABObj
<
sym
,
VectorOuterProduct
<
ABObj<vec, LAVector, T>
,
T
>,
T
>& obj,
T
f
) {
43
// std::cout<<"ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T> operator/(const ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>& obj, T f)"<<std::endl;
44
return
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>
,
T
>,
T
>(obj.Obj(), obj.f()/
f
);
45
}
46
47
// -outer
48
template
<
class
T>
49
inline
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>
,
T
>,
T
>
operator-
(
const
ABObj
<
sym
,
VectorOuterProduct
<
ABObj<vec, LAVector, T>
,
T
>,
T
>& obj) {
50
// std::cout<<"ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T> operator/(const ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>, T>, T>& obj, T f)"<<std::endl;
51
return
ABObj<sym, VectorOuterProduct<ABObj<vec, LAVector, T>
,
T
>,
T
>(obj.Obj(),
T
(-1.)*obj.f());
52
}
53
54
void
Outer_prod
(LASymMatrix&,
const
LAVector&,
double
f
= 1.);
55
56
}
// namespace Minuit2
57
58
}
// namespace ROOT
59
60
#endif
//MA_LaOuterProd_H_
ABSum.h
LASymMatrix.h
LAVector.h
f
#define f(i)
Definition:
RSha256.hxx:104
VectorOuterProduct.h
ROOT::Minuit2::ABObj< vec, LAVector, double >
Definition:
ABObj.h:65
ROOT::Minuit2::ABObj
Definition:
ABObj.h:21
ROOT::Minuit2::VectorOuterProduct
Definition:
VectorOuterProduct.h:22
ROOT::Minuit2::sym
Definition:
ABTypes.h:19
ROOT::Math::Chebyshev::T
double T(double x)
Definition:
ChebyshevPol.h:34
ROOT::Minuit2::operator*
ABObj< mt, M, T > operator*(T f, const M &obj)
Definition:
ABObj.h:140
ROOT::Minuit2::Outer_product
ABObj< sym, VectorOuterProduct< ABObj< vec, LAVector, double >, double >, double > Outer_product(const ABObj< vec, LAVector, double > &obj)
LAPACK Algebra function specialize the Outer_product function for LAVector;.
Definition:
LaOuterProduct.h:28
ROOT::Minuit2::operator-
ABObj< mt, M, T > operator-(const M &obj)
Definition:
ABObj.h:152
ROOT::Minuit2::Outer_prod
void Outer_prod(LASymMatrix &, const LAVector &, double f=1.)
Definition:
LaOuterProduct.cxx:50
ROOT::Minuit2::operator/
ABObj< mt, M, T > operator/(const M &obj, T f)
Definition:
ABObj.h:146
ROOT
Namespace for new ROOT classes and functions.
Definition:
StringConv.hxx:21