BornAgain
1.19.79
Open-source research software to simulate and fit neutron and x-ray reflectometry and grazing-incidence small-angle scattering
ABSum.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_ABSum
11
#define ROOT_Minuit2_ABSum
12
13
#include "
Minuit2/ABObj.h
"
14
15
namespace
ROOT
{
16
17
namespace
Minuit2 {
18
19
20
template
<
class
M1,
class
M2>
21
class
ABSum
{
22
23
private
:
24
25
ABSum
() :
fA
(M1()),
fB
(M2()) {}
26
27
ABSum
&
operator=
(
const
ABSum
&) {
return
*
this
;}
28
29
template
<
class
MI1,
class
MI2>
30
ABSum
&
operator=
(
const
ABSum<MI1,MI2>
&) {
return
*
this
;}
31
32
public
:
33
34
ABSum
(
const
M1& a,
const
M2& b):
fA
(a),
fB
(b) {}
35
36
~ABSum
() {}
37
38
ABSum
(
const
ABSum
& sum) :
fA
(sum.
fA
),
fB
(sum.
fB
) {}
39
40
template
<
class
MI1,
class
MI2>
41
ABSum
(
const
ABSum<MI1,MI2>
& sum) :
fA
(M1(sum.
A
() )),
fB
(M2(sum.
B
() )) {}
42
43
const
M1&
A
()
const
{
return
fA
;}
44
const
M2&
B
()
const
{
return
fB
;}
45
46
private
:
47
48
M1
fA
;
49
M2
fB
;
50
};
51
52
// ABObj + ABObj
53
template
<
class
atype,
class
A,
class
btype,
class
B,
class
T>
54
inline
ABObj<typename AlgebraicSumType<atype, btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,T>
operator+
(
const
ABObj<atype,A,T>
& a,
const
ABObj<btype,B,T>
& b) {
55
56
return
ABObj<typename AlgebraicSumType<atype,btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,T>(
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>(a, b));
57
}
58
59
// ABObj - ABObj
60
template
<
class
atype,
class
A,
class
btype,
class
B,
class
T>
61
inline
ABObj<typename AlgebraicSumType<atype, btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,T>
operator-
(
const
ABObj<atype,A,T>
& a,
const
ABObj<btype,B,T>
& b) {
62
63
return
ABObj<typename AlgebraicSumType<atype,btype>::Type
,
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>,T>(
ABSum<ABObj<atype,A,T>
,
ABObj<btype,B,T>
>(a,
ABObj<btype,B,T>
(b.
Obj
(), T(-1.)*b.
f
())));
64
}
65
66
}
// namespace Minuit2
67
68
}
// namespace ROOT
69
70
#endif
// ROOT_Minuit2_ABSum
ABObj.h
ROOT::Minuit2::ABObj
Definition:
ABObj.h:21
ROOT::Minuit2::ABObj::Obj
const M & Obj() const
Definition:
ABObj.h:54
ROOT::Minuit2::ABObj::f
T f() const
Definition:
ABObj.h:56
ROOT::Minuit2::ABSum
Definition:
ABSum.h:21
ROOT::Minuit2::ABSum::A
const M1 & A() const
Definition:
ABSum.h:43
ROOT::Minuit2::ABSum::operator=
ABSum & operator=(const ABSum &)
Definition:
ABSum.h:27
ROOT::Minuit2::ABSum::fA
M1 fA
Definition:
ABSum.h:48
ROOT::Minuit2::ABSum::ABSum
ABSum(const ABSum< MI1, MI2 > &sum)
Definition:
ABSum.h:41
ROOT::Minuit2::ABSum::operator=
ABSum & operator=(const ABSum< MI1, MI2 > &)
Definition:
ABSum.h:30
ROOT::Minuit2::ABSum::B
const M2 & B() const
Definition:
ABSum.h:44
ROOT::Minuit2::ABSum::ABSum
ABSum()
Definition:
ABSum.h:25
ROOT::Minuit2::ABSum::fB
M2 fB
Definition:
ABSum.h:49
ROOT::Minuit2::ABSum::~ABSum
~ABSum()
Definition:
ABSum.h:36
ROOT::Minuit2::ABSum::ABSum
ABSum(const M1 &a, const M2 &b)
Definition:
ABSum.h:34
ROOT::Minuit2::ABSum::ABSum
ABSum(const ABSum &sum)
Definition:
ABSum.h:38
ROOT::Minuit2::operator-
ABObj< mt, M, T > operator-(const M &obj)
Definition:
ABObj.h:152
ROOT::Minuit2::operator+
ABObj< typename AlgebraicSumType< atype, btype >::Type, ABSum< ABObj< atype, A, T >, ABObj< btype, B, T > >, T > operator+(const ABObj< atype, A, T > &a, const ABObj< btype, B, T > &b)
Definition:
ABSum.h:54
ROOT
Definition:
TUUID.h:7
Fit
3rdparty
RootMinimizers
Minuit2
ABSum.h
Generated by
1.9.1